// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: components/download/database/proto/download_entry.proto
// Protobuf C++ Version: 7.35.1

#ifndef components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto_2epb_2eh
#define components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

// clang-format off
#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 7035001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "components/download/database/proto/download_source.pb.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto

namespace google {
namespace protobuf {
namespace internal {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto {
  static const ::uint32_t offsets[];
};
namespace download_pb {
class DownloadDBEntry;
struct DownloadDBEntryGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern DownloadDBEntryGlobalsTypeInternal DownloadDBEntry_globals_;
extern const ::google::protobuf::internal::ClassDataLite DownloadDBEntry_class_data_;
#else
extern const DownloadDBEntryGlobalsTypeInternal DownloadDBEntry_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class DownloadEntries;
struct DownloadEntriesGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern DownloadEntriesGlobalsTypeInternal DownloadEntries_globals_;
extern const ::google::protobuf::internal::ClassDataLite DownloadEntries_class_data_;
#else
extern const DownloadEntriesGlobalsTypeInternal DownloadEntries_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class DownloadEntry;
struct DownloadEntryGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern DownloadEntryGlobalsTypeInternal DownloadEntry_globals_;
extern const ::google::protobuf::internal::ClassDataLite DownloadEntry_class_data_;
#else
extern const DownloadEntryGlobalsTypeInternal DownloadEntry_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class DownloadInfo;
struct DownloadInfoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern DownloadInfoGlobalsTypeInternal DownloadInfo_globals_;
extern const ::google::protobuf::internal::ClassDataLite DownloadInfo_class_data_;
#else
extern const DownloadInfoGlobalsTypeInternal DownloadInfo_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class DownloadSchedule;
struct DownloadScheduleGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern DownloadScheduleGlobalsTypeInternal DownloadSchedule_globals_;
extern const ::google::protobuf::internal::ClassDataLite DownloadSchedule_class_data_;
#else
extern const DownloadScheduleGlobalsTypeInternal DownloadSchedule_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class HttpRequestHeader;
struct HttpRequestHeaderGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern HttpRequestHeaderGlobalsTypeInternal HttpRequestHeader_globals_;
extern const ::google::protobuf::internal::ClassDataLite HttpRequestHeader_class_data_;
#else
extern const HttpRequestHeaderGlobalsTypeInternal HttpRequestHeader_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class InProgressInfo;
struct InProgressInfoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern InProgressInfoGlobalsTypeInternal InProgressInfo_globals_;
extern const ::google::protobuf::internal::ClassDataLite InProgressInfo_class_data_;
#else
extern const InProgressInfoGlobalsTypeInternal InProgressInfo_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ReceivedSlice;
struct ReceivedSliceGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ReceivedSliceGlobalsTypeInternal ReceivedSlice_globals_;
extern const ::google::protobuf::internal::ClassDataLite ReceivedSlice_class_data_;
#else
extern const ReceivedSliceGlobalsTypeInternal ReceivedSlice_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class UkmInfo;
struct UkmInfoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern UkmInfoGlobalsTypeInternal UkmInfo_globals_;
extern const ::google::protobuf::internal::ClassDataLite UkmInfo_class_data_;
#else
extern const UkmInfoGlobalsTypeInternal UkmInfo_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
}  // namespace download_pb
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace download_pb {

// ===================================================================


// -------------------------------------------------------------------

class  UkmInfo final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:download_pb.UkmInfo) */ {
 public:
  inline UkmInfo() : UkmInfo(nullptr) {}
  ~UkmInfo() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(UkmInfo* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(UkmInfo));
  }
#endif

  template <typename = void>
  explicit constexpr UkmInfo(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline UkmInfo(const UkmInfo& from) : UkmInfo(nullptr, from) {}
  inline UkmInfo(UkmInfo&& from) noexcept : UkmInfo(nullptr, ::std::move(from)) {}
  inline UkmInfo& operator=(const UkmInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline UkmInfo& operator=(UkmInfo&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const UkmInfo& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<UkmInfo>(&UkmInfo_globals_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(UkmInfo& a, UkmInfo& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(UkmInfo* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(UkmInfo* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  UkmInfo* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<UkmInfo>(arena);
  }
  void CopyFrom(const UkmInfo& from);
  void MergeFrom(const UkmInfo& from) { UkmInfo::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(UkmInfo* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "download_pb.UkmInfo"; }

  explicit UkmInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  UkmInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const UkmInfo& from);
  UkmInfo(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, UkmInfo&& from) noexcept
      : UkmInfo(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kUkmDownloadIdFieldNumber = 2,
    kDownloadSourceFieldNumber = 1,
  };
  // optional int64 ukm_download_id = 2;
  bool has_ukm_download_id()
      const;
  void clear_ukm_download_id() ;
  ::int64_t ukm_download_id() const;
  void set_ukm_download_id(::int64_t value);

  private:
  ::int64_t _internal_ukm_download_id() const;
  void _internal_set_ukm_download_id(::int64_t value);

  public:
  // optional .download_pb.DownloadSource download_source = 1;
  bool has_download_source()
      const;
  void clear_download_source() ;
  ::download_pb::DownloadSource download_source() const;
  void set_download_source(::download_pb::DownloadSource value);

  private:
  ::download_pb::DownloadSource _internal_download_source() const;
  void _internal_set_download_source(::download_pb::DownloadSource value);

  public:
  // @@protoc_insertion_point(class_scope:download_pb.UkmInfo)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const UkmInfo& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t ukm_download_id_;
    int download_source_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto;
};
// -------------------------------------------------------------------

class  ReceivedSlice final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:download_pb.ReceivedSlice) */ {
 public:
  inline ReceivedSlice() : ReceivedSlice(nullptr) {}
  ~ReceivedSlice() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ReceivedSlice* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ReceivedSlice));
  }
#endif

  template <typename = void>
  explicit constexpr ReceivedSlice(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline ReceivedSlice(const ReceivedSlice& from) : ReceivedSlice(nullptr, from) {}
  inline ReceivedSlice(ReceivedSlice&& from) noexcept : ReceivedSlice(nullptr, ::std::move(from)) {}
  inline ReceivedSlice& operator=(const ReceivedSlice& from) {
    CopyFrom(from);
    return *this;
  }
  inline ReceivedSlice& operator=(ReceivedSlice&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const ReceivedSlice& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ReceivedSlice>(&ReceivedSlice_globals_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(ReceivedSlice& a, ReceivedSlice& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ReceivedSlice* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ReceivedSlice* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ReceivedSlice* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ReceivedSlice>(arena);
  }
  void CopyFrom(const ReceivedSlice& from);
  void MergeFrom(const ReceivedSlice& from) { ReceivedSlice::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ReceivedSlice* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "download_pb.ReceivedSlice"; }

  explicit ReceivedSlice(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ReceivedSlice(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ReceivedSlice& from);
  ReceivedSlice(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ReceivedSlice&& from) noexcept
      : ReceivedSlice(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kOffsetFieldNumber = 1,
    kReceivedBytesFieldNumber = 2,
    kFinishedFieldNumber = 3,
  };
  // optional int64 offset = 1;
  bool has_offset()
      const;
  void clear_offset() ;
  ::int64_t offset() const;
  void set_offset(::int64_t value);

  private:
  ::int64_t _internal_offset() const;
  void _internal_set_offset(::int64_t value);

  public:
  // optional int64 received_bytes = 2;
  bool has_received_bytes()
      const;
  void clear_received_bytes() ;
  ::int64_t received_bytes() const;
  void set_received_bytes(::int64_t value);

  private:
  ::int64_t _internal_received_bytes() const;
  void _internal_set_received_bytes(::int64_t value);

  public:
  // optional bool finished = 3;
  bool has_finished()
      const;
  void clear_finished() ;
  bool finished() const;
  void set_finished(bool value);

  private:
  bool _internal_finished() const;
  void _internal_set_finished(bool value);

  public:
  // @@protoc_insertion_point(class_scope:download_pb.ReceivedSlice)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ReceivedSlice& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t offset_;
    ::int64_t received_bytes_;
    bool finished_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto;
};
// -------------------------------------------------------------------

class  HttpRequestHeader final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:download_pb.HttpRequestHeader) */ {
 public:
  inline HttpRequestHeader() : HttpRequestHeader(nullptr) {}
  ~HttpRequestHeader() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(HttpRequestHeader* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(HttpRequestHeader));
  }
#endif

  template <typename = void>
  explicit constexpr HttpRequestHeader(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline HttpRequestHeader(const HttpRequestHeader& from) : HttpRequestHeader(nullptr, from) {}
  inline HttpRequestHeader(HttpRequestHeader&& from) noexcept : HttpRequestHeader(nullptr, ::std::move(from)) {}
  inline HttpRequestHeader& operator=(const HttpRequestHeader& from) {
    CopyFrom(from);
    return *this;
  }
  inline HttpRequestHeader& operator=(HttpRequestHeader&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const HttpRequestHeader& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<HttpRequestHeader>(&HttpRequestHeader_globals_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(HttpRequestHeader& a, HttpRequestHeader& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(HttpRequestHeader* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(HttpRequestHeader* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  HttpRequestHeader* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<HttpRequestHeader>(arena);
  }
  void CopyFrom(const HttpRequestHeader& from);
  void MergeFrom(const HttpRequestHeader& from) { HttpRequestHeader::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(HttpRequestHeader* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "download_pb.HttpRequestHeader"; }

  explicit HttpRequestHeader(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  HttpRequestHeader(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const HttpRequestHeader& from);
  HttpRequestHeader(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, HttpRequestHeader&& from) noexcept
      : HttpRequestHeader(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kKeyFieldNumber = 1,
    kValueFieldNumber = 2,
  };
  // optional string key = 1;
  bool has_key()
      const;
  void clear_key() ;
  const ::std::string& key() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_key(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_key();
  ::std::string* PROTOBUF_NULLABLE release_key();
  void set_allocated_key(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_key() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_key(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_key();

  public:
  // optional string value = 2;
  bool has_value()
      const;
  void clear_value() ;
  const ::std::string& value() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_value(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_value();
  ::std::string* PROTOBUF_NULLABLE release_value();
  void set_allocated_value(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_value() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_value(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // @@protoc_insertion_point(class_scope:download_pb.HttpRequestHeader)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const HttpRequestHeader& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr key_;
    ::google::protobuf::internal::ArenaStringPtr value_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto;
};
// -------------------------------------------------------------------

class  DownloadSchedule final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:download_pb.DownloadSchedule) */ {
 public:
  inline DownloadSchedule() : DownloadSchedule(nullptr) {}
  ~DownloadSchedule() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(DownloadSchedule* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(DownloadSchedule));
  }
#endif

  template <typename = void>
  explicit constexpr DownloadSchedule(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline DownloadSchedule(const DownloadSchedule& from) : DownloadSchedule(nullptr, from) {}
  inline DownloadSchedule(DownloadSchedule&& from) noexcept : DownloadSchedule(nullptr, ::std::move(from)) {}
  inline DownloadSchedule& operator=(const DownloadSchedule& from) {
    CopyFrom(from);
    return *this;
  }
  inline DownloadSchedule& operator=(DownloadSchedule&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const DownloadSchedule& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<DownloadSchedule>(&DownloadSchedule_globals_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(DownloadSchedule& a, DownloadSchedule& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(DownloadSchedule* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DownloadSchedule* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  DownloadSchedule* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<DownloadSchedule>(arena);
  }
  void CopyFrom(const DownloadSchedule& from);
  void MergeFrom(const DownloadSchedule& from) { DownloadSchedule::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(DownloadSchedule* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "download_pb.DownloadSchedule"; }

  explicit DownloadSchedule(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DownloadSchedule(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DownloadSchedule& from);
  DownloadSchedule(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DownloadSchedule&& from) noexcept
      : DownloadSchedule(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kStartTimeFieldNumber = 1,
  };
  // optional int64 start_time = 1;
  bool has_start_time()
      const;
  void clear_start_time() ;
  ::int64_t start_time() const;
  void set_start_time(::int64_t value);

  private:
  ::int64_t _internal_start_time() const;
  void _internal_set_start_time(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:download_pb.DownloadSchedule)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const DownloadSchedule& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t start_time_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto;
};
// -------------------------------------------------------------------

class  InProgressInfo final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:download_pb.InProgressInfo) */ {
 public:
  inline InProgressInfo() : InProgressInfo(nullptr) {}
  ~InProgressInfo() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(InProgressInfo* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(InProgressInfo));
  }
#endif

  template <typename = void>
  explicit constexpr InProgressInfo(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline InProgressInfo(const InProgressInfo& from) : InProgressInfo(nullptr, from) {}
  inline InProgressInfo(InProgressInfo&& from) noexcept : InProgressInfo(nullptr, ::std::move(from)) {}
  inline InProgressInfo& operator=(const InProgressInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline InProgressInfo& operator=(InProgressInfo&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const InProgressInfo& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<InProgressInfo>(&InProgressInfo_globals_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(InProgressInfo& a, InProgressInfo& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(InProgressInfo* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(InProgressInfo* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  InProgressInfo* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<InProgressInfo>(arena);
  }
  void CopyFrom(const InProgressInfo& from);
  void MergeFrom(const InProgressInfo& from) { InProgressInfo::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(InProgressInfo* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "download_pb.InProgressInfo"; }

  explicit InProgressInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  InProgressInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const InProgressInfo& from);
  InProgressInfo(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, InProgressInfo&& from) noexcept
      : InProgressInfo(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kUrlChainFieldNumber = 1,
    kRequestHeadersFieldNumber = 7,
    kReceivedSlicesFieldNumber = 18,
    kReferrerUrlFieldNumber = 2,
    kSiteUrlFieldNumber = 3,
    kTabUrlFieldNumber = 4,
    kTabReferrerUrlFieldNumber = 5,
    kEtagFieldNumber = 8,
    kLastModifiedFieldNumber = 9,
    kMimeTypeFieldNumber = 11,
    kOriginalMimeTypeFieldNumber = 12,
    kCurrentPathFieldNumber = 13,
    kTargetPathFieldNumber = 14,
    kHashFieldNumber = 19,
    kDownloadScheduleFieldNumber = 28,
    kTotalBytesFieldNumber = 10,
    kReceivedBytesFieldNumber = 15,
    kStartTimeFieldNumber = 16,
    kEndTimeFieldNumber = 17,
    kFetchErrorBodyFieldNumber = 6,
    kTransientFieldNumber = 20,
    kPausedFieldNumber = 24,
    kMeteredFieldNumber = 25,
    kStateFieldNumber = 21,
    kDangerTypeFieldNumber = 22,
    kInterruptReasonFieldNumber = 23,
    kBytesWastedFieldNumber = 26,
    kAutoResumeCountFieldNumber = 27,
    kCredentialsModeFieldNumber = 30,
    kRangeRequestFromFieldNumber = 31,
    kSerializedEmbedderDownloadDataFieldNumber = 33,
    kRangeRequestToFieldNumber = 32,
    kFetchedViaServiceWorkerFieldNumber = 35,
  };
  // repeated string url_chain = 1;
  int url_chain_size()
      const;
  private:
  int _internal_url_chain_size() const;

  public:
  void clear_url_chain() ;
  const ::std::string& url_chain(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_url_chain(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_url_chain(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_url_chain();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_url_chain(Arg_&& value, Args_... args);
  const
      ::google::protobuf::RepeatedPtrField<::std::string>&
      url_chain() const;
  ::google::protobuf::RepeatedPtrField<::std::string>*
      PROTOBUF_NONNULL
      mutable_url_chain();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_url_chain() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_url_chain();

  public:
  // repeated .download_pb.HttpRequestHeader request_headers = 7;
  int request_headers_size()
      const;
  private:
  int _internal_request_headers_size() const;

  public:
  void clear_request_headers() ;
  const ::download_pb::HttpRequestHeader& request_headers(int index) const;
  ::download_pb::HttpRequestHeader* PROTOBUF_NONNULL mutable_request_headers(int index);
  ::download_pb::HttpRequestHeader* PROTOBUF_NONNULL add_request_headers();
  const ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>&
  request_headers() const;
  ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>* PROTOBUF_NONNULL
  mutable_request_headers();

  private:
  const ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>& _internal_request_headers() const;
  ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>* PROTOBUF_NONNULL _internal_mutable_request_headers();

  public:
  // repeated .download_pb.ReceivedSlice received_slices = 18;
  int received_slices_size()
      const;
  private:
  int _internal_received_slices_size() const;

  public:
  void clear_received_slices() ;
  const ::download_pb::ReceivedSlice& received_slices(int index) const;
  ::download_pb::ReceivedSlice* PROTOBUF_NONNULL mutable_received_slices(int index);
  ::download_pb::ReceivedSlice* PROTOBUF_NONNULL add_received_slices();
  const ::google::protobuf::RepeatedPtrField<::download_pb::ReceivedSlice>&
  received_slices() const;
  ::google::protobuf::RepeatedPtrField<::download_pb::ReceivedSlice>* PROTOBUF_NONNULL
  mutable_received_slices();

  private:
  const ::google::protobuf::RepeatedPtrField<::download_pb::ReceivedSlice>& _internal_received_slices() const;
  ::google::protobuf::RepeatedPtrField<::download_pb::ReceivedSlice>* PROTOBUF_NONNULL _internal_mutable_received_slices();

  public:
  // optional string referrer_url = 2;
  bool has_referrer_url()
      const;
  void clear_referrer_url() ;
  const ::std::string& referrer_url() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_referrer_url(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_referrer_url();
  ::std::string* PROTOBUF_NULLABLE release_referrer_url();
  void set_allocated_referrer_url(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_referrer_url() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_referrer_url(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_referrer_url();

  public:
  // optional string site_url = 3;
  bool has_site_url()
      const;
  void clear_site_url() ;
  const ::std::string& site_url() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_site_url(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_site_url();
  ::std::string* PROTOBUF_NULLABLE release_site_url();
  void set_allocated_site_url(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_site_url() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_site_url(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_site_url();

  public:
  // optional string tab_url = 4;
  bool has_tab_url()
      const;
  void clear_tab_url() ;
  const ::std::string& tab_url() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_tab_url(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_tab_url();
  ::std::string* PROTOBUF_NULLABLE release_tab_url();
  void set_allocated_tab_url(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_tab_url() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_tab_url(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_tab_url();

  public:
  // optional string tab_referrer_url = 5;
  bool has_tab_referrer_url()
      const;
  void clear_tab_referrer_url() ;
  const ::std::string& tab_referrer_url() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_tab_referrer_url(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_tab_referrer_url();
  ::std::string* PROTOBUF_NULLABLE release_tab_referrer_url();
  void set_allocated_tab_referrer_url(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_tab_referrer_url() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_tab_referrer_url(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_tab_referrer_url();

  public:
  // optional string etag = 8;
  bool has_etag()
      const;
  void clear_etag() ;
  const ::std::string& etag() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_etag(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_etag();
  ::std::string* PROTOBUF_NULLABLE release_etag();
  void set_allocated_etag(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_etag() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_etag(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_etag();

  public:
  // optional string last_modified = 9;
  bool has_last_modified()
      const;
  void clear_last_modified() ;
  const ::std::string& last_modified() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_last_modified(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_last_modified();
  ::std::string* PROTOBUF_NULLABLE release_last_modified();
  void set_allocated_last_modified(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_last_modified() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_last_modified(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_last_modified();

  public:
  // optional string mime_type = 11;
  bool has_mime_type()
      const;
  void clear_mime_type() ;
  const ::std::string& mime_type() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_mime_type(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_mime_type();
  ::std::string* PROTOBUF_NULLABLE release_mime_type();
  void set_allocated_mime_type(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_mime_type() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_mime_type(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_mime_type();

  public:
  // optional string original_mime_type = 12;
  bool has_original_mime_type()
      const;
  void clear_original_mime_type() ;
  const ::std::string& original_mime_type() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_original_mime_type(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_original_mime_type();
  ::std::string* PROTOBUF_NULLABLE release_original_mime_type();
  void set_allocated_original_mime_type(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_original_mime_type() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_original_mime_type(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_original_mime_type();

  public:
  // optional bytes current_path = 13;
  bool has_current_path()
      const;
  void clear_current_path() ;
  const ::std::string& current_path() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_current_path(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_current_path();
  ::std::string* PROTOBUF_NULLABLE release_current_path();
  void set_allocated_current_path(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_current_path() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_current_path(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_current_path();

  public:
  // optional bytes target_path = 14;
  bool has_target_path()
      const;
  void clear_target_path() ;
  const ::std::string& target_path() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_target_path(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_target_path();
  ::std::string* PROTOBUF_NULLABLE release_target_path();
  void set_allocated_target_path(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_target_path() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_target_path(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_target_path();

  public:
  // optional string hash = 19;
  bool has_hash()
      const;
  void clear_hash() ;
  const ::std::string& hash() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_hash(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_hash();
  ::std::string* PROTOBUF_NULLABLE release_hash();
  void set_allocated_hash(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_hash() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_hash(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_hash();

  public:
  // optional .download_pb.DownloadSchedule download_schedule = 28;
  bool has_download_schedule()
      const;
  void clear_download_schedule() ;
  const ::download_pb::DownloadSchedule& download_schedule() const;
  ::download_pb::DownloadSchedule* PROTOBUF_NULLABLE release_download_schedule();
  ::download_pb::DownloadSchedule* PROTOBUF_NONNULL mutable_download_schedule();
  void set_allocated_download_schedule(::download_pb::DownloadSchedule* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_download_schedule(::download_pb::DownloadSchedule* PROTOBUF_NULLABLE value);
  ::download_pb::DownloadSchedule* PROTOBUF_NULLABLE unsafe_arena_release_download_schedule();

  private:
  const ::download_pb::DownloadSchedule& _internal_download_schedule() const;
  ::download_pb::DownloadSchedule* PROTOBUF_NONNULL _internal_mutable_download_schedule();

  public:
  // optional int64 total_bytes = 10;
  bool has_total_bytes()
      const;
  void clear_total_bytes() ;
  ::int64_t total_bytes() const;
  void set_total_bytes(::int64_t value);

  private:
  ::int64_t _internal_total_bytes() const;
  void _internal_set_total_bytes(::int64_t value);

  public:
  // optional int64 received_bytes = 15;
  bool has_received_bytes()
      const;
  void clear_received_bytes() ;
  ::int64_t received_bytes() const;
  void set_received_bytes(::int64_t value);

  private:
  ::int64_t _internal_received_bytes() const;
  void _internal_set_received_bytes(::int64_t value);

  public:
  // optional int64 start_time = 16;
  bool has_start_time()
      const;
  void clear_start_time() ;
  ::int64_t start_time() const;
  void set_start_time(::int64_t value);

  private:
  ::int64_t _internal_start_time() const;
  void _internal_set_start_time(::int64_t value);

  public:
  // optional int64 end_time = 17;
  bool has_end_time()
      const;
  void clear_end_time() ;
  ::int64_t end_time() const;
  void set_end_time(::int64_t value);

  private:
  ::int64_t _internal_end_time() const;
  void _internal_set_end_time(::int64_t value);

  public:
  // optional bool fetch_error_body = 6;
  bool has_fetch_error_body()
      const;
  void clear_fetch_error_body() ;
  bool fetch_error_body() const;
  void set_fetch_error_body(bool value);

  private:
  bool _internal_fetch_error_body() const;
  void _internal_set_fetch_error_body(bool value);

  public:
  // optional bool transient = 20;
  bool has_transient()
      const;
  void clear_transient() ;
  bool transient() const;
  void set_transient(bool value);

  private:
  bool _internal_transient() const;
  void _internal_set_transient(bool value);

  public:
  // optional bool paused = 24;
  bool has_paused()
      const;
  void clear_paused() ;
  bool paused() const;
  void set_paused(bool value);

  private:
  bool _internal_paused() const;
  void _internal_set_paused(bool value);

  public:
  // optional bool metered = 25;
  bool has_metered()
      const;
  void clear_metered() ;
  bool metered() const;
  void set_metered(bool value);

  private:
  bool _internal_metered() const;
  void _internal_set_metered(bool value);

  public:
  // optional int32 state = 21;
  bool has_state()
      const;
  void clear_state() ;
  ::int32_t state() const;
  void set_state(::int32_t value);

  private:
  ::int32_t _internal_state() const;
  void _internal_set_state(::int32_t value);

  public:
  // optional int32 danger_type = 22;
  bool has_danger_type()
      const;
  void clear_danger_type() ;
  ::int32_t danger_type() const;
  void set_danger_type(::int32_t value);

  private:
  ::int32_t _internal_danger_type() const;
  void _internal_set_danger_type(::int32_t value);

  public:
  // optional int32 interrupt_reason = 23;
  bool has_interrupt_reason()
      const;
  void clear_interrupt_reason() ;
  ::int32_t interrupt_reason() const;
  void set_interrupt_reason(::int32_t value);

  private:
  ::int32_t _internal_interrupt_reason() const;
  void _internal_set_interrupt_reason(::int32_t value);

  public:
  // optional int64 bytes_wasted = 26;
  bool has_bytes_wasted()
      const;
  void clear_bytes_wasted() ;
  ::int64_t bytes_wasted() const;
  void set_bytes_wasted(::int64_t value);

  private:
  ::int64_t _internal_bytes_wasted() const;
  void _internal_set_bytes_wasted(::int64_t value);

  public:
  // optional int32 auto_resume_count = 27;
  bool has_auto_resume_count()
      const;
  void clear_auto_resume_count() ;
  ::int32_t auto_resume_count() const;
  void set_auto_resume_count(::int32_t value);

  private:
  ::int32_t _internal_auto_resume_count() const;
  void _internal_set_auto_resume_count(::int32_t value);

  public:
  // optional int32 credentials_mode = 30;
  bool has_credentials_mode()
      const;
  void clear_credentials_mode() ;
  ::int32_t credentials_mode() const;
  void set_credentials_mode(::int32_t value);

  private:
  ::int32_t _internal_credentials_mode() const;
  void _internal_set_credentials_mode(::int32_t value);

  public:
  // optional int64 range_request_from = 31;
  bool has_range_request_from()
      const;
  void clear_range_request_from() ;
  ::int64_t range_request_from() const;
  void set_range_request_from(::int64_t value);

  private:
  ::int64_t _internal_range_request_from() const;
  void _internal_set_range_request_from(::int64_t value);

  public:
  // optional string serialized_embedder_download_data = 33;
  bool has_serialized_embedder_download_data()
      const;
  void clear_serialized_embedder_download_data() ;
  const ::std::string& serialized_embedder_download_data() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_serialized_embedder_download_data(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_serialized_embedder_download_data();
  ::std::string* PROTOBUF_NULLABLE release_serialized_embedder_download_data();
  void set_allocated_serialized_embedder_download_data(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_serialized_embedder_download_data() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_serialized_embedder_download_data(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_serialized_embedder_download_data();

  public:
  // optional int64 range_request_to = 32;
  bool has_range_request_to()
      const;
  void clear_range_request_to() ;
  ::int64_t range_request_to() const;
  void set_range_request_to(::int64_t value);

  private:
  ::int64_t _internal_range_request_to() const;
  void _internal_set_range_request_to(::int64_t value);

  public:
  // optional bool fetched_via_service_worker = 35;
  bool has_fetched_via_service_worker()
      const;
  void clear_fetched_via_service_worker() ;
  bool fetched_via_service_worker() const;
  void set_fetched_via_service_worker(bool value);

  private:
  bool _internal_fetched_via_service_worker() const;
  void _internal_set_fetched_via_service_worker(bool value);

  public:
  // @@protoc_insertion_point(class_scope:download_pb.InProgressInfo)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<5, 33,
                          3, 0,
                          7>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const InProgressInfo& from_msg);
    ::google::protobuf::internal::HasBits<2> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> url_chain_;
    ::google::protobuf::RepeatedPtrField< ::download_pb::HttpRequestHeader > request_headers_;
    ::google::protobuf::RepeatedPtrField< ::download_pb::ReceivedSlice > received_slices_;
    ::google::protobuf::internal::ArenaStringPtr referrer_url_;
    ::google::protobuf::internal::ArenaStringPtr site_url_;
    ::google::protobuf::internal::ArenaStringPtr tab_url_;
    ::google::protobuf::internal::ArenaStringPtr tab_referrer_url_;
    ::google::protobuf::internal::ArenaStringPtr etag_;
    ::google::protobuf::internal::ArenaStringPtr last_modified_;
    ::google::protobuf::internal::ArenaStringPtr mime_type_;
    ::google::protobuf::internal::ArenaStringPtr original_mime_type_;
    ::google::protobuf::internal::ArenaStringPtr current_path_;
    ::google::protobuf::internal::ArenaStringPtr target_path_;
    ::google::protobuf::internal::ArenaStringPtr hash_;
    ::download_pb::DownloadSchedule* PROTOBUF_NULLABLE download_schedule_;
    ::int64_t total_bytes_;
    ::int64_t received_bytes_;
    ::int64_t start_time_;
    ::int64_t end_time_;
    bool fetch_error_body_;
    bool transient_;
    bool paused_;
    bool metered_;
    ::int32_t state_;
    ::int32_t danger_type_;
    ::int32_t interrupt_reason_;
    ::int64_t bytes_wasted_;
    ::int32_t auto_resume_count_;
    ::int32_t credentials_mode_;
    ::int64_t range_request_from_;
    ::google::protobuf::internal::ArenaStringPtr serialized_embedder_download_data_;
    ::int64_t range_request_to_;
    bool fetched_via_service_worker_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto;
};
// -------------------------------------------------------------------

class  DownloadEntry final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:download_pb.DownloadEntry) */ {
 public:
  inline DownloadEntry() : DownloadEntry(nullptr) {}
  ~DownloadEntry() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(DownloadEntry* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(DownloadEntry));
  }
#endif

  template <typename = void>
  explicit constexpr DownloadEntry(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline DownloadEntry(const DownloadEntry& from) : DownloadEntry(nullptr, from) {}
  inline DownloadEntry(DownloadEntry&& from) noexcept : DownloadEntry(nullptr, ::std::move(from)) {}
  inline DownloadEntry& operator=(const DownloadEntry& from) {
    CopyFrom(from);
    return *this;
  }
  inline DownloadEntry& operator=(DownloadEntry&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const DownloadEntry& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<DownloadEntry>(&DownloadEntry_globals_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(DownloadEntry& a, DownloadEntry& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(DownloadEntry* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DownloadEntry* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  DownloadEntry* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<DownloadEntry>(arena);
  }
  void CopyFrom(const DownloadEntry& from);
  void MergeFrom(const DownloadEntry& from) { DownloadEntry::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(DownloadEntry* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "download_pb.DownloadEntry"; }

  explicit DownloadEntry(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DownloadEntry(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DownloadEntry& from);
  DownloadEntry(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DownloadEntry&& from) noexcept
      : DownloadEntry(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kRequestHeadersFieldNumber = 7,
    kGuidFieldNumber = 1,
    kRequestOriginFieldNumber = 2,
    kUkmDownloadIdFieldNumber = 4,
    kDownloadSourceFieldNumber = 3,
    kFetchErrorBodyFieldNumber = 6,
    kBytesWastedFieldNumber = 5,
  };
  // repeated .download_pb.HttpRequestHeader request_headers = 7;
  int request_headers_size()
      const;
  private:
  int _internal_request_headers_size() const;

  public:
  void clear_request_headers() ;
  const ::download_pb::HttpRequestHeader& request_headers(int index) const;
  ::download_pb::HttpRequestHeader* PROTOBUF_NONNULL mutable_request_headers(int index);
  ::download_pb::HttpRequestHeader* PROTOBUF_NONNULL add_request_headers();
  const ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>&
  request_headers() const;
  ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>* PROTOBUF_NONNULL
  mutable_request_headers();

  private:
  const ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>& _internal_request_headers() const;
  ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>* PROTOBUF_NONNULL _internal_mutable_request_headers();

  public:
  // optional string guid = 1;
  bool has_guid()
      const;
  void clear_guid() ;
  const ::std::string& guid() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_guid(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_guid();
  ::std::string* PROTOBUF_NULLABLE release_guid();
  void set_allocated_guid(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_guid() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_guid(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_guid();

  public:
  // optional string request_origin = 2;
  bool has_request_origin()
      const;
  void clear_request_origin() ;
  const ::std::string& request_origin() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_request_origin(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_request_origin();
  ::std::string* PROTOBUF_NULLABLE release_request_origin();
  void set_allocated_request_origin(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_request_origin() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_request_origin(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_request_origin();

  public:
  // optional int64 ukm_download_id = 4;
  bool has_ukm_download_id()
      const;
  void clear_ukm_download_id() ;
  ::int64_t ukm_download_id() const;
  void set_ukm_download_id(::int64_t value);

  private:
  ::int64_t _internal_ukm_download_id() const;
  void _internal_set_ukm_download_id(::int64_t value);

  public:
  // optional .download_pb.DownloadSource download_source = 3;
  bool has_download_source()
      const;
  void clear_download_source() ;
  ::download_pb::DownloadSource download_source() const;
  void set_download_source(::download_pb::DownloadSource value);

  private:
  ::download_pb::DownloadSource _internal_download_source() const;
  void _internal_set_download_source(::download_pb::DownloadSource value);

  public:
  // optional bool fetch_error_body = 6;
  bool has_fetch_error_body()
      const;
  void clear_fetch_error_body() ;
  bool fetch_error_body() const;
  void set_fetch_error_body(bool value);

  private:
  bool _internal_fetch_error_body() const;
  void _internal_set_fetch_error_body(bool value);

  public:
  // optional int64 bytes_wasted = 5;
  bool has_bytes_wasted()
      const;
  void clear_bytes_wasted() ;
  ::int64_t bytes_wasted() const;
  void set_bytes_wasted(::int64_t value);

  private:
  ::int64_t _internal_bytes_wasted() const;
  void _internal_set_bytes_wasted(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:download_pb.DownloadEntry)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 7,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const DownloadEntry& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::download_pb::HttpRequestHeader > request_headers_;
    ::google::protobuf::internal::ArenaStringPtr guid_;
    ::google::protobuf::internal::ArenaStringPtr request_origin_;
    ::int64_t ukm_download_id_;
    int download_source_;
    bool fetch_error_body_;
    ::int64_t bytes_wasted_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto;
};
// -------------------------------------------------------------------

class  DownloadInfo final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:download_pb.DownloadInfo) */ {
 public:
  inline DownloadInfo() : DownloadInfo(nullptr) {}
  ~DownloadInfo() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(DownloadInfo* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(DownloadInfo));
  }
#endif

  template <typename = void>
  explicit constexpr DownloadInfo(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline DownloadInfo(const DownloadInfo& from) : DownloadInfo(nullptr, from) {}
  inline DownloadInfo(DownloadInfo&& from) noexcept : DownloadInfo(nullptr, ::std::move(from)) {}
  inline DownloadInfo& operator=(const DownloadInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline DownloadInfo& operator=(DownloadInfo&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const DownloadInfo& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<DownloadInfo>(&DownloadInfo_globals_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(DownloadInfo& a, DownloadInfo& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(DownloadInfo* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DownloadInfo* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  DownloadInfo* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<DownloadInfo>(arena);
  }
  void CopyFrom(const DownloadInfo& from);
  void MergeFrom(const DownloadInfo& from) { DownloadInfo::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(DownloadInfo* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "download_pb.DownloadInfo"; }

  explicit DownloadInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DownloadInfo(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DownloadInfo& from);
  DownloadInfo(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DownloadInfo&& from) noexcept
      : DownloadInfo(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kGuidFieldNumber = 1,
    kUkmInfoFieldNumber = 3,
    kInProgressInfoFieldNumber = 4,
    kIdFieldNumber = 2,
  };
  // optional string guid = 1;
  bool has_guid()
      const;
  void clear_guid() ;
  const ::std::string& guid() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_guid(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_guid();
  ::std::string* PROTOBUF_NULLABLE release_guid();
  void set_allocated_guid(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_guid() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_guid(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_guid();

  public:
  // optional .download_pb.UkmInfo ukm_info = 3;
  bool has_ukm_info()
      const;
  void clear_ukm_info() ;
  const ::download_pb::UkmInfo& ukm_info() const;
  ::download_pb::UkmInfo* PROTOBUF_NULLABLE release_ukm_info();
  ::download_pb::UkmInfo* PROTOBUF_NONNULL mutable_ukm_info();
  void set_allocated_ukm_info(::download_pb::UkmInfo* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_ukm_info(::download_pb::UkmInfo* PROTOBUF_NULLABLE value);
  ::download_pb::UkmInfo* PROTOBUF_NULLABLE unsafe_arena_release_ukm_info();

  private:
  const ::download_pb::UkmInfo& _internal_ukm_info() const;
  ::download_pb::UkmInfo* PROTOBUF_NONNULL _internal_mutable_ukm_info();

  public:
  // optional .download_pb.InProgressInfo in_progress_info = 4;
  bool has_in_progress_info()
      const;
  void clear_in_progress_info() ;
  const ::download_pb::InProgressInfo& in_progress_info() const;
  ::download_pb::InProgressInfo* PROTOBUF_NULLABLE release_in_progress_info();
  ::download_pb::InProgressInfo* PROTOBUF_NONNULL mutable_in_progress_info();
  void set_allocated_in_progress_info(::download_pb::InProgressInfo* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_in_progress_info(::download_pb::InProgressInfo* PROTOBUF_NULLABLE value);
  ::download_pb::InProgressInfo* PROTOBUF_NULLABLE unsafe_arena_release_in_progress_info();

  private:
  const ::download_pb::InProgressInfo& _internal_in_progress_info() const;
  ::download_pb::InProgressInfo* PROTOBUF_NONNULL _internal_mutable_in_progress_info();

  public:
  // optional int32 id = 2;
  bool has_id()
      const;
  void clear_id() ;
  ::int32_t id() const;
  void set_id(::int32_t value);

  private:
  ::int32_t _internal_id() const;
  void _internal_set_id(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:download_pb.DownloadInfo)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const DownloadInfo& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr guid_;
    ::download_pb::UkmInfo* PROTOBUF_NULLABLE ukm_info_;
    ::download_pb::InProgressInfo* PROTOBUF_NULLABLE in_progress_info_;
    ::int32_t id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto;
};
// -------------------------------------------------------------------

class  DownloadEntries final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:download_pb.DownloadEntries) */ {
 public:
  inline DownloadEntries() : DownloadEntries(nullptr) {}
  ~DownloadEntries() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(DownloadEntries* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(DownloadEntries));
  }
#endif

  template <typename = void>
  explicit constexpr DownloadEntries(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline DownloadEntries(const DownloadEntries& from) : DownloadEntries(nullptr, from) {}
  inline DownloadEntries(DownloadEntries&& from) noexcept : DownloadEntries(nullptr, ::std::move(from)) {}
  inline DownloadEntries& operator=(const DownloadEntries& from) {
    CopyFrom(from);
    return *this;
  }
  inline DownloadEntries& operator=(DownloadEntries&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const DownloadEntries& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<DownloadEntries>(&DownloadEntries_globals_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(DownloadEntries& a, DownloadEntries& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(DownloadEntries* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DownloadEntries* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  DownloadEntries* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<DownloadEntries>(arena);
  }
  void CopyFrom(const DownloadEntries& from);
  void MergeFrom(const DownloadEntries& from) { DownloadEntries::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(DownloadEntries* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "download_pb.DownloadEntries"; }

  explicit DownloadEntries(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DownloadEntries(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DownloadEntries& from);
  DownloadEntries(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DownloadEntries&& from) noexcept
      : DownloadEntries(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kEntriesFieldNumber = 1,
  };
  // repeated .download_pb.DownloadEntry entries = 1;
  int entries_size()
      const;
  private:
  int _internal_entries_size() const;

  public:
  void clear_entries() ;
  const ::download_pb::DownloadEntry& entries(int index) const;
  ::download_pb::DownloadEntry* PROTOBUF_NONNULL mutable_entries(int index);
  ::download_pb::DownloadEntry* PROTOBUF_NONNULL add_entries();
  const ::google::protobuf::RepeatedPtrField<::download_pb::DownloadEntry>&
  entries() const;
  ::google::protobuf::RepeatedPtrField<::download_pb::DownloadEntry>* PROTOBUF_NONNULL
  mutable_entries();

  private:
  const ::google::protobuf::RepeatedPtrField<::download_pb::DownloadEntry>& _internal_entries() const;
  ::google::protobuf::RepeatedPtrField<::download_pb::DownloadEntry>* PROTOBUF_NONNULL _internal_mutable_entries();

  public:
  // @@protoc_insertion_point(class_scope:download_pb.DownloadEntries)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const DownloadEntries& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::download_pb::DownloadEntry > entries_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto;
};
// -------------------------------------------------------------------

class  DownloadDBEntry final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:download_pb.DownloadDBEntry) */ {
 public:
  inline DownloadDBEntry() : DownloadDBEntry(nullptr) {}
  ~DownloadDBEntry() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(DownloadDBEntry* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(DownloadDBEntry));
  }
#endif

  template <typename = void>
  explicit constexpr DownloadDBEntry(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline DownloadDBEntry(const DownloadDBEntry& from) : DownloadDBEntry(nullptr, from) {}
  inline DownloadDBEntry(DownloadDBEntry&& from) noexcept : DownloadDBEntry(nullptr, ::std::move(from)) {}
  inline DownloadDBEntry& operator=(const DownloadDBEntry& from) {
    CopyFrom(from);
    return *this;
  }
  inline DownloadDBEntry& operator=(DownloadDBEntry&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const DownloadDBEntry& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<DownloadDBEntry>(&DownloadDBEntry_globals_);
  }
  enum EntryCase {
    kDownloadInfo = 1,
    ENTRY_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(DownloadDBEntry& a, DownloadDBEntry& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(DownloadDBEntry* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DownloadDBEntry* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  DownloadDBEntry* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<DownloadDBEntry>(arena);
  }
  void CopyFrom(const DownloadDBEntry& from);
  void MergeFrom(const DownloadDBEntry& from) { DownloadDBEntry::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(DownloadDBEntry* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "download_pb.DownloadDBEntry"; }

  explicit DownloadDBEntry(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DownloadDBEntry(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DownloadDBEntry& from);
  DownloadDBEntry(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DownloadDBEntry&& from) noexcept
      : DownloadDBEntry(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kDownloadInfoFieldNumber = 1,
  };
  // .download_pb.DownloadInfo download_info = 1;
  bool has_download_info()
      const;
  private:
  bool _internal_has_download_info() const;

  public:
  void clear_download_info() ;
  const ::download_pb::DownloadInfo& download_info() const;
  ::download_pb::DownloadInfo* PROTOBUF_NULLABLE release_download_info();
  ::download_pb::DownloadInfo* PROTOBUF_NONNULL mutable_download_info();
  void set_allocated_download_info(::download_pb::DownloadInfo* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_download_info(::download_pb::DownloadInfo* PROTOBUF_NULLABLE value);
  ::download_pb::DownloadInfo* PROTOBUF_NULLABLE unsafe_arena_release_download_info();

  private:
  const ::download_pb::DownloadInfo& _internal_download_info() const;
  ::download_pb::DownloadInfo* PROTOBUF_NONNULL _internal_mutable_download_info();

  public:
  void clear_entry();
  EntryCase entry_case() const;
  // @@protoc_insertion_point(class_scope:download_pb.DownloadDBEntry)
 private:
  class _Internal;
  void set_has_download_info();
  inline bool has_entry() const;
  inline void clear_has_entry();
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const DownloadDBEntry& from_msg);
    union EntryUnion {
      constexpr EntryUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::download_pb::DownloadInfo* PROTOBUF_NULLABLE download_info_;
    } entry_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto;
};

// ===================================================================




// ===================================================================


#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// HttpRequestHeader

// optional string key = 1;
inline bool HttpRequestHeader::has_key() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void HttpRequestHeader::clear_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.key_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& HttpRequestHeader::key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.HttpRequestHeader.key)
  return _internal_key();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void HttpRequestHeader::set_key(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.key_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.HttpRequestHeader.key)
}
inline ::std::string* PROTOBUF_NONNULL HttpRequestHeader::mutable_key()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_key();
  // @@protoc_insertion_point(field_mutable:download_pb.HttpRequestHeader.key)
  return _s;
}
inline const ::std::string& HttpRequestHeader::_internal_key() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.key_.Get();
}
inline void HttpRequestHeader::_internal_set_key(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.key_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HttpRequestHeader::_internal_mutable_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.key_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HttpRequestHeader::release_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.HttpRequestHeader.key)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.key_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.key_.Set("", GetArena());
  }
  return released;
}
inline void HttpRequestHeader::set_allocated_key(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.key_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.key_.IsDefault()) {
    _impl_.key_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.HttpRequestHeader.key)
}

// optional string value = 2;
inline bool HttpRequestHeader::has_value() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void HttpRequestHeader::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& HttpRequestHeader::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.HttpRequestHeader.value)
  return _internal_value();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void HttpRequestHeader::set_value(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.value_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.HttpRequestHeader.value)
}
inline ::std::string* PROTOBUF_NONNULL HttpRequestHeader::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:download_pb.HttpRequestHeader.value)
  return _s;
}
inline const ::std::string& HttpRequestHeader::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_.Get();
}
inline void HttpRequestHeader::_internal_set_value(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL HttpRequestHeader::_internal_mutable_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.value_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE HttpRequestHeader::release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.HttpRequestHeader.value)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.value_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.value_.Set("", GetArena());
  }
  return released;
}
inline void HttpRequestHeader::set_allocated_value(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.value_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.value_.IsDefault()) {
    _impl_.value_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.HttpRequestHeader.value)
}

// -------------------------------------------------------------------

// ReceivedSlice

// optional int64 offset = 1;
inline bool ReceivedSlice::has_offset() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void ReceivedSlice::clear_offset() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.offset_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int64_t ReceivedSlice::offset() const {
  // @@protoc_insertion_point(field_get:download_pb.ReceivedSlice.offset)
  return _internal_offset();
}
inline void ReceivedSlice::set_offset(::int64_t value) {
  _internal_set_offset(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:download_pb.ReceivedSlice.offset)
}
inline ::int64_t ReceivedSlice::_internal_offset() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.offset_;
}
inline void ReceivedSlice::_internal_set_offset(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.offset_ = value;
}

// optional int64 received_bytes = 2;
inline bool ReceivedSlice::has_received_bytes() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ReceivedSlice::clear_received_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.received_bytes_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::int64_t ReceivedSlice::received_bytes() const {
  // @@protoc_insertion_point(field_get:download_pb.ReceivedSlice.received_bytes)
  return _internal_received_bytes();
}
inline void ReceivedSlice::set_received_bytes(::int64_t value) {
  _internal_set_received_bytes(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:download_pb.ReceivedSlice.received_bytes)
}
inline ::int64_t ReceivedSlice::_internal_received_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.received_bytes_;
}
inline void ReceivedSlice::_internal_set_received_bytes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.received_bytes_ = value;
}

// optional bool finished = 3;
inline bool ReceivedSlice::has_finished() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void ReceivedSlice::clear_finished() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.finished_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline bool ReceivedSlice::finished() const {
  // @@protoc_insertion_point(field_get:download_pb.ReceivedSlice.finished)
  return _internal_finished();
}
inline void ReceivedSlice::set_finished(bool value) {
  _internal_set_finished(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:download_pb.ReceivedSlice.finished)
}
inline bool ReceivedSlice::_internal_finished() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.finished_;
}
inline void ReceivedSlice::_internal_set_finished(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.finished_ = value;
}

// -------------------------------------------------------------------

// DownloadEntry

// optional string guid = 1;
inline bool DownloadEntry::has_guid() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void DownloadEntry::clear_guid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.guid_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& DownloadEntry::guid() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.DownloadEntry.guid)
  return _internal_guid();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void DownloadEntry::set_guid(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.guid_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.DownloadEntry.guid)
}
inline ::std::string* PROTOBUF_NONNULL DownloadEntry::mutable_guid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_guid();
  // @@protoc_insertion_point(field_mutable:download_pb.DownloadEntry.guid)
  return _s;
}
inline const ::std::string& DownloadEntry::_internal_guid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.guid_.Get();
}
inline void DownloadEntry::_internal_set_guid(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.guid_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL DownloadEntry::_internal_mutable_guid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.guid_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE DownloadEntry::release_guid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.DownloadEntry.guid)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.guid_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.guid_.Set("", GetArena());
  }
  return released;
}
inline void DownloadEntry::set_allocated_guid(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.guid_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.guid_.IsDefault()) {
    _impl_.guid_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.DownloadEntry.guid)
}

// optional string request_origin = 2;
inline bool DownloadEntry::has_request_origin() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void DownloadEntry::clear_request_origin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.request_origin_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& DownloadEntry::request_origin() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.DownloadEntry.request_origin)
  return _internal_request_origin();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void DownloadEntry::set_request_origin(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.request_origin_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.DownloadEntry.request_origin)
}
inline ::std::string* PROTOBUF_NONNULL DownloadEntry::mutable_request_origin()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_request_origin();
  // @@protoc_insertion_point(field_mutable:download_pb.DownloadEntry.request_origin)
  return _s;
}
inline const ::std::string& DownloadEntry::_internal_request_origin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.request_origin_.Get();
}
inline void DownloadEntry::_internal_set_request_origin(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.request_origin_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL DownloadEntry::_internal_mutable_request_origin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.request_origin_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE DownloadEntry::release_request_origin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.DownloadEntry.request_origin)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.request_origin_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.request_origin_.Set("", GetArena());
  }
  return released;
}
inline void DownloadEntry::set_allocated_request_origin(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.request_origin_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.request_origin_.IsDefault()) {
    _impl_.request_origin_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.DownloadEntry.request_origin)
}

// optional .download_pb.DownloadSource download_source = 3;
inline bool DownloadEntry::has_download_source() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void DownloadEntry::clear_download_source() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.download_source_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::download_pb::DownloadSource DownloadEntry::download_source() const {
  // @@protoc_insertion_point(field_get:download_pb.DownloadEntry.download_source)
  return _internal_download_source();
}
inline void DownloadEntry::set_download_source(::download_pb::DownloadSource value) {
  _internal_set_download_source(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:download_pb.DownloadEntry.download_source)
}
inline ::download_pb::DownloadSource DownloadEntry::_internal_download_source() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::download_pb::DownloadSource>(_impl_.download_source_);
}
inline void DownloadEntry::_internal_set_download_source(::download_pb::DownloadSource value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);

                                          assert(::google::protobuf::internal::ValidateEnum(
                                              value, ::download_pb::DownloadSource_internal_data_));
                                          _impl_.download_source_ = value;
}

// optional int64 ukm_download_id = 4;
inline bool DownloadEntry::has_ukm_download_id() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void DownloadEntry::clear_ukm_download_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ukm_download_id_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::int64_t DownloadEntry::ukm_download_id() const {
  // @@protoc_insertion_point(field_get:download_pb.DownloadEntry.ukm_download_id)
  return _internal_ukm_download_id();
}
inline void DownloadEntry::set_ukm_download_id(::int64_t value) {
  _internal_set_ukm_download_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:download_pb.DownloadEntry.ukm_download_id)
}
inline ::int64_t DownloadEntry::_internal_ukm_download_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ukm_download_id_;
}
inline void DownloadEntry::_internal_set_ukm_download_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ukm_download_id_ = value;
}

// optional int64 bytes_wasted = 5;
inline bool DownloadEntry::has_bytes_wasted() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  return value;
}
inline void DownloadEntry::clear_bytes_wasted() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bytes_wasted_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline ::int64_t DownloadEntry::bytes_wasted() const {
  // @@protoc_insertion_point(field_get:download_pb.DownloadEntry.bytes_wasted)
  return _internal_bytes_wasted();
}
inline void DownloadEntry::set_bytes_wasted(::int64_t value) {
  _internal_set_bytes_wasted(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:download_pb.DownloadEntry.bytes_wasted)
}
inline ::int64_t DownloadEntry::_internal_bytes_wasted() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bytes_wasted_;
}
inline void DownloadEntry::_internal_set_bytes_wasted(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bytes_wasted_ = value;
}

// optional bool fetch_error_body = 6;
inline bool DownloadEntry::has_fetch_error_body() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void DownloadEntry::clear_fetch_error_body() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fetch_error_body_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline bool DownloadEntry::fetch_error_body() const {
  // @@protoc_insertion_point(field_get:download_pb.DownloadEntry.fetch_error_body)
  return _internal_fetch_error_body();
}
inline void DownloadEntry::set_fetch_error_body(bool value) {
  _internal_set_fetch_error_body(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:download_pb.DownloadEntry.fetch_error_body)
}
inline bool DownloadEntry::_internal_fetch_error_body() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fetch_error_body_;
}
inline void DownloadEntry::_internal_set_fetch_error_body(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fetch_error_body_ = value;
}

// repeated .download_pb.HttpRequestHeader request_headers = 7;
inline int DownloadEntry::_internal_request_headers_size() const {
  return _internal_request_headers().size();
}
inline int DownloadEntry::request_headers_size() const {
  return _internal_request_headers_size();
}
inline void DownloadEntry::clear_request_headers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.request_headers_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::download_pb::HttpRequestHeader& DownloadEntry::request_headers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.DownloadEntry.request_headers)
  return _internal_request_headers().Get(index);
}
inline ::download_pb::HttpRequestHeader* PROTOBUF_NONNULL DownloadEntry::mutable_request_headers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:download_pb.DownloadEntry.request_headers)
  return _internal_mutable_request_headers()->Mutable(index);
}
inline ::download_pb::HttpRequestHeader* PROTOBUF_NONNULL DownloadEntry::add_request_headers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::download_pb::HttpRequestHeader* _add =
      _internal_mutable_request_headers()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:download_pb.DownloadEntry.request_headers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>& DownloadEntry::request_headers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:download_pb.DownloadEntry.request_headers)
  return _internal_request_headers();
}
inline ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>* PROTOBUF_NONNULL
DownloadEntry::mutable_request_headers() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:download_pb.DownloadEntry.request_headers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_request_headers();
}
inline const ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>&
DownloadEntry::_internal_request_headers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.request_headers_;
}
inline ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>* PROTOBUF_NONNULL
DownloadEntry::_internal_mutable_request_headers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.request_headers_;
}

// -------------------------------------------------------------------

// DownloadEntries

// repeated .download_pb.DownloadEntry entries = 1;
inline int DownloadEntries::_internal_entries_size() const {
  return _internal_entries().size();
}
inline int DownloadEntries::entries_size() const {
  return _internal_entries_size();
}
inline void DownloadEntries::clear_entries() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.entries_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::download_pb::DownloadEntry& DownloadEntries::entries(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.DownloadEntries.entries)
  return _internal_entries().Get(index);
}
inline ::download_pb::DownloadEntry* PROTOBUF_NONNULL DownloadEntries::mutable_entries(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:download_pb.DownloadEntries.entries)
  return _internal_mutable_entries()->Mutable(index);
}
inline ::download_pb::DownloadEntry* PROTOBUF_NONNULL DownloadEntries::add_entries()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::download_pb::DownloadEntry* _add =
      _internal_mutable_entries()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:download_pb.DownloadEntries.entries)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::download_pb::DownloadEntry>& DownloadEntries::entries() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:download_pb.DownloadEntries.entries)
  return _internal_entries();
}
inline ::google::protobuf::RepeatedPtrField<::download_pb::DownloadEntry>* PROTOBUF_NONNULL
DownloadEntries::mutable_entries() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:download_pb.DownloadEntries.entries)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_entries();
}
inline const ::google::protobuf::RepeatedPtrField<::download_pb::DownloadEntry>&
DownloadEntries::_internal_entries() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.entries_;
}
inline ::google::protobuf::RepeatedPtrField<::download_pb::DownloadEntry>* PROTOBUF_NONNULL
DownloadEntries::_internal_mutable_entries() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.entries_;
}

// -------------------------------------------------------------------

// UkmInfo

// optional .download_pb.DownloadSource download_source = 1;
inline bool UkmInfo::has_download_source() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void UkmInfo::clear_download_source() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.download_source_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::download_pb::DownloadSource UkmInfo::download_source() const {
  // @@protoc_insertion_point(field_get:download_pb.UkmInfo.download_source)
  return _internal_download_source();
}
inline void UkmInfo::set_download_source(::download_pb::DownloadSource value) {
  _internal_set_download_source(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:download_pb.UkmInfo.download_source)
}
inline ::download_pb::DownloadSource UkmInfo::_internal_download_source() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::download_pb::DownloadSource>(_impl_.download_source_);
}
inline void UkmInfo::_internal_set_download_source(::download_pb::DownloadSource value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);

                                          assert(::google::protobuf::internal::ValidateEnum(
                                              value, ::download_pb::DownloadSource_internal_data_));
                                          _impl_.download_source_ = value;
}

// optional int64 ukm_download_id = 2;
inline bool UkmInfo::has_ukm_download_id() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void UkmInfo::clear_ukm_download_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ukm_download_id_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int64_t UkmInfo::ukm_download_id() const {
  // @@protoc_insertion_point(field_get:download_pb.UkmInfo.ukm_download_id)
  return _internal_ukm_download_id();
}
inline void UkmInfo::set_ukm_download_id(::int64_t value) {
  _internal_set_ukm_download_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:download_pb.UkmInfo.ukm_download_id)
}
inline ::int64_t UkmInfo::_internal_ukm_download_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ukm_download_id_;
}
inline void UkmInfo::_internal_set_ukm_download_id(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ukm_download_id_ = value;
}

// -------------------------------------------------------------------

// DownloadSchedule

// optional int64 start_time = 1;
inline bool DownloadSchedule::has_start_time() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void DownloadSchedule::clear_start_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.start_time_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int64_t DownloadSchedule::start_time() const {
  // @@protoc_insertion_point(field_get:download_pb.DownloadSchedule.start_time)
  return _internal_start_time();
}
inline void DownloadSchedule::set_start_time(::int64_t value) {
  _internal_set_start_time(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:download_pb.DownloadSchedule.start_time)
}
inline ::int64_t DownloadSchedule::_internal_start_time() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.start_time_;
}
inline void DownloadSchedule::_internal_set_start_time(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.start_time_ = value;
}

// -------------------------------------------------------------------

// InProgressInfo

// repeated string url_chain = 1;
inline int InProgressInfo::_internal_url_chain_size() const {
  return _internal_url_chain().size();
}
inline int InProgressInfo::url_chain_size() const {
  return _internal_url_chain_size();
}
inline void InProgressInfo::clear_url_chain() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.url_chain_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::add_url_chain()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_url_chain()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:download_pb.InProgressInfo.url_chain)
  return _s;
}
inline const ::std::string& InProgressInfo::url_chain(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.url_chain)
  return _internal_url_chain().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_url_chain(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.url_chain)
  return _internal_mutable_url_chain()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void InProgressInfo::set_url_chain(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_url_chain()->Mutable(index),
      ::std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.url_chain)
}
template <typename Arg_, typename... Args_>
inline void InProgressInfo::add_url_chain(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_url_chain(), ::std::forward<Arg_>(value),
      args... );
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:download_pb.InProgressInfo.url_chain)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& InProgressInfo::url_chain()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:download_pb.InProgressInfo.url_chain)
  return _internal_url_chain();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
InProgressInfo::mutable_url_chain() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:download_pb.InProgressInfo.url_chain)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_url_chain();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
InProgressInfo::_internal_url_chain() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.url_chain_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
InProgressInfo::_internal_mutable_url_chain() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.url_chain_;
}

// optional string referrer_url = 2;
inline bool InProgressInfo::has_referrer_url() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void InProgressInfo::clear_referrer_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.referrer_url_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& InProgressInfo::referrer_url() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.referrer_url)
  return _internal_referrer_url();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_referrer_url(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.referrer_url_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.referrer_url)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_referrer_url()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_referrer_url();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.referrer_url)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_referrer_url() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.referrer_url_.Get();
}
inline void InProgressInfo::_internal_set_referrer_url(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.referrer_url_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_referrer_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.referrer_url_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_referrer_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.referrer_url)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.referrer_url_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.referrer_url_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_referrer_url(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  _impl_.referrer_url_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.referrer_url_.IsDefault()) {
    _impl_.referrer_url_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.referrer_url)
}

// optional string site_url = 3;
inline bool InProgressInfo::has_site_url() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void InProgressInfo::clear_site_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.site_url_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline const ::std::string& InProgressInfo::site_url() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.site_url)
  return _internal_site_url();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_site_url(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  _impl_.site_url_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.site_url)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_site_url()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::std::string* _s = _internal_mutable_site_url();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.site_url)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_site_url() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.site_url_.Get();
}
inline void InProgressInfo::_internal_set_site_url(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.site_url_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_site_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.site_url_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_site_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.site_url)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000010U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  auto* released = _impl_.site_url_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.site_url_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_site_url(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  _impl_.site_url_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.site_url_.IsDefault()) {
    _impl_.site_url_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.site_url)
}

// optional string tab_url = 4;
inline bool InProgressInfo::has_tab_url() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void InProgressInfo::clear_tab_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tab_url_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline const ::std::string& InProgressInfo::tab_url() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.tab_url)
  return _internal_tab_url();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_tab_url(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  _impl_.tab_url_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.tab_url)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_tab_url()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::std::string* _s = _internal_mutable_tab_url();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.tab_url)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_tab_url() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tab_url_.Get();
}
inline void InProgressInfo::_internal_set_tab_url(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tab_url_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_tab_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.tab_url_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_tab_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.tab_url)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000020U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  auto* released = _impl_.tab_url_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.tab_url_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_tab_url(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  }
  _impl_.tab_url_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.tab_url_.IsDefault()) {
    _impl_.tab_url_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.tab_url)
}

// optional string tab_referrer_url = 5;
inline bool InProgressInfo::has_tab_referrer_url() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  return value;
}
inline void InProgressInfo::clear_tab_referrer_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tab_referrer_url_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline const ::std::string& InProgressInfo::tab_referrer_url() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.tab_referrer_url)
  return _internal_tab_referrer_url();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_tab_referrer_url(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  _impl_.tab_referrer_url_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.tab_referrer_url)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_tab_referrer_url()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::std::string* _s = _internal_mutable_tab_referrer_url();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.tab_referrer_url)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_tab_referrer_url() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tab_referrer_url_.Get();
}
inline void InProgressInfo::_internal_set_tab_referrer_url(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tab_referrer_url_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_tab_referrer_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.tab_referrer_url_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_tab_referrer_url() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.tab_referrer_url)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000040U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  auto* released = _impl_.tab_referrer_url_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.tab_referrer_url_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_tab_referrer_url(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  }
  _impl_.tab_referrer_url_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.tab_referrer_url_.IsDefault()) {
    _impl_.tab_referrer_url_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.tab_referrer_url)
}

// optional bool fetch_error_body = 6;
inline bool InProgressInfo::has_fetch_error_body() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00080000U);
  return value;
}
inline void InProgressInfo::clear_fetch_error_body() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fetch_error_body_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00080000U);
}
inline bool InProgressInfo::fetch_error_body() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.fetch_error_body)
  return _internal_fetch_error_body();
}
inline void InProgressInfo::set_fetch_error_body(bool value) {
  _internal_set_fetch_error_body(value);
  SetHasBit(_impl_._has_bits_[0], 0x00080000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.fetch_error_body)
}
inline bool InProgressInfo::_internal_fetch_error_body() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fetch_error_body_;
}
inline void InProgressInfo::_internal_set_fetch_error_body(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fetch_error_body_ = value;
}

// repeated .download_pb.HttpRequestHeader request_headers = 7;
inline int InProgressInfo::_internal_request_headers_size() const {
  return _internal_request_headers().size();
}
inline int InProgressInfo::request_headers_size() const {
  return _internal_request_headers_size();
}
inline void InProgressInfo::clear_request_headers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.request_headers_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::download_pb::HttpRequestHeader& InProgressInfo::request_headers(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.request_headers)
  return _internal_request_headers().Get(index);
}
inline ::download_pb::HttpRequestHeader* PROTOBUF_NONNULL InProgressInfo::mutable_request_headers(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.request_headers)
  return _internal_mutable_request_headers()->Mutable(index);
}
inline ::download_pb::HttpRequestHeader* PROTOBUF_NONNULL InProgressInfo::add_request_headers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::download_pb::HttpRequestHeader* _add =
      _internal_mutable_request_headers()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:download_pb.InProgressInfo.request_headers)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>& InProgressInfo::request_headers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:download_pb.InProgressInfo.request_headers)
  return _internal_request_headers();
}
inline ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>* PROTOBUF_NONNULL
InProgressInfo::mutable_request_headers() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:download_pb.InProgressInfo.request_headers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_request_headers();
}
inline const ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>&
InProgressInfo::_internal_request_headers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.request_headers_;
}
inline ::google::protobuf::RepeatedPtrField<::download_pb::HttpRequestHeader>* PROTOBUF_NONNULL
InProgressInfo::_internal_mutable_request_headers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.request_headers_;
}

// optional string etag = 8;
inline bool InProgressInfo::has_etag() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000080U);
  return value;
}
inline void InProgressInfo::clear_etag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.etag_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
}
inline const ::std::string& InProgressInfo::etag() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.etag)
  return _internal_etag();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_etag(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  _impl_.etag_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.etag)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_etag()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  ::std::string* _s = _internal_mutable_etag();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.etag)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_etag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.etag_.Get();
}
inline void InProgressInfo::_internal_set_etag(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.etag_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_etag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.etag_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_etag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.etag)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000080U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  auto* released = _impl_.etag_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.etag_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_etag(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  }
  _impl_.etag_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.etag_.IsDefault()) {
    _impl_.etag_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.etag)
}

// optional string last_modified = 9;
inline bool InProgressInfo::has_last_modified() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000100U);
  return value;
}
inline void InProgressInfo::clear_last_modified() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.last_modified_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
}
inline const ::std::string& InProgressInfo::last_modified() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.last_modified)
  return _internal_last_modified();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_last_modified(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  _impl_.last_modified_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.last_modified)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_last_modified()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::std::string* _s = _internal_mutable_last_modified();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.last_modified)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_last_modified() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.last_modified_.Get();
}
inline void InProgressInfo::_internal_set_last_modified(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.last_modified_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_last_modified() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.last_modified_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_last_modified() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.last_modified)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000100U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  auto* released = _impl_.last_modified_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.last_modified_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_last_modified(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  }
  _impl_.last_modified_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.last_modified_.IsDefault()) {
    _impl_.last_modified_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.last_modified)
}

// optional int64 total_bytes = 10;
inline bool InProgressInfo::has_total_bytes() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00008000U);
  return value;
}
inline void InProgressInfo::clear_total_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.total_bytes_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00008000U);
}
inline ::int64_t InProgressInfo::total_bytes() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.total_bytes)
  return _internal_total_bytes();
}
inline void InProgressInfo::set_total_bytes(::int64_t value) {
  _internal_set_total_bytes(value);
  SetHasBit(_impl_._has_bits_[0], 0x00008000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.total_bytes)
}
inline ::int64_t InProgressInfo::_internal_total_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.total_bytes_;
}
inline void InProgressInfo::_internal_set_total_bytes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.total_bytes_ = value;
}

// optional string mime_type = 11;
inline bool InProgressInfo::has_mime_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000200U);
  return value;
}
inline void InProgressInfo::clear_mime_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mime_type_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
}
inline const ::std::string& InProgressInfo::mime_type() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.mime_type)
  return _internal_mime_type();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_mime_type(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000200U);
  _impl_.mime_type_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.mime_type)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_mime_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000200U);
  ::std::string* _s = _internal_mutable_mime_type();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.mime_type)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_mime_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mime_type_.Get();
}
inline void InProgressInfo::_internal_set_mime_type(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mime_type_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_mime_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.mime_type_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_mime_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.mime_type)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000200U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
  auto* released = _impl_.mime_type_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.mime_type_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_mime_type(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000200U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
  }
  _impl_.mime_type_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.mime_type_.IsDefault()) {
    _impl_.mime_type_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.mime_type)
}

// optional string original_mime_type = 12;
inline bool InProgressInfo::has_original_mime_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000400U);
  return value;
}
inline void InProgressInfo::clear_original_mime_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.original_mime_type_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000400U);
}
inline const ::std::string& InProgressInfo::original_mime_type() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.original_mime_type)
  return _internal_original_mime_type();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_original_mime_type(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000400U);
  _impl_.original_mime_type_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.original_mime_type)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_original_mime_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000400U);
  ::std::string* _s = _internal_mutable_original_mime_type();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.original_mime_type)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_original_mime_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.original_mime_type_.Get();
}
inline void InProgressInfo::_internal_set_original_mime_type(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.original_mime_type_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_original_mime_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.original_mime_type_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_original_mime_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.original_mime_type)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000400U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000400U);
  auto* released = _impl_.original_mime_type_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.original_mime_type_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_original_mime_type(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000400U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000400U);
  }
  _impl_.original_mime_type_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.original_mime_type_.IsDefault()) {
    _impl_.original_mime_type_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.original_mime_type)
}

// optional bytes current_path = 13;
inline bool InProgressInfo::has_current_path() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000800U);
  return value;
}
inline void InProgressInfo::clear_current_path() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.current_path_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000800U);
}
inline const ::std::string& InProgressInfo::current_path() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.current_path)
  return _internal_current_path();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_current_path(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000800U);
  _impl_.current_path_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.current_path)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_current_path()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000800U);
  ::std::string* _s = _internal_mutable_current_path();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.current_path)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_current_path() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.current_path_.Get();
}
inline void InProgressInfo::_internal_set_current_path(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.current_path_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_current_path() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.current_path_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_current_path() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.current_path)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000800U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000800U);
  auto* released = _impl_.current_path_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.current_path_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_current_path(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000800U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000800U);
  }
  _impl_.current_path_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.current_path_.IsDefault()) {
    _impl_.current_path_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.current_path)
}

// optional bytes target_path = 14;
inline bool InProgressInfo::has_target_path() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00001000U);
  return value;
}
inline void InProgressInfo::clear_target_path() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_path_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00001000U);
}
inline const ::std::string& InProgressInfo::target_path() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.target_path)
  return _internal_target_path();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_target_path(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00001000U);
  _impl_.target_path_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.target_path)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_target_path()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00001000U);
  ::std::string* _s = _internal_mutable_target_path();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.target_path)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_target_path() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.target_path_.Get();
}
inline void InProgressInfo::_internal_set_target_path(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_path_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_target_path() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.target_path_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_target_path() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.target_path)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00001000U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00001000U);
  auto* released = _impl_.target_path_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.target_path_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_target_path(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00001000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00001000U);
  }
  _impl_.target_path_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.target_path_.IsDefault()) {
    _impl_.target_path_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.target_path)
}

// optional int64 received_bytes = 15;
inline bool InProgressInfo::has_received_bytes() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00010000U);
  return value;
}
inline void InProgressInfo::clear_received_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.received_bytes_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00010000U);
}
inline ::int64_t InProgressInfo::received_bytes() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.received_bytes)
  return _internal_received_bytes();
}
inline void InProgressInfo::set_received_bytes(::int64_t value) {
  _internal_set_received_bytes(value);
  SetHasBit(_impl_._has_bits_[0], 0x00010000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.received_bytes)
}
inline ::int64_t InProgressInfo::_internal_received_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.received_bytes_;
}
inline void InProgressInfo::_internal_set_received_bytes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.received_bytes_ = value;
}

// optional int64 start_time = 16;
inline bool InProgressInfo::has_start_time() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00020000U);
  return value;
}
inline void InProgressInfo::clear_start_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.start_time_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00020000U);
}
inline ::int64_t InProgressInfo::start_time() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.start_time)
  return _internal_start_time();
}
inline void InProgressInfo::set_start_time(::int64_t value) {
  _internal_set_start_time(value);
  SetHasBit(_impl_._has_bits_[0], 0x00020000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.start_time)
}
inline ::int64_t InProgressInfo::_internal_start_time() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.start_time_;
}
inline void InProgressInfo::_internal_set_start_time(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.start_time_ = value;
}

// optional int64 end_time = 17;
inline bool InProgressInfo::has_end_time() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00040000U);
  return value;
}
inline void InProgressInfo::clear_end_time() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_time_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00040000U);
}
inline ::int64_t InProgressInfo::end_time() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.end_time)
  return _internal_end_time();
}
inline void InProgressInfo::set_end_time(::int64_t value) {
  _internal_set_end_time(value);
  SetHasBit(_impl_._has_bits_[0], 0x00040000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.end_time)
}
inline ::int64_t InProgressInfo::_internal_end_time() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.end_time_;
}
inline void InProgressInfo::_internal_set_end_time(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_time_ = value;
}

// repeated .download_pb.ReceivedSlice received_slices = 18;
inline int InProgressInfo::_internal_received_slices_size() const {
  return _internal_received_slices().size();
}
inline int InProgressInfo::received_slices_size() const {
  return _internal_received_slices_size();
}
inline void InProgressInfo::clear_received_slices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.received_slices_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::download_pb::ReceivedSlice& InProgressInfo::received_slices(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.received_slices)
  return _internal_received_slices().Get(index);
}
inline ::download_pb::ReceivedSlice* PROTOBUF_NONNULL InProgressInfo::mutable_received_slices(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.received_slices)
  return _internal_mutable_received_slices()->Mutable(index);
}
inline ::download_pb::ReceivedSlice* PROTOBUF_NONNULL InProgressInfo::add_received_slices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::download_pb::ReceivedSlice* _add =
      _internal_mutable_received_slices()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:download_pb.InProgressInfo.received_slices)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::download_pb::ReceivedSlice>& InProgressInfo::received_slices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:download_pb.InProgressInfo.received_slices)
  return _internal_received_slices();
}
inline ::google::protobuf::RepeatedPtrField<::download_pb::ReceivedSlice>* PROTOBUF_NONNULL
InProgressInfo::mutable_received_slices() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:download_pb.InProgressInfo.received_slices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_received_slices();
}
inline const ::google::protobuf::RepeatedPtrField<::download_pb::ReceivedSlice>&
InProgressInfo::_internal_received_slices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.received_slices_;
}
inline ::google::protobuf::RepeatedPtrField<::download_pb::ReceivedSlice>* PROTOBUF_NONNULL
InProgressInfo::_internal_mutable_received_slices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.received_slices_;
}

// optional string hash = 19;
inline bool InProgressInfo::has_hash() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00002000U);
  return value;
}
inline void InProgressInfo::clear_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.hash_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00002000U);
}
inline const ::std::string& InProgressInfo::hash() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.hash)
  return _internal_hash();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_hash(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00002000U);
  _impl_.hash_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.hash)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_hash()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00002000U);
  ::std::string* _s = _internal_mutable_hash();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.hash)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_hash() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.hash_.Get();
}
inline void InProgressInfo::_internal_set_hash(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.hash_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.hash_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_hash() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.hash)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00002000U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00002000U);
  auto* released = _impl_.hash_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.hash_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_hash(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00002000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00002000U);
  }
  _impl_.hash_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.hash_.IsDefault()) {
    _impl_.hash_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.hash)
}

// optional bool transient = 20;
inline bool InProgressInfo::has_transient() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00100000U);
  return value;
}
inline void InProgressInfo::clear_transient() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transient_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00100000U);
}
inline bool InProgressInfo::transient() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.transient)
  return _internal_transient();
}
inline void InProgressInfo::set_transient(bool value) {
  _internal_set_transient(value);
  SetHasBit(_impl_._has_bits_[0], 0x00100000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.transient)
}
inline bool InProgressInfo::_internal_transient() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.transient_;
}
inline void InProgressInfo::_internal_set_transient(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transient_ = value;
}

// optional int32 state = 21;
inline bool InProgressInfo::has_state() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00800000U);
  return value;
}
inline void InProgressInfo::clear_state() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.state_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00800000U);
}
inline ::int32_t InProgressInfo::state() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.state)
  return _internal_state();
}
inline void InProgressInfo::set_state(::int32_t value) {
  _internal_set_state(value);
  SetHasBit(_impl_._has_bits_[0], 0x00800000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.state)
}
inline ::int32_t InProgressInfo::_internal_state() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.state_;
}
inline void InProgressInfo::_internal_set_state(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.state_ = value;
}

// optional int32 danger_type = 22;
inline bool InProgressInfo::has_danger_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x01000000U);
  return value;
}
inline void InProgressInfo::clear_danger_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.danger_type_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x01000000U);
}
inline ::int32_t InProgressInfo::danger_type() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.danger_type)
  return _internal_danger_type();
}
inline void InProgressInfo::set_danger_type(::int32_t value) {
  _internal_set_danger_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x01000000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.danger_type)
}
inline ::int32_t InProgressInfo::_internal_danger_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.danger_type_;
}
inline void InProgressInfo::_internal_set_danger_type(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.danger_type_ = value;
}

// optional int32 interrupt_reason = 23;
inline bool InProgressInfo::has_interrupt_reason() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x02000000U);
  return value;
}
inline void InProgressInfo::clear_interrupt_reason() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interrupt_reason_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x02000000U);
}
inline ::int32_t InProgressInfo::interrupt_reason() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.interrupt_reason)
  return _internal_interrupt_reason();
}
inline void InProgressInfo::set_interrupt_reason(::int32_t value) {
  _internal_set_interrupt_reason(value);
  SetHasBit(_impl_._has_bits_[0], 0x02000000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.interrupt_reason)
}
inline ::int32_t InProgressInfo::_internal_interrupt_reason() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.interrupt_reason_;
}
inline void InProgressInfo::_internal_set_interrupt_reason(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interrupt_reason_ = value;
}

// optional bool paused = 24;
inline bool InProgressInfo::has_paused() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00200000U);
  return value;
}
inline void InProgressInfo::clear_paused() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.paused_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00200000U);
}
inline bool InProgressInfo::paused() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.paused)
  return _internal_paused();
}
inline void InProgressInfo::set_paused(bool value) {
  _internal_set_paused(value);
  SetHasBit(_impl_._has_bits_[0], 0x00200000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.paused)
}
inline bool InProgressInfo::_internal_paused() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.paused_;
}
inline void InProgressInfo::_internal_set_paused(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.paused_ = value;
}

// optional bool metered = 25;
inline bool InProgressInfo::has_metered() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00400000U);
  return value;
}
inline void InProgressInfo::clear_metered() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.metered_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00400000U);
}
inline bool InProgressInfo::metered() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.metered)
  return _internal_metered();
}
inline void InProgressInfo::set_metered(bool value) {
  _internal_set_metered(value);
  SetHasBit(_impl_._has_bits_[0], 0x00400000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.metered)
}
inline bool InProgressInfo::_internal_metered() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.metered_;
}
inline void InProgressInfo::_internal_set_metered(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.metered_ = value;
}

// optional int64 bytes_wasted = 26;
inline bool InProgressInfo::has_bytes_wasted() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x04000000U);
  return value;
}
inline void InProgressInfo::clear_bytes_wasted() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bytes_wasted_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x04000000U);
}
inline ::int64_t InProgressInfo::bytes_wasted() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.bytes_wasted)
  return _internal_bytes_wasted();
}
inline void InProgressInfo::set_bytes_wasted(::int64_t value) {
  _internal_set_bytes_wasted(value);
  SetHasBit(_impl_._has_bits_[0], 0x04000000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.bytes_wasted)
}
inline ::int64_t InProgressInfo::_internal_bytes_wasted() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bytes_wasted_;
}
inline void InProgressInfo::_internal_set_bytes_wasted(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bytes_wasted_ = value;
}

// optional int32 auto_resume_count = 27;
inline bool InProgressInfo::has_auto_resume_count() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x08000000U);
  return value;
}
inline void InProgressInfo::clear_auto_resume_count() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.auto_resume_count_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x08000000U);
}
inline ::int32_t InProgressInfo::auto_resume_count() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.auto_resume_count)
  return _internal_auto_resume_count();
}
inline void InProgressInfo::set_auto_resume_count(::int32_t value) {
  _internal_set_auto_resume_count(value);
  SetHasBit(_impl_._has_bits_[0], 0x08000000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.auto_resume_count)
}
inline ::int32_t InProgressInfo::_internal_auto_resume_count() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.auto_resume_count_;
}
inline void InProgressInfo::_internal_set_auto_resume_count(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.auto_resume_count_ = value;
}

// optional .download_pb.DownloadSchedule download_schedule = 28;
inline bool InProgressInfo::has_download_schedule() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00004000U);
  PROTOBUF_ASSUME(!value || _impl_.download_schedule_ != nullptr);
  return value;
}
inline void InProgressInfo::clear_download_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.download_schedule_ != nullptr) _impl_.download_schedule_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
}
inline const ::download_pb::DownloadSchedule& InProgressInfo::_internal_download_schedule() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::download_pb::DownloadSchedule* p = _impl_.download_schedule_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::download_pb::DownloadSchedule>(&::download_pb::DownloadSchedule_globals_);
}
inline const ::download_pb::DownloadSchedule& InProgressInfo::download_schedule() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.download_schedule)
  return _internal_download_schedule();
}
inline void InProgressInfo::unsafe_arena_set_allocated_download_schedule(
    ::download_pb::DownloadSchedule* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.download_schedule_);
  }
  _impl_.download_schedule_ = reinterpret_cast<::download_pb::DownloadSchedule*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00004000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:download_pb.InProgressInfo.download_schedule)
}
inline ::download_pb::DownloadSchedule* PROTOBUF_NULLABLE InProgressInfo::release_download_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
  ::download_pb::DownloadSchedule* released = _impl_.download_schedule_;
  _impl_.download_schedule_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::download_pb::DownloadSchedule* PROTOBUF_NULLABLE InProgressInfo::unsafe_arena_release_download_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.download_schedule)

  ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
  ::download_pb::DownloadSchedule* temp = _impl_.download_schedule_;
  _impl_.download_schedule_ = nullptr;
  return temp;
}
inline ::download_pb::DownloadSchedule* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_download_schedule() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.download_schedule_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::download_pb::DownloadSchedule>(GetArena());
    _impl_.download_schedule_ = reinterpret_cast<::download_pb::DownloadSchedule*>(p);
  }
  return _impl_.download_schedule_;
}
inline ::download_pb::DownloadSchedule* PROTOBUF_NONNULL InProgressInfo::mutable_download_schedule()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00004000U);
  ::download_pb::DownloadSchedule* _msg = _internal_mutable_download_schedule();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.download_schedule)
  return _msg;
}
inline void InProgressInfo::set_allocated_download_schedule(::download_pb::DownloadSchedule* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.download_schedule_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00004000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
  }

  _impl_.download_schedule_ = reinterpret_cast<::download_pb::DownloadSchedule*>(value);
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.download_schedule)
}

// optional int32 credentials_mode = 30;
inline bool InProgressInfo::has_credentials_mode() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x10000000U);
  return value;
}
inline void InProgressInfo::clear_credentials_mode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.credentials_mode_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x10000000U);
}
inline ::int32_t InProgressInfo::credentials_mode() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.credentials_mode)
  return _internal_credentials_mode();
}
inline void InProgressInfo::set_credentials_mode(::int32_t value) {
  _internal_set_credentials_mode(value);
  SetHasBit(_impl_._has_bits_[0], 0x10000000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.credentials_mode)
}
inline ::int32_t InProgressInfo::_internal_credentials_mode() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.credentials_mode_;
}
inline void InProgressInfo::_internal_set_credentials_mode(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.credentials_mode_ = value;
}

// optional int64 range_request_from = 31;
inline bool InProgressInfo::has_range_request_from() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x20000000U);
  return value;
}
inline void InProgressInfo::clear_range_request_from() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.range_request_from_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x20000000U);
}
inline ::int64_t InProgressInfo::range_request_from() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.range_request_from)
  return _internal_range_request_from();
}
inline void InProgressInfo::set_range_request_from(::int64_t value) {
  _internal_set_range_request_from(value);
  SetHasBit(_impl_._has_bits_[0], 0x20000000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.range_request_from)
}
inline ::int64_t InProgressInfo::_internal_range_request_from() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.range_request_from_;
}
inline void InProgressInfo::_internal_set_range_request_from(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.range_request_from_ = value;
}

// optional int64 range_request_to = 32;
inline bool InProgressInfo::has_range_request_to() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x80000000U);
  return value;
}
inline void InProgressInfo::clear_range_request_to() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.range_request_to_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x80000000U);
}
inline ::int64_t InProgressInfo::range_request_to() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.range_request_to)
  return _internal_range_request_to();
}
inline void InProgressInfo::set_range_request_to(::int64_t value) {
  _internal_set_range_request_to(value);
  SetHasBit(_impl_._has_bits_[0], 0x80000000U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.range_request_to)
}
inline ::int64_t InProgressInfo::_internal_range_request_to() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.range_request_to_;
}
inline void InProgressInfo::_internal_set_range_request_to(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.range_request_to_ = value;
}

// optional string serialized_embedder_download_data = 33;
inline bool InProgressInfo::has_serialized_embedder_download_data() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x40000000U);
  return value;
}
inline void InProgressInfo::clear_serialized_embedder_download_data() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.serialized_embedder_download_data_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x40000000U);
}
inline const ::std::string& InProgressInfo::serialized_embedder_download_data() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.serialized_embedder_download_data)
  return _internal_serialized_embedder_download_data();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void InProgressInfo::set_serialized_embedder_download_data(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x40000000U);
  _impl_.serialized_embedder_download_data_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.serialized_embedder_download_data)
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::mutable_serialized_embedder_download_data()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x40000000U);
  ::std::string* _s = _internal_mutable_serialized_embedder_download_data();
  // @@protoc_insertion_point(field_mutable:download_pb.InProgressInfo.serialized_embedder_download_data)
  return _s;
}
inline const ::std::string& InProgressInfo::_internal_serialized_embedder_download_data() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.serialized_embedder_download_data_.Get();
}
inline void InProgressInfo::_internal_set_serialized_embedder_download_data(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.serialized_embedder_download_data_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL InProgressInfo::_internal_mutable_serialized_embedder_download_data() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.serialized_embedder_download_data_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE InProgressInfo::release_serialized_embedder_download_data() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.InProgressInfo.serialized_embedder_download_data)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x40000000U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x40000000U);
  auto* released = _impl_.serialized_embedder_download_data_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.serialized_embedder_download_data_.Set("", GetArena());
  }
  return released;
}
inline void InProgressInfo::set_allocated_serialized_embedder_download_data(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x40000000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x40000000U);
  }
  _impl_.serialized_embedder_download_data_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.serialized_embedder_download_data_.IsDefault()) {
    _impl_.serialized_embedder_download_data_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.InProgressInfo.serialized_embedder_download_data)
}

// optional bool fetched_via_service_worker = 35;
inline bool InProgressInfo::has_fetched_via_service_worker() const {
  bool value = CheckHasBit(_impl_._has_bits_[1], 0x00000001U);
  return value;
}
inline void InProgressInfo::clear_fetched_via_service_worker() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fetched_via_service_worker_ = false;
  ClearHasBit(_impl_._has_bits_[1], 0x00000001U);
}
inline bool InProgressInfo::fetched_via_service_worker() const {
  // @@protoc_insertion_point(field_get:download_pb.InProgressInfo.fetched_via_service_worker)
  return _internal_fetched_via_service_worker();
}
inline void InProgressInfo::set_fetched_via_service_worker(bool value) {
  _internal_set_fetched_via_service_worker(value);
  SetHasBit(_impl_._has_bits_[1], 0x00000001U);
  // @@protoc_insertion_point(field_set:download_pb.InProgressInfo.fetched_via_service_worker)
}
inline bool InProgressInfo::_internal_fetched_via_service_worker() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fetched_via_service_worker_;
}
inline void InProgressInfo::_internal_set_fetched_via_service_worker(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fetched_via_service_worker_ = value;
}

// -------------------------------------------------------------------

// DownloadInfo

// optional string guid = 1;
inline bool DownloadInfo::has_guid() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void DownloadInfo::clear_guid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.guid_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& DownloadInfo::guid() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.DownloadInfo.guid)
  return _internal_guid();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void DownloadInfo::set_guid(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.guid_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:download_pb.DownloadInfo.guid)
}
inline ::std::string* PROTOBUF_NONNULL DownloadInfo::mutable_guid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_guid();
  // @@protoc_insertion_point(field_mutable:download_pb.DownloadInfo.guid)
  return _s;
}
inline const ::std::string& DownloadInfo::_internal_guid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.guid_.Get();
}
inline void DownloadInfo::_internal_set_guid(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.guid_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL DownloadInfo::_internal_mutable_guid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.guid_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE DownloadInfo::release_guid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.DownloadInfo.guid)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.guid_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.guid_.Set("", GetArena());
  }
  return released;
}
inline void DownloadInfo::set_allocated_guid(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.guid_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.guid_.IsDefault()) {
    _impl_.guid_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:download_pb.DownloadInfo.guid)
}

// optional int32 id = 2;
inline bool DownloadInfo::has_id() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void DownloadInfo::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::int32_t DownloadInfo::id() const {
  // @@protoc_insertion_point(field_get:download_pb.DownloadInfo.id)
  return _internal_id();
}
inline void DownloadInfo::set_id(::int32_t value) {
  _internal_set_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:download_pb.DownloadInfo.id)
}
inline ::int32_t DownloadInfo::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_;
}
inline void DownloadInfo::_internal_set_id(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_ = value;
}

// optional .download_pb.UkmInfo ukm_info = 3;
inline bool DownloadInfo::has_ukm_info() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.ukm_info_ != nullptr);
  return value;
}
inline void DownloadInfo::clear_ukm_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.ukm_info_ != nullptr) _impl_.ukm_info_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::download_pb::UkmInfo& DownloadInfo::_internal_ukm_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::download_pb::UkmInfo* p = _impl_.ukm_info_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::download_pb::UkmInfo>(&::download_pb::UkmInfo_globals_);
}
inline const ::download_pb::UkmInfo& DownloadInfo::ukm_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.DownloadInfo.ukm_info)
  return _internal_ukm_info();
}
inline void DownloadInfo::unsafe_arena_set_allocated_ukm_info(
    ::download_pb::UkmInfo* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.ukm_info_);
  }
  _impl_.ukm_info_ = reinterpret_cast<::download_pb::UkmInfo*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:download_pb.DownloadInfo.ukm_info)
}
inline ::download_pb::UkmInfo* PROTOBUF_NULLABLE DownloadInfo::release_ukm_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::download_pb::UkmInfo* released = _impl_.ukm_info_;
  _impl_.ukm_info_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::download_pb::UkmInfo* PROTOBUF_NULLABLE DownloadInfo::unsafe_arena_release_ukm_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.DownloadInfo.ukm_info)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::download_pb::UkmInfo* temp = _impl_.ukm_info_;
  _impl_.ukm_info_ = nullptr;
  return temp;
}
inline ::download_pb::UkmInfo* PROTOBUF_NONNULL DownloadInfo::_internal_mutable_ukm_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.ukm_info_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::download_pb::UkmInfo>(GetArena());
    _impl_.ukm_info_ = reinterpret_cast<::download_pb::UkmInfo*>(p);
  }
  return _impl_.ukm_info_;
}
inline ::download_pb::UkmInfo* PROTOBUF_NONNULL DownloadInfo::mutable_ukm_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::download_pb::UkmInfo* _msg = _internal_mutable_ukm_info();
  // @@protoc_insertion_point(field_mutable:download_pb.DownloadInfo.ukm_info)
  return _msg;
}
inline void DownloadInfo::set_allocated_ukm_info(::download_pb::UkmInfo* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.ukm_info_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.ukm_info_ = reinterpret_cast<::download_pb::UkmInfo*>(value);
  // @@protoc_insertion_point(field_set_allocated:download_pb.DownloadInfo.ukm_info)
}

// optional .download_pb.InProgressInfo in_progress_info = 4;
inline bool DownloadInfo::has_in_progress_info() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.in_progress_info_ != nullptr);
  return value;
}
inline void DownloadInfo::clear_in_progress_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.in_progress_info_ != nullptr) _impl_.in_progress_info_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::download_pb::InProgressInfo& DownloadInfo::_internal_in_progress_info() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::download_pb::InProgressInfo* p = _impl_.in_progress_info_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::download_pb::InProgressInfo>(&::download_pb::InProgressInfo_globals_);
}
inline const ::download_pb::InProgressInfo& DownloadInfo::in_progress_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.DownloadInfo.in_progress_info)
  return _internal_in_progress_info();
}
inline void DownloadInfo::unsafe_arena_set_allocated_in_progress_info(
    ::download_pb::InProgressInfo* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.in_progress_info_);
  }
  _impl_.in_progress_info_ = reinterpret_cast<::download_pb::InProgressInfo*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:download_pb.DownloadInfo.in_progress_info)
}
inline ::download_pb::InProgressInfo* PROTOBUF_NULLABLE DownloadInfo::release_in_progress_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::download_pb::InProgressInfo* released = _impl_.in_progress_info_;
  _impl_.in_progress_info_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::download_pb::InProgressInfo* PROTOBUF_NULLABLE DownloadInfo::unsafe_arena_release_in_progress_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:download_pb.DownloadInfo.in_progress_info)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::download_pb::InProgressInfo* temp = _impl_.in_progress_info_;
  _impl_.in_progress_info_ = nullptr;
  return temp;
}
inline ::download_pb::InProgressInfo* PROTOBUF_NONNULL DownloadInfo::_internal_mutable_in_progress_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.in_progress_info_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::download_pb::InProgressInfo>(GetArena());
    _impl_.in_progress_info_ = reinterpret_cast<::download_pb::InProgressInfo*>(p);
  }
  return _impl_.in_progress_info_;
}
inline ::download_pb::InProgressInfo* PROTOBUF_NONNULL DownloadInfo::mutable_in_progress_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::download_pb::InProgressInfo* _msg = _internal_mutable_in_progress_info();
  // @@protoc_insertion_point(field_mutable:download_pb.DownloadInfo.in_progress_info)
  return _msg;
}
inline void DownloadInfo::set_allocated_in_progress_info(::download_pb::InProgressInfo* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.in_progress_info_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.in_progress_info_ = reinterpret_cast<::download_pb::InProgressInfo*>(value);
  // @@protoc_insertion_point(field_set_allocated:download_pb.DownloadInfo.in_progress_info)
}

// -------------------------------------------------------------------

// DownloadDBEntry

// .download_pb.DownloadInfo download_info = 1;
inline bool DownloadDBEntry::has_download_info() const {
  return entry_case() == kDownloadInfo;
}
inline bool DownloadDBEntry::_internal_has_download_info() const {
  return entry_case() == kDownloadInfo;
}
inline void DownloadDBEntry::set_has_download_info() {
  _impl_._oneof_case_[0] = kDownloadInfo;
}
inline void DownloadDBEntry::clear_download_info() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (entry_case() == kDownloadInfo) {
    if (GetArena() == nullptr) {
      delete _impl_.entry_.download_info_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      if (_impl_.entry_.download_info_ != nullptr) {
        _impl_.entry_.download_info_->Clear();
      }
    }
    clear_has_entry();
  }
}
inline ::download_pb::DownloadInfo* PROTOBUF_NULLABLE DownloadDBEntry::release_download_info() {
  // @@protoc_insertion_point(field_release:download_pb.DownloadDBEntry.download_info)
  if (entry_case() == kDownloadInfo) {
    clear_has_entry();
    auto* temp = _impl_.entry_.download_info_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.entry_.download_info_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::download_pb::DownloadInfo& DownloadDBEntry::_internal_download_info() const {
  return entry_case() == kDownloadInfo ? static_cast<const ::download_pb::DownloadInfo&>(*_impl_.entry_.download_info_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::download_pb::DownloadInfo>(&::download_pb::DownloadInfo_globals_);
}
inline const ::download_pb::DownloadInfo& DownloadDBEntry::download_info() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:download_pb.DownloadDBEntry.download_info)
  return _internal_download_info();
}
inline ::download_pb::DownloadInfo* PROTOBUF_NULLABLE DownloadDBEntry::unsafe_arena_release_download_info() {
  // @@protoc_insertion_point(field_unsafe_arena_release:download_pb.DownloadDBEntry.download_info)
  if (entry_case() == kDownloadInfo) {
    clear_has_entry();
    auto* temp = _impl_.entry_.download_info_;
    _impl_.entry_.download_info_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void DownloadDBEntry::unsafe_arena_set_allocated_download_info(
    ::download_pb::DownloadInfo* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_entry();
  if (value) {
    set_has_download_info();
    _impl_.entry_.download_info_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:download_pb.DownloadDBEntry.download_info)
}
inline ::download_pb::DownloadInfo* PROTOBUF_NONNULL DownloadDBEntry::_internal_mutable_download_info() {
  if (entry_case() != kDownloadInfo) {
    clear_entry();
    set_has_download_info();
    _impl_.entry_.download_info_ = 
        ::google::protobuf::MessageLite::DefaultConstruct<::download_pb::DownloadInfo>(GetArena());
  }
  return _impl_.entry_.download_info_;
}
inline ::download_pb::DownloadInfo* PROTOBUF_NONNULL DownloadDBEntry::mutable_download_info()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::download_pb::DownloadInfo* _msg = _internal_mutable_download_info();
  // @@protoc_insertion_point(field_mutable:download_pb.DownloadDBEntry.download_info)
  return _msg;
}

inline bool DownloadDBEntry::has_entry() const {
  return entry_case() != ENTRY_NOT_SET;
}
inline void DownloadDBEntry::clear_has_entry() {
  _impl_._oneof_case_[0] = ENTRY_NOT_SET;
}
inline DownloadDBEntry::EntryCase DownloadDBEntry::entry_case() const {
  return DownloadDBEntry::EntryCase(_impl_._oneof_case_[0]);
}
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace download_pb


// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"
// clang-format on

#endif  // components_2fdownload_2fdatabase_2fproto_2fdownload_5fentry_2eproto_2epb_2eh
