blob: f8aef3b5e3a177c16d83283bb496b1f2b62c6511 [file] [log] [blame]
// ipc/ipc_test.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 IPC_IPC_TEST_MOJOM_BLINK_H_
#define IPC_IPC_TEST_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 "ipc/ipc_test.mojom-features.h"
#include "ipc/ipc_test.mojom-shared.h"
#include "ipc/ipc_test.mojom-blink-forward.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 IPC::mojom::blink {
class SimpleTestDriverProxy;
template <typename ImplRefTraits>
class SimpleTestDriverStub;
class SimpleTestDriverRequestValidator;
class SimpleTestDriverResponseValidator;
// @generated_from: IPC.mojom.SimpleTestDriver
class SimpleTestDriver
: public SimpleTestDriverInterfaceBase {
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 inline constexpr uint32_t kSyncMethodOrdinals[] = {
1,
2
};
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = SimpleTestDriverInterfaceBase;
using Proxy_ = SimpleTestDriverProxy;
template <typename ImplRefTraits>
using Stub_ = SimpleTestDriverStub<ImplRefTraits>;
using RequestValidator_ = SimpleTestDriverRequestValidator;
using ResponseValidator_ = SimpleTestDriverResponseValidator;
enum MethodMinVersions : uint32_t {
kExpectValueMinVersion = 0,
kGetExpectedValueMinVersion = 0,
kRequestValueMinVersion = 0,
kRequestQuitMinVersion = 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 ExpectValue_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct GetExpectedValue_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct RequestValue_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct RequestQuit_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~SimpleTestDriver() = default;
// @generated_from: IPC.mojom.SimpleTestDriver.ExpectValue
virtual void ExpectValue(int32_t value) = 0;
// Sync method. This signature is used by the client side; the service side
// should implement the signature with callback below.
// @generated_from: IPC.mojom.SimpleTestDriver.GetExpectedValue
virtual bool GetExpectedValue(int32_t* out_value);
using GetExpectedValueCallback = base::OnceCallback<void(int32_t)>;
// @generated_from: IPC.mojom.SimpleTestDriver.GetExpectedValue
virtual void GetExpectedValue(GetExpectedValueCallback callback) = 0;
// Sync method. This signature is used by the client side; the service side
// should implement the signature with callback below.
// @generated_from: IPC.mojom.SimpleTestDriver.RequestValue
virtual bool RequestValue(int32_t* out_value);
using RequestValueCallback = base::OnceCallback<void(int32_t)>;
// @generated_from: IPC.mojom.SimpleTestDriver.RequestValue
virtual void RequestValue(RequestValueCallback callback) = 0;
using RequestQuitCallback = base::OnceCallback<void()>;
// @generated_from: IPC.mojom.SimpleTestDriver.RequestQuit
virtual void RequestQuit(RequestQuitCallback callback) = 0;
};
class TerminatorProxy;
template <typename ImplRefTraits>
class TerminatorStub;
class TerminatorRequestValidator;
class TerminatorResponseValidator;
// @generated_from: IPC.mojom.Terminator
class Terminator
: public TerminatorInterfaceBase {
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 inline constexpr uint32_t kSyncMethodOrdinals[] = {
0
};
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = TerminatorInterfaceBase;
using Proxy_ = TerminatorProxy;
template <typename ImplRefTraits>
using Stub_ = TerminatorStub<ImplRefTraits>;
using RequestValidator_ = TerminatorRequestValidator;
using ResponseValidator_ = TerminatorResponseValidator;
enum MethodMinVersions : uint32_t {
kTerminateMinVersion = 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 Terminate_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~Terminator() = default;
// Sync method. This signature is used by the client side; the service side
// should implement the signature with callback below.
// @generated_from: IPC.mojom.Terminator.Terminate
virtual bool Terminate();
using TerminateCallback = base::OnceCallback<void()>;
// @generated_from: IPC.mojom.Terminator.Terminate
virtual void Terminate(TerminateCallback callback) = 0;
};
class SimpleTestClientProxy;
template <typename ImplRefTraits>
class SimpleTestClientStub;
class SimpleTestClientRequestValidator;
class SimpleTestClientResponseValidator;
// @generated_from: IPC.mojom.SimpleTestClient
class SimpleTestClient
: public SimpleTestClientInterfaceBase {
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[] = {
0,
1
};
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = SimpleTestClientInterfaceBase;
using Proxy_ = SimpleTestClientProxy;
template <typename ImplRefTraits>
using Stub_ = SimpleTestClientStub<ImplRefTraits>;
using RequestValidator_ = SimpleTestClientRequestValidator;
using ResponseValidator_ = SimpleTestClientResponseValidator;
enum MethodMinVersions : uint32_t {
kRequestValueMinVersion = 0,
kBindSyncMinVersion = 0,
kGetReceiverWithQueuedSyncMessageMinVersion = 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 RequestValue_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct BindSync_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct GetReceiverWithQueuedSyncMessage_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~SimpleTestClient() = default;
// Sync method. This signature is used by the client side; the service side
// should implement the signature with callback below.
// @generated_from: IPC.mojom.SimpleTestClient.RequestValue
virtual bool RequestValue(int32_t* out_value);
using RequestValueCallback = base::OnceCallback<void(int32_t)>;
// @generated_from: IPC.mojom.SimpleTestClient.RequestValue
virtual void RequestValue(RequestValueCallback callback) = 0;
// Sync method. This signature is used by the client side; the service side
// should implement the signature with callback below.
// @generated_from: IPC.mojom.SimpleTestClient.BindSync
virtual bool BindSync(::mojo::PendingAssociatedReceiver<SimpleTestClient> receiver);
using BindSyncCallback = base::OnceCallback<void()>;
// @generated_from: IPC.mojom.SimpleTestClient.BindSync
virtual void BindSync(::mojo::PendingAssociatedReceiver<SimpleTestClient> receiver, BindSyncCallback callback) = 0;
using GetReceiverWithQueuedSyncMessageCallback = base::OnceCallback<void(::mojo::PendingAssociatedReceiver<SimpleTestClient>)>;
// @generated_from: IPC.mojom.SimpleTestClient.GetReceiverWithQueuedSyncMessage
virtual void GetReceiverWithQueuedSyncMessage(GetReceiverWithQueuedSyncMessageCallback callback) = 0;
};
class PingReceiverProxy;
template <typename ImplRefTraits>
class PingReceiverStub;
class PingReceiverRequestValidator;
class PingReceiverResponseValidator;
// @generated_from: IPC.mojom.PingReceiver
class PingReceiver
: public PingReceiverInterfaceBase {
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_ = PingReceiverInterfaceBase;
using Proxy_ = PingReceiverProxy;
template <typename ImplRefTraits>
using Stub_ = PingReceiverStub<ImplRefTraits>;
using RequestValidator_ = PingReceiverRequestValidator;
using ResponseValidator_ = PingReceiverResponseValidator;
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 ~PingReceiver() = default;
using PingCallback = base::OnceCallback<void()>;
// @generated_from: IPC.mojom.PingReceiver.Ping
virtual void Ping(PingCallback callback) = 0;
};
class TestStructPasserProxy;
template <typename ImplRefTraits>
class TestStructPasserStub;
class TestStructPasserRequestValidator;
// @generated_from: IPC.mojom.TestStructPasser
class TestStructPasser
: public TestStructPasserInterfaceBase {
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_ = TestStructPasserInterfaceBase;
using Proxy_ = TestStructPasserProxy;
template <typename ImplRefTraits>
using Stub_ = TestStructPasserStub<ImplRefTraits>;
using RequestValidator_ = TestStructPasserRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kPassMinVersion = 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 Pass_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~TestStructPasser() = default;
// @generated_from: IPC.mojom.TestStructPasser.Pass
virtual void Pass(TestStructPtr s) = 0;
};
class IndirectTestDriverProxy;
template <typename ImplRefTraits>
class IndirectTestDriverStub;
class IndirectTestDriverRequestValidator;
// @generated_from: IPC.mojom.IndirectTestDriver
class IndirectTestDriver
: public IndirectTestDriverInterfaceBase {
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 constexpr bool HasUninterruptableMethods_ = false;
using Base_ = IndirectTestDriverInterfaceBase;
using Proxy_ = IndirectTestDriverProxy;
template <typename ImplRefTraits>
using Stub_ = IndirectTestDriverStub<ImplRefTraits>;
using RequestValidator_ = IndirectTestDriverRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kGetPingReceiverMinVersion = 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 GetPingReceiver_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~IndirectTestDriver() = default;
// @generated_from: IPC.mojom.IndirectTestDriver.GetPingReceiver
virtual void GetPingReceiver(::mojo::PendingAssociatedReceiver<PingReceiver> receiver) = 0;
};
class ReflectorProxy;
template <typename ImplRefTraits>
class ReflectorStub;
class ReflectorRequestValidator;
class ReflectorResponseValidator;
// @generated_from: IPC.mojom.Reflector
class Reflector
: public ReflectorInterfaceBase {
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 inline constexpr uint32_t kSyncMethodOrdinals[] = {
1
};
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = ReflectorInterfaceBase;
using Proxy_ = ReflectorProxy;
template <typename ImplRefTraits>
using Stub_ = ReflectorStub<ImplRefTraits>;
using RequestValidator_ = ReflectorRequestValidator;
using ResponseValidator_ = ReflectorResponseValidator;
enum MethodMinVersions : uint32_t {
kPingMinVersion = 0,
kSyncPingMinVersion = 0,
kQuitMinVersion = 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();
};
struct SyncPing_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct Quit_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~Reflector() = default;
using PingCallback = base::OnceCallback<void(const WTF::String&)>;
// @generated_from: IPC.mojom.Reflector.Ping
virtual void Ping(const WTF::String& value, PingCallback callback) = 0;
// Sync method. This signature is used by the client side; the service side
// should implement the signature with callback below.
// @generated_from: IPC.mojom.Reflector.SyncPing
virtual bool SyncPing(const WTF::String& value, WTF::String* out_response);
using SyncPingCallback = base::OnceCallback<void(const WTF::String&)>;
// @generated_from: IPC.mojom.Reflector.SyncPing
virtual void SyncPing(const WTF::String& value, SyncPingCallback callback) = 0;
// @generated_from: IPC.mojom.Reflector.Quit
virtual void Quit() = 0;
};
class AssociatedInterfaceVendorProxy;
template <typename ImplRefTraits>
class AssociatedInterfaceVendorStub;
class AssociatedInterfaceVendorRequestValidator;
// @generated_from: IPC.mojom.AssociatedInterfaceVendor
class AssociatedInterfaceVendor
: public AssociatedInterfaceVendorInterfaceBase {
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 constexpr bool HasUninterruptableMethods_ = false;
using Base_ = AssociatedInterfaceVendorInterfaceBase;
using Proxy_ = AssociatedInterfaceVendorProxy;
template <typename ImplRefTraits>
using Stub_ = AssociatedInterfaceVendorStub<ImplRefTraits>;
using RequestValidator_ = AssociatedInterfaceVendorRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kGetTestInterfaceMinVersion = 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 GetTestInterface_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~AssociatedInterfaceVendor() = default;
// @generated_from: IPC.mojom.AssociatedInterfaceVendor.GetTestInterface
virtual void GetTestInterface(::mojo::PendingAssociatedReceiver<SimpleTestDriver> receiver) = 0;
};
class InterfacePassingTestDriverProxy;
template <typename ImplRefTraits>
class InterfacePassingTestDriverStub;
class InterfacePassingTestDriverRequestValidator;
class InterfacePassingTestDriverResponseValidator;
// @generated_from: IPC.mojom.InterfacePassingTestDriver
class InterfacePassingTestDriver
: public InterfacePassingTestDriverInterfaceBase {
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 constexpr bool HasUninterruptableMethods_ = false;
using Base_ = InterfacePassingTestDriverInterfaceBase;
using Proxy_ = InterfacePassingTestDriverProxy;
template <typename ImplRefTraits>
using Stub_ = InterfacePassingTestDriverStub<ImplRefTraits>;
using RequestValidator_ = InterfacePassingTestDriverRequestValidator;
using ResponseValidator_ = InterfacePassingTestDriverResponseValidator;
enum MethodMinVersions : uint32_t {
kInitMinVersion = 0,
kGetPingReceiverMinVersion = 0,
kGetAssociatedPingReceiverMinVersion = 0,
kQuitMinVersion = 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 Init_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct GetPingReceiver_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct GetAssociatedPingReceiver_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct Quit_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~InterfacePassingTestDriver() = default;
using InitCallback = base::OnceCallback<void()>;
// @generated_from: IPC.mojom.InterfacePassingTestDriver.Init
virtual void Init(InitCallback callback) = 0;
using GetPingReceiverCallback = base::OnceCallback<void()>;
// @generated_from: IPC.mojom.InterfacePassingTestDriver.GetPingReceiver
virtual void GetPingReceiver(WTF::Vector<::mojo::PendingReceiver<PingReceiver>> receiver, GetPingReceiverCallback callback) = 0;
using GetAssociatedPingReceiverCallback = base::OnceCallback<void()>;
// @generated_from: IPC.mojom.InterfacePassingTestDriver.GetAssociatedPingReceiver
virtual void GetAssociatedPingReceiver(WTF::Vector<::mojo::PendingAssociatedReceiver<PingReceiver>> receiver, GetAssociatedPingReceiverCallback callback) = 0;
// @generated_from: IPC.mojom.InterfacePassingTestDriver.Quit
virtual void Quit() = 0;
};
class InterfaceWithUrgentMethodProxy;
template <typename ImplRefTraits>
class InterfaceWithUrgentMethodStub;
class InterfaceWithUrgentMethodRequestValidator;
class InterfaceWithUrgentMethodResponseValidator;
// @generated_from: IPC.mojom.InterfaceWithUrgentMethod
class InterfaceWithUrgentMethod
: public InterfaceWithUrgentMethodInterfaceBase {
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_ = InterfaceWithUrgentMethodInterfaceBase;
using Proxy_ = InterfaceWithUrgentMethodProxy;
template <typename ImplRefTraits>
using Stub_ = InterfaceWithUrgentMethodStub<ImplRefTraits>;
using RequestValidator_ = InterfaceWithUrgentMethodRequestValidator;
using ResponseValidator_ = InterfaceWithUrgentMethodResponseValidator;
enum MethodMinVersions : uint32_t {
kMaybeUrgentMessageMinVersion = 0,
kNonUrgentMessageMinVersion = 0,
kRequestQuitMinVersion = 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 MaybeUrgentMessage_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct NonUrgentMessage_Sym {
NOINLINE static uint32_t IPCStableHash();
};
struct RequestQuit_Sym {
NOINLINE static uint32_t IPCStableHash();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~InterfaceWithUrgentMethod() = default;
// @generated_from: IPC.mojom.InterfaceWithUrgentMethod.MaybeUrgentMessage
virtual void MaybeUrgentMessage(bool is_urgent) = 0;
// @generated_from: IPC.mojom.InterfaceWithUrgentMethod.NonUrgentMessage
virtual void NonUrgentMessage() = 0;
using RequestQuitCallback = base::OnceCallback<void()>;
// @generated_from: IPC.mojom.InterfaceWithUrgentMethod.RequestQuit
virtual void RequestQuit(RequestQuitCallback callback) = 0;
};
// @generated_from: IPC.mojom.SimpleTestDriver
class SimpleTestDriverProxy
: public SimpleTestDriver {
public:
using InterfaceType = SimpleTestDriver;
explicit SimpleTestDriverProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: IPC.mojom.SimpleTestDriver.ExpectValue
void ExpectValue(int32_t value) final;
// @generated_from: IPC.mojom.SimpleTestDriver.GetExpectedValue
bool GetExpectedValue(int32_t* out_value) final;
// @generated_from: IPC.mojom.SimpleTestDriver.GetExpectedValue
void GetExpectedValue(GetExpectedValueCallback callback) final;
// @generated_from: IPC.mojom.SimpleTestDriver.RequestValue
bool RequestValue(int32_t* out_value) final;
// @generated_from: IPC.mojom.SimpleTestDriver.RequestValue
void RequestValue(RequestValueCallback callback) final;
// @generated_from: IPC.mojom.SimpleTestDriver.RequestQuit
void RequestQuit(RequestQuitCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: IPC.mojom.Terminator
class TerminatorProxy
: public Terminator {
public:
using InterfaceType = Terminator;
explicit TerminatorProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: IPC.mojom.Terminator.Terminate
bool Terminate() final;
// @generated_from: IPC.mojom.Terminator.Terminate
void Terminate(TerminateCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: IPC.mojom.SimpleTestClient
class SimpleTestClientProxy
: public SimpleTestClient {
public:
using InterfaceType = SimpleTestClient;
explicit SimpleTestClientProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: IPC.mojom.SimpleTestClient.RequestValue
bool RequestValue(int32_t* out_value) final;
// @generated_from: IPC.mojom.SimpleTestClient.RequestValue
void RequestValue(RequestValueCallback callback) final;
// @generated_from: IPC.mojom.SimpleTestClient.BindSync
bool BindSync(::mojo::PendingAssociatedReceiver<SimpleTestClient> receiver) final;
// @generated_from: IPC.mojom.SimpleTestClient.BindSync
void BindSync(::mojo::PendingAssociatedReceiver<SimpleTestClient> receiver, BindSyncCallback callback) final;
// @generated_from: IPC.mojom.SimpleTestClient.GetReceiverWithQueuedSyncMessage
void GetReceiverWithQueuedSyncMessage(GetReceiverWithQueuedSyncMessageCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: IPC.mojom.PingReceiver
class PingReceiverProxy
: public PingReceiver {
public:
using InterfaceType = PingReceiver;
explicit PingReceiverProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: IPC.mojom.PingReceiver.Ping
void Ping(PingCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: IPC.mojom.TestStructPasser
class TestStructPasserProxy
: public TestStructPasser {
public:
using InterfaceType = TestStructPasser;
explicit TestStructPasserProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: IPC.mojom.TestStructPasser.Pass
void Pass(TestStructPtr s) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: IPC.mojom.IndirectTestDriver
class IndirectTestDriverProxy
: public IndirectTestDriver {
public:
using InterfaceType = IndirectTestDriver;
explicit IndirectTestDriverProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: IPC.mojom.IndirectTestDriver.GetPingReceiver
void GetPingReceiver(::mojo::PendingAssociatedReceiver<PingReceiver> receiver) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: IPC.mojom.Reflector
class ReflectorProxy
: public Reflector {
public:
using InterfaceType = Reflector;
explicit ReflectorProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: IPC.mojom.Reflector.Ping
void Ping(const WTF::String& value, PingCallback callback) final;
// @generated_from: IPC.mojom.Reflector.SyncPing
bool SyncPing(const WTF::String& value, WTF::String* out_response) final;
// @generated_from: IPC.mojom.Reflector.SyncPing
void SyncPing(const WTF::String& value, SyncPingCallback callback) final;
// @generated_from: IPC.mojom.Reflector.Quit
void Quit() final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: IPC.mojom.AssociatedInterfaceVendor
class AssociatedInterfaceVendorProxy
: public AssociatedInterfaceVendor {
public:
using InterfaceType = AssociatedInterfaceVendor;
explicit AssociatedInterfaceVendorProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: IPC.mojom.AssociatedInterfaceVendor.GetTestInterface
void GetTestInterface(::mojo::PendingAssociatedReceiver<SimpleTestDriver> receiver) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: IPC.mojom.InterfacePassingTestDriver
class InterfacePassingTestDriverProxy
: public InterfacePassingTestDriver {
public:
using InterfaceType = InterfacePassingTestDriver;
explicit InterfacePassingTestDriverProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: IPC.mojom.InterfacePassingTestDriver.Init
void Init(InitCallback callback) final;
// @generated_from: IPC.mojom.InterfacePassingTestDriver.GetPingReceiver
void GetPingReceiver(WTF::Vector<::mojo::PendingReceiver<PingReceiver>> receiver, GetPingReceiverCallback callback) final;
// @generated_from: IPC.mojom.InterfacePassingTestDriver.GetAssociatedPingReceiver
void GetAssociatedPingReceiver(WTF::Vector<::mojo::PendingAssociatedReceiver<PingReceiver>> receiver, GetAssociatedPingReceiverCallback callback) final;
// @generated_from: IPC.mojom.InterfacePassingTestDriver.Quit
void Quit() final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: IPC.mojom.InterfaceWithUrgentMethod
class InterfaceWithUrgentMethodProxy
: public InterfaceWithUrgentMethod {
public:
using InterfaceType = InterfaceWithUrgentMethod;
explicit InterfaceWithUrgentMethodProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: IPC.mojom.InterfaceWithUrgentMethod.MaybeUrgentMessage
void MaybeUrgentMessage(bool is_urgent) final;
// @generated_from: IPC.mojom.InterfaceWithUrgentMethod.NonUrgentMessage
void NonUrgentMessage() final;
// @generated_from: IPC.mojom.InterfaceWithUrgentMethod.RequestQuit
void RequestQuit(RequestQuitCallback callback) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
class SimpleTestDriverStubDispatch {
public:
static bool Accept(SimpleTestDriver* impl, mojo::Message* message);
static bool AcceptWithResponder(
SimpleTestDriver* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<SimpleTestDriver>>
class SimpleTestDriverStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
SimpleTestDriverStub() = default;
~SimpleTestDriverStub() 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 SimpleTestDriverStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return SimpleTestDriverStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class TerminatorStubDispatch {
public:
static bool Accept(Terminator* impl, mojo::Message* message);
static bool AcceptWithResponder(
Terminator* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<Terminator>>
class TerminatorStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
TerminatorStub() = default;
~TerminatorStub() 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 TerminatorStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return TerminatorStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class SimpleTestClientStubDispatch {
public:
static bool Accept(SimpleTestClient* impl, mojo::Message* message);
static bool AcceptWithResponder(
SimpleTestClient* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<SimpleTestClient>>
class SimpleTestClientStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
SimpleTestClientStub() = default;
~SimpleTestClientStub() 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 SimpleTestClientStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return SimpleTestClientStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class PingReceiverStubDispatch {
public:
static bool Accept(PingReceiver* impl, mojo::Message* message);
static bool AcceptWithResponder(
PingReceiver* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<PingReceiver>>
class PingReceiverStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
PingReceiverStub() = default;
~PingReceiverStub() 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 PingReceiverStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return PingReceiverStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class TestStructPasserStubDispatch {
public:
static bool Accept(TestStructPasser* impl, mojo::Message* message);
static bool AcceptWithResponder(
TestStructPasser* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<TestStructPasser>>
class TestStructPasserStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
TestStructPasserStub() = default;
~TestStructPasserStub() 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 TestStructPasserStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return TestStructPasserStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class IndirectTestDriverStubDispatch {
public:
static bool Accept(IndirectTestDriver* impl, mojo::Message* message);
static bool AcceptWithResponder(
IndirectTestDriver* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<IndirectTestDriver>>
class IndirectTestDriverStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
IndirectTestDriverStub() = default;
~IndirectTestDriverStub() 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 IndirectTestDriverStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return IndirectTestDriverStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class ReflectorStubDispatch {
public:
static bool Accept(Reflector* impl, mojo::Message* message);
static bool AcceptWithResponder(
Reflector* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<Reflector>>
class ReflectorStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
ReflectorStub() = default;
~ReflectorStub() 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 ReflectorStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return ReflectorStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class AssociatedInterfaceVendorStubDispatch {
public:
static bool Accept(AssociatedInterfaceVendor* impl, mojo::Message* message);
static bool AcceptWithResponder(
AssociatedInterfaceVendor* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<AssociatedInterfaceVendor>>
class AssociatedInterfaceVendorStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
AssociatedInterfaceVendorStub() = default;
~AssociatedInterfaceVendorStub() 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 AssociatedInterfaceVendorStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return AssociatedInterfaceVendorStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class InterfacePassingTestDriverStubDispatch {
public:
static bool Accept(InterfacePassingTestDriver* impl, mojo::Message* message);
static bool AcceptWithResponder(
InterfacePassingTestDriver* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<InterfacePassingTestDriver>>
class InterfacePassingTestDriverStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
InterfacePassingTestDriverStub() = default;
~InterfacePassingTestDriverStub() 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 InterfacePassingTestDriverStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return InterfacePassingTestDriverStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class InterfaceWithUrgentMethodStubDispatch {
public:
static bool Accept(InterfaceWithUrgentMethod* impl, mojo::Message* message);
static bool AcceptWithResponder(
InterfaceWithUrgentMethod* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<InterfaceWithUrgentMethod>>
class InterfaceWithUrgentMethodStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
InterfaceWithUrgentMethodStub() = default;
~InterfaceWithUrgentMethodStub() 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 InterfaceWithUrgentMethodStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return InterfaceWithUrgentMethodStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class SimpleTestDriverRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class TerminatorRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class SimpleTestClientRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class PingReceiverRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class TestStructPasserRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class IndirectTestDriverRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class ReflectorRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class AssociatedInterfaceVendorRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class InterfacePassingTestDriverRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class InterfaceWithUrgentMethodRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class SimpleTestDriverResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class TerminatorResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class SimpleTestClientResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class PingReceiverResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class ReflectorResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class InterfacePassingTestDriverResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class InterfaceWithUrgentMethodResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
// @generated_from: IPC.mojom.TestStruct
class TestStruct {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<TestStruct, T>::value>;
using DataView = TestStructDataView;
using Data_ = internal::TestStruct_Data;
template <typename... Args>
static TestStructPtr New(Args&&... args) {
return TestStructPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static TestStructPtr From(const U& u) {
return mojo::TypeConverter<TestStructPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, TestStruct>::Convert(*this);
}
TestStruct();
~TestStruct();
// 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 = TestStructPtr>
TestStructPtr 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, TestStruct::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, TestStruct::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, TestStruct::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
size_t Hash(size_t seed) const;
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
TestStruct::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
TestStruct::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::TestStruct_UnserializedMessageContext<
UserType, TestStruct::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<TestStruct::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return TestStruct::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::TestStruct_UnserializedMessageContext<
UserType, TestStruct::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<TestStruct::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// 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, TestStruct::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, TestStruct::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, TestStruct::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, TestStruct::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
template <typename StructPtrType>
TestStructPtr TestStruct::Clone() const {
return New(
);
}
template <typename T, TestStruct::EnableIfSame<T>*>
bool TestStruct::Equals(const T& other_struct) const {
return true;
}
template <typename T, TestStruct::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
return false;
}
} // IPC::mojom::blink
namespace mojo {
template <>
struct StructTraits<::IPC::mojom::blink::TestStruct::DataView,
::IPC::mojom::blink::TestStructPtr> {
static bool IsNull(const ::IPC::mojom::blink::TestStructPtr& input) { return !input; }
static void SetToNull(::IPC::mojom::blink::TestStructPtr* output) { output->reset(); }
static bool Read(::IPC::mojom::blink::TestStruct::DataView input, ::IPC::mojom::blink::TestStructPtr* output);
};
} // namespace mojo
#endif // IPC_IPC_TEST_MOJOM_BLINK_H_
/* Metadata comment
eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDE3NzIsICJlbmQiOiAxNzg4LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uU2ltcGxlVGVzdERyaXZlciJ9LCAi
ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5l
cyIsICJiZWdpbiI6IDM0MDYsICJlbmQiOiAzNDE3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1v
am9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hy
b21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uU2ltcGxlVGVzdERyaXZl
ci5FeHBlY3RWYWx1ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDM2NTYsICJlbmQiOiAzNjcyLCAidm5hbWUi
OiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9q
b20uU2ltcGxlVGVzdERyaXZlci5HZXRFeHBlY3RlZFZhbHVlIn0sICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMzg0
NywgImVuZCI6IDM4NjMsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjog
ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4i
LCAic2lnbmF0dXJlIjogIklQQy5tb2pvbS5TaW1wbGVUZXN0RHJpdmVyLkdldEV4cGVjdGVkVmFs
dWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9y
X2RlZmluZXMiLCAiYmVnaW4iOiA0MTE4LCAiZW5kIjogNDEzMCwgInZuYW1lIjogeyJsYW5ndWFn
ZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2Vh
cmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLlNpbXBsZVRl
c3REcml2ZXIuUmVxdWVzdFZhbHVlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi
fSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNDI5NywgImVuZCI6IDQzMDks
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
IklQQy5tb2pvbS5TaW1wbGVUZXN0RHJpdmVyLlJlcXVlc3RWYWx1ZSJ9LCAiZWRnZSI6ICIlL2t5
dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6
IDQ0ODMsICJlbmQiOiA0NDk0LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1
cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9t
YWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uU2ltcGxlVGVzdERyaXZlci5SZXF1ZXN0UXVp
dCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDQ3MzMsICJlbmQiOiA0NzQzLCAidm5hbWUiOiB7Imxhbmd1YWdl
IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uVGVybWluYXRv
ciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDYwOTIsICJlbmQiOiA2MTAxLCAidm5hbWUiOiB7Imxhbmd1YWdl
IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uVGVybWluYXRv
ci5UZXJtaW5hdGUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUi
OiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA2MjMxLCAiZW5kIjogNjI0MCwgInZuYW1lIjog
eyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
bS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9t
LlRlcm1pbmF0b3IuVGVybWluYXRlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi
fSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNjUwNywgImVuZCI6IDY1MjMs
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
IklQQy5tb2pvbS5TaW1wbGVUZXN0Q2xpZW50In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l
cmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogODE5MiwgImVuZCI6
IDgyMDQsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVt
Lmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0
dXJlIjogIklQQy5tb2pvbS5TaW1wbGVUZXN0Q2xpZW50LlJlcXVlc3RWYWx1ZSJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDgzNzEsICJlbmQiOiA4MzgzLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uU2ltcGxlVGVzdENsaWVudC5SZXF1
ZXN0VmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAi
YW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA4NjMwLCAiZW5kIjogODYzOCwgInZuYW1lIjogeyJs
YW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
b2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLlNp
bXBsZVRlc3RDbGllbnQuQmluZFN5bmMifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRl
cyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA4ODMyLCAiZW5kIjogODg0
MCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29v
Z2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUi
OiAiSVBDLm1vam9tLlNpbXBsZVRlc3RDbGllbnQuQmluZFN5bmMifSwgImVkZ2UiOiAiJS9reXRo
ZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA5
MTY1LCAiZW5kIjogOTE5NywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFp
biIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLlNpbXBsZVRlc3RDbGllbnQuR2V0UmVjZWl2ZXJX
aXRoUXVldWVkU3luY01lc3NhZ2UifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9
LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA5NDY3LCAiZW5kIjogOTQ3OSwg
InZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAi
SVBDLm1vam9tLlBpbmdSZWNlaXZlciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
In0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEwNjc0LCAiZW5kIjogMTA2
NzgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJl
IjogIklQQy5tb2pvbS5QaW5nUmVjZWl2ZXIuUGluZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEwODk5LCAi
ZW5kIjogMTA5MTUsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAi
c2lnbmF0dXJlIjogIklQQy5tb2pvbS5UZXN0U3RydWN0UGFzc2VyIn0sICJlZGdlIjogIiUva3l0
aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjog
MTIwODAsICJlbmQiOiAxMjA4NCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8v
bWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLlRlc3RTdHJ1Y3RQYXNzZXIuUGFzcyJ9LCAi
ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5l
cyIsICJiZWdpbiI6IDEyMzA3LCAiZW5kIjogMTIzMjUsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAi
bW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9j
aHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQQy5tb2pvbS5JbmRpcmVjdFRlc3RE
cml2ZXIifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5j
aG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxMzUzNiwgImVuZCI6IDEzNTUxLCAidm5hbWUiOiB7Imxh
bmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nv
ZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uSW5k
aXJlY3RUZXN0RHJpdmVyLkdldFBpbmdSZWNlaXZlciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEzODEzLCAi
ZW5kIjogMTM4MjIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAi
c2lnbmF0dXJlIjogIklQQy5tb2pvbS5SZWZsZWN0b3IifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
L2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAxNTI4Mywg
ImVuZCI6IDE1Mjg3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJj
aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwg
InNpZ25hdHVyZSI6ICJJUEMubW9qb20uUmVmbGVjdG9yLlBpbmcifSwgImVkZ2UiOiAiJS9reXRo
ZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAx
NTU0NSwgImVuZCI6IDE1NTUzLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1
cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9t
YWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uUmVmbGVjdG9yLlN5bmNQaW5nIn0sICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
ImJlZ2luIjogMTU3NDksICJlbmQiOiAxNTc1NywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pv
bSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9t
aXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLlJlZmxlY3Rvci5TeW5jUGlu
ZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDE1ODgwLCAiZW5kIjogMTU4ODQsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQQy5tb2pvbS5SZWZsZWN0
b3IuUXVpdCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJh
bmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDE2MTIwLCAiZW5kIjogMTYxNDUsICJ2bmFtZSI6IHsi
bGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
Y29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQQy5tb2pvbS5B
c3NvY2lhdGVkSW50ZXJmYWNlVmVuZG9yIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0
ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTc0MDgsICJlbmQiOiAx
NzQyNCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1
cmUiOiAiSVBDLm1vam9tLkFzc29jaWF0ZWRJbnRlcmZhY2VWZW5kb3IuR2V0VGVzdEludGVyZmFj
ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDE3Nzc1LCAiZW5kIjogMTc4MDEsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQQy5tb2pvbS5JbnRlcmZh
Y2VQYXNzaW5nVGVzdERyaXZlciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDE5NDU5LCAiZW5kIjogMTk0NjMs
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
IklQQy5tb2pvbS5JbnRlcmZhY2VQYXNzaW5nVGVzdERyaXZlci5Jbml0In0sICJlZGdlIjogIiUv
a3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2lu
IjogMTk2NDcsICJlbmQiOiAxOTY2MiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3Ny
Yy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLkludGVyZmFjZVBhc3NpbmdUZXN0RHJp
dmVyLkdldFBpbmdSZWNlaXZlciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDE5OTM4LCAiZW5kIjogMTk5NjMs
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
IklQQy5tb2pvbS5JbnRlcmZhY2VQYXNzaW5nVGVzdERyaXZlci5HZXRBc3NvY2lhdGVkUGluZ1Jl
Y2VpdmVyIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFu
Y2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjAxNjUsICJlbmQiOiAyMDE2OSwgInZuYW1lIjogeyJs
YW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
b2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLklu
dGVyZmFjZVBhc3NpbmdUZXN0RHJpdmVyLlF1aXQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
bmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyMDQ1NSwgImVu
ZCI6IDIwNDgwLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJv
bWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNp
Z25hdHVyZSI6ICJJUEMubW9qb20uSW50ZXJmYWNlV2l0aFVyZ2VudE1ldGhvZCJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDIxOTk5LCAiZW5kIjogMjIwMTcsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQQy5tb2pvbS5JbnRlcmZhY2VXaXRoVXJnZW50
TWV0aG9kLk1heWJlVXJnZW50TWVzc2FnZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
dGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDIyMTMxLCAiZW5kIjog
MjIxNDcsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVt
Lmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0
dXJlIjogIklQQy5tb2pvbS5JbnRlcmZhY2VXaXRoVXJnZW50TWV0aG9kLk5vblVyZ2VudE1lc3Nh
Z2UifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9y
X2RlZmluZXMiLCAiYmVnaW4iOiAyMjMwMSwgImVuZCI6IDIyMzEyLCAidm5hbWUiOiB7Imxhbmd1
YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVz
ZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uSW50ZXJm
YWNlV2l0aFVyZ2VudE1ldGhvZC5SZXF1ZXN0UXVpdCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2Uv
Z2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDIyNjYzLCAi
ZW5kIjogMjI2NzQsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAi
c2lnbmF0dXJlIjogIklQQy5tb2pvbS5TaW1wbGVUZXN0RHJpdmVyLkV4cGVjdFZhbHVlIn0sICJl
ZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVz
IiwgImJlZ2luIjogMjI3NzEsICJlbmQiOiAyMjc4NywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJt
b2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2No
cm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLlNpbXBsZVRlc3REcml2
ZXIuR2V0RXhwZWN0ZWRWYWx1ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDIyODg5LCAiZW5kIjogMjI5MDUs
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
IklQQy5tb2pvbS5TaW1wbGVUZXN0RHJpdmVyLkdldEV4cGVjdGVkVmFsdWUifSwgImVkZ2UiOiAi
JS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVn
aW4iOiAyMzAxOCwgImVuZCI6IDIzMDMwLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uU2ltcGxlVGVzdERyaXZlci5SZXF1
ZXN0VmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAi
YW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyMzEyOCwgImVuZCI6IDIzMTQwLCAidm5hbWUiOiB7
Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
L2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20u
U2ltcGxlVGVzdERyaXZlci5SZXF1ZXN0VmFsdWUifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
bmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyMzI0OCwgImVu
ZCI6IDIzMjU5LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJv
bWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNp
Z25hdHVyZSI6ICJJUEMubW9qb20uU2ltcGxlVGVzdERyaXZlci5SZXF1ZXN0UXVpdCJ9LCAiZWRn
ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
ICJiZWdpbiI6IDIzNjM0LCAiZW5kIjogMjM2NDMsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9q
b20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJv
bWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQQy5tb2pvbS5UZXJtaW5hdG9yLlRlcm1p
bmF0ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJiZWdpbiI6IDIzNzE0LCAiZW5kIjogMjM3MjMsICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQQy5tb2pvbS5UZXJt
aW5hdG9yLlRlcm1pbmF0ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI0MTM1LCAiZW5kIjogMjQxNDcsICJ2
bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQ
Qy5tb2pvbS5TaW1wbGVUZXN0Q2xpZW50LlJlcXVlc3RWYWx1ZSJ9LCAiZWRnZSI6ICIlL2t5dGhl
L2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI0
MjQ1LCAiZW5kIjogMjQyNTcsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVz
IjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21h
aW4iLCAic2lnbmF0dXJlIjogIklQQy5tb2pvbS5TaW1wbGVUZXN0Q2xpZW50LlJlcXVlc3RWYWx1
ZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDI0MzYyLCAiZW5kIjogMjQzNzAsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQQy5tb2pvbS5TaW1wbGVU
ZXN0Q2xpZW50LkJpbmRTeW5jIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwg
eyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjQ1MDYsICJlbmQiOiAyNDUxNCwg
InZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAi
SVBDLm1vam9tLlNpbXBsZVRlc3RDbGllbnQuQmluZFN5bmMifSwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyNDcw
MSwgImVuZCI6IDI0NzMzLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6
ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWlu
IiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uU2ltcGxlVGVzdENsaWVudC5HZXRSZWNlaXZlcldp
dGhRdWV1ZWRTeW5jTWVzc2FnZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI1MTM2LCAiZW5kIjogMjUxNDAs
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
IklQQy5tb2pvbS5QaW5nUmVjZWl2ZXIuUGluZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
ZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI1NTM5LCAiZW5k
IjogMjU1NDMsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogIklQQy5tb2pvbS5UZXN0U3RydWN0UGFzc2VyLlBhc3MifSwgImVkZ2UiOiAiJS9r
eXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4i
OiAyNTk1OSwgImVuZCI6IDI1OTc0LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNv
cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3Jj
Ly9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20uSW5kaXJlY3RUZXN0RHJpdmVyLkdldFBp
bmdSZWNlaXZlciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6
ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI2MzY2LCAiZW5kIjogMjYzNzAsICJ2bmFtZSI6
IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQQy5tb2pv
bS5SZWZsZWN0b3IuUGluZyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI2NDg2LCAiZW5kIjogMjY0OTQsICJ2
bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIklQ
Qy5tb2pvbS5SZWZsZWN0b3IuU3luY1BpbmcifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVy
YXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyNjYxNCwgImVuZCI6
IDI2NjIyLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1
bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25h
dHVyZSI6ICJJUEMubW9qb20uUmVmbGVjdG9yLlN5bmNQaW5nIn0sICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjY3
MzgsICJlbmQiOiAyNjc0MiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFp
biIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLlJlZmxlY3Rvci5RdWl0In0sICJlZGdlIjogIiUv
a3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2lu
IjogMjcxODYsICJlbmQiOiAyNzIwMiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3Ny
Yy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLkFzc29jaWF0ZWRJbnRlcmZhY2VWZW5k
b3IuR2V0VGVzdEludGVyZmFjZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI3NzAwLCAiZW5kIjogMjc3MDQs
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
IklQQy5tb2pvbS5JbnRlcmZhY2VQYXNzaW5nVGVzdERyaXZlci5Jbml0In0sICJlZGdlIjogIiUv
a3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2lu
IjogMjc4MTgsICJlbmQiOiAyNzgzMywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3Ny
Yy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLkludGVyZmFjZVBhc3NpbmdUZXN0RHJp
dmVyLkdldFBpbmdSZWNlaXZlciJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0s
IHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDI4MDI5LCAiZW5kIjogMjgwNTQs
ICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjog
IklQQy5tb2pvbS5JbnRlcmZhY2VQYXNzaW5nVGVzdERyaXZlci5HZXRBc3NvY2lhdGVkUGluZ1Jl
Y2VpdmVyIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFu
Y2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjgyNDksICJlbmQiOiAyODI1MywgInZuYW1lIjogeyJs
YW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9j
b2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLklu
dGVyZmFjZVBhc3NpbmdUZXN0RHJpdmVyLlF1aXQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
bmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyODY5OSwgImVu
ZCI6IDI4NzE3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJv
bWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNp
Z25hdHVyZSI6ICJJUEMubW9qb20uSW50ZXJmYWNlV2l0aFVyZ2VudE1ldGhvZC5NYXliZVVyZ2Vu
dE1lc3NhZ2UifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAi
YW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyODgyNCwgImVuZCI6IDI4ODQwLCAidm5hbWUiOiB7
Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29t
L2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMubW9qb20u
SW50ZXJmYWNlV2l0aFVyZ2VudE1ldGhvZC5Ob25VcmdlbnRNZXNzYWdlIn0sICJlZGdlIjogIiUv
a3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2lu
IjogMjg5MjgsICJlbmQiOiAyODkzOSwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3Ny
Yy8vbWFpbiIsICJzaWduYXR1cmUiOiAiSVBDLm1vam9tLkludGVyZmFjZVdpdGhVcmdlbnRNZXRo
b2QuUmVxdWVzdFF1aXQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5
cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiA0NDcwMywgImVuZCI6IDQ0NzEzLCAidm5h
bWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3Vy
Y2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJJUEMu
bW9qb20uVGVzdFN0cnVjdCJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn1dfQ==
*/