blob: cc90ea6868fadd7d06f8891109d5561f30d774d6 [file] [log] [blame]
// services/network/public/mojom/ssl_config.mojom-blink.h is auto generated by mojom_bindings_generator.py, do not edit
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SERVICES_NETWORK_PUBLIC_MOJOM_SSL_CONFIG_MOJOM_BLINK_H_
#define SERVICES_NETWORK_PUBLIC_MOJOM_SSL_CONFIG_MOJOM_BLINK_H_
#include <stdint.h>
#include <limits>
#include <type_traits>
#include <utility>
#include "third_party/abseil-cpp/absl/types/optional.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 "services/network/public/mojom/ssl_config.mojom-shared.h"
#include "services/network/public/mojom/ssl_config.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/raw_ptr_impl_ref_traits.h"
#include "third_party/blink/public/platform/web_common.h"
#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif
namespace WTF {
struct network_mojom_internal_SSLVersion_DataHashFn {
static unsigned GetHash(const ::network::mojom::SSLVersion& value) {
using utype = std::underlying_type<::network::mojom::SSLVersion>::type;
return DefaultHash<utype>::Hash().GetHash(static_cast<utype>(value));
}
static bool Equal(const ::network::mojom::SSLVersion& left, const ::network::mojom::SSLVersion& right) {
return left == right;
}
static const bool safe_to_compare_to_empty_or_deleted = true;
};
template <>
struct HashTraits<::network::mojom::SSLVersion>
: public GenericHashTraits<::network::mojom::SSLVersion> {
static_assert(true,
"-1000000 is a reserved enum value");
static_assert(true,
"-1000001 is a reserved enum value");
static const bool kEmptyValueIsZero = false;
static ::network::mojom::SSLVersion EmptyValue() { return static_cast<::network::mojom::SSLVersion>(-1000000); }
static void ConstructDeletedValue(::network::mojom::SSLVersion& slot, bool) {
slot = static_cast<::network::mojom::SSLVersion>(-1000001);
}
static bool IsDeletedValue(const ::network::mojom::SSLVersion& value) {
return value == static_cast<::network::mojom::SSLVersion>(-1000001);
}
};
} // namespace WTF
namespace network {
namespace mojom {
namespace blink {
class SSLConfigClientProxy;
template <typename ImplRefTraits>
class SSLConfigClientStub;
class SSLConfigClientRequestValidator;
// @generated_from: network.mojom.SSLConfigClient
class BLINK_PLATFORM_EXPORT SSLConfigClient
: public SSLConfigClientInterfaceBase {
public:
static const char Name_[];
static std::pair<uint32_t, const void*> 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 HasSyncMethods_ = false;
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = SSLConfigClientInterfaceBase;
using Proxy_ = SSLConfigClientProxy;
template <typename ImplRefTraits>
using Stub_ = SSLConfigClientStub<ImplRefTraits>;
using RequestValidator_ = SSLConfigClientRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kOnSSLConfigUpdatedMinVersion = 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 OnSSLConfigUpdated_Sym {
NOINLINE static void IPCSymbol();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~SSLConfigClient() = default;
// @generated_from: network.mojom.SSLConfigClient.OnSSLConfigUpdated
virtual void OnSSLConfigUpdated(SSLConfigPtr ssl_config) = 0;
};
// @generated_from: network.mojom.SSLConfigClient
class BLINK_PLATFORM_EXPORT SSLConfigClientProxy
: public SSLConfigClient {
public:
using InterfaceType = SSLConfigClient;
explicit SSLConfigClientProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: network.mojom.SSLConfigClient.OnSSLConfigUpdated
void OnSSLConfigUpdated(SSLConfigPtr ssl_config) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
class BLINK_PLATFORM_EXPORT SSLConfigClientStubDispatch {
public:
static bool Accept(SSLConfigClient* impl, mojo::Message* message);
static bool AcceptWithResponder(
SSLConfigClient* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<SSLConfigClient>>
class SSLConfigClientStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
SSLConfigClientStub() = default;
~SSLConfigClientStub() 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 SSLConfigClientStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return SSLConfigClientStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class BLINK_PLATFORM_EXPORT SSLConfigClientRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
// @generated_from: network.mojom.SSLConfig
class BLINK_PLATFORM_EXPORT SSLConfig {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<SSLConfig, T>::value>;
using DataView = SSLConfigDataView;
using Data_ = internal::SSLConfig_Data;
template <typename... Args>
static SSLConfigPtr New(Args&&... args) {
return SSLConfigPtr(
absl::in_place, std::forward<Args>(args)...);
}
template <typename U>
static SSLConfigPtr From(const U& u) {
return mojo::TypeConverter<SSLConfigPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, SSLConfig>::Convert(*this);
}
SSLConfig();
SSLConfig(
bool rev_checking_enabled,
bool rev_checking_required_local_anchors,
bool sha1_local_anchors_enabled,
bool symantec_enforcement_disabled,
SSLVersion version_min,
SSLVersion version_max,
WTF::Vector<uint16_t> disabled_cipher_suites,
WTF::Vector<WTF::String> client_cert_pooling_policy,
bool cecpq2_enabled);
~SSLConfig();
// 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 = SSLConfigPtr>
SSLConfigPtr 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, SSLConfig::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, SSLConfig::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename UserType>
static WTF::Vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
SSLConfig::DataView, WTF::Vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
SSLConfig::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::SSLConfig_UnserializedMessageContext<
UserType, SSLConfig::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<SSLConfig::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const WTF::Vector<uint8_t>& input,
UserType* output) {
return SSLConfig::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::SSLConfig_UnserializedMessageContext<
UserType, SSLConfig::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<SSLConfig::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: network.mojom.SSLConfig.rev_checking_enabled
bool rev_checking_enabled;
// @generated_from: network.mojom.SSLConfig.rev_checking_required_local_anchors
bool rev_checking_required_local_anchors;
// @generated_from: network.mojom.SSLConfig.sha1_local_anchors_enabled
bool sha1_local_anchors_enabled;
// @generated_from: network.mojom.SSLConfig.symantec_enforcement_disabled
bool symantec_enforcement_disabled;
// @generated_from: network.mojom.SSLConfig.version_min
SSLVersion version_min;
// @generated_from: network.mojom.SSLConfig.version_max
SSLVersion version_max;
// @generated_from: network.mojom.SSLConfig.disabled_cipher_suites
WTF::Vector<uint16_t> disabled_cipher_suites;
// @generated_from: network.mojom.SSLConfig.client_cert_pooling_policy
WTF::Vector<WTF::String> client_cert_pooling_policy;
// @generated_from: network.mojom.SSLConfig.cecpq2_enabled
bool cecpq2_enabled;
// 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, SSLConfig::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, SSLConfig::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, SSLConfig::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, SSLConfig::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
template <typename StructPtrType>
SSLConfigPtr SSLConfig::Clone() const {
return New(
mojo::Clone(rev_checking_enabled),
mojo::Clone(rev_checking_required_local_anchors),
mojo::Clone(sha1_local_anchors_enabled),
mojo::Clone(symantec_enforcement_disabled),
mojo::Clone(version_min),
mojo::Clone(version_max),
mojo::Clone(disabled_cipher_suites),
mojo::Clone(client_cert_pooling_policy),
mojo::Clone(cecpq2_enabled)
);
}
template <typename T, SSLConfig::EnableIfSame<T>*>
bool SSLConfig::Equals(const T& other_struct) const {
if (!mojo::Equals(this->rev_checking_enabled, other_struct.rev_checking_enabled))
return false;
if (!mojo::Equals(this->rev_checking_required_local_anchors, other_struct.rev_checking_required_local_anchors))
return false;
if (!mojo::Equals(this->sha1_local_anchors_enabled, other_struct.sha1_local_anchors_enabled))
return false;
if (!mojo::Equals(this->symantec_enforcement_disabled, other_struct.symantec_enforcement_disabled))
return false;
if (!mojo::Equals(this->version_min, other_struct.version_min))
return false;
if (!mojo::Equals(this->version_max, other_struct.version_max))
return false;
if (!mojo::Equals(this->disabled_cipher_suites, other_struct.disabled_cipher_suites))
return false;
if (!mojo::Equals(this->client_cert_pooling_policy, other_struct.client_cert_pooling_policy))
return false;
if (!mojo::Equals(this->cecpq2_enabled, other_struct.cecpq2_enabled))
return false;
return true;
}
template <typename T, SSLConfig::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.rev_checking_enabled < rhs.rev_checking_enabled)
return true;
if (rhs.rev_checking_enabled < lhs.rev_checking_enabled)
return false;
if (lhs.rev_checking_required_local_anchors < rhs.rev_checking_required_local_anchors)
return true;
if (rhs.rev_checking_required_local_anchors < lhs.rev_checking_required_local_anchors)
return false;
if (lhs.sha1_local_anchors_enabled < rhs.sha1_local_anchors_enabled)
return true;
if (rhs.sha1_local_anchors_enabled < lhs.sha1_local_anchors_enabled)
return false;
if (lhs.symantec_enforcement_disabled < rhs.symantec_enforcement_disabled)
return true;
if (rhs.symantec_enforcement_disabled < lhs.symantec_enforcement_disabled)
return false;
if (lhs.version_min < rhs.version_min)
return true;
if (rhs.version_min < lhs.version_min)
return false;
if (lhs.version_max < rhs.version_max)
return true;
if (rhs.version_max < lhs.version_max)
return false;
if (lhs.disabled_cipher_suites < rhs.disabled_cipher_suites)
return true;
if (rhs.disabled_cipher_suites < lhs.disabled_cipher_suites)
return false;
if (lhs.client_cert_pooling_policy < rhs.client_cert_pooling_policy)
return true;
if (rhs.client_cert_pooling_policy < lhs.client_cert_pooling_policy)
return false;
if (lhs.cecpq2_enabled < rhs.cecpq2_enabled)
return true;
if (rhs.cecpq2_enabled < lhs.cecpq2_enabled)
return false;
return false;
}
} // namespace blink
} // namespace mojom
} // namespace network
namespace mojo {
template <>
struct BLINK_PLATFORM_EXPORT StructTraits<::network::mojom::blink::SSLConfig::DataView,
::network::mojom::blink::SSLConfigPtr> {
static bool IsNull(const ::network::mojom::blink::SSLConfigPtr& input) { return !input; }
static void SetToNull(::network::mojom::blink::SSLConfigPtr* output) { output->reset(); }
static decltype(::network::mojom::blink::SSLConfig::rev_checking_enabled) rev_checking_enabled(
const ::network::mojom::blink::SSLConfigPtr& input) {
return input->rev_checking_enabled;
}
static decltype(::network::mojom::blink::SSLConfig::rev_checking_required_local_anchors) rev_checking_required_local_anchors(
const ::network::mojom::blink::SSLConfigPtr& input) {
return input->rev_checking_required_local_anchors;
}
static decltype(::network::mojom::blink::SSLConfig::sha1_local_anchors_enabled) sha1_local_anchors_enabled(
const ::network::mojom::blink::SSLConfigPtr& input) {
return input->sha1_local_anchors_enabled;
}
static decltype(::network::mojom::blink::SSLConfig::symantec_enforcement_disabled) symantec_enforcement_disabled(
const ::network::mojom::blink::SSLConfigPtr& input) {
return input->symantec_enforcement_disabled;
}
static decltype(::network::mojom::blink::SSLConfig::version_min) version_min(
const ::network::mojom::blink::SSLConfigPtr& input) {
return input->version_min;
}
static decltype(::network::mojom::blink::SSLConfig::version_max) version_max(
const ::network::mojom::blink::SSLConfigPtr& input) {
return input->version_max;
}
static const decltype(::network::mojom::blink::SSLConfig::disabled_cipher_suites)& disabled_cipher_suites(
const ::network::mojom::blink::SSLConfigPtr& input) {
return input->disabled_cipher_suites;
}
static const decltype(::network::mojom::blink::SSLConfig::client_cert_pooling_policy)& client_cert_pooling_policy(
const ::network::mojom::blink::SSLConfigPtr& input) {
return input->client_cert_pooling_policy;
}
static decltype(::network::mojom::blink::SSLConfig::cecpq2_enabled) cecpq2_enabled(
const ::network::mojom::blink::SSLConfigPtr& input) {
return input->cecpq2_enabled;
}
static bool Read(::network::mojom::blink::SSLConfig::DataView input, ::network::mojom::blink::SSLConfigPtr* output);
};
} // namespace mojo
#endif // SERVICES_NETWORK_PUBLIC_MOJOM_SSL_CONFIG_MOJOM_BLINK_H_
/* Metadata comment
eyJtZXRhIjogW3siZW5kIjogMzE2MSwgImJlZ2luIjogMzE0NiwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogIm5ldHdvcmsubW9qb20uU1NMQ29uZmlnQ2xpZW50In19
LCB7ImVuZCI6IDQzODcsICJiZWdpbiI6IDQzNjksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l
cmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNo
cm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9t
IiwgInNpZ25hdHVyZSI6ICJuZXR3b3JrLm1vam9tLlNTTENvbmZpZ0NsaWVudC5PblNTTENvbmZp
Z1VwZGF0ZWQifX0sIHsiZW5kIjogNDc4MSwgImJlZ2luIjogNDc2MywgImVkZ2UiOiAiJS9reXRo
ZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3Vh
Z2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogIm5ldHdvcmsubW9qb20uU1NMQ29uZmlnQ2xpZW50
Lk9uU1NMQ29uZmlnVXBkYXRlZCJ9fSwgeyJlbmQiOiA2NDUyLCAiYmVnaW4iOiA2NDQzLCAiZWRn
ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAi
dm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny
YyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAibmV0d29yay5tb2pvbS5TU0xD
b25maWcifX0sIHsiZW5kIjogMTAzMjcsICJiZWdpbiI6IDEwMzA3LCAiZWRnZSI6ICIlL2t5dGhl
L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv
cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn
ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAibmV0d29yay5tb2pvbS5TU0xDb25maWcucmV2X2No
ZWNraW5nX2VuYWJsZWQifX0sIHsiZW5kIjogMTA0NTQsICJiZWdpbiI6IDEwNDE5LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h
bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs
ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAibmV0d29yay5tb2pvbS5TU0xDb25m
aWcucmV2X2NoZWNraW5nX3JlcXVpcmVkX2xvY2FsX2FuY2hvcnMifX0sIHsiZW5kIjogMTA1NjMs
ICJiZWdpbiI6IDEwNTM3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUi
OiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz
b3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUi
OiAibmV0d29yay5tb2pvbS5TU0xDb25maWcuc2hhMV9sb2NhbF9hbmNob3JzX2VuYWJsZWQifX0s
IHsiZW5kIjogMTA2NzgsICJiZWdpbiI6IDEwNjQ5LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
ZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJj
aHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pv
bSIsICJzaWduYXR1cmUiOiAibmV0d29yay5tb2pvbS5TU0xDb25maWcuc3ltYW50ZWNfZW5mb3Jj
ZW1lbnRfZGlzYWJsZWQifX0sIHsiZW5kIjogMTA3NjMsICJiZWdpbiI6IDEwNzUyLCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h
bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs
ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAibmV0d29yay5tb2pvbS5TU0xDb25m
aWcudmVyc2lvbl9taW4ifX0sIHsiZW5kIjogMTA4NDgsICJiZWdpbiI6IDEwODM3LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h
bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs
ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAibmV0d29yay5tb2pvbS5TU0xDb25m
aWcudmVyc2lvbl9tYXgifX0sIHsiZW5kIjogMTA5NjYsICJiZWdpbiI6IDEwOTQ0LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5h
bWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIs
ICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAibmV0d29yay5tb2pvbS5TU0xDb25m
aWcuZGlzYWJsZWRfY2lwaGVyX3N1aXRlcyJ9fSwgeyJlbmQiOiAxMTA5NSwgImJlZ2luIjogMTEw
NjksICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVm
aW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hy
b21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJuZXR3b3JrLm1v
am9tLlNTTENvbmZpZy5jbGllbnRfY2VydF9wb29saW5nX3BvbGljeSJ9fSwgeyJlbmQiOiAxMTE4
MCwgImJlZ2luIjogMTExNjYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw
ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds
ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy
ZSI6ICJuZXR3b3JrLm1vam9tLlNTTENvbmZpZy5jZWNwcTJfZW5hYmxlZCJ9fV0sICJ0eXBlIjog
Imt5dGhlMCJ9
*/