diff --git a/vendor/go.uber.org/atomic/uint64.go b/vendor/go.uber.org/atomic/uint64.go
index 2f2a7db..3b6c71f 100644
--- a/vendor/go.uber.org/atomic/uint64.go
+++ b/vendor/go.uber.org/atomic/uint64.go
@@ -1,6 +1,6 @@
 // @generated Code generated by gen-atomicint.
 
-// Copyright (c) 2020-2021 Uber Technologies, Inc.
+// Copyright (c) 2020 Uber Technologies, Inc.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -36,8 +36,8 @@
 }
 
 // NewUint64 creates a new Uint64.
-func NewUint64(val uint64) *Uint64 {
-	return &Uint64{v: val}
+func NewUint64(i uint64) *Uint64 {
+	return &Uint64{v: i}
 }
 
 // Load atomically loads the wrapped value.
@@ -46,13 +46,13 @@
 }
 
 // Add atomically adds to the wrapped uint64 and returns the new value.
-func (i *Uint64) Add(delta uint64) uint64 {
-	return atomic.AddUint64(&i.v, delta)
+func (i *Uint64) Add(n uint64) uint64 {
+	return atomic.AddUint64(&i.v, n)
 }
 
 // Sub atomically subtracts from the wrapped uint64 and returns the new value.
-func (i *Uint64) Sub(delta uint64) uint64 {
-	return atomic.AddUint64(&i.v, ^(delta - 1))
+func (i *Uint64) Sub(n uint64) uint64 {
+	return atomic.AddUint64(&i.v, ^(n - 1))
 }
 
 // Inc atomically increments the wrapped uint64 and returns the new value.
@@ -66,18 +66,18 @@
 }
 
 // CAS is an atomic compare-and-swap.
-func (i *Uint64) CAS(old, new uint64) (swapped bool) {
+func (i *Uint64) CAS(old, new uint64) bool {
 	return atomic.CompareAndSwapUint64(&i.v, old, new)
 }
 
 // Store atomically stores the passed value.
-func (i *Uint64) Store(val uint64) {
-	atomic.StoreUint64(&i.v, val)
+func (i *Uint64) Store(n uint64) {
+	atomic.StoreUint64(&i.v, n)
 }
 
 // Swap atomically swaps the wrapped uint64 and returns the old value.
-func (i *Uint64) Swap(val uint64) (old uint64) {
-	return atomic.SwapUint64(&i.v, val)
+func (i *Uint64) Swap(n uint64) uint64 {
+	return atomic.SwapUint64(&i.v, n)
 }
 
 // MarshalJSON encodes the wrapped uint64 into JSON.
