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

#ifndef lens_5flatencies_5fmetadata_2eproto_2epb_2eh
#define lens_5flatencies_5fmetadata_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 "google/protobuf/generated_enum_util.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_lens_5flatencies_5fmetadata_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_lens_5flatencies_5fmetadata_2eproto {
  static const ::uint32_t offsets[];
};
namespace lens {
namespace proto {
namespace lens_latencies_metadata {
enum ChromeSpecificPhaseLatenciesMetadata_ImageType : int;
extern const uint32_t ChromeSpecificPhaseLatenciesMetadata_ImageType_internal_data_[];
enum ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType : int;
extern const uint32_t ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_internal_data_[];
class ChromeSpecificPhaseLatenciesMetadata;
struct ChromeSpecificPhaseLatenciesMetadataGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ChromeSpecificPhaseLatenciesMetadataGlobalsTypeInternal ChromeSpecificPhaseLatenciesMetadata_globals_;
extern const ::google::protobuf::internal::ClassDataLite ChromeSpecificPhaseLatenciesMetadata_class_data_;
#else
extern const ChromeSpecificPhaseLatenciesMetadataGlobalsTypeInternal ChromeSpecificPhaseLatenciesMetadata_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ChromeSpecificPhaseLatenciesMetadata_Phase;
struct ChromeSpecificPhaseLatenciesMetadata_PhaseGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ChromeSpecificPhaseLatenciesMetadata_PhaseGlobalsTypeInternal ChromeSpecificPhaseLatenciesMetadata_Phase_globals_;
extern const ::google::protobuf::internal::ClassDataLite ChromeSpecificPhaseLatenciesMetadata_Phase_class_data_;
#else
extern const ChromeSpecificPhaseLatenciesMetadata_PhaseGlobalsTypeInternal ChromeSpecificPhaseLatenciesMetadata_Phase_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData;
struct ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleDataGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleDataGlobalsTypeInternal ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData_globals_;
extern const ::google::protobuf::internal::ClassDataLite ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData_class_data_;
#else
extern const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleDataGlobalsTypeInternal ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData;
struct ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeDataGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeDataGlobalsTypeInternal ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData_globals_;
extern const ::google::protobuf::internal::ClassDataLite ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData_class_data_;
#else
extern const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeDataGlobalsTypeInternal ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp;
struct ChromeSpecificPhaseLatenciesMetadata_Phase_TimestampGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ChromeSpecificPhaseLatenciesMetadata_Phase_TimestampGlobalsTypeInternal ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp_globals_;
extern const ::google::protobuf::internal::ClassDataLite ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp_class_data_;
#else
extern const ChromeSpecificPhaseLatenciesMetadata_Phase_TimestampGlobalsTypeInternal ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
}  // namespace lens_latencies_metadata
}  // namespace proto
}  // namespace lens
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType_internal_data_>
    internal::EnumTraitsImpl::value<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType>;
template <>
internal::EnumTraitsT<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_internal_data_>
    internal::EnumTraitsImpl::value<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType>;
}  // namespace protobuf
}  // namespace google

namespace lens {
namespace proto {
namespace lens_latencies_metadata {
enum ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType : int {
  ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_UNKNOWN_PHASE = 0,
  ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_OVERALL_START = 1,
  ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_IMAGE_DOWNSCALE_START = 2,
  ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_IMAGE_DOWNSCALE_END = 3,
  ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_IMAGE_ENCODE_START = 4,
  ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_IMAGE_ENCODE_END = 5,
};

extern const uint32_t ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_internal_data_[];
inline constexpr ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_PhaseType_MIN =
    static_cast<ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType>(0);
inline constexpr ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_PhaseType_MAX =
    static_cast<ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType>(5);
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_IsValid(int value) {
  return 0 <= value && value <= 5;
}
inline constexpr int ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_PhaseType_ARRAYSIZE = 5 + 1;
const ::std::string& ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_Name(ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType value);
template <typename T>
const ::std::string& ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_Name(T value) {
  static_assert(::std::is_same<T, ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to PhaseType_Name().");
  return ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_Name(static_cast<ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType>(value));
}
bool ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_Parse(
    ::absl::string_view name, ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType* PROTOBUF_NONNULL value);
enum ChromeSpecificPhaseLatenciesMetadata_ImageType : int {
  ChromeSpecificPhaseLatenciesMetadata_ImageType_UNKNOWN = 0,
  ChromeSpecificPhaseLatenciesMetadata_ImageType_JPEG = 1,
  ChromeSpecificPhaseLatenciesMetadata_ImageType_PNG = 2,
  ChromeSpecificPhaseLatenciesMetadata_ImageType_WEBP = 3,
};

extern const uint32_t ChromeSpecificPhaseLatenciesMetadata_ImageType_internal_data_[];
inline constexpr ChromeSpecificPhaseLatenciesMetadata_ImageType ChromeSpecificPhaseLatenciesMetadata_ImageType_ImageType_MIN =
    static_cast<ChromeSpecificPhaseLatenciesMetadata_ImageType>(0);
inline constexpr ChromeSpecificPhaseLatenciesMetadata_ImageType ChromeSpecificPhaseLatenciesMetadata_ImageType_ImageType_MAX =
    static_cast<ChromeSpecificPhaseLatenciesMetadata_ImageType>(3);
inline bool ChromeSpecificPhaseLatenciesMetadata_ImageType_IsValid(int value) {
  return 0 <= value && value <= 3;
}
inline constexpr int ChromeSpecificPhaseLatenciesMetadata_ImageType_ImageType_ARRAYSIZE = 3 + 1;
const ::std::string& ChromeSpecificPhaseLatenciesMetadata_ImageType_Name(ChromeSpecificPhaseLatenciesMetadata_ImageType value);
template <typename T>
const ::std::string& ChromeSpecificPhaseLatenciesMetadata_ImageType_Name(T value) {
  static_assert(::std::is_same<T, ChromeSpecificPhaseLatenciesMetadata_ImageType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ImageType_Name().");
  return ChromeSpecificPhaseLatenciesMetadata_ImageType_Name(static_cast<ChromeSpecificPhaseLatenciesMetadata_ImageType>(value));
}
bool ChromeSpecificPhaseLatenciesMetadata_ImageType_Parse(
    ::absl::string_view name, ChromeSpecificPhaseLatenciesMetadata_ImageType* PROTOBUF_NONNULL value);
using ::google::protobuf::internal::generated_enum::AbslParseFlag;
using ::google::protobuf::internal::generated_enum::AbslUnparseFlag;

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


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

class  ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.Timestamp) */ {
 public:
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp() : ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp(nullptr) {}
  ~ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp() PROTOBUF_FINAL;

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

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

  inline ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp(const ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& from) : ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp(nullptr, from) {}
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp(ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp&& from) noexcept : ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp(nullptr, ::std::move(from)) {}
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& operator=(const ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& from) {
    CopyFrom(from);
    return *this;
  }
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& operator=(ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp&& 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 ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp>(&ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp_globals_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& a, ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* 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(ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp>(arena);
  }
  void CopyFrom(const ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& from);
  void MergeFrom(const ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& from) { ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::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(ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.Timestamp"; }

  explicit ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& from);
  ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp&& from) noexcept
      : ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp(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 {
    kSecondsFieldNumber = 1,
    kNanosFieldNumber = 2,
  };
  // optional int64 seconds = 1;
  bool has_seconds()
      const;
  void clear_seconds() ;
  ::int64_t seconds() const;
  void set_seconds(::int64_t value);

  private:
  ::int64_t _internal_seconds() const;
  void _internal_set_seconds(::int64_t value);

  public:
  // optional int32 nanos = 2;
  bool has_nanos()
      const;
  void clear_nanos() ;
  ::int32_t nanos() const;
  void set_nanos(::int32_t value);

  private:
  ::int32_t _internal_nanos() const;
  void _internal_set_nanos(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.Timestamp)
 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 ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t seconds_;
    ::int32_t nanos_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_lens_5flatencies_5fmetadata_2eproto;
};
// -------------------------------------------------------------------

class  ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageEncodeData) */ {
 public:
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData() : ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData(nullptr) {}
  ~ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData() PROTOBUF_FINAL;

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

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

  inline ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData(const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& from) : ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData(nullptr, from) {}
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData&& from) noexcept : ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData(nullptr, ::std::move(from)) {}
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& operator=(const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& from) {
    CopyFrom(from);
    return *this;
  }
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& operator=(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData&& 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 ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData>(&ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData_globals_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& a, ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* 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(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData>(arena);
  }
  void CopyFrom(const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& from);
  void MergeFrom(const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& from) { ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::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(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageEncodeData"; }

  explicit ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& from);
  ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData&& from) noexcept
      : ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData(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 {
    kEncodedImageSizeBytesFieldNumber = 2,
    kOriginalImageTypeFieldNumber = 1,
  };
  // optional int64 encoded_image_size_bytes = 2;
  bool has_encoded_image_size_bytes()
      const;
  void clear_encoded_image_size_bytes() ;
  ::int64_t encoded_image_size_bytes() const;
  void set_encoded_image_size_bytes(::int64_t value);

  private:
  ::int64_t _internal_encoded_image_size_bytes() const;
  void _internal_set_encoded_image_size_bytes(::int64_t value);

  public:
  // optional .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.ImageType original_image_type = 1;
  bool has_original_image_type()
      const;
  void clear_original_image_type() ;
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType original_image_type() const;
  void set_original_image_type(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType value);

  private:
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType _internal_original_image_type() const;
  void _internal_set_original_image_type(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType value);

  public:
  // @@protoc_insertion_point(class_scope:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageEncodeData)
 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 ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t encoded_image_size_bytes_;
    int original_image_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_lens_5flatencies_5fmetadata_2eproto;
};
// -------------------------------------------------------------------

class  ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageDownscaleData) */ {
 public:
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData() : ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData(nullptr) {}
  ~ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData() PROTOBUF_FINAL;

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

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

  inline ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData(const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& from) : ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData(nullptr, from) {}
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData&& from) noexcept : ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData(nullptr, ::std::move(from)) {}
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& operator=(const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& from) {
    CopyFrom(from);
    return *this;
  }
  inline ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& operator=(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData&& 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 ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData>(&ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData_globals_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& a, ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* 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(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData>(arena);
  }
  void CopyFrom(const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& from);
  void MergeFrom(const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& from) { ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::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(ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageDownscaleData"; }

  explicit ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& from);
  ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData&& from) noexcept
      : ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData(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 {
    kOriginalImageSizeFieldNumber = 1,
    kDownscaledImageByteSizeFieldNumber = 2,
  };
  // optional int64 original_image_size = 1;
  bool has_original_image_size()
      const;
  void clear_original_image_size() ;
  ::int64_t original_image_size() const;
  void set_original_image_size(::int64_t value);

  private:
  ::int64_t _internal_original_image_size() const;
  void _internal_set_original_image_size(::int64_t value);

  public:
  // optional int64 downscaled_image_byte_size = 2;
  bool has_downscaled_image_byte_size()
      const;
  void clear_downscaled_image_byte_size() ;
  ::int64_t downscaled_image_byte_size() const;
  void set_downscaled_image_byte_size(::int64_t value);

  private:
  ::int64_t _internal_downscaled_image_byte_size() const;
  void _internal_set_downscaled_image_byte_size(::int64_t value);

  public:
  // @@protoc_insertion_point(class_scope:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageDownscaleData)
 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 ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int64_t original_image_size_;
    ::int64_t downscaled_image_byte_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_lens_5flatencies_5fmetadata_2eproto;
};
// -------------------------------------------------------------------

class  ChromeSpecificPhaseLatenciesMetadata_Phase final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase) */ {
 public:
  inline ChromeSpecificPhaseLatenciesMetadata_Phase() : ChromeSpecificPhaseLatenciesMetadata_Phase(nullptr) {}
  ~ChromeSpecificPhaseLatenciesMetadata_Phase() PROTOBUF_FINAL;

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

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

  inline ChromeSpecificPhaseLatenciesMetadata_Phase(const ChromeSpecificPhaseLatenciesMetadata_Phase& from) : ChromeSpecificPhaseLatenciesMetadata_Phase(nullptr, from) {}
  inline ChromeSpecificPhaseLatenciesMetadata_Phase(ChromeSpecificPhaseLatenciesMetadata_Phase&& from) noexcept : ChromeSpecificPhaseLatenciesMetadata_Phase(nullptr, ::std::move(from)) {}
  inline ChromeSpecificPhaseLatenciesMetadata_Phase& operator=(const ChromeSpecificPhaseLatenciesMetadata_Phase& from) {
    CopyFrom(from);
    return *this;
  }
  inline ChromeSpecificPhaseLatenciesMetadata_Phase& operator=(ChromeSpecificPhaseLatenciesMetadata_Phase&& 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 ChromeSpecificPhaseLatenciesMetadata_Phase& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ChromeSpecificPhaseLatenciesMetadata_Phase>(&ChromeSpecificPhaseLatenciesMetadata_Phase_globals_);
  }
  enum PhaseDataCase {
    kImageDownscaleData = 3,
    kImageEncodeData = 4,
    PHASE_DATA_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(ChromeSpecificPhaseLatenciesMetadata_Phase& a, ChromeSpecificPhaseLatenciesMetadata_Phase& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ChromeSpecificPhaseLatenciesMetadata_Phase* 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(ChromeSpecificPhaseLatenciesMetadata_Phase* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ChromeSpecificPhaseLatenciesMetadata_Phase* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ChromeSpecificPhaseLatenciesMetadata_Phase>(arena);
  }
  void CopyFrom(const ChromeSpecificPhaseLatenciesMetadata_Phase& from);
  void MergeFrom(const ChromeSpecificPhaseLatenciesMetadata_Phase& from) { ChromeSpecificPhaseLatenciesMetadata_Phase::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(ChromeSpecificPhaseLatenciesMetadata_Phase* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase"; }

  explicit ChromeSpecificPhaseLatenciesMetadata_Phase(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ChromeSpecificPhaseLatenciesMetadata_Phase(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ChromeSpecificPhaseLatenciesMetadata_Phase& from);
  ChromeSpecificPhaseLatenciesMetadata_Phase(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ChromeSpecificPhaseLatenciesMetadata_Phase&& from) noexcept
      : ChromeSpecificPhaseLatenciesMetadata_Phase(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 ----------------------------------------------------
  using Timestamp = ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp;
  using ImageDownscaleData = ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData;
  using ImageEncodeData = ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData;
  using PhaseType = ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType;
  static constexpr PhaseType UNKNOWN_PHASE = ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_UNKNOWN_PHASE;
  static constexpr PhaseType OVERALL_START = ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_OVERALL_START;
  static constexpr PhaseType IMAGE_DOWNSCALE_START = ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_IMAGE_DOWNSCALE_START;
  static constexpr PhaseType IMAGE_DOWNSCALE_END = ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_IMAGE_DOWNSCALE_END;
  static constexpr PhaseType IMAGE_ENCODE_START = ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_IMAGE_ENCODE_START;
  static constexpr PhaseType IMAGE_ENCODE_END = ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_IMAGE_ENCODE_END;
  static inline bool PhaseType_IsValid(int value) {
    return ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_IsValid(value);
  }
  static constexpr PhaseType PhaseType_MIN = ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_PhaseType_MIN;
  static constexpr PhaseType PhaseType_MAX = ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_PhaseType_MAX;
  static constexpr int PhaseType_ARRAYSIZE = ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_PhaseType_ARRAYSIZE;
  template <typename T>
  static inline const ::std::string& PhaseType_Name(T value) {
    return ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_Name(value);
  }
  static inline bool PhaseType_Parse(
      ::absl::string_view name, PhaseType* PROTOBUF_NONNULL value) {
    return ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kTimestampFieldNumber = 2,
    kPhaseTypeFieldNumber = 1,
    kImageDownscaleDataFieldNumber = 3,
    kImageEncodeDataFieldNumber = 4,
  };
  // optional .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.Timestamp timestamp = 2;
  bool has_timestamp()
      const;
  void clear_timestamp() ;
  const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& timestamp() const;
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NULLABLE release_timestamp();
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NONNULL mutable_timestamp();
  void set_allocated_timestamp(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_timestamp(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NULLABLE value);
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NULLABLE unsafe_arena_release_timestamp();

  private:
  const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& _internal_timestamp() const;
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NONNULL _internal_mutable_timestamp();

  public:
  // optional .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.PhaseType phase_type = 1;
  bool has_phase_type()
      const;
  void clear_phase_type() ;
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType phase_type() const;
  void set_phase_type(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType value);

  private:
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType _internal_phase_type() const;
  void _internal_set_phase_type(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType value);

  public:
  // .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageDownscaleData image_downscale_data = 3;
  bool has_image_downscale_data()
      const;
  private:
  bool _internal_has_image_downscale_data() const;

  public:
  void clear_image_downscale_data() ;
  const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& image_downscale_data() const;
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NULLABLE release_image_downscale_data();
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NONNULL mutable_image_downscale_data();
  void set_allocated_image_downscale_data(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_image_downscale_data(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NULLABLE value);
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NULLABLE unsafe_arena_release_image_downscale_data();

  private:
  const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& _internal_image_downscale_data() const;
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NONNULL _internal_mutable_image_downscale_data();

  public:
  // .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageEncodeData image_encode_data = 4;
  bool has_image_encode_data()
      const;
  private:
  bool _internal_has_image_encode_data() const;

  public:
  void clear_image_encode_data() ;
  const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& image_encode_data() const;
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NULLABLE release_image_encode_data();
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NONNULL mutable_image_encode_data();
  void set_allocated_image_encode_data(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_image_encode_data(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NULLABLE value);
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NULLABLE unsafe_arena_release_image_encode_data();

  private:
  const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& _internal_image_encode_data() const;
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NONNULL _internal_mutable_image_encode_data();

  public:
  void clear_phase_data();
  PhaseDataCase phase_data_case() const;
  // @@protoc_insertion_point(class_scope:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase)
 private:
  class _Internal;
  void set_has_image_downscale_data();
  void set_has_image_encode_data();
  inline bool has_phase_data() const;
  inline void clear_has_phase_data();
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 4,
                          4, 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 ChromeSpecificPhaseLatenciesMetadata_Phase& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NULLABLE timestamp_;
    int phase_type_;
    union PhaseDataUnion {
      constexpr PhaseDataUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NULLABLE image_downscale_data_;
      ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NULLABLE image_encode_data_;
    } phase_data_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_lens_5flatencies_5fmetadata_2eproto;
};
// -------------------------------------------------------------------

class  ChromeSpecificPhaseLatenciesMetadata final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata) */ {
 public:
  inline ChromeSpecificPhaseLatenciesMetadata() : ChromeSpecificPhaseLatenciesMetadata(nullptr) {}
  ~ChromeSpecificPhaseLatenciesMetadata() PROTOBUF_FINAL;

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

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

  inline ChromeSpecificPhaseLatenciesMetadata(const ChromeSpecificPhaseLatenciesMetadata& from) : ChromeSpecificPhaseLatenciesMetadata(nullptr, from) {}
  inline ChromeSpecificPhaseLatenciesMetadata(ChromeSpecificPhaseLatenciesMetadata&& from) noexcept : ChromeSpecificPhaseLatenciesMetadata(nullptr, ::std::move(from)) {}
  inline ChromeSpecificPhaseLatenciesMetadata& operator=(const ChromeSpecificPhaseLatenciesMetadata& from) {
    CopyFrom(from);
    return *this;
  }
  inline ChromeSpecificPhaseLatenciesMetadata& operator=(ChromeSpecificPhaseLatenciesMetadata&& 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 ChromeSpecificPhaseLatenciesMetadata& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ChromeSpecificPhaseLatenciesMetadata>(&ChromeSpecificPhaseLatenciesMetadata_globals_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(ChromeSpecificPhaseLatenciesMetadata& a, ChromeSpecificPhaseLatenciesMetadata& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ChromeSpecificPhaseLatenciesMetadata* 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(ChromeSpecificPhaseLatenciesMetadata* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ChromeSpecificPhaseLatenciesMetadata* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ChromeSpecificPhaseLatenciesMetadata>(arena);
  }
  void CopyFrom(const ChromeSpecificPhaseLatenciesMetadata& from);
  void MergeFrom(const ChromeSpecificPhaseLatenciesMetadata& from) { ChromeSpecificPhaseLatenciesMetadata::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(ChromeSpecificPhaseLatenciesMetadata* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata"; }

  explicit ChromeSpecificPhaseLatenciesMetadata(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ChromeSpecificPhaseLatenciesMetadata(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ChromeSpecificPhaseLatenciesMetadata& from);
  ChromeSpecificPhaseLatenciesMetadata(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ChromeSpecificPhaseLatenciesMetadata&& from) noexcept
      : ChromeSpecificPhaseLatenciesMetadata(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 ----------------------------------------------------
  using Phase = ChromeSpecificPhaseLatenciesMetadata_Phase;
  using ImageType = ChromeSpecificPhaseLatenciesMetadata_ImageType;
  static constexpr ImageType UNKNOWN = ChromeSpecificPhaseLatenciesMetadata_ImageType_UNKNOWN;
  static constexpr ImageType JPEG = ChromeSpecificPhaseLatenciesMetadata_ImageType_JPEG;
  static constexpr ImageType PNG = ChromeSpecificPhaseLatenciesMetadata_ImageType_PNG;
  static constexpr ImageType WEBP = ChromeSpecificPhaseLatenciesMetadata_ImageType_WEBP;
  static inline bool ImageType_IsValid(int value) {
    return ChromeSpecificPhaseLatenciesMetadata_ImageType_IsValid(value);
  }
  static constexpr ImageType ImageType_MIN = ChromeSpecificPhaseLatenciesMetadata_ImageType_ImageType_MIN;
  static constexpr ImageType ImageType_MAX = ChromeSpecificPhaseLatenciesMetadata_ImageType_ImageType_MAX;
  static constexpr int ImageType_ARRAYSIZE = ChromeSpecificPhaseLatenciesMetadata_ImageType_ImageType_ARRAYSIZE;
  template <typename T>
  static inline const ::std::string& ImageType_Name(T value) {
    return ChromeSpecificPhaseLatenciesMetadata_ImageType_Name(value);
  }
  static inline bool ImageType_Parse(
      ::absl::string_view name, ImageType* PROTOBUF_NONNULL value) {
    return ChromeSpecificPhaseLatenciesMetadata_ImageType_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kPhaseFieldNumber = 1,
  };
  // repeated .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase phase = 1;
  int phase_size()
      const;
  private:
  int _internal_phase_size() const;

  public:
  void clear_phase() ;
  const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase& phase(int index) const;
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase* PROTOBUF_NONNULL mutable_phase(int index);
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase* PROTOBUF_NONNULL add_phase();
  const ::google::protobuf::RepeatedPtrField<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase>&
  phase() const;
  ::google::protobuf::RepeatedPtrField<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase>* PROTOBUF_NONNULL
  mutable_phase();

  private:
  const ::google::protobuf::RepeatedPtrField<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase>& _internal_phase() const;
  ::google::protobuf::RepeatedPtrField<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase>* PROTOBUF_NONNULL _internal_mutable_phase();

  public:
  // @@protoc_insertion_point(class_scope:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata)
 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 ChromeSpecificPhaseLatenciesMetadata& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase > phase_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_lens_5flatencies_5fmetadata_2eproto;
};

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




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


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

// ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp

// optional int64 seconds = 1;
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::has_seconds() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::clear_seconds() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.seconds_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int64_t ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::seconds() const {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.Timestamp.seconds)
  return _internal_seconds();
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::set_seconds(::int64_t value) {
  _internal_set_seconds(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.Timestamp.seconds)
}
inline ::int64_t ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::_internal_seconds() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.seconds_;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::_internal_set_seconds(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.seconds_ = value;
}

// optional int32 nanos = 2;
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::has_nanos() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::clear_nanos() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nanos_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::int32_t ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::nanos() const {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.Timestamp.nanos)
  return _internal_nanos();
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::set_nanos(::int32_t value) {
  _internal_set_nanos(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.Timestamp.nanos)
}
inline ::int32_t ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::_internal_nanos() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.nanos_;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp::_internal_set_nanos(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nanos_ = value;
}

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

// ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData

// optional int64 original_image_size = 1;
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::has_original_image_size() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::clear_original_image_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.original_image_size_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int64_t ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::original_image_size() const {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageDownscaleData.original_image_size)
  return _internal_original_image_size();
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::set_original_image_size(::int64_t value) {
  _internal_set_original_image_size(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageDownscaleData.original_image_size)
}
inline ::int64_t ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::_internal_original_image_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.original_image_size_;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::_internal_set_original_image_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.original_image_size_ = value;
}

// optional int64 downscaled_image_byte_size = 2;
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::has_downscaled_image_byte_size() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::clear_downscaled_image_byte_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.downscaled_image_byte_size_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::int64_t ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::downscaled_image_byte_size() const {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageDownscaleData.downscaled_image_byte_size)
  return _internal_downscaled_image_byte_size();
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::set_downscaled_image_byte_size(::int64_t value) {
  _internal_set_downscaled_image_byte_size(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageDownscaleData.downscaled_image_byte_size)
}
inline ::int64_t ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::_internal_downscaled_image_byte_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.downscaled_image_byte_size_;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData::_internal_set_downscaled_image_byte_size(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.downscaled_image_byte_size_ = value;
}

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

// ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData

// optional .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.ImageType original_image_type = 1;
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::has_original_image_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::clear_original_image_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.original_image_type_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::original_image_type() const {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageEncodeData.original_image_type)
  return _internal_original_image_type();
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::set_original_image_type(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType value) {
  _internal_set_original_image_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageEncodeData.original_image_type)
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::_internal_original_image_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType>(_impl_.original_image_type_);
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::_internal_set_original_image_type(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);

                                          assert(::google::protobuf::internal::ValidateEnum(
                                              value, ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType_internal_data_));
                                          _impl_.original_image_type_ = value;
}

// optional int64 encoded_image_size_bytes = 2;
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::has_encoded_image_size_bytes() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::clear_encoded_image_size_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.encoded_image_size_bytes_ = ::int64_t{0};
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::int64_t ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::encoded_image_size_bytes() const {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageEncodeData.encoded_image_size_bytes)
  return _internal_encoded_image_size_bytes();
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::set_encoded_image_size_bytes(::int64_t value) {
  _internal_set_encoded_image_size_bytes(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageEncodeData.encoded_image_size_bytes)
}
inline ::int64_t ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::_internal_encoded_image_size_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.encoded_image_size_bytes_;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData::_internal_set_encoded_image_size_bytes(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.encoded_image_size_bytes_ = value;
}

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

// ChromeSpecificPhaseLatenciesMetadata_Phase

// optional .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.PhaseType phase_type = 1;
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase::has_phase_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::clear_phase_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.phase_type_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType ChromeSpecificPhaseLatenciesMetadata_Phase::phase_type() const {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.phase_type)
  return _internal_phase_type();
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::set_phase_type(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType value) {
  _internal_set_phase_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.phase_type)
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType ChromeSpecificPhaseLatenciesMetadata_Phase::_internal_phase_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType>(_impl_.phase_type_);
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::_internal_set_phase_type(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);

                                          assert(::google::protobuf::internal::ValidateEnum(
                                              value, ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_internal_data_));
                                          _impl_.phase_type_ = value;
}

// optional .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.Timestamp timestamp = 2;
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase::has_timestamp() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.timestamp_ != nullptr);
  return value;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::clear_timestamp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.timestamp_ != nullptr) _impl_.timestamp_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& ChromeSpecificPhaseLatenciesMetadata_Phase::_internal_timestamp() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* p = _impl_.timestamp_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp>(&::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp_globals_);
}
inline const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp& ChromeSpecificPhaseLatenciesMetadata_Phase::timestamp() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.timestamp)
  return _internal_timestamp();
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::unsafe_arena_set_allocated_timestamp(
    ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.timestamp_);
  }
  _impl_.timestamp_ = reinterpret_cast<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.timestamp)
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NULLABLE ChromeSpecificPhaseLatenciesMetadata_Phase::release_timestamp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* released = _impl_.timestamp_;
  _impl_.timestamp_ = 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 ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NULLABLE ChromeSpecificPhaseLatenciesMetadata_Phase::unsafe_arena_release_timestamp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.timestamp)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* temp = _impl_.timestamp_;
  _impl_.timestamp_ = nullptr;
  return temp;
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NONNULL ChromeSpecificPhaseLatenciesMetadata_Phase::_internal_mutable_timestamp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.timestamp_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp>(GetArena());
    _impl_.timestamp_ = reinterpret_cast<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp*>(p);
  }
  return _impl_.timestamp_;
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* PROTOBUF_NONNULL ChromeSpecificPhaseLatenciesMetadata_Phase::mutable_timestamp()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* _msg = _internal_mutable_timestamp();
  // @@protoc_insertion_point(field_mutable:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.timestamp)
  return _msg;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::set_allocated_timestamp(::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp* 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_.timestamp_);
  }

  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], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.timestamp_ = reinterpret_cast<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.timestamp)
}

// .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageDownscaleData image_downscale_data = 3;
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase::has_image_downscale_data() const {
  return phase_data_case() == kImageDownscaleData;
}
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase::_internal_has_image_downscale_data() const {
  return phase_data_case() == kImageDownscaleData;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::set_has_image_downscale_data() {
  _impl_._oneof_case_[0] = kImageDownscaleData;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::clear_image_downscale_data() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (phase_data_case() == kImageDownscaleData) {
    if (GetArena() == nullptr) {
      delete _impl_.phase_data_.image_downscale_data_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      if (_impl_.phase_data_.image_downscale_data_ != nullptr) {
        _impl_.phase_data_.image_downscale_data_->Clear();
      }
    }
    clear_has_phase_data();
  }
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NULLABLE ChromeSpecificPhaseLatenciesMetadata_Phase::release_image_downscale_data() {
  // @@protoc_insertion_point(field_release:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.image_downscale_data)
  if (phase_data_case() == kImageDownscaleData) {
    clear_has_phase_data();
    auto* temp = _impl_.phase_data_.image_downscale_data_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.phase_data_.image_downscale_data_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& ChromeSpecificPhaseLatenciesMetadata_Phase::_internal_image_downscale_data() const {
  return phase_data_case() == kImageDownscaleData ? static_cast<const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData&>(*_impl_.phase_data_.image_downscale_data_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData>(&::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData_globals_);
}
inline const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData& ChromeSpecificPhaseLatenciesMetadata_Phase::image_downscale_data() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.image_downscale_data)
  return _internal_image_downscale_data();
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NULLABLE ChromeSpecificPhaseLatenciesMetadata_Phase::unsafe_arena_release_image_downscale_data() {
  // @@protoc_insertion_point(field_unsafe_arena_release:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.image_downscale_data)
  if (phase_data_case() == kImageDownscaleData) {
    clear_has_phase_data();
    auto* temp = _impl_.phase_data_.image_downscale_data_;
    _impl_.phase_data_.image_downscale_data_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::unsafe_arena_set_allocated_image_downscale_data(
    ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* 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_phase_data();
  if (value) {
    set_has_image_downscale_data();
    _impl_.phase_data_.image_downscale_data_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.image_downscale_data)
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NONNULL ChromeSpecificPhaseLatenciesMetadata_Phase::_internal_mutable_image_downscale_data() {
  if (phase_data_case() != kImageDownscaleData) {
    clear_phase_data();
    set_has_image_downscale_data();
    _impl_.phase_data_.image_downscale_data_ = 
        ::google::protobuf::MessageLite::DefaultConstruct<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData>(GetArena());
  }
  return _impl_.phase_data_.image_downscale_data_;
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* PROTOBUF_NONNULL ChromeSpecificPhaseLatenciesMetadata_Phase::mutable_image_downscale_data()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageDownscaleData* _msg = _internal_mutable_image_downscale_data();
  // @@protoc_insertion_point(field_mutable:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.image_downscale_data)
  return _msg;
}

// .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.ImageEncodeData image_encode_data = 4;
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase::has_image_encode_data() const {
  return phase_data_case() == kImageEncodeData;
}
inline bool ChromeSpecificPhaseLatenciesMetadata_Phase::_internal_has_image_encode_data() const {
  return phase_data_case() == kImageEncodeData;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::set_has_image_encode_data() {
  _impl_._oneof_case_[0] = kImageEncodeData;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::clear_image_encode_data() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (phase_data_case() == kImageEncodeData) {
    if (GetArena() == nullptr) {
      delete _impl_.phase_data_.image_encode_data_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      if (_impl_.phase_data_.image_encode_data_ != nullptr) {
        _impl_.phase_data_.image_encode_data_->Clear();
      }
    }
    clear_has_phase_data();
  }
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NULLABLE ChromeSpecificPhaseLatenciesMetadata_Phase::release_image_encode_data() {
  // @@protoc_insertion_point(field_release:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.image_encode_data)
  if (phase_data_case() == kImageEncodeData) {
    clear_has_phase_data();
    auto* temp = _impl_.phase_data_.image_encode_data_;
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.phase_data_.image_encode_data_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& ChromeSpecificPhaseLatenciesMetadata_Phase::_internal_image_encode_data() const {
  return phase_data_case() == kImageEncodeData ? static_cast<const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData&>(*_impl_.phase_data_.image_encode_data_)
                     : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData>(&::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData_globals_);
}
inline const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData& ChromeSpecificPhaseLatenciesMetadata_Phase::image_encode_data() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.image_encode_data)
  return _internal_image_encode_data();
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NULLABLE ChromeSpecificPhaseLatenciesMetadata_Phase::unsafe_arena_release_image_encode_data() {
  // @@protoc_insertion_point(field_unsafe_arena_release:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.image_encode_data)
  if (phase_data_case() == kImageEncodeData) {
    clear_has_phase_data();
    auto* temp = _impl_.phase_data_.image_encode_data_;
    _impl_.phase_data_.image_encode_data_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::unsafe_arena_set_allocated_image_encode_data(
    ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* 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_phase_data();
  if (value) {
    set_has_image_encode_data();
    _impl_.phase_data_.image_encode_data_ = value;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.image_encode_data)
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NONNULL ChromeSpecificPhaseLatenciesMetadata_Phase::_internal_mutable_image_encode_data() {
  if (phase_data_case() != kImageEncodeData) {
    clear_phase_data();
    set_has_image_encode_data();
    _impl_.phase_data_.image_encode_data_ = 
        ::google::protobuf::MessageLite::DefaultConstruct<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData>(GetArena());
  }
  return _impl_.phase_data_.image_encode_data_;
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* PROTOBUF_NONNULL ChromeSpecificPhaseLatenciesMetadata_Phase::mutable_image_encode_data()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_ImageEncodeData* _msg = _internal_mutable_image_encode_data();
  // @@protoc_insertion_point(field_mutable:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase.image_encode_data)
  return _msg;
}

inline bool ChromeSpecificPhaseLatenciesMetadata_Phase::has_phase_data() const {
  return phase_data_case() != PHASE_DATA_NOT_SET;
}
inline void ChromeSpecificPhaseLatenciesMetadata_Phase::clear_has_phase_data() {
  _impl_._oneof_case_[0] = PHASE_DATA_NOT_SET;
}
inline ChromeSpecificPhaseLatenciesMetadata_Phase::PhaseDataCase ChromeSpecificPhaseLatenciesMetadata_Phase::phase_data_case() const {
  return ChromeSpecificPhaseLatenciesMetadata_Phase::PhaseDataCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

// ChromeSpecificPhaseLatenciesMetadata

// repeated .lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.Phase phase = 1;
inline int ChromeSpecificPhaseLatenciesMetadata::_internal_phase_size() const {
  return _internal_phase().size();
}
inline int ChromeSpecificPhaseLatenciesMetadata::phase_size() const {
  return _internal_phase_size();
}
inline void ChromeSpecificPhaseLatenciesMetadata::clear_phase() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.phase_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase& ChromeSpecificPhaseLatenciesMetadata::phase(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.phase)
  return _internal_phase().Get(index);
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase* PROTOBUF_NONNULL ChromeSpecificPhaseLatenciesMetadata::mutable_phase(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.phase)
  return _internal_mutable_phase()->Mutable(index);
}
inline ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase* PROTOBUF_NONNULL ChromeSpecificPhaseLatenciesMetadata::add_phase()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase* _add =
      _internal_mutable_phase()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.phase)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase>& ChromeSpecificPhaseLatenciesMetadata::phase() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.phase)
  return _internal_phase();
}
inline ::google::protobuf::RepeatedPtrField<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase>* PROTOBUF_NONNULL
ChromeSpecificPhaseLatenciesMetadata::mutable_phase() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:lens.proto.lens_latencies_metadata.ChromeSpecificPhaseLatenciesMetadata.phase)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_phase();
}
inline const ::google::protobuf::RepeatedPtrField<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase>&
ChromeSpecificPhaseLatenciesMetadata::_internal_phase() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.phase_;
}
inline ::google::protobuf::RepeatedPtrField<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase>* PROTOBUF_NONNULL
ChromeSpecificPhaseLatenciesMetadata::_internal_mutable_phase() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.phase_;
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace lens_latencies_metadata
}  // namespace proto
}  // namespace lens


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType> : std::true_type {};
template <>
struct internal::LiteEnumFuncs<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType> {
  static constexpr bool kIsDefined = true;
  static constexpr auto kParseFunc = ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_Parse;
  static constexpr auto kNameFunc = ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_Phase_PhaseType_Name<int>;
};
template <>
struct is_proto_enum<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType> : std::true_type {};
template <>
struct internal::LiteEnumFuncs<::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType> {
  static constexpr bool kIsDefined = true;
  static constexpr auto kParseFunc = ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType_Parse;
  static constexpr auto kNameFunc = ::lens::proto::lens_latencies_metadata::ChromeSpecificPhaseLatenciesMetadata_ImageType_Name<int>;
};

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

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

#endif  // lens_5flatencies_5fmetadata_2eproto_2epb_2eh
