// Code generated by protoc-gen-jsonshim. DO NOT EDIT.
package v1alpha1

import (
	bytes "bytes"
	jsonpb "github.com/golang/protobuf/jsonpb"
)

// MarshalJSON is a custom marshaler for MeshConfig
func (this *MeshConfig) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig
func (this *MeshConfig) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_OutboundTrafficPolicy
func (this *MeshConfig_OutboundTrafficPolicy) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_OutboundTrafficPolicy
func (this *MeshConfig_OutboundTrafficPolicy) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_InboundTrafficPolicy
func (this *MeshConfig_InboundTrafficPolicy) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_InboundTrafficPolicy
func (this *MeshConfig_InboundTrafficPolicy) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_CertificateData
func (this *MeshConfig_CertificateData) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_CertificateData
func (this *MeshConfig_CertificateData) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ServiceSettings
func (this *MeshConfig_ServiceSettings) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ServiceSettings
func (this *MeshConfig_ServiceSettings) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ServiceSettings_Settings
func (this *MeshConfig_ServiceSettings_Settings) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ServiceSettings_Settings
func (this *MeshConfig_ServiceSettings_Settings) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ServiceScopeConfigs
func (this *MeshConfig_ServiceScopeConfigs) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ServiceScopeConfigs
func (this *MeshConfig_ServiceScopeConfigs) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_CA
func (this *MeshConfig_CA) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_CA
func (this *MeshConfig_CA) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider
func (this *MeshConfig_ExtensionProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider
func (this *MeshConfig_ExtensionProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationRequestBody
func (this *MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationRequestBody) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationRequestBody
func (this *MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationRequestBody) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationHttpProvider
func (this *MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationHttpProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationHttpProvider
func (this *MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationHttpProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationGrpcProvider
func (this *MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationGrpcProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationGrpcProvider
func (this *MeshConfig_ExtensionProvider_EnvoyExternalAuthorizationGrpcProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_ZipkinTracingProvider
func (this *MeshConfig_ExtensionProvider_ZipkinTracingProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_ZipkinTracingProvider
func (this *MeshConfig_ExtensionProvider_ZipkinTracingProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_LightstepTracingProvider
func (this *MeshConfig_ExtensionProvider_LightstepTracingProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_LightstepTracingProvider
func (this *MeshConfig_ExtensionProvider_LightstepTracingProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_DatadogTracingProvider
func (this *MeshConfig_ExtensionProvider_DatadogTracingProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_DatadogTracingProvider
func (this *MeshConfig_ExtensionProvider_DatadogTracingProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_SkyWalkingTracingProvider
func (this *MeshConfig_ExtensionProvider_SkyWalkingTracingProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_SkyWalkingTracingProvider
func (this *MeshConfig_ExtensionProvider_SkyWalkingTracingProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_StackdriverProvider
func (this *MeshConfig_ExtensionProvider_StackdriverProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_StackdriverProvider
func (this *MeshConfig_ExtensionProvider_StackdriverProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_StackdriverProvider_Logging
func (this *MeshConfig_ExtensionProvider_StackdriverProvider_Logging) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_StackdriverProvider_Logging
func (this *MeshConfig_ExtensionProvider_StackdriverProvider_Logging) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider
func (this *MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider
func (this *MeshConfig_ExtensionProvider_OpenCensusAgentTracingProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_PrometheusMetricsProvider
func (this *MeshConfig_ExtensionProvider_PrometheusMetricsProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_PrometheusMetricsProvider
func (this *MeshConfig_ExtensionProvider_PrometheusMetricsProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider
func (this *MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider
func (this *MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider_LogFormat
func (this *MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider_LogFormat) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider_LogFormat
func (this *MeshConfig_ExtensionProvider_EnvoyFileAccessLogProvider_LogFormat) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_EnvoyHttpGrpcV3LogProvider
func (this *MeshConfig_ExtensionProvider_EnvoyHttpGrpcV3LogProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_EnvoyHttpGrpcV3LogProvider
func (this *MeshConfig_ExtensionProvider_EnvoyHttpGrpcV3LogProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_EnvoyTcpGrpcV3LogProvider
func (this *MeshConfig_ExtensionProvider_EnvoyTcpGrpcV3LogProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_EnvoyTcpGrpcV3LogProvider
func (this *MeshConfig_ExtensionProvider_EnvoyTcpGrpcV3LogProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider
func (this *MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider
func (this *MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider_LogFormat
func (this *MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider_LogFormat) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider_LogFormat
func (this *MeshConfig_ExtensionProvider_EnvoyOpenTelemetryLogProvider_LogFormat) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider
func (this *MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider
func (this *MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler
func (this *MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler
func (this *MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler_DynatraceApi
func (this *MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler_DynatraceApi) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler_DynatraceApi
func (this *MeshConfig_ExtensionProvider_OpenTelemetryTracingProvider_DynatraceSampler_DynatraceApi) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_SDSProvider
func (this *MeshConfig_ExtensionProvider_SDSProvider) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_SDSProvider
func (this *MeshConfig_ExtensionProvider_SDSProvider) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_HttpService
func (this *MeshConfig_ExtensionProvider_HttpService) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_HttpService
func (this *MeshConfig_ExtensionProvider_HttpService) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_HttpHeader
func (this *MeshConfig_ExtensionProvider_HttpHeader) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_HttpHeader
func (this *MeshConfig_ExtensionProvider_HttpHeader) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_ResourceDetectors
func (this *MeshConfig_ExtensionProvider_ResourceDetectors) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_ResourceDetectors
func (this *MeshConfig_ExtensionProvider_ResourceDetectors) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_ResourceDetectors_EnvironmentResourceDetector
func (this *MeshConfig_ExtensionProvider_ResourceDetectors_EnvironmentResourceDetector) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_ResourceDetectors_EnvironmentResourceDetector
func (this *MeshConfig_ExtensionProvider_ResourceDetectors_EnvironmentResourceDetector) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_ResourceDetectors_DynatraceResourceDetector
func (this *MeshConfig_ExtensionProvider_ResourceDetectors_DynatraceResourceDetector) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_ResourceDetectors_DynatraceResourceDetector
func (this *MeshConfig_ExtensionProvider_ResourceDetectors_DynatraceResourceDetector) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ExtensionProvider_GrpcService
func (this *MeshConfig_ExtensionProvider_GrpcService) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ExtensionProvider_GrpcService
func (this *MeshConfig_ExtensionProvider_GrpcService) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_DefaultProviders
func (this *MeshConfig_DefaultProviders) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_DefaultProviders
func (this *MeshConfig_DefaultProviders) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_ProxyPathNormalization
func (this *MeshConfig_ProxyPathNormalization) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_ProxyPathNormalization
func (this *MeshConfig_ProxyPathNormalization) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for MeshConfig_TLSConfig
func (this *MeshConfig_TLSConfig) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for MeshConfig_TLSConfig
func (this *MeshConfig_TLSConfig) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for LabelSelector
func (this *LabelSelector) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for LabelSelector
func (this *LabelSelector) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for LabelSelectorRequirement
func (this *LabelSelectorRequirement) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for LabelSelectorRequirement
func (this *LabelSelectorRequirement) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for ConfigSource
func (this *ConfigSource) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for ConfigSource
func (this *ConfigSource) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

// MarshalJSON is a custom marshaler for Certificate
func (this *Certificate) MarshalJSON() ([]byte, error) {
	str, err := ConfigMarshaler.MarshalToString(this)
	return []byte(str), err
}

// UnmarshalJSON is a custom unmarshaler for Certificate
func (this *Certificate) UnmarshalJSON(b []byte) error {
	return ConfigUnmarshaler.Unmarshal(bytes.NewReader(b), this)
}

var (
	ConfigMarshaler   = &jsonpb.Marshaler{}
	ConfigUnmarshaler = &jsonpb.Unmarshaler{AllowUnknownFields: true}
)
