//go:build !ignore_autogenerated
// +build !ignore_autogenerated

// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of Cilium

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

package v2

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *AddressPair) DeepEqual(other *AddressPair) bool {
	if other == nil {
		return false
	}

	if in.IPV4 != other.IPV4 {
		return false
	}
	if in.IPV6 != other.IPV6 {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *AddressPairList) DeepEqual(other *AddressPairList) bool {
	if other == nil {
		return false
	}

	if len(*in) != len(*other) {
		return false
	} else {
		for i, inElement := range *in {
			if !inElement.DeepEqual((*other)[i]) {
				return false
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *AllowedIdentityList) DeepEqual(other *AllowedIdentityList) bool {
	if other == nil {
		return false
	}

	if len(*in) != len(*other) {
		return false
	} else {
		for i, inElement := range *in {
			if !inElement.DeepEqual(&(*other)[i]) {
				return false
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *BGPAdvertisement) DeepEqual(other *BGPAdvertisement) bool {
	if other == nil {
		return false
	}

	if in.AdvertisementType != other.AdvertisementType {
		return false
	}
	if (in.Service == nil) != (other.Service == nil) {
		return false
	} else if in.Service != nil {
		if !in.Service.DeepEqual(other.Service) {
			return false
		}
	}

	if (in.Selector == nil) != (other.Selector == nil) {
		return false
	} else if in.Selector != nil {
		if !in.Selector.DeepEqual(other.Selector) {
			return false
		}
	}

	if (in.Attributes == nil) != (other.Attributes == nil) {
		return false
	} else if in.Attributes != nil {
		if !in.Attributes.DeepEqual(other.Attributes) {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *BGPAttributes) DeepEqual(other *BGPAttributes) bool {
	if other == nil {
		return false
	}

	if (in.Communities == nil) != (other.Communities == nil) {
		return false
	} else if in.Communities != nil {
		if !in.Communities.DeepEqual(other.Communities) {
			return false
		}
	}

	if (in.LocalPreference == nil) != (other.LocalPreference == nil) {
		return false
	} else if in.LocalPreference != nil {
		if *in.LocalPreference != *other.LocalPreference {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *BGPAutoDiscovery) DeepEqual(other *BGPAutoDiscovery) bool {
	if other == nil {
		return false
	}

	if in.Mode != other.Mode {
		return false
	}
	if (in.DefaultGateway == nil) != (other.DefaultGateway == nil) {
		return false
	} else if in.DefaultGateway != nil {
		if !in.DefaultGateway.DeepEqual(other.DefaultGateway) {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *BGPCommunities) DeepEqual(other *BGPCommunities) bool {
	if other == nil {
		return false
	}

	if ((in.Standard != nil) && (other.Standard != nil)) || ((in.Standard == nil) != (other.Standard == nil)) {
		in, other := &in.Standard, &other.Standard
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if inElement != (*other)[i] {
					return false
				}
			}
		}
	}

	if ((in.WellKnown != nil) && (other.WellKnown != nil)) || ((in.WellKnown == nil) != (other.WellKnown == nil)) {
		in, other := &in.WellKnown, &other.WellKnown
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if inElement != (*other)[i] {
					return false
				}
			}
		}
	}

	if ((in.Large != nil) && (other.Large != nil)) || ((in.Large == nil) != (other.Large == nil)) {
		in, other := &in.Large, &other.Large
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if inElement != (*other)[i] {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *BGPFamilyRouteCount) DeepEqual(other *BGPFamilyRouteCount) bool {
	if other == nil {
		return false
	}

	if in.Afi != other.Afi {
		return false
	}
	if in.Safi != other.Safi {
		return false
	}
	if (in.Received == nil) != (other.Received == nil) {
		return false
	} else if in.Received != nil {
		if *in.Received != *other.Received {
			return false
		}
	}

	if (in.Advertised == nil) != (other.Advertised == nil) {
		return false
	} else if in.Advertised != nil {
		if *in.Advertised != *other.Advertised {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *BGPServiceOptions) DeepEqual(other *BGPServiceOptions) bool {
	if other == nil {
		return false
	}

	if ((in.Addresses != nil) && (other.Addresses != nil)) || ((in.Addresses == nil) != (other.Addresses == nil)) {
		in, other := &in.Addresses, &other.Addresses
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if inElement != (*other)[i] {
					return false
				}
			}
		}
	}

	if (in.AggregationLengthIPv4 == nil) != (other.AggregationLengthIPv4 == nil) {
		return false
	} else if in.AggregationLengthIPv4 != nil {
		if *in.AggregationLengthIPv4 != *other.AggregationLengthIPv4 {
			return false
		}
	}

	if (in.AggregationLengthIPv6 == nil) != (other.AggregationLengthIPv6 == nil) {
		return false
	} else if in.AggregationLengthIPv6 != nil {
		if *in.AggregationLengthIPv6 != *other.AggregationLengthIPv6 {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPAdvertisement) DeepEqual(other *CiliumBGPAdvertisement) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPAdvertisementSpec) DeepEqual(other *CiliumBGPAdvertisementSpec) bool {
	if other == nil {
		return false
	}

	if ((in.Advertisements != nil) && (other.Advertisements != nil)) || ((in.Advertisements == nil) != (other.Advertisements == nil)) {
		in, other := &in.Advertisements, &other.Advertisements
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPClusterConfig) DeepEqual(other *CiliumBGPClusterConfig) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	if !in.Status.DeepEqual(&other.Status) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPClusterConfigSpec) DeepEqual(other *CiliumBGPClusterConfigSpec) bool {
	if other == nil {
		return false
	}

	if (in.NodeSelector == nil) != (other.NodeSelector == nil) {
		return false
	} else if in.NodeSelector != nil {
		if !in.NodeSelector.DeepEqual(other.NodeSelector) {
			return false
		}
	}

	if ((in.BGPInstances != nil) && (other.BGPInstances != nil)) || ((in.BGPInstances == nil) != (other.BGPInstances == nil)) {
		in, other := &in.BGPInstances, &other.BGPInstances
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPClusterConfigStatus) DeepEqual(other *CiliumBGPClusterConfigStatus) bool {
	if other == nil {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPFamily) DeepEqual(other *CiliumBGPFamily) bool {
	if other == nil {
		return false
	}

	if in.Afi != other.Afi {
		return false
	}
	if in.Safi != other.Safi {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPFamilyWithAdverts) DeepEqual(other *CiliumBGPFamilyWithAdverts) bool {
	if other == nil {
		return false
	}

	if in.CiliumBGPFamily != other.CiliumBGPFamily {
		return false
	}

	if (in.Advertisements == nil) != (other.Advertisements == nil) {
		return false
	} else if in.Advertisements != nil {
		if !in.Advertisements.DeepEqual(other.Advertisements) {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPInstance) DeepEqual(other *CiliumBGPInstance) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if (in.LocalASN == nil) != (other.LocalASN == nil) {
		return false
	} else if in.LocalASN != nil {
		if *in.LocalASN != *other.LocalASN {
			return false
		}
	}

	if (in.LocalPort == nil) != (other.LocalPort == nil) {
		return false
	} else if in.LocalPort != nil {
		if *in.LocalPort != *other.LocalPort {
			return false
		}
	}

	if ((in.Peers != nil) && (other.Peers != nil)) || ((in.Peers == nil) != (other.Peers == nil)) {
		in, other := &in.Peers, &other.Peers
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNeighborGracefulRestart) DeepEqual(other *CiliumBGPNeighborGracefulRestart) bool {
	if other == nil {
		return false
	}

	if in.Enabled != other.Enabled {
		return false
	}
	if (in.RestartTimeSeconds == nil) != (other.RestartTimeSeconds == nil) {
		return false
	} else if in.RestartTimeSeconds != nil {
		if *in.RestartTimeSeconds != *other.RestartTimeSeconds {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodeConfig) DeepEqual(other *CiliumBGPNodeConfig) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	if !in.Status.DeepEqual(&other.Status) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodeConfigInstanceOverride) DeepEqual(other *CiliumBGPNodeConfigInstanceOverride) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if (in.RouterID == nil) != (other.RouterID == nil) {
		return false
	} else if in.RouterID != nil {
		if *in.RouterID != *other.RouterID {
			return false
		}
	}

	if (in.LocalPort == nil) != (other.LocalPort == nil) {
		return false
	} else if in.LocalPort != nil {
		if *in.LocalPort != *other.LocalPort {
			return false
		}
	}

	if ((in.Peers != nil) && (other.Peers != nil)) || ((in.Peers == nil) != (other.Peers == nil)) {
		in, other := &in.Peers, &other.Peers
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	if (in.LocalASN == nil) != (other.LocalASN == nil) {
		return false
	} else if in.LocalASN != nil {
		if *in.LocalASN != *other.LocalASN {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodeConfigOverride) DeepEqual(other *CiliumBGPNodeConfigOverride) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodeConfigOverrideSpec) DeepEqual(other *CiliumBGPNodeConfigOverrideSpec) bool {
	if other == nil {
		return false
	}

	if ((in.BGPInstances != nil) && (other.BGPInstances != nil)) || ((in.BGPInstances == nil) != (other.BGPInstances == nil)) {
		in, other := &in.BGPInstances, &other.BGPInstances
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodeConfigPeerOverride) DeepEqual(other *CiliumBGPNodeConfigPeerOverride) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if (in.LocalAddress == nil) != (other.LocalAddress == nil) {
		return false
	} else if in.LocalAddress != nil {
		if *in.LocalAddress != *other.LocalAddress {
			return false
		}
	}

	if (in.LocalPort == nil) != (other.LocalPort == nil) {
		return false
	} else if in.LocalPort != nil {
		if *in.LocalPort != *other.LocalPort {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodeInstance) DeepEqual(other *CiliumBGPNodeInstance) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if (in.LocalASN == nil) != (other.LocalASN == nil) {
		return false
	} else if in.LocalASN != nil {
		if *in.LocalASN != *other.LocalASN {
			return false
		}
	}

	if (in.RouterID == nil) != (other.RouterID == nil) {
		return false
	} else if in.RouterID != nil {
		if *in.RouterID != *other.RouterID {
			return false
		}
	}

	if (in.LocalPort == nil) != (other.LocalPort == nil) {
		return false
	} else if in.LocalPort != nil {
		if *in.LocalPort != *other.LocalPort {
			return false
		}
	}

	if ((in.Peers != nil) && (other.Peers != nil)) || ((in.Peers == nil) != (other.Peers == nil)) {
		in, other := &in.Peers, &other.Peers
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodeInstanceStatus) DeepEqual(other *CiliumBGPNodeInstanceStatus) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if (in.LocalASN == nil) != (other.LocalASN == nil) {
		return false
	} else if in.LocalASN != nil {
		if *in.LocalASN != *other.LocalASN {
			return false
		}
	}

	if ((in.PeerStatuses != nil) && (other.PeerStatuses != nil)) || ((in.PeerStatuses == nil) != (other.PeerStatuses == nil)) {
		in, other := &in.PeerStatuses, &other.PeerStatuses
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodePeer) DeepEqual(other *CiliumBGPNodePeer) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if (in.PeerAddress == nil) != (other.PeerAddress == nil) {
		return false
	} else if in.PeerAddress != nil {
		if *in.PeerAddress != *other.PeerAddress {
			return false
		}
	}

	if (in.PeerASN == nil) != (other.PeerASN == nil) {
		return false
	} else if in.PeerASN != nil {
		if *in.PeerASN != *other.PeerASN {
			return false
		}
	}

	if (in.AutoDiscovery == nil) != (other.AutoDiscovery == nil) {
		return false
	} else if in.AutoDiscovery != nil {
		if !in.AutoDiscovery.DeepEqual(other.AutoDiscovery) {
			return false
		}
	}

	if (in.LocalAddress == nil) != (other.LocalAddress == nil) {
		return false
	} else if in.LocalAddress != nil {
		if *in.LocalAddress != *other.LocalAddress {
			return false
		}
	}

	if (in.PeerConfigRef == nil) != (other.PeerConfigRef == nil) {
		return false
	} else if in.PeerConfigRef != nil {
		if !in.PeerConfigRef.DeepEqual(other.PeerConfigRef) {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodePeerStatus) DeepEqual(other *CiliumBGPNodePeerStatus) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if in.PeerAddress != other.PeerAddress {
		return false
	}
	if (in.PeerASN == nil) != (other.PeerASN == nil) {
		return false
	} else if in.PeerASN != nil {
		if *in.PeerASN != *other.PeerASN {
			return false
		}
	}

	if (in.PeeringState == nil) != (other.PeeringState == nil) {
		return false
	} else if in.PeeringState != nil {
		if *in.PeeringState != *other.PeeringState {
			return false
		}
	}

	if (in.Timers == nil) != (other.Timers == nil) {
		return false
	} else if in.Timers != nil {
		if !in.Timers.DeepEqual(other.Timers) {
			return false
		}
	}

	if (in.EstablishedTime == nil) != (other.EstablishedTime == nil) {
		return false
	} else if in.EstablishedTime != nil {
		if *in.EstablishedTime != *other.EstablishedTime {
			return false
		}
	}

	if ((in.RouteCount != nil) && (other.RouteCount != nil)) || ((in.RouteCount == nil) != (other.RouteCount == nil)) {
		in, other := &in.RouteCount, &other.RouteCount
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodeSpec) DeepEqual(other *CiliumBGPNodeSpec) bool {
	if other == nil {
		return false
	}

	if ((in.BGPInstances != nil) && (other.BGPInstances != nil)) || ((in.BGPInstances == nil) != (other.BGPInstances == nil)) {
		in, other := &in.BGPInstances, &other.BGPInstances
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPNodeStatus) DeepEqual(other *CiliumBGPNodeStatus) bool {
	if other == nil {
		return false
	}

	if ((in.BGPInstances != nil) && (other.BGPInstances != nil)) || ((in.BGPInstances == nil) != (other.BGPInstances == nil)) {
		in, other := &in.BGPInstances, &other.BGPInstances
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPPeer) DeepEqual(other *CiliumBGPPeer) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if (in.PeerAddress == nil) != (other.PeerAddress == nil) {
		return false
	} else if in.PeerAddress != nil {
		if *in.PeerAddress != *other.PeerAddress {
			return false
		}
	}

	if (in.PeerASN == nil) != (other.PeerASN == nil) {
		return false
	} else if in.PeerASN != nil {
		if *in.PeerASN != *other.PeerASN {
			return false
		}
	}

	if (in.AutoDiscovery == nil) != (other.AutoDiscovery == nil) {
		return false
	} else if in.AutoDiscovery != nil {
		if !in.AutoDiscovery.DeepEqual(other.AutoDiscovery) {
			return false
		}
	}

	if (in.PeerConfigRef == nil) != (other.PeerConfigRef == nil) {
		return false
	} else if in.PeerConfigRef != nil {
		if !in.PeerConfigRef.DeepEqual(other.PeerConfigRef) {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPPeerConfig) DeepEqual(other *CiliumBGPPeerConfig) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	if !in.Status.DeepEqual(&other.Status) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPPeerConfigSpec) DeepEqual(other *CiliumBGPPeerConfigSpec) bool {
	if other == nil {
		return false
	}

	if (in.Transport == nil) != (other.Transport == nil) {
		return false
	} else if in.Transport != nil {
		if !in.Transport.DeepEqual(other.Transport) {
			return false
		}
	}

	if (in.Timers == nil) != (other.Timers == nil) {
		return false
	} else if in.Timers != nil {
		if !in.Timers.DeepEqual(other.Timers) {
			return false
		}
	}

	if (in.AuthSecretRef == nil) != (other.AuthSecretRef == nil) {
		return false
	} else if in.AuthSecretRef != nil {
		if *in.AuthSecretRef != *other.AuthSecretRef {
			return false
		}
	}

	if (in.GracefulRestart == nil) != (other.GracefulRestart == nil) {
		return false
	} else if in.GracefulRestart != nil {
		if !in.GracefulRestart.DeepEqual(other.GracefulRestart) {
			return false
		}
	}

	if (in.EBGPMultihop == nil) != (other.EBGPMultihop == nil) {
		return false
	} else if in.EBGPMultihop != nil {
		if *in.EBGPMultihop != *other.EBGPMultihop {
			return false
		}
	}

	if ((in.Families != nil) && (other.Families != nil)) || ((in.Families == nil) != (other.Families == nil)) {
		in, other := &in.Families, &other.Families
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPPeerConfigStatus) DeepEqual(other *CiliumBGPPeerConfigStatus) bool {
	if other == nil {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPTimers) DeepEqual(other *CiliumBGPTimers) bool {
	if other == nil {
		return false
	}

	if (in.ConnectRetryTimeSeconds == nil) != (other.ConnectRetryTimeSeconds == nil) {
		return false
	} else if in.ConnectRetryTimeSeconds != nil {
		if *in.ConnectRetryTimeSeconds != *other.ConnectRetryTimeSeconds {
			return false
		}
	}

	if (in.HoldTimeSeconds == nil) != (other.HoldTimeSeconds == nil) {
		return false
	} else if in.HoldTimeSeconds != nil {
		if *in.HoldTimeSeconds != *other.HoldTimeSeconds {
			return false
		}
	}

	if (in.KeepAliveTimeSeconds == nil) != (other.KeepAliveTimeSeconds == nil) {
		return false
	} else if in.KeepAliveTimeSeconds != nil {
		if *in.KeepAliveTimeSeconds != *other.KeepAliveTimeSeconds {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPTimersState) DeepEqual(other *CiliumBGPTimersState) bool {
	if other == nil {
		return false
	}

	if (in.AppliedHoldTimeSeconds == nil) != (other.AppliedHoldTimeSeconds == nil) {
		return false
	} else if in.AppliedHoldTimeSeconds != nil {
		if *in.AppliedHoldTimeSeconds != *other.AppliedHoldTimeSeconds {
			return false
		}
	}

	if (in.AppliedKeepaliveSeconds == nil) != (other.AppliedKeepaliveSeconds == nil) {
		return false
	} else if in.AppliedKeepaliveSeconds != nil {
		if *in.AppliedKeepaliveSeconds != *other.AppliedKeepaliveSeconds {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumBGPTransport) DeepEqual(other *CiliumBGPTransport) bool {
	if other == nil {
		return false
	}

	if (in.PeerPort == nil) != (other.PeerPort == nil) {
		return false
	} else if in.PeerPort != nil {
		if *in.PeerPort != *other.PeerPort {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumCIDRGroupSpec) DeepEqual(other *CiliumCIDRGroupSpec) bool {
	if other == nil {
		return false
	}

	if ((in.ExternalCIDRs != nil) && (other.ExternalCIDRs != nil)) || ((in.ExternalCIDRs == nil) != (other.ExternalCIDRs == nil)) {
		in, other := &in.ExternalCIDRs, &other.ExternalCIDRs
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if inElement != (*other)[i] {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumClusterwideEnvoyConfig) DeepEqual(other *CiliumClusterwideEnvoyConfig) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	return true
}

// deepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumClusterwideNetworkPolicy) deepEqual(other *CiliumClusterwideNetworkPolicy) bool {
	if other == nil {
		return false
	}

	if (in.Spec == nil) != (other.Spec == nil) {
		return false
	} else if in.Spec != nil {
		if !in.Spec.DeepEqual(other.Spec) {
			return false
		}
	}

	if ((in.Specs != nil) && (other.Specs != nil)) || ((in.Specs == nil) != (other.Specs == nil)) {
		in, other := &in.Specs, &other.Specs
		if other == nil || !in.DeepEqual(other) {
			return false
		}
	}

	if !in.Status.DeepEqual(&other.Status) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumEgressGatewayPolicy) DeepEqual(other *CiliumEgressGatewayPolicy) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumEgressGatewayPolicySpec) DeepEqual(other *CiliumEgressGatewayPolicySpec) bool {
	if other == nil {
		return false
	}

	if ((in.Selectors != nil) && (other.Selectors != nil)) || ((in.Selectors == nil) != (other.Selectors == nil)) {
		in, other := &in.Selectors, &other.Selectors
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	if ((in.DestinationCIDRs != nil) && (other.DestinationCIDRs != nil)) || ((in.DestinationCIDRs == nil) != (other.DestinationCIDRs == nil)) {
		in, other := &in.DestinationCIDRs, &other.DestinationCIDRs
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if inElement != (*other)[i] {
					return false
				}
			}
		}
	}

	if ((in.ExcludedCIDRs != nil) && (other.ExcludedCIDRs != nil)) || ((in.ExcludedCIDRs == nil) != (other.ExcludedCIDRs == nil)) {
		in, other := &in.ExcludedCIDRs, &other.ExcludedCIDRs
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if inElement != (*other)[i] {
					return false
				}
			}
		}
	}

	if (in.EgressGateway == nil) != (other.EgressGateway == nil) {
		return false
	} else if in.EgressGateway != nil {
		if !in.EgressGateway.DeepEqual(other.EgressGateway) {
			return false
		}
	}

	if ((in.EgressGateways != nil) && (other.EgressGateways != nil)) || ((in.EgressGateways == nil) != (other.EgressGateways == nil)) {
		in, other := &in.EgressGateways, &other.EgressGateways
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumEndpoint) DeepEqual(other *CiliumEndpoint) bool {
	if other == nil {
		return false
	}

	if !in.Status.DeepEqual(&other.Status) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumEnvoyConfig) DeepEqual(other *CiliumEnvoyConfig) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumEnvoyConfigSpec) DeepEqual(other *CiliumEnvoyConfigSpec) bool {
	if other == nil {
		return false
	}

	if ((in.Services != nil) && (other.Services != nil)) || ((in.Services == nil) != (other.Services == nil)) {
		in, other := &in.Services, &other.Services
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual((*other)[i]) {
					return false
				}
			}
		}
	}

	if ((in.BackendServices != nil) && (other.BackendServices != nil)) || ((in.BackendServices == nil) != (other.BackendServices == nil)) {
		in, other := &in.BackendServices, &other.BackendServices
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual((*other)[i]) {
					return false
				}
			}
		}
	}

	if ((in.Resources != nil) && (other.Resources != nil)) || ((in.Resources == nil) != (other.Resources == nil)) {
		in, other := &in.Resources, &other.Resources
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	if (in.NodeSelector == nil) != (other.NodeSelector == nil) {
		return false
	} else if in.NodeSelector != nil {
		if !in.NodeSelector.DeepEqual(other.NodeSelector) {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumIdentity) DeepEqual(other *CiliumIdentity) bool {
	if other == nil {
		return false
	}

	if ((in.SecurityLabels != nil) && (other.SecurityLabels != nil)) || ((in.SecurityLabels == nil) != (other.SecurityLabels == nil)) {
		in, other := &in.SecurityLabels, &other.SecurityLabels
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for key, inValue := range *in {
				if otherValue, present := (*other)[key]; !present {
					return false
				} else {
					if inValue != otherValue {
						return false
					}
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumLoadBalancerIPPool) DeepEqual(other *CiliumLoadBalancerIPPool) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumLoadBalancerIPPoolIPBlock) DeepEqual(other *CiliumLoadBalancerIPPoolIPBlock) bool {
	if other == nil {
		return false
	}

	if in.Cidr != other.Cidr {
		return false
	}
	if in.Start != other.Start {
		return false
	}
	if in.Stop != other.Stop {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumLoadBalancerIPPoolSpec) DeepEqual(other *CiliumLoadBalancerIPPoolSpec) bool {
	if other == nil {
		return false
	}

	if (in.ServiceSelector == nil) != (other.ServiceSelector == nil) {
		return false
	} else if in.ServiceSelector != nil {
		if !in.ServiceSelector.DeepEqual(other.ServiceSelector) {
			return false
		}
	}

	if in.AllowFirstLastIPs != other.AllowFirstLastIPs {
		return false
	}
	if ((in.Blocks != nil) && (other.Blocks != nil)) || ((in.Blocks == nil) != (other.Blocks == nil)) {
		in, other := &in.Blocks, &other.Blocks
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	if in.Disabled != other.Disabled {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumLocalRedirectPolicy) DeepEqual(other *CiliumLocalRedirectPolicy) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumLocalRedirectPolicySpec) DeepEqual(other *CiliumLocalRedirectPolicySpec) bool {
	if other == nil {
		return false
	}

	if !in.RedirectFrontend.DeepEqual(&other.RedirectFrontend) {
		return false
	}

	if !in.RedirectBackend.DeepEqual(&other.RedirectBackend) {
		return false
	}

	if in.SkipRedirectFromBackend != other.SkipRedirectFromBackend {
		return false
	}
	if in.Description != other.Description {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumLocalRedirectPolicyStatus) DeepEqual(other *CiliumLocalRedirectPolicyStatus) bool {
	if other == nil {
		return false
	}

	if in.OK != other.OK {
		return false
	}

	return true
}

// deepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumNetworkPolicy) deepEqual(other *CiliumNetworkPolicy) bool {
	if other == nil {
		return false
	}

	if (in.Spec == nil) != (other.Spec == nil) {
		return false
	} else if in.Spec != nil {
		if !in.Spec.DeepEqual(other.Spec) {
			return false
		}
	}

	if ((in.Specs != nil) && (other.Specs != nil)) || ((in.Specs == nil) != (other.Specs == nil)) {
		in, other := &in.Specs, &other.Specs
		if other == nil || !in.DeepEqual(other) {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumNetworkPolicyNodeStatus) DeepEqual(other *CiliumNetworkPolicyNodeStatus) bool {
	if other == nil {
		return false
	}

	if in.OK != other.OK {
		return false
	}
	if in.Error != other.Error {
		return false
	}
	if !in.LastUpdated.DeepEqual(&other.LastUpdated) {
		return false
	}

	if in.Revision != other.Revision {
		return false
	}
	if in.Enforcing != other.Enforcing {
		return false
	}
	if ((in.Annotations != nil) && (other.Annotations != nil)) || ((in.Annotations == nil) != (other.Annotations == nil)) {
		in, other := &in.Annotations, &other.Annotations
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for key, inValue := range *in {
				if otherValue, present := (*other)[key]; !present {
					return false
				} else {
					if inValue != otherValue {
						return false
					}
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumNetworkPolicyStatus) DeepEqual(other *CiliumNetworkPolicyStatus) bool {
	if other == nil {
		return false
	}

	if ((in.DerivativePolicies != nil) && (other.DerivativePolicies != nil)) || ((in.DerivativePolicies == nil) != (other.DerivativePolicies == nil)) {
		in, other := &in.DerivativePolicies, &other.DerivativePolicies
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for key, inValue := range *in {
				if otherValue, present := (*other)[key]; !present {
					return false
				} else {
					if !inValue.DeepEqual(&otherValue) {
						return false
					}
				}
			}
		}
	}

	if ((in.Conditions != nil) && (other.Conditions != nil)) || ((in.Conditions == nil) != (other.Conditions == nil)) {
		in, other := &in.Conditions, &other.Conditions
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *CiliumNode) DeepEqual(other *CiliumNode) bool {
	if other == nil {
		return false
	}

	if !in.Spec.DeepEqual(&other.Spec) {
		return false
	}

	if !in.Status.DeepEqual(&other.Status) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *ControllerList) DeepEqual(other *ControllerList) bool {
	if other == nil {
		return false
	}

	if len(*in) != len(*other) {
		return false
	} else {
		for i, inElement := range *in {
			if !inElement.DeepEqual(&(*other)[i]) {
				return false
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *ControllerStatus) DeepEqual(other *ControllerStatus) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if (in.Configuration == nil) != (other.Configuration == nil) {
		return false
	} else if in.Configuration != nil {
		if !in.Configuration.DeepEqual(other.Configuration) {
			return false
		}
	}

	if in.Status != other.Status {
		return false
	}

	if in.UUID != other.UUID {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *ControllerStatusStatus) DeepEqual(other *ControllerStatusStatus) bool {
	if other == nil {
		return false
	}

	if in.ConsecutiveFailureCount != other.ConsecutiveFailureCount {
		return false
	}
	if in.FailureCount != other.FailureCount {
		return false
	}
	if in.LastFailureMsg != other.LastFailureMsg {
		return false
	}
	if in.LastFailureTimestamp != other.LastFailureTimestamp {
		return false
	}
	if in.LastSuccessTimestamp != other.LastSuccessTimestamp {
		return false
	}
	if in.SuccessCount != other.SuccessCount {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *DefaultGateway) DeepEqual(other *DefaultGateway) bool {
	if other == nil {
		return false
	}

	if in.AddressFamily != other.AddressFamily {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *DenyIdentityList) DeepEqual(other *DenyIdentityList) bool {
	if other == nil {
		return false
	}

	if len(*in) != len(*other) {
		return false
	} else {
		for i, inElement := range *in {
			if !inElement.DeepEqual(&(*other)[i]) {
				return false
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *EgressGateway) DeepEqual(other *EgressGateway) bool {
	if other == nil {
		return false
	}

	if (in.NodeSelector == nil) != (other.NodeSelector == nil) {
		return false
	} else if in.NodeSelector != nil {
		if !in.NodeSelector.DeepEqual(other.NodeSelector) {
			return false
		}
	}

	if in.Interface != other.Interface {
		return false
	}
	if in.EgressIP != other.EgressIP {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *EgressRule) DeepEqual(other *EgressRule) bool {
	if other == nil {
		return false
	}

	if (in.NamespaceSelector == nil) != (other.NamespaceSelector == nil) {
		return false
	} else if in.NamespaceSelector != nil {
		if !in.NamespaceSelector.DeepEqual(other.NamespaceSelector) {
			return false
		}
	}

	if (in.PodSelector == nil) != (other.PodSelector == nil) {
		return false
	} else if in.PodSelector != nil {
		if !in.PodSelector.DeepEqual(other.PodSelector) {
			return false
		}
	}

	if (in.NodeSelector == nil) != (other.NodeSelector == nil) {
		return false
	} else if in.NodeSelector != nil {
		if !in.NodeSelector.DeepEqual(other.NodeSelector) {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *EncryptionSpec) DeepEqual(other *EncryptionSpec) bool {
	if other == nil {
		return false
	}

	if in.Key != other.Key {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *EndpointIdentity) DeepEqual(other *EndpointIdentity) bool {
	if other == nil {
		return false
	}

	if in.ID != other.ID {
		return false
	}
	if ((in.Labels != nil) && (other.Labels != nil)) || ((in.Labels == nil) != (other.Labels == nil)) {
		in, other := &in.Labels, &other.Labels
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if inElement != (*other)[i] {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *EndpointNetworking) DeepEqual(other *EndpointNetworking) bool {
	if other == nil {
		return false
	}

	if ((in.Addressing != nil) && (other.Addressing != nil)) || ((in.Addressing == nil) != (other.Addressing == nil)) {
		in, other := &in.Addressing, &other.Addressing
		if other == nil || !in.DeepEqual(other) {
			return false
		}
	}

	if in.NodeIP != other.NodeIP {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *EndpointPolicy) DeepEqual(other *EndpointPolicy) bool {
	if other == nil {
		return false
	}

	if (in.Ingress == nil) != (other.Ingress == nil) {
		return false
	} else if in.Ingress != nil {
		if !in.Ingress.DeepEqual(other.Ingress) {
			return false
		}
	}

	if (in.Egress == nil) != (other.Egress == nil) {
		return false
	} else if in.Egress != nil {
		if !in.Egress.DeepEqual(other.Egress) {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *EndpointPolicyDirection) DeepEqual(other *EndpointPolicyDirection) bool {
	if other == nil {
		return false
	}

	if in.Enforcing != other.Enforcing {
		return false
	}
	if ((in.Allowed != nil) && (other.Allowed != nil)) || ((in.Allowed == nil) != (other.Allowed == nil)) {
		in, other := &in.Allowed, &other.Allowed
		if other == nil || !in.DeepEqual(other) {
			return false
		}
	}

	if ((in.Denied != nil) && (other.Denied != nil)) || ((in.Denied == nil) != (other.Denied == nil)) {
		in, other := &in.Denied, &other.Denied
		if other == nil || !in.DeepEqual(other) {
			return false
		}
	}

	if ((in.Removing != nil) && (other.Removing != nil)) || ((in.Removing == nil) != (other.Removing == nil)) {
		in, other := &in.Removing, &other.Removing
		if other == nil || !in.DeepEqual(other) {
			return false
		}
	}

	if ((in.Adding != nil) && (other.Adding != nil)) || ((in.Adding == nil) != (other.Adding == nil)) {
		in, other := &in.Adding, &other.Adding
		if other == nil || !in.DeepEqual(other) {
			return false
		}
	}

	if in.State != other.State {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *EndpointStatus) DeepEqual(other *EndpointStatus) bool {
	if other == nil {
		return false
	}

	if in.ID != other.ID {
		return false
	}
	if ((in.Controllers != nil) && (other.Controllers != nil)) || ((in.Controllers == nil) != (other.Controllers == nil)) {
		in, other := &in.Controllers, &other.Controllers
		if other == nil || !in.DeepEqual(other) {
			return false
		}
	}

	if (in.ExternalIdentifiers == nil) != (other.ExternalIdentifiers == nil) {
		return false
	} else if in.ExternalIdentifiers != nil {
		if !in.ExternalIdentifiers.DeepEqual(other.ExternalIdentifiers) {
			return false
		}
	}

	if (in.Health == nil) != (other.Health == nil) {
		return false
	} else if in.Health != nil {
		if !in.Health.DeepEqual(other.Health) {
			return false
		}
	}

	if (in.Identity == nil) != (other.Identity == nil) {
		return false
	} else if in.Identity != nil {
		if !in.Identity.DeepEqual(other.Identity) {
			return false
		}
	}

	if ((in.Log != nil) && (other.Log != nil)) || ((in.Log == nil) != (other.Log == nil)) {
		in, other := &in.Log, &other.Log
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual((*other)[i]) {
					return false
				}
			}
		}
	}

	if (in.Networking == nil) != (other.Networking == nil) {
		return false
	} else if in.Networking != nil {
		if !in.Networking.DeepEqual(other.Networking) {
			return false
		}
	}

	if in.Encryption != other.Encryption {
		return false
	}

	if (in.Policy == nil) != (other.Policy == nil) {
		return false
	} else if in.Policy != nil {
		if !in.Policy.DeepEqual(other.Policy) {
			return false
		}
	}

	if in.State != other.State {
		return false
	}
	if ((in.NamedPorts != nil) && (other.NamedPorts != nil)) || ((in.NamedPorts == nil) != (other.NamedPorts == nil)) {
		in, other := &in.NamedPorts, &other.NamedPorts
		if other == nil || !in.DeepEqual(other) {
			return false
		}
	}

	if in.ServiceAccount != other.ServiceAccount {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *Frontend) DeepEqual(other *Frontend) bool {
	if other == nil {
		return false
	}

	if in.IP != other.IP {
		return false
	}
	if ((in.ToPorts != nil) && (other.ToPorts != nil)) || ((in.ToPorts == nil) != (other.ToPorts == nil)) {
		in, other := &in.ToPorts, &other.ToPorts
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *HealthAddressingSpec) DeepEqual(other *HealthAddressingSpec) bool {
	if other == nil {
		return false
	}

	if in.IPv4 != other.IPv4 {
		return false
	}
	if in.IPv6 != other.IPv6 {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *IdentityList) DeepEqual(other *IdentityList) bool {
	if other == nil {
		return false
	}

	if len(*in) != len(*other) {
		return false
	} else {
		for i, inElement := range *in {
			if !inElement.DeepEqual(&(*other)[i]) {
				return false
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *IdentityTuple) DeepEqual(other *IdentityTuple) bool {
	if other == nil {
		return false
	}

	if in.Identity != other.Identity {
		return false
	}
	if ((in.IdentityLabels != nil) && (other.IdentityLabels != nil)) || ((in.IdentityLabels == nil) != (other.IdentityLabels == nil)) {
		in, other := &in.IdentityLabels, &other.IdentityLabels
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for key, inValue := range *in {
				if otherValue, present := (*other)[key]; !present {
					return false
				} else {
					if inValue != otherValue {
						return false
					}
				}
			}
		}
	}

	if in.DestPort != other.DestPort {
		return false
	}
	if in.Protocol != other.Protocol {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *NetworkPolicyCondition) DeepEqual(other *NetworkPolicyCondition) bool {
	if other == nil {
		return false
	}

	if in.Type != other.Type {
		return false
	}
	if in.Status != other.Status {
		return false
	}
	if !in.LastTransitionTime.DeepEqual(&other.LastTransitionTime) {
		return false
	}

	if in.Reason != other.Reason {
		return false
	}
	if in.Message != other.Message {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *NodeAddress) DeepEqual(other *NodeAddress) bool {
	if other == nil {
		return false
	}

	if in.Type != other.Type {
		return false
	}
	if in.IP != other.IP {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *NodeSpec) DeepEqual(other *NodeSpec) bool {
	if other == nil {
		return false
	}

	if in.InstanceID != other.InstanceID {
		return false
	}
	if in.BootID != other.BootID {
		return false
	}
	if ((in.Addresses != nil) && (other.Addresses != nil)) || ((in.Addresses == nil) != (other.Addresses == nil)) {
		in, other := &in.Addresses, &other.Addresses
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	if in.HealthAddressing != other.HealthAddressing {
		return false
	}

	if in.IngressAddressing != other.IngressAddressing {
		return false
	}

	if in.Encryption != other.Encryption {
		return false
	}

	if !in.ENI.DeepEqual(&other.ENI) {
		return false
	}

	if in.Azure != other.Azure {
		return false
	}

	if !in.AlibabaCloud.DeepEqual(&other.AlibabaCloud) {
		return false
	}

	if !in.IPAM.DeepEqual(&other.IPAM) {
		return false
	}

	if in.NodeIdentity != other.NodeIdentity {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *NodeStatus) DeepEqual(other *NodeStatus) bool {
	if other == nil {
		return false
	}

	if !in.ENI.DeepEqual(&other.ENI) {
		return false
	}

	if !in.Azure.DeepEqual(&other.Azure) {
		return false
	}

	if !in.IPAM.DeepEqual(&other.IPAM) {
		return false
	}

	if !in.AlibabaCloud.DeepEqual(&other.AlibabaCloud) {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *PeerConfigReference) DeepEqual(other *PeerConfigReference) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *PortInfo) DeepEqual(other *PortInfo) bool {
	if other == nil {
		return false
	}

	if in.Port != other.Port {
		return false
	}
	if in.Protocol != other.Protocol {
		return false
	}
	if in.Name != other.Name {
		return false
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *RedirectBackend) DeepEqual(other *RedirectBackend) bool {
	if other == nil {
		return false
	}

	if !in.LocalEndpointSelector.DeepEqual(&other.LocalEndpointSelector) {
		return false
	}

	if ((in.ToPorts != nil) && (other.ToPorts != nil)) || ((in.ToPorts == nil) != (other.ToPorts == nil)) {
		in, other := &in.ToPorts, &other.ToPorts
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *RedirectFrontend) DeepEqual(other *RedirectFrontend) bool {
	if other == nil {
		return false
	}

	if (in.AddressMatcher == nil) != (other.AddressMatcher == nil) {
		return false
	} else if in.AddressMatcher != nil {
		if !in.AddressMatcher.DeepEqual(other.AddressMatcher) {
			return false
		}
	}

	if (in.ServiceMatcher == nil) != (other.ServiceMatcher == nil) {
		return false
	} else if in.ServiceMatcher != nil {
		if !in.ServiceMatcher.DeepEqual(other.ServiceMatcher) {
			return false
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *Service) DeepEqual(other *Service) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if in.Namespace != other.Namespace {
		return false
	}
	if ((in.Ports != nil) && (other.Ports != nil)) || ((in.Ports == nil) != (other.Ports == nil)) {
		in, other := &in.Ports, &other.Ports
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if inElement != (*other)[i] {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *ServiceInfo) DeepEqual(other *ServiceInfo) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if in.Namespace != other.Namespace {
		return false
	}
	if ((in.ToPorts != nil) && (other.ToPorts != nil)) || ((in.ToPorts == nil) != (other.ToPorts == nil)) {
		in, other := &in.ToPorts, &other.ToPorts
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if !inElement.DeepEqual(&(*other)[i]) {
					return false
				}
			}
		}
	}

	return true
}

// DeepEqual is an autogenerated deepequal function, deeply comparing the
// receiver with other. in must be non-nil.
func (in *ServiceListener) DeepEqual(other *ServiceListener) bool {
	if other == nil {
		return false
	}

	if in.Name != other.Name {
		return false
	}
	if in.Namespace != other.Namespace {
		return false
	}
	if ((in.Ports != nil) && (other.Ports != nil)) || ((in.Ports == nil) != (other.Ports == nil)) {
		in, other := &in.Ports, &other.Ports
		if other == nil {
			return false
		}

		if len(*in) != len(*other) {
			return false
		} else {
			for i, inElement := range *in {
				if inElement != (*other)[i] {
					return false
				}
			}
		}
	}

	if in.Listener != other.Listener {
		return false
	}

	return true
}
