_ZN10json_proto18JsonProtoConverter11AppendArrayERKNS_10ArrayValueE:
   21|    795|void JsonProtoConverter::AppendArray(const ArrayValue& array_value) {
   22|    795|  data_ << '[';
   23|    795|  bool need_comma = false;
   24|  5.10k|  for (const auto& value : array_value.value()) {
  ------------------
  |  Branch (24:26): [True: 5.10k, False: 795]
  ------------------
   25|       |    // Trailing comma inside of an array makes JSON invalid, avoid adding that.
   26|  5.10k|    if (need_comma)
  ------------------
  |  Branch (26:9): [True: 4.69k, False: 412]
  ------------------
   27|  4.69k|      data_ << ',';
   28|    412|    else
   29|    412|      need_comma = true;
   30|       |
   31|  5.10k|    AppendValue(value);
   32|  5.10k|  }
   33|    795|  data_ << ']';
   34|    795|}
_ZN10json_proto18JsonProtoConverter12AppendNumberERKNS_11NumberValueE:
   36|  1.55k|void JsonProtoConverter::AppendNumber(const NumberValue& number_value) {
   37|  1.55k|  if (number_value.has_float_value()) {
  ------------------
  |  Branch (37:7): [True: 409, False: 1.14k]
  ------------------
   38|    409|    data_ << number_value.float_value().value();
   39|  1.14k|  } else if (number_value.has_exponent_value()) {
  ------------------
  |  Branch (39:14): [True: 445, False: 698]
  ------------------
   40|    445|    auto value = number_value.exponent_value();
   41|    445|    data_ << value.base();
   42|    445|    data_ << (value.use_uppercase() ? 'E' : 'e');
  ------------------
  |  Branch (42:15): [True: 270, False: 175]
  ------------------
   43|    445|    data_ << value.exponent();
   44|    698|  } else if (number_value.has_exponent_frac_value()) {
  ------------------
  |  Branch (44:14): [True: 231, False: 467]
  ------------------
   45|    231|    auto value = number_value.exponent_value();
   46|    231|    data_ << value.base();
   47|    231|    data_ << (value.use_uppercase() ? 'E' : 'e');
  ------------------
  |  Branch (47:15): [True: 0, False: 231]
  ------------------
   48|    231|    data_ << value.exponent();
   49|    467|  } else {
   50|    467|    data_ << number_value.integer_value().value();
   51|    467|  }
   52|  1.55k|}
_ZN10json_proto18JsonProtoConverter12AppendObjectERKNS_10JsonObjectE:
   54|  3.76k|void JsonProtoConverter::AppendObject(const JsonObject& json_object) {
   55|  3.76k|  data_ << '{' << '"' << json_object.name() << '"' << ':';
   56|  3.76k|  AppendValue(json_object.value());
   57|  3.76k|  data_ << '}';
   58|  3.76k|}
_ZN10json_proto18JsonProtoConverter11AppendValueERKNS_9JsonValueE:
   60|  8.87k|void JsonProtoConverter::AppendValue(const JsonValue& json_value) {
   61|  8.87k|  if (json_value.has_object_value()) {
  ------------------
  |  Branch (61:7): [True: 748, False: 8.12k]
  ------------------
   62|    748|    AppendObject(json_value.object_value());
   63|  8.12k|  } else if (json_value.has_array_value()) {
  ------------------
  |  Branch (63:14): [True: 795, False: 7.33k]
  ------------------
   64|    795|    AppendArray(json_value.array_value());
   65|  7.33k|  } else if (json_value.has_number_value()) {
  ------------------
  |  Branch (65:14): [True: 1.55k, False: 5.77k]
  ------------------
   66|  1.55k|    AppendNumber(json_value.number_value());
   67|  5.77k|  } else if (json_value.has_string_value()) {
  ------------------
  |  Branch (67:14): [True: 631, False: 5.14k]
  ------------------
   68|    631|    data_ << '"' << json_value.string_value().value() << '"';
   69|  5.14k|  } else if (json_value.has_boolean_value()) {
  ------------------
  |  Branch (69:14): [True: 203, False: 4.94k]
  ------------------
   70|    203|    data_ << (json_value.boolean_value().value() ? "true" : "false");
  ------------------
  |  Branch (70:15): [True: 183, False: 20]
  ------------------
   71|  4.94k|  } else {
   72|  4.94k|    data_ << "null";
   73|  4.94k|  }
   74|  8.87k|}
_ZN10json_proto18JsonProtoConverter7ConvertERKNS_10JsonObjectE:
   76|  3.01k|std::string JsonProtoConverter::Convert(const JsonObject& json_object) {
   77|  3.01k|  AppendObject(json_object);
   78|  3.01k|  return data_.str();
   79|  3.01k|}

_ZN6google8protobuf5Arena21CreateMessageInternalIN10json_proto10JsonObjectEEEPT_PS1_:
  551|  4.70k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  4.70k|    static_assert(
  553|  4.70k|        InternalHelper<T>::is_arena_constructable::value,
  554|  4.70k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  4.70k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 4.70k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  4.70k|      return InternalHelper<T>::New();
  559|  4.70k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  4.70k|  }
_ZN6google8protobuf5Arena14InternalHelperIN10json_proto10JsonObjectEE3NewEv:
  487|  4.70k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  4.70k|      return new T(nullptr);
  489|  4.70k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN10json_proto9JsonValueEEEPT_PS1_:
  551|  11.9k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  11.9k|    static_assert(
  553|  11.9k|        InternalHelper<T>::is_arena_constructable::value,
  554|  11.9k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  11.9k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 11.9k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  11.9k|      return InternalHelper<T>::New();
  559|  11.9k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  11.9k|  }
_ZN6google8protobuf5Arena14InternalHelperIN10json_proto9JsonValueEE3NewEv:
  487|  11.9k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  11.9k|      return new T(nullptr);
  489|  11.9k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN10json_proto10ArrayValueEEEPT_PS1_:
  551|  1.13k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  1.13k|    static_assert(
  553|  1.13k|        InternalHelper<T>::is_arena_constructable::value,
  554|  1.13k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  1.13k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 1.13k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  1.13k|      return InternalHelper<T>::New();
  559|  1.13k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  1.13k|  }
_ZN6google8protobuf5Arena14InternalHelperIN10json_proto10ArrayValueEE3NewEv:
  487|  1.13k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  1.13k|      return new T(nullptr);
  489|  1.13k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN10json_proto13NumberIntegerEEEPT_PS1_:
  551|  2.32k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  2.32k|    static_assert(
  553|  2.32k|        InternalHelper<T>::is_arena_constructable::value,
  554|  2.32k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  2.32k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 2.32k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  2.32k|      return InternalHelper<T>::New();
  559|  2.32k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  2.32k|  }
_ZN6google8protobuf5Arena14InternalHelperIN10json_proto13NumberIntegerEE3NewEv:
  487|  2.32k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  2.32k|      return new T(nullptr);
  489|  2.32k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN10json_proto11NumberFloatEEEPT_PS1_:
  551|    492|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|    492|    static_assert(
  553|    492|        InternalHelper<T>::is_arena_constructable::value,
  554|    492|        "CreateMessage can only construct types that are ArenaConstructable");
  555|    492|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 492, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|    492|      return InternalHelper<T>::New();
  559|    492|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|    492|  }
_ZN6google8protobuf5Arena14InternalHelperIN10json_proto11NumberFloatEE3NewEv:
  487|    492|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|    492|      return new T(nullptr);
  489|    492|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN10json_proto14NumberExponentEEEPT_PS1_:
  551|    609|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|    609|    static_assert(
  553|    609|        InternalHelper<T>::is_arena_constructable::value,
  554|    609|        "CreateMessage can only construct types that are ArenaConstructable");
  555|    609|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 609, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|    609|      return InternalHelper<T>::New();
  559|    609|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|    609|  }
_ZN6google8protobuf5Arena14InternalHelperIN10json_proto14NumberExponentEE3NewEv:
  487|    609|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|    609|      return new T(nullptr);
  489|    609|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN10json_proto18NumberExponentFracEEEPT_PS1_:
  551|    298|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|    298|    static_assert(
  553|    298|        InternalHelper<T>::is_arena_constructable::value,
  554|    298|        "CreateMessage can only construct types that are ArenaConstructable");
  555|    298|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 298, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|    298|      return InternalHelper<T>::New();
  559|    298|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|    298|  }
_ZN6google8protobuf5Arena14InternalHelperIN10json_proto18NumberExponentFracEE3NewEv:
  487|    298|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|    298|      return new T(nullptr);
  489|    298|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN10json_proto11NumberValueEEEPT_PS1_:
  551|  2.11k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|  2.11k|    static_assert(
  553|  2.11k|        InternalHelper<T>::is_arena_constructable::value,
  554|  2.11k|        "CreateMessage can only construct types that are ArenaConstructable");
  555|  2.11k|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 2.11k, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|  2.11k|      return InternalHelper<T>::New();
  559|  2.11k|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|  2.11k|  }
_ZN6google8protobuf5Arena14InternalHelperIN10json_proto11NumberValueEE3NewEv:
  487|  2.11k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|  2.11k|      return new T(nullptr);
  489|  2.11k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN10json_proto11StringValueEEEPT_PS1_:
  551|    810|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|    810|    static_assert(
  553|    810|        InternalHelper<T>::is_arena_constructable::value,
  554|    810|        "CreateMessage can only construct types that are ArenaConstructable");
  555|    810|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 810, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|    810|      return InternalHelper<T>::New();
  559|    810|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|    810|  }
_ZN6google8protobuf5Arena14InternalHelperIN10json_proto11StringValueEE3NewEv:
  487|    810|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|    810|      return new T(nullptr);
  489|    810|    }
_ZN6google8protobuf5Arena21CreateMessageInternalIN10json_proto12BooleanValueEEEPT_PS1_:
  551|    358|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  552|    358|    static_assert(
  553|    358|        InternalHelper<T>::is_arena_constructable::value,
  554|    358|        "CreateMessage can only construct types that are ArenaConstructable");
  555|    358|    if (arena == nullptr) {
  ------------------
  |  Branch (555:9): [True: 358, False: 0]
  ------------------
  556|       |      // Generated arena constructor T(Arena*) is protected. Call via
  557|       |      // InternalHelper.
  558|    358|      return InternalHelper<T>::New();
  559|    358|    } else {
  560|      0|      return arena->DoCreateMessage<T>();
  561|      0|    }
  562|    358|  }
_ZN6google8protobuf5Arena14InternalHelperIN10json_proto12BooleanValueEE3NewEv:
  487|    358|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  488|    358|      return new T(nullptr);
  489|    358|    }

_ZN6google8protobuf8internal15TaggedStringPtrC2EPNS1_21ExplicitlyConstructedINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEELm8EEE:
  133|  5.51k|      : ptr_(ptr) {}
_ZNK6google8protobuf8internal15TaggedStringPtr3GetEv:
  189|  4.46k|  inline std::string* Get() const {
  190|  4.46k|    return reinterpret_cast<std::string*>(as_int() & ~kMask);
  191|  4.46k|  }
_ZNK6google8protobuf8internal15TaggedStringPtr6as_intEv:
  210|  4.46k|  uintptr_t as_int() const { return reinterpret_cast<uintptr_t>(ptr_); }
_ZNK6google8protobuf8internal14ArenaStringPtr3GetEv:
  299|  4.39k|  PROTOBUF_NDEBUG_INLINE const std::string& Get() const {
  300|       |    // Unconditionally mask away the tag.
  301|  4.39k|    return *tagged_ptr_.Get();
  302|  4.39k|  }
_ZN6google8protobuf8internal14ArenaStringPtr11InitDefaultEv:
  395|  5.51k|inline void ArenaStringPtr::InitDefault() {
  396|  5.51k|  tagged_ptr_ = TaggedStringPtr(&fixed_address_empty_string);
  397|  5.51k|}
_ZN6google8protobuf8internal14ArenaStringPtr22ClearNonDefaultToEmptyEv:
  475|     69|inline void ArenaStringPtr::ClearNonDefaultToEmpty() {
  476|       |  // Unconditionally mask away the tag.
  477|     69|  tagged_ptr_.Get()->clear();
  478|     69|}

_ZN6google8protobuf8internal10CachedSizeC2Ev:
  198|  27.9k|  constexpr CachedSize() noexcept : atom_(Scalar{}) {}

_ZNK6google8protobuf8internal7HasBitsILm1EEixEi:
   61|    561|  PROTOBUF_NDEBUG_INLINE const uint32_t& operator[](int index) const {
   62|    561|    return has_bits_[index];
   63|    561|  }
_ZN6google8protobuf8internal7HasBitsILm1EEixEi:
   57|  6.59k|  PROTOBUF_NDEBUG_INLINE uint32_t& operator[](int index) {
   58|  6.59k|    return has_bits_[index];
   59|  6.59k|  }
_ZN6google8protobuf8internal7HasBitsILm1EEC2Ev:
   51|  14.8k|  PROTOBUF_NDEBUG_INLINE constexpr HasBits() : has_bits_{} {}
_ZN6google8protobuf8internal7HasBitsILm1EE5ClearEv:
   53|  7.70k|  PROTOBUF_NDEBUG_INLINE void Clear() {
   54|  7.70k|    memset(has_bits_, 0, sizeof(has_bits_));
   55|  7.70k|  }

_ZN6google8protobuf7MessageC2Ev:
  251|    676|  constexpr Message() {}
_ZN6google8protobuf7MessageC2EPNS0_5ArenaE:
  414|  27.9k|  inline explicit Message(Arena* arena) : MessageLite(arena) {}

_ZN6google8protobuf11MessageLiteC2Ev:
  172|    676|  constexpr MessageLite() {}
_ZN6google8protobuf11MessageLiteC2EPNS0_5ArenaE:
  468|  27.9k|  inline explicit MessageLite(Arena* arena) : _internal_metadata_(arena) {}
_ZNK6google8protobuf11MessageLite21GetArenaForAllocationEv:
  479|  7.37k|  Arena* GetArenaForAllocation() const { return _internal_metadata_.arena(); }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN10json_proto10JsonObjectEEEPT_PNS0_5ArenaE:
  464|  4.70k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  4.70k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  4.70k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN10json_proto9JsonValueEEEPT_PNS0_5ArenaE:
  464|  11.9k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  11.9k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  11.9k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN10json_proto10ArrayValueEEEPT_PNS0_5ArenaE:
  464|  1.13k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  1.13k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  1.13k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN10json_proto13NumberIntegerEEEPT_PNS0_5ArenaE:
  464|  2.32k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  2.32k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  2.32k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN10json_proto11NumberFloatEEEPT_PNS0_5ArenaE:
  464|    492|  static T* CreateMaybeMessage(Arena* arena) {
  465|    492|    return Arena::CreateMaybeMessage<T>(arena);
  466|    492|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN10json_proto14NumberExponentEEEPT_PNS0_5ArenaE:
  464|    609|  static T* CreateMaybeMessage(Arena* arena) {
  465|    609|    return Arena::CreateMaybeMessage<T>(arena);
  466|    609|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN10json_proto18NumberExponentFracEEEPT_PNS0_5ArenaE:
  464|    298|  static T* CreateMaybeMessage(Arena* arena) {
  465|    298|    return Arena::CreateMaybeMessage<T>(arena);
  466|    298|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN10json_proto11NumberValueEEEPT_PNS0_5ArenaE:
  464|  2.11k|  static T* CreateMaybeMessage(Arena* arena) {
  465|  2.11k|    return Arena::CreateMaybeMessage<T>(arena);
  466|  2.11k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN10json_proto11StringValueEEEPT_PNS0_5ArenaE:
  464|    810|  static T* CreateMaybeMessage(Arena* arena) {
  465|    810|    return Arena::CreateMaybeMessage<T>(arena);
  466|    810|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageIN10json_proto12BooleanValueEEEPT_PNS0_5ArenaE:
  464|    358|  static T* CreateMaybeMessage(Arena* arena) {
  465|    358|    return Arena::CreateMaybeMessage<T>(arena);
  466|    358|  }
_ZN6google8protobuf11MessageLiteD2Ev:
  175|  28.6k|  virtual ~MessageLite() = default;

_ZN6google8protobuf8internal16InternalMetadataC2Ev:
   69|    676|  constexpr InternalMetadata() : ptr_(0) {}
_ZN6google8protobuf8internal16InternalMetadataC2EPNS0_5ArenaE:
   70|  27.9k|  explicit InternalMetadata(Arena* arena) {
   71|  27.9k|    ptr_ = reinterpret_cast<intptr_t>(arena);
   72|  27.9k|  }
_ZNK6google8protobuf8internal16InternalMetadata5arenaEv:
   98|  7.37k|  PROTOBUF_NDEBUG_INLINE Arena* arena() const {
   99|  7.37k|    if (PROTOBUF_PREDICT_FALSE(have_unknown_fields())) {
  ------------------
  |  |  538|  7.37k|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (538:36): [True: 0, False: 7.37k]
  |  |  |  Branch (538:54): [Folded - Ignored]
  |  |  |  Branch (538:63): [True: 0, False: 7.37k]
  |  |  ------------------
  ------------------
  100|      0|      return PtrValue<ContainerBase>()->arena;
  101|  7.37k|    } else {
  102|  7.37k|      return PtrValue<Arena>();
  103|  7.37k|    }
  104|  7.37k|  }
_ZNK6google8protobuf8internal16InternalMetadata19have_unknown_fieldsEv:
  106|  46.1k|  PROTOBUF_NDEBUG_INLINE bool have_unknown_fields() const {
  107|  46.1k|    return HasUnknownFieldsTag();
  108|  46.1k|  }
_ZNK6google8protobuf8internal16InternalMetadata19HasUnknownFieldsTagEv:
  173|  46.1k|  PROTOBUF_ALWAYS_INLINE bool HasUnknownFieldsTag() const {
  174|  46.1k|    return ptr_ & kUnknownFieldsTagMask;
  175|  46.1k|  }
_ZNK6google8protobuf8internal16InternalMetadata8PtrValueINS0_5ArenaEEEPT_v:
  178|  36.0k|  U* PtrValue() const {
  179|  36.0k|    return reinterpret_cast<U*>(ptr_ & kPtrValueMask);
  180|  36.0k|  }
_ZN6google8protobuf8internal16InternalMetadata9MergeFromINS0_15UnknownFieldSetEEEvRKS2_:
  151|  1.61k|  PROTOBUF_NDEBUG_INLINE void MergeFrom(const InternalMetadata& other) {
  152|  1.61k|    if (other.have_unknown_fields()) {
  ------------------
  |  Branch (152:9): [True: 0, False: 1.61k]
  ------------------
  153|      0|      DoMergeFrom<T>(other.unknown_fields<T>(nullptr));
  154|      0|    }
  155|  1.61k|  }
_ZN6google8protobuf8internal16InternalMetadata17DeleteReturnArenaINS0_15UnknownFieldSetEEEPNS0_5ArenaEv:
   90|  28.6k|  Arena* DeleteReturnArena() {
   91|  28.6k|    if (have_unknown_fields()) {
  ------------------
  |  Branch (91:9): [True: 0, False: 28.6k]
  ------------------
   92|      0|      return DeleteOutOfLineHelper<T>();
   93|  28.6k|    } else {
   94|  28.6k|      return PtrValue<Arena>();
   95|  28.6k|    }
   96|  28.6k|  }
_ZN6google8protobuf8internal16InternalMetadata5ClearINS0_15UnknownFieldSetEEEvv:
  158|  8.56k|  PROTOBUF_NDEBUG_INLINE void Clear() {
  159|  8.56k|    if (have_unknown_fields()) {
  ------------------
  |  Branch (159:9): [True: 0, False: 8.56k]
  ------------------
  160|      0|      DoClear<T>();
  161|      0|    }
  162|  8.56k|  }

_ZN6google8protobuf8internal20RepeatedPtrFieldBaseC2EPNS0_5ArenaE:
  169|  1.13k|      : arena_(arena), current_size_(0), total_size_(0), rep_(nullptr) {}
_ZN6google8protobuf8internal20RepeatedPtrFieldBaseD2Ev:
  174|  1.13k|  ~RepeatedPtrFieldBase() {
  175|       |#ifndef NDEBUG
  176|       |    // Try to trigger segfault / asan failure in non-opt builds. If arena_
  177|       |    // lifetime has ended before the destructor.
  178|       |    if (arena_) (void)arena_->SpaceAllocated();
  179|       |#endif
  180|  1.13k|  }
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase4sizeEv:
  183|    795|  int size() const { return current_size_; }
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase12NeedsDestroyEv:
  261|  1.13k|  bool NeedsDestroy() const { return rep_ != nullptr && arena_ == nullptr; }
  ------------------
  |  Branch (261:38): [True: 649, False: 481]
  |  Branch (261:57): [True: 649, False: 0]
  ------------------
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase8raw_dataEv:
  372|  1.59k|  void* const* raw_data() const { return rep_ ? rep_->elements : nullptr; }
  ------------------
  |  Branch (372:42): [True: 824, False: 766]
  ------------------
_ZNK6google8protobuf16RepeatedPtrFieldIN10json_proto9JsonValueEE4sizeEv:
 1329|    795|inline int RepeatedPtrField<Element>::size() const {
 1330|    795|  return RepeatedPtrFieldBase::size();
 1331|    795|}
_ZN6google8protobuf16RepeatedPtrFieldIN10json_proto9JsonValueEEC2EPNS0_5ArenaE:
 1246|  1.13k|    : RepeatedPtrFieldBase(arena) {
 1247|  1.13k|  StaticValidityCheck();
 1248|  1.13k|}
_ZN6google8protobuf16RepeatedPtrFieldIN10json_proto9JsonValueEE19StaticValidityCheckEv:
  913|  2.26k|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|  2.26k|    static_assert(
  915|  2.26k|        absl::disjunction<
  916|  2.26k|            internal::is_supported_string_type<Element>,
  917|  2.26k|            internal::is_supported_message_type<Element>>::value,
  918|  2.26k|        "We only support string and Message types in RepeatedPtrField.");
  919|  2.26k|  }
_ZN6google8protobuf16RepeatedPtrFieldIN10json_proto9JsonValueEED2Ev:
 1266|  1.13k|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1267|  1.13k|  StaticValidityCheck();
 1268|       |#ifdef __cpp_if_constexpr
 1269|       |  if constexpr (std::is_base_of<MessageLite, Element>::value) {
 1270|       |#else
 1271|  1.13k|  if (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1271:7): [Folded - Ignored]
  ------------------
 1272|  1.13k|#endif
 1273|  1.13k|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1273:9): [True: 649, False: 481]
  ------------------
 1274|  1.13k|  } else {
 1275|      0|    Destroy<TypeHandler>();
 1276|      0|  }
 1277|  1.13k|}
_ZNK6google8protobuf16RepeatedPtrFieldIN10json_proto9JsonValueEE5beginEv:
 1845|    795|RepeatedPtrField<Element>::begin() const {
 1846|    795|  return iterator(raw_data());
 1847|    795|}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIN10json_proto9JsonValueEEC2EPKPv:
 1643|  1.59k|  explicit RepeatedPtrIterator(void* const* it) : it_(it) {}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKN10json_proto9JsonValueEEC2IS4_LPv0EEERKNS2_IT_EE:
 1651|  1.59k|      : it_(other.it_) {}
_ZNK6google8protobuf16RepeatedPtrFieldIN10json_proto9JsonValueEE3endEv:
 1860|    795|RepeatedPtrField<Element>::end() const {
 1861|    795|  return iterator(raw_data() + size());
 1862|    795|}
_ZN6google8protobuf8internalneERKNS1_19RepeatedPtrIteratorIKN10json_proto9JsonValueEEES8_:
 1673|  5.90k|  friend bool operator!=(const iterator& x, const iterator& y) {
 1674|  5.90k|    return x.it_ != y.it_;
 1675|  5.90k|  }
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKN10json_proto9JsonValueEEppEv:
 1658|  5.10k|  iterator& operator++() {
 1659|  5.10k|    ++it_;
 1660|  5.10k|    return *this;
 1661|  5.10k|  }
_ZNK6google8protobuf8internal19RepeatedPtrIteratorIKN10json_proto9JsonValueEEdeEv:
 1654|  5.10k|  reference operator*() const { return *reinterpret_cast<Element*>(*it_); }

_Z36descriptor_table_json_2eproto_getterv:
  442|      1|PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_json_2eproto_getter() {
  443|      1|  return &descriptor_table_json_2eproto;
  444|      1|}
_ZN10json_proto12JsonParseAPIC2EPN6google8protobuf5ArenaE:
  473|  3.16k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  474|  3.16k|  SharedCtor(arena);
  475|       |  // @@protoc_insertion_point(arena_constructor:json_proto.JsonParseAPI)
  476|  3.16k|}
_ZN10json_proto12JsonParseAPID2Ev:
  506|  3.16k|JsonParseAPI::~JsonParseAPI() {
  507|       |  // @@protoc_insertion_point(destructor:json_proto.JsonParseAPI)
  508|  3.16k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (508:13): [True: 0, False: 3.16k]
  ------------------
  509|      0|  (void)arena;
  510|      0|    return;
  511|      0|  }
  512|  3.16k|  SharedDtor();
  513|  3.16k|}
_ZN10json_proto12JsonParseAPI5ClearEv:
  524|  6.46k|void JsonParseAPI::Clear() {
  525|       |// @@protoc_insertion_point(message_clear_start:json_proto.JsonParseAPI)
  526|  6.46k|  ::uint32_t cached_has_bits = 0;
  527|       |  // Prevent compiler warnings about cached_has_bits being unused
  528|  6.46k|  (void) cached_has_bits;
  529|       |
  530|  6.46k|  cached_has_bits = _impl_._has_bits_[0];
  531|  6.46k|  if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (531:7): [True: 121, False: 6.34k]
  ------------------
  532|    121|    ABSL_DCHECK(_impl_.object_value_ != nullptr);
  ------------------
  |  |   43|    121|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    121|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    121|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    121|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    121|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    121|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  533|    121|    _impl_.object_value_->Clear();
  534|    121|  }
  535|  6.46k|  _impl_.settings_ = 0;
  536|  6.46k|  _impl_._has_bits_.Clear();
  537|  6.46k|  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  538|  6.46k|}
_ZNK10json_proto12JsonParseAPI11GetMetadataEv:
  718|  41.4k|::PROTOBUF_NAMESPACE_ID::Metadata JsonParseAPI::GetMetadata() const {
  719|  41.4k|  return ::_pbi::AssignDescriptors(
  720|  41.4k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
  721|  41.4k|      file_level_metadata_json_2eproto[0]);
  722|  41.4k|}
_ZN10json_proto10JsonObjectC2EPN6google8protobuf5ArenaE:
  750|  4.70k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  751|  4.70k|  SharedCtor(arena);
  752|       |  // @@protoc_insertion_point(arena_constructor:json_proto.JsonObject)
  753|  4.70k|}
_ZN10json_proto10JsonObjectD2Ev:
  798|  4.70k|JsonObject::~JsonObject() {
  799|       |  // @@protoc_insertion_point(destructor:json_proto.JsonObject)
  800|  4.70k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (800:13): [True: 0, False: 4.70k]
  ------------------
  801|      0|  (void)arena;
  802|      0|    return;
  803|      0|  }
  804|  4.70k|  SharedDtor();
  805|  4.70k|}
_ZN10json_proto10JsonObject5ClearEv:
  817|    129|void JsonObject::Clear() {
  818|       |// @@protoc_insertion_point(message_clear_start:json_proto.JsonObject)
  819|    129|  ::uint32_t cached_has_bits = 0;
  820|       |  // Prevent compiler warnings about cached_has_bits being unused
  821|    129|  (void) cached_has_bits;
  822|       |
  823|    129|  cached_has_bits = _impl_._has_bits_[0];
  824|    129|  if (cached_has_bits & 0x00000003u) {
  ------------------
  |  Branch (824:7): [True: 117, False: 12]
  ------------------
  825|    117|    if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (825:9): [True: 69, False: 48]
  ------------------
  826|     69|      _impl_.name_.ClearNonDefaultToEmpty();
  827|     69|    }
  828|    117|    if (cached_has_bits & 0x00000002u) {
  ------------------
  |  Branch (828:9): [True: 115, False: 2]
  ------------------
  829|    115|      ABSL_DCHECK(_impl_.value_ != nullptr);
  ------------------
  |  |   43|    115|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    115|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    115|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    115|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    115|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    115|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  830|    115|      _impl_.value_->Clear();
  831|    115|    }
  832|    117|  }
  833|    129|  _impl_.settings_ = 0;
  834|    129|  _impl_._has_bits_.Clear();
  835|    129|  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  836|    129|}
_ZNK10json_proto10JsonObject12GetClassDataEv:
  995|     12|const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*JsonObject::GetClassData() const { return &_class_data_; }
_ZN10json_proto10JsonObject9MergeImplERN6google8protobuf7MessageERKS3_:
  998|      4|void JsonObject::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  999|      4|  auto* const _this = static_cast<JsonObject*>(&to_msg);
 1000|      4|  auto& from = static_cast<const JsonObject&>(from_msg);
 1001|       |  // @@protoc_insertion_point(class_specific_merge_from_start:json_proto.JsonObject)
 1002|      4|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|      4|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|      4|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      4|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      4|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1003|      4|  ::uint32_t cached_has_bits = 0;
 1004|      4|  (void) cached_has_bits;
 1005|       |
 1006|      4|  cached_has_bits = from._impl_._has_bits_[0];
 1007|      4|  if (cached_has_bits & 0x00000007u) {
  ------------------
  |  Branch (1007:7): [True: 0, False: 4]
  ------------------
 1008|      0|    if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (1008:9): [True: 0, False: 0]
  ------------------
 1009|      0|      _this->_internal_set_name(from._internal_name());
 1010|      0|    }
 1011|      0|    if (cached_has_bits & 0x00000002u) {
  ------------------
  |  Branch (1011:9): [True: 0, False: 0]
  ------------------
 1012|      0|      _this->_internal_mutable_value()->::json_proto::JsonValue::MergeFrom(
 1013|      0|          from._internal_value());
 1014|      0|    }
 1015|      0|    if (cached_has_bits & 0x00000004u) {
  ------------------
  |  Branch (1015:9): [True: 0, False: 0]
  ------------------
 1016|      0|      _this->_impl_.settings_ = from._impl_.settings_;
 1017|      0|    }
 1018|      0|    _this->_impl_._has_bits_[0] |= cached_has_bits;
 1019|      0|  }
 1020|      4|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 1021|      4|}
_ZNK10json_proto10JsonObject11GetMetadataEv:
 1054|  61.0k|::PROTOBUF_NAMESPACE_ID::Metadata JsonObject::GetMetadata() const {
 1055|  61.0k|  return ::_pbi::AssignDescriptors(
 1056|  61.0k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
 1057|  61.0k|      file_level_metadata_json_2eproto[1]);
 1058|  61.0k|}
_ZN10json_proto9JsonValueC2EPN6google8protobuf5ArenaE:
 1168|  11.9k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1169|  11.9k|  SharedCtor(arena);
 1170|       |  // @@protoc_insertion_point(arena_constructor:json_proto.JsonValue)
 1171|  11.9k|}
_ZN10json_proto9JsonValueD2Ev:
 1225|  11.9k|JsonValue::~JsonValue() {
 1226|       |  // @@protoc_insertion_point(destructor:json_proto.JsonValue)
 1227|  11.9k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1227:13): [True: 0, False: 11.9k]
  ------------------
 1228|      0|  (void)arena;
 1229|      0|    return;
 1230|      0|  }
 1231|  11.9k|  SharedDtor();
 1232|  11.9k|}
_ZN10json_proto9JsonValue11clear_valueEv:
 1245|  6.72k|void JsonValue::clear_value() {
 1246|       |// @@protoc_insertion_point(one_of_clear_start:json_proto.JsonValue)
 1247|  6.72k|  switch (value_case()) {
  ------------------
  |  Branch (1247:11): [True: 0, False: 6.72k]
  ------------------
 1248|  1.56k|    case kObjectValue: {
  ------------------
  |  Branch (1248:5): [True: 1.56k, False: 5.16k]
  ------------------
 1249|  1.56k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (1249:11): [True: 1.56k, False: 0]
  ------------------
 1250|  1.56k|        delete _impl_.value_.object_value_;
 1251|  1.56k|      }
 1252|  1.56k|      break;
 1253|      0|    }
 1254|  1.13k|    case kArrayValue: {
  ------------------
  |  Branch (1254:5): [True: 1.13k, False: 5.59k]
  ------------------
 1255|  1.13k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (1255:11): [True: 1.13k, False: 0]
  ------------------
 1256|  1.13k|        delete _impl_.value_.array_value_;
 1257|  1.13k|      }
 1258|  1.13k|      break;
 1259|      0|    }
 1260|  2.11k|    case kNumberValue: {
  ------------------
  |  Branch (1260:5): [True: 2.11k, False: 4.60k]
  ------------------
 1261|  2.11k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (1261:11): [True: 2.11k, False: 0]
  ------------------
 1262|  2.11k|        delete _impl_.value_.number_value_;
 1263|  2.11k|      }
 1264|  2.11k|      break;
 1265|      0|    }
 1266|    810|    case kStringValue: {
  ------------------
  |  Branch (1266:5): [True: 810, False: 5.91k]
  ------------------
 1267|    810|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (1267:11): [True: 810, False: 0]
  ------------------
 1268|    810|        delete _impl_.value_.string_value_;
 1269|    810|      }
 1270|    810|      break;
 1271|      0|    }
 1272|    358|    case kBooleanValue: {
  ------------------
  |  Branch (1272:5): [True: 358, False: 6.36k]
  ------------------
 1273|    358|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (1273:11): [True: 358, False: 0]
  ------------------
 1274|    358|        delete _impl_.value_.boolean_value_;
 1275|    358|      }
 1276|    358|      break;
 1277|      0|    }
 1278|    749|    case VALUE_NOT_SET: {
  ------------------
  |  Branch (1278:5): [True: 749, False: 5.97k]
  ------------------
 1279|    749|      break;
 1280|      0|    }
 1281|  6.72k|  }
 1282|  6.72k|  _impl_._oneof_case_[0] = VALUE_NOT_SET;
 1283|  6.72k|}
_ZN10json_proto9JsonValue5ClearEv:
 1286|    861|void JsonValue::Clear() {
 1287|       |// @@protoc_insertion_point(message_clear_start:json_proto.JsonValue)
 1288|    861|  ::uint32_t cached_has_bits = 0;
 1289|       |  // Prevent compiler warnings about cached_has_bits being unused
 1290|    861|  (void) cached_has_bits;
 1291|       |
 1292|    861|  clear_value();
 1293|    861|  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 1294|    861|}
_ZNK10json_proto9JsonValue12GetClassDataEv:
 1472|  1.11k|const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*JsonValue::GetClassData() const { return &_class_data_; }
_ZN10json_proto9JsonValue9MergeImplERN6google8protobuf7MessageERKS3_:
 1475|    373|void JsonValue::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 1476|    373|  auto* const _this = static_cast<JsonValue*>(&to_msg);
 1477|    373|  auto& from = static_cast<const JsonValue&>(from_msg);
 1478|       |  // @@protoc_insertion_point(class_specific_merge_from_start:json_proto.JsonValue)
 1479|    373|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|    373|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|    373|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    373|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|    373|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1480|    373|  ::uint32_t cached_has_bits = 0;
 1481|    373|  (void) cached_has_bits;
 1482|       |
 1483|    373|  switch (from.value_case()) {
  ------------------
  |  Branch (1483:11): [True: 0, False: 373]
  ------------------
 1484|      0|    case kObjectValue: {
  ------------------
  |  Branch (1484:5): [True: 0, False: 373]
  ------------------
 1485|      0|      _this->_internal_mutable_object_value()->::json_proto::JsonObject::MergeFrom(
 1486|      0|          from._internal_object_value());
 1487|      0|      break;
 1488|      0|    }
 1489|      0|    case kArrayValue: {
  ------------------
  |  Branch (1489:5): [True: 0, False: 373]
  ------------------
 1490|      0|      _this->_internal_mutable_array_value()->::json_proto::ArrayValue::MergeFrom(
 1491|      0|          from._internal_array_value());
 1492|      0|      break;
 1493|      0|    }
 1494|      0|    case kNumberValue: {
  ------------------
  |  Branch (1494:5): [True: 0, False: 373]
  ------------------
 1495|      0|      _this->_internal_mutable_number_value()->::json_proto::NumberValue::MergeFrom(
 1496|      0|          from._internal_number_value());
 1497|      0|      break;
 1498|      0|    }
 1499|      0|    case kStringValue: {
  ------------------
  |  Branch (1499:5): [True: 0, False: 373]
  ------------------
 1500|      0|      _this->_internal_mutable_string_value()->::json_proto::StringValue::MergeFrom(
 1501|      0|          from._internal_string_value());
 1502|      0|      break;
 1503|      0|    }
 1504|      0|    case kBooleanValue: {
  ------------------
  |  Branch (1504:5): [True: 0, False: 373]
  ------------------
 1505|      0|      _this->_internal_mutable_boolean_value()->::json_proto::BooleanValue::MergeFrom(
 1506|      0|          from._internal_boolean_value());
 1507|      0|      break;
 1508|      0|    }
 1509|    373|    case VALUE_NOT_SET: {
  ------------------
  |  Branch (1509:5): [True: 373, False: 0]
  ------------------
 1510|    373|      break;
 1511|      0|    }
 1512|    373|  }
 1513|    373|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 1514|    373|}
_ZNK10json_proto9JsonValue11GetMetadataEv:
 1569|  71.6k|::PROTOBUF_NAMESPACE_ID::Metadata JsonValue::GetMetadata() const {
 1570|  71.6k|  return ::_pbi::AssignDescriptors(
 1571|  71.6k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
 1572|  71.6k|      file_level_metadata_json_2eproto[2]);
 1573|  71.6k|}
_ZN10json_proto10ArrayValueC2EPN6google8protobuf5ArenaE:
 1581|  1.13k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1582|  1.13k|  SharedCtor(arena);
 1583|       |  // @@protoc_insertion_point(arena_constructor:json_proto.ArrayValue)
 1584|  1.13k|}
_ZN10json_proto10ArrayValueD2Ev:
 1604|  1.13k|ArrayValue::~ArrayValue() {
 1605|       |  // @@protoc_insertion_point(destructor:json_proto.ArrayValue)
 1606|  1.13k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1606:13): [True: 0, False: 1.13k]
  ------------------
 1607|      0|  (void)arena;
 1608|      0|    return;
 1609|      0|  }
 1610|  1.13k|  SharedDtor();
 1611|  1.13k|}
_ZNK10json_proto10ArrayValue11GetMetadataEv:
 1753|  27.3k|::PROTOBUF_NAMESPACE_ID::Metadata ArrayValue::GetMetadata() const {
 1754|  27.3k|  return ::_pbi::AssignDescriptors(
 1755|  27.3k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
 1756|  27.3k|      file_level_metadata_json_2eproto[3]);
 1757|  27.3k|}
_ZN10json_proto13NumberIntegerC2EPN6google8protobuf5ArenaE:
 1774|  2.32k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1775|  2.32k|  SharedCtor(arena);
 1776|       |  // @@protoc_insertion_point(arena_constructor:json_proto.NumberInteger)
 1777|  2.32k|}
_ZN10json_proto13NumberIntegerD2Ev:
 1795|  2.32k|NumberInteger::~NumberInteger() {
 1796|       |  // @@protoc_insertion_point(destructor:json_proto.NumberInteger)
 1797|  2.32k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1797:13): [True: 0, False: 2.32k]
  ------------------
 1798|      0|  (void)arena;
 1799|      0|    return;
 1800|      0|  }
 1801|  2.32k|  SharedDtor();
 1802|  2.32k|}
_ZN10json_proto13NumberInteger5ClearEv:
 1812|  1.11k|void NumberInteger::Clear() {
 1813|       |// @@protoc_insertion_point(message_clear_start:json_proto.NumberInteger)
 1814|  1.11k|  ::uint32_t cached_has_bits = 0;
 1815|       |  // Prevent compiler warnings about cached_has_bits being unused
 1816|  1.11k|  (void) cached_has_bits;
 1817|       |
 1818|  1.11k|  _impl_.value_ = ::int64_t{0};
 1819|  1.11k|  _impl_._has_bits_.Clear();
 1820|  1.11k|  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 1821|  1.11k|}
_ZNK10json_proto13NumberInteger12GetClassDataEv:
 1906|  1.67k|const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*NumberInteger::GetClassData() const { return &_class_data_; }
_ZN10json_proto13NumberInteger9MergeImplERN6google8protobuf7MessageERKS3_:
 1909|    557|void NumberInteger::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 1910|    557|  auto* const _this = static_cast<NumberInteger*>(&to_msg);
 1911|    557|  auto& from = static_cast<const NumberInteger&>(from_msg);
 1912|       |  // @@protoc_insertion_point(class_specific_merge_from_start:json_proto.NumberInteger)
 1913|    557|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|    557|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|    557|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    557|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|    557|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1914|    557|  ::uint32_t cached_has_bits = 0;
 1915|    557|  (void) cached_has_bits;
 1916|       |
 1917|    557|  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
  ------------------
  |  Branch (1917:7): [True: 0, False: 557]
  ------------------
 1918|      0|    _this->_internal_set_value(from._internal_value());
 1919|      0|  }
 1920|    557|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 1921|    557|}
_ZNK10json_proto13NumberInteger11GetMetadataEv:
 1943|  11.2k|::PROTOBUF_NAMESPACE_ID::Metadata NumberInteger::GetMetadata() const {
 1944|  11.2k|  return ::_pbi::AssignDescriptors(
 1945|  11.2k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
 1946|  11.2k|      file_level_metadata_json_2eproto[4]);
 1947|  11.2k|}
_ZN10json_proto11NumberFloatC2EPN6google8protobuf5ArenaE:
 1964|    492|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1965|    492|  SharedCtor(arena);
 1966|       |  // @@protoc_insertion_point(arena_constructor:json_proto.NumberFloat)
 1967|    492|}
_ZN10json_proto11NumberFloatD2Ev:
 1985|    492|NumberFloat::~NumberFloat() {
 1986|       |  // @@protoc_insertion_point(destructor:json_proto.NumberFloat)
 1987|    492|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1987:13): [True: 0, False: 492]
  ------------------
 1988|      0|  (void)arena;
 1989|      0|    return;
 1990|      0|  }
 1991|    492|  SharedDtor();
 1992|    492|}
_ZNK10json_proto11NumberFloat11GetMetadataEv:
 2132|  3.78k|::PROTOBUF_NAMESPACE_ID::Metadata NumberFloat::GetMetadata() const {
 2133|  3.78k|  return ::_pbi::AssignDescriptors(
 2134|  3.78k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
 2135|  3.78k|      file_level_metadata_json_2eproto[5]);
 2136|  3.78k|}
_ZN10json_proto14NumberExponentC2EPN6google8protobuf5ArenaE:
 2159|    609|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 2160|    609|  SharedCtor(arena);
 2161|       |  // @@protoc_insertion_point(arena_constructor:json_proto.NumberExponent)
 2162|    609|}
_ZN10json_proto14NumberExponentC2ERKS0_:
 2164|    676|  : ::PROTOBUF_NAMESPACE_ID::Message(), _impl_(from._impl_) {
 2165|    676|  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(
 2166|    676|      from._internal_metadata_);
 2167|       |  // @@protoc_insertion_point(copy_constructor:json_proto.NumberExponent)
 2168|    676|}
_ZN10json_proto14NumberExponentD2Ev:
 2184|  1.28k|NumberExponent::~NumberExponent() {
 2185|       |  // @@protoc_insertion_point(destructor:json_proto.NumberExponent)
 2186|  1.28k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (2186:13): [True: 0, False: 1.28k]
  ------------------
 2187|      0|  (void)arena;
 2188|      0|    return;
 2189|      0|  }
 2190|  1.28k|  SharedDtor();
 2191|  1.28k|}
_ZNK10json_proto14NumberExponent11GetMetadataEv:
 2418|  5.70k|::PROTOBUF_NAMESPACE_ID::Metadata NumberExponent::GetMetadata() const {
 2419|  5.70k|  return ::_pbi::AssignDescriptors(
 2420|  5.70k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
 2421|  5.70k|      file_level_metadata_json_2eproto[6]);
 2422|  5.70k|}
_ZN10json_proto18NumberExponentFracC2EPN6google8protobuf5ArenaE:
 2445|    298|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 2446|    298|  SharedCtor(arena);
 2447|       |  // @@protoc_insertion_point(arena_constructor:json_proto.NumberExponentFrac)
 2448|    298|}
_ZN10json_proto18NumberExponentFracD2Ev:
 2470|    298|NumberExponentFrac::~NumberExponentFrac() {
 2471|       |  // @@protoc_insertion_point(destructor:json_proto.NumberExponentFrac)
 2472|    298|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (2472:13): [True: 0, False: 298]
  ------------------
 2473|      0|  (void)arena;
 2474|      0|    return;
 2475|      0|  }
 2476|    298|  SharedDtor();
 2477|    298|}
_ZNK10json_proto18NumberExponentFrac11GetMetadataEv:
 2702|  3.63k|::PROTOBUF_NAMESPACE_ID::Metadata NumberExponentFrac::GetMetadata() const {
 2703|  3.63k|  return ::_pbi::AssignDescriptors(
 2704|  3.63k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
 2705|  3.63k|      file_level_metadata_json_2eproto[7]);
 2706|  3.63k|}
_ZN10json_proto11NumberValueC2EPN6google8protobuf5ArenaE:
 2790|  2.11k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 2791|  2.11k|  SharedCtor(arena);
 2792|       |  // @@protoc_insertion_point(arena_constructor:json_proto.NumberValue)
 2793|  2.11k|}
_ZN10json_proto11NumberValueD2Ev:
 2844|  2.11k|NumberValue::~NumberValue() {
 2845|       |  // @@protoc_insertion_point(destructor:json_proto.NumberValue)
 2846|  2.11k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (2846:13): [True: 0, False: 2.11k]
  ------------------
 2847|      0|  (void)arena;
 2848|      0|    return;
 2849|      0|  }
 2850|  2.11k|  SharedDtor();
 2851|  2.11k|}
_ZN10json_proto11NumberValue11clear_valueEv:
 2865|  1.39k|void NumberValue::clear_value() {
 2866|       |// @@protoc_insertion_point(one_of_clear_start:json_proto.NumberValue)
 2867|  1.39k|  switch (value_case()) {
  ------------------
  |  Branch (2867:11): [True: 0, False: 1.39k]
  ------------------
 2868|    492|    case kFloatValue: {
  ------------------
  |  Branch (2868:5): [True: 492, False: 907]
  ------------------
 2869|    492|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (2869:11): [True: 492, False: 0]
  ------------------
 2870|    492|        delete _impl_.value_.float_value_;
 2871|    492|      }
 2872|    492|      break;
 2873|      0|    }
 2874|    609|    case kExponentValue: {
  ------------------
  |  Branch (2874:5): [True: 609, False: 790]
  ------------------
 2875|    609|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (2875:11): [True: 609, False: 0]
  ------------------
 2876|    609|        delete _impl_.value_.exponent_value_;
 2877|    609|      }
 2878|    609|      break;
 2879|      0|    }
 2880|    298|    case kExponentFracValue: {
  ------------------
  |  Branch (2880:5): [True: 298, False: 1.10k]
  ------------------
 2881|    298|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (2881:11): [True: 298, False: 0]
  ------------------
 2882|    298|        delete _impl_.value_.exponent_frac_value_;
 2883|    298|      }
 2884|    298|      break;
 2885|      0|    }
 2886|      0|    case VALUE_NOT_SET: {
  ------------------
  |  Branch (2886:5): [True: 0, False: 1.39k]
  ------------------
 2887|      0|      break;
 2888|      0|    }
 2889|  1.39k|  }
 2890|  1.39k|  _impl_._oneof_case_[0] = VALUE_NOT_SET;
 2891|  1.39k|}
_ZNK10json_proto11NumberValue11GetMetadataEv:
 3152|  20.3k|::PROTOBUF_NAMESPACE_ID::Metadata NumberValue::GetMetadata() const {
 3153|  20.3k|  return ::_pbi::AssignDescriptors(
 3154|  20.3k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
 3155|  20.3k|      file_level_metadata_json_2eproto[8]);
 3156|  20.3k|}
_ZN10json_proto11StringValueC2EPN6google8protobuf5ArenaE:
 3173|    810|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 3174|    810|  SharedCtor(arena);
 3175|       |  // @@protoc_insertion_point(arena_constructor:json_proto.StringValue)
 3176|    810|}
_ZN10json_proto11StringValueD2Ev:
 3211|    810|StringValue::~StringValue() {
 3212|       |  // @@protoc_insertion_point(destructor:json_proto.StringValue)
 3213|    810|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (3213:13): [True: 0, False: 810]
  ------------------
 3214|      0|  (void)arena;
 3215|      0|    return;
 3216|      0|  }
 3217|    810|  SharedDtor();
 3218|    810|}
_ZNK10json_proto11StringValue11GetMetadataEv:
 3369|  6.16k|::PROTOBUF_NAMESPACE_ID::Metadata StringValue::GetMetadata() const {
 3370|  6.16k|  return ::_pbi::AssignDescriptors(
 3371|  6.16k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
 3372|  6.16k|      file_level_metadata_json_2eproto[9]);
 3373|  6.16k|}
_ZN10json_proto12BooleanValueC2EPN6google8protobuf5ArenaE:
 3390|    358|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 3391|    358|  SharedCtor(arena);
 3392|       |  // @@protoc_insertion_point(arena_constructor:json_proto.BooleanValue)
 3393|    358|}
_ZN10json_proto12BooleanValueD2Ev:
 3411|    358|BooleanValue::~BooleanValue() {
 3412|       |  // @@protoc_insertion_point(destructor:json_proto.BooleanValue)
 3413|    358|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (3413:13): [True: 0, False: 358]
  ------------------
 3414|      0|  (void)arena;
 3415|      0|    return;
 3416|      0|  }
 3417|    358|  SharedDtor();
 3418|    358|}
_ZNK10json_proto12BooleanValue11GetMetadataEv:
 3558|  2.46k|::PROTOBUF_NAMESPACE_ID::Metadata BooleanValue::GetMetadata() const {
 3559|  2.46k|  return ::_pbi::AssignDescriptors(
 3560|  2.46k|      &descriptor_table_json_2eproto_getter, &descriptor_table_json_2eproto_once,
 3561|  2.46k|      file_level_metadata_json_2eproto[10]);
 3562|  2.46k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN10json_proto10JsonObjectEJEEEPT_PS1_DpOT0_:
 3571|  4.70k|Arena::CreateMaybeMessage< ::json_proto::JsonObject >(Arena* arena) {
 3572|  4.70k|  return Arena::CreateMessageInternal< ::json_proto::JsonObject >(arena);
 3573|  4.70k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN10json_proto9JsonValueEJEEEPT_PS1_DpOT0_:
 3575|  11.9k|Arena::CreateMaybeMessage< ::json_proto::JsonValue >(Arena* arena) {
 3576|  11.9k|  return Arena::CreateMessageInternal< ::json_proto::JsonValue >(arena);
 3577|  11.9k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN10json_proto10ArrayValueEJEEEPT_PS1_DpOT0_:
 3579|  1.13k|Arena::CreateMaybeMessage< ::json_proto::ArrayValue >(Arena* arena) {
 3580|  1.13k|  return Arena::CreateMessageInternal< ::json_proto::ArrayValue >(arena);
 3581|  1.13k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN10json_proto13NumberIntegerEJEEEPT_PS1_DpOT0_:
 3583|  2.32k|Arena::CreateMaybeMessage< ::json_proto::NumberInteger >(Arena* arena) {
 3584|  2.32k|  return Arena::CreateMessageInternal< ::json_proto::NumberInteger >(arena);
 3585|  2.32k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN10json_proto11NumberFloatEJEEEPT_PS1_DpOT0_:
 3587|    492|Arena::CreateMaybeMessage< ::json_proto::NumberFloat >(Arena* arena) {
 3588|    492|  return Arena::CreateMessageInternal< ::json_proto::NumberFloat >(arena);
 3589|    492|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN10json_proto14NumberExponentEJEEEPT_PS1_DpOT0_:
 3591|    609|Arena::CreateMaybeMessage< ::json_proto::NumberExponent >(Arena* arena) {
 3592|    609|  return Arena::CreateMessageInternal< ::json_proto::NumberExponent >(arena);
 3593|    609|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN10json_proto18NumberExponentFracEJEEEPT_PS1_DpOT0_:
 3595|    298|Arena::CreateMaybeMessage< ::json_proto::NumberExponentFrac >(Arena* arena) {
 3596|    298|  return Arena::CreateMessageInternal< ::json_proto::NumberExponentFrac >(arena);
 3597|    298|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN10json_proto11NumberValueEJEEEPT_PS1_DpOT0_:
 3599|  2.11k|Arena::CreateMaybeMessage< ::json_proto::NumberValue >(Arena* arena) {
 3600|  2.11k|  return Arena::CreateMessageInternal< ::json_proto::NumberValue >(arena);
 3601|  2.11k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN10json_proto11StringValueEJEEEPT_PS1_DpOT0_:
 3603|    810|Arena::CreateMaybeMessage< ::json_proto::StringValue >(Arena* arena) {
 3604|    810|  return Arena::CreateMessageInternal< ::json_proto::StringValue >(arena);
 3605|    810|}
_ZN6google8protobuf5Arena18CreateMaybeMessageIN10json_proto12BooleanValueEJEEEPT_PS1_DpOT0_:
 3607|    358|Arena::CreateMaybeMessage< ::json_proto::BooleanValue >(Arena* arena) {
 3608|    358|  return Arena::CreateMessageInternal< ::json_proto::BooleanValue >(arena);
 3609|    358|}
_ZN10json_proto12JsonParseAPI10SharedCtorEPN6google8protobuf5ArenaE:
  495|  3.16k|inline void JsonParseAPI::SharedCtor(::_pb::Arena* arena) {
  496|  3.16k|  (void)arena;
  497|  3.16k|  new (&_impl_) Impl_{
  498|  3.16k|      decltype(_impl_._has_bits_){}
  499|  3.16k|    , /*decltype(_impl_._cached_size_)*/{}
  500|  3.16k|    , decltype(_impl_.object_value_){nullptr}
  501|  3.16k|    , decltype(_impl_.settings_) { 0 }
  502|       |
  503|  3.16k|  };
  504|  3.16k|}
_ZN10json_proto12JsonParseAPI10SharedDtorEv:
  515|  3.16k|inline void JsonParseAPI::SharedDtor() {
  516|  3.16k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  3.16k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  3.16k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  3.16k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  3.16k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  3.16k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  3.16k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  517|  3.16k|  if (this != internal_default_instance()) delete _impl_.object_value_;
  ------------------
  |  Branch (517:7): [True: 3.16k, False: 0]
  ------------------
  518|  3.16k|}
_ZN10json_proto10JsonObject10SharedCtorEPN6google8protobuf5ArenaE:
  781|  4.70k|inline void JsonObject::SharedCtor(::_pb::Arena* arena) {
  782|  4.70k|  (void)arena;
  783|  4.70k|  new (&_impl_) Impl_{
  784|  4.70k|      decltype(_impl_._has_bits_){}
  785|  4.70k|    , /*decltype(_impl_._cached_size_)*/{}
  786|  4.70k|    , decltype(_impl_.name_) {}
  787|       |
  788|  4.70k|    , decltype(_impl_.value_){nullptr}
  789|  4.70k|    , decltype(_impl_.settings_) { 0 }
  790|       |
  791|  4.70k|  };
  792|  4.70k|  _impl_.name_.InitDefault();
  793|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  794|       |        _impl_.name_.Set("", GetArenaForAllocation());
  795|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  796|  4.70k|}
_ZN10json_proto10JsonObject10SharedDtorEv:
  807|  4.70k|inline void JsonObject::SharedDtor() {
  808|  4.70k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  4.70k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  4.70k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  4.70k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  4.70k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  4.70k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  4.70k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  809|  4.70k|  _impl_.name_.Destroy();
  810|  4.70k|  if (this != internal_default_instance()) delete _impl_.value_;
  ------------------
  |  Branch (810:7): [True: 4.70k, False: 0]
  ------------------
  811|  4.70k|}
_ZN10json_proto9JsonValue10SharedCtorEPN6google8protobuf5ArenaE:
 1215|  11.9k|inline void JsonValue::SharedCtor(::_pb::Arena* arena) {
 1216|  11.9k|  (void)arena;
 1217|  11.9k|  new (&_impl_) Impl_{
 1218|  11.9k|      decltype(_impl_.value_){}
 1219|  11.9k|    , /*decltype(_impl_._cached_size_)*/{}
 1220|  11.9k|    , /*decltype(_impl_._oneof_case_)*/{}
 1221|  11.9k|  };
 1222|  11.9k|  clear_has_value();
 1223|  11.9k|}
_ZN10json_proto9JsonValue10SharedDtorEv:
 1234|  11.9k|inline void JsonValue::SharedDtor() {
 1235|  11.9k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  11.9k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  11.9k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  11.9k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  11.9k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  11.9k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  11.9k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1236|  11.9k|  if (has_value()) {
  ------------------
  |  Branch (1236:7): [True: 5.86k, False: 6.08k]
  ------------------
 1237|  5.86k|    clear_value();
 1238|  5.86k|  }
 1239|  11.9k|}
_ZN10json_proto10ArrayValue10SharedCtorEPN6google8protobuf5ArenaE:
 1596|  1.13k|inline void ArrayValue::SharedCtor(::_pb::Arena* arena) {
 1597|  1.13k|  (void)arena;
 1598|  1.13k|  new (&_impl_) Impl_{
 1599|  1.13k|      decltype(_impl_.value_){arena}
 1600|  1.13k|    , /*decltype(_impl_._cached_size_)*/{}
 1601|  1.13k|  };
 1602|  1.13k|}
_ZN10json_proto10ArrayValue10SharedDtorEv:
 1613|  1.13k|inline void ArrayValue::SharedDtor() {
 1614|  1.13k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  1.13k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  1.13k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  1.13k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  1.13k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  1.13k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  1.13k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1615|  1.13k|  _impl_.value_.~RepeatedPtrField();
 1616|  1.13k|}
_ZN10json_proto13NumberInteger10SharedCtorEPN6google8protobuf5ArenaE:
 1785|  2.32k|inline void NumberInteger::SharedCtor(::_pb::Arena* arena) {
 1786|  2.32k|  (void)arena;
 1787|  2.32k|  new (&_impl_) Impl_{
 1788|  2.32k|      decltype(_impl_._has_bits_){}
 1789|  2.32k|    , /*decltype(_impl_._cached_size_)*/{}
 1790|  2.32k|    , decltype(_impl_.value_) { ::int64_t{0} }
 1791|       |
 1792|  2.32k|  };
 1793|  2.32k|}
_ZN10json_proto13NumberInteger10SharedDtorEv:
 1804|  2.32k|inline void NumberInteger::SharedDtor() {
 1805|  2.32k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  2.32k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  2.32k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  2.32k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  2.32k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  2.32k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  2.32k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1806|  2.32k|}
_ZN10json_proto11NumberFloat10SharedCtorEPN6google8protobuf5ArenaE:
 1975|    492|inline void NumberFloat::SharedCtor(::_pb::Arena* arena) {
 1976|    492|  (void)arena;
 1977|    492|  new (&_impl_) Impl_{
 1978|    492|      decltype(_impl_._has_bits_){}
 1979|    492|    , /*decltype(_impl_._cached_size_)*/{}
 1980|    492|    , decltype(_impl_.value_) { 0 }
 1981|       |
 1982|    492|  };
 1983|    492|}
_ZN10json_proto11NumberFloat10SharedDtorEv:
 1994|    492|inline void NumberFloat::SharedDtor() {
 1995|    492|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|    492|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    492|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    492|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    492|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    492|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    492|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1996|    492|}
_ZN10json_proto14NumberExponent10SharedCtorEPN6google8protobuf5ArenaE:
 2170|    609|inline void NumberExponent::SharedCtor(::_pb::Arena* arena) {
 2171|    609|  (void)arena;
 2172|    609|  new (&_impl_) Impl_{
 2173|    609|      decltype(_impl_._has_bits_){}
 2174|    609|    , /*decltype(_impl_._cached_size_)*/{}
 2175|    609|    , decltype(_impl_.base_) { 0 }
 2176|       |
 2177|    609|    , decltype(_impl_.exponent_) { 0 }
 2178|       |
 2179|    609|    , decltype(_impl_.use_uppercase_) { false }
 2180|       |
 2181|    609|  };
 2182|    609|}
_ZN10json_proto14NumberExponent10SharedDtorEv:
 2193|  1.28k|inline void NumberExponent::SharedDtor() {
 2194|  1.28k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  1.28k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  1.28k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  1.28k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  1.28k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  1.28k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  1.28k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2195|  1.28k|}
_ZN10json_proto18NumberExponentFrac10SharedCtorEPN6google8protobuf5ArenaE:
 2456|    298|inline void NumberExponentFrac::SharedCtor(::_pb::Arena* arena) {
 2457|    298|  (void)arena;
 2458|    298|  new (&_impl_) Impl_{
 2459|    298|      decltype(_impl_._has_bits_){}
 2460|    298|    , /*decltype(_impl_._cached_size_)*/{}
 2461|    298|    , decltype(_impl_.base_) { 0 }
 2462|       |
 2463|    298|    , decltype(_impl_.exponent_) { 0 }
 2464|       |
 2465|    298|    , decltype(_impl_.use_uppercase_) { false }
 2466|       |
 2467|    298|  };
 2468|    298|}
_ZN10json_proto18NumberExponentFrac10SharedDtorEv:
 2479|    298|inline void NumberExponentFrac::SharedDtor() {
 2480|    298|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|    298|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    298|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    298|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    298|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    298|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    298|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2481|    298|}
_ZN10json_proto11NumberValue10SharedCtorEPN6google8protobuf5ArenaE:
 2832|  2.11k|inline void NumberValue::SharedCtor(::_pb::Arena* arena) {
 2833|  2.11k|  (void)arena;
 2834|  2.11k|  new (&_impl_) Impl_{
 2835|  2.11k|      decltype(_impl_._has_bits_){}
 2836|  2.11k|    , /*decltype(_impl_._cached_size_)*/{}
 2837|  2.11k|    , decltype(_impl_.integer_value_){nullptr}
 2838|  2.11k|    , decltype(_impl_.value_){}
 2839|  2.11k|    , /*decltype(_impl_._oneof_case_)*/{}
 2840|  2.11k|  };
 2841|  2.11k|  clear_has_value();
 2842|  2.11k|}
_ZN10json_proto11NumberValue10SharedDtorEv:
 2853|  2.11k|inline void NumberValue::SharedDtor() {
 2854|  2.11k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  2.11k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  2.11k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  2.11k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|  2.11k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  2.11k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  2.11k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2855|  2.11k|  if (this != internal_default_instance()) delete _impl_.integer_value_;
  ------------------
  |  Branch (2855:7): [True: 2.11k, False: 0]
  ------------------
 2856|  2.11k|  if (has_value()) {
  ------------------
  |  Branch (2856:7): [True: 1.39k, False: 720]
  ------------------
 2857|  1.39k|    clear_value();
 2858|  1.39k|  }
 2859|  2.11k|}
_ZN10json_proto11StringValue10SharedCtorEPN6google8protobuf5ArenaE:
 3197|    810|inline void StringValue::SharedCtor(::_pb::Arena* arena) {
 3198|    810|  (void)arena;
 3199|    810|  new (&_impl_) Impl_{
 3200|    810|      decltype(_impl_._has_bits_){}
 3201|    810|    , /*decltype(_impl_._cached_size_)*/{}
 3202|    810|    , decltype(_impl_.value_) {}
 3203|       |
 3204|    810|  };
 3205|    810|  _impl_.value_.InitDefault();
 3206|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 3207|       |        _impl_.value_.Set("", GetArenaForAllocation());
 3208|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 3209|    810|}
_ZN10json_proto11StringValue10SharedDtorEv:
 3220|    810|inline void StringValue::SharedDtor() {
 3221|    810|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|    810|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    810|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    810|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    810|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    810|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    810|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3222|    810|  _impl_.value_.Destroy();
 3223|    810|}
_ZN10json_proto12BooleanValue10SharedCtorEPN6google8protobuf5ArenaE:
 3401|    358|inline void BooleanValue::SharedCtor(::_pb::Arena* arena) {
 3402|    358|  (void)arena;
 3403|    358|  new (&_impl_) Impl_{
 3404|    358|      decltype(_impl_._has_bits_){}
 3405|    358|    , /*decltype(_impl_._cached_size_)*/{}
 3406|    358|    , decltype(_impl_.value_) { false }
 3407|       |
 3408|    358|  };
 3409|    358|}
_ZN10json_proto12BooleanValue10SharedDtorEv:
 3420|    358|inline void BooleanValue::SharedDtor() {
 3421|    358|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|    358|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    358|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    358|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  157|    358|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    358|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    358|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3422|    358|}

_ZN10json_proto12JsonParseAPIC2Ev:
  123|  3.16k|  inline JsonParseAPI() : JsonParseAPI(nullptr) {}
_ZNK10json_proto12JsonParseAPI12object_valueEv:
 2222|  3.01k|inline const ::json_proto::JsonObject& JsonParseAPI::object_value() const {
 2223|       |  // @@protoc_insertion_point(field_get:json_proto.JsonParseAPI.object_value)
 2224|  3.01k|  return _internal_object_value();
 2225|  3.01k|}
_ZNK10json_proto12JsonParseAPI22_internal_object_valueEv:
 2217|  3.01k|inline const ::json_proto::JsonObject& JsonParseAPI::_internal_object_value() const {
 2218|  3.01k|  const ::json_proto::JsonObject* p = _impl_.object_value_;
 2219|  3.01k|  return p != nullptr ? *p : reinterpret_cast<const ::json_proto::JsonObject&>(
  ------------------
  |  Branch (2219:10): [True: 3.01k, False: 0]
  ------------------
 2220|      0|      ::json_proto::_JsonObject_default_instance_);
 2221|  3.01k|}
_ZNK10json_proto12JsonParseAPI8settingsEv:
 2191|  3.01k|inline ::int32_t JsonParseAPI::settings() const {
 2192|       |  // @@protoc_insertion_point(field_get:json_proto.JsonParseAPI.settings)
 2193|  3.01k|  return _internal_settings();
 2194|  3.01k|}
_ZNK10json_proto12JsonParseAPI18_internal_settingsEv:
 2199|  3.01k|inline ::int32_t JsonParseAPI::_internal_settings() const {
 2200|  3.01k|  return _impl_.settings_;
 2201|  3.01k|}
_ZN10json_proto12JsonParseAPI25internal_default_instanceEv:
  170|  3.16k|  static inline const JsonParseAPI* internal_default_instance() {
  171|  3.16k|    return reinterpret_cast<const JsonParseAPI*>(
  172|  3.16k|               &_JsonParseAPI_default_instance_);
  173|  3.16k|  }
_ZN10json_proto10JsonObject25internal_default_instanceEv:
  345|  4.70k|  static inline const JsonObject* internal_default_instance() {
  346|  4.70k|    return reinterpret_cast<const JsonObject*>(
  347|  4.70k|               &_JsonObject_default_instance_);
  348|  4.70k|  }
_ZNK10json_proto10JsonObject3NewEPN6google8protobuf5ArenaE:
  376|  4.70k|  JsonObject* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
  377|  4.70k|    return CreateMaybeMessage<JsonObject>(arena);
  378|  4.70k|  }
_ZNK10json_proto9JsonValue3NewEPN6google8protobuf5ArenaE:
  583|  11.9k|  JsonValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
  584|  11.9k|    return CreateMaybeMessage<JsonValue>(arena);
  585|  11.9k|  }
_ZN10json_proto9JsonValue5Impl_10ValueUnionC2Ev:
  744|  11.9k|      constexpr ValueUnion() : _constinit_{} {}
_ZNK10json_proto10ArrayValue3NewEPN6google8protobuf5ArenaE:
  841|  1.13k|  ArrayValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
  842|  1.13k|    return CreateMaybeMessage<ArrayValue>(arena);
  843|  1.13k|  }
_ZNK10json_proto13NumberInteger3NewEPN6google8protobuf5ArenaE:
 1003|  2.32k|  NumberInteger* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1004|  2.32k|    return CreateMaybeMessage<NumberInteger>(arena);
 1005|  2.32k|  }
_ZNK10json_proto11NumberFloat3NewEPN6google8protobuf5ArenaE:
 1159|    492|  NumberFloat* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1160|    492|    return CreateMaybeMessage<NumberFloat>(arena);
 1161|    492|  }
_ZNK10json_proto14NumberExponent3NewEPN6google8protobuf5ArenaE:
 1315|    609|  NumberExponent* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1316|    609|    return CreateMaybeMessage<NumberExponent>(arena);
 1317|    609|  }
_ZNK10json_proto18NumberExponentFrac3NewEPN6google8protobuf5ArenaE:
 1500|    298|  NumberExponentFrac* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1501|    298|    return CreateMaybeMessage<NumberExponentFrac>(arena);
 1502|    298|  }
_ZN10json_proto11NumberValue25internal_default_instanceEv:
 1661|  2.11k|  static inline const NumberValue* internal_default_instance() {
 1662|  2.11k|    return reinterpret_cast<const NumberValue*>(
 1663|  2.11k|               &_NumberValue_default_instance_);
 1664|  2.11k|  }
_ZNK10json_proto11NumberValue3NewEPN6google8protobuf5ArenaE:
 1692|  2.11k|  NumberValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1693|  2.11k|    return CreateMaybeMessage<NumberValue>(arena);
 1694|  2.11k|  }
_ZN10json_proto11NumberValue5Impl_10ValueUnionC2Ev:
 1831|  2.11k|      constexpr ValueUnion() : _constinit_{} {}
_ZNK10json_proto11StringValue3NewEPN6google8protobuf5ArenaE:
 1925|    810|  StringValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 1926|    810|    return CreateMaybeMessage<StringValue>(arena);
 1927|    810|  }
_ZNK10json_proto12BooleanValue3NewEPN6google8protobuf5ArenaE:
 2091|    358|  BooleanValue* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
 2092|    358|    return CreateMaybeMessage<BooleanValue>(arena);
 2093|    358|  }
_ZNK10json_proto10JsonObject4nameEv:
 2332|  3.76k|inline const std::string& JsonObject::name() const {
 2333|       |  // @@protoc_insertion_point(field_get:json_proto.JsonObject.name)
 2334|  3.76k|  return _internal_name();
 2335|  3.76k|}
_ZNK10json_proto10JsonObject14_internal_nameEv:
 2348|  3.76k|inline const std::string& JsonObject::_internal_name() const {
 2349|  3.76k|  return _impl_.name_.Get();
 2350|  3.76k|}
_ZNK10json_proto10JsonObject15_internal_valueEv:
 2398|  3.76k|inline const ::json_proto::JsonValue& JsonObject::_internal_value() const {
 2399|  3.76k|  const ::json_proto::JsonValue* p = _impl_.value_;
 2400|  3.76k|  return p != nullptr ? *p : reinterpret_cast<const ::json_proto::JsonValue&>(
  ------------------
  |  Branch (2400:10): [True: 3.76k, False: 0]
  ------------------
 2401|      0|      ::json_proto::_JsonValue_default_instance_);
 2402|  3.76k|}
_ZNK10json_proto10JsonObject5valueEv:
 2403|  3.76k|inline const ::json_proto::JsonValue& JsonObject::value() const {
 2404|       |  // @@protoc_insertion_point(field_get:json_proto.JsonObject.value)
 2405|  3.76k|  return _internal_value();
 2406|  3.76k|}
_ZNK10json_proto9JsonValue16has_object_valueEv:
 2480|  8.87k|inline bool JsonValue::has_object_value() const {
 2481|  8.87k|  return value_case() == kObjectValue;
 2482|  8.87k|}
_ZNK10json_proto9JsonValue22_internal_object_valueEv:
 2511|    748|inline const ::json_proto::JsonObject& JsonValue::_internal_object_value() const {
 2512|    748|  return value_case() == kObjectValue
  ------------------
  |  Branch (2512:10): [True: 748, False: 0]
  ------------------
 2513|    748|      ? *_impl_.value_.object_value_
 2514|    748|      : reinterpret_cast< ::json_proto::JsonObject&>(::json_proto::_JsonObject_default_instance_);
 2515|    748|}
_ZNK10json_proto9JsonValue12object_valueEv:
 2516|    748|inline const ::json_proto::JsonObject& JsonValue::object_value() const {
 2517|       |  // @@protoc_insertion_point(field_get:json_proto.JsonValue.object_value)
 2518|    748|  return _internal_object_value();
 2519|    748|}
_ZNK10json_proto9JsonValue15has_array_valueEv:
 2554|  8.12k|inline bool JsonValue::has_array_value() const {
 2555|  8.12k|  return value_case() == kArrayValue;
 2556|  8.12k|}
_ZNK10json_proto9JsonValue21_internal_array_valueEv:
 2585|    795|inline const ::json_proto::ArrayValue& JsonValue::_internal_array_value() const {
 2586|    795|  return value_case() == kArrayValue
  ------------------
  |  Branch (2586:10): [True: 795, False: 0]
  ------------------
 2587|    795|      ? *_impl_.value_.array_value_
 2588|    795|      : reinterpret_cast< ::json_proto::ArrayValue&>(::json_proto::_ArrayValue_default_instance_);
 2589|    795|}
_ZNK10json_proto9JsonValue11array_valueEv:
 2590|    795|inline const ::json_proto::ArrayValue& JsonValue::array_value() const {
 2591|       |  // @@protoc_insertion_point(field_get:json_proto.JsonValue.array_value)
 2592|    795|  return _internal_array_value();
 2593|    795|}
_ZNK10json_proto9JsonValue16has_number_valueEv:
 2628|  7.33k|inline bool JsonValue::has_number_value() const {
 2629|  7.33k|  return value_case() == kNumberValue;
 2630|  7.33k|}
_ZNK10json_proto9JsonValue22_internal_number_valueEv:
 2659|  1.55k|inline const ::json_proto::NumberValue& JsonValue::_internal_number_value() const {
 2660|  1.55k|  return value_case() == kNumberValue
  ------------------
  |  Branch (2660:10): [True: 1.55k, False: 0]
  ------------------
 2661|  1.55k|      ? *_impl_.value_.number_value_
 2662|  1.55k|      : reinterpret_cast< ::json_proto::NumberValue&>(::json_proto::_NumberValue_default_instance_);
 2663|  1.55k|}
_ZNK10json_proto9JsonValue12number_valueEv:
 2664|  1.55k|inline const ::json_proto::NumberValue& JsonValue::number_value() const {
 2665|       |  // @@protoc_insertion_point(field_get:json_proto.JsonValue.number_value)
 2666|  1.55k|  return _internal_number_value();
 2667|  1.55k|}
_ZNK10json_proto9JsonValue16has_string_valueEv:
 2702|  5.77k|inline bool JsonValue::has_string_value() const {
 2703|  5.77k|  return value_case() == kStringValue;
 2704|  5.77k|}
_ZNK10json_proto9JsonValue22_internal_string_valueEv:
 2733|    631|inline const ::json_proto::StringValue& JsonValue::_internal_string_value() const {
 2734|    631|  return value_case() == kStringValue
  ------------------
  |  Branch (2734:10): [True: 631, False: 0]
  ------------------
 2735|    631|      ? *_impl_.value_.string_value_
 2736|    631|      : reinterpret_cast< ::json_proto::StringValue&>(::json_proto::_StringValue_default_instance_);
 2737|    631|}
_ZNK10json_proto9JsonValue12string_valueEv:
 2738|    631|inline const ::json_proto::StringValue& JsonValue::string_value() const {
 2739|       |  // @@protoc_insertion_point(field_get:json_proto.JsonValue.string_value)
 2740|    631|  return _internal_string_value();
 2741|    631|}
_ZNK10json_proto9JsonValue17has_boolean_valueEv:
 2776|  5.14k|inline bool JsonValue::has_boolean_value() const {
 2777|  5.14k|  return value_case() == kBooleanValue;
 2778|  5.14k|}
_ZNK10json_proto9JsonValue23_internal_boolean_valueEv:
 2807|    203|inline const ::json_proto::BooleanValue& JsonValue::_internal_boolean_value() const {
 2808|    203|  return value_case() == kBooleanValue
  ------------------
  |  Branch (2808:10): [True: 203, False: 0]
  ------------------
 2809|    203|      ? *_impl_.value_.boolean_value_
 2810|    203|      : reinterpret_cast< ::json_proto::BooleanValue&>(::json_proto::_BooleanValue_default_instance_);
 2811|    203|}
_ZNK10json_proto9JsonValue13boolean_valueEv:
 2812|    203|inline const ::json_proto::BooleanValue& JsonValue::boolean_value() const {
 2813|       |  // @@protoc_insertion_point(field_get:json_proto.JsonValue.boolean_value)
 2814|    203|  return _internal_boolean_value();
 2815|    203|}
_ZNK10json_proto9JsonValue9has_valueEv:
 2849|  11.9k|inline bool JsonValue::has_value() const {
 2850|  11.9k|  return value_case() != VALUE_NOT_SET;
 2851|  11.9k|}
_ZN10json_proto9JsonValue15clear_has_valueEv:
 2852|  11.9k|inline void JsonValue::clear_has_value() {
 2853|  11.9k|  _impl_._oneof_case_[0] = VALUE_NOT_SET;
 2854|  11.9k|}
_ZNK10json_proto9JsonValue10value_caseEv:
 2855|  58.2k|inline JsonValue::ValueCase JsonValue::value_case() const {
 2856|  58.2k|  return JsonValue::ValueCase(_impl_._oneof_case_[0]);
 2857|  58.2k|}
_ZNK10json_proto10ArrayValue5valueEv:
 2897|    795|ArrayValue::value() const {
 2898|       |  // @@protoc_insertion_point(field_list:json_proto.ArrayValue.value)
 2899|    795|  return _impl_.value_;
 2900|    795|}
_ZNK10json_proto13NumberInteger5valueEv:
 2915|    467|inline ::int64_t NumberInteger::value() const {
 2916|       |  // @@protoc_insertion_point(field_get:json_proto.NumberInteger.value)
 2917|    467|  return _internal_value();
 2918|    467|}
_ZNK10json_proto13NumberInteger15_internal_valueEv:
 2923|    467|inline ::int64_t NumberInteger::_internal_value() const {
 2924|    467|  return _impl_.value_;
 2925|    467|}
_ZNK10json_proto11NumberFloat5valueEv:
 2944|    409|inline double NumberFloat::value() const {
 2945|       |  // @@protoc_insertion_point(field_get:json_proto.NumberFloat.value)
 2946|    409|  return _internal_value();
 2947|    409|}
_ZNK10json_proto11NumberFloat15_internal_valueEv:
 2952|    409|inline double NumberFloat::_internal_value() const {
 2953|    409|  return _impl_.value_;
 2954|    409|}
_ZNK10json_proto14NumberExponent4baseEv:
 2973|    676|inline ::int32_t NumberExponent::base() const {
 2974|       |  // @@protoc_insertion_point(field_get:json_proto.NumberExponent.base)
 2975|    676|  return _internal_base();
 2976|    676|}
_ZNK10json_proto14NumberExponent14_internal_baseEv:
 2981|    676|inline ::int32_t NumberExponent::_internal_base() const {
 2982|    676|  return _impl_.base_;
 2983|    676|}
_ZNK10json_proto14NumberExponent8exponentEv:
 2998|    676|inline ::int32_t NumberExponent::exponent() const {
 2999|       |  // @@protoc_insertion_point(field_get:json_proto.NumberExponent.exponent)
 3000|    676|  return _internal_exponent();
 3001|    676|}
_ZNK10json_proto14NumberExponent18_internal_exponentEv:
 3006|    676|inline ::int32_t NumberExponent::_internal_exponent() const {
 3007|    676|  return _impl_.exponent_;
 3008|    676|}
_ZNK10json_proto14NumberExponent13use_uppercaseEv:
 3023|    676|inline bool NumberExponent::use_uppercase() const {
 3024|       |  // @@protoc_insertion_point(field_get:json_proto.NumberExponent.use_uppercase)
 3025|    676|  return _internal_use_uppercase();
 3026|    676|}
_ZNK10json_proto14NumberExponent23_internal_use_uppercaseEv:
 3031|    676|inline bool NumberExponent::_internal_use_uppercase() const {
 3032|    676|  return _impl_.use_uppercase_;
 3033|    676|}
_ZNK10json_proto11NumberValue23_internal_integer_valueEv:
 3132|    467|inline const ::json_proto::NumberInteger& NumberValue::_internal_integer_value() const {
 3133|    467|  const ::json_proto::NumberInteger* p = _impl_.integer_value_;
 3134|    467|  return p != nullptr ? *p : reinterpret_cast<const ::json_proto::NumberInteger&>(
  ------------------
  |  Branch (3134:10): [True: 467, False: 0]
  ------------------
 3135|      0|      ::json_proto::_NumberInteger_default_instance_);
 3136|    467|}
_ZNK10json_proto11NumberValue13integer_valueEv:
 3137|    467|inline const ::json_proto::NumberInteger& NumberValue::integer_value() const {
 3138|       |  // @@protoc_insertion_point(field_get:json_proto.NumberValue.integer_value)
 3139|    467|  return _internal_integer_value();
 3140|    467|}
_ZNK10json_proto11NumberValue15has_float_valueEv:
 3210|  1.55k|inline bool NumberValue::has_float_value() const {
 3211|  1.55k|  return value_case() == kFloatValue;
 3212|  1.55k|}
_ZNK10json_proto11NumberValue21_internal_float_valueEv:
 3241|    409|inline const ::json_proto::NumberFloat& NumberValue::_internal_float_value() const {
 3242|    409|  return value_case() == kFloatValue
  ------------------
  |  Branch (3242:10): [True: 409, False: 0]
  ------------------
 3243|    409|      ? *_impl_.value_.float_value_
 3244|    409|      : reinterpret_cast< ::json_proto::NumberFloat&>(::json_proto::_NumberFloat_default_instance_);
 3245|    409|}
_ZNK10json_proto11NumberValue11float_valueEv:
 3246|    409|inline const ::json_proto::NumberFloat& NumberValue::float_value() const {
 3247|       |  // @@protoc_insertion_point(field_get:json_proto.NumberValue.float_value)
 3248|    409|  return _internal_float_value();
 3249|    409|}
_ZNK10json_proto11NumberValue18has_exponent_valueEv:
 3284|  1.14k|inline bool NumberValue::has_exponent_value() const {
 3285|  1.14k|  return value_case() == kExponentValue;
 3286|  1.14k|}
_ZNK10json_proto11NumberValue24_internal_exponent_valueEv:
 3315|    676|inline const ::json_proto::NumberExponent& NumberValue::_internal_exponent_value() const {
 3316|    676|  return value_case() == kExponentValue
  ------------------
  |  Branch (3316:10): [True: 445, False: 231]
  ------------------
 3317|    676|      ? *_impl_.value_.exponent_value_
 3318|    676|      : reinterpret_cast< ::json_proto::NumberExponent&>(::json_proto::_NumberExponent_default_instance_);
 3319|    676|}
_ZNK10json_proto11NumberValue14exponent_valueEv:
 3320|    676|inline const ::json_proto::NumberExponent& NumberValue::exponent_value() const {
 3321|       |  // @@protoc_insertion_point(field_get:json_proto.NumberValue.exponent_value)
 3322|    676|  return _internal_exponent_value();
 3323|    676|}
_ZNK10json_proto11NumberValue23has_exponent_frac_valueEv:
 3358|    698|inline bool NumberValue::has_exponent_frac_value() const {
 3359|    698|  return value_case() == kExponentFracValue;
 3360|    698|}
_ZNK10json_proto11NumberValue9has_valueEv:
 3431|  2.11k|inline bool NumberValue::has_value() const {
 3432|  2.11k|  return value_case() != VALUE_NOT_SET;
 3433|  2.11k|}
_ZN10json_proto11NumberValue15clear_has_valueEv:
 3434|  2.11k|inline void NumberValue::clear_has_value() {
 3435|  2.11k|  _impl_._oneof_case_[0] = VALUE_NOT_SET;
 3436|  2.11k|}
_ZNK10json_proto11NumberValue10value_caseEv:
 3437|  7.99k|inline NumberValue::ValueCase NumberValue::value_case() const {
 3438|  7.99k|  return NumberValue::ValueCase(_impl_._oneof_case_[0]);
 3439|  7.99k|}
_ZNK10json_proto11StringValue5valueEv:
 3453|    631|inline const std::string& StringValue::value() const {
 3454|       |  // @@protoc_insertion_point(field_get:json_proto.StringValue.value)
 3455|    631|  return _internal_value();
 3456|    631|}
_ZNK10json_proto11StringValue15_internal_valueEv:
 3469|    631|inline const std::string& StringValue::_internal_value() const {
 3470|    631|  return _impl_.value_.Get();
 3471|    631|}
_ZNK10json_proto12BooleanValue5valueEv:
 3522|    203|inline bool BooleanValue::value() const {
 3523|       |  // @@protoc_insertion_point(field_get:json_proto.BooleanValue.value)
 3524|    203|  return _internal_value();
 3525|    203|}
_ZNK10json_proto12BooleanValue15_internal_valueEv:
 3530|    203|inline bool BooleanValue::_internal_value() const {
 3531|    203|  return _impl_.value_;
 3532|    203|}

_ZN4Json10CharReader7FactoryD2Ev:
  269|  3.01k|    virtual ~Factory() = default;
_ZN4Json10CharReaderD2Ev:
  247|  3.01k|  virtual ~CharReader() = default;

_ZN4Json5Value7setTypeENS_9ValueTypeE:
  612|  2.19M|  void setType(ValueType v) {
  613|  2.19M|    bits_.value_type_ = static_cast<unsigned char>(v);
  614|  2.19M|  }
_ZNK4Json5Value11isAllocatedEv:
  615|  1.22k|  bool isAllocated() const { return bits_.allocated_; }
_ZN4Json5Value14setIsAllocatedEb:
  616|  2.19M|  void setIsAllocated(bool v) { bits_.allocated_ = v; }
_ZN4Json5Value8CommentsC2Ev:
  653|  3.23M|    Comments() = default;

_ZN4Json11OurFeatures3allEv:
  882|  3.01k|OurFeatures OurFeatures::all() { return {}; }
_ZN4Json9OurReader15containsNewLineEPKcS2_:
 1004|  1.53k|                                OurReader::Location end) {
 1005|  1.53k|  return std::any_of(begin, end, [](char b) { return b == '\n' || b == '\r'; });
 1006|  1.53k|}
_ZN4Json9OurReaderC2ERKNS_11OurFeaturesE:
 1008|  3.01k|OurReader::OurReader(OurFeatures const& features) : features_(features) {}
_ZN4Json9OurReader5parseEPKcS2_RNS_5ValueEb:
 1011|  3.01k|                      bool collectComments) {
 1012|  3.01k|  if (!features_.allowComments_) {
  ------------------
  |  Branch (1012:7): [True: 0, False: 3.01k]
  ------------------
 1013|      0|    collectComments = false;
 1014|      0|  }
 1015|       |
 1016|  3.01k|  begin_ = beginDoc;
 1017|  3.01k|  end_ = endDoc;
 1018|  3.01k|  collectComments_ = collectComments;
 1019|  3.01k|  current_ = begin_;
 1020|  3.01k|  lastValueEnd_ = nullptr;
 1021|  3.01k|  lastValue_ = nullptr;
 1022|  3.01k|  commentsBefore_.clear();
 1023|  3.01k|  errors_.clear();
 1024|  3.01k|  while (!nodes_.empty())
  ------------------
  |  Branch (1024:10): [True: 0, False: 3.01k]
  ------------------
 1025|      0|    nodes_.pop();
 1026|  3.01k|  nodes_.push(&root);
 1027|       |
 1028|       |  // skip byte order mark if it exists at the beginning of the UTF-8 text.
 1029|  3.01k|  skipBom(features_.skipBom_);
 1030|  3.01k|  bool successful = readValue();
 1031|  3.01k|  nodes_.pop();
 1032|  3.01k|  Token token;
 1033|  3.01k|  skipCommentTokens(token);
 1034|  3.01k|  if (features_.failIfExtra_ && (token.type_ != tokenEndOfStream)) {
  ------------------
  |  Branch (1034:7): [True: 686, False: 2.33k]
  |  Branch (1034:33): [True: 20, False: 666]
  ------------------
 1035|     20|    addError("Extra non-whitespace after JSON value.", token);
 1036|     20|    return false;
 1037|     20|  }
 1038|  2.99k|  if (collectComments_ && !commentsBefore_.empty())
  ------------------
  |  Branch (1038:7): [True: 241, False: 2.75k]
  |  Branch (1038:27): [True: 110, False: 131]
  ------------------
 1039|    110|    root.setComment(commentsBefore_, commentAfter);
 1040|  2.99k|  if (features_.strictRoot_) {
  ------------------
  |  Branch (1040:7): [True: 0, False: 2.99k]
  ------------------
 1041|      0|    if (!root.isArray() && !root.isObject()) {
  ------------------
  |  Branch (1041:9): [True: 0, False: 0]
  |  Branch (1041:28): [True: 0, False: 0]
  ------------------
 1042|       |      // Set error location to start of doc, ideally should be first token found
 1043|       |      // in doc
 1044|      0|      token.type_ = tokenError;
 1045|      0|      token.start_ = beginDoc;
 1046|      0|      token.end_ = endDoc;
 1047|      0|      addError(
 1048|      0|          "A valid JSON document must be either an array or an object value.",
 1049|      0|          token);
 1050|      0|      return false;
 1051|      0|    }
 1052|      0|  }
 1053|  2.99k|  return successful;
 1054|  2.99k|}
_ZN4Json9OurReader9readValueEv:
 1056|   521k|bool OurReader::readValue() {
 1057|       |  //  To preserve the old behaviour we cast size_t to int.
 1058|   521k|  if (nodes_.size() > features_.stackLimit_)
  ------------------
  |  Branch (1058:7): [True: 27, False: 521k]
  ------------------
 1059|     27|    throwRuntimeError("Exceeded stackLimit in readValue().");
 1060|   521k|  Token token;
 1061|   521k|  skipCommentTokens(token);
 1062|   521k|  bool successful = true;
 1063|       |
 1064|   521k|  if (collectComments_ && !commentsBefore_.empty()) {
  ------------------
  |  Branch (1064:7): [True: 3.03k, False: 518k]
  |  Branch (1064:27): [True: 1.30k, False: 1.73k]
  ------------------
 1065|  1.30k|    currentValue().setComment(commentsBefore_, commentBefore);
 1066|  1.30k|    commentsBefore_.clear();
 1067|  1.30k|  }
 1068|       |
 1069|   521k|  switch (token.type_) {
 1070|  14.3k|  case tokenObjectBegin:
  ------------------
  |  Branch (1070:3): [True: 14.3k, False: 507k]
  ------------------
 1071|  14.3k|    successful = readObject(token);
 1072|  14.3k|    currentValue().setOffsetLimit(current_ - begin_);
 1073|  14.3k|    break;
 1074|  60.8k|  case tokenArrayBegin:
  ------------------
  |  Branch (1074:3): [True: 60.8k, False: 461k]
  ------------------
 1075|  60.8k|    successful = readArray(token);
 1076|  60.8k|    currentValue().setOffsetLimit(current_ - begin_);
 1077|  60.8k|    break;
 1078|   440k|  case tokenNumber:
  ------------------
  |  Branch (1078:3): [True: 440k, False: 81.3k]
  ------------------
 1079|   440k|    successful = decodeNumber(token);
 1080|   440k|    break;
 1081|  1.22k|  case tokenString:
  ------------------
  |  Branch (1081:3): [True: 1.22k, False: 520k]
  ------------------
 1082|  1.22k|    successful = decodeString(token);
 1083|  1.22k|    break;
 1084|  1.53k|  case tokenTrue: {
  ------------------
  |  Branch (1084:3): [True: 1.53k, False: 520k]
  ------------------
 1085|  1.53k|    Value v(true);
 1086|  1.53k|    currentValue().swapPayload(v);
 1087|  1.53k|    currentValue().setOffsetStart(token.start_ - begin_);
 1088|  1.53k|    currentValue().setOffsetLimit(token.end_ - begin_);
 1089|  1.53k|  } break;
 1090|    210|  case tokenFalse: {
  ------------------
  |  Branch (1090:3): [True: 210, False: 521k]
  ------------------
 1091|    210|    Value v(false);
 1092|    210|    currentValue().swapPayload(v);
 1093|    210|    currentValue().setOffsetStart(token.start_ - begin_);
 1094|    210|    currentValue().setOffsetLimit(token.end_ - begin_);
 1095|    210|  } break;
 1096|  2.80k|  case tokenNull: {
  ------------------
  |  Branch (1096:3): [True: 2.80k, False: 519k]
  ------------------
 1097|  2.80k|    Value v;
 1098|  2.80k|    currentValue().swapPayload(v);
 1099|  2.80k|    currentValue().setOffsetStart(token.start_ - begin_);
 1100|  2.80k|    currentValue().setOffsetLimit(token.end_ - begin_);
 1101|  2.80k|  } break;
 1102|      0|  case tokenNaN: {
  ------------------
  |  Branch (1102:3): [True: 0, False: 521k]
  ------------------
 1103|      0|    Value v(std::numeric_limits<double>::quiet_NaN());
 1104|      0|    currentValue().swapPayload(v);
 1105|      0|    currentValue().setOffsetStart(token.start_ - begin_);
 1106|      0|    currentValue().setOffsetLimit(token.end_ - begin_);
 1107|      0|  } break;
 1108|      0|  case tokenPosInf: {
  ------------------
  |  Branch (1108:3): [True: 0, False: 521k]
  ------------------
 1109|      0|    Value v(std::numeric_limits<double>::infinity());
 1110|      0|    currentValue().swapPayload(v);
 1111|      0|    currentValue().setOffsetStart(token.start_ - begin_);
 1112|      0|    currentValue().setOffsetLimit(token.end_ - begin_);
 1113|      0|  } break;
 1114|      0|  case tokenNegInf: {
  ------------------
  |  Branch (1114:3): [True: 0, False: 521k]
  ------------------
 1115|      0|    Value v(-std::numeric_limits<double>::infinity());
 1116|      0|    currentValue().swapPayload(v);
 1117|      0|    currentValue().setOffsetStart(token.start_ - begin_);
 1118|      0|    currentValue().setOffsetLimit(token.end_ - begin_);
 1119|      0|  } break;
 1120|      2|  case tokenArraySeparator:
  ------------------
  |  Branch (1120:3): [True: 2, False: 521k]
  ------------------
 1121|      9|  case tokenObjectEnd:
  ------------------
  |  Branch (1121:3): [True: 7, False: 521k]
  ------------------
 1122|     11|  case tokenArrayEnd:
  ------------------
  |  Branch (1122:3): [True: 2, False: 521k]
  ------------------
 1123|     11|    if (features_.allowDroppedNullPlaceholders_) {
  ------------------
  |  Branch (1123:9): [True: 0, False: 11]
  ------------------
 1124|       |      // "Un-read" the current token and mark the current value as a null
 1125|       |      // token.
 1126|      0|      current_--;
 1127|      0|      Value v;
 1128|      0|      currentValue().swapPayload(v);
 1129|      0|      currentValue().setOffsetStart(current_ - begin_ - 1);
 1130|      0|      currentValue().setOffsetLimit(current_ - begin_);
 1131|      0|      break;
 1132|      0|    } // else, fall through ...
 1133|    389|  default:
  ------------------
  |  Branch (1133:3): [True: 378, False: 521k]
  ------------------
 1134|    389|    currentValue().setOffsetStart(token.start_ - begin_);
 1135|    389|    currentValue().setOffsetLimit(token.end_ - begin_);
 1136|    389|    return addError("Syntax error: value, object or array expected.", token);
 1137|   521k|  }
 1138|       |
 1139|   494k|  if (collectComments_) {
  ------------------
  |  Branch (1139:7): [True: 2.95k, False: 491k]
  ------------------
 1140|  2.95k|    lastValueEnd_ = current_;
 1141|  2.95k|    lastValueHasAComment_ = false;
 1142|  2.95k|    lastValue_ = &currentValue();
 1143|  2.95k|  }
 1144|       |
 1145|   494k|  return successful;
 1146|   521k|}
_ZN4Json9OurReader17skipCommentTokensERNS0_5TokenE:
 1148|   524k|void OurReader::skipCommentTokens(Token& token) {
 1149|   524k|  if (features_.allowComments_) {
  ------------------
  |  Branch (1149:7): [True: 524k, False: 0]
  ------------------
 1150|   526k|    do {
 1151|   526k|      readToken(token);
 1152|   526k|    } while (token.type_ == tokenComment);
  ------------------
  |  Branch (1152:14): [True: 1.56k, False: 524k]
  ------------------
 1153|   524k|  } else {
 1154|      0|    readToken(token);
 1155|      0|  }
 1156|   524k|}
_ZN4Json9OurReader9readTokenERNS0_5TokenE:
 1158|  1.42M|bool OurReader::readToken(Token& token) {
 1159|  1.42M|  skipSpaces();
 1160|  1.42M|  token.start_ = current_;
 1161|  1.42M|  Char c = getNextChar();
 1162|  1.42M|  bool ok = true;
 1163|  1.42M|  switch (c) {
 1164|  14.6k|  case '{':
  ------------------
  |  Branch (1164:3): [True: 14.6k, False: 1.41M]
  ------------------
 1165|  14.6k|    token.type_ = tokenObjectBegin;
 1166|  14.6k|    break;
 1167|  3.73k|  case '}':
  ------------------
  |  Branch (1167:3): [True: 3.73k, False: 1.42M]
  ------------------
 1168|  3.73k|    token.type_ = tokenObjectEnd;
 1169|  3.73k|    break;
 1170|  61.1k|  case '[':
  ------------------
  |  Branch (1170:3): [True: 61.1k, False: 1.36M]
  ------------------
 1171|  61.1k|    token.type_ = tokenArrayBegin;
 1172|  61.1k|    break;
 1173|  2.16k|  case ']':
  ------------------
  |  Branch (1173:3): [True: 2.16k, False: 1.42M]
  ------------------
 1174|  2.16k|    token.type_ = tokenArrayEnd;
 1175|  2.16k|    break;
 1176|  37.5k|  case '"':
  ------------------
  |  Branch (1176:3): [True: 37.5k, False: 1.39M]
  ------------------
 1177|  37.5k|    token.type_ = tokenString;
 1178|  37.5k|    ok = readString();
 1179|  37.5k|    break;
 1180|    197|  case '\'':
  ------------------
  |  Branch (1180:3): [True: 197, False: 1.42M]
  ------------------
 1181|    197|    if (features_.allowSingleQuotes_) {
  ------------------
  |  Branch (1181:9): [True: 0, False: 197]
  ------------------
 1182|      0|      token.type_ = tokenString;
 1183|      0|      ok = readStringSingleQuote();
 1184|    197|    } else {
 1185|       |      // If we don't allow single quotes, this is a failure case.
 1186|    197|      ok = false;
 1187|    197|    }
 1188|    197|    break;
 1189|  6.18k|  case '/':
  ------------------
  |  Branch (1189:3): [True: 6.18k, False: 1.42M]
  ------------------
 1190|  6.18k|    token.type_ = tokenComment;
 1191|  6.18k|    ok = readComment();
 1192|  6.18k|    break;
 1193|  11.3k|  case '0':
  ------------------
  |  Branch (1193:3): [True: 11.3k, False: 1.41M]
  ------------------
 1194|  22.7k|  case '1':
  ------------------
  |  Branch (1194:3): [True: 11.3k, False: 1.41M]
  ------------------
 1195|  25.0k|  case '2':
  ------------------
  |  Branch (1195:3): [True: 2.31k, False: 1.42M]
  ------------------
 1196|  26.0k|  case '3':
  ------------------
  |  Branch (1196:3): [True: 981, False: 1.42M]
  ------------------
 1197|   398k|  case '4':
  ------------------
  |  Branch (1197:3): [True: 372k, False: 1.05M]
  ------------------
 1198|   399k|  case '5':
  ------------------
  |  Branch (1198:3): [True: 1.38k, False: 1.42M]
  ------------------
 1199|   400k|  case '6':
  ------------------
  |  Branch (1199:3): [True: 769, False: 1.42M]
  ------------------
 1200|   400k|  case '7':
  ------------------
  |  Branch (1200:3): [True: 685, False: 1.42M]
  ------------------
 1201|   401k|  case '8':
  ------------------
  |  Branch (1201:3): [True: 336, False: 1.42M]
  ------------------
 1202|   402k|  case '9':
  ------------------
  |  Branch (1202:3): [True: 737, False: 1.42M]
  ------------------
 1203|   402k|    token.type_ = tokenNumber;
 1204|   402k|    readNumber(false);
 1205|   402k|    break;
 1206|  49.4k|  case '-':
  ------------------
  |  Branch (1206:3): [True: 49.4k, False: 1.37M]
  ------------------
 1207|  49.4k|    if (readNumber(true)) {
  ------------------
  |  Branch (1207:9): [True: 49.2k, False: 201]
  ------------------
 1208|  49.2k|      token.type_ = tokenNumber;
 1209|  49.2k|    } else {
 1210|    201|      token.type_ = tokenNegInf;
 1211|    201|      ok = features_.allowSpecialFloats_ && match("nfinity", 7);
  ------------------
  |  Branch (1211:12): [True: 0, False: 201]
  |  Branch (1211:45): [True: 0, False: 0]
  ------------------
 1212|    201|    }
 1213|  49.4k|    break;
 1214|  1.85k|  case '+':
  ------------------
  |  Branch (1214:3): [True: 1.85k, False: 1.42M]
  ------------------
 1215|  1.85k|    if (readNumber(true)) {
  ------------------
  |  Branch (1215:9): [True: 1.65k, False: 194]
  ------------------
 1216|  1.65k|      token.type_ = tokenNumber;
 1217|  1.65k|    } else {
 1218|    194|      token.type_ = tokenPosInf;
 1219|    194|      ok = features_.allowSpecialFloats_ && match("nfinity", 7);
  ------------------
  |  Branch (1219:12): [True: 0, False: 194]
  |  Branch (1219:45): [True: 0, False: 0]
  ------------------
 1220|    194|    }
 1221|  1.85k|    break;
 1222|  3.49k|  case 't':
  ------------------
  |  Branch (1222:3): [True: 3.49k, False: 1.42M]
  ------------------
 1223|  3.49k|    token.type_ = tokenTrue;
 1224|  3.49k|    ok = match("rue", 3);
 1225|  3.49k|    break;
 1226|  7.80k|  case 'f':
  ------------------
  |  Branch (1226:3): [True: 7.80k, False: 1.41M]
  ------------------
 1227|  7.80k|    token.type_ = tokenFalse;
 1228|  7.80k|    ok = match("alse", 4);
 1229|  7.80k|    break;
 1230|  4.59k|  case 'n':
  ------------------
  |  Branch (1230:3): [True: 4.59k, False: 1.42M]
  ------------------
 1231|  4.59k|    token.type_ = tokenNull;
 1232|  4.59k|    ok = match("ull", 3);
 1233|  4.59k|    break;
 1234|    375|  case 'N':
  ------------------
  |  Branch (1234:3): [True: 375, False: 1.42M]
  ------------------
 1235|    375|    if (features_.allowSpecialFloats_) {
  ------------------
  |  Branch (1235:9): [True: 0, False: 375]
  ------------------
 1236|      0|      token.type_ = tokenNaN;
 1237|      0|      ok = match("aN", 2);
 1238|    375|    } else {
 1239|    375|      ok = false;
 1240|    375|    }
 1241|    375|    break;
 1242|    396|  case 'I':
  ------------------
  |  Branch (1242:3): [True: 396, False: 1.42M]
  ------------------
 1243|    396|    if (features_.allowSpecialFloats_) {
  ------------------
  |  Branch (1243:9): [True: 0, False: 396]
  ------------------
 1244|      0|      token.type_ = tokenPosInf;
 1245|      0|      ok = match("nfinity", 7);
 1246|    396|    } else {
 1247|    396|      ok = false;
 1248|    396|    }
 1249|    396|    break;
 1250|   453k|  case ',':
  ------------------
  |  Branch (1250:3): [True: 453k, False: 973k]
  ------------------
 1251|   453k|    token.type_ = tokenArraySeparator;
 1252|   453k|    break;
 1253|  35.1k|  case ':':
  ------------------
  |  Branch (1253:3): [True: 35.1k, False: 1.39M]
  ------------------
 1254|  35.1k|    token.type_ = tokenMemberSeparator;
 1255|  35.1k|    break;
 1256|  46.1k|  case 0:
  ------------------
  |  Branch (1256:3): [True: 46.1k, False: 1.38M]
  ------------------
 1257|  46.1k|    token.type_ = tokenEndOfStream;
 1258|  46.1k|    break;
 1259|   297k|  default:
  ------------------
  |  Branch (1259:3): [True: 297k, False: 1.13M]
  ------------------
 1260|   297k|    ok = false;
 1261|   297k|    break;
 1262|  1.42M|  }
 1263|  1.42M|  if (!ok)
  ------------------
  |  Branch (1263:7): [True: 310k, False: 1.11M]
  ------------------
 1264|   310k|    token.type_ = tokenError;
 1265|  1.42M|  token.end_ = current_;
 1266|  1.42M|  return ok;
 1267|  1.42M|}
_ZN4Json9OurReader10skipSpacesEv:
 1269|  1.91M|void OurReader::skipSpaces() {
 1270|  1.91M|  while (current_ != end_) {
  ------------------
  |  Branch (1270:10): [True: 1.87M, False: 45.9k]
  ------------------
 1271|  1.87M|    Char c = *current_;
 1272|  1.87M|    if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
  ------------------
  |  Branch (1272:9): [True: 972, False: 1.86M]
  |  Branch (1272:21): [True: 463, False: 1.86M]
  |  Branch (1272:34): [True: 506, False: 1.86M]
  |  Branch (1272:47): [True: 67, False: 1.86M]
  ------------------
 1273|  2.00k|      ++current_;
 1274|  1.86M|    else
 1275|  1.86M|      break;
 1276|  1.87M|  }
 1277|  1.91M|}
_ZN4Json9OurReader7skipBomEb:
 1279|  3.01k|void OurReader::skipBom(bool skipBom) {
 1280|       |  // The default behavior is to skip BOM.
 1281|  3.01k|  if (skipBom) {
  ------------------
  |  Branch (1281:7): [True: 3.01k, False: 0]
  ------------------
 1282|  3.01k|    if ((end_ - begin_) >= 3 && strncmp(begin_, "\xEF\xBB\xBF", 3) == 0) {
  ------------------
  |  Branch (1282:9): [True: 3.01k, False: 0]
  |  Branch (1282:33): [True: 0, False: 3.01k]
  ------------------
 1283|      0|      begin_ += 3;
 1284|      0|      current_ = begin_;
 1285|      0|    }
 1286|  3.01k|  }
 1287|  3.01k|}
_ZN4Json9OurReader5matchEPKci:
 1289|  15.8k|bool OurReader::match(const Char* pattern, int patternLength) {
 1290|  15.8k|  if (end_ - current_ < patternLength)
  ------------------
  |  Branch (1290:7): [True: 6, False: 15.8k]
  ------------------
 1291|      6|    return false;
 1292|  15.8k|  int index = patternLength;
 1293|  46.8k|  while (index--)
  ------------------
  |  Branch (1293:10): [True: 40.5k, False: 6.32k]
  ------------------
 1294|  40.5k|    if (current_[index] != pattern[index])
  ------------------
  |  Branch (1294:9): [True: 9.56k, False: 30.9k]
  ------------------
 1295|  9.56k|      return false;
 1296|  6.32k|  current_ += patternLength;
 1297|  6.32k|  return true;
 1298|  15.8k|}
_ZN4Json9OurReader11readCommentEv:
 1300|  6.18k|bool OurReader::readComment() {
 1301|  6.18k|  const Location commentBegin = current_ - 1;
 1302|  6.18k|  const Char c = getNextChar();
 1303|  6.18k|  bool successful = false;
 1304|  6.18k|  bool cStyleWithEmbeddedNewline = false;
 1305|       |
 1306|  6.18k|  const bool isCStyleComment = (c == '*');
 1307|  6.18k|  const bool isCppStyleComment = (c == '/');
 1308|  6.18k|  if (isCStyleComment) {
  ------------------
  |  Branch (1308:7): [True: 2.04k, False: 4.14k]
  ------------------
 1309|  2.04k|    successful = readCStyleComment(&cStyleWithEmbeddedNewline);
 1310|  4.14k|  } else if (isCppStyleComment) {
  ------------------
  |  Branch (1310:14): [True: 3.87k, False: 272]
  ------------------
 1311|  3.87k|    successful = readCppStyleComment();
 1312|  3.87k|  }
 1313|       |
 1314|  6.18k|  if (!successful)
  ------------------
  |  Branch (1314:7): [True: 305, False: 5.88k]
  ------------------
 1315|    305|    return false;
 1316|       |
 1317|  5.88k|  if (collectComments_) {
  ------------------
  |  Branch (1317:7): [True: 3.54k, False: 2.34k]
  ------------------
 1318|  3.54k|    CommentPlacement placement = commentBefore;
 1319|       |
 1320|  3.54k|    if (!lastValueHasAComment_) {
  ------------------
  |  Branch (1320:9): [True: 2.92k, False: 618]
  ------------------
 1321|  2.92k|      if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) {
  ------------------
  |  Branch (1321:11): [True: 1.53k, False: 1.39k]
  |  Branch (1321:28): [True: 1.31k, False: 212]
  ------------------
 1322|  1.31k|        if (isCppStyleComment || !cStyleWithEmbeddedNewline) {
  ------------------
  |  Branch (1322:13): [True: 274, False: 1.04k]
  |  Branch (1322:34): [True: 850, False: 195]
  ------------------
 1323|  1.12k|          placement = commentAfterOnSameLine;
 1324|  1.12k|          lastValueHasAComment_ = true;
 1325|  1.12k|        }
 1326|  1.31k|      }
 1327|  2.92k|    }
 1328|       |
 1329|  3.54k|    addComment(commentBegin, current_, placement);
 1330|  3.54k|  }
 1331|  5.88k|  return true;
 1332|  6.18k|}
_ZN4Json9OurReader12normalizeEOLEPKcS2_:
 1335|  3.54k|                               OurReader::Location end) {
 1336|  3.54k|  String normalized;
 1337|  3.54k|  normalized.reserve(static_cast<size_t>(end - begin));
 1338|  3.54k|  OurReader::Location current = begin;
 1339|  1.60M|  while (current != end) {
  ------------------
  |  Branch (1339:10): [True: 1.59M, False: 3.54k]
  ------------------
 1340|  1.59M|    char c = *current++;
 1341|  1.59M|    if (c == '\r') {
  ------------------
  |  Branch (1341:9): [True: 1.78k, False: 1.59M]
  ------------------
 1342|  1.78k|      if (current != end && *current == '\n')
  ------------------
  |  Branch (1342:11): [True: 398, False: 1.38k]
  |  Branch (1342:29): [True: 194, False: 204]
  ------------------
 1343|       |        // convert dos EOL
 1344|    194|        ++current;
 1345|       |      // convert Mac EOL
 1346|  1.78k|      normalized += '\n';
 1347|  1.59M|    } else {
 1348|  1.59M|      normalized += c;
 1349|  1.59M|    }
 1350|  1.59M|  }
 1351|  3.54k|  return normalized;
 1352|  3.54k|}
_ZN4Json9OurReader10addCommentEPKcS2_NS_16CommentPlacementE:
 1355|  3.54k|                           CommentPlacement placement) {
 1356|  3.54k|  assert(collectComments_);
 1357|  3.54k|  const String& normalized = normalizeEOL(begin, end);
 1358|  3.54k|  if (placement == commentAfterOnSameLine) {
  ------------------
  |  Branch (1358:7): [True: 1.12k, False: 2.41k]
  ------------------
 1359|  1.12k|    assert(lastValue_ != nullptr);
 1360|  1.12k|    lastValue_->setComment(normalized, placement);
 1361|  2.41k|  } else {
 1362|  2.41k|    commentsBefore_ += normalized;
 1363|  2.41k|  }
 1364|  3.54k|}
_ZN4Json9OurReader17readCStyleCommentEPb:
 1366|  2.04k|bool OurReader::readCStyleComment(bool* containsNewLineResult) {
 1367|  2.04k|  *containsNewLineResult = false;
 1368|       |
 1369|   680k|  while ((current_ + 1) < end_) {
  ------------------
  |  Branch (1369:10): [True: 680k, False: 33]
  ------------------
 1370|   680k|    Char c = getNextChar();
 1371|   680k|    if (c == '*' && *current_ == '/')
  ------------------
  |  Branch (1371:9): [True: 3.51k, False: 676k]
  |  Branch (1371:21): [True: 2.01k, False: 1.50k]
  ------------------
 1372|  2.01k|      break;
 1373|   678k|    if (c == '\n')
  ------------------
  |  Branch (1373:9): [True: 593, False: 677k]
  ------------------
 1374|    593|      *containsNewLineResult = true;
 1375|   678k|  }
 1376|       |
 1377|  2.04k|  return getNextChar() == '/';
 1378|  2.04k|}
_ZN4Json9OurReader19readCppStyleCommentEv:
 1380|  3.87k|bool OurReader::readCppStyleComment() {
 1381|  1.30M|  while (current_ != end_) {
  ------------------
  |  Branch (1381:10): [True: 1.30M, False: 208]
  ------------------
 1382|  1.30M|    Char c = getNextChar();
 1383|  1.30M|    if (c == '\n')
  ------------------
  |  Branch (1383:9): [True: 1.11k, False: 1.30M]
  ------------------
 1384|  1.11k|      break;
 1385|  1.30M|    if (c == '\r') {
  ------------------
  |  Branch (1385:9): [True: 2.54k, False: 1.30M]
  ------------------
 1386|       |      // Consume DOS EOL. It will be normalized in addComment.
 1387|  2.54k|      if (current_ != end_ && *current_ == '\n')
  ------------------
  |  Branch (1387:11): [True: 2.54k, False: 0]
  |  Branch (1387:31): [True: 196, False: 2.34k]
  ------------------
 1388|    196|        getNextChar();
 1389|       |      // Break on Moc OS 9 EOL.
 1390|  2.54k|      break;
 1391|  2.54k|    }
 1392|  1.30M|  }
 1393|  3.87k|  return true;
 1394|  3.87k|}
_ZN4Json9OurReader10readNumberEb:
 1396|   453k|bool OurReader::readNumber(bool checkInf) {
 1397|   453k|  Location p = current_;
 1398|   453k|  if (checkInf && p != end_ && *p == 'I') {
  ------------------
  |  Branch (1398:7): [True: 51.2k, False: 402k]
  |  Branch (1398:19): [True: 51.2k, False: 0]
  |  Branch (1398:32): [True: 395, False: 50.8k]
  ------------------
 1399|    395|    current_ = ++p;
 1400|    395|    return false;
 1401|    395|  }
 1402|   452k|  char c = '0'; // stopgap for already consumed character
 1403|       |  // integral part
 1404|  3.48M|  while (c >= '0' && c <= '9')
  ------------------
  |  Branch (1404:10): [True: 3.03M, False: 447k]
  |  Branch (1404:22): [True: 3.03M, False: 5.31k]
  ------------------
 1405|  3.03M|    c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1405:9): [True: 3.03M, False: 0]
  ------------------
 1406|       |  // fractional part
 1407|   452k|  if (c == '.') {
  ------------------
  |  Branch (1407:7): [True: 1.97k, False: 450k]
  ------------------
 1408|  1.97k|    c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1408:9): [True: 1.97k, False: 0]
  ------------------
 1409|   187k|    while (c >= '0' && c <= '9')
  ------------------
  |  Branch (1409:12): [True: 186k, False: 1.49k]
  |  Branch (1409:24): [True: 185k, False: 481]
  ------------------
 1410|   185k|      c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1410:11): [True: 185k, False: 0]
  ------------------
 1411|  1.97k|  }
 1412|       |  // exponential part
 1413|   452k|  if (c == 'e' || c == 'E') {
  ------------------
  |  Branch (1413:7): [True: 2.00k, False: 450k]
  |  Branch (1413:19): [True: 1.37k, False: 449k]
  ------------------
 1414|  3.37k|    c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1414:9): [True: 3.37k, False: 0]
  ------------------
 1415|  3.37k|    if (c == '+' || c == '-')
  ------------------
  |  Branch (1415:9): [True: 621, False: 2.75k]
  |  Branch (1415:21): [True: 410, False: 2.34k]
  ------------------
 1416|  1.03k|      c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1416:11): [True: 1.03k, False: 0]
  ------------------
 1417|   116k|    while (c >= '0' && c <= '9')
  ------------------
  |  Branch (1417:12): [True: 113k, False: 2.38k]
  |  Branch (1417:24): [True: 112k, False: 990]
  ------------------
 1418|   112k|      c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1418:11): [True: 112k, False: 0]
  ------------------
 1419|  3.37k|  }
 1420|   452k|  return true;
 1421|   453k|}
_ZN4Json9OurReader10readStringEv:
 1422|  37.5k|bool OurReader::readString() {
 1423|  37.5k|  Char c = 0;
 1424|  5.97M|  while (current_ != end_) {
  ------------------
  |  Branch (1424:10): [True: 5.97M, False: 1.63k]
  ------------------
 1425|  5.97M|    c = getNextChar();
 1426|  5.97M|    if (c == '\\')
  ------------------
  |  Branch (1426:9): [True: 3.22k, False: 5.97M]
  ------------------
 1427|  3.22k|      getNextChar();
 1428|  5.97M|    else if (c == '"')
  ------------------
  |  Branch (1428:14): [True: 35.8k, False: 5.93M]
  ------------------
 1429|  35.8k|      break;
 1430|  5.97M|  }
 1431|  37.5k|  return c == '"';
 1432|  37.5k|}
_ZN4Json9OurReader10readObjectERNS0_5TokenE:
 1446|  14.3k|bool OurReader::readObject(Token& token) {
 1447|  14.3k|  Token tokenName;
 1448|  14.3k|  String name;
 1449|  14.3k|  Value init(objectValue);
 1450|  14.3k|  currentValue().swapPayload(init);
 1451|  14.3k|  currentValue().setOffsetStart(token.start_ - begin_);
 1452|  39.4k|  while (readToken(tokenName)) {
  ------------------
  |  Branch (1452:10): [True: 35.9k, False: 3.52k]
  ------------------
 1453|  35.9k|    bool initialTokenOk = true;
 1454|  36.3k|    while (tokenName.type_ == tokenComment && initialTokenOk)
  ------------------
  |  Branch (1454:12): [True: 465, False: 35.9k]
  |  Branch (1454:47): [True: 465, False: 0]
  ------------------
 1455|    465|      initialTokenOk = readToken(tokenName);
 1456|  35.9k|    if (!initialTokenOk)
  ------------------
  |  Branch (1456:9): [True: 1, False: 35.9k]
  ------------------
 1457|      1|      break;
 1458|  35.9k|    if (tokenName.type_ == tokenObjectEnd &&
  ------------------
  |  Branch (1458:9): [True: 1.57k, False: 34.3k]
  ------------------
 1459|  35.9k|        (name.empty() ||
  ------------------
  |  Branch (1459:10): [True: 1.16k, False: 405]
  ------------------
 1460|  1.57k|         features_.allowTrailingCommas_)) // empty object or trailing comma
  ------------------
  |  Branch (1460:10): [True: 405, False: 0]
  ------------------
 1461|  1.57k|      return true;
 1462|  34.3k|    name.clear();
 1463|  34.3k|    if (tokenName.type_ == tokenString) {
  ------------------
  |  Branch (1463:9): [True: 34.2k, False: 79]
  ------------------
 1464|  34.2k|      if (!decodeString(tokenName, name))
  ------------------
  |  Branch (1464:11): [True: 160, False: 34.0k]
  ------------------
 1465|    160|        return recoverFromError(tokenObjectEnd);
 1466|  34.2k|    } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
  ------------------
  |  Branch (1466:16): [True: 10, False: 69]
  |  Branch (1466:50): [True: 0, False: 10]
  ------------------
 1467|      0|      Value numberName;
 1468|      0|      if (!decodeNumber(tokenName, numberName))
  ------------------
  |  Branch (1468:11): [True: 0, False: 0]
  ------------------
 1469|      0|        return recoverFromError(tokenObjectEnd);
 1470|      0|      name = numberName.asString();
 1471|     79|    } else {
 1472|     79|      break;
 1473|     79|    }
 1474|  34.0k|    if (name.length() >= (1U << 30))
  ------------------
  |  Branch (1474:9): [True: 0, False: 34.0k]
  ------------------
 1475|      0|      throwRuntimeError("keylength >= 2^30");
 1476|  34.0k|    if (features_.rejectDupKeys_ && currentValue().isMember(name)) {
  ------------------
  |  Branch (1476:9): [True: 0, False: 34.0k]
  |  Branch (1476:37): [True: 0, False: 0]
  ------------------
 1477|      0|      String msg = "Duplicate key: '" + name + "'";
 1478|      0|      return addErrorAndRecover(msg, tokenName, tokenObjectEnd);
 1479|      0|    }
 1480|       |
 1481|  34.0k|    Token colon;
 1482|  34.0k|    if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
  ------------------
  |  Branch (1482:9): [True: 270, False: 33.8k]
  |  Branch (1482:30): [True: 407, False: 33.4k]
  ------------------
 1483|    677|      return addErrorAndRecover("Missing ':' after object member name", colon,
 1484|    677|                                tokenObjectEnd);
 1485|    677|    }
 1486|  33.4k|    Value& value = currentValue()[name];
 1487|  33.4k|    nodes_.push(&value);
 1488|  33.4k|    bool ok = readValue();
 1489|  33.4k|    nodes_.pop();
 1490|  33.4k|    if (!ok) // error already set
  ------------------
  |  Branch (1490:9): [True: 6.13k, False: 27.2k]
  ------------------
 1491|  6.13k|      return recoverFromError(tokenObjectEnd);
 1492|       |
 1493|  27.2k|    Token comma;
 1494|  27.2k|    if (!readToken(comma) ||
  ------------------
  |  Branch (1494:9): [True: 3.86k, False: 23.4k]
  ------------------
 1495|  27.2k|        (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator &&
  ------------------
  |  Branch (1495:10): [True: 21.7k, False: 1.66k]
  |  Branch (1495:43): [True: 888, False: 20.8k]
  ------------------
 1496|  23.4k|         comma.type_ != tokenComment)) {
  ------------------
  |  Branch (1496:10): [True: 160, False: 728]
  ------------------
 1497|    536|      return addErrorAndRecover("Missing ',' or '}' in object declaration",
 1498|    536|                                comma, tokenObjectEnd);
 1499|    536|    }
 1500|  26.7k|    bool finalizeTokenOk = true;
 1501|  28.0k|    while (comma.type_ == tokenComment && finalizeTokenOk)
  ------------------
  |  Branch (1501:12): [True: 1.33k, False: 26.7k]
  |  Branch (1501:43): [True: 1.33k, False: 0]
  ------------------
 1502|  1.33k|      finalizeTokenOk = readToken(comma);
 1503|  26.7k|    if (comma.type_ == tokenObjectEnd)
  ------------------
  |  Branch (1503:9): [True: 1.66k, False: 25.0k]
  ------------------
 1504|  1.66k|      return true;
 1505|  26.7k|  }
 1506|  3.60k|  return addErrorAndRecover("Missing '}' or object member name", tokenName,
 1507|  3.60k|                            tokenObjectEnd);
 1508|  14.3k|}
_ZN4Json9OurReader9readArrayERNS0_5TokenE:
 1510|  60.8k|bool OurReader::readArray(Token& token) {
 1511|  60.8k|  Value init(arrayValue);
 1512|  60.8k|  currentValue().swapPayload(init);
 1513|  60.8k|  currentValue().setOffsetStart(token.start_ - begin_);
 1514|  60.8k|  int index = 0;
 1515|   486k|  for (;;) {
 1516|   486k|    skipSpaces();
 1517|   486k|    if (current_ != end_ && *current_ == ']' &&
  ------------------
  |  Branch (1517:9): [True: 486k, False: 0]
  |  Branch (1517:29): [True: 994, False: 485k]
  ------------------
 1518|   486k|        (index == 0 ||
  ------------------
  |  Branch (1518:10): [True: 760, False: 234]
  ------------------
 1519|    994|         (features_.allowTrailingCommas_ &&
  ------------------
  |  Branch (1519:11): [True: 234, False: 0]
  ------------------
 1520|    234|          !features_.allowDroppedNullPlaceholders_))) // empty array or trailing
  ------------------
  |  Branch (1520:11): [True: 234, False: 0]
  ------------------
 1521|       |                                                      // comma
 1522|    994|    {
 1523|    994|      Token endArray;
 1524|    994|      readToken(endArray);
 1525|    994|      return true;
 1526|    994|    }
 1527|   485k|    Value& value = currentValue()[index++];
 1528|   485k|    nodes_.push(&value);
 1529|   485k|    bool ok = readValue();
 1530|   485k|    nodes_.pop();
 1531|   485k|    if (!ok) // error already set
  ------------------
  |  Branch (1531:9): [True: 35.3k, False: 450k]
  ------------------
 1532|  35.3k|      return recoverFromError(tokenArrayEnd);
 1533|       |
 1534|   450k|    Token currentToken;
 1535|       |    // Accept Comment after last item in the array.
 1536|   450k|    ok = readToken(currentToken);
 1537|   451k|    while (currentToken.type_ == tokenComment && ok) {
  ------------------
  |  Branch (1537:12): [True: 1.12k, False: 450k]
  |  Branch (1537:50): [True: 1.12k, False: 0]
  ------------------
 1538|  1.12k|      ok = readToken(currentToken);
 1539|  1.12k|    }
 1540|   450k|    bool badTokenType = (currentToken.type_ != tokenArraySeparator &&
  ------------------
  |  Branch (1540:26): [True: 999, False: 449k]
  ------------------
 1541|   450k|                         currentToken.type_ != tokenArrayEnd);
  ------------------
  |  Branch (1541:26): [True: 242, False: 757]
  ------------------
 1542|   450k|    if (!ok || badTokenType) {
  ------------------
  |  Branch (1542:9): [True: 23.6k, False: 426k]
  |  Branch (1542:16): [True: 61, False: 426k]
  ------------------
 1543|    242|      return addErrorAndRecover("Missing ',' or ']' in array declaration",
 1544|    242|                                currentToken, tokenArrayEnd);
 1545|    242|    }
 1546|   449k|    if (currentToken.type_ == tokenArrayEnd)
  ------------------
  |  Branch (1546:9): [True: 757, False: 449k]
  ------------------
 1547|    757|      break;
 1548|   449k|  }
 1549|  24.2k|  return true;
 1550|  60.8k|}
_ZN4Json9OurReader12decodeNumberERNS0_5TokenE:
 1552|   440k|bool OurReader::decodeNumber(Token& token) {
 1553|   440k|  Value decoded;
 1554|   440k|  if (!decodeNumber(token, decoded))
  ------------------
  |  Branch (1554:7): [True: 102, False: 440k]
  ------------------
 1555|    102|    return false;
 1556|   440k|  currentValue().swapPayload(decoded);
 1557|   440k|  currentValue().setOffsetStart(token.start_ - begin_);
 1558|   440k|  currentValue().setOffsetLimit(token.end_ - begin_);
 1559|   440k|  return true;
 1560|   440k|}
_ZN4Json9OurReader12decodeNumberERNS0_5TokenERNS_5ValueE:
 1562|   440k|bool OurReader::decodeNumber(Token& token, Value& decoded) {
 1563|       |  // Attempts to parse the number as an integer. If the number is
 1564|       |  // larger than the maximum supported value of an integer then
 1565|       |  // we decode the number as a double.
 1566|   440k|  Location current = token.start_;
 1567|   440k|  const bool isNegative = *current == '-';
 1568|   440k|  if (isNegative) {
  ------------------
  |  Branch (1568:7): [True: 47.2k, False: 393k]
  ------------------
 1569|  47.2k|    ++current;
 1570|  47.2k|  }
 1571|       |
 1572|       |  // We assume we can represent the largest and smallest integer types as
 1573|       |  // unsigned integers with separate sign. This is only true if they can fit
 1574|       |  // into an unsigned integer.
 1575|   440k|  static_assert(Value::maxLargestInt <= Value::maxLargestUInt,
 1576|   440k|                "Int must be smaller than UInt");
 1577|       |
 1578|       |  // We need to convert minLargestInt into a positive number. The easiest way
 1579|       |  // to do this conversion is to assume our "threshold" value of minLargestInt
 1580|       |  // divided by 10 can fit in maxLargestInt when absolute valued. This should
 1581|       |  // be a safe assumption.
 1582|   440k|  static_assert(Value::minLargestInt <= -Value::maxLargestInt,
 1583|   440k|                "The absolute value of minLargestInt must be greater than or "
 1584|   440k|                "equal to maxLargestInt");
 1585|   440k|  static_assert(Value::minLargestInt / 10 >= -Value::maxLargestInt,
 1586|   440k|                "The absolute value of minLargestInt must be only 1 magnitude "
 1587|   440k|                "larger than maxLargest Int");
 1588|       |
 1589|   440k|  static constexpr Value::LargestUInt positive_threshold =
 1590|   440k|      Value::maxLargestUInt / 10;
 1591|   440k|  static constexpr Value::UInt positive_last_digit = Value::maxLargestUInt % 10;
 1592|       |
 1593|       |  // For the negative values, we have to be more careful. Since typically
 1594|       |  // -Value::minLargestInt will cause an overflow, we first divide by 10 and
 1595|       |  // then take the inverse. This assumes that minLargestInt is only a single
 1596|       |  // power of 10 different in magnitude, which we check above. For the last
 1597|       |  // digit, we take the modulus before negating for the same reason.
 1598|   440k|  static constexpr auto negative_threshold =
 1599|   440k|      Value::LargestUInt(-(Value::minLargestInt / 10));
 1600|   440k|  static constexpr auto negative_last_digit =
 1601|   440k|      Value::UInt(-(Value::minLargestInt % 10));
 1602|       |
 1603|   440k|  const Value::LargestUInt threshold =
 1604|   440k|      isNegative ? negative_threshold : positive_threshold;
  ------------------
  |  Branch (1604:7): [True: 47.2k, False: 393k]
  ------------------
 1605|   440k|  const Value::UInt max_last_digit =
 1606|   440k|      isNegative ? negative_last_digit : positive_last_digit;
  ------------------
  |  Branch (1606:7): [True: 47.2k, False: 393k]
  ------------------
 1607|       |
 1608|   440k|  Value::LargestUInt value = 0;
 1609|   873k|  while (current < token.end_) {
  ------------------
  |  Branch (1609:10): [True: 436k, False: 437k]
  ------------------
 1610|   436k|    Char c = *current++;
 1611|   436k|    if (c < '0' || c > '9')
  ------------------
  |  Branch (1611:9): [True: 630, False: 435k]
  |  Branch (1611:20): [True: 1.06k, False: 434k]
  ------------------
 1612|  1.69k|      return decodeDouble(token, decoded);
 1613|       |
 1614|   434k|    const auto digit(static_cast<Value::UInt>(c - '0'));
 1615|   434k|    if (value >= threshold) {
  ------------------
  |  Branch (1615:9): [True: 1.95k, False: 432k]
  ------------------
 1616|       |      // We've hit or exceeded the max value divided by 10 (rounded down). If
 1617|       |      // a) we've only just touched the limit, meaning value == threshold,
 1618|       |      // b) this is the last digit, or
 1619|       |      // c) it's small enough to fit in that rounding delta, we're okay.
 1620|       |      // Otherwise treat this number as a double to avoid overflow.
 1621|  1.95k|      if (value > threshold || current != token.end_ ||
  ------------------
  |  Branch (1621:11): [True: 1.36k, False: 588]
  |  Branch (1621:32): [True: 195, False: 393]
  ------------------
 1622|  1.95k|          digit > max_last_digit) {
  ------------------
  |  Branch (1622:11): [True: 195, False: 198]
  ------------------
 1623|  1.75k|        return decodeDouble(token, decoded);
 1624|  1.75k|      }
 1625|  1.95k|    }
 1626|   433k|    value = value * 10 + digit;
 1627|   433k|  }
 1628|       |
 1629|   437k|  if (isNegative) {
  ------------------
  |  Branch (1629:7): [True: 47.1k, False: 389k]
  ------------------
 1630|       |    // We use the same magnitude assumption here, just in case.
 1631|  47.1k|    const auto last_digit = static_cast<Value::UInt>(value % 10);
 1632|  47.1k|    decoded = -Value::LargestInt(value / 10) * 10 - last_digit;
 1633|   389k|  } else if (value <= Value::LargestUInt(Value::maxLargestInt)) {
  ------------------
  |  Branch (1633:14): [True: 389k, False: 276]
  ------------------
 1634|   389k|    decoded = Value::LargestInt(value);
 1635|   389k|  } else {
 1636|    276|    decoded = value;
 1637|    276|  }
 1638|       |
 1639|   437k|  return true;
 1640|   440k|}
_ZN4Json9OurReader12decodeDoubleERNS0_5TokenERNS_5ValueE:
 1652|  3.44k|bool OurReader::decodeDouble(Token& token, Value& decoded) {
 1653|  3.44k|  double value = 0;
 1654|  3.44k|  const String buffer(token.start_, token.end_);
 1655|  3.44k|  IStringStream is(buffer);
 1656|  3.44k|  if (!(is >> value)) {
  ------------------
  |  Branch (1656:7): [True: 305, False: 3.14k]
  ------------------
 1657|    305|    if (value == std::numeric_limits<double>::max())
  ------------------
  |  Branch (1657:9): [True: 0, False: 305]
  ------------------
 1658|      0|      value = std::numeric_limits<double>::infinity();
 1659|    305|    else if (value == std::numeric_limits<double>::lowest())
  ------------------
  |  Branch (1659:14): [True: 0, False: 305]
  ------------------
 1660|      0|      value = -std::numeric_limits<double>::infinity();
 1661|    305|    else if (!std::isinf(value))
  ------------------
  |  Branch (1661:14): [True: 102, False: 203]
  ------------------
 1662|    102|      return addError(
 1663|    102|        "'" + String(token.start_, token.end_) + "' is not a number.", token);
 1664|    305|  }
 1665|  3.34k|  decoded = value;
 1666|  3.34k|  return true;
 1667|  3.44k|}
_ZN4Json9OurReader12decodeStringERNS0_5TokenE:
 1669|  1.22k|bool OurReader::decodeString(Token& token) {
 1670|  1.22k|  String decoded_string;
 1671|  1.22k|  if (!decodeString(token, decoded_string))
  ------------------
  |  Branch (1671:7): [True: 1, False: 1.22k]
  ------------------
 1672|      1|    return false;
 1673|  1.22k|  Value decoded(decoded_string);
 1674|  1.22k|  currentValue().swapPayload(decoded);
 1675|  1.22k|  currentValue().setOffsetStart(token.start_ - begin_);
 1676|  1.22k|  currentValue().setOffsetLimit(token.end_ - begin_);
 1677|  1.22k|  return true;
 1678|  1.22k|}
_ZN4Json9OurReader12decodeStringERNS0_5TokenERNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE:
 1680|  35.4k|bool OurReader::decodeString(Token& token, String& decoded) {
 1681|  35.4k|  decoded.reserve(static_cast<size_t>(token.end_ - token.start_ - 2));
 1682|  35.4k|  Location current = token.start_ + 1; // skip '"'
 1683|  35.4k|  Location end = token.end_ - 1;       // do not include '"'
 1684|  5.40M|  while (current != end) {
  ------------------
  |  Branch (1684:10): [True: 5.36M, False: 35.3k]
  ------------------
 1685|  5.36M|    Char c = *current++;
 1686|  5.36M|    if (c == '"')
  ------------------
  |  Branch (1686:9): [True: 0, False: 5.36M]
  ------------------
 1687|      0|      break;
 1688|  5.36M|    if (c == '\\') {
  ------------------
  |  Branch (1688:9): [True: 2.82k, False: 5.36M]
  ------------------
 1689|  2.82k|      if (current == end)
  ------------------
  |  Branch (1689:11): [True: 0, False: 2.82k]
  ------------------
 1690|      0|        return addError("Empty escape sequence in string", token, current);
 1691|  2.82k|      Char escape = *current++;
 1692|  2.82k|      switch (escape) {
 1693|    202|      case '"':
  ------------------
  |  Branch (1693:7): [True: 202, False: 2.62k]
  ------------------
 1694|    202|        decoded += '"';
 1695|    202|        break;
 1696|    194|      case '/':
  ------------------
  |  Branch (1696:7): [True: 194, False: 2.63k]
  ------------------
 1697|    194|        decoded += '/';
 1698|    194|        break;
 1699|    196|      case '\\':
  ------------------
  |  Branch (1699:7): [True: 196, False: 2.63k]
  ------------------
 1700|    196|        decoded += '\\';
 1701|    196|        break;
 1702|    208|      case 'b':
  ------------------
  |  Branch (1702:7): [True: 208, False: 2.62k]
  ------------------
 1703|    208|        decoded += '\b';
 1704|    208|        break;
 1705|    196|      case 'f':
  ------------------
  |  Branch (1705:7): [True: 196, False: 2.63k]
  ------------------
 1706|    196|        decoded += '\f';
 1707|    196|        break;
 1708|    203|      case 'n':
  ------------------
  |  Branch (1708:7): [True: 203, False: 2.62k]
  ------------------
 1709|    203|        decoded += '\n';
 1710|    203|        break;
 1711|    195|      case 'r':
  ------------------
  |  Branch (1711:7): [True: 195, False: 2.63k]
  ------------------
 1712|    195|        decoded += '\r';
 1713|    195|        break;
 1714|    196|      case 't':
  ------------------
  |  Branch (1714:7): [True: 196, False: 2.63k]
  ------------------
 1715|    196|        decoded += '\t';
 1716|    196|        break;
 1717|  1.23k|      case 'u': {
  ------------------
  |  Branch (1717:7): [True: 1.23k, False: 1.59k]
  ------------------
 1718|  1.23k|        unsigned int unicode;
 1719|  1.23k|        if (!decodeUnicodeCodePoint(token, current, end, unicode))
  ------------------
  |  Branch (1719:13): [True: 154, False: 1.07k]
  ------------------
 1720|    154|          return false;
 1721|  1.07k|        decoded += codePointToUTF8(unicode);
 1722|  1.07k|      } break;
 1723|      7|      default:
  ------------------
  |  Branch (1723:7): [True: 7, False: 2.82k]
  ------------------
 1724|      7|        return addError("Bad escape sequence in string", token, current);
 1725|  2.82k|      }
 1726|  5.36M|    } else {
 1727|  5.36M|      decoded += c;
 1728|  5.36M|    }
 1729|  5.36M|  }
 1730|  35.3k|  return true;
 1731|  35.4k|}
_ZN4Json9OurReader22decodeUnicodeCodePointERNS0_5TokenERPKcS4_Rj:
 1734|  1.23k|                                       Location end, unsigned int& unicode) {
 1735|       |
 1736|  1.23k|  if (!decodeUnicodeEscapeSequence(token, current, end, unicode))
  ------------------
  |  Branch (1736:7): [True: 101, False: 1.13k]
  ------------------
 1737|    101|    return false;
 1738|  1.13k|  if (unicode >= 0xD800 && unicode <= 0xDBFF) {
  ------------------
  |  Branch (1738:7): [True: 649, False: 482]
  |  Branch (1738:28): [True: 401, False: 248]
  ------------------
 1739|       |    // surrogate pairs
 1740|    401|    if (end - current < 6)
  ------------------
  |  Branch (1740:9): [True: 10, False: 391]
  ------------------
 1741|     10|      return addError(
 1742|     10|          "additional six characters expected to parse unicode surrogate pair.",
 1743|     10|          token, current);
 1744|    391|    if (*(current++) == '\\' && *(current++) == 'u') {
  ------------------
  |  Branch (1744:9): [True: 362, False: 29]
  |  Branch (1744:33): [True: 350, False: 12]
  ------------------
 1745|    350|      unsigned int surrogatePair;
 1746|    350|      if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) {
  ------------------
  |  Branch (1746:11): [True: 348, False: 2]
  ------------------
 1747|    348|        unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF);
 1748|    348|      } else
 1749|      2|        return false;
 1750|    350|    } else
 1751|     41|      return addError("expecting another \\u token to begin the second half of "
 1752|     41|                      "a unicode surrogate pair",
 1753|     41|                      token, current);
 1754|    391|  }
 1755|  1.07k|  return true;
 1756|  1.13k|}
_ZN4Json9OurReader27decodeUnicodeEscapeSequenceERNS0_5TokenERPKcS4_Rj:
 1760|  1.58k|                                            unsigned int& ret_unicode) {
 1761|  1.58k|  if (end - current < 4)
  ------------------
  |  Branch (1761:7): [True: 3, False: 1.57k]
  ------------------
 1762|      3|    return addError(
 1763|      3|        "Bad unicode escape sequence in string: four digits expected.", token,
 1764|      3|        current);
 1765|  1.57k|  int unicode = 0;
 1766|  7.65k|  for (int index = 0; index < 4; ++index) {
  ------------------
  |  Branch (1766:23): [True: 6.17k, False: 1.47k]
  ------------------
 1767|  6.17k|    Char c = *current++;
 1768|  6.17k|    unicode *= 16;
 1769|  6.17k|    if (c >= '0' && c <= '9')
  ------------------
  |  Branch (1769:9): [True: 6.14k, False: 30]
  |  Branch (1769:21): [True: 1.77k, False: 4.36k]
  ------------------
 1770|  1.77k|      unicode += c - '0';
 1771|  4.39k|    else if (c >= 'a' && c <= 'f')
  ------------------
  |  Branch (1771:14): [True: 2.61k, False: 1.77k]
  |  Branch (1771:26): [True: 2.59k, False: 24]
  ------------------
 1772|  2.59k|      unicode += c - 'a' + 10;
 1773|  1.80k|    else if (c >= 'A' && c <= 'F')
  ------------------
  |  Branch (1773:14): [True: 1.75k, False: 46]
  |  Branch (1773:26): [True: 1.70k, False: 54]
  ------------------
 1774|  1.70k|      unicode += c - 'A' + 10;
 1775|    100|    else
 1776|    100|      return addError(
 1777|    100|          "Bad unicode escape sequence in string: hexadecimal digit expected.",
 1778|    100|          token, current);
 1779|  6.17k|  }
 1780|  1.47k|  ret_unicode = static_cast<unsigned int>(unicode);
 1781|  1.47k|  return true;
 1782|  1.57k|}
_ZN4Json9OurReader8addErrorERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERNS0_5TokenEPKc:
 1784|  2.24k|bool OurReader::addError(const String& message, Token& token, Location extra) {
 1785|  2.24k|  ErrorInfo info;
 1786|  2.24k|  info.token_ = token;
 1787|  2.24k|  info.message_ = message;
 1788|  2.24k|  info.extra_ = extra;
 1789|  2.24k|  errors_.push_back(info);
 1790|  2.24k|  return false;
 1791|  2.24k|}
_ZN4Json9OurReader16recoverFromErrorENS0_9TokenTypeE:
 1793|  43.1k|bool OurReader::recoverFromError(TokenType skipUntilToken) {
 1794|  43.1k|  size_t errorCount = errors_.size();
 1795|  43.1k|  Token skip;
 1796|   376k|  for (;;) {
 1797|   376k|    if (!readToken(skip))
  ------------------
  |  Branch (1797:9): [True: 308k, False: 68.2k]
  ------------------
 1798|   308k|      errors_.resize(errorCount); // discard errors caused by recovery
 1799|   376k|    if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream)
  ------------------
  |  Branch (1799:9): [True: 271, False: 376k]
  |  Branch (1799:41): [True: 42.9k, False: 333k]
  ------------------
 1800|  43.1k|      break;
 1801|   376k|  }
 1802|  43.1k|  errors_.resize(errorCount);
 1803|  43.1k|  return false;
 1804|  43.1k|}
_ZN4Json9OurReader18addErrorAndRecoverERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERNS0_5TokenENS0_9TokenTypeE:
 1807|  1.57k|                                   TokenType skipUntilToken) {
 1808|  1.57k|  addError(message, token);
 1809|  1.57k|  return recoverFromError(skipUntilToken);
 1810|  1.57k|}
_ZN4Json9OurReader12currentValueEv:
 1812|  2.06M|Value& OurReader::currentValue() { return *(nodes_.top()); }
_ZN4Json9OurReader11getNextCharEv:
 1814|  9.40M|OurReader::Char OurReader::getNextChar() {
 1815|  9.40M|  if (current_ == end_)
  ------------------
  |  Branch (1815:7): [True: 45.9k, False: 9.35M]
  ------------------
 1816|  45.9k|    return 0;
 1817|  9.35M|  return *current_++;
 1818|  9.40M|}
_ZN4Json17CharReaderBuilderC2Ev:
 1892|  3.01k|CharReaderBuilder::CharReaderBuilder() { setDefaults(&settings_); }
_ZN4Json17CharReaderBuilderD2Ev:
 1893|  3.01k|CharReaderBuilder::~CharReaderBuilder() = default;
_ZNK4Json17CharReaderBuilder13newCharReaderEv:
 1894|  3.01k|CharReader* CharReaderBuilder::newCharReader() const {
 1895|  3.01k|  bool collectComments = settings_["collectComments"].asBool();
 1896|  3.01k|  OurFeatures features = OurFeatures::all();
 1897|  3.01k|  features.allowComments_ = settings_["allowComments"].asBool();
 1898|  3.01k|  features.allowTrailingCommas_ = settings_["allowTrailingCommas"].asBool();
 1899|  3.01k|  features.strictRoot_ = settings_["strictRoot"].asBool();
 1900|  3.01k|  features.allowDroppedNullPlaceholders_ =
 1901|  3.01k|      settings_["allowDroppedNullPlaceholders"].asBool();
 1902|  3.01k|  features.allowNumericKeys_ = settings_["allowNumericKeys"].asBool();
 1903|  3.01k|  features.allowSingleQuotes_ = settings_["allowSingleQuotes"].asBool();
 1904|       |
 1905|       |  // Stack limit is always a size_t, so we get this as an unsigned int
 1906|       |  // regardless of it we have 64-bit integer support enabled.
 1907|  3.01k|  features.stackLimit_ = static_cast<size_t>(settings_["stackLimit"].asUInt());
 1908|  3.01k|  features.failIfExtra_ = settings_["failIfExtra"].asBool();
 1909|  3.01k|  features.rejectDupKeys_ = settings_["rejectDupKeys"].asBool();
 1910|  3.01k|  features.allowSpecialFloats_ = settings_["allowSpecialFloats"].asBool();
 1911|  3.01k|  features.skipBom_ = settings_["skipBom"].asBool();
 1912|  3.01k|  return new OurCharReader(collectComments, features);
 1913|  3.01k|}
_ZN4Json17CharReaderBuilder11setDefaultsEPNS_5ValueE:
 1962|  3.01k|void CharReaderBuilder::setDefaults(Json::Value* settings) {
 1963|       |  //! [CharReaderBuilderDefaults]
 1964|  3.01k|  (*settings)["collectComments"] = true;
 1965|  3.01k|  (*settings)["allowComments"] = true;
 1966|  3.01k|  (*settings)["allowTrailingCommas"] = true;
 1967|  3.01k|  (*settings)["strictRoot"] = false;
 1968|  3.01k|  (*settings)["allowDroppedNullPlaceholders"] = false;
 1969|  3.01k|  (*settings)["allowNumericKeys"] = false;
 1970|  3.01k|  (*settings)["allowSingleQuotes"] = false;
 1971|  3.01k|  (*settings)["stackLimit"] = 1000;
 1972|  3.01k|  (*settings)["failIfExtra"] = false;
 1973|  3.01k|  (*settings)["rejectDupKeys"] = false;
 1974|  3.01k|  (*settings)["allowSpecialFloats"] = false;
 1975|  3.01k|  (*settings)["skipBom"] = true;
 1976|       |  //! [CharReaderBuilderDefaults]
 1977|  3.01k|}
_ZN4Json13OurCharReaderC2EbRKNS_11OurFeaturesE:
 1881|  3.01k|      : collectComments_(collectComments), reader_(features) {}
_ZN4Json13OurCharReader5parseEPKcS2_PNS_5ValueEPNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE:
 1883|  3.01k|             String* errs) override {
 1884|  3.01k|    bool ok = reader_.parse(beginDoc, endDoc, *root, collectComments_);
 1885|  3.01k|    if (errs) {
  ------------------
  |  Branch (1885:9): [True: 0, False: 3.01k]
  ------------------
 1886|      0|      *errs = reader_.getFormattedErrorMessages();
 1887|      0|    }
 1888|  3.01k|    return ok;
 1889|  3.01k|  }
json_reader.cpp:_ZZN4Json9OurReader15containsNewLineEPKcS2_ENK3$_1clEc:
 1005|    682|  return std::any_of(begin, end, [](char b) { return b == '\n' || b == '\r'; });
  ------------------
  |  Branch (1005:54): [True: 24, False: 658]
  |  Branch (1005:67): [True: 188, False: 470]
  ------------------

json_reader.cpp:_ZN4JsonL15codePointToUTF8Ej:
   39|  1.07k|static inline String codePointToUTF8(unsigned int cp) {
   40|  1.07k|  String result;
   41|       |
   42|       |  // based on description from http://en.wikipedia.org/wiki/UTF-8
   43|       |
   44|  1.07k|  if (cp <= 0x7f) {
  ------------------
  |  Branch (44:7): [True: 209, False: 869]
  ------------------
   45|    209|    result.resize(1);
   46|    209|    result[0] = static_cast<char>(cp);
   47|    869|  } else if (cp <= 0x7FF) {
  ------------------
  |  Branch (47:14): [True: 219, False: 650]
  ------------------
   48|    219|    result.resize(2);
   49|    219|    result[1] = static_cast<char>(0x80 | (0x3f & cp));
   50|    219|    result[0] = static_cast<char>(0xC0 | (0x1f & (cp >> 6)));
   51|    650|  } else if (cp <= 0xFFFF) {
  ------------------
  |  Branch (51:14): [True: 302, False: 348]
  ------------------
   52|    302|    result.resize(3);
   53|    302|    result[2] = static_cast<char>(0x80 | (0x3f & cp));
   54|    302|    result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
   55|    302|    result[0] = static_cast<char>(0xE0 | (0xf & (cp >> 12)));
   56|    348|  } else if (cp <= 0x10FFFF) {
  ------------------
  |  Branch (56:14): [True: 348, False: 0]
  ------------------
   57|    348|    result.resize(4);
   58|    348|    result[3] = static_cast<char>(0x80 | (0x3f & cp));
   59|    348|    result[2] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
   60|    348|    result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 12)));
   61|    348|    result[0] = static_cast<char>(0xF0 | (0x7 & (cp >> 18)));
   62|    348|  }
   63|       |
   64|  1.07k|  return result;
   65|  1.07k|}

_ZN4Json5Value13nullSingletonEv:
   70|   578k|Value const& Value::nullSingleton() {
   71|   578k|  static Value const nullStatic;
   72|   578k|  return nullStatic;
   73|   578k|}
_ZN4Json9ExceptionC2ENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  203|     27|Exception::Exception(String msg) : msg_(std::move(msg)) {}
_ZN4Json9ExceptionD2Ev:
  204|     27|Exception::~Exception() noexcept = default;
_ZN4Json12RuntimeErrorC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  206|     27|RuntimeError::RuntimeError(String const& msg) : Exception(msg) {}
_ZN4Json17throwRuntimeErrorERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE:
  208|     27|JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
  209|     27|  throw RuntimeError(msg);
  210|     27|}
_ZN4Json5Value8CZStringC2Ej:
  236|   485k|Value::CZString::CZString(ArrayIndex index) : cstr_(nullptr), index_(index) {}
_ZN4Json5Value8CZStringC2EPKcjNS1_17DuplicationPolicyE:
  240|   139k|    : cstr_(str) {
  241|       |  // allocate != duplicate
  242|   139k|  storage_.policy_ = allocate & 0x3;
  243|   139k|  storage_.length_ = length & 0x3FFFFFFF;
  244|   139k|}
_ZN4Json5Value8CZStringC2ERKS1_:
  246|  1.15M|Value::CZString::CZString(const CZString& other) {
  247|  1.15M|  cstr_ = (other.storage_.policy_ != noDuplication && other.cstr_ != nullptr
  ------------------
  |  Branch (247:12): [True: 826k, False: 330k]
  |  Branch (247:55): [True: 186k, False: 640k]
  ------------------
  248|  1.15M|               ? duplicateStringValue(other.cstr_, other.storage_.length_)
  249|  1.15M|               : other.cstr_);
  250|  1.15M|  storage_.policy_ =
  251|  1.15M|      static_cast<unsigned>(
  252|  1.15M|          other.cstr_
  ------------------
  |  Branch (252:11): [True: 186k, False: 970k]
  ------------------
  253|  1.15M|              ? (static_cast<DuplicationPolicy>(other.storage_.policy_) ==
  ------------------
  |  Branch (253:18): [True: 0, False: 186k]
  ------------------
  254|   186k|                         noDuplication
  255|   186k|                     ? noDuplication
  256|   186k|                     : duplicate)
  257|  1.15M|              : static_cast<DuplicationPolicy>(other.storage_.policy_)) &
  258|  1.15M|      3U;
  259|  1.15M|  storage_.length_ = other.storage_.length_;
  260|  1.15M|}
_ZN4Json5Value8CZStringD2Ev:
  267|  1.78M|Value::CZString::~CZString() {
  268|  1.78M|  if (cstr_ && storage_.policy_ == duplicate) {
  ------------------
  |  Branch (268:7): [True: 325k, False: 1.45M]
  |  Branch (268:16): [True: 186k, False: 139k]
  ------------------
  269|   186k|    releaseStringValue(const_cast<char*>(cstr_),
  270|   186k|                       storage_.length_ + 1U); // +1 for null terminating
  271|       |                                               // character for sake of
  272|       |                                               // completeness but not actually
  273|       |                                               // necessary
  274|   186k|  }
  275|  1.78M|}
_ZNK4Json5Value8CZStringltERKS1_:
  295|  11.5M|bool Value::CZString::operator<(const CZString& other) const {
  296|  11.5M|  if (!cstr_)
  ------------------
  |  Branch (296:7): [True: 10.8M, False: 628k]
  ------------------
  297|  10.8M|    return index_ < other.index_;
  298|       |  // return strcmp(cstr_, other.cstr_) < 0;
  299|       |  // Assume both are strings.
  300|   628k|  unsigned this_len = this->storage_.length_;
  301|   628k|  unsigned other_len = other.storage_.length_;
  302|   628k|  unsigned min_len = std::min<unsigned>(this_len, other_len);
  303|   628k|  JSON_ASSERT(this->cstr_ && other.cstr_);
  ------------------
  |  |   24|   628k|  do {                                                                         \
  |  |   25|  1.25M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (25:11): [True: 628k, False: 0]
  |  |  |  Branch (25:11): [True: 628k, False: 0]
  |  |  ------------------
  |  |   26|      0|      Json::throwLogicError("assert json failed");                             \
  |  |   27|      0|    }                                                                          \
  |  |   28|   628k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (28:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  304|   628k|  int comp = memcmp(this->cstr_, other.cstr_, min_len);
  305|   628k|  if (comp < 0)
  ------------------
  |  Branch (305:7): [True: 319k, False: 309k]
  ------------------
  306|   319k|    return true;
  307|   309k|  if (comp > 0)
  ------------------
  |  Branch (307:7): [True: 156k, False: 152k]
  ------------------
  308|   156k|    return false;
  309|   152k|  return (this_len < other_len);
  310|   309k|}
_ZNK4Json5Value8CZStringeqERKS1_:
  312|  79.8k|bool Value::CZString::operator==(const CZString& other) const {
  313|  79.8k|  if (!cstr_)
  ------------------
  |  Branch (313:7): [True: 0, False: 79.8k]
  ------------------
  314|      0|    return index_ == other.index_;
  315|       |  // return strcmp(cstr_, other.cstr_) == 0;
  316|       |  // Assume both are strings.
  317|  79.8k|  unsigned this_len = this->storage_.length_;
  318|  79.8k|  unsigned other_len = other.storage_.length_;
  319|  79.8k|  if (this_len != other_len)
  ------------------
  |  Branch (319:7): [True: 48.2k, False: 31.5k]
  ------------------
  320|  48.2k|    return false;
  321|  31.5k|  JSON_ASSERT(this->cstr_ && other.cstr_);
  ------------------
  |  |   24|  31.5k|  do {                                                                         \
  |  |   25|  63.1k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (25:11): [True: 31.5k, False: 0]
  |  |  |  Branch (25:11): [True: 31.5k, False: 0]
  |  |  ------------------
  |  |   26|      0|      Json::throwLogicError("assert json failed");                             \
  |  |   27|      0|    }                                                                          \
  |  |   28|  31.5k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (28:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  322|  31.5k|  int comp = memcmp(this->cstr_, other.cstr_, this_len);
  323|  31.5k|  return comp == 0;
  324|  79.8k|}
_ZN4Json5ValueC2ENS_9ValueTypeE:
  347|   527k|Value::Value(ValueType type) {
  348|   527k|  static char const emptyString[] = "";
  349|   527k|  initBasic(type);
  350|   527k|  switch (type) {
  351|   449k|  case nullValue:
  ------------------
  |  Branch (351:3): [True: 449k, False: 78.1k]
  ------------------
  352|   449k|    break;
  353|      0|  case intValue:
  ------------------
  |  Branch (353:3): [True: 0, False: 527k]
  ------------------
  354|      0|  case uintValue:
  ------------------
  |  Branch (354:3): [True: 0, False: 527k]
  ------------------
  355|      0|    value_.int_ = 0;
  356|      0|    break;
  357|      0|  case realValue:
  ------------------
  |  Branch (357:3): [True: 0, False: 527k]
  ------------------
  358|      0|    value_.real_ = 0.0;
  359|      0|    break;
  360|      0|  case stringValue:
  ------------------
  |  Branch (360:3): [True: 0, False: 527k]
  ------------------
  361|       |    // allocated_ == false, so this is safe.
  362|      0|    value_.string_ = const_cast<char*>(static_cast<char const*>(emptyString));
  363|      0|    break;
  364|  60.8k|  case arrayValue:
  ------------------
  |  Branch (364:3): [True: 60.8k, False: 466k]
  ------------------
  365|  78.1k|  case objectValue:
  ------------------
  |  Branch (365:3): [True: 17.3k, False: 510k]
  ------------------
  366|  78.1k|    value_.map_ = new ObjectValues();
  367|  78.1k|    break;
  368|      0|  case booleanValue:
  ------------------
  |  Branch (368:3): [True: 0, False: 527k]
  ------------------
  369|      0|    value_.bool_ = false;
  370|      0|    break;
  371|      0|  default:
  ------------------
  |  Branch (371:3): [True: 0, False: 527k]
  ------------------
  372|      0|    JSON_ASSERT_UNREACHABLE;
  ------------------
  |  |   48|      0|#define JSON_ASSERT_UNREACHABLE assert(false)
  ------------------
  373|   527k|  }
  374|   527k|}
_ZN4Json5ValueC2Ei:
  376|  36.2k|Value::Value(Int value) {
  377|  36.2k|  initBasic(intValue);
  378|  36.2k|  value_.int_ = value;
  379|  36.2k|}
_ZN4Json5ValueC2El:
  386|   436k|Value::Value(Int64 value) {
  387|   436k|  initBasic(intValue);
  388|   436k|  value_.int_ = value;
  389|   436k|}
_ZN4Json5ValueC2Em:
  390|    276|Value::Value(UInt64 value) {
  391|    276|  initBasic(uintValue);
  392|    276|  value_.uint_ = value;
  393|    276|}
_ZN4Json5ValueC2Ed:
  396|  3.34k|Value::Value(double value) {
  397|  3.34k|  initBasic(realValue);
  398|  3.34k|  value_.real_ = value;
  399|  3.34k|}
_ZN4Json5ValueC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  415|  1.22k|Value::Value(const String& value) {
  416|  1.22k|  initBasic(stringValue, true);
  417|  1.22k|  value_.string_ = duplicateAndPrefixStringValue(
  418|  1.22k|      value.data(), static_cast<unsigned>(value.length()));
  419|  1.22k|}
_ZN4Json5ValueC2Eb:
  426|  34.9k|Value::Value(bool value) {
  427|  34.9k|  initBasic(booleanValue);
  428|  34.9k|  value_.bool_ = value;
  429|  34.9k|}
_ZN4Json5ValueC2ERKS0_:
  431|  1.15M|Value::Value(const Value& other) {
  432|  1.15M|  dupPayload(other);
  433|  1.15M|  dupMeta(other);
  434|  1.15M|}
_ZN4Json5ValueD2Ev:
  441|  2.19M|Value::~Value() {
  442|  2.19M|  releasePayload();
  443|  2.19M|  value_.uint_ = 0;
  444|  2.19M|}
_ZN4Json5ValueaSEOS0_:
  451|   512k|Value& Value::operator=(Value&& other) noexcept {
  452|   512k|  other.swap(*this);
  453|   512k|  return *this;
  454|   512k|}
_ZN4Json5Value11swapPayloadERS0_:
  456|  1.03M|void Value::swapPayload(Value& other) {
  457|  1.03M|  std::swap(bits_, other.bits_);
  458|  1.03M|  std::swap(value_, other.value_);
  459|  1.03M|}
_ZN4Json5Value4swapERS0_:
  466|   512k|void Value::swap(Value& other) {
  467|   512k|  swapPayload(other);
  468|   512k|  std::swap(comments_, other.comments_);
  469|   512k|  std::swap(start_, other.start_);
  470|   512k|  std::swap(limit_, other.limit_);
  471|   512k|}
_ZNK4Json5Value4typeEv:
  478|  6.42M|ValueType Value::type() const {
  479|  6.42M|  return static_cast<ValueType>(bits_.value_type_);
  480|  6.42M|}
_ZNK4Json5Value6asUIntEv:
  676|  3.01k|Value::UInt Value::asUInt() const {
  677|  3.01k|  switch (type()) {
  678|  3.01k|  case intValue:
  ------------------
  |  Branch (678:3): [True: 3.01k, False: 0]
  ------------------
  679|  3.01k|    JSON_ASSERT_MESSAGE(isUInt(), "LargestInt out of UInt range");
  ------------------
  |  |   55|  3.01k|  do {                                                                         \
  |  |   56|  3.01k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:9): [True: 0, False: 3.01k]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|  3.01k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  680|  3.01k|    return UInt(value_.int_);
  681|      0|  case uintValue:
  ------------------
  |  Branch (681:3): [True: 0, False: 3.01k]
  ------------------
  682|      0|    JSON_ASSERT_MESSAGE(isUInt(), "LargestUInt out of UInt range");
  ------------------
  |  |   55|      0|  do {                                                                         \
  |  |   56|      0|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  683|      0|    return UInt(value_.uint_);
  684|      0|  case realValue:
  ------------------
  |  Branch (684:3): [True: 0, False: 3.01k]
  ------------------
  685|      0|    JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt),
  ------------------
  |  |   55|      0|  do {                                                                         \
  |  |   56|      0|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  686|      0|                        "double out of UInt range");
  687|      0|    return UInt(value_.real_);
  688|      0|  case nullValue:
  ------------------
  |  Branch (688:3): [True: 0, False: 3.01k]
  ------------------
  689|      0|    return 0;
  690|      0|  case booleanValue:
  ------------------
  |  Branch (690:3): [True: 0, False: 3.01k]
  ------------------
  691|      0|    return value_.bool_ ? 1 : 0;
  ------------------
  |  Branch (691:12): [True: 0, False: 0]
  ------------------
  692|      0|  default:
  ------------------
  |  Branch (692:3): [True: 0, False: 3.01k]
  ------------------
  693|      0|    break;
  694|  3.01k|  }
  695|      0|  JSON_FAIL_MESSAGE("Value is not convertible to UInt.");
  ------------------
  |  |   31|      0|  do {                                                                         \
  |  |   32|      0|    OStringStream oss;                                                         \
  |  |   33|      0|    oss << message;                                                            \
  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |   35|      0|    abort();                                                                   \
  |  |   36|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  696|      0|}
_ZNK4Json5Value6asBoolEv:
  804|  33.2k|bool Value::asBool() const {
  805|  33.2k|  switch (type()) {
  806|  27.1k|  case booleanValue:
  ------------------
  |  Branch (806:3): [True: 27.1k, False: 6.03k]
  ------------------
  807|  27.1k|    return value_.bool_;
  808|      0|  case nullValue:
  ------------------
  |  Branch (808:3): [True: 0, False: 33.2k]
  ------------------
  809|      0|    return false;
  810|  6.03k|  case intValue:
  ------------------
  |  Branch (810:3): [True: 6.03k, False: 27.1k]
  ------------------
  811|  6.03k|    return value_.int_ != 0;
  812|      0|  case uintValue:
  ------------------
  |  Branch (812:3): [True: 0, False: 33.2k]
  ------------------
  813|      0|    return value_.uint_ != 0;
  814|      0|  case realValue: {
  ------------------
  |  Branch (814:3): [True: 0, False: 33.2k]
  ------------------
  815|       |    // According to JavaScript language zero or NaN is regarded as false
  816|      0|    const auto value_classification = std::fpclassify(value_.real_);
  817|      0|    return value_classification != FP_ZERO && value_classification != FP_NAN;
  ------------------
  |  Branch (817:12): [True: 0, False: 0]
  |  Branch (817:47): [True: 0, False: 0]
  ------------------
  818|      0|  }
  819|      0|  default:
  ------------------
  |  Branch (819:3): [True: 0, False: 33.2k]
  ------------------
  820|      0|    break;
  821|  33.2k|  }
  822|      0|  JSON_FAIL_MESSAGE("Value is not convertible to bool.");
  ------------------
  |  |   31|      0|  do {                                                                         \
  |  |   32|      0|    OStringStream oss;                                                         \
  |  |   33|      0|    oss << message;                                                            \
  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |   35|      0|    abort();                                                                   \
  |  |   36|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  823|      0|}
_ZN4Json5ValueixEj:
  925|   485k|Value& Value::operator[](ArrayIndex index) {
  926|   485k|  JSON_ASSERT_MESSAGE(
  ------------------
  |  |   55|   485k|  do {                                                                         \
  |  |   56|   970k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:11): [True: 0, False: 485k]
  |  |  |  Branch (56:11): [True: 485k, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|   485k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  927|   485k|      type() == nullValue || type() == arrayValue,
  928|   485k|      "in Json::Value::operator[](ArrayIndex): requires arrayValue");
  929|   485k|  if (type() == nullValue)
  ------------------
  |  Branch (929:7): [True: 0, False: 485k]
  ------------------
  930|      0|    *this = Value(arrayValue);
  931|   485k|  CZString key(index);
  932|   485k|  auto it = value_.map_->lower_bound(key);
  933|   485k|  if (it != value_.map_->end() && (*it).first == key)
  ------------------
  |  Branch (933:7): [True: 0, False: 485k]
  |  Branch (933:7): [True: 0, False: 485k]
  |  Branch (933:35): [True: 0, False: 0]
  ------------------
  934|      0|    return (*it).second;
  935|       |
  936|   485k|  ObjectValues::value_type defaultValue(key, nullSingleton());
  937|   485k|  it = value_.map_->insert(it, defaultValue);
  938|   485k|  return (*it).second;
  939|   485k|}
_ZN4Json5ValueixEi:
  941|   485k|Value& Value::operator[](int index) {
  942|   485k|  JSON_ASSERT_MESSAGE(
  ------------------
  |  |   55|   485k|  do {                                                                         \
  |  |   56|   485k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:9): [True: 0, False: 485k]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|   485k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  943|   485k|      index >= 0,
  944|   485k|      "in Json::Value::operator[](int index): index cannot be negative");
  945|   485k|  return (*this)[ArrayIndex(index)];
  946|   485k|}
_ZN4Json5Value9initBasicENS_9ValueTypeEb:
  968|  1.04M|void Value::initBasic(ValueType type, bool allocated) {
  969|  1.04M|  setType(type);
  970|  1.04M|  setIsAllocated(allocated);
  971|  1.04M|  comments_ = Comments{};
  972|  1.04M|  start_ = 0;
  973|  1.04M|  limit_ = 0;
  974|  1.04M|}
_ZN4Json5Value10dupPayloadERKS0_:
  976|  1.15M|void Value::dupPayload(const Value& other) {
  977|  1.15M|  setType(other.type());
  978|  1.15M|  setIsAllocated(false);
  979|  1.15M|  switch (type()) {
  980|  1.15M|  case nullValue:
  ------------------
  |  Branch (980:3): [True: 1.15M, False: 0]
  ------------------
  981|  1.15M|  case intValue:
  ------------------
  |  Branch (981:3): [True: 0, False: 1.15M]
  ------------------
  982|  1.15M|  case uintValue:
  ------------------
  |  Branch (982:3): [True: 0, False: 1.15M]
  ------------------
  983|  1.15M|  case realValue:
  ------------------
  |  Branch (983:3): [True: 0, False: 1.15M]
  ------------------
  984|  1.15M|  case booleanValue:
  ------------------
  |  Branch (984:3): [True: 0, False: 1.15M]
  ------------------
  985|  1.15M|    value_ = other.value_;
  986|  1.15M|    break;
  987|      0|  case stringValue:
  ------------------
  |  Branch (987:3): [True: 0, False: 1.15M]
  ------------------
  988|      0|    if (other.value_.string_ && other.isAllocated()) {
  ------------------
  |  Branch (988:9): [True: 0, False: 0]
  |  Branch (988:33): [True: 0, False: 0]
  ------------------
  989|      0|      unsigned len;
  990|      0|      char const* str;
  991|      0|      decodePrefixedString(other.isAllocated(), other.value_.string_, &len,
  992|      0|                           &str);
  993|      0|      value_.string_ = duplicateAndPrefixStringValue(str, len);
  994|      0|      setIsAllocated(true);
  995|      0|    } else {
  996|      0|      value_.string_ = other.value_.string_;
  997|      0|    }
  998|      0|    break;
  999|      0|  case arrayValue:
  ------------------
  |  Branch (999:3): [True: 0, False: 1.15M]
  ------------------
 1000|      0|  case objectValue:
  ------------------
  |  Branch (1000:3): [True: 0, False: 1.15M]
  ------------------
 1001|      0|    value_.map_ = new ObjectValues(*other.value_.map_);
 1002|      0|    break;
 1003|      0|  default:
  ------------------
  |  Branch (1003:3): [True: 0, False: 1.15M]
  ------------------
 1004|      0|    JSON_ASSERT_UNREACHABLE;
  ------------------
  |  |   48|      0|#define JSON_ASSERT_UNREACHABLE assert(false)
  ------------------
 1005|  1.15M|  }
 1006|  1.15M|}
_ZN4Json5Value14releasePayloadEv:
 1008|  2.19M|void Value::releasePayload() {
 1009|  2.19M|  switch (type()) {
 1010|  1.60M|  case nullValue:
  ------------------
  |  Branch (1010:3): [True: 1.60M, False: 591k]
  ------------------
 1011|  2.07M|  case intValue:
  ------------------
  |  Branch (1011:3): [True: 473k, False: 1.72M]
  ------------------
 1012|  2.08M|  case uintValue:
  ------------------
  |  Branch (1012:3): [True: 276, False: 2.19M]
  ------------------
 1013|  2.08M|  case realValue:
  ------------------
  |  Branch (1013:3): [True: 3.34k, False: 2.19M]
  ------------------
 1014|  2.11M|  case booleanValue:
  ------------------
  |  Branch (1014:3): [True: 34.9k, False: 2.16M]
  ------------------
 1015|  2.11M|    break;
 1016|  1.22k|  case stringValue:
  ------------------
  |  Branch (1016:3): [True: 1.22k, False: 2.19M]
  ------------------
 1017|  1.22k|    if (isAllocated())
  ------------------
  |  Branch (1017:9): [True: 1.22k, False: 0]
  ------------------
 1018|  1.22k|      releasePrefixedStringValue(value_.string_);
 1019|  1.22k|    break;
 1020|  60.8k|  case arrayValue:
  ------------------
  |  Branch (1020:3): [True: 60.8k, False: 2.13M]
  ------------------
 1021|  78.1k|  case objectValue:
  ------------------
  |  Branch (1021:3): [True: 17.3k, False: 2.18M]
  ------------------
 1022|  78.1k|    delete value_.map_;
 1023|  78.1k|    break;
 1024|      0|  default:
  ------------------
  |  Branch (1024:3): [True: 0, False: 2.19M]
  ------------------
 1025|      0|    JSON_ASSERT_UNREACHABLE;
  ------------------
  |  |   48|      0|#define JSON_ASSERT_UNREACHABLE assert(false)
  ------------------
 1026|  2.19M|  }
 1027|  2.19M|}
_ZN4Json5Value7dupMetaERKS0_:
 1029|  1.15M|void Value::dupMeta(const Value& other) {
 1030|  1.15M|  comments_ = other.comments_;
 1031|  1.15M|  start_ = other.start_;
 1032|  1.15M|  limit_ = other.limit_;
 1033|  1.15M|}
_ZN4Json5Value16resolveReferenceEPKcS2_:
 1057|   102k|Value& Value::resolveReference(char const* key, char const* end) {
 1058|   102k|  JSON_ASSERT_MESSAGE(
  ------------------
  |  |   55|   102k|  do {                                                                         \
  |  |   56|   202k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:11): [True: 3.01k, False: 99.8k]
  |  |  |  Branch (56:11): [True: 99.8k, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|   102k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1059|   102k|      type() == nullValue || type() == objectValue,
 1060|   102k|      "in Json::Value::resolveReference(key, end): requires objectValue");
 1061|   102k|  if (type() == nullValue)
  ------------------
  |  Branch (1061:7): [True: 3.01k, False: 99.8k]
  ------------------
 1062|  3.01k|    *this = Value(objectValue);
 1063|   102k|  CZString actualKey(key, static_cast<unsigned>(end - key),
 1064|   102k|                     CZString::duplicateOnCopy);
 1065|   102k|  auto it = value_.map_->lower_bound(actualKey);
 1066|   102k|  if (it != value_.map_->end() && (*it).first == actualKey)
  ------------------
  |  Branch (1066:7): [True: 79.8k, False: 22.9k]
  |  Branch (1066:7): [True: 9.60k, False: 93.2k]
  |  Branch (1066:35): [True: 9.60k, False: 70.2k]
  ------------------
 1067|  9.60k|    return (*it).second;
 1068|       |
 1069|  93.2k|  ObjectValues::value_type defaultValue(actualKey, nullSingleton());
 1070|  93.2k|  it = value_.map_->insert(it, defaultValue);
 1071|  93.2k|  Value& value = (*it).second;
 1072|  93.2k|  return value;
 1073|   102k|}
_ZNK4Json5Value4findEPKcS2_:
 1082|  36.2k|Value const* Value::find(char const* begin, char const* end) const {
 1083|  36.2k|  JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
  ------------------
  |  |   55|  36.2k|  do {                                                                         \
  |  |   56|  72.4k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:11): [True: 0, False: 36.2k]
  |  |  |  Branch (56:11): [True: 36.2k, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|  36.2k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1084|  36.2k|                      "in Json::Value::find(begin, end): requires "
 1085|  36.2k|                      "objectValue or nullValue");
 1086|  36.2k|  if (type() == nullValue)
  ------------------
  |  Branch (1086:7): [True: 0, False: 36.2k]
  ------------------
 1087|      0|    return nullptr;
 1088|  36.2k|  CZString actualKey(begin, static_cast<unsigned>(end - begin),
 1089|  36.2k|                     CZString::noDuplication);
 1090|  36.2k|  ObjectValues::const_iterator it = value_.map_->find(actualKey);
 1091|  36.2k|  if (it == value_.map_->end())
  ------------------
  |  Branch (1091:7): [True: 0, False: 36.2k]
  ------------------
 1092|      0|    return nullptr;
 1093|  36.2k|  return &(*it).second;
 1094|  36.2k|}
_ZNK4Json5ValueixEPKc:
 1101|  36.2k|const Value& Value::operator[](const char* key) const {
 1102|  36.2k|  Value const* found = find(key, key + strlen(key));
 1103|  36.2k|  if (!found)
  ------------------
  |  Branch (1103:7): [True: 0, False: 36.2k]
  ------------------
 1104|      0|    return nullSingleton();
 1105|  36.2k|  return *found;
 1106|  36.2k|}
_ZN4Json5ValueixEPKc:
 1114|  69.4k|Value& Value::operator[](const char* key) {
 1115|  69.4k|  return resolveReference(key, key + strlen(key));
 1116|  69.4k|}
_ZN4Json5ValueixERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
 1118|  33.4k|Value& Value::operator[](const String& key) {
 1119|  33.4k|  return resolveReference(key.data(), key.data() + key.length());
 1120|  33.4k|}
_ZNK4Json5Value6isUIntEv:
 1277|  3.01k|bool Value::isUInt() const {
 1278|  3.01k|  switch (type()) {
 1279|  3.01k|  case intValue:
  ------------------
  |  Branch (1279:3): [True: 3.01k, False: 0]
  ------------------
 1280|  3.01k|#if defined(JSON_HAS_INT64)
 1281|  3.01k|    return value_.int_ >= 0 && LargestUInt(value_.int_) <= LargestUInt(maxUInt);
  ------------------
  |  Branch (1281:12): [True: 3.01k, False: 0]
  |  Branch (1281:32): [True: 3.01k, False: 0]
  ------------------
 1282|       |#else
 1283|       |    return value_.int_ >= 0;
 1284|       |#endif
 1285|      0|  case uintValue:
  ------------------
  |  Branch (1285:3): [True: 0, False: 3.01k]
  ------------------
 1286|      0|#if defined(JSON_HAS_INT64)
 1287|      0|    return value_.uint_ <= maxUInt;
 1288|       |#else
 1289|       |    return true;
 1290|       |#endif
 1291|      0|  case realValue:
  ------------------
  |  Branch (1291:3): [True: 0, False: 3.01k]
  ------------------
 1292|      0|    return value_.real_ >= 0 && value_.real_ <= maxUInt &&
  ------------------
  |  Branch (1292:12): [True: 0, False: 0]
  |  Branch (1292:33): [True: 0, False: 0]
  ------------------
 1293|      0|           IsIntegral(value_.real_);
  ------------------
  |  Branch (1293:12): [True: 0, False: 0]
  ------------------
 1294|      0|  default:
  ------------------
  |  Branch (1294:3): [True: 0, False: 3.01k]
  ------------------
 1295|      0|    break;
 1296|  3.01k|  }
 1297|      0|  return false;
 1298|  3.01k|}
_ZN4Json5Value8CommentsC2EOS1_:
 1378|   512k|    : ptr_{std::move(that.ptr_)} {}
_ZN4Json5Value8CommentsaSERKS1_:
 1380|  1.15M|Value::Comments& Value::Comments::operator=(const Comments& that) {
 1381|  1.15M|  ptr_ = cloneUnique(that.ptr_);
 1382|  1.15M|  return *this;
 1383|  1.15M|}
_ZN4Json5Value8CommentsaSEOS1_:
 1385|  2.06M|Value::Comments& Value::Comments::operator=(Comments&& that) noexcept {
 1386|  2.06M|  ptr_ = std::move(that.ptr_);
 1387|  2.06M|  return *this;
 1388|  2.06M|}
_ZN4Json5Value8Comments3setENS_16CommentPlacementENSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE:
 1400|  2.54k|void Value::Comments::set(CommentPlacement slot, String comment) {
 1401|  2.54k|  if (slot >= CommentPlacement::numberOfCommentPlacement)
  ------------------
  |  Branch (1401:7): [True: 0, False: 2.54k]
  ------------------
 1402|      0|    return;
 1403|  2.54k|  if (!ptr_)
  ------------------
  |  Branch (1403:7): [True: 2.04k, False: 494]
  ------------------
 1404|  2.04k|    ptr_ = std::unique_ptr<Array>(new Array());
 1405|  2.54k|  (*ptr_)[slot] = std::move(comment);
 1406|  2.54k|}
_ZN4Json5Value10setCommentENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_16CommentPlacementE:
 1408|  2.54k|void Value::setComment(String comment, CommentPlacement placement) {
 1409|  2.54k|  if (!comment.empty() && (comment.back() == '\n')) {
  ------------------
  |  Branch (1409:7): [True: 2.54k, False: 0]
  |  Branch (1409:27): [True: 1.05k, False: 1.48k]
  ------------------
 1410|       |    // Always discard trailing newline, to aid indentation.
 1411|  1.05k|    comment.pop_back();
 1412|  1.05k|  }
 1413|  2.54k|  JSON_ASSERT(!comment.empty());
  ------------------
  |  |   24|  2.54k|  do {                                                                         \
  |  |   25|  2.54k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (25:9): [True: 0, False: 2.54k]
  |  |  ------------------
  |  |   26|      0|      Json::throwLogicError("assert json failed");                             \
  |  |   27|      0|    }                                                                          \
  |  |   28|  2.54k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (28:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1414|  2.54k|  JSON_ASSERT_MESSAGE(
  ------------------
  |  |   55|  2.54k|  do {                                                                         \
  |  |   56|  5.08k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:11): [True: 0, False: 2.54k]
  |  |  |  Branch (56:11): [True: 2.54k, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|  2.54k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1415|  2.54k|      comment[0] == '\0' || comment[0] == '/',
 1416|  2.54k|      "in Json::Value::setComment(): Comments must start with /");
 1417|  2.54k|  comments_.set(placement, std::move(comment));
 1418|  2.54k|}
_ZN4Json5Value14setOffsetStartEl:
 1428|   521k|void Value::setOffsetStart(ptrdiff_t start) { start_ = start; }
_ZN4Json5Value14setOffsetLimitEl:
 1430|   494k|void Value::setOffsetLimit(ptrdiff_t limit) { limit_ = limit; }
json_value.cpp:_ZN4JsonL20duplicateStringValueEPKcm:
  115|   186k|static inline char* duplicateStringValue(const char* value, size_t length) {
  116|       |  // Avoid an integer overflow in the call to malloc below by limiting length
  117|       |  // to a sane value.
  118|   186k|  if (length >= static_cast<size_t>(Value::maxInt))
  ------------------
  |  Branch (118:7): [True: 0, False: 186k]
  ------------------
  119|      0|    length = Value::maxInt - 1;
  120|       |
  121|   186k|  auto newString = static_cast<char*>(malloc(length + 1));
  122|   186k|  if (newString == nullptr) {
  ------------------
  |  Branch (122:7): [True: 0, False: 186k]
  ------------------
  123|      0|    throwRuntimeError("in Json::Value::duplicateStringValue(): "
  124|      0|                      "Failed to allocate string value buffer");
  125|      0|  }
  126|   186k|  memcpy(newString, value, length);
  127|   186k|  newString[length] = 0;
  128|   186k|  return newString;
  129|   186k|}
json_value.cpp:_ZN4JsonL18releaseStringValueEPcj:
  183|   186k|static inline void releaseStringValue(char* value, unsigned) { free(value); }
json_value.cpp:_ZN4JsonL29duplicateAndPrefixStringValueEPKcj:
  134|  1.22k|                                                  unsigned int length) {
  135|       |  // Avoid an integer overflow in the call to malloc below by limiting length
  136|       |  // to a sane value.
  137|  1.22k|  JSON_ASSERT_MESSAGE(length <= static_cast<unsigned>(Value::maxInt) -
  ------------------
  |  |   55|  1.22k|  do {                                                                         \
  |  |   56|  1.22k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:9): [True: 0, False: 1.22k]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|  1.22k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  138|  1.22k|                                    sizeof(unsigned) - 1U,
  139|  1.22k|                      "in Json::Value::duplicateAndPrefixStringValue(): "
  140|  1.22k|                      "length too big for prefixing");
  141|  1.22k|  size_t actualLength = sizeof(length) + length + 1;
  142|  1.22k|  auto newString = static_cast<char*>(malloc(actualLength));
  143|  1.22k|  if (newString == nullptr) {
  ------------------
  |  Branch (143:7): [True: 0, False: 1.22k]
  ------------------
  144|      0|    throwRuntimeError("in Json::Value::duplicateAndPrefixStringValue(): "
  145|      0|                      "Failed to allocate string value buffer");
  146|      0|  }
  147|  1.22k|  *reinterpret_cast<unsigned*>(newString) = length;
  148|  1.22k|  memcpy(newString + sizeof(unsigned), value, length);
  149|  1.22k|  newString[actualLength - 1U] =
  150|  1.22k|      0; // to avoid buffer over-run accidents by users later
  151|  1.22k|  return newString;
  152|  1.22k|}
json_value.cpp:_ZN4JsonL26releasePrefixedStringValueEPc:
  182|  1.22k|static inline void releasePrefixedStringValue(char* value) { free(value); }
json_value.cpp:_ZN4JsonL11cloneUniqueINSt3__15arrayINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEELm3EEEEENS1_10unique_ptrIT_NS1_14default_deleteISB_EEEERKSE_:
   52|  1.15M|static std::unique_ptr<T> cloneUnique(const std::unique_ptr<T>& p) {
   53|  1.15M|  std::unique_ptr<T> r;
   54|  1.15M|  if (p) {
  ------------------
  |  Branch (54:7): [True: 0, False: 1.15M]
  ------------------
   55|      0|    r = std::unique_ptr<T>(new T(*p));
   56|      0|  }
   57|  1.15M|  return r;
   58|  1.15M|}

_Z8FuzzJsonNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEi:
   36|  3.01k|void FuzzJson(std::string data_str, int32_t hash_settings) {
   37|  3.01k|  Json::CharReaderBuilder builder;
   38|       |
   39|  3.01k|  builder.settings_["failIfExtra"] = hash_settings & (1 << 0);
   40|  3.01k|  builder.settings_["allowComments_"] = hash_settings & (1 << 1);
   41|  3.01k|  builder.settings_["strictRoot_"] = hash_settings & (1 << 2);
   42|  3.01k|  builder.settings_["allowDroppedNullPlaceholders_"] = hash_settings & (1 << 3);
   43|  3.01k|  builder.settings_["allowNumericKeys_"] = hash_settings & (1 << 4);
   44|  3.01k|  builder.settings_["allowSingleQuotes_"] = hash_settings & (1 << 5);
   45|  3.01k|  builder.settings_["failIfExtra_"] = hash_settings & (1 << 6);
   46|  3.01k|  builder.settings_["rejectDupKeys_"] = hash_settings & (1 << 7);
   47|  3.01k|  builder.settings_["allowSpecialFloats_"] = hash_settings & (1 << 8);
   48|  3.01k|  builder.settings_["collectComments"] = hash_settings & (1 << 9);
   49|  3.01k|  builder.settings_["allowTrailingCommas_"] = hash_settings & (1 << 10);
   50|       |
   51|  3.01k|  std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
   52|       |  
   53|  3.01k|  const char* begin = data_str.c_str();
   54|  3.01k|  const char* end = begin + data_str.length();
   55|       |
   56|  3.01k|  Json::Value root;
   57|  3.01k|  try {
   58|  3.01k|    reader->parse(begin, end, &root, nullptr);
   59|  3.01k|  } catch (Json::Exception const&) {
   60|     27|  }
   61|  3.01k|}
jsoncpp_fuzz_proto.cc:_ZL17TestOneProtoInputRKN10json_proto12JsonParseAPIE:
   63|  3.01k|DEFINE_PROTO_FUZZER(const json_proto::JsonParseAPI &json_proto) {
   64|  3.01k|  json_proto::JsonProtoConverter converter;
   65|  3.01k|  std::string data_str = converter.Convert(json_proto.object_value());
   66|  3.01k|  int32_t hash_settings = json_proto.settings();
   67|  3.01k|  FuzzJson(data_str, hash_settings);
   68|  3.01k|}

