blob: 1a9cb7dc380c2ea78cc67780b452c476e9f91fcf [file] [log] [blame]
// mojo/public/interfaces/bindings/tests/sample_interfaces.mojom-blink.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_INTERFACES_BINDINGS_TESTS_SAMPLE_INTERFACES_MOJOM_BLINK_H_
#define MOJO_PUBLIC_INTERFACES_BINDINGS_TESTS_SAMPLE_INTERFACES_MOJOM_BLINK_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/interfaces/bindings/tests/sample_interfaces.mojom-features.h"
#include "mojo/public/interfaces/bindings/tests/sample_interfaces.mojom-shared.h"
#include "mojo/public/interfaces/bindings/tests/sample_interfaces.mojom-blink-forward.h"
#include "mojo/public/mojom/base/generic_pending_receiver.mojom-blink.h"
#include "mojo/public/cpp/bindings/lib/wtf_clone_equals_util.h"
#include "mojo/public/cpp/bindings/lib/wtf_hash_util.h"
#include "third_party/blink/renderer/platform/wtf/hash_functions.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#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 sample::blink {
class PingTestProxy;
template <typename ImplRefTraits>
class PingTestStub;
class PingTestRequestValidator;
class PingTestResponseValidator;
// @generated_from: sample.PingTest
class PingTest
: public PingTestInterfaceBase {
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_ = PingTestInterfaceBase;
using Proxy_ = PingTestProxy;
template <typename ImplRefTraits>
using Stub_ = PingTestStub<ImplRefTraits>;
using RequestValidator_ = PingTestRequestValidator;
using ResponseValidator_ = PingTestResponseValidator;
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 ~PingTest() = default;
using PingCallback = base::OnceCallback<void()>;
// @generated_from: sample.PingTest.Ping
virtual void Ping(PingCallback callback) = 0;
};
class ProviderProxy;
template <typename ImplRefTraits>
class ProviderStub;
class ProviderRequestValidator;
class ProviderResponseValidator;
// @generated_from: sample.Provider
class Provider
: public ProviderInterfaceBase {
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_ = ProviderInterfaceBase;
using Proxy_ = ProviderProxy;
template <typename ImplRefTraits>
using Stub_ = ProviderStub<ImplRefTraits>;
using RequestValidator_ = ProviderRequestValidator;
using ResponseValidator_ = ProviderResponseValidator;
enum MethodMinVersions : uint32_t {
kEchoStringMinVersion = 0,
kEchoStringsMinVersion = 0,
kEchoMessagePipeHandleMinVersion = 0,
kEchoEnumMinVersion = 0,
kEchoIntMinVersion = 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 EchoString_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct EchoStrings_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct EchoMessagePipeHandle_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct EchoEnum_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct EchoInt_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~Provider() = default;
using EchoStringCallback = base::OnceCallback<void(const WTF::String&)>;
// @generated_from: sample.Provider.EchoString
virtual void EchoString(const WTF::String& a, EchoStringCallback callback) = 0;
using EchoStringsCallback = base::OnceCallback<void(const WTF::String&, const WTF::String&)>;
// @generated_from: sample.Provider.EchoStrings
virtual void EchoStrings(const WTF::String& a, const WTF::String& b, EchoStringsCallback callback) = 0;
using EchoMessagePipeHandleCallback = base::OnceCallback<void(::mojo::ScopedMessagePipeHandle)>;
// @generated_from: sample.Provider.EchoMessagePipeHandle
virtual void EchoMessagePipeHandle(::mojo::ScopedMessagePipeHandle a, EchoMessagePipeHandleCallback callback) = 0;
using EchoEnumCallback = base::OnceCallback<void(Enum)>;
// @generated_from: sample.Provider.EchoEnum
virtual void EchoEnum(Enum a, EchoEnumCallback callback) = 0;
using EchoIntCallback = base::OnceCallback<void(int32_t)>;
// @generated_from: sample.Provider.EchoInt
virtual void EchoInt(int32_t a, EchoIntCallback callback) = 0;
};
class IntegerAccessorProxy;
template <typename ImplRefTraits>
class IntegerAccessorStub;
class IntegerAccessorRequestValidator;
class IntegerAccessorResponseValidator;
// @generated_from: sample.IntegerAccessor
class IntegerAccessor
: public IntegerAccessorInterfaceBase {
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_ = 3;
static constexpr bool PassesAssociatedKinds_ = false;
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = IntegerAccessorInterfaceBase;
using Proxy_ = IntegerAccessorProxy;
template <typename ImplRefTraits>
using Stub_ = IntegerAccessorStub<ImplRefTraits>;
using RequestValidator_ = IntegerAccessorRequestValidator;
using ResponseValidator_ = IntegerAccessorResponseValidator;
enum MethodMinVersions : uint32_t {
kGetIntegerMinVersion = 0,
kSetIntegerMinVersion = 1,
};
// 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 GetInteger_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct SetInteger_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~IntegerAccessor() = default;
using GetIntegerCallback = base::OnceCallback<void(int64_t, Enum)>;
// @generated_from: sample.IntegerAccessor.GetInteger
virtual void GetInteger(GetIntegerCallback callback) = 0;
// @generated_from: sample.IntegerAccessor.SetInteger
virtual void SetInteger(int64_t data, Enum type) = 0;
};
class InterfaceFactoryProxy;
template <typename ImplRefTraits>
class InterfaceFactoryStub;
class InterfaceFactoryRequestValidator;
// @generated_from: sample.InterfaceFactory
class InterfaceFactory
: public InterfaceFactoryInterfaceBase {
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_ = InterfaceFactoryInterfaceBase;
using Proxy_ = InterfaceFactoryProxy;
template <typename ImplRefTraits>
using Stub_ = InterfaceFactoryStub<ImplRefTraits>;
using RequestValidator_ = InterfaceFactoryRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kBindInterfaceMinVersion = 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 BindInterface_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~InterfaceFactory() = default;
// @generated_from: sample.InterfaceFactory.BindInterface
virtual void BindInterface(::mojo::GenericPendingReceiver receiver) = 0;
};
// @generated_from: sample.PingTest
class PingTestProxy
: public PingTest {
public:
using InterfaceType = PingTest;
explicit PingTestProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: sample.PingTest.Ping
void Ping(PingCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: sample.Provider
class ProviderProxy
: public Provider {
public:
using InterfaceType = Provider;
explicit ProviderProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: sample.Provider.EchoString
void EchoString(const WTF::String& a, EchoStringCallback callback) final;
// @generated_from: sample.Provider.EchoStrings
void EchoStrings(const WTF::String& a, const WTF::String& b, EchoStringsCallback callback) final;
// @generated_from: sample.Provider.EchoMessagePipeHandle
void EchoMessagePipeHandle(::mojo::ScopedMessagePipeHandle a, EchoMessagePipeHandleCallback callback) final;
// @generated_from: sample.Provider.EchoEnum
void EchoEnum(Enum a, EchoEnumCallback callback) final;
// @generated_from: sample.Provider.EchoInt
void EchoInt(int32_t a, EchoIntCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: sample.IntegerAccessor
class IntegerAccessorProxy
: public IntegerAccessor {
public:
using InterfaceType = IntegerAccessor;
explicit IntegerAccessorProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: sample.IntegerAccessor.GetInteger
void GetInteger(GetIntegerCallback callback) final;
// @generated_from: sample.IntegerAccessor.SetInteger
void SetInteger(int64_t data, Enum type) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: sample.InterfaceFactory
class InterfaceFactoryProxy
: public InterfaceFactory {
public:
using InterfaceType = InterfaceFactory;
explicit InterfaceFactoryProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: sample.InterfaceFactory.BindInterface
void BindInterface(::mojo::GenericPendingReceiver receiver) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
class PingTestStubDispatch {
public:
static bool Accept(PingTest* impl, mojo::Message* message);
static bool AcceptWithResponder(
PingTest* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<PingTest>>
class PingTestStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
PingTestStub() = default;
~PingTestStub() 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 PingTestStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return PingTestStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class ProviderStubDispatch {
public:
static bool Accept(Provider* impl, mojo::Message* message);
static bool AcceptWithResponder(
Provider* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<Provider>>
class ProviderStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
ProviderStub() = default;
~ProviderStub() 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 ProviderStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return ProviderStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class IntegerAccessorStubDispatch {
public:
static bool Accept(IntegerAccessor* impl, mojo::Message* message);
static bool AcceptWithResponder(
IntegerAccessor* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<IntegerAccessor>>
class IntegerAccessorStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
IntegerAccessorStub() = default;
~IntegerAccessorStub() 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 IntegerAccessorStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return IntegerAccessorStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class InterfaceFactoryStubDispatch {
public:
static bool Accept(InterfaceFactory* impl, mojo::Message* message);
static bool AcceptWithResponder(
InterfaceFactory* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<InterfaceFactory>>
class InterfaceFactoryStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
InterfaceFactoryStub() = default;
~InterfaceFactoryStub() 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 InterfaceFactoryStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return InterfaceFactoryStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class PingTestRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class ProviderRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class IntegerAccessorRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class InterfaceFactoryRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class PingTestResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class ProviderResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class IntegerAccessorResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
} // sample::blink
namespace mojo {
} // namespace mojo
#endif // MOJO_PUBLIC_INTERFACES_BINDINGS_TESTS_SAMPLE_INTERFACES_MOJOM_BLINK_H_
/* Metadata comment
eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDIwNTYsICJlbmQiOiAyMDY0LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJzYW1wbGUuUGluZ1Rlc3QifSwgImVkZ2UiOiAiJS9r
eXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4i
OiAzMjI0LCAiZW5kIjogMzIyOCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8v
bWFpbiIsICJzaWduYXR1cmUiOiAic2FtcGxlLlBpbmdUZXN0LlBpbmcifSwgImVkZ2UiOiAiJS9r
eXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4i
OiAzNDQ3LCAiZW5kIjogMzQ1NSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8v
bWFpbiIsICJzaWduYXR1cmUiOiAic2FtcGxlLlByb3ZpZGVyIn0sICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNTEw
MywgImVuZCI6IDUxMTMsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjog
ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4i
LCAic2lnbmF0dXJlIjogInNhbXBsZS5Qcm92aWRlci5FY2hvU3RyaW5nIn0sICJlZGdlIjogIiUv
a3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2lu
IjogNTMzNCwgImVuZCI6IDUzNDUsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29y
cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMv
L21haW4iLCAic2lnbmF0dXJlIjogInNhbXBsZS5Qcm92aWRlci5FY2hvU3RyaW5ncyJ9LCAiZWRn
ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
ICJiZWdpbiI6IDU2MDIsICJlbmQiOiA1NjIzLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9t
IiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21p
dW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJzYW1wbGUuUHJvdmlkZXIuRWNob01lc3NhZ2VQ
aXBlSGFuZGxlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNTgyOCwgImVuZCI6IDU4MzYsICJ2bmFtZSI6IHsi
bGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
Y29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInNhbXBsZS5Qcm92
aWRlci5FY2hvRW51bSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDYwMDIsICJlbmQiOiA2MDA5LCAidm5hbWUi
OiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJzYW1wbGUu
UHJvdmlkZXIuRWNob0ludCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDYyNzcsICJlbmQiOiA2MjkyLCAidm5h
bWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
Y2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJzYW1w
bGUuSW50ZWdlckFjY2Vzc29yIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwg
eyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNzY1MywgImVuZCI6IDc2NjMsICJ2
bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInNh
bXBsZS5JbnRlZ2VyQWNjZXNzb3IuR2V0SW50ZWdlciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDc3NzEsICJl
bmQiOiA3NzgxLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJv
bWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNp
Z25hdHVyZSI6ICJzYW1wbGUuSW50ZWdlckFjY2Vzc29yLlNldEludGVnZXIifSwgImVkZ2UiOiAi
JS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVn
aW4iOiA4MDAxLCAiZW5kIjogODAxNywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3Ny
Yy8vbWFpbiIsICJzaWduYXR1cmUiOiAic2FtcGxlLkludGVyZmFjZUZhY3RvcnkifSwgImVkZ2Ui
OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
YmVnaW4iOiA5MjA2LCAiZW5kIjogOTIxOSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIs
ICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVt
L3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAic2FtcGxlLkludGVyZmFjZUZhY3RvcnkuQmluZElu
dGVyZmFjZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJh
bmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDk1MjAsICJlbmQiOiA5NTI0LCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJzYW1wbGUuUGluZ1Rl
c3QuUGluZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJh
bmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDk4NzUsICJlbmQiOiA5ODg1LCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJzYW1wbGUuUHJvdmlk
ZXIuRWNob1N0cmluZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEwMDAyLCAiZW5kIjogMTAwMTMsICJ2bmFt
ZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
ZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInNhbXBs
ZS5Qcm92aWRlci5FY2hvU3RyaW5ncyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
In0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEwMTYzLCAiZW5kIjogMTAx
ODQsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJl
IjogInNhbXBsZS5Qcm92aWRlci5FY2hvTWVzc2FnZVBpcGVIYW5kbGUifSwgImVkZ2UiOiAiJS9r
eXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4i
OiAxMDMyMiwgImVuZCI6IDEwMzMwLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNv
cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3Jj
Ly9tYWluIiwgInNpZ25hdHVyZSI6ICJzYW1wbGUuUHJvdmlkZXIuRWNob0VudW0ifSwgImVkZ2Ui
OiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
YmVnaW4iOiAxMDQyNywgImVuZCI6IDEwNDM0LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9t
IiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21p
dW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJzYW1wbGUuUHJvdmlkZXIuRWNob0ludCJ9LCAi
ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5l
cyIsICJiZWdpbiI6IDEwODQxLCAiZW5kIjogMTA4NTEsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAi
bW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9j
aHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInNhbXBsZS5JbnRlZ2VyQWNjZXNzb3Iu
R2V0SW50ZWdlciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6
ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEwOTUyLCAiZW5kIjogMTA5NjIsICJ2bmFtZSI6
IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInNhbXBsZS5J
bnRlZ2VyQWNjZXNzb3IuU2V0SW50ZWdlciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
dGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDExMzY2LCAiZW5kIjog
MTEzNzksICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVt
Lmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0
dXJlIjogInNhbXBsZS5JbnRlcmZhY2VGYWN0b3J5LkJpbmRJbnRlcmZhY2UifSwgImVkZ2UiOiAi
JS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9XX0=
*/