// Code generated by "go run clone_generate.go"; DO NOT EDIT.

package dns

import (
	"slices"

	"codeberg.org/miekg/dns/deleg"
	"codeberg.org/miekg/dns/rdata"
	"codeberg.org/miekg/dns/svcb"
)

func (rr *NULL) Clone() RR {
	return &NULL{
		rr.Hdr,
		rdata.NULL{
			rr.Null,
		},
	}
}

func (rr *CNAME) Clone() RR {
	return &CNAME{
		rr.Hdr,
		rdata.CNAME{
			rr.Target,
		},
	}
}

func (rr *HINFO) Clone() RR {
	return &HINFO{
		rr.Hdr,
		rdata.HINFO{
			rr.Cpu,
			rr.Os,
		},
	}
}

func (rr *MB) Clone() RR {
	return &MB{
		rr.Hdr,
		rdata.MB{
			rr.Mb,
		},
	}
}

func (rr *MG) Clone() RR {
	return &MG{
		rr.Hdr,
		rdata.MG{
			rr.Mg,
		},
	}
}

func (rr *MINFO) Clone() RR {
	return &MINFO{
		rr.Hdr,
		rdata.MINFO{
			rr.Rmail,
			rr.Email,
		},
	}
}

func (rr *MR) Clone() RR {
	return &MR{
		rr.Hdr,
		rdata.MR{
			rr.Mr,
		},
	}
}

func (rr *MF) Clone() RR {
	return &MF{
		rr.Hdr,
		rdata.MF{
			rr.Mf,
		},
	}
}

func (rr *MD) Clone() RR {
	return &MD{
		rr.Hdr,
		rdata.MD{
			rr.Md,
		},
	}
}

func (rr *MX) Clone() RR {
	return &MX{
		rr.Hdr,
		rdata.MX{
			rr.Preference,
			rr.Mx,
		},
	}
}

func (rr *AFSDB) Clone() RR {
	return &AFSDB{
		rr.Hdr,
		rdata.AFSDB{
			rr.Subtype,
			rr.Hostname,
		},
	}
}

func (rr *X25) Clone() RR {
	return &X25{
		rr.Hdr,
		rdata.X25{
			rr.PSDNAddress,
		},
	}
}

func (rr *ISDN) Clone() RR {
	return &ISDN{
		rr.Hdr,
		rdata.ISDN{
			rr.Address,
			rr.SubAddress,
		},
	}
}

func (rr *RT) Clone() RR {
	return &RT{
		rr.Hdr,
		rdata.RT{
			rr.Preference,
			rr.Host,
		},
	}
}

func (rr *NS) Clone() RR {
	return &NS{
		rr.Hdr,
		rdata.NS{
			rr.Ns,
		},
	}
}

func (rr *PTR) Clone() RR {
	return &PTR{
		rr.Hdr,
		rdata.PTR{
			rr.Ptr,
		},
	}
}

func (rr *RP) Clone() RR {
	return &RP{
		rr.Hdr,
		rdata.RP{
			rr.Mbox,
			rr.Txt,
		},
	}
}

func (rr *SOA) Clone() RR {
	return &SOA{
		rr.Hdr,
		rdata.SOA{
			rr.Ns,
			rr.Mbox,
			rr.Serial,
			rr.Refresh,
			rr.Retry,
			rr.Expire,
			rr.Minttl,
		},
	}
}

func (rr *TXT) Clone() RR {
	return &TXT{
		rr.Hdr,
		rdata.TXT{
			slices.Clone(rr.Txt),
		},
	}
}

func (rr *IPN) Clone() RR {
	return &IPN{
		rr.Hdr,
		rdata.IPN{
			rr.Node,
		},
	}
}

func (rr *SRV) Clone() RR {
	return &SRV{
		rr.Hdr,
		rdata.SRV{
			rr.Priority,
			rr.Weight,
			rr.Port,
			rr.Target,
		},
	}
}

func (rr *NAPTR) Clone() RR {
	return &NAPTR{
		rr.Hdr,
		rdata.NAPTR{
			rr.Order,
			rr.Preference,
			rr.Flags,
			rr.Service,
			rr.Regexp,
			rr.Replacement,
		},
	}
}

func (rr *CERT) Clone() RR {
	return &CERT{
		rr.Hdr,
		rdata.CERT{
			rr.Type,
			rr.KeyTag,
			rr.Algorithm,
			rr.Certificate,
		},
	}
}

func (rr *DNAME) Clone() RR {
	return &DNAME{
		rr.Hdr,
		rdata.DNAME{
			rr.Target,
		},
	}
}

func (rr *A) Clone() RR {
	return &A{
		rr.Hdr,
		rdata.A{
			rr.Addr,
		},
	}
}

func (rr *AAAA) Clone() RR {
	return &AAAA{
		rr.Hdr,
		rdata.AAAA{
			rr.Addr,
		},
	}
}

func (rr *PX) Clone() RR {
	return &PX{
		rr.Hdr,
		rdata.PX{
			rr.Preference,
			rr.Map822,
			rr.Mapx400,
		},
	}
}

func (rr *GPOS) Clone() RR {
	return &GPOS{
		rr.Hdr,
		rdata.GPOS{
			rr.Longitude,
			rr.Latitude,
			rr.Altitude,
		},
	}
}

func (rr *LOC) Clone() RR {
	return &LOC{
		rr.Hdr,
		rdata.LOC{
			rr.Version,
			rr.Size,
			rr.HorizPre,
			rr.VertPre,
			rr.Latitude,
			rr.Longitude,
			rr.Altitude,
		},
	}
}

func (rr *RRSIG) Clone() RR {
	return &RRSIG{
		rr.Hdr,
		rdata.RRSIG{
			rr.TypeCovered,
			rr.Algorithm,
			rr.Labels,
			rr.OrigTTL,
			rr.Expiration,
			rr.Inception,
			rr.KeyTag,
			rr.SignerName,
			rr.Signature,
		},
	}
}

func (rr *NSEC) Clone() RR {
	return &NSEC{
		rr.Hdr,
		rdata.NSEC{
			rr.NextDomain,
			slices.Clone(rr.TypeBitMap),
		},
	}
}

func (rr *DS) Clone() RR {
	return &DS{
		rr.Hdr,
		rdata.DS{
			rr.KeyTag,
			rr.Algorithm,
			rr.DigestType,
			rr.Digest,
		},
	}
}

func (rr *KX) Clone() RR {
	return &KX{
		rr.Hdr,
		rdata.KX{
			rr.Preference,
			rr.Exchanger,
		},
	}
}

func (rr *TA) Clone() RR {
	return &TA{
		rr.Hdr,
		rdata.TA{
			rr.KeyTag,
			rr.Algorithm,
			rr.DigestType,
			rr.Digest,
		},
	}
}

func (rr *TALINK) Clone() RR {
	return &TALINK{
		rr.Hdr,
		rdata.TALINK{
			rr.PreviousName,
			rr.NextName,
		},
	}
}

func (rr *SSHFP) Clone() RR {
	return &SSHFP{
		rr.Hdr,
		rdata.SSHFP{
			rr.Algorithm,
			rr.Type,
			rr.FingerPrint,
		},
	}
}

func (rr *DNSKEY) Clone() RR {
	return &DNSKEY{
		rr.Hdr,
		rdata.DNSKEY{
			rr.Flags,
			rr.Protocol,
			rr.Algorithm,
			rr.PublicKey,
			rr.Tag,
		},
	}
}

func (rr *RKEY) Clone() RR {
	return &RKEY{
		rr.Hdr,
		rdata.RKEY{
			rr.Flags,
			rr.Protocol,
			rr.Algorithm,
			rr.PublicKey,
		},
	}
}

func (rr *NSAPPTR) Clone() RR {
	return &NSAPPTR{
		rr.Hdr,
		rdata.NSAPPTR{
			rr.Ptr,
		},
	}
}

func (rr *NSEC3) Clone() RR {
	return &NSEC3{
		rr.Hdr,
		rdata.NSEC3{
			rr.Hash,
			rr.Flags,
			rr.Iterations,
			rr.SaltLength,
			rr.Salt,
			rr.HashLength,
			rr.NextDomain,
			slices.Clone(rr.TypeBitMap),
		},
	}
}

func (rr *NSEC3PARAM) Clone() RR {
	return &NSEC3PARAM{
		rr.Hdr,
		rdata.NSEC3PARAM{
			rr.Hash,
			rr.Flags,
			rr.Iterations,
			rr.SaltLength,
			rr.Salt,
		},
	}
}

func (rr *TKEY) Clone() RR {
	return &TKEY{
		rr.Hdr,
		rdata.TKEY{
			rr.Algorithm,
			rr.Inception,
			rr.Expiration,
			rr.Mode,
			rr.Error,
			rr.KeySize,
			rr.Key,
			rr.OtherLen,
			rr.OtherData,
		},
	}
}

func (rr *RFC3597) Clone() RR {
	return &RFC3597{
		rr.Hdr,
		rdata.RFC3597{
			rr.RRType,
			rr.RFC3597.Data,
		},
	}
}

func (rr *URI) Clone() RR {
	return &URI{
		rr.Hdr,
		rdata.URI{
			rr.Priority,
			rr.Weight,
			rr.Target,
		},
	}
}

func (rr *DHCID) Clone() RR {
	return &DHCID{
		rr.Hdr,
		rdata.DHCID{
			rr.Digest,
		},
	}
}

func (rr *TLSA) Clone() RR {
	return &TLSA{
		rr.Hdr,
		rdata.TLSA{
			rr.Usage,
			rr.Selector,
			rr.MatchingType,
			rr.Certificate,
		},
	}
}

func (rr *SMIMEA) Clone() RR {
	return &SMIMEA{
		rr.Hdr,
		rdata.SMIMEA{
			rr.Usage,
			rr.Selector,
			rr.MatchingType,
			rr.Certificate,
		},
	}
}

func (rr *HIP) Clone() RR {
	return &HIP{
		rr.Hdr,
		rdata.HIP{
			rr.HitLength,
			rr.PublicKeyAlgorithm,
			rr.PublicKeyLength,
			rr.Hit,
			rr.PublicKey,
			slices.Clone(rr.RendezvousServers),
		},
	}
}

func (rr *NINFO) Clone() RR {
	return &NINFO{
		rr.Hdr,
		rdata.NINFO{
			slices.Clone(rr.ZSData),
		},
	}
}

func (rr *NID) Clone() RR {
	return &NID{
		rr.Hdr,
		rdata.NID{
			rr.Preference,
			rr.NodeID,
		},
	}
}

func (rr *L32) Clone() RR {
	return &L32{
		rr.Hdr,
		rdata.L32{
			rr.Preference,
			rr.Locator32,
		},
	}
}

func (rr *L64) Clone() RR {
	return &L64{
		rr.Hdr,
		rdata.L64{
			rr.Preference,
			rr.Locator64,
		},
	}
}

func (rr *LP) Clone() RR {
	return &LP{
		rr.Hdr,
		rdata.LP{
			rr.Preference,
			rr.Fqdn,
		},
	}
}

func (rr *EUI48) Clone() RR {
	return &EUI48{
		rr.Hdr,
		rdata.EUI48{
			rr.Address,
		},
	}
}

func (rr *EUI64) Clone() RR {
	return &EUI64{
		rr.Hdr,
		rdata.EUI64{
			rr.Address,
		},
	}
}

func (rr *CAA) Clone() RR {
	return &CAA{
		rr.Hdr,
		rdata.CAA{
			rr.Flag,
			rr.Tag,
			rr.Value,
		},
	}
}

func (rr *UID) Clone() RR {
	return &UID{
		rr.Hdr,
		rdata.UID{
			rr.Uid,
		},
	}
}

func (rr *GID) Clone() RR {
	return &GID{
		rr.Hdr,
		rdata.GID{
			rr.Gid,
		},
	}
}

func (rr *UINFO) Clone() RR {
	return &UINFO{
		rr.Hdr,
		rdata.UINFO{
			rr.Uinfo,
		},
	}
}

func (rr *EID) Clone() RR {
	return &EID{
		rr.Hdr,
		rdata.EID{
			rr.Endpoint,
		},
	}
}

func (rr *NIMLOC) Clone() RR {
	return &NIMLOC{
		rr.Hdr,
		rdata.NIMLOC{
			rr.Locator,
		},
	}
}

func (rr *OPENPGPKEY) Clone() RR {
	return &OPENPGPKEY{
		rr.Hdr,
		rdata.OPENPGPKEY{
			rr.PublicKey,
		},
	}
}

func (rr *CSYNC) Clone() RR {
	return &CSYNC{
		rr.Hdr,
		rdata.CSYNC{
			rr.Serial,
			rr.Flags,
			slices.Clone(rr.TypeBitMap),
		},
	}
}

func (rr *ZONEMD) Clone() RR {
	return &ZONEMD{
		rr.Hdr,
		rdata.ZONEMD{
			rr.Serial,
			rr.Scheme,
			rr.Hash,
			rr.Digest,
		},
	}
}

func (rr *SVCB) Clone() RR {
	return &SVCB{
		rr.Hdr,
		rdata.SVCB{
			rr.Priority,
			rr.Target,
			func() []svcb.Pair {
				pairs := make([]svcb.Pair, len(rr.Value))
				for i, p := range rr.Value {
					pairs[i] = p.Clone()
				}
				return pairs
			}(),
		},
	}
}

func (rr *DELEG) Clone() RR {
	return &DELEG{
		rr.Hdr,
		rdata.DELEG{
			func() []deleg.Info {
				infos := make([]deleg.Info, len(rr.Value))
				for i, p := range rr.Value {
					infos[i] = p.Clone()
				}
				return infos
			}(),
		},
	}
}

func (rr *DSYNC) Clone() RR {
	return &DSYNC{
		rr.Hdr,
		rdata.DSYNC{
			rr.Type,
			rr.Scheme,
			rr.Port,
			rr.Target,
		},
	}
}

func (rr *TSIG) Clone() RR {
	return &TSIG{
		rr.Hdr,
		rdata.TSIG{
			rr.Algorithm,
			rr.TimeSigned,
			rr.Fudge,
			rr.MACSize,
			rr.MAC,
			rr.OrigID,
			rr.Error,
			rr.OtherLen,
			rr.OtherData,
		},
	}
}

func (rr *NXNAME) Clone() RR {
	return &NXNAME{
		rr.Hdr,
	}
}

func (rr *SPF) Clone() RR {
	return &SPF{*rr.TXT.Clone().(*TXT)}
}
func (rr *AVC) Clone() RR {
	return &AVC{*rr.TXT.Clone().(*TXT)}
}
func (rr *WALLET) Clone() RR {
	return &WALLET{*rr.TXT.Clone().(*TXT)}
}
func (rr *CLA) Clone() RR {
	return &CLA{*rr.TXT.Clone().(*TXT)}
}
func (rr *SIG) Clone() RR {
	return &SIG{*rr.RRSIG.Clone().(*RRSIG)}
}
func (rr *NXT) Clone() RR {
	return &NXT{*rr.NSEC.Clone().(*NSEC)}
}
func (rr *DLV) Clone() RR {
	return &DLV{*rr.DS.Clone().(*DS)}
}
func (rr *CDS) Clone() RR {
	return &CDS{*rr.DS.Clone().(*DS)}
}
func (rr *KEY) Clone() RR {
	return &KEY{*rr.DNSKEY.Clone().(*DNSKEY)}
}
func (rr *CDNSKEY) Clone() RR {
	return &CDNSKEY{*rr.DNSKEY.Clone().(*DNSKEY)}
}
func (rr *OPT) Clone() RR {
	return &OPT{
		rr.Hdr,
		slices.Clone(rr.Options),
	}
}

func (rr *RESINFO) Clone() RR {
	return &RESINFO{*rr.TXT.Clone().(*TXT)}
}
func (rr *HTTPS) Clone() RR {
	return &HTTPS{*rr.SVCB.Clone().(*SVCB)}
}
func (rr *DELEGPARAM) Clone() RR {
	return &DELEGPARAM{*rr.DELEG.Clone().(*DELEG)}
}
func (rr *ANY) Clone() RR {
	return &ANY{
		rr.Hdr,
	}
}

func (rr *AXFR) Clone() RR {
	return &AXFR{
		rr.Hdr,
	}
}

func (rr *IXFR) Clone() RR {
	return &IXFR{
		rr.Hdr,
	}
}

func (rr *LLQ) Clone() RR {
	return &LLQ{
		rr.Version,
		rr.Opcode,
		rr.Error,
		rr.ID,
		rr.LeaseLife,
	}
}

func (rr *UPDATELEASE) Clone() RR {
	return &UPDATELEASE{
		rr.Lease,
		rr.KeyLease,
	}
}

func (rr *REPORTING) Clone() RR {
	return &REPORTING{
		rr.AgentDomain,
	}
}

func (rr *COOKIE) Clone() RR {
	return &COOKIE{
		rr.Cookie,
	}
}

func (rr *NSID) Clone() RR {
	return &NSID{
		rr.Nsid,
	}
}

func (rr *PADDING) Clone() RR {
	return &PADDING{
		rr.Padding,
	}
}

func (rr *EXPIRE) Clone() RR {
	return &EXPIRE{
		rr.Expire,
	}
}

func (rr *DAU) Clone() RR {
	return &DAU{
		slices.Clone(rr.AlgCode),
	}
}

func (rr *DHU) Clone() RR {
	return &DHU{
		slices.Clone(rr.AlgCode),
	}
}

func (rr *N3U) Clone() RR {
	return &N3U{
		slices.Clone(rr.AlgCode),
	}
}

func (rr *TCPKEEPALIVE) Clone() RR {
	return &TCPKEEPALIVE{
		rr.Timeout,
	}
}

func (rr *EDE) Clone() RR {
	return &EDE{
		rr.InfoCode,
		rr.ExtraText,
	}
}

func (rr *SUBNET) Clone() RR {
	return &SUBNET{
		rr.Family,
		rr.Netmask,
		rr.Scope,
		rr.Address,
	}
}

func (rr *ESU) Clone() RR {
	return &ESU{
		rr.URI,
	}
}

func (rr *ZONEVERSION) Clone() RR {
	return &ZONEVERSION{
		rr.Labels,
		rr.Type,
		slices.Clone(rr.Version),
	}
}

func (rr *MQQUERY) Clone() RR {
	return &MQQUERY{
		slices.Clone(rr.Types),
	}
}

func (rr *MQRESPONSE) Clone() RR {
	return &MQRESPONSE{
		slices.Clone(rr.Types),
	}
}

func (rr *ERFC3597) Clone() RR {
	return &ERFC3597{
		rr.EDNS0Code,
		rr.Code,
	}
}

func (rr *KEEPALIVE) Clone() RR {
	return &KEEPALIVE{
		rr.Timeout,
		rr.Interval,
	}
}

func (rr *RETRYDELAY) Clone() RR {
	return &RETRYDELAY{
		rr.Delay,
	}
}

func (rr *DPADDING) Clone() RR {
	return &DPADDING{
		rr.Padding,
	}
}
