//go:build !ignore_autogenerated

// Code generated by controller-gen. DO NOT EDIT.

package v1alpha1

import (
	"encoding/json"
	"k8s.io/apimachinery/pkg/runtime"
	"k8s.io/apimachinery/pkg/util/intstr"
)

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AnalysisRun) DeepCopyInto(out *AnalysisRun) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AnalysisRun.
func (in *AnalysisRun) DeepCopy() *AnalysisRun {
	if in == nil {
		return nil
	}
	out := new(AnalysisRun)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *AnalysisRun) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AnalysisRunList) DeepCopyInto(out *AnalysisRunList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]AnalysisRun, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AnalysisRunList.
func (in *AnalysisRunList) DeepCopy() *AnalysisRunList {
	if in == nil {
		return nil
	}
	out := new(AnalysisRunList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *AnalysisRunList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AnalysisRunSpec) DeepCopyInto(out *AnalysisRunSpec) {
	*out = *in
	if in.Metrics != nil {
		in, out := &in.Metrics, &out.Metrics
		*out = make([]Metric, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Args != nil {
		in, out := &in.Args, &out.Args
		*out = make([]Argument, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.DryRun != nil {
		in, out := &in.DryRun, &out.DryRun
		*out = make([]DryRun, len(*in))
		copy(*out, *in)
	}
	if in.MeasurementRetention != nil {
		in, out := &in.MeasurementRetention, &out.MeasurementRetention
		*out = make([]MeasurementRetention, len(*in))
		copy(*out, *in)
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AnalysisRunSpec.
func (in *AnalysisRunSpec) DeepCopy() *AnalysisRunSpec {
	if in == nil {
		return nil
	}
	out := new(AnalysisRunSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AnalysisRunStatus) DeepCopyInto(out *AnalysisRunStatus) {
	*out = *in
	if in.MetricResults != nil {
		in, out := &in.MetricResults, &out.MetricResults
		*out = make([]MetricResult, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.StartedAt != nil {
		in, out := &in.StartedAt, &out.StartedAt
		*out = (*in).DeepCopy()
	}
	out.RunSummary = in.RunSummary
	if in.DryRunSummary != nil {
		in, out := &in.DryRunSummary, &out.DryRunSummary
		*out = new(RunSummary)
		**out = **in
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AnalysisRunStatus.
func (in *AnalysisRunStatus) DeepCopy() *AnalysisRunStatus {
	if in == nil {
		return nil
	}
	out := new(AnalysisRunStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AnalysisTemplate) DeepCopyInto(out *AnalysisTemplate) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AnalysisTemplate.
func (in *AnalysisTemplate) DeepCopy() *AnalysisTemplate {
	if in == nil {
		return nil
	}
	out := new(AnalysisTemplate)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *AnalysisTemplate) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AnalysisTemplateList) DeepCopyInto(out *AnalysisTemplateList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]AnalysisTemplate, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AnalysisTemplateList.
func (in *AnalysisTemplateList) DeepCopy() *AnalysisTemplateList {
	if in == nil {
		return nil
	}
	out := new(AnalysisTemplateList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *AnalysisTemplateList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AnalysisTemplateSpec) DeepCopyInto(out *AnalysisTemplateSpec) {
	*out = *in
	if in.Metrics != nil {
		in, out := &in.Metrics, &out.Metrics
		*out = make([]Metric, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Args != nil {
		in, out := &in.Args, &out.Args
		*out = make([]Argument, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.DryRun != nil {
		in, out := &in.DryRun, &out.DryRun
		*out = make([]DryRun, len(*in))
		copy(*out, *in)
	}
	if in.MeasurementRetention != nil {
		in, out := &in.MeasurementRetention, &out.MeasurementRetention
		*out = make([]MeasurementRetention, len(*in))
		copy(*out, *in)
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AnalysisTemplateSpec.
func (in *AnalysisTemplateSpec) DeepCopy() *AnalysisTemplateSpec {
	if in == nil {
		return nil
	}
	out := new(AnalysisTemplateSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Argument) DeepCopyInto(out *Argument) {
	*out = *in
	if in.Value != nil {
		in, out := &in.Value, &out.Value
		*out = new(string)
		**out = **in
	}
	if in.ValueFrom != nil {
		in, out := &in.ValueFrom, &out.ValueFrom
		*out = new(ValueFrom)
		(*in).DeepCopyInto(*out)
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Argument.
func (in *Argument) DeepCopy() *Argument {
	if in == nil {
		return nil
	}
	out := new(Argument)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Authentication) DeepCopyInto(out *Authentication) {
	*out = *in
	out.Sigv4 = in.Sigv4
	in.OAuth2.DeepCopyInto(&out.OAuth2)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Authentication.
func (in *Authentication) DeepCopy() *Authentication {
	if in == nil {
		return nil
	}
	out := new(Authentication)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CloudWatchMetric) DeepCopyInto(out *CloudWatchMetric) {
	*out = *in
	if in.MetricDataQueries != nil {
		in, out := &in.MetricDataQueries, &out.MetricDataQueries
		*out = make([]CloudWatchMetricDataQuery, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudWatchMetric.
func (in *CloudWatchMetric) DeepCopy() *CloudWatchMetric {
	if in == nil {
		return nil
	}
	out := new(CloudWatchMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CloudWatchMetricDataQuery) DeepCopyInto(out *CloudWatchMetricDataQuery) {
	*out = *in
	if in.Expression != nil {
		in, out := &in.Expression, &out.Expression
		*out = new(string)
		**out = **in
	}
	if in.Label != nil {
		in, out := &in.Label, &out.Label
		*out = new(string)
		**out = **in
	}
	if in.MetricStat != nil {
		in, out := &in.MetricStat, &out.MetricStat
		*out = new(CloudWatchMetricStat)
		(*in).DeepCopyInto(*out)
	}
	if in.Period != nil {
		in, out := &in.Period, &out.Period
		*out = new(intstr.IntOrString)
		**out = **in
	}
	if in.ReturnData != nil {
		in, out := &in.ReturnData, &out.ReturnData
		*out = new(bool)
		**out = **in
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudWatchMetricDataQuery.
func (in *CloudWatchMetricDataQuery) DeepCopy() *CloudWatchMetricDataQuery {
	if in == nil {
		return nil
	}
	out := new(CloudWatchMetricDataQuery)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CloudWatchMetricStat) DeepCopyInto(out *CloudWatchMetricStat) {
	*out = *in
	in.Metric.DeepCopyInto(&out.Metric)
	out.Period = in.Period
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudWatchMetricStat.
func (in *CloudWatchMetricStat) DeepCopy() *CloudWatchMetricStat {
	if in == nil {
		return nil
	}
	out := new(CloudWatchMetricStat)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CloudWatchMetricStatMetric) DeepCopyInto(out *CloudWatchMetricStatMetric) {
	*out = *in
	if in.Dimensions != nil {
		in, out := &in.Dimensions, &out.Dimensions
		*out = make([]CloudWatchMetricStatMetricDimension, len(*in))
		copy(*out, *in)
	}
	if in.Namespace != nil {
		in, out := &in.Namespace, &out.Namespace
		*out = new(string)
		**out = **in
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudWatchMetricStatMetric.
func (in *CloudWatchMetricStatMetric) DeepCopy() *CloudWatchMetricStatMetric {
	if in == nil {
		return nil
	}
	out := new(CloudWatchMetricStatMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CloudWatchMetricStatMetricDimension) DeepCopyInto(out *CloudWatchMetricStatMetricDimension) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudWatchMetricStatMetricDimension.
func (in *CloudWatchMetricStatMetricDimension) DeepCopy() *CloudWatchMetricStatMetricDimension {
	if in == nil {
		return nil
	}
	out := new(CloudWatchMetricStatMetricDimension)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterAnalysisTemplate) DeepCopyInto(out *ClusterAnalysisTemplate) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterAnalysisTemplate.
func (in *ClusterAnalysisTemplate) DeepCopy() *ClusterAnalysisTemplate {
	if in == nil {
		return nil
	}
	out := new(ClusterAnalysisTemplate)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *ClusterAnalysisTemplate) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterAnalysisTemplateList) DeepCopyInto(out *ClusterAnalysisTemplateList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]ClusterAnalysisTemplate, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterAnalysisTemplateList.
func (in *ClusterAnalysisTemplateList) DeepCopy() *ClusterAnalysisTemplateList {
	if in == nil {
		return nil
	}
	out := new(ClusterAnalysisTemplateList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *ClusterAnalysisTemplateList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DatadogMetric) DeepCopyInto(out *DatadogMetric) {
	*out = *in
	if in.Queries != nil {
		in, out := &in.Queries, &out.Queries
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatadogMetric.
func (in *DatadogMetric) DeepCopy() *DatadogMetric {
	if in == nil {
		return nil
	}
	out := new(DatadogMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DryRun) DeepCopyInto(out *DryRun) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DryRun.
func (in *DryRun) DeepCopy() *DryRun {
	if in == nil {
		return nil
	}
	out := new(DryRun)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FieldRef) DeepCopyInto(out *FieldRef) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FieldRef.
func (in *FieldRef) DeepCopy() *FieldRef {
	if in == nil {
		return nil
	}
	out := new(FieldRef)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *GraphiteMetric) DeepCopyInto(out *GraphiteMetric) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GraphiteMetric.
func (in *GraphiteMetric) DeepCopy() *GraphiteMetric {
	if in == nil {
		return nil
	}
	out := new(GraphiteMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *InfluxdbMetric) DeepCopyInto(out *InfluxdbMetric) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InfluxdbMetric.
func (in *InfluxdbMetric) DeepCopy() *InfluxdbMetric {
	if in == nil {
		return nil
	}
	out := new(InfluxdbMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *JobMetric) DeepCopyInto(out *JobMetric) {
	*out = *in
	in.Metadata.DeepCopyInto(&out.Metadata)
	in.Spec.DeepCopyInto(&out.Spec)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobMetric.
func (in *JobMetric) DeepCopy() *JobMetric {
	if in == nil {
		return nil
	}
	out := new(JobMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KayentaMetric) DeepCopyInto(out *KayentaMetric) {
	*out = *in
	out.Threshold = in.Threshold
	if in.Scopes != nil {
		in, out := &in.Scopes, &out.Scopes
		*out = make([]KayentaScope, len(*in))
		copy(*out, *in)
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KayentaMetric.
func (in *KayentaMetric) DeepCopy() *KayentaMetric {
	if in == nil {
		return nil
	}
	out := new(KayentaMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KayentaScope) DeepCopyInto(out *KayentaScope) {
	*out = *in
	out.ControlScope = in.ControlScope
	out.ExperimentScope = in.ExperimentScope
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KayentaScope.
func (in *KayentaScope) DeepCopy() *KayentaScope {
	if in == nil {
		return nil
	}
	out := new(KayentaScope)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *KayentaThreshold) DeepCopyInto(out *KayentaThreshold) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KayentaThreshold.
func (in *KayentaThreshold) DeepCopy() *KayentaThreshold {
	if in == nil {
		return nil
	}
	out := new(KayentaThreshold)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Measurement) DeepCopyInto(out *Measurement) {
	*out = *in
	if in.StartedAt != nil {
		in, out := &in.StartedAt, &out.StartedAt
		*out = (*in).DeepCopy()
	}
	if in.FinishedAt != nil {
		in, out := &in.FinishedAt, &out.FinishedAt
		*out = (*in).DeepCopy()
	}
	if in.Metadata != nil {
		in, out := &in.Metadata, &out.Metadata
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.ResumeAt != nil {
		in, out := &in.ResumeAt, &out.ResumeAt
		*out = (*in).DeepCopy()
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Measurement.
func (in *Measurement) DeepCopy() *Measurement {
	if in == nil {
		return nil
	}
	out := new(Measurement)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MeasurementRetention) DeepCopyInto(out *MeasurementRetention) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MeasurementRetention.
func (in *MeasurementRetention) DeepCopy() *MeasurementRetention {
	if in == nil {
		return nil
	}
	out := new(MeasurementRetention)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Metric) DeepCopyInto(out *Metric) {
	*out = *in
	if in.Count != nil {
		in, out := &in.Count, &out.Count
		*out = new(intstr.IntOrString)
		**out = **in
	}
	if in.FailureLimit != nil {
		in, out := &in.FailureLimit, &out.FailureLimit
		*out = new(intstr.IntOrString)
		**out = **in
	}
	if in.InconclusiveLimit != nil {
		in, out := &in.InconclusiveLimit, &out.InconclusiveLimit
		*out = new(intstr.IntOrString)
		**out = **in
	}
	if in.ConsecutiveErrorLimit != nil {
		in, out := &in.ConsecutiveErrorLimit, &out.ConsecutiveErrorLimit
		*out = new(intstr.IntOrString)
		**out = **in
	}
	in.Provider.DeepCopyInto(&out.Provider)
	if in.ConsecutiveSuccessLimit != nil {
		in, out := &in.ConsecutiveSuccessLimit, &out.ConsecutiveSuccessLimit
		*out = new(intstr.IntOrString)
		**out = **in
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metric.
func (in *Metric) DeepCopy() *Metric {
	if in == nil {
		return nil
	}
	out := new(Metric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MetricProvider) DeepCopyInto(out *MetricProvider) {
	*out = *in
	if in.Prometheus != nil {
		in, out := &in.Prometheus, &out.Prometheus
		*out = new(PrometheusMetric)
		(*in).DeepCopyInto(*out)
	}
	if in.Kayenta != nil {
		in, out := &in.Kayenta, &out.Kayenta
		*out = new(KayentaMetric)
		(*in).DeepCopyInto(*out)
	}
	if in.Web != nil {
		in, out := &in.Web, &out.Web
		*out = new(WebMetric)
		(*in).DeepCopyInto(*out)
	}
	if in.Datadog != nil {
		in, out := &in.Datadog, &out.Datadog
		*out = new(DatadogMetric)
		(*in).DeepCopyInto(*out)
	}
	if in.Wavefront != nil {
		in, out := &in.Wavefront, &out.Wavefront
		*out = new(WavefrontMetric)
		**out = **in
	}
	if in.NewRelic != nil {
		in, out := &in.NewRelic, &out.NewRelic
		*out = new(NewRelicMetric)
		**out = **in
	}
	if in.Job != nil {
		in, out := &in.Job, &out.Job
		*out = new(JobMetric)
		(*in).DeepCopyInto(*out)
	}
	if in.CloudWatch != nil {
		in, out := &in.CloudWatch, &out.CloudWatch
		*out = new(CloudWatchMetric)
		(*in).DeepCopyInto(*out)
	}
	if in.Graphite != nil {
		in, out := &in.Graphite, &out.Graphite
		*out = new(GraphiteMetric)
		**out = **in
	}
	if in.Influxdb != nil {
		in, out := &in.Influxdb, &out.Influxdb
		*out = new(InfluxdbMetric)
		**out = **in
	}
	if in.SkyWalking != nil {
		in, out := &in.SkyWalking, &out.SkyWalking
		*out = new(SkyWalkingMetric)
		**out = **in
	}
	if in.Plugin != nil {
		in, out := &in.Plugin, &out.Plugin
		*out = make(map[string]json.RawMessage, len(*in))
		for key, val := range *in {
			var outVal []byte
			if val == nil {
				(*out)[key] = nil
			} else {
				inVal := (*in)[key]
				in, out := &inVal, &outVal
				*out = make(json.RawMessage, len(*in))
				copy(*out, *in)
			}
			(*out)[key] = outVal
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricProvider.
func (in *MetricProvider) DeepCopy() *MetricProvider {
	if in == nil {
		return nil
	}
	out := new(MetricProvider)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MetricResult) DeepCopyInto(out *MetricResult) {
	*out = *in
	if in.Measurements != nil {
		in, out := &in.Measurements, &out.Measurements
		*out = make([]Measurement, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Metadata != nil {
		in, out := &in.Metadata, &out.Metadata
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricResult.
func (in *MetricResult) DeepCopy() *MetricResult {
	if in == nil {
		return nil
	}
	out := new(MetricResult)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NewRelicMetric) DeepCopyInto(out *NewRelicMetric) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NewRelicMetric.
func (in *NewRelicMetric) DeepCopy() *NewRelicMetric {
	if in == nil {
		return nil
	}
	out := new(NewRelicMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *OAuth2Config) DeepCopyInto(out *OAuth2Config) {
	*out = *in
	if in.Scopes != nil {
		in, out := &in.Scopes, &out.Scopes
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OAuth2Config.
func (in *OAuth2Config) DeepCopy() *OAuth2Config {
	if in == nil {
		return nil
	}
	out := new(OAuth2Config)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PrometheusMetric) DeepCopyInto(out *PrometheusMetric) {
	*out = *in
	in.Authentication.DeepCopyInto(&out.Authentication)
	if in.Timeout != nil {
		in, out := &in.Timeout, &out.Timeout
		*out = new(int64)
		**out = **in
	}
	if in.Headers != nil {
		in, out := &in.Headers, &out.Headers
		*out = make([]WebMetricHeader, len(*in))
		copy(*out, *in)
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusMetric.
func (in *PrometheusMetric) DeepCopy() *PrometheusMetric {
	if in == nil {
		return nil
	}
	out := new(PrometheusMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RunSummary) DeepCopyInto(out *RunSummary) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RunSummary.
func (in *RunSummary) DeepCopy() *RunSummary {
	if in == nil {
		return nil
	}
	out := new(RunSummary)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ScopeDetail) DeepCopyInto(out *ScopeDetail) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScopeDetail.
func (in *ScopeDetail) DeepCopy() *ScopeDetail {
	if in == nil {
		return nil
	}
	out := new(ScopeDetail)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SecretKeyRef) DeepCopyInto(out *SecretKeyRef) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretKeyRef.
func (in *SecretKeyRef) DeepCopy() *SecretKeyRef {
	if in == nil {
		return nil
	}
	out := new(SecretKeyRef)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Sigv4Config) DeepCopyInto(out *Sigv4Config) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sigv4Config.
func (in *Sigv4Config) DeepCopy() *Sigv4Config {
	if in == nil {
		return nil
	}
	out := new(Sigv4Config)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SkyWalkingMetric) DeepCopyInto(out *SkyWalkingMetric) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SkyWalkingMetric.
func (in *SkyWalkingMetric) DeepCopy() *SkyWalkingMetric {
	if in == nil {
		return nil
	}
	out := new(SkyWalkingMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ValueFrom) DeepCopyInto(out *ValueFrom) {
	*out = *in
	if in.SecretKeyRef != nil {
		in, out := &in.SecretKeyRef, &out.SecretKeyRef
		*out = new(SecretKeyRef)
		**out = **in
	}
	if in.FieldRef != nil {
		in, out := &in.FieldRef, &out.FieldRef
		*out = new(FieldRef)
		**out = **in
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ValueFrom.
func (in *ValueFrom) DeepCopy() *ValueFrom {
	if in == nil {
		return nil
	}
	out := new(ValueFrom)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WavefrontMetric) DeepCopyInto(out *WavefrontMetric) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WavefrontMetric.
func (in *WavefrontMetric) DeepCopy() *WavefrontMetric {
	if in == nil {
		return nil
	}
	out := new(WavefrontMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WebMetric) DeepCopyInto(out *WebMetric) {
	*out = *in
	if in.Headers != nil {
		in, out := &in.Headers, &out.Headers
		*out = make([]WebMetricHeader, len(*in))
		copy(*out, *in)
	}
	if in.JSONBody != nil {
		in, out := &in.JSONBody, &out.JSONBody
		*out = make(json.RawMessage, len(*in))
		copy(*out, *in)
	}
	in.Authentication.DeepCopyInto(&out.Authentication)
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebMetric.
func (in *WebMetric) DeepCopy() *WebMetric {
	if in == nil {
		return nil
	}
	out := new(WebMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WebMetricHeader) DeepCopyInto(out *WebMetricHeader) {
	*out = *in
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebMetricHeader.
func (in *WebMetricHeader) DeepCopy() *WebMetricHeader {
	if in == nil {
		return nil
	}
	out := new(WebMetricHeader)
	in.DeepCopyInto(out)
	return out
}
