blob: 6ba54fb9488a85505847b9398a25e5d172a062e9 [file] [log] [blame]
// components/payments/mojom/payment_request_data.mojom.h is auto generated by mojom_bindings_generator.py, do not edit
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_PAYMENTS_MOJOM_PAYMENT_REQUEST_DATA_MOJOM_H_
#define COMPONENTS_PAYMENTS_MOJOM_PAYMENT_REQUEST_DATA_MOJOM_H_
#include <stdint.h>
#include <limits>
#include <optional>
#include <type_traits>
#include <utility>
#include "base/types/cxx23_to_underlying.h"
#include "mojo/public/cpp/bindings/clone_traits.h"
#include "mojo/public/cpp/bindings/equals_traits.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/struct_ptr.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "mojo/public/cpp/bindings/union_traits.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"
#include "components/payments/mojom/payment_request_data.mojom-features.h"
#include "components/payments/mojom/payment_request_data.mojom-shared.h"
#include "components/payments/mojom/payment_request_data.mojom-forward.h"
#include <string>
#include <vector>
#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif
namespace payments::mojom {
// @generated_from: payments.mojom.PaymentCurrencyAmount
class PaymentCurrencyAmount {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<PaymentCurrencyAmount, T>::value>;
using DataView = PaymentCurrencyAmountDataView;
using Data_ = internal::PaymentCurrencyAmount_Data;
template <typename... Args>
static PaymentCurrencyAmountPtr New(Args&&... args) {
return PaymentCurrencyAmountPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static PaymentCurrencyAmountPtr From(const U& u) {
return mojo::TypeConverter<PaymentCurrencyAmountPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, PaymentCurrencyAmount>::Convert(*this);
}
PaymentCurrencyAmount();
PaymentCurrencyAmount(
const std::string& currency,
const std::string& value);
~PaymentCurrencyAmount();
// 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 = PaymentCurrencyAmountPtr>
PaymentCurrencyAmountPtr 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, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
size_t Hash(size_t seed) const;
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
PaymentCurrencyAmount::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
PaymentCurrencyAmount::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::PaymentCurrencyAmount_UnserializedMessageContext<
UserType, PaymentCurrencyAmount::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<PaymentCurrencyAmount::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return PaymentCurrencyAmount::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::PaymentCurrencyAmount_UnserializedMessageContext<
UserType, PaymentCurrencyAmount::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<PaymentCurrencyAmount::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: payments.mojom.PaymentCurrencyAmount.currency
std::string currency;
// @generated_from: payments.mojom.PaymentCurrencyAmount.value
std::string value;
// 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, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: payments.mojom.PayerErrors
class PayerErrors {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<PayerErrors, T>::value>;
using DataView = PayerErrorsDataView;
using Data_ = internal::PayerErrors_Data;
template <typename... Args>
static PayerErrorsPtr New(Args&&... args) {
return PayerErrorsPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static PayerErrorsPtr From(const U& u) {
return mojo::TypeConverter<PayerErrorsPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, PayerErrors>::Convert(*this);
}
PayerErrors();
PayerErrors(
const std::string& email,
const std::string& name,
const std::string& phone);
~PayerErrors();
// 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 = PayerErrorsPtr>
PayerErrorsPtr 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, PayerErrors::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, PayerErrors::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, PayerErrors::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
size_t Hash(size_t seed) const;
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
PayerErrors::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
PayerErrors::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::PayerErrors_UnserializedMessageContext<
UserType, PayerErrors::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<PayerErrors::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return PayerErrors::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::PayerErrors_UnserializedMessageContext<
UserType, PayerErrors::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<PayerErrors::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: payments.mojom.PayerErrors.email
std::string email;
// @generated_from: payments.mojom.PayerErrors.name
std::string name;
// @generated_from: payments.mojom.PayerErrors.phone
std::string phone;
// 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, PayerErrors::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, PayerErrors::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, PayerErrors::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, PayerErrors::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: payments.mojom.PaymentAddress
class PaymentAddress {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<PaymentAddress, T>::value>;
using DataView = PaymentAddressDataView;
using Data_ = internal::PaymentAddress_Data;
template <typename... Args>
static PaymentAddressPtr New(Args&&... args) {
return PaymentAddressPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static PaymentAddressPtr From(const U& u) {
return mojo::TypeConverter<PaymentAddressPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, PaymentAddress>::Convert(*this);
}
PaymentAddress();
PaymentAddress(
const std::string& country,
std::vector<std::string> address_line,
const std::string& region,
const std::string& city,
const std::string& dependent_locality,
const std::string& postal_code,
const std::string& sorting_code,
const std::string& organization,
const std::string& recipient,
const std::string& phone);
~PaymentAddress();
// 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 = PaymentAddressPtr>
PaymentAddressPtr 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, PaymentAddress::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, PaymentAddress::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, PaymentAddress::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
PaymentAddress::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
PaymentAddress::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::PaymentAddress_UnserializedMessageContext<
UserType, PaymentAddress::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<PaymentAddress::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return PaymentAddress::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::PaymentAddress_UnserializedMessageContext<
UserType, PaymentAddress::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<PaymentAddress::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: payments.mojom.PaymentAddress.country
std::string country;
// @generated_from: payments.mojom.PaymentAddress.address_line
std::vector<std::string> address_line;
// @generated_from: payments.mojom.PaymentAddress.region
std::string region;
// @generated_from: payments.mojom.PaymentAddress.city
std::string city;
// @generated_from: payments.mojom.PaymentAddress.dependent_locality
std::string dependent_locality;
// @generated_from: payments.mojom.PaymentAddress.postal_code
std::string postal_code;
// @generated_from: payments.mojom.PaymentAddress.sorting_code
std::string sorting_code;
// @generated_from: payments.mojom.PaymentAddress.organization
std::string organization;
// @generated_from: payments.mojom.PaymentAddress.recipient
std::string recipient;
// @generated_from: payments.mojom.PaymentAddress.phone
std::string phone;
// 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, PaymentAddress::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, PaymentAddress::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, PaymentAddress::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, PaymentAddress::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: payments.mojom.PaymentValidationErrors
class PaymentValidationErrors {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<PaymentValidationErrors, T>::value>;
using DataView = PaymentValidationErrorsDataView;
using Data_ = internal::PaymentValidationErrors_Data;
template <typename... Args>
static PaymentValidationErrorsPtr New(Args&&... args) {
return PaymentValidationErrorsPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static PaymentValidationErrorsPtr From(const U& u) {
return mojo::TypeConverter<PaymentValidationErrorsPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, PaymentValidationErrors>::Convert(*this);
}
PaymentValidationErrors();
PaymentValidationErrors(
const std::string& error,
PayerErrorsPtr payer,
AddressErrorsPtr shipping_address);
PaymentValidationErrors(const PaymentValidationErrors&) = delete;
PaymentValidationErrors& operator=(const PaymentValidationErrors&) = delete;
~PaymentValidationErrors();
// 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 = PaymentValidationErrorsPtr>
PaymentValidationErrorsPtr 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, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
size_t Hash(size_t seed) const;
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
PaymentValidationErrors::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
PaymentValidationErrors::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::PaymentValidationErrors_UnserializedMessageContext<
UserType, PaymentValidationErrors::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<PaymentValidationErrors::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return PaymentValidationErrors::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::PaymentValidationErrors_UnserializedMessageContext<
UserType, PaymentValidationErrors::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<PaymentValidationErrors::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: payments.mojom.PaymentValidationErrors.error
std::string error;
// @generated_from: payments.mojom.PaymentValidationErrors.payer
PayerErrorsPtr payer;
// @generated_from: payments.mojom.PaymentValidationErrors.shipping_address
AddressErrorsPtr shipping_address;
// 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, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, PaymentValidationErrors::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
// @generated_from: payments.mojom.AddressErrors
class AddressErrors {
public:
template <typename T>
using EnableIfSame = std::enable_if_t<std::is_same<AddressErrors, T>::value>;
using DataView = AddressErrorsDataView;
using Data_ = internal::AddressErrors_Data;
template <typename... Args>
static AddressErrorsPtr New(Args&&... args) {
return AddressErrorsPtr(
std::in_place, std::forward<Args>(args)...);
}
template <typename U>
static AddressErrorsPtr From(const U& u) {
return mojo::TypeConverter<AddressErrorsPtr, U>::Convert(u);
}
template <typename U>
U To() const {
return mojo::TypeConverter<U, AddressErrors>::Convert(*this);
}
AddressErrors();
AddressErrors(
const std::string& address_line,
const std::string& city,
const std::string& country,
const std::string& dependent_locality,
const std::string& organization,
const std::string& phone,
const std::string& postal_code,
const std::string& recipient,
const std::string& region,
const std::string& sorting_code);
~AddressErrors();
// 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 = AddressErrorsPtr>
AddressErrorsPtr 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, AddressErrors::EnableIfSame<T>* = nullptr>
bool Equals(const T& other) const;
template <typename T, AddressErrors::EnableIfSame<T>* = nullptr>
bool operator==(const T& rhs) const { return Equals(rhs); }
template <typename T, AddressErrors::EnableIfSame<T>* = nullptr>
bool operator!=(const T& rhs) const { return !operator==(rhs); }
size_t Hash(size_t seed) const;
template <typename UserType>
static std::vector<uint8_t> Serialize(UserType* input) {
return mojo::internal::SerializeImpl<
AddressErrors::DataView, std::vector<uint8_t>>(input);
}
template <typename UserType>
static mojo::Message SerializeAsMessage(UserType* input) {
return mojo::internal::SerializeAsMessageImpl<
AddressErrors::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::AddressErrors_UnserializedMessageContext<
UserType, AddressErrors::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<AddressErrors::DataView>(
message, data, data_num_bytes, output, Validate);
}
template <typename UserType>
static bool Deserialize(const std::vector<uint8_t>& input,
UserType* output) {
return AddressErrors::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::AddressErrors_UnserializedMessageContext<
UserType, AddressErrors::DataView>>();
if (context) {
*output = std::move(context->TakeData());
return true;
}
input.SerializeIfNecessary();
return mojo::internal::DeserializeImpl<AddressErrors::DataView>(
input, input.payload(), input.payload_num_bytes(), output, Validate);
}
// @generated_from: payments.mojom.AddressErrors.address_line
std::string address_line;
// @generated_from: payments.mojom.AddressErrors.city
std::string city;
// @generated_from: payments.mojom.AddressErrors.country
std::string country;
// @generated_from: payments.mojom.AddressErrors.dependent_locality
std::string dependent_locality;
// @generated_from: payments.mojom.AddressErrors.organization
std::string organization;
// @generated_from: payments.mojom.AddressErrors.phone
std::string phone;
// @generated_from: payments.mojom.AddressErrors.postal_code
std::string postal_code;
// @generated_from: payments.mojom.AddressErrors.recipient
std::string recipient;
// @generated_from: payments.mojom.AddressErrors.region
std::string region;
// @generated_from: payments.mojom.AddressErrors.sorting_code
std::string sorting_code;
// 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, AddressErrors::EnableIfSame<T>* = nullptr>
bool operator<(const T& lhs, const T& rhs);
template <typename T, AddressErrors::EnableIfSame<T>* = nullptr>
bool operator<=(const T& lhs, const T& rhs) {
return !(rhs < lhs);
}
template <typename T, AddressErrors::EnableIfSame<T>* = nullptr>
bool operator>(const T& lhs, const T& rhs) {
return rhs < lhs;
}
template <typename T, AddressErrors::EnableIfSame<T>* = nullptr>
bool operator>=(const T& lhs, const T& rhs) {
return !(lhs < rhs);
}
template <typename StructPtrType>
PaymentAddressPtr PaymentAddress::Clone() const {
return New(
mojo::Clone(country),
mojo::Clone(address_line),
mojo::Clone(region),
mojo::Clone(city),
mojo::Clone(dependent_locality),
mojo::Clone(postal_code),
mojo::Clone(sorting_code),
mojo::Clone(organization),
mojo::Clone(recipient),
mojo::Clone(phone)
);
}
template <typename T, PaymentAddress::EnableIfSame<T>*>
bool PaymentAddress::Equals(const T& other_struct) const {
if (!mojo::Equals(this->country, other_struct.country))
return false;
if (!mojo::Equals(this->address_line, other_struct.address_line))
return false;
if (!mojo::Equals(this->region, other_struct.region))
return false;
if (!mojo::Equals(this->city, other_struct.city))
return false;
if (!mojo::Equals(this->dependent_locality, other_struct.dependent_locality))
return false;
if (!mojo::Equals(this->postal_code, other_struct.postal_code))
return false;
if (!mojo::Equals(this->sorting_code, other_struct.sorting_code))
return false;
if (!mojo::Equals(this->organization, other_struct.organization))
return false;
if (!mojo::Equals(this->recipient, other_struct.recipient))
return false;
if (!mojo::Equals(this->phone, other_struct.phone))
return false;
return true;
}
template <typename T, PaymentAddress::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.country < rhs.country)
return true;
if (rhs.country < lhs.country)
return false;
if (lhs.address_line < rhs.address_line)
return true;
if (rhs.address_line < lhs.address_line)
return false;
if (lhs.region < rhs.region)
return true;
if (rhs.region < lhs.region)
return false;
if (lhs.city < rhs.city)
return true;
if (rhs.city < lhs.city)
return false;
if (lhs.dependent_locality < rhs.dependent_locality)
return true;
if (rhs.dependent_locality < lhs.dependent_locality)
return false;
if (lhs.postal_code < rhs.postal_code)
return true;
if (rhs.postal_code < lhs.postal_code)
return false;
if (lhs.sorting_code < rhs.sorting_code)
return true;
if (rhs.sorting_code < lhs.sorting_code)
return false;
if (lhs.organization < rhs.organization)
return true;
if (rhs.organization < lhs.organization)
return false;
if (lhs.recipient < rhs.recipient)
return true;
if (rhs.recipient < lhs.recipient)
return false;
if (lhs.phone < rhs.phone)
return true;
if (rhs.phone < lhs.phone)
return false;
return false;
}
template <typename StructPtrType>
PaymentCurrencyAmountPtr PaymentCurrencyAmount::Clone() const {
return New(
mojo::Clone(currency),
mojo::Clone(value)
);
}
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>*>
bool PaymentCurrencyAmount::Equals(const T& other_struct) const {
if (!mojo::Equals(this->currency, other_struct.currency))
return false;
if (!mojo::Equals(this->value, other_struct.value))
return false;
return true;
}
template <typename T, PaymentCurrencyAmount::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.currency < rhs.currency)
return true;
if (rhs.currency < lhs.currency)
return false;
if (lhs.value < rhs.value)
return true;
if (rhs.value < lhs.value)
return false;
return false;
}
template <typename StructPtrType>
PaymentValidationErrorsPtr PaymentValidationErrors::Clone() const {
return New(
mojo::Clone(error),
mojo::Clone(payer),
mojo::Clone(shipping_address)
);
}
template <typename T, PaymentValidationErrors::EnableIfSame<T>*>
bool PaymentValidationErrors::Equals(const T& other_struct) const {
if (!mojo::Equals(this->error, other_struct.error))
return false;
if (!mojo::Equals(this->payer, other_struct.payer))
return false;
if (!mojo::Equals(this->shipping_address, other_struct.shipping_address))
return false;
return true;
}
template <typename T, PaymentValidationErrors::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.error < rhs.error)
return true;
if (rhs.error < lhs.error)
return false;
if (lhs.payer < rhs.payer)
return true;
if (rhs.payer < lhs.payer)
return false;
if (lhs.shipping_address < rhs.shipping_address)
return true;
if (rhs.shipping_address < lhs.shipping_address)
return false;
return false;
}
template <typename StructPtrType>
PayerErrorsPtr PayerErrors::Clone() const {
return New(
mojo::Clone(email),
mojo::Clone(name),
mojo::Clone(phone)
);
}
template <typename T, PayerErrors::EnableIfSame<T>*>
bool PayerErrors::Equals(const T& other_struct) const {
if (!mojo::Equals(this->email, other_struct.email))
return false;
if (!mojo::Equals(this->name, other_struct.name))
return false;
if (!mojo::Equals(this->phone, other_struct.phone))
return false;
return true;
}
template <typename T, PayerErrors::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.email < rhs.email)
return true;
if (rhs.email < lhs.email)
return false;
if (lhs.name < rhs.name)
return true;
if (rhs.name < lhs.name)
return false;
if (lhs.phone < rhs.phone)
return true;
if (rhs.phone < lhs.phone)
return false;
return false;
}
template <typename StructPtrType>
AddressErrorsPtr AddressErrors::Clone() const {
return New(
mojo::Clone(address_line),
mojo::Clone(city),
mojo::Clone(country),
mojo::Clone(dependent_locality),
mojo::Clone(organization),
mojo::Clone(phone),
mojo::Clone(postal_code),
mojo::Clone(recipient),
mojo::Clone(region),
mojo::Clone(sorting_code)
);
}
template <typename T, AddressErrors::EnableIfSame<T>*>
bool AddressErrors::Equals(const T& other_struct) const {
if (!mojo::Equals(this->address_line, other_struct.address_line))
return false;
if (!mojo::Equals(this->city, other_struct.city))
return false;
if (!mojo::Equals(this->country, other_struct.country))
return false;
if (!mojo::Equals(this->dependent_locality, other_struct.dependent_locality))
return false;
if (!mojo::Equals(this->organization, other_struct.organization))
return false;
if (!mojo::Equals(this->phone, other_struct.phone))
return false;
if (!mojo::Equals(this->postal_code, other_struct.postal_code))
return false;
if (!mojo::Equals(this->recipient, other_struct.recipient))
return false;
if (!mojo::Equals(this->region, other_struct.region))
return false;
if (!mojo::Equals(this->sorting_code, other_struct.sorting_code))
return false;
return true;
}
template <typename T, AddressErrors::EnableIfSame<T>*>
bool operator<(const T& lhs, const T& rhs) {
if (lhs.address_line < rhs.address_line)
return true;
if (rhs.address_line < lhs.address_line)
return false;
if (lhs.city < rhs.city)
return true;
if (rhs.city < lhs.city)
return false;
if (lhs.country < rhs.country)
return true;
if (rhs.country < lhs.country)
return false;
if (lhs.dependent_locality < rhs.dependent_locality)
return true;
if (rhs.dependent_locality < lhs.dependent_locality)
return false;
if (lhs.organization < rhs.organization)
return true;
if (rhs.organization < lhs.organization)
return false;
if (lhs.phone < rhs.phone)
return true;
if (rhs.phone < lhs.phone)
return false;
if (lhs.postal_code < rhs.postal_code)
return true;
if (rhs.postal_code < lhs.postal_code)
return false;
if (lhs.recipient < rhs.recipient)
return true;
if (rhs.recipient < lhs.recipient)
return false;
if (lhs.region < rhs.region)
return true;
if (rhs.region < lhs.region)
return false;
if (lhs.sorting_code < rhs.sorting_code)
return true;
if (rhs.sorting_code < lhs.sorting_code)
return false;
return false;
}
} // payments::mojom
namespace mojo {
template <>
struct StructTraits<::payments::mojom::PaymentAddress::DataView,
::payments::mojom::PaymentAddressPtr> {
static bool IsNull(const ::payments::mojom::PaymentAddressPtr& input) { return !input; }
static void SetToNull(::payments::mojom::PaymentAddressPtr* output) { output->reset(); }
static const decltype(::payments::mojom::PaymentAddress::country)& country(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->country;
}
static const decltype(::payments::mojom::PaymentAddress::address_line)& address_line(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->address_line;
}
static const decltype(::payments::mojom::PaymentAddress::region)& region(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->region;
}
static const decltype(::payments::mojom::PaymentAddress::city)& city(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->city;
}
static const decltype(::payments::mojom::PaymentAddress::dependent_locality)& dependent_locality(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->dependent_locality;
}
static const decltype(::payments::mojom::PaymentAddress::postal_code)& postal_code(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->postal_code;
}
static const decltype(::payments::mojom::PaymentAddress::sorting_code)& sorting_code(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->sorting_code;
}
static const decltype(::payments::mojom::PaymentAddress::organization)& organization(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->organization;
}
static const decltype(::payments::mojom::PaymentAddress::recipient)& recipient(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->recipient;
}
static const decltype(::payments::mojom::PaymentAddress::phone)& phone(
const ::payments::mojom::PaymentAddressPtr& input) {
return input->phone;
}
static bool Read(::payments::mojom::PaymentAddress::DataView input, ::payments::mojom::PaymentAddressPtr* output);
};
template <>
struct StructTraits<::payments::mojom::PaymentCurrencyAmount::DataView,
::payments::mojom::PaymentCurrencyAmountPtr> {
static bool IsNull(const ::payments::mojom::PaymentCurrencyAmountPtr& input) { return !input; }
static void SetToNull(::payments::mojom::PaymentCurrencyAmountPtr* output) { output->reset(); }
static const decltype(::payments::mojom::PaymentCurrencyAmount::currency)& currency(
const ::payments::mojom::PaymentCurrencyAmountPtr& input) {
return input->currency;
}
static const decltype(::payments::mojom::PaymentCurrencyAmount::value)& value(
const ::payments::mojom::PaymentCurrencyAmountPtr& input) {
return input->value;
}
static bool Read(::payments::mojom::PaymentCurrencyAmount::DataView input, ::payments::mojom::PaymentCurrencyAmountPtr* output);
};
template <>
struct StructTraits<::payments::mojom::PaymentValidationErrors::DataView,
::payments::mojom::PaymentValidationErrorsPtr> {
static bool IsNull(const ::payments::mojom::PaymentValidationErrorsPtr& input) { return !input; }
static void SetToNull(::payments::mojom::PaymentValidationErrorsPtr* output) { output->reset(); }
static const decltype(::payments::mojom::PaymentValidationErrors::error)& error(
const ::payments::mojom::PaymentValidationErrorsPtr& input) {
return input->error;
}
static const decltype(::payments::mojom::PaymentValidationErrors::payer)& payer(
const ::payments::mojom::PaymentValidationErrorsPtr& input) {
return input->payer;
}
static const decltype(::payments::mojom::PaymentValidationErrors::shipping_address)& shipping_address(
const ::payments::mojom::PaymentValidationErrorsPtr& input) {
return input->shipping_address;
}
static bool Read(::payments::mojom::PaymentValidationErrors::DataView input, ::payments::mojom::PaymentValidationErrorsPtr* output);
};
template <>
struct StructTraits<::payments::mojom::PayerErrors::DataView,
::payments::mojom::PayerErrorsPtr> {
static bool IsNull(const ::payments::mojom::PayerErrorsPtr& input) { return !input; }
static void SetToNull(::payments::mojom::PayerErrorsPtr* output) { output->reset(); }
static const decltype(::payments::mojom::PayerErrors::email)& email(
const ::payments::mojom::PayerErrorsPtr& input) {
return input->email;
}
static const decltype(::payments::mojom::PayerErrors::name)& name(
const ::payments::mojom::PayerErrorsPtr& input) {
return input->name;
}
static const decltype(::payments::mojom::PayerErrors::phone)& phone(
const ::payments::mojom::PayerErrorsPtr& input) {
return input->phone;
}
static bool Read(::payments::mojom::PayerErrors::DataView input, ::payments::mojom::PayerErrorsPtr* output);
};
template <>
struct StructTraits<::payments::mojom::AddressErrors::DataView,
::payments::mojom::AddressErrorsPtr> {
static bool IsNull(const ::payments::mojom::AddressErrorsPtr& input) { return !input; }
static void SetToNull(::payments::mojom::AddressErrorsPtr* output) { output->reset(); }
static const decltype(::payments::mojom::AddressErrors::address_line)& address_line(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->address_line;
}
static const decltype(::payments::mojom::AddressErrors::city)& city(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->city;
}
static const decltype(::payments::mojom::AddressErrors::country)& country(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->country;
}
static const decltype(::payments::mojom::AddressErrors::dependent_locality)& dependent_locality(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->dependent_locality;
}
static const decltype(::payments::mojom::AddressErrors::organization)& organization(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->organization;
}
static const decltype(::payments::mojom::AddressErrors::phone)& phone(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->phone;
}
static const decltype(::payments::mojom::AddressErrors::postal_code)& postal_code(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->postal_code;
}
static const decltype(::payments::mojom::AddressErrors::recipient)& recipient(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->recipient;
}
static const decltype(::payments::mojom::AddressErrors::region)& region(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->region;
}
static const decltype(::payments::mojom::AddressErrors::sorting_code)& sorting_code(
const ::payments::mojom::AddressErrorsPtr& input) {
return input->sorting_code;
}
static bool Read(::payments::mojom::AddressErrors::DataView input, ::payments::mojom::AddressErrorsPtr* output);
};
} // namespace mojo
#endif // COMPONENTS_PAYMENTS_MOJOM_PAYMENT_REQUEST_DATA_MOJOM_H_
/* Metadata comment
eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDEzNzYsICJlbmQiOiAxMzk3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5QYXltZW50Q3VycmVuY3lB
bW91bnQifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5j
aG9yX2RlZmluZXMiLCAiYmVnaW4iOiA1NDMxLCAiZW5kIjogNTQzOSwgInZuYW1lIjogeyJsYW5n
dWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rl
c2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20u
UGF5bWVudEN1cnJlbmN5QW1vdW50LmN1cnJlbmN5In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogNTUyMSwgImVu
ZCI6IDU1MjYsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheW1lbnRDdXJyZW5jeUFtb3VudC52YWx1ZSJ9LCAi
ZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5l
cyIsICJiZWdpbiI6IDY1ODQsICJlbmQiOiA2NTk1LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1v
am9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hy
b21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5QYXllckVycm9y
cyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDEwMzk0LCAiZW5kIjogMTAzOTksICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBh
eWVyRXJyb3JzLmVtYWlsIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0
eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTA0NzAsICJlbmQiOiAxMDQ3NCwgInZu
YW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAicGF5
bWVudHMubW9qb20uUGF5ZXJFcnJvcnMubmFtZSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2Vu
ZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDEwNTQ2LCAiZW5k
IjogMTA1NTEsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2ln
bmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheWVyRXJyb3JzLnBob25lIn0sICJlZGdlIjogIiUv
a3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2lu
IjogMTE1NzQsICJlbmQiOiAxMTU4OCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJj
b3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3Ny
Yy8vbWFpbiIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5bWVudEFkZHJlc3MifSwg
ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmlu
ZXMiLCAiYmVnaW4iOiAxNTcxMCwgImVuZCI6IDE1NzE3LCAidm5hbWUiOiB7Imxhbmd1YWdlIjog
Im1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gv
Y2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5QYXltZW50
QWRkcmVzcy5jb3VudHJ5In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0
eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTU4MTIsICJlbmQiOiAxNTgyNCwgInZu
YW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAicGF5
bWVudHMubW9qb20uUGF5bWVudEFkZHJlc3MuYWRkcmVzc19saW5lIn0sICJlZGdlIjogIiUva3l0
aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjog
MTU5MDAsICJlbmQiOiAxNTkwNiwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8v
bWFpbiIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5bWVudEFkZHJlc3MucmVnaW9u
In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9k
ZWZpbmVzIiwgImJlZ2luIjogMTU5ODAsICJlbmQiOiAxNTk4NCwgInZuYW1lIjogeyJsYW5ndWFn
ZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2Vh
cmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5
bWVudEFkZHJlc3MuY2l0eSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6IDE2MDcyLCAiZW5kIjogMTYwOTAsICJ2
bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInBh
eW1lbnRzLm1vam9tLlBheW1lbnRBZGRyZXNzLmRlcGVuZGVudF9sb2NhbGl0eSJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDE2MTcxLCAiZW5kIjogMTYxODIsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLlBheW1lbnRBZGRyZXNz
LnBvc3RhbF9jb2RlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTYyNjQsICJlbmQiOiAxNjI3NiwgInZuYW1l
IjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
LmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAicGF5bWVu
dHMubW9qb20uUGF5bWVudEFkZHJlc3Muc29ydGluZ19jb2RlIn0sICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTYz
NTgsICJlbmQiOiAxNjM3MCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFp
biIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5bWVudEFkZHJlc3Mub3JnYW5pemF0
aW9uIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hv
cl9kZWZpbmVzIiwgImJlZ2luIjogMTY0NDksICJlbmQiOiAxNjQ1OCwgInZuYW1lIjogeyJsYW5n
dWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rl
c2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20u
UGF5bWVudEFkZHJlc3MucmVjaXBpZW50In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0
ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMTY1MzMsICJlbmQiOiAx
NjUzOCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0u
Z29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1
cmUiOiAicGF5bWVudHMubW9qb20uUGF5bWVudEFkZHJlc3MucGhvbmUifSwgImVkZ2UiOiAiJS9r
eXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4i
OiAxNzU4MCwgImVuZCI6IDE3NjAzLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNv
cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3Jj
Ly9tYWluIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5QYXltZW50VmFsaWRhdGlvbkVy
cm9ycyJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNo
b3JfZGVmaW5lcyIsICJiZWdpbiI6IDIxODYzLCAiZW5kIjogMjE4NjgsICJ2bmFtZSI6IHsibGFu
Z3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29k
ZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9t
LlBheW1lbnRWYWxpZGF0aW9uRXJyb3JzLmVycm9yIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
ZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjE5NTUsICJl
bmQiOiAyMTk2MCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
aWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uUGF5bWVudFZhbGlkYXRpb25FcnJvcnMucGF5ZXIi
fSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2Rl
ZmluZXMiLCAiYmVnaW4iOiAyMjA2MCwgImVuZCI6IDIyMDc2LCAidm5hbWUiOiB7Imxhbmd1YWdl
IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5QYXlt
ZW50VmFsaWRhdGlvbkVycm9ycy5zaGlwcGluZ19hZGRyZXNzIn0sICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjMx
NDQsICJlbmQiOiAyMzE1NywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMi
OiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFp
biIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uQWRkcmVzc0Vycm9ycyJ9LCAiZWRnZSI6
ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
ZWdpbiI6IDI3Mjg2LCAiZW5kIjogMjcyOTgsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLkFkZHJlc3NFcnJvcnMu
YWRkcmVzc19saW5lIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjczNzEsICJlbmQiOiAyNzM3NSwgInZuYW1l
IjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNl
LmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAicGF5bWVu
dHMubW9qb20uQWRkcmVzc0Vycm9ycy5jaXR5In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5l
cmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjc0NTEsICJlbmQi
OiAyNzQ1OCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21p
dW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWdu
YXR1cmUiOiAicGF5bWVudHMubW9qb20uQWRkcmVzc0Vycm9ycy5jb3VudHJ5In0sICJlZGdlIjog
IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJl
Z2luIjogMjc1NDUsICJlbmQiOiAyNzU2MywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIs
ICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVt
L3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAicGF5bWVudHMubW9qb20uQWRkcmVzc0Vycm9ycy5k
ZXBlbmRlbnRfbG9jYWxpdHkifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7
InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAyNzY0NCwgImVuZCI6IDI3NjU2LCAi
dm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz
b3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJw
YXltZW50cy5tb2pvbS5BZGRyZXNzRXJyb3JzLm9yZ2FuaXphdGlvbiJ9LCAiZWRnZSI6ICIlL2t5
dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJiZWdpbiI6
IDI3NzMwLCAiZW5kIjogMjc3MzUsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29y
cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMv
L21haW4iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLkFkZHJlc3NFcnJvcnMucGhvbmUi
fSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2Rl
ZmluZXMiLCAiYmVnaW4iOiAyNzgxNSwgImVuZCI6IDI3ODI2LCAidm5hbWUiOiB7Imxhbmd1YWdl
IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5BZGRy
ZXNzRXJyb3JzLnBvc3RhbF9jb2RlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMi
fSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMjc5MDQsICJlbmQiOiAyNzkx
MywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29v
Z2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUi
OiAicGF5bWVudHMubW9qb20uQWRkcmVzc0Vycm9ycy5yZWNpcGllbnQifSwgImVkZ2UiOiAiJS9r
eXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4i
OiAyNzk4OCwgImVuZCI6IDI3OTk0LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwgImNv
cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0vc3Jj
Ly9tYWluIiwgInNpZ25hdHVyZSI6ICJwYXltZW50cy5tb2pvbS5BZGRyZXNzRXJyb3JzLnJlZ2lv
biJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
ZGVmaW5lcyIsICJiZWdpbiI6IDI4MDc1LCAiZW5kIjogMjgwODcsICJ2bmFtZSI6IHsibGFuZ3Vh
Z2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNl
YXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogInBheW1lbnRzLm1vam9tLkFk
ZHJlc3NFcnJvcnMuc29ydGluZ19jb2RlIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0
ZXMifV19
*/