blob: 8b4e87e5a9966741e4a54ccdb0e33ffa10899a0e [file] [log] [blame]
// mojo/public/tools/fuzzers/fuzz.mojom.h is auto generated by mojom_bindings_generator.py, do not edit
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_MOJOM_H_
#define MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_MOJOM_H_
#include <stdint.h>
#include <limits>
#include <optional>
#include <type_traits>
#include <utility>
#include "base/types/cxx23_to_underlying.h"
#include "mojo/public/cpp/bindings/clone_traits.h"
#include "mojo/public/cpp/bindings/equals_traits.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/struct_ptr.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "mojo/public/cpp/bindings/union_traits.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"
#include "mojo/public/tools/fuzzers/fuzz.mojom-features.h"
#include "mojo/public/tools/fuzzers/fuzz.mojom-shared.h"
#include "mojo/public/tools/fuzzers/fuzz.mojom-forward.h"
#include <string>
#include <vector>
#include "mojo/public/cpp/bindings/lib/control_message_handler.h"
#include "mojo/public/cpp/bindings/lib/message_size_estimator.h"
#include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h"
#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif
namespace fuzz::mojom {
class FuzzDummyInterfaceProxy;
template <typename ImplRefTraits>
class FuzzDummyInterfaceStub;
class FuzzDummyInterfaceRequestValidator;
// @generated_from: fuzz.mojom.FuzzDummyInterface
class FuzzDummyInterface
: public FuzzDummyInterfaceInterfaceBase {
public:
using IPCStableHashFunction = uint32_t(*)();
static const char Name_[];
static IPCStableHashFunction MessageToMethodInfo_(mojo::Message& message);
static const char* MessageToMethodName_(mojo::Message& message);
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = false;
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = FuzzDummyInterfaceInterfaceBase;
using Proxy_ = FuzzDummyInterfaceProxy;
template <typename ImplRefTraits>
using Stub_ = FuzzDummyInterfaceStub<ImplRefTraits>;
using RequestValidator_ = FuzzDummyInterfaceRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kPingMinVersion = 0,
};
// crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK
// with not having this data in traces there.
#if !BUILDFLAG(IS_FUCHSIA)
struct Ping_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~FuzzDummyInterface() = default;
// @generated_from: fuzz.mojom.FuzzDummyInterface.Ping
virtual void Ping() = 0;
};
class FuzzInterfaceProxy;
template <typename ImplRefTraits>
class FuzzInterfaceStub;
class FuzzInterfaceRequestValidator;
class FuzzInterfaceResponseValidator;
// @generated_from: fuzz.mojom.FuzzInterface
class FuzzInterface
: public FuzzInterfaceInterfaceBase {
public:
using IPCStableHashFunction = uint32_t(*)();
static const char Name_[];
static IPCStableHashFunction MessageToMethodInfo_(mojo::Message& message);
static const char* MessageToMethodName_(mojo::Message& message);
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = true;
static inline constexpr uint32_t kSyncMethodOrdinals[] = {
2,
5
};
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = FuzzInterfaceInterfaceBase;
using Proxy_ = FuzzInterfaceProxy;
template <typename ImplRefTraits>
using Stub_ = FuzzInterfaceStub<ImplRefTraits>;
using RequestValidator_ = FuzzInterfaceRequestValidator;
using ResponseValidator_ = FuzzInterfaceResponseValidator;
enum MethodMinVersions : uint32_t {
kFuzzBasicMinVersion = 0,
kFuzzBasicRespMinVersion = 0,
kFuzzBasicSyncRespMinVersion = 0,
kFuzzArgsMinVersion = 0,
kFuzzArgsRespMinVersion = 0,
kFuzzArgsSyncRespMinVersion = 0,
kFuzzAssociatedMinVersion = 0,
};
// crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK
// with not having this data in traces there.
#if !BUILDFLAG(IS_FUCHSIA)
struct FuzzBasic_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct FuzzBasicResp_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct FuzzBasicSyncResp_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct FuzzArgs_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct FuzzArgsResp_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct FuzzArgsSyncResp_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct FuzzAssociated_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~FuzzInterface() = default;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasic
virtual void FuzzBasic() = 0;
using FuzzBasicRespCallback = base::OnceCallback<void()>;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicResp
virtual void FuzzBasicResp(FuzzBasicRespCallback callback) = 0;
// Sync method. This signature is used by the client side; the service side
// should implement the signature with callback below.
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicSyncResp
virtual bool FuzzBasicSyncResp();
using FuzzBasicSyncRespCallback = base::OnceCallback<void()>;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicSyncResp
virtual void FuzzBasicSyncResp(FuzzBasicSyncRespCallback callback) = 0;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgs
virtual void FuzzArgs(FuzzStructPtr a, FuzzStructPtr b) = 0;
using FuzzArgsRespCallback = base::OnceCallback<void()>;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsResp
virtual void FuzzArgsResp(FuzzStructPtr a, FuzzStructPtr b, FuzzArgsRespCallback callback) = 0;
// Sync method. This signature is used by the client side; the service side
// should implement the signature with callback below.
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsSyncResp
virtual bool FuzzArgsSyncResp(FuzzStructPtr a, FuzzStructPtr b);
using FuzzArgsSyncRespCallback = base::OnceCallback<void()>;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsSyncResp
virtual void FuzzArgsSyncResp(FuzzStructPtr a, FuzzStructPtr b, FuzzArgsSyncRespCallback callback) = 0;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzAssociated
virtual void FuzzAssociated(::mojo::PendingAssociatedReceiver<FuzzDummyInterface> receiver) = 0;
};
// @generated_from: fuzz.mojom.FuzzDummyInterface
class FuzzDummyInterfaceProxy
: public FuzzDummyInterface {
public:
using InterfaceType = FuzzDummyInterface;
explicit FuzzDummyInterfaceProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: fuzz.mojom.FuzzDummyInterface.Ping
void Ping() final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: fuzz.mojom.FuzzInterface
class FuzzInterfaceProxy
: public FuzzInterface {
public:
using InterfaceType = FuzzInterface;
explicit FuzzInterfaceProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasic
void FuzzBasic() final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicResp
void FuzzBasicResp(FuzzBasicRespCallback callback) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicSyncResp
bool FuzzBasicSyncResp() final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzBasicSyncResp
void FuzzBasicSyncResp(FuzzBasicSyncRespCallback callback) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgs
void FuzzArgs(FuzzStructPtr a, FuzzStructPtr b) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsResp
void FuzzArgsResp(FuzzStructPtr a, FuzzStructPtr b, FuzzArgsRespCallback callback) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsSyncResp
bool FuzzArgsSyncResp(FuzzStructPtr a, FuzzStructPtr b) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzArgsSyncResp
void FuzzArgsSyncResp(FuzzStructPtr a, FuzzStructPtr b, FuzzArgsSyncRespCallback callback) final;
// @generated_from: fuzz.mojom.FuzzInterface.FuzzAssociated
void FuzzAssociated(::mojo::PendingAssociatedReceiver<FuzzDummyInterface> receiver) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
class FuzzDummyInterfaceStubDispatch {
public:
static bool Accept(FuzzDummyInterface* impl, mojo::Message* message);
static bool AcceptWithResponder(
FuzzDummyInterface* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<FuzzDummyInterface>>
class FuzzDummyInterfaceStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
FuzzDummyInterfaceStub() = default;
~FuzzDummyInterfaceStub() override = default;
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return FuzzDummyInterfaceStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return FuzzDummyInterfaceStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class FuzzInterfaceStubDispatch {
public:
static bool Accept(FuzzInterface* impl, mojo::Message* message);
static bool AcceptWithResponder(
FuzzInterface* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<FuzzInterface>>
class FuzzInterfaceStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
FuzzInterfaceStub() = default;
~FuzzInterfaceStub() override = default;
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return FuzzInterfaceStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return FuzzInterfaceStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class FuzzDummyInterfaceRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class FuzzInterfaceRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class FuzzInterfaceResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
// @generated_from: fuzz.mojom.FuzzDummyStruct
class FuzzDummyStruct {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<FuzzDummyStruct, T>::value>;
using DataView = FuzzDummyStructDataView;
using Data_ = internal::FuzzDummyStruct_Data;
template <typename... Args>
static FuzzDummyStructPtr New(Args&&... args) {
return FuzzDummyStructPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static FuzzDummyStructPtr From(const U& u) {
return mojo::TypeConverter<FuzzDummyStructPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, FuzzDummyStruct>::Convert(*this);
}
FuzzDummyStruct();
explicit FuzzDummyStruct(
int8_t dummy);
~FuzzDummyStruct();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename StructPtrType = FuzzDummyStructPtr>
FuzzDummyStructPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
size_t Hash(size_t seed) const;
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
FuzzDummyStruct::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
FuzzDummyStruct::DataView>(input);
}
// The returned Message is serialized only if the message is moved
// cross-process or cross-language. Otherwise if the message is Deserialized
// as the same UserType |input| will just be moved to |output| in
// DeserializeFromMessage.
template <typename UserType>
static mojo::Message WrapAsMessage(UserType input) {
return mojo::Message(std::make_unique<
internal::FuzzDummyStruct_UnserializedMessageContext<
UserType, FuzzDummyStruct::DataView>>(0, 0, std::move(input)),
MOJO_CREATE_MESSAGE_FLAG_NONE);
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
mojo::Message message;
return mojo::internal::DeserializeImpl<FuzzDummyStruct::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return FuzzDummyStruct::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::FuzzDummyStruct_UnserializedMessageContext<
UserType, FuzzDummyStruct::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<FuzzDummyStruct::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: fuzz.mojom.FuzzDummyStruct.dummy
int8_t dummy;
// Serialise this struct into a trace.
void WriteIntoTrace(perfetto::TracedValue traced_context) const;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
};
// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, FuzzDummyStruct::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: fuzz.mojom.FuzzUnion
class FuzzUnion {
public:
using DataView = FuzzUnionDataView;
using Data_ = internal::FuzzUnion_Data;
using Tag = Data_::FuzzUnion_Tag;
template <typename... Args>
static FuzzUnionPtr New(Args&&... args) {
static_assert(
sizeof...(args) < 0,
"Do not use Union::New(); to create a union of a given subtype, use "
"New<SubType>(), not New() followed by set_<sub_type>(). To represent "
"an empty union, mark the field or parameter as nullable in the mojom "
"definition.");
return nullptr;
}
// Construct an instance holding |fuzz_bool|.
static FuzzUnionPtr
NewFuzzBool(
bool value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_bool(std::move(value));
return result;
}
// Construct an instance holding |fuzz_int8|.
static FuzzUnionPtr
NewFuzzInt8(
int8_t value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_int8(std::move(value));
return result;
}
// Construct an instance holding |fuzz_uint8|.
static FuzzUnionPtr
NewFuzzUint8(
uint8_t value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_uint8(std::move(value));
return result;
}
// Construct an instance holding |fuzz_int16|.
static FuzzUnionPtr
NewFuzzInt16(
int16_t value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_int16(std::move(value));
return result;
}
// Construct an instance holding |fuzz_uint16|.
static FuzzUnionPtr
NewFuzzUint16(
uint16_t value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_uint16(std::move(value));
return result;
}
// Construct an instance holding |fuzz_int32|.
static FuzzUnionPtr
NewFuzzInt32(
int32_t value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_int32(std::move(value));
return result;
}
// Construct an instance holding |fuzz_uint32|.
static FuzzUnionPtr
NewFuzzUint32(
uint32_t value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_uint32(std::move(value));
return result;
}
// Construct an instance holding |fuzz_int64|.
static FuzzUnionPtr
NewFuzzInt64(
int64_t value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_int64(std::move(value));
return result;
}
// Construct an instance holding |fuzz_uint64|.
static FuzzUnionPtr
NewFuzzUint64(
uint64_t value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_uint64(std::move(value));
return result;
}
// Construct an instance holding |fuzz_float|.
static FuzzUnionPtr
NewFuzzFloat(
float value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_float(std::move(value));
return result;
}
// Construct an instance holding |fuzz_double|.
static FuzzUnionPtr
NewFuzzDouble(
double value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_double(std::move(value));
return result;
}
// Construct an instance holding |fuzz_string|.
static FuzzUnionPtr
NewFuzzString(
const std::string& value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_string(std::move(value));
return result;
}
// Construct an instance holding |fuzz_bool_array|.
static FuzzUnionPtr
NewFuzzBoolArray(
std::vector<bool> value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_bool_array(std::move(value));
return result;
}
// Construct an instance holding |fuzz_primitive_array|.
static FuzzUnionPtr
NewFuzzPrimitiveArray(
std::vector<int8_t> value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_primitive_array(std::move(value));
return result;
}
// Construct an instance holding |fuzz_struct_array|.
static FuzzUnionPtr
NewFuzzStructArray(
std::vector<FuzzDummyStructPtr> value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_struct_array(std::move(value));
return result;
}
// Construct an instance holding |fuzz_primitive_map|.
static FuzzUnionPtr
NewFuzzPrimitiveMap(
const base::flat_map<std::string, int8_t>& value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_primitive_map(std::move(value));
return result;
}
// Construct an instance holding |fuzz_array_map|.
static FuzzUnionPtr
NewFuzzArrayMap(
const base::flat_map<std::string, std::vector<std::string>>& value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_array_map(std::move(value));
return result;
}
// Construct an instance holding |fuzz_struct_map|.
static FuzzUnionPtr
NewFuzzStructMap(
base::flat_map<std::string, FuzzDummyStructPtr> value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_struct_map(std::move(value));
return result;
}
// Construct an instance holding |fuzz_union_map|.
static FuzzUnionPtr
NewFuzzUnionMap(
base::flat_map<FuzzEnum, FuzzUnionPtr> value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_union_map(std::move(value));
return result;
}
// Construct an instance holding |fuzz_complex|.
static FuzzUnionPtr
NewFuzzComplex(
std::optional<std::vector<base::flat_map<FuzzEnum, base::flat_map<int8_t, std::optional<std::vector<FuzzUnionPtr>>>>>> value) {
auto result = FuzzUnionPtr(std::in_place);
result->set_fuzz_complex(std::move(value));
return result;
}
template <typename U>
static FuzzUnionPtr From(const U& u) {
return mojo::TypeConverter<FuzzUnionPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, FuzzUnion>::Convert(*this);
}
FuzzUnion();
~FuzzUnion();
// Delete the copy constructor and copy assignment operators because `data_`
// contains raw pointers that must not be copied.
FuzzUnion(const FuzzUnion& other) = delete;
FuzzUnion& operator=(const FuzzUnion& other) = delete;
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename UnionPtrType = FuzzUnionPtr>
FuzzUnionPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T,
typename std::enable_if<std::is_same<
T, FuzzUnion>::value>::type* = nullptr>
bool Equals(const T& other) const;
template <typename T,
typename std::enable_if<std::is_same<
T, FuzzUnion>::value>::type* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
Tag which() const {
return tag_;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool
bool is_fuzz_bool() const { return tag_ == Tag::kFuzzBool; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool
bool get_fuzz_bool() const {
CHECK(tag_ == Tag::kFuzzBool);
return data_.fuzz_bool;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool
void set_fuzz_bool(
bool fuzz_bool);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int8
bool is_fuzz_int8() const { return tag_ == Tag::kFuzzInt8; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int8
int8_t get_fuzz_int8() const {
CHECK(tag_ == Tag::kFuzzInt8);
return data_.fuzz_int8;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int8
void set_fuzz_int8(
int8_t fuzz_int8);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint8
bool is_fuzz_uint8() const { return tag_ == Tag::kFuzzUint8; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint8
uint8_t get_fuzz_uint8() const {
CHECK(tag_ == Tag::kFuzzUint8);
return data_.fuzz_uint8;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint8
void set_fuzz_uint8(
uint8_t fuzz_uint8);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int16
bool is_fuzz_int16() const { return tag_ == Tag::kFuzzInt16; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int16
int16_t get_fuzz_int16() const {
CHECK(tag_ == Tag::kFuzzInt16);
return data_.fuzz_int16;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int16
void set_fuzz_int16(
int16_t fuzz_int16);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint16
bool is_fuzz_uint16() const { return tag_ == Tag::kFuzzUint16; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint16
uint16_t get_fuzz_uint16() const {
CHECK(tag_ == Tag::kFuzzUint16);
return data_.fuzz_uint16;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint16
void set_fuzz_uint16(
uint16_t fuzz_uint16);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int32
bool is_fuzz_int32() const { return tag_ == Tag::kFuzzInt32; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int32
int32_t get_fuzz_int32() const {
CHECK(tag_ == Tag::kFuzzInt32);
return data_.fuzz_int32;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int32
void set_fuzz_int32(
int32_t fuzz_int32);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint32
bool is_fuzz_uint32() const { return tag_ == Tag::kFuzzUint32; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint32
uint32_t get_fuzz_uint32() const {
CHECK(tag_ == Tag::kFuzzUint32);
return data_.fuzz_uint32;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint32
void set_fuzz_uint32(
uint32_t fuzz_uint32);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int64
bool is_fuzz_int64() const { return tag_ == Tag::kFuzzInt64; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int64
int64_t get_fuzz_int64() const {
CHECK(tag_ == Tag::kFuzzInt64);
return data_.fuzz_int64;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_int64
void set_fuzz_int64(
int64_t fuzz_int64);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint64
bool is_fuzz_uint64() const { return tag_ == Tag::kFuzzUint64; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint64
uint64_t get_fuzz_uint64() const {
CHECK(tag_ == Tag::kFuzzUint64);
return data_.fuzz_uint64;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_uint64
void set_fuzz_uint64(
uint64_t fuzz_uint64);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_float
bool is_fuzz_float() const { return tag_ == Tag::kFuzzFloat; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_float
float get_fuzz_float() const {
CHECK(tag_ == Tag::kFuzzFloat);
return data_.fuzz_float;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_float
void set_fuzz_float(
float fuzz_float);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_double
bool is_fuzz_double() const { return tag_ == Tag::kFuzzDouble; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_double
double get_fuzz_double() const {
CHECK(tag_ == Tag::kFuzzDouble);
return data_.fuzz_double;
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_double
void set_fuzz_double(
double fuzz_double);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_string
bool is_fuzz_string() const { return tag_ == Tag::kFuzzString; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_string
std::string& get_fuzz_string() const {
CHECK(tag_ == Tag::kFuzzString);
return *(data_.fuzz_string);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_string
void set_fuzz_string(
const std::string& fuzz_string);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool_array
bool is_fuzz_bool_array() const { return tag_ == Tag::kFuzzBoolArray; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool_array
std::vector<bool>& get_fuzz_bool_array() const {
CHECK(tag_ == Tag::kFuzzBoolArray);
return *(data_.fuzz_bool_array);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_bool_array
void set_fuzz_bool_array(
std::vector<bool> fuzz_bool_array);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_array
bool is_fuzz_primitive_array() const { return tag_ == Tag::kFuzzPrimitiveArray; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_array
std::vector<int8_t>& get_fuzz_primitive_array() const {
CHECK(tag_ == Tag::kFuzzPrimitiveArray);
return *(data_.fuzz_primitive_array);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_array
void set_fuzz_primitive_array(
std::vector<int8_t> fuzz_primitive_array);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_array
bool is_fuzz_struct_array() const { return tag_ == Tag::kFuzzStructArray; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_array
std::vector<FuzzDummyStructPtr>& get_fuzz_struct_array() const {
CHECK(tag_ == Tag::kFuzzStructArray);
return *(data_.fuzz_struct_array);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_array
void set_fuzz_struct_array(
std::vector<FuzzDummyStructPtr> fuzz_struct_array);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_map
bool is_fuzz_primitive_map() const { return tag_ == Tag::kFuzzPrimitiveMap; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_map
base::flat_map<std::string, int8_t>& get_fuzz_primitive_map() const {
CHECK(tag_ == Tag::kFuzzPrimitiveMap);
return *(data_.fuzz_primitive_map);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_primitive_map
void set_fuzz_primitive_map(
const base::flat_map<std::string, int8_t>& fuzz_primitive_map);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_array_map
bool is_fuzz_array_map() const { return tag_ == Tag::kFuzzArrayMap; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_array_map
base::flat_map<std::string, std::vector<std::string>>& get_fuzz_array_map() const {
CHECK(tag_ == Tag::kFuzzArrayMap);
return *(data_.fuzz_array_map);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_array_map
void set_fuzz_array_map(
const base::flat_map<std::string, std::vector<std::string>>& fuzz_array_map);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_map
bool is_fuzz_struct_map() const { return tag_ == Tag::kFuzzStructMap; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_map
base::flat_map<std::string, FuzzDummyStructPtr>& get_fuzz_struct_map() const {
CHECK(tag_ == Tag::kFuzzStructMap);
return *(data_.fuzz_struct_map);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_struct_map
void set_fuzz_struct_map(
base::flat_map<std::string, FuzzDummyStructPtr> fuzz_struct_map);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_union_map
bool is_fuzz_union_map() const { return tag_ == Tag::kFuzzUnionMap; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_union_map
base::flat_map<FuzzEnum, FuzzUnionPtr>& get_fuzz_union_map() const {
CHECK(tag_ == Tag::kFuzzUnionMap);
return *(data_.fuzz_union_map);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_union_map
void set_fuzz_union_map(
base::flat_map<FuzzEnum, FuzzUnionPtr> fuzz_union_map);
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_complex
bool is_fuzz_complex() const { return tag_ == Tag::kFuzzComplex; }
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_complex
std::optional<std::vector<base::flat_map<FuzzEnum, base::flat_map<int8_t, std::optional<std::vector<FuzzUnionPtr>>>>>>& get_fuzz_complex() const {
CHECK(tag_ == Tag::kFuzzComplex);
return *(data_.fuzz_complex);
}
// @generated_from: fuzz.mojom.FuzzUnion.fuzz_complex
void set_fuzz_complex(
std::optional<std::vector<base::flat_map<FuzzEnum, base::flat_map<int8_t, std::optional<std::vector<FuzzUnionPtr>>>>>> fuzz_complex);
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
FuzzUnion::DataView>(input);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
return mojo::internal::DeserializeImpl<FuzzUnion::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
private:
union Union_ {
Union_() = default;
~Union_() = default;
bool fuzz_bool;
int8_t fuzz_int8;
uint8_t fuzz_uint8;
int16_t fuzz_int16;
uint16_t fuzz_uint16;
int32_t fuzz_int32;
uint32_t fuzz_uint32;
int64_t fuzz_int64;
uint64_t fuzz_uint64;
float fuzz_float;
double fuzz_double;
std::string* fuzz_string;
std::vector<bool>* fuzz_bool_array;
std::vector<int8_t>* fuzz_primitive_array;
std::vector<FuzzDummyStructPtr>* fuzz_struct_array;
base::flat_map<std::string, int8_t>* fuzz_primitive_map;
base::flat_map<std::string, std::vector<std::string>>* fuzz_array_map;
base::flat_map<std::string, FuzzDummyStructPtr>* fuzz_struct_map;
base::flat_map<FuzzEnum, FuzzUnionPtr>* fuzz_union_map;
std::optional<std::vector<base::flat_map<FuzzEnum, base::flat_map<int8_t, std::optional<std::vector<FuzzUnionPtr>>>>>>* fuzz_complex;
};
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
void DestroyActive();
Tag tag_;
Union_ data_;
};
// @generated_from: fuzz.mojom.FuzzStruct
class FuzzStruct {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<FuzzStruct, T>::value>;
using DataView = FuzzStructDataView;
using Data_ = internal::FuzzStruct_Data;
template <typename... Args>
static FuzzStructPtr New(Args&&... args) {
return FuzzStructPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static FuzzStructPtr From(const U& u) {
return mojo::TypeConverter<FuzzStructPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, FuzzStruct>::Convert(*this);
}
FuzzStruct();
FuzzStruct(
bool fuzz_bool,
int8_t fuzz_int8,
uint8_t fuzz_uint8,
int16_t fuzz_int16,
uint16_t fuzz_uint16,
int32_t fuzz_int32,
uint32_t fuzz_uint32,
int64_t fuzz_int64,
uint64_t fuzz_uint64,
float fuzz_float,
double fuzz_double,
const std::string& fuzz_string,
std::vector<bool> fuzz_bool_array,
std::vector<int8_t> fuzz_primitive_array,
const base::flat_map<std::string, int8_t>& fuzz_primitive_map,
const base::flat_map<std::string, std::vector<std::string>>& fuzz_array_map,
base::flat_map<FuzzEnum, FuzzUnionPtr> fuzz_union_map,
std::vector<FuzzUnionPtr> fuzz_union_array,
std::vector<FuzzStructPtr> fuzz_struct_array,
std::optional<std::vector<int8_t>> fuzz_nullable_array,
std::optional<std::vector<base::flat_map<FuzzEnum, base::flat_map<int8_t, std::optional<std::vector<FuzzStructPtr>>>>>> fuzz_complex);
FuzzStruct(const FuzzStruct&) = delete;
FuzzStruct& operator=(const FuzzStruct&) = delete;
~FuzzStruct();
// Clone() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Clone() or copy
// constructor/assignment are available for members.
template <typename StructPtrType = FuzzStructPtr>
FuzzStructPtr Clone() const;
// Equals() is a template so it is only instantiated if it is used. Thus, the
// bindings generator does not need to know whether Equals() or == operator
// are available for members.
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
FuzzStruct::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
FuzzStruct::DataView>(input);
}
// The returned Message is serialized only if the message is moved
// cross-process or cross-language. Otherwise if the message is Deserialized
// as the same UserType |input| will just be moved to |output| in
// DeserializeFromMessage.
template <typename UserType>
static mojo::Message WrapAsMessage(UserType input) {
return mojo::Message(std::make_unique<
internal::FuzzStruct_UnserializedMessageContext<
UserType, FuzzStruct::DataView>>(0, 0, std::move(input)),
MOJO_CREATE_MESSAGE_FLAG_NONE);
}
template <typename UserType>
static bool Deserialize(const void* data,
size_t data_num_bytes,
UserType* output) {
mojo::Message message;
return mojo::internal::DeserializeImpl<FuzzStruct::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return FuzzStruct::Deserialize(
input.size() == 0 ? nullptr : &input.front(), input.size(), output);
}
template <typename UserType>
static bool DeserializeFromMessage(mojo::Message input,
UserType* output) {
auto context = input.TakeUnserializedContext<
internal::FuzzStruct_UnserializedMessageContext<
UserType, FuzzStruct::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<FuzzStruct::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_bool
bool fuzz_bool;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_int8
int8_t fuzz_int8;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_uint8
uint8_t fuzz_uint8;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_int16
int16_t fuzz_int16;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_uint16
uint16_t fuzz_uint16;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_int32
int32_t fuzz_int32;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_uint32
uint32_t fuzz_uint32;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_int64
int64_t fuzz_int64;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_uint64
uint64_t fuzz_uint64;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_float
float fuzz_float;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_double
double fuzz_double;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_string
std::string fuzz_string;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_bool_array
std::vector<bool> fuzz_bool_array;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_primitive_array
std::vector<int8_t> fuzz_primitive_array;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_primitive_map
base::flat_map<std::string, int8_t> fuzz_primitive_map;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_array_map
base::flat_map<std::string, std::vector<std::string>> fuzz_array_map;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_union_map
base::flat_map<FuzzEnum, FuzzUnionPtr> fuzz_union_map;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_union_array
std::vector<FuzzUnionPtr> fuzz_union_array;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_struct_array
std::vector<FuzzStructPtr> fuzz_struct_array;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_nullable_array
std::optional<std::vector<int8_t>> fuzz_nullable_array;
// @generated_from: fuzz.mojom.FuzzStruct.fuzz_complex
std::optional<std::vector<base::flat_map<FuzzEnum, base::flat_map<int8_t, std::optional<std::vector<FuzzStructPtr>>>>>> fuzz_complex;
// Serialise this struct into a trace.
void WriteIntoTrace(perfetto::TracedValue traced_context) const;
private:
static bool Validate(const void* data,
mojo::internal::ValidationContext* validation_context);
};
// The comparison operators are templates, so they are only instantiated if they
// are used. Thus, the bindings generator does not need to know whether
// comparison operators are available for members.
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, FuzzStruct::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
template <typename UnionPtrType>
FuzzUnionPtr FuzzUnion::Clone() const {
switch (tag_) {
case Tag::kFuzzBool:
return NewFuzzBool(
mojo::Clone(data_.fuzz_bool));
case Tag::kFuzzInt8:
return NewFuzzInt8(
mojo::Clone(data_.fuzz_int8));
case Tag::kFuzzUint8:
return NewFuzzUint8(
mojo::Clone(data_.fuzz_uint8));
case Tag::kFuzzInt16:
return NewFuzzInt16(
mojo::Clone(data_.fuzz_int16));
case Tag::kFuzzUint16:
return NewFuzzUint16(
mojo::Clone(data_.fuzz_uint16));
case Tag::kFuzzInt32:
return NewFuzzInt32(
mojo::Clone(data_.fuzz_int32));
case Tag::kFuzzUint32:
return NewFuzzUint32(
mojo::Clone(data_.fuzz_uint32));
case Tag::kFuzzInt64:
return NewFuzzInt64(
mojo::Clone(data_.fuzz_int64));
case Tag::kFuzzUint64:
return NewFuzzUint64(
mojo::Clone(data_.fuzz_uint64));
case Tag::kFuzzFloat:
return NewFuzzFloat(
mojo::Clone(data_.fuzz_float));
case Tag::kFuzzDouble:
return NewFuzzDouble(
mojo::Clone(data_.fuzz_double));
case Tag::kFuzzString:
return NewFuzzString(
mojo::Clone(*data_.fuzz_string));
case Tag::kFuzzBoolArray:
return NewFuzzBoolArray(
mojo::Clone(*data_.fuzz_bool_array));
case Tag::kFuzzPrimitiveArray:
return NewFuzzPrimitiveArray(
mojo::Clone(*data_.fuzz_primitive_array));
case Tag::kFuzzStructArray:
return NewFuzzStructArray(
mojo::Clone(*data_.fuzz_struct_array));
case Tag::kFuzzPrimitiveMap:
return NewFuzzPrimitiveMap(
mojo::Clone(*data_.fuzz_primitive_map));
case Tag::kFuzzArrayMap:
return NewFuzzArrayMap(
mojo::Clone(*data_.fuzz_array_map));
case Tag::kFuzzStructMap:
return NewFuzzStructMap(
mojo::Clone(*data_.fuzz_struct_map));
case Tag::kFuzzUnionMap:
return NewFuzzUnionMap(
mojo::Clone(*data_.fuzz_union_map));
case Tag::kFuzzComplex:
return NewFuzzComplex(
mojo::Clone(*data_.fuzz_complex));
}
return nullptr;
}
template <typename T,
typename std::enable_if<std::is_same<
T, FuzzUnion>::value>::type*>
bool FuzzUnion::Equals(const T& other) const {
if (tag_ != other.which())
return false;
switch (tag_) {
case Tag::kFuzzBool:
return mojo::Equals(data_.fuzz_bool, other.data_.fuzz_bool);
case Tag::kFuzzInt8:
return mojo::Equals(data_.fuzz_int8, other.data_.fuzz_int8);
case Tag::kFuzzUint8:
return mojo::Equals(data_.fuzz_uint8, other.data_.fuzz_uint8);
case Tag::kFuzzInt16:
return mojo::Equals(data_.fuzz_int16, other.data_.fuzz_int16);
case Tag::kFuzzUint16:
return mojo::Equals(data_.fuzz_uint16, other.data_.fuzz_uint16);
case Tag::kFuzzInt32:
return mojo::Equals(data_.fuzz_int32, other.data_.fuzz_int32);
case Tag::kFuzzUint32:
return mojo::Equals(data_.fuzz_uint32, other.data_.fuzz_uint32);
case Tag::kFuzzInt64:
return mojo::Equals(data_.fuzz_int64, other.data_.fuzz_int64);
case Tag::kFuzzUint64:
return mojo::Equals(data_.fuzz_uint64, other.data_.fuzz_uint64);
case Tag::kFuzzFloat:
return mojo::Equals(data_.fuzz_float, other.data_.fuzz_float);
case Tag::kFuzzDouble:
return mojo::Equals(data_.fuzz_double, other.data_.fuzz_double);
case Tag::kFuzzString:
return mojo::Equals(*(data_.fuzz_string), *(other.data_.fuzz_string));
case Tag::kFuzzBoolArray:
return mojo::Equals(*(data_.fuzz_bool_array), *(other.data_.fuzz_bool_array));
case Tag::kFuzzPrimitiveArray:
return mojo::Equals(*(data_.fuzz_primitive_array), *(other.data_.fuzz_primitive_array));
case Tag::kFuzzStructArray:
return mojo::Equals(*(data_.fuzz_struct_array), *(other.data_.fuzz_struct_array));
case Tag::kFuzzPrimitiveMap:
return mojo::Equals(*(data_.fuzz_primitive_map), *(other.data_.fuzz_primitive_map));
case Tag::kFuzzArrayMap:
return mojo::Equals(*(data_.fuzz_array_map), *(other.data_.fuzz_array_map));
case Tag::kFuzzStructMap:
return mojo::Equals(*(data_.fuzz_struct_map), *(other.data_.fuzz_struct_map));
case Tag::kFuzzUnionMap:
return mojo::Equals(*(data_.fuzz_union_map), *(other.data_.fuzz_union_map));
case Tag::kFuzzComplex:
return mojo::Equals(*(data_.fuzz_complex), *(other.data_.fuzz_complex));
}
return false;
}
template <typename StructPtrType>
FuzzDummyStructPtr FuzzDummyStruct::Clone() const {
return New(
mojo::Clone(dummy)
);
}
template <typename T, FuzzDummyStruct::EnableIfSame<T>*>
bool FuzzDummyStruct::Equals(const T& other_struct) const {
if (!mojo::Equals(this->dummy, other_struct.dummy))
return false;
return true;
}
template <typename T, FuzzDummyStruct::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.dummy < rhs.dummy)
return true;
if (rhs.dummy < lhs.dummy)
return false;
return false;
}
template <typename StructPtrType>
FuzzStructPtr FuzzStruct::Clone() const {
return New(
mojo::Clone(fuzz_bool),
mojo::Clone(fuzz_int8),
mojo::Clone(fuzz_uint8),
mojo::Clone(fuzz_int16),
mojo::Clone(fuzz_uint16),
mojo::Clone(fuzz_int32),
mojo::Clone(fuzz_uint32),
mojo::Clone(fuzz_int64),
mojo::Clone(fuzz_uint64),
mojo::Clone(fuzz_float),
mojo::Clone(fuzz_double),
mojo::Clone(fuzz_string),
mojo::Clone(fuzz_bool_array),
mojo::Clone(fuzz_primitive_array),
mojo::Clone(fuzz_primitive_map),
mojo::Clone(fuzz_array_map),
mojo::Clone(fuzz_union_map),
mojo::Clone(fuzz_union_array),
mojo::Clone(fuzz_struct_array),
mojo::Clone(fuzz_nullable_array),
mojo::Clone(fuzz_complex)
);
}
template <typename T, FuzzStruct::EnableIfSame<T>*>
bool FuzzStruct::Equals(const T& other_struct) const {
if (!mojo::Equals(this->fuzz_bool, other_struct.fuzz_bool))
return false;
if (!mojo::Equals(this->fuzz_int8, other_struct.fuzz_int8))
return false;
if (!mojo::Equals(this->fuzz_uint8, other_struct.fuzz_uint8))
return false;
if (!mojo::Equals(this->fuzz_int16, other_struct.fuzz_int16))
return false;
if (!mojo::Equals(this->fuzz_uint16, other_struct.fuzz_uint16))
return false;
if (!mojo::Equals(this->fuzz_int32, other_struct.fuzz_int32))
return false;
if (!mojo::Equals(this->fuzz_uint32, other_struct.fuzz_uint32))
return false;
if (!mojo::Equals(this->fuzz_int64, other_struct.fuzz_int64))
return false;
if (!mojo::Equals(this->fuzz_uint64, other_struct.fuzz_uint64))
return false;
if (!mojo::Equals(this->fuzz_float, other_struct.fuzz_float))
return false;
if (!mojo::Equals(this->fuzz_double, other_struct.fuzz_double))
return false;
if (!mojo::Equals(this->fuzz_string, other_struct.fuzz_string))
return false;
if (!mojo::Equals(this->fuzz_bool_array, other_struct.fuzz_bool_array))
return false;
if (!mojo::Equals(this->fuzz_primitive_array, other_struct.fuzz_primitive_array))
return false;
if (!mojo::Equals(this->fuzz_primitive_map, other_struct.fuzz_primitive_map))
return false;
if (!mojo::Equals(this->fuzz_array_map, other_struct.fuzz_array_map))
return false;
if (!mojo::Equals(this->fuzz_union_map, other_struct.fuzz_union_map))
return false;
if (!mojo::Equals(this->fuzz_union_array, other_struct.fuzz_union_array))
return false;
if (!mojo::Equals(this->fuzz_struct_array, other_struct.fuzz_struct_array))
return false;
if (!mojo::Equals(this->fuzz_nullable_array, other_struct.fuzz_nullable_array))
return false;
if (!mojo::Equals(this->fuzz_complex, other_struct.fuzz_complex))
return false;
return true;
}
template <typename T, FuzzStruct::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.fuzz_bool < rhs.fuzz_bool)
return true;
if (rhs.fuzz_bool < lhs.fuzz_bool)
return false;
if (lhs.fuzz_int8 < rhs.fuzz_int8)
return true;
if (rhs.fuzz_int8 < lhs.fuzz_int8)
return false;
if (lhs.fuzz_uint8 < rhs.fuzz_uint8)
return true;
if (rhs.fuzz_uint8 < lhs.fuzz_uint8)
return false;
if (lhs.fuzz_int16 < rhs.fuzz_int16)
return true;
if (rhs.fuzz_int16 < lhs.fuzz_int16)
return false;
if (lhs.fuzz_uint16 < rhs.fuzz_uint16)
return true;
if (rhs.fuzz_uint16 < lhs.fuzz_uint16)
return false;
if (lhs.fuzz_int32 < rhs.fuzz_int32)
return true;
if (rhs.fuzz_int32 < lhs.fuzz_int32)
return false;
if (lhs.fuzz_uint32 < rhs.fuzz_uint32)
return true;
if (rhs.fuzz_uint32 < lhs.fuzz_uint32)
return false;
if (lhs.fuzz_int64 < rhs.fuzz_int64)
return true;
if (rhs.fuzz_int64 < lhs.fuzz_int64)
return false;
if (lhs.fuzz_uint64 < rhs.fuzz_uint64)
return true;
if (rhs.fuzz_uint64 < lhs.fuzz_uint64)
return false;
if (lhs.fuzz_float < rhs.fuzz_float)
return true;
if (rhs.fuzz_float < lhs.fuzz_float)
return false;
if (lhs.fuzz_double < rhs.fuzz_double)
return true;
if (rhs.fuzz_double < lhs.fuzz_double)
return false;
if (lhs.fuzz_string < rhs.fuzz_string)
return true;
if (rhs.fuzz_string < lhs.fuzz_string)
return false;
if (lhs.fuzz_bool_array < rhs.fuzz_bool_array)
return true;
if (rhs.fuzz_bool_array < lhs.fuzz_bool_array)
return false;
if (lhs.fuzz_primitive_array < rhs.fuzz_primitive_array)
return true;
if (rhs.fuzz_primitive_array < lhs.fuzz_primitive_array)
return false;
if (lhs.fuzz_primitive_map < rhs.fuzz_primitive_map)
return true;
if (rhs.fuzz_primitive_map < lhs.fuzz_primitive_map)
return false;
if (lhs.fuzz_array_map < rhs.fuzz_array_map)
return true;
if (rhs.fuzz_array_map < lhs.fuzz_array_map)
return false;
if (lhs.fuzz_union_map < rhs.fuzz_union_map)
return true;
if (rhs.fuzz_union_map < lhs.fuzz_union_map)
return false;
if (lhs.fuzz_union_array < rhs.fuzz_union_array)
return true;
if (rhs.fuzz_union_array < lhs.fuzz_union_array)
return false;
if (lhs.fuzz_struct_array < rhs.fuzz_struct_array)
return true;
if (rhs.fuzz_struct_array < lhs.fuzz_struct_array)
return false;
if (lhs.fuzz_nullable_array < rhs.fuzz_nullable_array)
return true;
if (rhs.fuzz_nullable_array < lhs.fuzz_nullable_array)
return false;
if (lhs.fuzz_complex < rhs.fuzz_complex)
return true;
if (rhs.fuzz_complex < lhs.fuzz_complex)
return false;
return false;
}
} // fuzz::mojom
namespace mojo {
template <>
struct StructTraits<::fuzz::mojom::FuzzDummyStruct::DataView,
::fuzz::mojom::FuzzDummyStructPtr> {
static bool IsNull(const ::fuzz::mojom::FuzzDummyStructPtr& input) { return !input; }
static void SetToNull(::fuzz::mojom::FuzzDummyStructPtr* output) { output->reset(); }
static decltype(::fuzz::mojom::FuzzDummyStruct::dummy) dummy(
const ::fuzz::mojom::FuzzDummyStructPtr& input) {
return input->dummy;
}
static bool Read(::fuzz::mojom::FuzzDummyStruct::DataView input, ::fuzz::mojom::FuzzDummyStructPtr* output);
};
template <>
struct StructTraits<::fuzz::mojom::FuzzStruct::DataView,
::fuzz::mojom::FuzzStructPtr> {
static bool IsNull(const ::fuzz::mojom::FuzzStructPtr& input) { return !input; }
static void SetToNull(::fuzz::mojom::FuzzStructPtr* output) { output->reset(); }
static decltype(::fuzz::mojom::FuzzStruct::fuzz_bool) fuzz_bool(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_bool;
}
static decltype(::fuzz::mojom::FuzzStruct::fuzz_int8) fuzz_int8(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_int8;
}
static decltype(::fuzz::mojom::FuzzStruct::fuzz_uint8) fuzz_uint8(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_uint8;
}
static decltype(::fuzz::mojom::FuzzStruct::fuzz_int16) fuzz_int16(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_int16;
}
static decltype(::fuzz::mojom::FuzzStruct::fuzz_uint16) fuzz_uint16(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_uint16;
}
static decltype(::fuzz::mojom::FuzzStruct::fuzz_int32) fuzz_int32(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_int32;
}
static decltype(::fuzz::mojom::FuzzStruct::fuzz_uint32) fuzz_uint32(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_uint32;
}
static decltype(::fuzz::mojom::FuzzStruct::fuzz_int64) fuzz_int64(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_int64;
}
static decltype(::fuzz::mojom::FuzzStruct::fuzz_uint64) fuzz_uint64(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_uint64;
}
static decltype(::fuzz::mojom::FuzzStruct::fuzz_float) fuzz_float(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_float;
}
static decltype(::fuzz::mojom::FuzzStruct::fuzz_double) fuzz_double(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_double;
}
static const decltype(::fuzz::mojom::FuzzStruct::fuzz_string)& fuzz_string(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_string;
}
static const decltype(::fuzz::mojom::FuzzStruct::fuzz_bool_array)& fuzz_bool_array(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_bool_array;
}
static const decltype(::fuzz::mojom::FuzzStruct::fuzz_primitive_array)& fuzz_primitive_array(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_primitive_array;
}
static const decltype(::fuzz::mojom::FuzzStruct::fuzz_primitive_map)& fuzz_primitive_map(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_primitive_map;
}
static const decltype(::fuzz::mojom::FuzzStruct::fuzz_array_map)& fuzz_array_map(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_array_map;
}
static const decltype(::fuzz::mojom::FuzzStruct::fuzz_union_map)& fuzz_union_map(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_union_map;
}
static const decltype(::fuzz::mojom::FuzzStruct::fuzz_union_array)& fuzz_union_array(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_union_array;
}
static const decltype(::fuzz::mojom::FuzzStruct::fuzz_struct_array)& fuzz_struct_array(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_struct_array;
}
static const decltype(::fuzz::mojom::FuzzStruct::fuzz_nullable_array)& fuzz_nullable_array(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_nullable_array;
}
static const decltype(::fuzz::mojom::FuzzStruct::fuzz_complex)& fuzz_complex(
const ::fuzz::mojom::FuzzStructPtr& input) {
return input->fuzz_complex;
}
static bool Read(::fuzz::mojom::FuzzStruct::DataView input, ::fuzz::mojom::FuzzStructPtr* output);
};
template <>
struct UnionTraits<::fuzz::mojom::FuzzUnion::DataView,
::fuzz::mojom::FuzzUnionPtr> {
static bool IsNull(const ::fuzz::mojom::FuzzUnionPtr& input) { return !input; }
static void SetToNull(::fuzz::mojom::FuzzUnionPtr* output) { output->reset(); }
static ::fuzz::mojom::FuzzUnion::Tag GetTag(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->which();
}
static bool fuzz_bool(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_bool();
}
static int8_t fuzz_int8(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_int8();
}
static uint8_t fuzz_uint8(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_uint8();
}
static int16_t fuzz_int16(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_int16();
}
static uint16_t fuzz_uint16(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_uint16();
}
static int32_t fuzz_int32(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_int32();
}
static uint32_t fuzz_uint32(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_uint32();
}
static int64_t fuzz_int64(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_int64();
}
static uint64_t fuzz_uint64(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_uint64();
}
static float fuzz_float(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_float();
}
static double fuzz_double(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_double();
}
static const std::string& fuzz_string(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_string();
}
static const std::vector<bool>& fuzz_bool_array(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_bool_array();
}
static const std::vector<int8_t>& fuzz_primitive_array(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_primitive_array();
}
static const std::vector<::fuzz::mojom::FuzzDummyStructPtr>& fuzz_struct_array(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_struct_array();
}
static const base::flat_map<std::string, int8_t>& fuzz_primitive_map(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_primitive_map();
}
static const base::flat_map<std::string, std::vector<std::string>>& fuzz_array_map(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_array_map();
}
static const base::flat_map<std::string, ::fuzz::mojom::FuzzDummyStructPtr>& fuzz_struct_map(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_struct_map();
}
static const base::flat_map<::fuzz::mojom::FuzzEnum, ::fuzz::mojom::FuzzUnionPtr>& fuzz_union_map(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_union_map();
}
static const std::optional<std::vector<base::flat_map<::fuzz::mojom::FuzzEnum, base::flat_map<int8_t, std::optional<std::vector<::fuzz::mojom::FuzzUnionPtr>>>>>>& fuzz_complex(const ::fuzz::mojom::FuzzUnionPtr& input) {
return input->get_fuzz_complex();
}
static bool Read(::fuzz::mojom::FuzzUnion::DataView input, ::fuzz::mojom::FuzzUnionPtr* output);
};
} // namespace mojo
#endif // MOJO_PUBLIC_TOOLS_FUZZERS_FUZZ_MOJOM_H_
/* Metadata comment
eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDE1OTYsICJlbmQiOiAxNjE0LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpEdW1teUludGVyZmFjZSJ9
LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVm
aW5lcyIsICJiZWdpbiI6IDI3OTQsICJlbmQiOiAyNzk4LCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpEdW1teUlu
dGVyZmFjZS5QaW5nIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMzAyNSwgImVuZCI6IDMwMzgsICJ2bmFtZSI6
IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9q
b20uRnV6ekludGVyZmFjZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDQ5NzIsICJlbmQiOiA0OTgxLCAidm5h
bWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
Y2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6
Lm1vam9tLkZ1enpJbnRlcmZhY2UuRnV6ekJhc2ljIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNTEyOCwgImVu
ZCI6IDUxNDEsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QmFzaWNSZXNwIn0sICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
ImJlZ2luIjogNTM5NiwgImVuZCI6IDU0MTMsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6
QmFzaWNTeW5jUmVzcCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDU1NjMsICJlbmQiOiA1NTgwLCAidm5hbWUi
OiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1v
am9tLkZ1enpJbnRlcmZhY2UuRnV6ekJhc2ljU3luY1Jlc3AifSwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA1Njk1
LCAiZW5kIjogNTcwMywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAi
Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIs
ICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1enpBcmdzIn0sICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
ImJlZ2luIjogNTg4MCwgImVuZCI6IDU4OTIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6
QXJnc1Jlc3AifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAi
YW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA2MTc5LCAiZW5kIjogNjE5NSwgInZuYW1lIjogeyJs
YW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
b2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5G
dXp6SW50ZXJmYWNlLkZ1enpBcmdzU3luY1Jlc3AifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
bmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA2Mzc1LCAiZW5k
IjogNjM5MSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21p
dW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWdu
YXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1enpBcmdzU3luY1Jlc3AifSwgImVk
Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMi
LCAiYmVnaW4iOiA2NTQ1LCAiZW5kIjogNjU1OSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pv
bSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9t
aXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1
enpBc3NvY2lhdGVkIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNjk1MSwgImVuZCI6IDY5NTUsICJ2bmFtZSI6
IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9q
b20uRnV6ekR1bW15SW50ZXJmYWNlLlBpbmcifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy
YXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA3MzIyLCAiZW5kIjog
NzMzMSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1
cmUiOiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1enpCYXNpYyJ9LCAiZWRnZSI6ICIlL2t5
dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6
IDc0MTAsICJlbmQiOiA3NDIzLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1
cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9t
YWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpJbnRlcmZhY2UuRnV6ekJhc2ljUmVz
cCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDc1MzYsICJlbmQiOiA3NTUzLCAidm5hbWUiOiB7Imxhbmd1YWdl
IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpJbnRl
cmZhY2UuRnV6ekJhc2ljU3luY1Jlc3AifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
cyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA3NjM2LCAiZW5kIjogNzY1
MywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29v
Z2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUi
OiAiZnV6ei5tb2pvbS5GdXp6SW50ZXJmYWNlLkZ1enpCYXNpY1N5bmNSZXNwIn0sICJlZGdlIjog
IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJl
Z2luIjogNzc2MSwgImVuZCI6IDc3NjksICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAi
Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9z
cmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QXJn
cyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDc4NzksICJlbmQiOiA3ODkxLCAidm5hbWUiOiB7Imxhbmd1YWdl
IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpJbnRl
cmZhY2UuRnV6ekFyZ3NSZXNwIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwg
eyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogODAzNiwgImVuZCI6IDgwNTIsICJ2
bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1
enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QXJnc1N5bmNSZXNwIn0sICJlZGdlIjogIiUva3l0
aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjog
ODE2NiwgImVuZCI6IDgxODIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVz
IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21h
aW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6ekludGVyZmFjZS5GdXp6QXJnc1N5bmNS
ZXNwIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hv
cl9kZWZpbmVzIiwgImJlZ2luIjogODMyOSwgImVuZCI6IDgzNDMsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6eklu
dGVyZmFjZS5GdXp6QXNzb2NpYXRlZCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
In0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDExNTY2LCAiZW5kIjogMTE1
ODEsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJl
IjogImZ1enoubW9qb20uRnV6ekR1bW15U3RydWN0In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTU0MDksICJl
bmQiOiAxNTQxNCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6RHVtbXlTdHJ1Y3QuZHVtbXkifSwgImVkZ2UiOiAi
JS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVn
aW4iOiAxNjQ0MiwgImVuZCI6IDE2NDUxLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbiJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDIzNDE2LCAiZW5kIjogMjM0MjgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfYm9v
bCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDIzNTM0LCAiZW5kIjogMjM1NDcsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVu
aW9uLmZ1enpfYm9vbCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDIzNjg3LCAiZW5kIjogMjM3MDAsICJ2bmFt
ZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
ZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enou
bW9qb20uRnV6elVuaW9uLmZ1enpfYm9vbCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
dGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDIzNzg2LCAiZW5kIjog
MjM3OTgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVt
Lmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0
dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfaW50OCJ9LCAiZWRnZSI6ICIlL2t5dGhl
L2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDIz
OTA2LCAiZW5kIjogMjM5MTksICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVz
IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21h
aW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfaW50OCJ9LCAiZWRn
ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
ICJiZWdpbiI6IDI0MDU5LCAiZW5kIjogMjQwNzIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9q
b20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJv
bWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpf
aW50OCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJiZWdpbiI6IDI0MTYxLCAiZW5kIjogMjQxNzQsICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6
elVuaW9uLmZ1enpfdWludDgifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7
InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyNDI4NSwgImVuZCI6IDI0Mjk5LCAi
dm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz
b3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJm
dXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X3VpbnQ4In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjQ0NDIsICJl
bmQiOiAyNDQ1NiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el91aW50OCJ9LCAiZWRnZSI6ICIl
L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdp
biI6IDI0NTQ3LCAiZW5kIjogMjQ1NjAsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAi
Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9z
cmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfaW50MTYi
fSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2Rl
ZmluZXMiLCAiYmVnaW4iOiAyNDY3MSwgImVuZCI6IDI0Njg1LCAidm5hbWUiOiB7Imxhbmd1YWdl
IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlv
bi5mdXp6X2ludDE2In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjQ4MjgsICJlbmQiOiAyNDg0MiwgInZuYW1l
IjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
LmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5t
b2pvbS5GdXp6VW5pb24uZnV6el9pbnQxNiJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
dGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI0OTM0LCAiZW5kIjog
MjQ5NDgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVt
Lmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0
dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdWludDE2In0sICJlZGdlIjogIiUva3l0
aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjog
MjUwNjIsICJlbmQiOiAyNTA3NywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8v
bWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el91aW50MTYifSwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmlu
ZXMiLCAiYmVnaW4iOiAyNTIyMywgImVuZCI6IDI1MjM4LCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5m
dXp6X3VpbnQxNiJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6
ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI1MzMxLCAiZW5kIjogMjUzNDQsICJ2bmFtZSI6
IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9q
b20uRnV6elVuaW9uLmZ1enpfaW50MzIifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
cyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyNTQ1NSwgImVuZCI6IDI1
NDY5LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVy
ZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X2ludDMyIn0sICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjU2
MTIsICJlbmQiOiAyNTYyNiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFp
biIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9pbnQzMiJ9LCAiZWRn
ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
ICJiZWdpbiI6IDI1NzE4LCAiZW5kIjogMjU3MzIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9q
b20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJv
bWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpf
dWludDMyIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFu
Y2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjU4NDYsICJlbmQiOiAyNTg2MSwgInZuYW1lIjogeyJs
YW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
b2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5G
dXp6VW5pb24uZnV6el91aW50MzIifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9
LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyNjAwNywgImVuZCI6IDI2MDIy
LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29n
bGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6
ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X3VpbnQzMiJ9LCAiZWRnZSI6ICIlL2t5dGhlL2Vk
Z2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI2MTE1
LCAiZW5kIjogMjYxMjgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjog
ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4i
LCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfaW50NjQifSwgImVkZ2Ui
OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
YmVnaW4iOiAyNjIzOSwgImVuZCI6IDI2MjUzLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9t
IiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21p
dW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X2lu
dDY0In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hv
cl9kZWZpbmVzIiwgImJlZ2luIjogMjYzOTYsICJlbmQiOiAyNjQxMCwgInZuYW1lIjogeyJsYW5n
dWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rl
c2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6
VW5pb24uZnV6el9pbnQ2NCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI2NTAyLCAiZW5kIjogMjY1MTYsICJ2
bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1
enoubW9qb20uRnV6elVuaW9uLmZ1enpfdWludDY0In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjY2MzAsICJl
bmQiOiAyNjY0NSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el91aW50NjQifSwgImVkZ2UiOiAi
JS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVn
aW4iOiAyNjc5MSwgImVuZCI6IDI2ODA2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5mdXp6X3VpbnQ2
NCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDI2ODk5LCAiZW5kIjogMjY5MTIsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVu
aW9uLmZ1enpfZmxvYXQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5
cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyNzAyMSwgImVuZCI6IDI3MDM1LCAidm5h
bWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
Y2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6
Lm1vam9tLkZ1enpVbmlvbi5mdXp6X2Zsb2F0In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l
cmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjcxNzgsICJlbmQi
OiAyNzE5MiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21p
dW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWdu
YXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9mbG9hdCJ9LCAiZWRnZSI6ICIlL2t5
dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6
IDI3MjgyLCAiZW5kIjogMjcyOTYsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29y
cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMv
L21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfZG91YmxlIn0s
ICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZp
bmVzIiwgImJlZ2luIjogMjc0MDgsICJlbmQiOiAyNzQyMywgInZuYW1lIjogeyJsYW5ndWFnZSI6
ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNo
L2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24u
ZnV6el9kb3VibGUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUi
OiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyNzU2OSwgImVuZCI6IDI3NTg0LCAidm5hbWUi
OiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1v
am9tLkZ1enpVbmlvbi5mdXp6X2RvdWJsZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
dGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI3Njc2LCAiZW5kIjog
Mjc2OTAsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVt
Lmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0
dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfc3RyaW5nIn0sICJlZGdlIjogIiUva3l0
aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjog
Mjc4MDgsICJlbmQiOiAyNzgyMywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8v
bWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9zdHJpbmcifSwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmlu
ZXMiLCAiYmVnaW4iOiAyNzk3MiwgImVuZCI6IDI3OTg3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5m
dXp6X3N0cmluZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6
ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI4MDk1LCAiZW5kIjogMjgxMTMsICJ2bmFtZSI6
IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9q
b20uRnV6elVuaW9uLmZ1enpfYm9vbF9hcnJheSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
ZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI4MjQ0LCAiZW5k
IjogMjgyNjMsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfYm9vbF9hcnJheSJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDI4NDIzLCAiZW5kIjogMjg0NDIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfYm9v
bF9hcnJheSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJh
bmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI4NTU4LCAiZW5kIjogMjg1ODEsICJ2bmFtZSI6IHsi
bGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
Y29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20u
RnV6elVuaW9uLmZ1enpfcHJpbWl0aXZlX2FycmF5In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjg3MjQsICJl
bmQiOiAyODc0OCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9wcmltaXRpdmVfYXJyYXkifSwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmlu
ZXMiLCAiYmVnaW4iOiAyODkyMywgImVuZCI6IDI4OTQ3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5m
dXp6X3ByaW1pdGl2ZV9hcnJheSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI5MDY3LCAiZW5kIjogMjkwODcs
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
ImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfc3RydWN0X2FycmF5In0sICJlZGdlIjogIiUva3l0
aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjog
MjkyMzYsICJlbmQiOiAyOTI1NywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8v
bWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9zdHJ1Y3RfYXJy
YXkifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9y
X2RlZmluZXMiLCAiYmVnaW4iOiAyOTQyMywgImVuZCI6IDI5NDQ0LCAidm5hbWUiOiB7Imxhbmd1
YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVz
ZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpV
bmlvbi5mdXp6X3N0cnVjdF9hcnJheSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
In0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI5NTc0LCAiZW5kIjogMjk1
OTUsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJl
IjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfcHJpbWl0aXZlX21hcCJ9LCAiZWRnZSI6ICIl
L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdp
biI6IDI5NzUwLCAiZW5kIjogMjk3NzIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAi
Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9z
cmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfcHJpbWl0
aXZlX21hcCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJh
bmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI5OTQxLCAiZW5kIjogMjk5NjMsICJ2bmFtZSI6IHsi
bGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
Y29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20u
RnV6elVuaW9uLmZ1enpfcHJpbWl0aXZlX21hcCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
ZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDMwMTAxLCAiZW5k
IjogMzAxMTgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfYXJyYXlfbWFwIn0sICJlZGdlIjog
IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJl
Z2luIjogMzAyODMsICJlbmQiOiAzMDMwMSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIs
ICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVt
L3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el9hcnJh
eV9tYXAifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5j
aG9yX2RlZmluZXMiLCAiYmVnaW4iOiAzMDQ1OCwgImVuZCI6IDMwNDc2LCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1
enpVbmlvbi5mdXp6X2FycmF5X21hcCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
In0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDMwNjI5LCAiZW5kIjogMzA2
NDcsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJl
IjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfc3RydWN0X21hcCJ9LCAiZWRnZSI6ICIlL2t5
dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6
IDMwODA4LCAiZW5kIjogMzA4MjcsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29y
cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMv
L21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfc3RydWN0X21h
cCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDMwOTg3LCAiZW5kIjogMzEwMDYsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVu
aW9uLmZ1enpfc3RydWN0X21hcCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDMxMTQ2LCAiZW5kIjogMzExNjMs
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
ImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfdW5pb25fbWFwIn0sICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMzEz
MTMsICJlbmQiOiAzMTMzMSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFp
biIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6VW5pb24uZnV6el91bmlvbl9tYXAifSwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmlu
ZXMiLCAiYmVnaW4iOiAzMTQ4OCwgImVuZCI6IDMxNTA2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpVbmlvbi5m
dXp6X3VuaW9uX21hcCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDMxNjM0LCAiZW5kIjogMzE2NDksICJ2bmFt
ZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
ZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enou
bW9qb20uRnV6elVuaW9uLmZ1enpfY29tcGxleCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
ZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDMxODc2LCAiZW5k
IjogMzE4OTIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfY29tcGxleCJ9LCAiZWRnZSI6ICIl
L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdp
biI6IDMyMDQ0LCAiZW5kIjogMzIwNjAsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAi
Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9z
cmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elVuaW9uLmZ1enpfY29tcGxl
eCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDMzODM0LCAiZW5kIjogMzM4NDQsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elN0
cnVjdCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJiZWdpbiI6IDM4NTAwLCAiZW5kIjogMzg1MDksICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6
elN0cnVjdC5mdXp6X2Jvb2wifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7
InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAzODU3NSwgImVuZCI6IDM4NTg0LCAi
dm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz
b3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJm
dXp6Lm1vam9tLkZ1enpTdHJ1Y3QuZnV6el9pbnQ4In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMzg2NTIsICJl
bmQiOiAzODY2MiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6U3RydWN0LmZ1enpfdWludDgifSwgImVkZ2UiOiAi
JS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVn
aW4iOiAzODczMCwgImVuZCI6IDM4NzQwLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpTdHJ1Y3QuZnV6el9pbnQx
NiJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDM4ODEwLCAiZW5kIjogMzg4MjEsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elN0
cnVjdC5mdXp6X3VpbnQxNiJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDM4ODg5LCAiZW5kIjogMzg4OTksICJ2
bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1
enoubW9qb20uRnV6elN0cnVjdC5mdXp6X2ludDMyIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMzg5NjksICJl
bmQiOiAzODk4MCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6U3RydWN0LmZ1enpfdWludDMyIn0sICJlZGdlIjog
IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJl
Z2luIjogMzkwNDgsICJlbmQiOiAzOTA1OCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIs
ICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVt
L3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6U3RydWN0LmZ1enpfaW50
NjQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9y
X2RlZmluZXMiLCAiYmVnaW4iOiAzOTEyOCwgImVuZCI6IDM5MTM5LCAidm5hbWUiOiB7Imxhbmd1
YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVz
ZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpT
dHJ1Y3QuZnV6el91aW50NjQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7
InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAzOTIwNSwgImVuZCI6IDM5MjE1LCAi
dm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz
b3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJm
dXp6Lm1vam9tLkZ1enpTdHJ1Y3QuZnV6el9mbG9hdCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDM5MjgzLCAi
ZW5kIjogMzkyOTQsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAi
c2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elN0cnVjdC5mdXp6X2RvdWJsZSJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDM5MzY3LCAiZW5kIjogMzkzNzgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elN0cnVjdC5mdXp6X3N0
cmluZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJiZWdpbiI6IDM5NDYxLCAiZW5kIjogMzk0NzYsICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6
elN0cnVjdC5mdXp6X2Jvb2xfYXJyYXkifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
cyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAzOTU2NiwgImVuZCI6IDM5
NTg2LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVy
ZSI6ICJmdXp6Lm1vam9tLkZ1enpTdHJ1Y3QuZnV6el9wcmltaXRpdmVfYXJyYXkifSwgImVkZ2Ui
OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
YmVnaW4iOiAzOTY5MCwgImVuZCI6IDM5NzA4LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9t
IiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21p
dW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpTdHJ1Y3QuZnV6el9w
cmltaXRpdmVfbWFwIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMzk4MjYsICJlbmQiOiAzOTg0MCwgInZuYW1l
IjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
LmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5t
b2pvbS5GdXp6U3RydWN0LmZ1enpfYXJyYXlfbWFwIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMzk5NDMsICJl
bmQiOiAzOTk1NywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6U3RydWN0LmZ1enpfdW5pb25fbWFwIn0sICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
ImJlZ2luIjogNDAwNDksICJlbmQiOiA0MDA2NSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pv
bSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9t
aXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiZnV6ei5tb2pvbS5GdXp6U3RydWN0LmZ1enpf
dW5pb25fYXJyYXkifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUi
OiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA0MDE1OSwgImVuZCI6IDQwMTc2LCAidm5hbWUi
OiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJmdXp6Lm1v
am9tLkZ1enpTdHJ1Y3QuZnV6el9zdHJ1Y3RfYXJyYXkifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
L2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA0MDI4MCwg
ImVuZCI6IDQwMjk5LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJj
aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwg
InNpZ25hdHVyZSI6ICJmdXp6Lm1vam9tLkZ1enpTdHJ1Y3QuZnV6el9udWxsYWJsZV9hcnJheSJ9
LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVm
aW5lcyIsICJiZWdpbiI6IDQwNDgxLCAiZW5kIjogNDA0OTMsICJ2bmFtZSI6IHsibGFuZ3VhZ2Ui
OiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJj
aC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogImZ1enoubW9qb20uRnV6elN0cnVj
dC5mdXp6X2NvbXBsZXgifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9XX0=
*/