From db3f99568aa3a4f802f386a3f776cf18a98af3f7 Mon Sep 17 00:00:00 2001
From: renovate <renovate-bot@autistici.org>
Date: Fri, 25 Nov 2022 16:26:19 +0000
Subject: [PATCH] Update git.autistici.org/ai3/go-common digest to 0630401

---
 go.mod                                        |    2 +-
 go.sum                                        |   16 +
 vendor/git.autistici.org/ai3/go-common/go.mod |   17 +-
 vendor/git.autistici.org/ai3/go-common/go.sum |   24 +-
 .../ai3/go-common/tracing/tracing.go          |   73 +-
 .../coreos/go-systemd/v22/daemon/watchdog.go  |    4 +-
 .../contrib/propagators/b3/LICENSE            |  201 +++
 .../contrib/propagators/b3/b3_config.go       |   77 +
 .../contrib/propagators/b3/b3_propagator.go   |  341 ++++
 .../contrib/propagators/b3/context.go         |   60 +
 .../propagators/b3/doc.go}                    |    9 +-
 .../contrib/propagators/b3/go.mod             |   18 +
 .../contrib/propagators/b3/go.sum             |   26 +
 .../propagators/b3/version.go}                |   16 +-
 vendor/go.opentelemetry.io/otel/CHANGELOG.md  |   19 +-
 vendor/go.opentelemetry.io/otel/README.md     |   26 +-
 vendor/go.opentelemetry.io/otel/go.mod        |    2 +-
 .../v1.4.0 => sdk/instrumentation}/doc.go     |   14 +-
 .../otel/sdk/instrumentation/library.go       |    7 -
 .../otel/sdk/instrumentation/scope.go         |    7 -
 .../otel/sdk/trace/provider.go                |   30 +-
 .../otel/sdk/trace/sampling.go                |    1 +
 .../otel/sdk/trace/span.go                    |   36 +-
 .../otel/sdk/trace/tracer.go                  |    5 +
 .../otel/semconv/v1.4.0/http.go               |  114 --
 .../otel/semconv/v1.4.0/resource.go           |  906 -----------
 .../otel/semconv/v1.4.0/trace.go              | 1378 -----------------
 vendor/go.opentelemetry.io/otel/trace.go      |    7 +-
 vendor/go.opentelemetry.io/otel/trace/go.mod  |    2 +-
 .../go.opentelemetry.io/otel/trace/trace.go   |   69 +-
 .../otel/trace/tracestate.go                  |   12 +-
 vendor/go.opentelemetry.io/otel/version.go    |    2 +-
 vendor/go.opentelemetry.io/otel/versions.yaml |    2 +-
 .../x/sync/singleflight/singleflight.go       |   11 +-
 vendor/modules.txt                            |   15 +-
 35 files changed, 1018 insertions(+), 2531 deletions(-)
 create mode 100644 vendor/go.opentelemetry.io/contrib/propagators/b3/LICENSE
 create mode 100644 vendor/go.opentelemetry.io/contrib/propagators/b3/b3_config.go
 create mode 100644 vendor/go.opentelemetry.io/contrib/propagators/b3/b3_propagator.go
 create mode 100644 vendor/go.opentelemetry.io/contrib/propagators/b3/context.go
 rename vendor/go.opentelemetry.io/{otel/semconv/v1.4.0/exception.go => contrib/propagators/b3/doc.go} (75%)
 create mode 100644 vendor/go.opentelemetry.io/contrib/propagators/b3/go.mod
 create mode 100644 vendor/go.opentelemetry.io/contrib/propagators/b3/go.sum
 rename vendor/go.opentelemetry.io/{otel/semconv/v1.4.0/schema.go => contrib/propagators/b3/version.go} (61%)
 rename vendor/go.opentelemetry.io/otel/{semconv/v1.4.0 => sdk/instrumentation}/doc.go (51%)
 delete mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.4.0/http.go
 delete mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.4.0/resource.go
 delete mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.4.0/trace.go

diff --git a/go.mod b/go.mod
index f7f5d9c6..b609f98d 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,7 @@ module git.autistici.org/ai3/tools/acmeserver
 go 1.14
 
 require (
-	git.autistici.org/ai3/go-common v0.0.0-20220814151247-39e01d32d5ee
+	git.autistici.org/ai3/go-common v0.0.0-20221125154433-06304016b1da
 	git.autistici.org/ai3/tools/replds v0.0.0-20220814170053-28106a9463f5
 	github.com/miekg/dns v1.1.50
 	github.com/prometheus/client_golang v1.12.2
diff --git a/go.sum b/go.sum
index a3c5b1b7..f925beea 100644
--- a/go.sum
+++ b/go.sum
@@ -52,6 +52,8 @@ contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcig
 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
 git.autistici.org/ai3/go-common v0.0.0-20220814151247-39e01d32d5ee h1:EPfpfiG3vK9xoMt2sGclSaEXLikOCX1NfqUFRJXV4nk=
 git.autistici.org/ai3/go-common v0.0.0-20220814151247-39e01d32d5ee/go.mod h1:yhMB8VKJBBr+EKMft7MtqHVO73vkwdq/O5sVDTs/CNI=
+git.autistici.org/ai3/go-common v0.0.0-20221125154433-06304016b1da h1:fizdAjFv2vWz+83IoeRW2L0Shyo3dDquXyQKWRGs4jc=
+git.autistici.org/ai3/go-common v0.0.0-20221125154433-06304016b1da/go.mod h1:FTGqOGPpuoFg7TiHshYCyp5j1Ab3ek0J0KcS++vEjxw=
 git.autistici.org/ai3/tools/replds v0.0.0-20220814170053-28106a9463f5 h1:E5enMbOmQkRkLVbYks2Makfg3wd3fOxYDK9ksGOqS7c=
 git.autistici.org/ai3/tools/replds v0.0.0-20220814170053-28106a9463f5/go.mod h1:DDsdq6Fs+uWfzRIuj8JncnTrfy+NRwfGHxk6OViV8T0=
 github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU=
@@ -178,6 +180,8 @@ github.com/coreos/go-systemd/v22 v22.1.0 h1:kq/SbG2BCKLkDKkjQf5OWwKWUKj1lgs3lFI4
 github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
 github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI=
 github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
+github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
 github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
@@ -332,6 +336,7 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-github/v28 v28.1.1/go.mod h1:bsqJWQX05omyWVmc00nEUql9mhQyv38lDZ8kPZcQVoM=
 github.com/google/go-licenses v0.0.0-20210329231322-ce1d9163b77d/go.mod h1:+TYOmkVoJOpwnS0wfdsJCV9CoD5nJYsHoFk/0CrTK4M=
 github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
@@ -519,6 +524,7 @@ github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lL
 github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
 github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
 github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
+github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
 github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo=
 github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
@@ -805,18 +811,26 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
 go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.34.0 h1:9NkMW03wwEzPtP/KciZ4Ozu/Uz5ZA7kfqXJIObnrjGU=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.34.0/go.mod h1:548ZsYzmT4PL4zWKRd8q/N4z0Wxzn/ZxUE+lkEpwWQA=
+go.opentelemetry.io/contrib/propagators/b3 v1.9.0 h1:Lzb9zU98jCE2kyfCjWfSSsiQoGtvBL+COxvUBf7FNhU=
+go.opentelemetry.io/contrib/propagators/b3 v1.9.0/go.mod h1:fyx3gFXn+4w5uWTTiqaI8oBNBW/6w9Ow5zxXf7NGixU=
 go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM=
 go.opentelemetry.io/otel v1.9.0 h1:8WZNQFIB2a71LnANS9JeyidJKKGOOremcUtb/OtHISw=
 go.opentelemetry.io/otel v1.9.0/go.mod h1:np4EoPGzoPs3O67xUVNoPPcmSvsfOxNlNA4F4AC+0Eo=
+go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4=
+go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ=
 go.opentelemetry.io/otel/exporters/zipkin v1.9.0 h1:06b/nt6xao6th00aue9WU3ZDTTe+InaMXA/vym6pLuA=
 go.opentelemetry.io/otel/exporters/zipkin v1.9.0/go.mod h1:HyIvYIu37wV4Wx5azd7e05x9k/dOz9KB4x0plw2QNvs=
 go.opentelemetry.io/otel/metric v0.31.0 h1:6SiklT+gfWAwWUR0meEMxQBtihpiEs4c+vL9spDTqUs=
 go.opentelemetry.io/otel/metric v0.31.0/go.mod h1:ohmwj9KTSIeBnDBm/ZwH2PSZxZzoOaG2xZeekTRzL5A=
 go.opentelemetry.io/otel/sdk v1.9.0 h1:LNXp1vrr83fNXTHgU8eO89mhzxb/bbWAsHG6fNf3qWo=
 go.opentelemetry.io/otel/sdk v1.9.0/go.mod h1:AEZc8nt5bd2F7BC24J5R0mrjYnpEgYHyTcM/vrSple4=
+go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY=
+go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE=
 go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4=
 go.opentelemetry.io/otel/trace v1.9.0 h1:oZaCNJUjWcg60VXWee8lJKlqhPbXAPB51URuR47pQYc=
 go.opentelemetry.io/otel/trace v1.9.0/go.mod h1:2737Q0MuG8q1uILYm2YYVkAyLtOofiTNGg6VODnOiPo=
+go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E=
+go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
@@ -986,6 +1000,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cO
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
+golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
diff --git a/vendor/git.autistici.org/ai3/go-common/go.mod b/vendor/git.autistici.org/ai3/go-common/go.mod
index 6c3c91af..e7ea675d 100644
--- a/vendor/git.autistici.org/ai3/go-common/go.mod
+++ b/vendor/git.autistici.org/ai3/go-common/go.mod
@@ -7,25 +7,26 @@ require (
 	github.com/amoghe/go-crypt v0.0.0-20220222110647-20eada5f5964
 	github.com/bbrks/wrap/v2 v2.5.0
 	github.com/cenkalti/backoff/v4 v4.1.3
-	github.com/coreos/go-systemd/v22 v22.3.2
+	github.com/coreos/go-systemd/v22 v22.5.0
 	github.com/duo-labs/webauthn v0.0.0-20220330035159-03696f3d4499
 	github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594
 	github.com/fxamacker/cbor/v2 v2.4.0
 	github.com/go-asn1-ber/asn1-ber v1.5.4
 	github.com/go-ldap/ldap/v3 v3.4.4
 	github.com/gofrs/flock v0.8.0 // indirect
-	github.com/google/go-cmp v0.5.8
+	github.com/google/go-cmp v0.5.9
 	github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40
-	github.com/mattn/go-sqlite3 v1.14.14
+	github.com/mattn/go-sqlite3 v1.14.16
 	github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75
 	github.com/prometheus/client_golang v1.12.2
 	github.com/russross/blackfriday/v2 v2.1.0
 	github.com/theckman/go-flock v0.8.1
 	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.34.0
-	go.opentelemetry.io/otel v1.9.0
+	go.opentelemetry.io/contrib/propagators/b3 v1.9.0
+	go.opentelemetry.io/otel v1.10.0
 	go.opentelemetry.io/otel/exporters/zipkin v1.9.0
-	go.opentelemetry.io/otel/sdk v1.9.0
-	go.opentelemetry.io/otel/trace v1.9.0
-	golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa
-	golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4
+	go.opentelemetry.io/otel/sdk v1.10.0
+	go.opentelemetry.io/otel/trace v1.10.0
+	golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90
+	golang.org/x/sync v0.1.0
 )
diff --git a/vendor/git.autistici.org/ai3/go-common/go.sum b/vendor/git.autistici.org/ai3/go-common/go.sum
index 2cc4a889..51a5957f 100644
--- a/vendor/git.autistici.org/ai3/go-common/go.sum
+++ b/vendor/git.autistici.org/ai3/go-common/go.sum
@@ -186,6 +186,8 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7
 github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
 github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI=
 github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
+github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
 github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk=
@@ -358,6 +360,8 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-github/v28 v28.1.1/go.mod h1:bsqJWQX05omyWVmc00nEUql9mhQyv38lDZ8kPZcQVoM=
 github.com/google/go-licenses v0.0.0-20210329231322-ce1d9163b77d/go.mod h1:+TYOmkVoJOpwnS0wfdsJCV9CoD5nJYsHoFk/0CrTK4M=
 github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
@@ -554,8 +558,8 @@ github.com/mattn/go-shellwords v1.0.10/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lL
 github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
 github.com/mattn/go-sqlite3 v1.14.7 h1:fxWBnXkxfM6sRiuH3bqJ4CfzZojMOLVc0UTsTglEghA=
 github.com/mattn/go-sqlite3 v1.14.7/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
-github.com/mattn/go-sqlite3 v1.14.14 h1:qZgc/Rwetq+MtyE18WhzjokPD93dNqLGNT3QJuLvBGw=
-github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
+github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
+github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
 github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo=
 github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
@@ -860,18 +864,26 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
 go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.34.0 h1:9NkMW03wwEzPtP/KciZ4Ozu/Uz5ZA7kfqXJIObnrjGU=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.34.0/go.mod h1:548ZsYzmT4PL4zWKRd8q/N4z0Wxzn/ZxUE+lkEpwWQA=
+go.opentelemetry.io/contrib/propagators/b3 v1.9.0 h1:Lzb9zU98jCE2kyfCjWfSSsiQoGtvBL+COxvUBf7FNhU=
+go.opentelemetry.io/contrib/propagators/b3 v1.9.0/go.mod h1:fyx3gFXn+4w5uWTTiqaI8oBNBW/6w9Ow5zxXf7NGixU=
 go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM=
 go.opentelemetry.io/otel v1.9.0 h1:8WZNQFIB2a71LnANS9JeyidJKKGOOremcUtb/OtHISw=
 go.opentelemetry.io/otel v1.9.0/go.mod h1:np4EoPGzoPs3O67xUVNoPPcmSvsfOxNlNA4F4AC+0Eo=
+go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4=
+go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ=
 go.opentelemetry.io/otel/exporters/zipkin v1.9.0 h1:06b/nt6xao6th00aue9WU3ZDTTe+InaMXA/vym6pLuA=
 go.opentelemetry.io/otel/exporters/zipkin v1.9.0/go.mod h1:HyIvYIu37wV4Wx5azd7e05x9k/dOz9KB4x0plw2QNvs=
 go.opentelemetry.io/otel/metric v0.31.0 h1:6SiklT+gfWAwWUR0meEMxQBtihpiEs4c+vL9spDTqUs=
 go.opentelemetry.io/otel/metric v0.31.0/go.mod h1:ohmwj9KTSIeBnDBm/ZwH2PSZxZzoOaG2xZeekTRzL5A=
 go.opentelemetry.io/otel/sdk v1.9.0 h1:LNXp1vrr83fNXTHgU8eO89mhzxb/bbWAsHG6fNf3qWo=
 go.opentelemetry.io/otel/sdk v1.9.0/go.mod h1:AEZc8nt5bd2F7BC24J5R0mrjYnpEgYHyTcM/vrSple4=
+go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY=
+go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE=
 go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4=
 go.opentelemetry.io/otel/trace v1.9.0 h1:oZaCNJUjWcg60VXWee8lJKlqhPbXAPB51URuR47pQYc=
 go.opentelemetry.io/otel/trace v1.9.0/go.mod h1:2737Q0MuG8q1uILYm2YYVkAyLtOofiTNGg6VODnOiPo=
+go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E=
+go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
@@ -911,8 +923,8 @@ golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWP
 golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
 golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c=
-golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 h1:Y/gsMcFOcR+6S6f3YeMKl5g+dZMEWqcz5Czj/GWYbkM=
+golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -1036,8 +1048,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
+golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
diff --git a/vendor/git.autistici.org/ai3/go-common/tracing/tracing.go b/vendor/git.autistici.org/ai3/go-common/tracing/tracing.go
index d4185014..1becbf10 100644
--- a/vendor/git.autistici.org/ai3/go-common/tracing/tracing.go
+++ b/vendor/git.autistici.org/ai3/go-common/tracing/tracing.go
@@ -9,24 +9,24 @@ import (
 	"os"
 	"path/filepath"
 	"strconv"
+	"strings"
 	"sync"
 
 	othttp "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+	b3 "go.opentelemetry.io/contrib/propagators/b3"
 	"go.opentelemetry.io/otel"
+	"go.opentelemetry.io/otel/attribute"
 	"go.opentelemetry.io/otel/exporters/zipkin"
+	"go.opentelemetry.io/otel/propagation"
 	"go.opentelemetry.io/otel/sdk/resource"
 	"go.opentelemetry.io/otel/sdk/trace"
-	semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
-	apitrace "go.opentelemetry.io/otel/trace"
+	semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
 )
 
 var (
 	// Enabled reports whether tracing is globally enabled or not.
 	Enabled bool
 
-	// Global Tracer instance.
-	Tracer apitrace.Tracer
-
 	initOnce sync.Once
 )
 
@@ -72,16 +72,42 @@ func getServiceName() string {
 	if s := os.Getenv("TRACING_SERVICE"); s != "" {
 		return s
 	}
-	return filepath.Base(os.Args[0])
+	if s, err := os.Executable(); err == nil {
+		return filepath.Base(s)
+	}
+	return "unknown_service"
 }
 
-func defaultResource() *resource.Resource {
+func defaultResource(serviceName string) *resource.Resource {
+	attrs := []attribute.KeyValue{
+		semconv.ServiceNameKey.String(serviceName),
+	}
+
+	if s, err := os.Hostname(); err == nil {
+		attrs = append(attrs, semconv.HostNameKey.String(s))
+	}
+	if s := os.Getenv("FLOAT_SERVICE"); s != "" {
+		attrs = append(attrs, attribute.Key("float.service").String(s))
+	}
+	if s := os.Getenv("FLOAT_CONTAINER_NAME"); s != "" {
+		attrs = append(attrs, semconv.ContainerNameKey.String(s))
+	}
+	if s := os.Getenv("FLOAT_CONTAINER_IMAGE"); s != "" {
+		imageName := s
+		tag := "latest"
+		if strings.Contains(imageName, ":") {
+			parts := strings.SplitN(imageName, ":", 2)
+			imageName = parts[0]
+			tag = parts[1]
+		}
+
+		attrs = append(attrs, semconv.ContainerImageNameKey.String(imageName))
+		attrs = append(attrs, semconv.ContainerImageTagKey.String(tag))
+	}
+
 	r, _ := resource.Merge(
 		resource.Default(),
-		resource.NewWithAttributes(
-			semconv.SchemaURL,
-			semconv.ServiceNameKey.String(getServiceName()),
-		),
+		resource.NewWithAttributes(semconv.SchemaURL, attrs...),
 	)
 	return r
 }
@@ -111,6 +137,9 @@ func initTracing(serviceName string) {
 			return
 		}
 
+		// The sampling policy only applies to incoming requests for
+		// which tracing is not already enabled: in this case, we
+		// always pass-through.
 		var sampler trace.Sampler
 		switch config.Sample {
 		case "", "always":
@@ -127,13 +156,18 @@ func initTracing(serviceName string) {
 		}
 
 		tp := trace.NewTracerProvider(
-			trace.WithSampler(sampler),
-			trace.WithResource(defaultResource()),
+			trace.WithSampler(trace.ParentBased(sampler)),
 			trace.WithBatcher(ze),
+			trace.WithResource(defaultResource(serviceName)),
 		)
 
 		otel.SetTracerProvider(tp)
-		Tracer = tp.Tracer(serviceName)
+
+		otel.SetTextMapPropagator(
+			propagation.NewCompositeTextMapPropagator(
+				propagation.TraceContext{},
+				propagation.Baggage{},
+				b3.New()))
 
 		log.Printf("tracing enabled (report_url %s)", config.ReportURL)
 
@@ -143,7 +177,7 @@ func initTracing(serviceName string) {
 
 // Init tracing support, if not using WrapHandler.
 func Init() {
-	initTracing("")
+	initTracing(getServiceName())
 }
 
 // WrapTransport optionally wraps a http.RoundTripper with OpenCensus
@@ -165,5 +199,12 @@ func WrapHandler(h http.Handler, endpointAddr string) http.Handler {
 	if !Enabled {
 		return h
 	}
-	return othttp.NewHandler(h, serviceName)
+
+	// Format span names with the request URL path.
+	return othttp.NewHandler(
+		h, serviceName,
+		othttp.WithSpanNameFormatter(func(op string, r *http.Request) string {
+			return r.URL.Path
+		}),
+	)
 }
diff --git a/vendor/github.com/coreos/go-systemd/v22/daemon/watchdog.go b/vendor/github.com/coreos/go-systemd/v22/daemon/watchdog.go
index 7a0e0d3a..25d9c1aa 100644
--- a/vendor/github.com/coreos/go-systemd/v22/daemon/watchdog.go
+++ b/vendor/github.com/coreos/go-systemd/v22/daemon/watchdog.go
@@ -30,8 +30,8 @@ import (
 // It returns one of the following:
 // (0, nil) - watchdog isn't enabled or we aren't the watched PID.
 // (0, err) - an error happened (e.g. error converting time).
-// (time, nil) - watchdog is enabled and we can send ping.
-//   time is delay before inactive service will be killed.
+// (time, nil) - watchdog is enabled and we can send ping.  time is delay
+// before inactive service will be killed.
 func SdWatchdogEnabled(unsetEnvironment bool) (time.Duration, error) {
 	wusec := os.Getenv("WATCHDOG_USEC")
 	wpid := os.Getenv("WATCHDOG_PID")
diff --git a/vendor/go.opentelemetry.io/contrib/propagators/b3/LICENSE b/vendor/go.opentelemetry.io/contrib/propagators/b3/LICENSE
new file mode 100644
index 00000000..261eeb9e
--- /dev/null
+++ b/vendor/go.opentelemetry.io/contrib/propagators/b3/LICENSE
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/vendor/go.opentelemetry.io/contrib/propagators/b3/b3_config.go b/vendor/go.opentelemetry.io/contrib/propagators/b3/b3_config.go
new file mode 100644
index 00000000..b09dbd3f
--- /dev/null
+++ b/vendor/go.opentelemetry.io/contrib/propagators/b3/b3_config.go
@@ -0,0 +1,77 @@
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package b3 // import "go.opentelemetry.io/contrib/propagators/b3"
+
+type config struct {
+	// InjectEncoding are the B3 encodings used when injecting trace
+	// information. If no encoding is specified (i.e. `B3Unspecified`)
+	// `B3SingleHeader` will be used as the default.
+	InjectEncoding Encoding
+}
+
+// Option interface used for setting optional config properties.
+type Option interface {
+	apply(*config)
+}
+
+type optionFunc func(*config)
+
+func (o optionFunc) apply(c *config) {
+	o(c)
+}
+
+// newConfig creates a new config struct and applies opts to it.
+func newConfig(opts ...Option) *config {
+	c := &config{}
+	for _, opt := range opts {
+		opt.apply(c)
+	}
+	return c
+}
+
+// Encoding is a bitmask representation of the B3 encoding type.
+type Encoding uint8
+
+// supports returns if e has o bit(s) set.
+func (e Encoding) supports(o Encoding) bool {
+	return e&o == o
+}
+
+const (
+	// B3Unspecified is an unspecified B3 encoding.
+	B3Unspecified Encoding = 0
+	// B3MultipleHeader is a B3 encoding that uses multiple headers to
+	// transmit tracing information all prefixed with `x-b3-`.
+	//    x-b3-traceid: {TraceId}
+	//    x-b3-parentspanid: {ParentSpanId}
+	//    x-b3-spanid: {SpanId}
+	//    x-b3-sampled: {SamplingState}
+	//    x-b3-flags: {DebugFlag}
+	B3MultipleHeader Encoding = 1 << iota
+	// B3SingleHeader is a B3 encoding that uses a single header named `b3`
+	// to transmit tracing information.
+	//    b3: {TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}
+	B3SingleHeader
+)
+
+// WithInjectEncoding sets the encoding the propagator will inject.
+// The encoding is interpreted as a bitmask. Therefore
+//   WithInjectEncoding(B3SingleHeader | B3MultipleHeader)
+// means the propagator will inject both single and multi B3 headers.
+func WithInjectEncoding(encoding Encoding) Option {
+	return optionFunc(func(c *config) {
+		c.InjectEncoding = encoding
+	})
+}
diff --git a/vendor/go.opentelemetry.io/contrib/propagators/b3/b3_propagator.go b/vendor/go.opentelemetry.io/contrib/propagators/b3/b3_propagator.go
new file mode 100644
index 00000000..17dfa0ba
--- /dev/null
+++ b/vendor/go.opentelemetry.io/contrib/propagators/b3/b3_propagator.go
@@ -0,0 +1,341 @@
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package b3 // import "go.opentelemetry.io/contrib/propagators/b3"
+
+import (
+	"context"
+	"errors"
+	"strings"
+
+	"go.opentelemetry.io/otel/propagation"
+	"go.opentelemetry.io/otel/trace"
+)
+
+const (
+	// Default B3 Header names.
+	b3ContextHeader      = "b3"
+	b3DebugFlagHeader    = "x-b3-flags"
+	b3TraceIDHeader      = "x-b3-traceid"
+	b3SpanIDHeader       = "x-b3-spanid"
+	b3SampledHeader      = "x-b3-sampled"
+	b3ParentSpanIDHeader = "x-b3-parentspanid"
+
+	b3TraceIDPadding = "0000000000000000"
+
+	// B3 Single Header encoding widths.
+	separatorWidth      = 1       // Single "-" character.
+	samplingWidth       = 1       // Single hex character.
+	traceID64BitsWidth  = 64 / 4  // 16 hex character Trace ID.
+	traceID128BitsWidth = 128 / 4 // 32 hex character Trace ID.
+	spanIDWidth         = 16      // 16 hex character ID.
+	parentSpanIDWidth   = 16      // 16 hex character ID.
+)
+
+var (
+	empty = trace.SpanContext{}
+
+	errInvalidSampledByte        = errors.New("invalid B3 Sampled found")
+	errInvalidSampledHeader      = errors.New("invalid B3 Sampled header found")
+	errInvalidTraceIDHeader      = errors.New("invalid B3 traceID header found")
+	errInvalidSpanIDHeader       = errors.New("invalid B3 spanID header found")
+	errInvalidParentSpanIDHeader = errors.New("invalid B3 ParentSpanID header found")
+	errInvalidScope              = errors.New("require either both traceID and spanID or none")
+	errInvalidScopeParent        = errors.New("traceID and spanID required for ParentSpanID")
+	errInvalidScopeParentSingle  = errors.New("traceID, spanID and Sampled required for ParentSpanID")
+	errEmptyContext              = errors.New("empty request context")
+	errInvalidTraceIDValue       = errors.New("invalid B3 traceID value found")
+	errInvalidSpanIDValue        = errors.New("invalid B3 spanID value found")
+	errInvalidParentSpanIDValue  = errors.New("invalid B3 ParentSpanID value found")
+)
+
+type propagator struct {
+	cfg config
+}
+
+var _ propagation.TextMapPropagator = propagator{}
+
+// New creates a B3 implementation of propagation.TextMapPropagator.
+// B3 propagator serializes SpanContext to/from B3 Headers.
+// This propagator supports both versions of B3 headers,
+//  1. Single Header:
+//    b3: {TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}
+//  2. Multiple Headers:
+//    x-b3-traceid: {TraceId}
+//    x-b3-parentspanid: {ParentSpanId}
+//    x-b3-spanid: {SpanId}
+//    x-b3-sampled: {SamplingState}
+//    x-b3-flags: {DebugFlag}
+// The Single Header propagator is used by default.
+func New(opts ...Option) propagation.TextMapPropagator {
+	cfg := newConfig(opts...)
+	return propagator{
+		cfg: *cfg,
+	}
+}
+
+// Inject injects a context into the carrier as B3 headers.
+// The parent span ID is omitted because it is not tracked in the
+// SpanContext.
+func (b3 propagator) Inject(ctx context.Context, carrier propagation.TextMapCarrier) {
+	sc := trace.SpanFromContext(ctx).SpanContext()
+
+	if b3.cfg.InjectEncoding.supports(B3SingleHeader) || b3.cfg.InjectEncoding == B3Unspecified {
+		header := []string{}
+		if sc.TraceID().IsValid() && sc.SpanID().IsValid() {
+			header = append(header, sc.TraceID().String(), sc.SpanID().String())
+		}
+
+		if debugFromContext(ctx) {
+			header = append(header, "d")
+		} else if !(deferredFromContext(ctx)) {
+			if sc.IsSampled() {
+				header = append(header, "1")
+			} else {
+				header = append(header, "0")
+			}
+		}
+
+		carrier.Set(b3ContextHeader, strings.Join(header, "-"))
+	}
+
+	if b3.cfg.InjectEncoding.supports(B3MultipleHeader) {
+		if sc.TraceID().IsValid() && sc.SpanID().IsValid() {
+			carrier.Set(b3TraceIDHeader, sc.TraceID().String())
+			carrier.Set(b3SpanIDHeader, sc.SpanID().String())
+		}
+
+		if debugFromContext(ctx) {
+			// Since Debug implies deferred, don't also send "X-B3-Sampled".
+			carrier.Set(b3DebugFlagHeader, "1")
+		} else if !(deferredFromContext(ctx)) {
+			if sc.IsSampled() {
+				carrier.Set(b3SampledHeader, "1")
+			} else {
+				carrier.Set(b3SampledHeader, "0")
+			}
+		}
+	}
+}
+
+// Extract extracts a context from the carrier if it contains B3 headers.
+func (b3 propagator) Extract(ctx context.Context, carrier propagation.TextMapCarrier) context.Context {
+	var (
+		sc  trace.SpanContext
+		err error
+	)
+
+	// Default to Single Header if a valid value exists.
+	if h := carrier.Get(b3ContextHeader); h != "" {
+		ctx, sc, err = extractSingle(ctx, h)
+		if err == nil && sc.IsValid() {
+			return trace.ContextWithRemoteSpanContext(ctx, sc)
+		}
+		// The Single Header value was invalid, fallback to Multiple Header.
+	}
+
+	var (
+		traceID      = carrier.Get(b3TraceIDHeader)
+		spanID       = carrier.Get(b3SpanIDHeader)
+		parentSpanID = carrier.Get(b3ParentSpanIDHeader)
+		sampled      = carrier.Get(b3SampledHeader)
+		debugFlag    = carrier.Get(b3DebugFlagHeader)
+	)
+	ctx, sc, err = extractMultiple(ctx, traceID, spanID, parentSpanID, sampled, debugFlag)
+	if err != nil || !sc.IsValid() {
+		// clear the deferred flag if we don't have a valid SpanContext
+		return withDeferred(ctx, false)
+	}
+	return trace.ContextWithRemoteSpanContext(ctx, sc)
+}
+
+func (b3 propagator) Fields() []string {
+	header := []string{}
+	if b3.cfg.InjectEncoding.supports(B3SingleHeader) {
+		header = append(header, b3ContextHeader)
+	}
+	if b3.cfg.InjectEncoding.supports(B3MultipleHeader) || b3.cfg.InjectEncoding == B3Unspecified {
+		header = append(header, b3TraceIDHeader, b3SpanIDHeader, b3SampledHeader, b3DebugFlagHeader)
+	}
+	return header
+}
+
+// extractMultiple reconstructs a SpanContext from header values based on B3
+// Multiple header. It is based on the implementation found here:
+// https://github.com/openzipkin/zipkin-go/blob/v0.2.2/propagation/b3/spancontext.go
+// and adapted to support a SpanContext.
+func extractMultiple(ctx context.Context, traceID, spanID, parentSpanID, sampled, flags string) (context.Context, trace.SpanContext, error) {
+	var (
+		err           error
+		requiredCount int
+		scc           = trace.SpanContextConfig{}
+	)
+
+	// correct values for an existing sampled header are "0" and "1".
+	// For legacy support and  being lenient to other tracing implementations we
+	// allow "true" and "false" as inputs for interop purposes.
+	switch strings.ToLower(sampled) {
+	case "0", "false":
+		// Zero value for TraceFlags sample bit is unset.
+	case "1", "true":
+		scc.TraceFlags = trace.FlagsSampled
+	case "":
+		ctx = withDeferred(ctx, true)
+	default:
+		return ctx, empty, errInvalidSampledHeader
+	}
+
+	// The only accepted value for Flags is "1". This will set Debug bitmask and
+	// sampled bitmask to 1 since debug implicitly means sampled. All other
+	// values and omission of header will be ignored. According to the spec. User
+	// shouldn't send X-B3-Sampled header along with X-B3-Flags header. Thus we will
+	// ignore X-B3-Sampled header when X-B3-Flags header is sent and valid.
+	if flags == "1" {
+		ctx = withDeferred(ctx, false)
+		ctx = withDebug(ctx, true)
+		scc.TraceFlags |= trace.FlagsSampled
+	}
+
+	if traceID != "" {
+		requiredCount++
+		id := traceID
+		if len(traceID) == 16 {
+			// Pad 64-bit trace IDs.
+			id = b3TraceIDPadding + traceID
+		}
+		if scc.TraceID, err = trace.TraceIDFromHex(id); err != nil {
+			return ctx, empty, errInvalidTraceIDHeader
+		}
+	}
+
+	if spanID != "" {
+		requiredCount++
+		if scc.SpanID, err = trace.SpanIDFromHex(spanID); err != nil {
+			return ctx, empty, errInvalidSpanIDHeader
+		}
+	}
+
+	if requiredCount != 0 && requiredCount != 2 {
+		return ctx, empty, errInvalidScope
+	}
+
+	if parentSpanID != "" {
+		if requiredCount == 0 {
+			return ctx, empty, errInvalidScopeParent
+		}
+		// Validate parent span ID but we do not use it so do not save it.
+		if _, err = trace.SpanIDFromHex(parentSpanID); err != nil {
+			return ctx, empty, errInvalidParentSpanIDHeader
+		}
+	}
+
+	return ctx, trace.NewSpanContext(scc), nil
+}
+
+// extractSingle reconstructs a SpanContext from contextHeader based on a B3
+// Single header. It is based on the implementation found here:
+// https://github.com/openzipkin/zipkin-go/blob/v0.2.2/propagation/b3/spancontext.go
+// and adapted to support a SpanContext.
+func extractSingle(ctx context.Context, contextHeader string) (context.Context, trace.SpanContext, error) {
+	if contextHeader == "" {
+		return ctx, empty, errEmptyContext
+	}
+
+	var (
+		scc      = trace.SpanContextConfig{}
+		sampling string
+	)
+
+	headerLen := len(contextHeader)
+
+	switch {
+	case headerLen == samplingWidth:
+		sampling = contextHeader
+	case headerLen == traceID64BitsWidth || headerLen == traceID128BitsWidth:
+		// Trace ID by itself is invalid.
+		return ctx, empty, errInvalidScope
+	case headerLen >= traceID64BitsWidth+spanIDWidth+separatorWidth:
+		pos := 0
+		var traceID string
+		switch {
+		case string(contextHeader[traceID64BitsWidth]) == "-":
+			// traceID must be 64 bits
+			pos += traceID64BitsWidth // {traceID}
+			traceID = b3TraceIDPadding + string(contextHeader[0:pos])
+		case string(contextHeader[32]) == "-":
+			// traceID must be 128 bits
+			pos += traceID128BitsWidth // {traceID}
+			traceID = string(contextHeader[0:pos])
+		default:
+			return ctx, empty, errInvalidTraceIDValue
+		}
+		var err error
+		scc.TraceID, err = trace.TraceIDFromHex(traceID)
+		if err != nil {
+			return ctx, empty, errInvalidTraceIDValue
+		}
+		pos += separatorWidth // {traceID}-
+
+		scc.SpanID, err = trace.SpanIDFromHex(contextHeader[pos : pos+spanIDWidth])
+		if err != nil {
+			return ctx, empty, errInvalidSpanIDValue
+		}
+		pos += spanIDWidth // {traceID}-{spanID}
+
+		if headerLen > pos {
+			if headerLen == pos+separatorWidth {
+				// {traceID}-{spanID}- is invalid.
+				return ctx, empty, errInvalidSampledByte
+			}
+			pos += separatorWidth // {traceID}-{spanID}-
+
+			switch {
+			case headerLen == pos+samplingWidth:
+				sampling = string(contextHeader[pos])
+			case headerLen == pos+parentSpanIDWidth:
+				// {traceID}-{spanID}-{parentSpanID} is invalid.
+				return ctx, empty, errInvalidScopeParentSingle
+			case headerLen == pos+samplingWidth+separatorWidth+parentSpanIDWidth:
+				sampling = string(contextHeader[pos])
+				pos += samplingWidth + separatorWidth // {traceID}-{spanID}-{sampling}-
+
+				// Validate parent span ID but we do not use it so do not
+				// save it.
+				_, err = trace.SpanIDFromHex(contextHeader[pos:])
+				if err != nil {
+					return ctx, empty, errInvalidParentSpanIDValue
+				}
+			default:
+				return ctx, empty, errInvalidParentSpanIDValue
+			}
+		}
+	default:
+		return ctx, empty, errInvalidTraceIDValue
+	}
+	switch sampling {
+	case "":
+		ctx = withDeferred(ctx, true)
+	case "d":
+		ctx = withDebug(ctx, true)
+		scc.TraceFlags = trace.FlagsSampled
+	case "1":
+		scc.TraceFlags = trace.FlagsSampled
+	case "0":
+		// Zero value for TraceFlags sample bit is unset.
+	default:
+		return ctx, empty, errInvalidSampledByte
+	}
+
+	return ctx, trace.NewSpanContext(scc), nil
+}
diff --git a/vendor/go.opentelemetry.io/contrib/propagators/b3/context.go b/vendor/go.opentelemetry.io/contrib/propagators/b3/context.go
new file mode 100644
index 00000000..988cd2ca
--- /dev/null
+++ b/vendor/go.opentelemetry.io/contrib/propagators/b3/context.go
@@ -0,0 +1,60 @@
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package b3 // import "go.opentelemetry.io/contrib/propagators/b3"
+
+import "context"
+
+type b3KeyType int
+
+const (
+	debugKey b3KeyType = iota
+	deferredKey
+)
+
+// withDebug returns a copy of parent with debug set as the debug flag value .
+func withDebug(parent context.Context, debug bool) context.Context {
+	return context.WithValue(parent, debugKey, debug)
+}
+
+// debugFromContext returns the debug value stored in ctx.
+//
+// If no debug value is stored in ctx false is returned.
+func debugFromContext(ctx context.Context) bool {
+	if ctx == nil {
+		return false
+	}
+	if debug, ok := ctx.Value(debugKey).(bool); ok {
+		return debug
+	}
+	return false
+}
+
+// withDeferred returns a copy of parent with deferred set as the deferred flag value .
+func withDeferred(parent context.Context, deferred bool) context.Context {
+	return context.WithValue(parent, deferredKey, deferred)
+}
+
+// deferredFromContext returns the deferred value stored in ctx.
+//
+// If no deferred value is stored in ctx false is returned.
+func deferredFromContext(ctx context.Context) bool {
+	if ctx == nil {
+		return false
+	}
+	if deferred, ok := ctx.Value(deferredKey).(bool); ok {
+		return deferred
+	}
+	return false
+}
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/exception.go b/vendor/go.opentelemetry.io/contrib/propagators/b3/doc.go
similarity index 75%
rename from vendor/go.opentelemetry.io/otel/semconv/v1.4.0/exception.go
rename to vendor/go.opentelemetry.io/contrib/propagators/b3/doc.go
index 311cbf21..21578cfb 100644
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/exception.go
+++ b/vendor/go.opentelemetry.io/contrib/propagators/b3/doc.go
@@ -12,9 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.4.0"
-
-const (
-	// ExceptionEventName is the name of the Span event representing an exception.
-	ExceptionEventName = "exception"
-)
+// Package b3 implements the B3 propagator specification as defined at
+// https://github.com/openzipkin/b3-propagation
+package b3 // import "go.opentelemetry.io/contrib/propagators/b3"
diff --git a/vendor/go.opentelemetry.io/contrib/propagators/b3/go.mod b/vendor/go.opentelemetry.io/contrib/propagators/b3/go.mod
new file mode 100644
index 00000000..78cd1909
--- /dev/null
+++ b/vendor/go.opentelemetry.io/contrib/propagators/b3/go.mod
@@ -0,0 +1,18 @@
+module go.opentelemetry.io/contrib/propagators/b3
+
+go 1.17
+
+require (
+	github.com/google/go-cmp v0.5.8
+	github.com/stretchr/testify v1.8.0
+	go.opentelemetry.io/otel v1.9.0
+	go.opentelemetry.io/otel/trace v1.9.0
+)
+
+require (
+	github.com/davecgh/go-spew v1.1.1 // indirect
+	github.com/go-logr/logr v1.2.3 // indirect
+	github.com/go-logr/stdr v1.2.2 // indirect
+	github.com/pmezard/go-difflib v1.0.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)
diff --git a/vendor/go.opentelemetry.io/contrib/propagators/b3/go.sum b/vendor/go.opentelemetry.io/contrib/propagators/b3/go.sum
new file mode 100644
index 00000000..7b73094a
--- /dev/null
+++ b/vendor/go.opentelemetry.io/contrib/propagators/b3/go.sum
@@ -0,0 +1,26 @@
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
+github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
+github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+go.opentelemetry.io/otel v1.9.0 h1:8WZNQFIB2a71LnANS9JeyidJKKGOOremcUtb/OtHISw=
+go.opentelemetry.io/otel v1.9.0/go.mod h1:np4EoPGzoPs3O67xUVNoPPcmSvsfOxNlNA4F4AC+0Eo=
+go.opentelemetry.io/otel/trace v1.9.0 h1:oZaCNJUjWcg60VXWee8lJKlqhPbXAPB51URuR47pQYc=
+go.opentelemetry.io/otel/trace v1.9.0/go.mod h1:2737Q0MuG8q1uILYm2YYVkAyLtOofiTNGg6VODnOiPo=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/schema.go b/vendor/go.opentelemetry.io/contrib/propagators/b3/version.go
similarity index 61%
rename from vendor/go.opentelemetry.io/otel/semconv/v1.4.0/schema.go
rename to vendor/go.opentelemetry.io/contrib/propagators/b3/version.go
index a78f1bf4..47adc5d6 100644
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/schema.go
+++ b/vendor/go.opentelemetry.io/contrib/propagators/b3/version.go
@@ -12,9 +12,15 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.4.0"
+package b3 // import "go.opentelemetry.io/contrib/propagators/b3"
 
-// SchemaURL is the schema URL that matches the version of the semantic conventions
-// that this package defines. Semconv packages starting from v1.4.0 must declare
-// non-empty schema URL in the form https://opentelemetry.io/schemas/<version>
-const SchemaURL = "https://opentelemetry.io/schemas/1.4.0"
+// Version is the current release version of the B3 propagator.
+func Version() string {
+	return "1.9.0"
+	// This string is updated by the pre_release.sh script during release
+}
+
+// SemVersion is the semantic version to be supplied to tracer/meter creation.
+func SemVersion() string {
+	return "semver:" + Version()
+}
diff --git a/vendor/go.opentelemetry.io/otel/CHANGELOG.md b/vendor/go.opentelemetry.io/otel/CHANGELOG.md
index c9f73af3..906e17ce 100644
--- a/vendor/go.opentelemetry.io/otel/CHANGELOG.md
+++ b/vendor/go.opentelemetry.io/otel/CHANGELOG.md
@@ -8,6 +8,22 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
 
 ## [Unreleased]
 
+## [1.10.0] - 2022-09-09
+
+### Added
+
+- Support Go 1.19. (#3077)
+  Include compatibility testing and document support. (#3077)
+- Support the OTLP ExportTracePartialSuccess response; these are passed to the registered error handler. (#3106)
+- Upgrade go.opentelemetry.io/proto/otlp from v0.18.0 to v0.19.0 (#3107)
+
+### Changed
+
+- Fix misidentification of OpenTelemetry `SpanKind` in OpenTracing bridge (`go.opentelemetry.io/otel/bridge/opentracing`).  (#3096)
+- Attempting to start a span with a nil `context` will no longer cause a panic. (#3110)
+- All exporters will be shutdown even if one reports an error (#3091)
+- Ensure valid UTF-8 when truncating over-length attribute values. (#3156)
+
 ## [1.9.0/0.0.3] - 2022-08-01
 
 ### Added
@@ -1891,7 +1907,8 @@ It contains api and sdk for trace and meter.
 - CircleCI build CI manifest files.
 - CODEOWNERS file to track owners of this project.
 
-[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.9.0...HEAD
+[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.10.0...HEAD
+[1.10.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.10.0
 [1.9.0/0.0.3]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.9.0
 [1.8.0/0.31.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.8.0
 [1.7.0/0.30.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.7.0
diff --git a/vendor/go.opentelemetry.io/otel/README.md b/vendor/go.opentelemetry.io/otel/README.md
index c87f800b..4aeecb8b 100644
--- a/vendor/go.opentelemetry.io/otel/README.md
+++ b/vendor/go.opentelemetry.io/otel/README.md
@@ -30,25 +30,39 @@ Project versioning information and stability guarantees can be found in the
 
 ### Compatibility
 
-OpenTelemetry-Go attempts to track the current supported versions of the
-[Go language](https://golang.org/doc/devel/release#policy). The release
-schedule after a new minor version of go is as follows:
+OpenTelemetry-Go ensures compatibility with the current supported versions of
+the [Go language](https://golang.org/doc/devel/release#policy):
 
-- The first release or one month, which ever is sooner, will add build steps for the new go version.
-- The first release after three months will remove support for the oldest go version.
+> Each major Go release is supported until there are two newer major releases.
+> For example, Go 1.5 was supported until the Go 1.7 release, and Go 1.6 was supported until the Go 1.8 release.
 
-This project is tested on the following systems.
+For versions of Go that are no longer supported upstream, opentelemetry-go will
+stop ensuring compatibility with these versions in the following manner:
+
+- A minor release of opentelemetry-go will be made to add support for the new
+  supported release of Go.
+- The following minor release of opentelemetry-go will remove compatibility
+  testing for the oldest (now archived upstream) version of Go. This, and
+  future, releases of opentelemetry-go may include features only supported by
+  the currently supported versions of Go.
+
+Currently, this project supports the following environments.
 
 | OS      | Go Version | Architecture |
 | ------- | ---------- | ------------ |
+| Ubuntu  | 1.19       | amd64        |
 | Ubuntu  | 1.18       | amd64        |
 | Ubuntu  | 1.17       | amd64        |
+| Ubuntu  | 1.19       | 386          |
 | Ubuntu  | 1.18       | 386          |
 | Ubuntu  | 1.17       | 386          |
+| MacOS   | 1.19       | amd64        |
 | MacOS   | 1.18       | amd64        |
 | MacOS   | 1.17       | amd64        |
+| Windows | 1.19       | amd64        |
 | Windows | 1.18       | amd64        |
 | Windows | 1.17       | amd64        |
+| Windows | 1.19       | 386          |
 | Windows | 1.18       | 386          |
 | Windows | 1.17       | 386          |
 
diff --git a/vendor/go.opentelemetry.io/otel/go.mod b/vendor/go.opentelemetry.io/otel/go.mod
index 1237d40c..76dbbbae 100644
--- a/vendor/go.opentelemetry.io/otel/go.mod
+++ b/vendor/go.opentelemetry.io/otel/go.mod
@@ -7,7 +7,7 @@ require (
 	github.com/go-logr/stdr v1.2.2
 	github.com/google/go-cmp v0.5.8
 	github.com/stretchr/testify v1.7.1
-	go.opentelemetry.io/otel/trace v1.9.0
+	go.opentelemetry.io/otel/trace v1.10.0
 )
 
 require (
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/doc.go b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/doc.go
similarity index 51%
rename from vendor/go.opentelemetry.io/otel/semconv/v1.4.0/doc.go
rename to vendor/go.opentelemetry.io/otel/sdk/instrumentation/doc.go
index c0b1723f..6e923aca 100644
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/doc.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/doc.go
@@ -12,9 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-// Package semconv implements OpenTelemetry semantic conventions.
+// Package instrumentation provides types to represent the code libraries that
+// provide OpenTelemetry instrumentation. These types are used in the
+// OpenTelemetry signal pipelines to identify the source of telemetry.
 //
-// OpenTelemetry semantic conventions are agreed standardized naming
-// patterns for OpenTelemetry things. This package represents the conventions
-// as of the v1.4.0 version of the OpenTelemetry specification.
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.4.0"
+// See
+// https://github.com/open-telemetry/oteps/blob/d226b677d73a785523fe9b9701be13225ebc528d/text/0083-component.md
+// and
+// https://github.com/open-telemetry/oteps/blob/d226b677d73a785523fe9b9701be13225ebc528d/text/0201-scope-attributes.md
+// for more information.
+package instrumentation // import "go.opentelemetry.io/otel/sdk/instrumentation"
diff --git a/vendor/go.opentelemetry.io/otel/sdk/instrumentation/library.go b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/library.go
index 24687334..39f025a1 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/instrumentation/library.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/library.go
@@ -12,13 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-/*
-Package instrumentation provides an instrumentation library structure to be
-passed to both the OpenTelemetry Tracer and Meter components.
-
-For more information see
-[this](https://github.com/open-telemetry/oteps/blob/main/text/0083-component.md).
-*/
 package instrumentation // import "go.opentelemetry.io/otel/sdk/instrumentation"
 
 // Library represents the instrumentation library.
diff --git a/vendor/go.opentelemetry.io/otel/sdk/instrumentation/scope.go b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/scope.go
index 775de40e..09c6d93f 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/instrumentation/scope.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/instrumentation/scope.go
@@ -12,13 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-/*
-Package instrumentation provides an instrumentation scope structure to be
-passed to both the OpenTelemetry Tracer and Meter components.
-
-For more information see
-[this](https://github.com/open-telemetry/oteps/blob/main/text/0083-component.md).
-*/
 package instrumentation // import "go.opentelemetry.io/otel/sdk/instrumentation"
 
 // Scope represents the instrumentation scope.
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go b/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
index eac69f34..292ea548 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/provider.go
@@ -90,10 +90,10 @@ var _ trace.TracerProvider = &TracerProvider{}
 // NewTracerProvider returns a new and configured TracerProvider.
 //
 // By default the returned TracerProvider is configured with:
-//  - a ParentBased(AlwaysSample) Sampler
-//  - a random number IDGenerator
-//  - the resource.Default() Resource
-//  - the default SpanLimits.
+//   - a ParentBased(AlwaysSample) Sampler
+//   - a random number IDGenerator
+//   - the resource.Default() Resource
+//   - the default SpanLimits.
 //
 // The passed opts are used to override these default values and configure the
 // returned TracerProvider appropriately.
@@ -162,16 +162,16 @@ func (p *TracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.T
 func (p *TracerProvider) RegisterSpanProcessor(s SpanProcessor) {
 	p.mu.Lock()
 	defer p.mu.Unlock()
-	new := spanProcessorStates{}
+	newSPS := spanProcessorStates{}
 	if old, ok := p.spanProcessors.Load().(spanProcessorStates); ok {
-		new = append(new, old...)
+		newSPS = append(newSPS, old...)
 	}
 	newSpanSync := &spanProcessorState{
 		sp:    s,
 		state: &sync.Once{},
 	}
-	new = append(new, newSpanSync)
-	p.spanProcessors.Store(new)
+	newSPS = append(newSPS, newSpanSync)
+	p.spanProcessors.Store(newSPS)
 }
 
 // UnregisterSpanProcessor removes the given SpanProcessor from the list of SpanProcessors.
@@ -241,10 +241,7 @@ func (p *TracerProvider) Shutdown(ctx context.Context) error {
 	if !ok {
 		return fmt.Errorf("failed to load span processors")
 	}
-	if len(spss) == 0 {
-		return nil
-	}
-
+	var retErr error
 	for _, sps := range spss {
 		select {
 		case <-ctx.Done():
@@ -257,10 +254,15 @@ func (p *TracerProvider) Shutdown(ctx context.Context) error {
 			err = sps.sp.Shutdown(ctx)
 		})
 		if err != nil {
-			return err
+			if retErr == nil {
+				retErr = err
+			} else {
+				// Poor man's list of errors
+				retErr = fmt.Errorf("%v; %v", retErr, err)
+			}
 		}
 	}
-	return nil
+	return retErr
 }
 
 // TracerProviderOption configures a TracerProvider.
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go b/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
index a39d0341..a6dcf4b3 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/sampling.go
@@ -102,6 +102,7 @@ func (ts traceIDRatioSampler) Description() string {
 // always sample. Fractions < 0 are treated as zero. To respect the
 // parent trace's `SampledFlag`, the `TraceIDRatioBased` sampler should be used
 // as a delegate of a `Parent` sampler.
+//
 //nolint:revive // revive complains about stutter of `trace.TraceIDRatioBased`
 func TraceIDRatioBased(fraction float64) Sampler {
 	if fraction >= 1 {
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/span.go b/vendor/go.opentelemetry.io/otel/sdk/trace/span.go
index 14d0aabf..449cf6c2 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/span.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/span.go
@@ -20,8 +20,10 @@ import (
 	"reflect"
 	"runtime"
 	rt "runtime/trace"
+	"strings"
 	"sync"
 	"time"
+	"unicode/utf8"
 
 	"go.opentelemetry.io/otel/attribute"
 	"go.opentelemetry.io/otel/codes"
@@ -294,7 +296,7 @@ func (s *recordingSpan) addOverCapAttrs(limit int, attrs []attribute.KeyValue) {
 
 // truncateAttr returns a truncated version of attr. Only string and string
 // slice attribute values are truncated. String values are truncated to at
-// most a length of limit. Each string slice value is truncated in this fasion
+// most a length of limit. Each string slice value is truncated in this fashion
 // (the slice length itself is unaffected).
 //
 // No truncation is perfromed for a negative limit.
@@ -305,7 +307,7 @@ func truncateAttr(limit int, attr attribute.KeyValue) attribute.KeyValue {
 	switch attr.Value.Type() {
 	case attribute.STRING:
 		if v := attr.Value.AsString(); len(v) > limit {
-			return attr.Key.String(v[:limit])
+			return attr.Key.String(safeTruncate(v, limit))
 		}
 	case attribute.STRINGSLICE:
 		// Do no mutate the original, make a copy.
@@ -324,7 +326,7 @@ func truncateAttr(limit int, attr attribute.KeyValue) attribute.KeyValue {
 		v := trucated.Value.AsStringSlice()
 		for i := range v {
 			if len(v[i]) > limit {
-				v[i] = v[i][:limit]
+				v[i] = safeTruncate(v[i], limit)
 			}
 		}
 		return trucated
@@ -332,6 +334,34 @@ func truncateAttr(limit int, attr attribute.KeyValue) attribute.KeyValue {
 	return attr
 }
 
+// safeTruncate truncates the string and guarantees valid UTF-8 is returned.
+func safeTruncate(input string, limit int) string {
+	if trunc, ok := safeTruncateValidUTF8(input, limit); ok {
+		return trunc
+	}
+	trunc, _ := safeTruncateValidUTF8(strings.ToValidUTF8(input, ""), limit)
+	return trunc
+}
+
+// safeTruncateValidUTF8 returns a copy of the input string safely truncated to
+// limit. The truncation is ensured to occur at the bounds of complete UTF-8
+// characters. If invalid encoding of UTF-8 is encountered, input is returned
+// with false, otherwise, the truncated input will be returned with true.
+func safeTruncateValidUTF8(input string, limit int) (string, bool) {
+	for cnt := 0; cnt <= limit; {
+		r, size := utf8.DecodeRuneInString(input[cnt:])
+		if r == utf8.RuneError {
+			return input, false
+		}
+
+		if cnt+size > limit {
+			return input[:cnt], true
+		}
+		cnt += size
+	}
+	return input, true
+}
+
 // End ends the span. This method does nothing if the span is already ended or
 // is not being recorded.
 //
diff --git a/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go b/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
index f4a1f96f..7b11fc46 100644
--- a/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
+++ b/vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
@@ -37,6 +37,11 @@ var _ trace.Tracer = &tracer{}
 func (tr *tracer) Start(ctx context.Context, name string, options ...trace.SpanStartOption) (context.Context, trace.Span) {
 	config := trace.NewSpanStartConfig(options...)
 
+	if ctx == nil {
+		// Prevent trace.ContextWithSpan from panicking.
+		ctx = context.Background()
+	}
+
 	// For local spans created by this SDK, track child span count.
 	if p := trace.SpanFromContext(ctx); p != nil {
 		if sdkSpan, ok := p.(*recordingSpan); ok {
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/http.go b/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/http.go
deleted file mode 100644
index 8d814edc..00000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/http.go
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright The OpenTelemetry Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.4.0"
-
-import (
-	"net/http"
-
-	"go.opentelemetry.io/otel/attribute"
-	"go.opentelemetry.io/otel/codes"
-	"go.opentelemetry.io/otel/semconv/internal"
-	"go.opentelemetry.io/otel/trace"
-)
-
-// HTTP scheme attributes.
-var (
-	HTTPSchemeHTTP  = HTTPSchemeKey.String("http")
-	HTTPSchemeHTTPS = HTTPSchemeKey.String("https")
-)
-
-var sc = &internal.SemanticConventions{
-	EnduserIDKey:                EnduserIDKey,
-	HTTPClientIPKey:             HTTPClientIPKey,
-	HTTPFlavorKey:               HTTPFlavorKey,
-	HTTPHostKey:                 HTTPHostKey,
-	HTTPMethodKey:               HTTPMethodKey,
-	HTTPRequestContentLengthKey: HTTPRequestContentLengthKey,
-	HTTPRouteKey:                HTTPRouteKey,
-	HTTPSchemeHTTP:              HTTPSchemeHTTP,
-	HTTPSchemeHTTPS:             HTTPSchemeHTTPS,
-	HTTPServerNameKey:           HTTPServerNameKey,
-	HTTPStatusCodeKey:           HTTPStatusCodeKey,
-	HTTPTargetKey:               HTTPTargetKey,
-	HTTPURLKey:                  HTTPURLKey,
-	HTTPUserAgentKey:            HTTPUserAgentKey,
-	NetHostIPKey:                NetHostIPKey,
-	NetHostNameKey:              NetHostNameKey,
-	NetHostPortKey:              NetHostPortKey,
-	NetPeerIPKey:                NetPeerIPKey,
-	NetPeerNameKey:              NetPeerNameKey,
-	NetPeerPortKey:              NetPeerPortKey,
-	NetTransportIP:              NetTransportIP,
-	NetTransportOther:           NetTransportOther,
-	NetTransportTCP:             NetTransportTCP,
-	NetTransportUDP:             NetTransportUDP,
-	NetTransportUnix:            NetTransportUnix,
-}
-
-// NetAttributesFromHTTPRequest generates attributes of the net
-// namespace as specified by the OpenTelemetry specification for a
-// span.  The network parameter is a string that net.Dial function
-// from standard library can understand.
-func NetAttributesFromHTTPRequest(network string, request *http.Request) []attribute.KeyValue {
-	return sc.NetAttributesFromHTTPRequest(network, request)
-}
-
-// EndUserAttributesFromHTTPRequest generates attributes of the
-// enduser namespace as specified by the OpenTelemetry specification
-// for a span.
-func EndUserAttributesFromHTTPRequest(request *http.Request) []attribute.KeyValue {
-	return sc.EndUserAttributesFromHTTPRequest(request)
-}
-
-// HTTPClientAttributesFromHTTPRequest generates attributes of the
-// http namespace as specified by the OpenTelemetry specification for
-// a span on the client side.
-func HTTPClientAttributesFromHTTPRequest(request *http.Request) []attribute.KeyValue {
-	return sc.HTTPClientAttributesFromHTTPRequest(request)
-}
-
-// HTTPServerMetricAttributesFromHTTPRequest generates low-cardinality attributes
-// to be used with server-side HTTP metrics.
-func HTTPServerMetricAttributesFromHTTPRequest(serverName string, request *http.Request) []attribute.KeyValue {
-	return sc.HTTPServerMetricAttributesFromHTTPRequest(serverName, request)
-}
-
-// HTTPServerAttributesFromHTTPRequest generates attributes of the
-// http namespace as specified by the OpenTelemetry specification for
-// a span on the server side. Currently, only basic authentication is
-// supported.
-func HTTPServerAttributesFromHTTPRequest(serverName, route string, request *http.Request) []attribute.KeyValue {
-	return sc.HTTPServerAttributesFromHTTPRequest(serverName, route, request)
-}
-
-// HTTPAttributesFromHTTPStatusCode generates attributes of the http
-// namespace as specified by the OpenTelemetry specification for a
-// span.
-func HTTPAttributesFromHTTPStatusCode(code int) []attribute.KeyValue {
-	return sc.HTTPAttributesFromHTTPStatusCode(code)
-}
-
-// SpanStatusFromHTTPStatusCode generates a status code and a message
-// as specified by the OpenTelemetry specification for a span.
-func SpanStatusFromHTTPStatusCode(code int) (codes.Code, string) {
-	return internal.SpanStatusFromHTTPStatusCode(code)
-}
-
-// SpanStatusFromHTTPStatusCodeAndSpanKind generates a status code and a message
-// as specified by the OpenTelemetry specification for a span.
-// Exclude 4xx for SERVER to set the appropriate status.
-func SpanStatusFromHTTPStatusCodeAndSpanKind(code int, spanKind trace.SpanKind) (codes.Code, string) {
-	return internal.SpanStatusFromHTTPStatusCodeAndSpanKind(code, spanKind)
-}
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/resource.go b/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/resource.go
deleted file mode 100644
index 404bd4e7..00000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/resource.go
+++ /dev/null
@@ -1,906 +0,0 @@
-// Copyright The OpenTelemetry Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.4.0"
-
-import "go.opentelemetry.io/otel/attribute"
-
-// A cloud environment (e.g. GCP, Azure, AWS)
-const (
-	// Name of the cloud provider.
-	//
-	// Type: Enum
-	// Required: No
-	// Stability: stable
-	// Examples: 'gcp'
-	CloudProviderKey = attribute.Key("cloud.provider")
-	// The cloud account ID the resource is assigned to.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '111111111111', 'opentelemetry'
-	CloudAccountIDKey = attribute.Key("cloud.account.id")
-	// The geographical region the resource is running. Refer to your provider's docs
-	// to see the available regions, for example [AWS
-	// regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/),
-	// [Azure regions](https://azure.microsoft.com/en-us/global-
-	// infrastructure/geographies/), or [Google Cloud
-	// regions](https://cloud.google.com/about/locations).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'us-central1', 'us-east-1'
-	CloudRegionKey = attribute.Key("cloud.region")
-	// Cloud regions often have multiple, isolated locations known as zones to
-	// increase availability. Availability zone represents the zone where the resource
-	// is running.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'us-east-1c'
-	// Note: Availability zones are called "zones" on Google Cloud.
-	CloudAvailabilityZoneKey = attribute.Key("cloud.availability_zone")
-	// The cloud platform in use.
-	//
-	// Type: Enum
-	// Required: No
-	// Stability: stable
-	// Examples: 'aws_ec2', 'azure_vm', 'gcp_compute_engine'
-	// Note: The prefix of the service SHOULD match the one specified in
-	// `cloud.provider`.
-	CloudPlatformKey = attribute.Key("cloud.platform")
-)
-
-var (
-	// Amazon Web Services
-	CloudProviderAWS = CloudProviderKey.String("aws")
-	// Microsoft Azure
-	CloudProviderAzure = CloudProviderKey.String("azure")
-	// Google Cloud Platform
-	CloudProviderGCP = CloudProviderKey.String("gcp")
-)
-
-var (
-	// AWS Elastic Compute Cloud
-	CloudPlatformAWSEC2 = CloudPlatformKey.String("aws_ec2")
-	// AWS Elastic Container Service
-	CloudPlatformAWSECS = CloudPlatformKey.String("aws_ecs")
-	// AWS Elastic Kubernetes Service
-	CloudPlatformAWSEKS = CloudPlatformKey.String("aws_eks")
-	// AWS Lambda
-	CloudPlatformAWSLambda = CloudPlatformKey.String("aws_lambda")
-	// AWS Elastic Beanstalk
-	CloudPlatformAWSElasticBeanstalk = CloudPlatformKey.String("aws_elastic_beanstalk")
-	// Azure Virtual Machines
-	CloudPlatformAzureVM = CloudPlatformKey.String("azure_vm")
-	// Azure Container Instances
-	CloudPlatformAzureContainerInstances = CloudPlatformKey.String("azure_container_instances")
-	// Azure Kubernetes Service
-	CloudPlatformAzureAKS = CloudPlatformKey.String("azure_aks")
-	// Azure Functions
-	CloudPlatformAzureFunctions = CloudPlatformKey.String("azure_functions")
-	// Azure App Service
-	CloudPlatformAzureAppService = CloudPlatformKey.String("azure_app_service")
-	// Google Cloud Compute Engine (GCE)
-	CloudPlatformGCPComputeEngine = CloudPlatformKey.String("gcp_compute_engine")
-	// Google Cloud Run
-	CloudPlatformGCPCloudRun = CloudPlatformKey.String("gcp_cloud_run")
-	// Google Cloud Kubernetes Engine (GKE)
-	CloudPlatformGCPKubernetesEngine = CloudPlatformKey.String("gcp_kubernetes_engine")
-	// Google Cloud Functions (GCF)
-	CloudPlatformGCPCloudFunctions = CloudPlatformKey.String("gcp_cloud_functions")
-	// Google Cloud App Engine (GAE)
-	CloudPlatformGCPAppEngine = CloudPlatformKey.String("gcp_app_engine")
-)
-
-// Resources used by AWS Elastic Container Service (ECS).
-const (
-	// The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.
-	// amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'arn:aws:ecs:us-
-	// west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9'
-	AWSECSContainerARNKey = attribute.Key("aws.ecs.container.arn")
-	// The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/develo
-	// perguide/clusters.html).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster'
-	AWSECSClusterARNKey = attribute.Key("aws.ecs.cluster.arn")
-	// The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/l
-	// aunch_types.html) for an ECS task.
-	//
-	// Type: Enum
-	// Required: No
-	// Stability: stable
-	// Examples: 'ec2', 'fargate'
-	AWSECSLaunchtypeKey = attribute.Key("aws.ecs.launchtype")
-	// The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/lates
-	// t/developerguide/task_definitions.html).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'arn:aws:ecs:us-
-	// west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b'
-	AWSECSTaskARNKey = attribute.Key("aws.ecs.task.arn")
-	// The task definition family this task definition is a member of.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry-family'
-	AWSECSTaskFamilyKey = attribute.Key("aws.ecs.task.family")
-	// The revision for this task definition.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '8', '26'
-	AWSECSTaskRevisionKey = attribute.Key("aws.ecs.task.revision")
-)
-
-var (
-	// ec2
-	AWSECSLaunchtypeEC2 = AWSECSLaunchtypeKey.String("ec2")
-	// fargate
-	AWSECSLaunchtypeFargate = AWSECSLaunchtypeKey.String("fargate")
-)
-
-// Resources used by AWS Elastic Kubernetes Service (EKS).
-const (
-	// The ARN of an EKS cluster.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster'
-	AWSEKSClusterARNKey = attribute.Key("aws.eks.cluster.arn")
-)
-
-// Resources specific to Amazon Web Services.
-const (
-	// The name(s) of the AWS log group(s) an application is writing to.
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: '/aws/lambda/my-function', 'opentelemetry-service'
-	// Note: Multiple log groups must be supported for cases like multi-container
-	// applications, where a single application has sidecar containers, and each write
-	// to their own log group.
-	AWSLogGroupNamesKey = attribute.Key("aws.log.group.names")
-	// The Amazon Resource Name(s) (ARN) of the AWS log group(s).
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: 'arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*'
-	// Note: See the [log group ARN format
-	// documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-
-	// access-control-overview-cwl.html#CWL_ARN_Format).
-	AWSLogGroupARNsKey = attribute.Key("aws.log.group.arns")
-	// The name(s) of the AWS log stream(s) an application is writing to.
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: 'logs/main/10838bed-421f-43ef-870a-f43feacbbb5b'
-	AWSLogStreamNamesKey = attribute.Key("aws.log.stream.names")
-	// The ARN(s) of the AWS log stream(s).
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: 'arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-
-	// stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b'
-	// Note: See the [log stream ARN format
-	// documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-
-	// access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain
-	// several log streams, so these ARNs necessarily identify both a log group and a
-	// log stream.
-	AWSLogStreamARNsKey = attribute.Key("aws.log.stream.arns")
-)
-
-// A container instance.
-const (
-	// Container name.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry-autoconf'
-	ContainerNameKey = attribute.Key("container.name")
-	// Container ID. Usually a UUID, as for example used to [identify Docker
-	// containers](https://docs.docker.com/engine/reference/run/#container-
-	// identification). The UUID might be abbreviated.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'a3bf90e006b2'
-	ContainerIDKey = attribute.Key("container.id")
-	// The container runtime managing this container.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'docker', 'containerd', 'rkt'
-	ContainerRuntimeKey = attribute.Key("container.runtime")
-	// Name of the image the container was built on.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'gcr.io/opentelemetry/operator'
-	ContainerImageNameKey = attribute.Key("container.image.name")
-	// Container image tag.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '0.1'
-	ContainerImageTagKey = attribute.Key("container.image.tag")
-)
-
-// The software deployment.
-const (
-	// Name of the [deployment
-	// environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka
-	// deployment tier).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'staging', 'production'
-	DeploymentEnvironmentKey = attribute.Key("deployment.environment")
-)
-
-// The device on which the process represented by this resource is running.
-const (
-	// A unique identifier representing the device
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '2ab2916d-a51f-4ac8-80ee-45ac31a28092'
-	// Note: The device identifier MUST only be defined using the values outlined
-	// below. This value is not an advertising identifier and MUST NOT be used as
-	// such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor id
-	// entifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-iden
-	// tifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the
-	// Firebase Installation ID or a globally unique UUID which is persisted across
-	// sessions in your application. More information can be found
-	// [here](https://developer.android.com/training/articles/user-data-ids) on best
-	// practices and exact implementation details. Caution should be taken when
-	// storing personal data or anything which can identify a user. GDPR and data
-	// protection laws may apply, ensure you do your own due diligence.
-	DeviceIDKey = attribute.Key("device.id")
-	// The model identifier for the device
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'iPhone3,4', 'SM-G920F'
-	// Note: It's recommended this value represents a machine readable version of the
-	// model identifier rather than the market or consumer-friendly name of the
-	// device.
-	DeviceModelIdentifierKey = attribute.Key("device.model.identifier")
-	// The marketing name for the device model
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'iPhone 6s Plus', 'Samsung Galaxy S6'
-	// Note: It's recommended this value represents a human readable version of the
-	// device model rather than a machine readable alternative.
-	DeviceModelNameKey = attribute.Key("device.model.name")
-)
-
-// A serverless instance.
-const (
-	// The name of the function being executed.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'my-function'
-	FaaSNameKey = attribute.Key("faas.name")
-	// The unique ID of the function being executed.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'arn:aws:lambda:us-west-2:123456789012:function:my-function'
-	// Note: For example, in AWS Lambda this field corresponds to the
-	// [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-
-	// namespaces.html) value, in GCP to the URI of the resource, and in Azure to the
-	// [FunctionDirectory](https://github.com/Azure/azure-functions-
-	// host/wiki/Retrieving-information-about-the-currently-running-function) field.
-	FaaSIDKey = attribute.Key("faas.id")
-	// The version string of the function being executed as defined in [Version
-	// Attributes](../../resource/semantic_conventions/README.md#version-attributes).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '2.0.0'
-	FaaSVersionKey = attribute.Key("faas.version")
-	// The execution environment ID as a string.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'my-function:instance-0001'
-	FaaSInstanceKey = attribute.Key("faas.instance")
-	// The amount of memory available to the serverless function in MiB.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 128
-	// Note: It's recommended to set this attribute since e.g. too little memory can
-	// easily stop a Java AWS Lambda function from working correctly. On AWS Lambda,
-	// the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this
-	// information.
-	FaaSMaxMemoryKey = attribute.Key("faas.max_memory")
-)
-
-// A host is defined as a general computing instance.
-const (
-	// Unique host ID. For Cloud, this must be the instance_id assigned by the cloud
-	// provider.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry-test'
-	HostIDKey = attribute.Key("host.id")
-	// Name of the host. On Unix systems, it may contain what the hostname command
-	// returns, or the fully qualified hostname, or another name specified by the
-	// user.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry-test'
-	HostNameKey = attribute.Key("host.name")
-	// Type of host. For Cloud, this must be the machine type.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'n1-standard-1'
-	HostTypeKey = attribute.Key("host.type")
-	// The CPU architecture the host system is running on.
-	//
-	// Type: Enum
-	// Required: No
-	// Stability: stable
-	HostArchKey = attribute.Key("host.arch")
-	// Name of the VM image or OS install the host was instantiated from.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'infra-ami-eks-worker-node-7d4ec78312', 'CentOS-8-x86_64-1905'
-	HostImageNameKey = attribute.Key("host.image.name")
-	// VM image ID. For Cloud, this value is from the provider.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'ami-07b06b442921831e5'
-	HostImageIDKey = attribute.Key("host.image.id")
-	// The version string of the VM image as defined in [Version
-	// Attributes](README.md#version-attributes).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '0.1'
-	HostImageVersionKey = attribute.Key("host.image.version")
-)
-
-var (
-	// AMD64
-	HostArchAMD64 = HostArchKey.String("amd64")
-	// ARM32
-	HostArchARM32 = HostArchKey.String("arm32")
-	// ARM64
-	HostArchARM64 = HostArchKey.String("arm64")
-	// Itanium
-	HostArchIA64 = HostArchKey.String("ia64")
-	// 32-bit PowerPC
-	HostArchPPC32 = HostArchKey.String("ppc32")
-	// 64-bit PowerPC
-	HostArchPPC64 = HostArchKey.String("ppc64")
-	// 32-bit x86
-	HostArchX86 = HostArchKey.String("x86")
-)
-
-// A Kubernetes Cluster.
-const (
-	// The name of the cluster.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry-cluster'
-	K8SClusterNameKey = attribute.Key("k8s.cluster.name")
-)
-
-// A Kubernetes Node object.
-const (
-	// The name of the Node.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'node-1'
-	K8SNodeNameKey = attribute.Key("k8s.node.name")
-	// The UID of the Node.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2'
-	K8SNodeUIDKey = attribute.Key("k8s.node.uid")
-)
-
-// A Kubernetes Namespace.
-const (
-	// The name of the namespace that the pod is running in.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'default'
-	K8SNamespaceNameKey = attribute.Key("k8s.namespace.name")
-)
-
-// A Kubernetes Pod object.
-const (
-	// The UID of the Pod.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SPodUIDKey = attribute.Key("k8s.pod.uid")
-	// The name of the Pod.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry-pod-autoconf'
-	K8SPodNameKey = attribute.Key("k8s.pod.name")
-)
-
-// A container in a [PodTemplate](https://kubernetes.io/docs/concepts/workloads/pods/#pod-templates).
-const (
-	// The name of the Container in a Pod template.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'redis'
-	K8SContainerNameKey = attribute.Key("k8s.container.name")
-)
-
-// A Kubernetes ReplicaSet object.
-const (
-	// The UID of the ReplicaSet.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SReplicasetUIDKey = attribute.Key("k8s.replicaset.uid")
-	// The name of the ReplicaSet.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry'
-	K8SReplicasetNameKey = attribute.Key("k8s.replicaset.name")
-)
-
-// A Kubernetes Deployment object.
-const (
-	// The UID of the Deployment.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SDeploymentUIDKey = attribute.Key("k8s.deployment.uid")
-	// The name of the Deployment.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry'
-	K8SDeploymentNameKey = attribute.Key("k8s.deployment.name")
-)
-
-// A Kubernetes StatefulSet object.
-const (
-	// The UID of the StatefulSet.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SStatefulsetUIDKey = attribute.Key("k8s.statefulset.uid")
-	// The name of the StatefulSet.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry'
-	K8SStatefulsetNameKey = attribute.Key("k8s.statefulset.name")
-)
-
-// A Kubernetes DaemonSet object.
-const (
-	// The UID of the DaemonSet.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SDaemonsetUIDKey = attribute.Key("k8s.daemonset.uid")
-	// The name of the DaemonSet.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry'
-	K8SDaemonsetNameKey = attribute.Key("k8s.daemonset.name")
-)
-
-// A Kubernetes Job object.
-const (
-	// The UID of the Job.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SJobUIDKey = attribute.Key("k8s.job.uid")
-	// The name of the Job.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry'
-	K8SJobNameKey = attribute.Key("k8s.job.name")
-)
-
-// A Kubernetes CronJob object.
-const (
-	// The UID of the CronJob.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '275ecb36-5aa8-4c2a-9c47-d8bb681b9aff'
-	K8SCronJobUIDKey = attribute.Key("k8s.cronjob.uid")
-	// The name of the CronJob.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry'
-	K8SCronJobNameKey = attribute.Key("k8s.cronjob.name")
-)
-
-// The operating system (OS) on which the process represented by this resource is running.
-const (
-	// The operating system type.
-	//
-	// Type: Enum
-	// Required: Always
-	// Stability: stable
-	OSTypeKey = attribute.Key("os.type")
-	// Human readable (not intended to be parsed) OS version information, like e.g.
-	// reported by `ver` or `lsb_release -a` commands.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'Microsoft Windows [Version 10.0.18363.778]', 'Ubuntu 18.04.1 LTS'
-	OSDescriptionKey = attribute.Key("os.description")
-	// Human readable operating system name.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'iOS', 'Android', 'Ubuntu'
-	OSNameKey = attribute.Key("os.name")
-	// The version string of the operating system as defined in [Version
-	// Attributes](../../resource/semantic_conventions/README.md#version-attributes).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '14.2.1', '18.04.1'
-	OSVersionKey = attribute.Key("os.version")
-)
-
-var (
-	// Microsoft Windows
-	OSTypeWindows = OSTypeKey.String("windows")
-	// Linux
-	OSTypeLinux = OSTypeKey.String("linux")
-	// Apple Darwin
-	OSTypeDarwin = OSTypeKey.String("darwin")
-	// FreeBSD
-	OSTypeFreeBSD = OSTypeKey.String("freebsd")
-	// NetBSD
-	OSTypeNetBSD = OSTypeKey.String("netbsd")
-	// OpenBSD
-	OSTypeOpenBSD = OSTypeKey.String("openbsd")
-	// DragonFly BSD
-	OSTypeDragonflyBSD = OSTypeKey.String("dragonflybsd")
-	// HP-UX (Hewlett Packard Unix)
-	OSTypeHPUX = OSTypeKey.String("hpux")
-	// AIX (Advanced Interactive eXecutive)
-	OSTypeAIX = OSTypeKey.String("aix")
-	// Oracle Solaris
-	OSTypeSolaris = OSTypeKey.String("solaris")
-	// IBM z/OS
-	OSTypeZOS = OSTypeKey.String("z_os")
-)
-
-// An operating system process.
-const (
-	// Process identifier (PID).
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 1234
-	ProcessPIDKey = attribute.Key("process.pid")
-	// The name of the process executable. On Linux based systems, can be set to the
-	// `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of
-	// `GetProcessImageFileNameW`.
-	//
-	// Type: string
-	// Required: See below
-	// Stability: stable
-	// Examples: 'otelcol'
-	ProcessExecutableNameKey = attribute.Key("process.executable.name")
-	// The full path to the process executable. On Linux based systems, can be set to
-	// the target of `proc/[pid]/exe`. On Windows, can be set to the result of
-	// `GetProcessImageFileNameW`.
-	//
-	// Type: string
-	// Required: See below
-	// Stability: stable
-	// Examples: '/usr/bin/cmd/otelcol'
-	ProcessExecutablePathKey = attribute.Key("process.executable.path")
-	// The command used to launch the process (i.e. the command name). On Linux based
-	// systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows,
-	// can be set to the first parameter extracted from `GetCommandLineW`.
-	//
-	// Type: string
-	// Required: See below
-	// Stability: stable
-	// Examples: 'cmd/otelcol'
-	ProcessCommandKey = attribute.Key("process.command")
-	// The full command used to launch the process as a single string representing the
-	// full command. On Windows, can be set to the result of `GetCommandLineW`. Do not
-	// set this if you have to assemble it just for monitoring; use
-	// `process.command_args` instead.
-	//
-	// Type: string
-	// Required: See below
-	// Stability: stable
-	// Examples: 'C:\\cmd\\otecol --config="my directory\\config.yaml"'
-	ProcessCommandLineKey = attribute.Key("process.command_line")
-	// All the command arguments (including the command/executable itself) as received
-	// by the process. On Linux-based systems (and some other Unixoid systems
-	// supporting procfs), can be set according to the list of null-delimited strings
-	// extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be
-	// the full argv vector passed to `main`.
-	//
-	// Type: string[]
-	// Required: See below
-	// Stability: stable
-	// Examples: 'cmd/otecol', '--config=config.yaml'
-	ProcessCommandArgsKey = attribute.Key("process.command_args")
-	// The username of the user that owns the process.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'root'
-	ProcessOwnerKey = attribute.Key("process.owner")
-)
-
-// The single (language) runtime instance which is monitored.
-const (
-	// The name of the runtime of this process. For compiled native binaries, this
-	// SHOULD be the name of the compiler.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'OpenJDK Runtime Environment'
-	ProcessRuntimeNameKey = attribute.Key("process.runtime.name")
-	// The version of the runtime of this process, as returned by the runtime without
-	// modification.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '14.0.2'
-	ProcessRuntimeVersionKey = attribute.Key("process.runtime.version")
-	// An additional description about the runtime of the process, for example a
-	// specific vendor customization of the runtime environment.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0'
-	ProcessRuntimeDescriptionKey = attribute.Key("process.runtime.description")
-)
-
-// A service instance.
-const (
-	// Logical name of the service.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'shoppingcart'
-	// Note: MUST be the same for all instances of horizontally scaled services. If
-	// the value was not specified, SDKs MUST fallback to `unknown_service:`
-	// concatenated with [`process.executable.name`](process.md#process), e.g.
-	// `unknown_service:bash`. If `process.executable.name` is not available, the
-	// value MUST be set to `unknown_service`.
-	ServiceNameKey = attribute.Key("service.name")
-	// A namespace for `service.name`.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'Shop'
-	// Note: A string value having a meaning that helps to distinguish a group of
-	// services, for example the team name that owns a group of services.
-	// `service.name` is expected to be unique within the same namespace. If
-	// `service.namespace` is not specified in the Resource then `service.name` is
-	// expected to be unique for all services that have no explicit namespace defined
-	// (so the empty/unspecified namespace is simply one more valid namespace). Zero-
-	// length namespace string is assumed equal to unspecified namespace.
-	ServiceNamespaceKey = attribute.Key("service.namespace")
-	// The string ID of the service instance.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '627cc493-f310-47de-96bd-71410b7dec09'
-	// Note: MUST be unique for each instance of the same
-	// `service.namespace,service.name` pair (in other words
-	// `service.namespace,service.name,service.instance.id` triplet MUST be globally
-	// unique). The ID helps to distinguish instances of the same service that exist
-	// at the same time (e.g. instances of a horizontally scaled service). It is
-	// preferable for the ID to be persistent and stay the same for the lifetime of
-	// the service instance, however it is acceptable that the ID is ephemeral and
-	// changes during important lifetime events for the service (e.g. service
-	// restarts). If the service has no inherent unique ID that can be used as the
-	// value of this attribute it is recommended to generate a random Version 1 or
-	// Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use
-	// Version 5, see RFC 4122 for more recommendations).
-	ServiceInstanceIDKey = attribute.Key("service.instance.id")
-	// The version string of the service API or implementation.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '2.0.0'
-	ServiceVersionKey = attribute.Key("service.version")
-)
-
-// The telemetry SDK used to capture data recorded by the instrumentation libraries.
-const (
-	// The name of the telemetry SDK as defined above.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'opentelemetry'
-	TelemetrySDKNameKey = attribute.Key("telemetry.sdk.name")
-	// The language of the telemetry SDK.
-	//
-	// Type: Enum
-	// Required: No
-	// Stability: stable
-	TelemetrySDKLanguageKey = attribute.Key("telemetry.sdk.language")
-	// The version string of the telemetry SDK.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '1.2.3'
-	TelemetrySDKVersionKey = attribute.Key("telemetry.sdk.version")
-	// The version string of the auto instrumentation agent, if used.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '1.2.3'
-	TelemetryAutoVersionKey = attribute.Key("telemetry.auto.version")
-)
-
-var (
-	// cpp
-	TelemetrySDKLanguageCPP = TelemetrySDKLanguageKey.String("cpp")
-	// dotnet
-	TelemetrySDKLanguageDotnet = TelemetrySDKLanguageKey.String("dotnet")
-	// erlang
-	TelemetrySDKLanguageErlang = TelemetrySDKLanguageKey.String("erlang")
-	// go
-	TelemetrySDKLanguageGo = TelemetrySDKLanguageKey.String("go")
-	// java
-	TelemetrySDKLanguageJava = TelemetrySDKLanguageKey.String("java")
-	// nodejs
-	TelemetrySDKLanguageNodejs = TelemetrySDKLanguageKey.String("nodejs")
-	// php
-	TelemetrySDKLanguagePHP = TelemetrySDKLanguageKey.String("php")
-	// python
-	TelemetrySDKLanguagePython = TelemetrySDKLanguageKey.String("python")
-	// ruby
-	TelemetrySDKLanguageRuby = TelemetrySDKLanguageKey.String("ruby")
-	// webjs
-	TelemetrySDKLanguageWebjs = TelemetrySDKLanguageKey.String("webjs")
-)
-
-// Resource describing the packaged software running the application code. Web engines are typically executed using process.runtime.
-const (
-	// The name of the web engine.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'WildFly'
-	WebEngineNameKey = attribute.Key("webengine.name")
-	// The version of the web engine.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '21.0.0'
-	WebEngineVersionKey = attribute.Key("webengine.version")
-	// Additional description of the web engine (e.g. detailed version and edition
-	// information).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - 2.2.2.Final'
-	WebEngineDescriptionKey = attribute.Key("webengine.description")
-)
diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/trace.go b/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/trace.go
deleted file mode 100644
index 805eadc9..00000000
--- a/vendor/go.opentelemetry.io/otel/semconv/v1.4.0/trace.go
+++ /dev/null
@@ -1,1378 +0,0 @@
-// Copyright The OpenTelemetry Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated from semantic convention specification. DO NOT EDIT.
-
-package semconv // import "go.opentelemetry.io/otel/semconv/v1.4.0"
-
-import "go.opentelemetry.io/otel/attribute"
-
-// This document defines the attributes used to perform database client calls.
-const (
-	// An identifier for the database management system (DBMS) product being used. See
-	// below for a list of well-known identifiers.
-	//
-	// Type: Enum
-	// Required: Always
-	// Stability: stable
-	DBSystemKey = attribute.Key("db.system")
-	// The connection string used to connect to the database. It is recommended to
-	// remove embedded credentials.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'Server=(localdb)\\v11.0;Integrated Security=true;'
-	DBConnectionStringKey = attribute.Key("db.connection_string")
-	// Username for accessing the database.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'readonly_user', 'reporting_user'
-	DBUserKey = attribute.Key("db.user")
-	// The fully-qualified class name of the [Java Database Connectivity
-	// (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver
-	// used to connect.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'org.postgresql.Driver',
-	// 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
-	DBJDBCDriverClassnameKey = attribute.Key("db.jdbc.driver_classname")
-	// If no [tech-specific attribute](#call-level-attributes-for-specific-
-	// technologies) is defined, this attribute is used to report the name of the
-	// database being accessed. For commands that switch the database, this should be
-	// set to the target database (even if the command fails).
-	//
-	// Type: string
-	// Required: Required, if applicable and no more-specific attribute is defined.
-	// Stability: stable
-	// Examples: 'customers', 'main'
-	// Note: In some SQL databases, the database name to be used is called "schema
-	// name".
-	DBNameKey = attribute.Key("db.name")
-	// The database statement being executed.
-	//
-	// Type: string
-	// Required: Required if applicable and not explicitly disabled via
-	// instrumentation configuration.
-	// Stability: stable
-	// Examples: 'SELECT * FROM wuser_table', 'SET mykey "WuValue"'
-	// Note: The value may be sanitized to exclude sensitive information.
-	DBStatementKey = attribute.Key("db.statement")
-	// The name of the operation being executed, e.g. the [MongoDB command
-	// name](https://docs.mongodb.com/manual/reference/command/#database-operations)
-	// such as `findAndModify`, or the SQL keyword.
-	//
-	// Type: string
-	// Required: Required, if `db.statement` is not applicable.
-	// Stability: stable
-	// Examples: 'findAndModify', 'HMSET', 'SELECT'
-	// Note: When setting this to an SQL keyword, it is not recommended to attempt any
-	// client-side parsing of `db.statement` just to get this property, but it should
-	// be set if the operation name is provided by the library being instrumented. If
-	// the SQL statement has an ambiguous operation, or performs more than one
-	// operation, this value may be omitted.
-	DBOperationKey = attribute.Key("db.operation")
-)
-
-var (
-	// Some other SQL database. Fallback only. See notes
-	DBSystemOtherSQL = DBSystemKey.String("other_sql")
-	// Microsoft SQL Server
-	DBSystemMSSQL = DBSystemKey.String("mssql")
-	// MySQL
-	DBSystemMySQL = DBSystemKey.String("mysql")
-	// Oracle Database
-	DBSystemOracle = DBSystemKey.String("oracle")
-	// IBM DB2
-	DBSystemDB2 = DBSystemKey.String("db2")
-	// PostgreSQL
-	DBSystemPostgreSQL = DBSystemKey.String("postgresql")
-	// Amazon Redshift
-	DBSystemRedshift = DBSystemKey.String("redshift")
-	// Apache Hive
-	DBSystemHive = DBSystemKey.String("hive")
-	// Cloudscape
-	DBSystemCloudscape = DBSystemKey.String("cloudscape")
-	// HyperSQL DataBase
-	DBSystemHSQLDB = DBSystemKey.String("hsqldb")
-	// Progress Database
-	DBSystemProgress = DBSystemKey.String("progress")
-	// SAP MaxDB
-	DBSystemMaxDB = DBSystemKey.String("maxdb")
-	// SAP HANA
-	DBSystemHanaDB = DBSystemKey.String("hanadb")
-	// Ingres
-	DBSystemIngres = DBSystemKey.String("ingres")
-	// FirstSQL
-	DBSystemFirstSQL = DBSystemKey.String("firstsql")
-	// EnterpriseDB
-	DBSystemEDB = DBSystemKey.String("edb")
-	// InterSystems Caché
-	DBSystemCache = DBSystemKey.String("cache")
-	// Adabas (Adaptable Database System)
-	DBSystemAdabas = DBSystemKey.String("adabas")
-	// Firebird
-	DBSystemFirebird = DBSystemKey.String("firebird")
-	// Apache Derby
-	DBSystemDerby = DBSystemKey.String("derby")
-	// FileMaker
-	DBSystemFilemaker = DBSystemKey.String("filemaker")
-	// Informix
-	DBSystemInformix = DBSystemKey.String("informix")
-	// InstantDB
-	DBSystemInstantDB = DBSystemKey.String("instantdb")
-	// InterBase
-	DBSystemInterbase = DBSystemKey.String("interbase")
-	// MariaDB
-	DBSystemMariaDB = DBSystemKey.String("mariadb")
-	// Netezza
-	DBSystemNetezza = DBSystemKey.String("netezza")
-	// Pervasive PSQL
-	DBSystemPervasive = DBSystemKey.String("pervasive")
-	// PointBase
-	DBSystemPointbase = DBSystemKey.String("pointbase")
-	// SQLite
-	DBSystemSqlite = DBSystemKey.String("sqlite")
-	// Sybase
-	DBSystemSybase = DBSystemKey.String("sybase")
-	// Teradata
-	DBSystemTeradata = DBSystemKey.String("teradata")
-	// Vertica
-	DBSystemVertica = DBSystemKey.String("vertica")
-	// H2
-	DBSystemH2 = DBSystemKey.String("h2")
-	// ColdFusion IMQ
-	DBSystemColdfusion = DBSystemKey.String("coldfusion")
-	// Apache Cassandra
-	DBSystemCassandra = DBSystemKey.String("cassandra")
-	// Apache HBase
-	DBSystemHBase = DBSystemKey.String("hbase")
-	// MongoDB
-	DBSystemMongoDB = DBSystemKey.String("mongodb")
-	// Redis
-	DBSystemRedis = DBSystemKey.String("redis")
-	// Couchbase
-	DBSystemCouchbase = DBSystemKey.String("couchbase")
-	// CouchDB
-	DBSystemCouchDB = DBSystemKey.String("couchdb")
-	// Microsoft Azure Cosmos DB
-	DBSystemCosmosDB = DBSystemKey.String("cosmosdb")
-	// Amazon DynamoDB
-	DBSystemDynamoDB = DBSystemKey.String("dynamodb")
-	// Neo4j
-	DBSystemNeo4j = DBSystemKey.String("neo4j")
-	// Apache Geode
-	DBSystemGeode = DBSystemKey.String("geode")
-	// Elasticsearch
-	DBSystemElasticsearch = DBSystemKey.String("elasticsearch")
-	// Memcached
-	DBSystemMemcached = DBSystemKey.String("memcached")
-	// CockroachDB
-	DBSystemCockroachdb = DBSystemKey.String("cockroachdb")
-)
-
-// Connection-level attributes for Microsoft SQL Server
-const (
-	// The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-
-	// us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15)
-	// connecting to. This name is used to determine the port of a named instance.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'MSSQLSERVER'
-	// Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer
-	// required (but still recommended if non-standard).
-	DBMSSQLInstanceNameKey = attribute.Key("db.mssql.instance_name")
-)
-
-// Call-level attributes for Cassandra
-const (
-	// The name of the keyspace being accessed. To be used instead of the generic
-	// `db.name` attribute.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'mykeyspace'
-	DBCassandraKeyspaceKey = attribute.Key("db.cassandra.keyspace")
-	// The fetch size used for paging, i.e. how many rows will be returned at once.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 5000
-	DBCassandraPageSizeKey = attribute.Key("db.cassandra.page_size")
-	// The consistency level of the query. Based on consistency values from
-	// [CQL](https://docs.datastax.com/en/cassandra-
-	// oss/3.0/cassandra/dml/dmlConfigConsistency.html).
-	//
-	// Type: Enum
-	// Required: No
-	// Stability: stable
-	DBCassandraConsistencyLevelKey = attribute.Key("db.cassandra.consistency_level")
-	// The name of the primary table that the operation is acting upon, including the
-	// schema name (if applicable).
-	//
-	// Type: string
-	// Required: Recommended if available.
-	// Stability: stable
-	// Examples: 'mytable'
-	// Note: This mirrors the db.sql.table attribute but references cassandra rather
-	// than sql. It is not recommended to attempt any client-side parsing of
-	// `db.statement` just to get this property, but it should be set if it is
-	// provided by the library being instrumented. If the operation is acting upon an
-	// anonymous table, or more than one table, this value MUST NOT be set.
-	DBCassandraTableKey = attribute.Key("db.cassandra.table")
-	// Whether or not the query is idempotent.
-	//
-	// Type: boolean
-	// Required: No
-	// Stability: stable
-	DBCassandraIdempotenceKey = attribute.Key("db.cassandra.idempotence")
-	// The number of times a query was speculatively executed. Not set or `0` if the
-	// query was not executed speculatively.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 0, 2
-	DBCassandraSpeculativeExecutionCountKey = attribute.Key("db.cassandra.speculative_execution_count")
-	// The ID of the coordinating node for a query.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'be13faa2-8574-4d71-926d-27f16cf8a7af'
-	DBCassandraCoordinatorIDKey = attribute.Key("db.cassandra.coordinator.id")
-	// The data center of the coordinating node for a query.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'us-west-2'
-	DBCassandraCoordinatorDCKey = attribute.Key("db.cassandra.coordinator.dc")
-)
-
-var (
-	// all
-	DBCassandraConsistencyLevelAll = DBCassandraConsistencyLevelKey.String("all")
-	// each_quorum
-	DBCassandraConsistencyLevelEachQuorum = DBCassandraConsistencyLevelKey.String("each_quorum")
-	// quorum
-	DBCassandraConsistencyLevelQuorum = DBCassandraConsistencyLevelKey.String("quorum")
-	// local_quorum
-	DBCassandraConsistencyLevelLocalQuorum = DBCassandraConsistencyLevelKey.String("local_quorum")
-	// one
-	DBCassandraConsistencyLevelOne = DBCassandraConsistencyLevelKey.String("one")
-	// two
-	DBCassandraConsistencyLevelTwo = DBCassandraConsistencyLevelKey.String("two")
-	// three
-	DBCassandraConsistencyLevelThree = DBCassandraConsistencyLevelKey.String("three")
-	// local_one
-	DBCassandraConsistencyLevelLocalOne = DBCassandraConsistencyLevelKey.String("local_one")
-	// any
-	DBCassandraConsistencyLevelAny = DBCassandraConsistencyLevelKey.String("any")
-	// serial
-	DBCassandraConsistencyLevelSerial = DBCassandraConsistencyLevelKey.String("serial")
-	// local_serial
-	DBCassandraConsistencyLevelLocalSerial = DBCassandraConsistencyLevelKey.String("local_serial")
-)
-
-// Call-level attributes for Apache HBase
-const (
-	// The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being
-	// accessed. To be used instead of the generic `db.name` attribute.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'default'
-	DBHBaseNamespaceKey = attribute.Key("db.hbase.namespace")
-)
-
-// Call-level attributes for Redis
-const (
-	// The index of the database being accessed as used in the [`SELECT`
-	// command](https://redis.io/commands/select), provided as an integer. To be used
-	// instead of the generic `db.name` attribute.
-	//
-	// Type: int
-	// Required: Required, if other than the default database (`0`).
-	// Stability: stable
-	// Examples: 0, 1, 15
-	DBRedisDBIndexKey = attribute.Key("db.redis.database_index")
-)
-
-// Call-level attributes for MongoDB
-const (
-	// The collection being accessed within the database stated in `db.name`.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'customers', 'products'
-	DBMongoDBCollectionKey = attribute.Key("db.mongodb.collection")
-)
-
-// Call-level attrbiutes for SQL databases
-const (
-	// The name of the primary table that the operation is acting upon, including the
-	// schema name (if applicable).
-	//
-	// Type: string
-	// Required: Recommended if available.
-	// Stability: stable
-	// Examples: 'public.users', 'customers'
-	// Note: It is not recommended to attempt any client-side parsing of
-	// `db.statement` just to get this property, but it should be set if it is
-	// provided by the library being instrumented. If the operation is acting upon an
-	// anonymous table, or more than one table, this value MUST NOT be set.
-	DBSQLTableKey = attribute.Key("db.sql.table")
-)
-
-// This document defines the attributes used to report a single exception associated with a span.
-const (
-	// The type of the exception (its fully-qualified class name, if applicable). The
-	// dynamic type of the exception should be preferred over the static type in
-	// languages that support it.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'java.net.ConnectException', 'OSError'
-	ExceptionTypeKey = attribute.Key("exception.type")
-	// The exception message.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'Division by zero', "Can't convert 'int' object to str implicitly"
-	ExceptionMessageKey = attribute.Key("exception.message")
-	// A stacktrace as a string in the natural representation for the language
-	// runtime. The representation is to be determined and documented by each language
-	// SIG.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'Exception in thread "main" java.lang.RuntimeException: Test
-	// exception\\n at '
-	//  'com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\n at '
-	//  'com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\n at '
-	//  'com.example.GenerateTrace.main(GenerateTrace.java:5)'
-	ExceptionStacktraceKey = attribute.Key("exception.stacktrace")
-	// SHOULD be set to true if the exception event is recorded at a point where it is
-	// known that the exception is escaping the scope of the span.
-	//
-	// Type: boolean
-	// Required: No
-	// Stability: stable
-	// Note: An exception is considered to have escaped (or left) the scope of a span,
-	// if that span is ended while the exception is still logically "in flight".
-	// This may be actually "in flight" in some languages (e.g. if the exception
-	// is passed to a Context manager's `__exit__` method in Python) but will
-	// usually be caught at the point of recording the exception in most languages.
-
-	// It is usually not possible to determine at the point where an exception is
-	// thrown
-	// whether it will escape the scope of a span.
-	// However, it is trivial to know that an exception
-	// will escape, if one checks for an active exception just before ending the span,
-	// as done in the [example above](#exception-end-example).
-
-	// It follows that an exception may still escape the scope of the span
-	// even if the `exception.escaped` attribute was not set or set to false,
-	// since the event might have been recorded at a time where it was not
-	// clear whether the exception will escape.
-	ExceptionEscapedKey = attribute.Key("exception.escaped")
-)
-
-// This semantic convention describes an instance of a function that runs without provisioning or managing of servers (also known as serverless functions or Function as a Service (FaaS)) with spans.
-const (
-	// Type of the trigger on which the function is executed.
-	//
-	// Type: Enum
-	// Required: On FaaS instances, faas.trigger MUST be set on incoming invocations.
-	// Clients invoking FaaS instances MUST set `faas.trigger` on outgoing
-	// invocations, if it is known to the client. This is, for example, not the case,
-	// when the transport layer is abstracted in a FaaS client framework without
-	// access to its configuration.
-	// Stability: stable
-	FaaSTriggerKey = attribute.Key("faas.trigger")
-	// The execution ID of the current function execution.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
-	FaaSExecutionKey = attribute.Key("faas.execution")
-)
-
-var (
-	// A response to some data source operation such as a database or filesystem read/write
-	FaaSTriggerDatasource = FaaSTriggerKey.String("datasource")
-	// To provide an answer to an inbound HTTP request
-	FaaSTriggerHTTP = FaaSTriggerKey.String("http")
-	// A function is set to be executed when messages are sent to a messaging system
-	FaaSTriggerPubsub = FaaSTriggerKey.String("pubsub")
-	// A function is scheduled to be executed regularly
-	FaaSTriggerTimer = FaaSTriggerKey.String("timer")
-	// If none of the others apply
-	FaaSTriggerOther = FaaSTriggerKey.String("other")
-)
-
-// Semantic Convention for FaaS triggered as a response to some data source operation such as a database or filesystem read/write.
-const (
-	// The name of the source on which the triggering operation was performed. For
-	// example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos
-	// DB to the database name.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'myBucketName', 'myDBName'
-	FaaSDocumentCollectionKey = attribute.Key("faas.document.collection")
-	// Describes the type of the operation that was performed on the data.
-	//
-	// Type: Enum
-	// Required: Always
-	// Stability: stable
-	FaaSDocumentOperationKey = attribute.Key("faas.document.operation")
-	// A string containing the time when the data was accessed in the [ISO
-	// 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed
-	// in [UTC](https://www.w3.org/TR/NOTE-datetime).
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: '2020-01-23T13:47:06Z'
-	FaaSDocumentTimeKey = attribute.Key("faas.document.time")
-	// The document name/table subjected to the operation. For example, in Cloud
-	// Storage or S3 is the name of the file, and in Cosmos DB the table name.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'myFile.txt', 'myTableName'
-	FaaSDocumentNameKey = attribute.Key("faas.document.name")
-)
-
-var (
-	// When a new object is created
-	FaaSDocumentOperationInsert = FaaSDocumentOperationKey.String("insert")
-	// When an object is modified
-	FaaSDocumentOperationEdit = FaaSDocumentOperationKey.String("edit")
-	// When an object is deleted
-	FaaSDocumentOperationDelete = FaaSDocumentOperationKey.String("delete")
-)
-
-// Semantic Convention for FaaS scheduled to be executed regularly.
-const (
-	// A string containing the function invocation time in the [ISO
-	// 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed
-	// in [UTC](https://www.w3.org/TR/NOTE-datetime).
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: '2020-01-23T13:47:06Z'
-	FaaSTimeKey = attribute.Key("faas.time")
-	// A string containing the schedule period as [Cron Expression](https://docs.oracl
-	// e.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '0/5 * * * ? *'
-	FaaSCronKey = attribute.Key("faas.cron")
-)
-
-// Contains additional attributes for incoming FaaS spans.
-const (
-	// A boolean that is true if the serverless function is executed for the first
-	// time (aka cold-start).
-	//
-	// Type: boolean
-	// Required: No
-	// Stability: stable
-	FaaSColdstartKey = attribute.Key("faas.coldstart")
-)
-
-// Contains additional attributes for outgoing FaaS spans.
-const (
-	// The name of the invoked function.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'my-function'
-	// Note: SHOULD be equal to the `faas.name` resource attribute of the invoked
-	// function.
-	FaaSInvokedNameKey = attribute.Key("faas.invoked_name")
-	// The cloud provider of the invoked function.
-	//
-	// Type: Enum
-	// Required: Always
-	// Stability: stable
-	// Examples: 'aws'
-	// Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked
-	// function.
-	FaaSInvokedProviderKey = attribute.Key("faas.invoked_provider")
-	// The cloud region of the invoked function.
-	//
-	// Type: string
-	// Required: For some cloud providers, like AWS or GCP, the region in which a
-	// function is hosted is essential to uniquely identify the function and also part
-	// of its endpoint. Since it's part of the endpoint being called, the region is
-	// always known to clients. In these cases, `faas.invoked_region` MUST be set
-	// accordingly. If the region is unknown to the client or not required for
-	// identifying the invoked function, setting `faas.invoked_region` is optional.
-	// Stability: stable
-	// Examples: 'eu-central-1'
-	// Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked
-	// function.
-	FaaSInvokedRegionKey = attribute.Key("faas.invoked_region")
-)
-
-var (
-	// Amazon Web Services
-	FaaSInvokedProviderAWS = FaaSInvokedProviderKey.String("aws")
-	// Microsoft Azure
-	FaaSInvokedProviderAzure = FaaSInvokedProviderKey.String("azure")
-	// Google Cloud Platform
-	FaaSInvokedProviderGCP = FaaSInvokedProviderKey.String("gcp")
-)
-
-// These attributes may be used for any network related operation.
-const (
-	// Transport protocol used. See note below.
-	//
-	// Type: Enum
-	// Required: No
-	// Stability: stable
-	// Examples: 'ip_tcp'
-	NetTransportKey = attribute.Key("net.transport")
-	// Remote address of the peer (dotted decimal for IPv4 or
-	// [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '127.0.0.1'
-	NetPeerIPKey = attribute.Key("net.peer.ip")
-	// Remote port number.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 80, 8080, 443
-	NetPeerPortKey = attribute.Key("net.peer.port")
-	// Remote hostname or similar, see note below.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'example.com'
-	NetPeerNameKey = attribute.Key("net.peer.name")
-	// Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '192.168.0.1'
-	NetHostIPKey = attribute.Key("net.host.ip")
-	// Like `net.peer.port` but for the host port.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 35555
-	NetHostPortKey = attribute.Key("net.host.port")
-	// Local hostname or similar, see note below.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'localhost'
-	NetHostNameKey = attribute.Key("net.host.name")
-)
-
-var (
-	// ip_tcp
-	NetTransportTCP = NetTransportKey.String("ip_tcp")
-	// ip_udp
-	NetTransportUDP = NetTransportKey.String("ip_udp")
-	// Another IP-based protocol
-	NetTransportIP = NetTransportKey.String("ip")
-	// Unix Domain socket. See below
-	NetTransportUnix = NetTransportKey.String("unix")
-	// Named or anonymous pipe. See note below
-	NetTransportPipe = NetTransportKey.String("pipe")
-	// In-process communication
-	NetTransportInProc = NetTransportKey.String("inproc")
-	// Something else (non IP-based)
-	NetTransportOther = NetTransportKey.String("other")
-)
-
-// Operations that access some remote service.
-const (
-	// The [`service.name`](../../resource/semantic_conventions/README.md#service) of
-	// the remote service. SHOULD be equal to the actual `service.name` resource
-	// attribute of the remote service if any.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'AuthTokenCache'
-	PeerServiceKey = attribute.Key("peer.service")
-)
-
-// These attributes may be used for any operation with an authenticated and/or authorized enduser.
-const (
-	// Username or client_id extracted from the access token or
-	// [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the
-	// inbound request from outside the system.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'username'
-	EnduserIDKey = attribute.Key("enduser.id")
-	// Actual/assumed role the client is making the request under extracted from token
-	// or application security context.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'admin'
-	EnduserRoleKey = attribute.Key("enduser.role")
-	// Scopes or granted authorities the client currently possesses extracted from
-	// token or application security context. The value would come from the scope
-	// associated with an [OAuth 2.0 Access
-	// Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value
-	// in a [SAML 2.0 Assertion](http://docs.oasis-
-	// open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'read:message, write:files'
-	EnduserScopeKey = attribute.Key("enduser.scope")
-)
-
-// These attributes may be used for any operation to store information about a thread that started a span.
-const (
-	// Current "managed" thread ID (as opposed to OS thread ID).
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 42
-	ThreadIDKey = attribute.Key("thread.id")
-	// Current thread name.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'main'
-	ThreadNameKey = attribute.Key("thread.name")
-)
-
-// These attributes allow to report this unit of code and therefore to provide more context about the span.
-const (
-	// The method or function name, or equivalent (usually rightmost part of the code
-	// unit's name).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'serveRequest'
-	CodeFunctionKey = attribute.Key("code.function")
-	// The "namespace" within which `code.function` is defined. Usually the qualified
-	// class or module name, such that `code.namespace` + some separator +
-	// `code.function` form a unique identifier for the code unit.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'com.example.MyHTTPService'
-	CodeNamespaceKey = attribute.Key("code.namespace")
-	// The source code file name that identifies the code unit as uniquely as possible
-	// (preferably an absolute file path).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '/usr/local/MyApplication/content_root/app/index.php'
-	CodeFilepathKey = attribute.Key("code.filepath")
-	// The line number in `code.filepath` best representing the operation. It SHOULD
-	// point within the code unit named in `code.function`.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 42
-	CodeLineNumberKey = attribute.Key("code.lineno")
-)
-
-// This document defines semantic conventions for HTTP client and server Spans.
-const (
-	// HTTP request method.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'GET', 'POST', 'HEAD'
-	HTTPMethodKey = attribute.Key("http.method")
-	// Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
-	// Usually the fragment is not transmitted over HTTP, but if it is known, it
-	// should be included nevertheless.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'https://www.foo.bar/search?q=OpenTelemetry#SemConv'
-	// Note: `http.url` MUST NOT contain credentials passed via URL in form of
-	// `https://username:password@www.example.com/`. In such case the attribute's
-	// value should be `https://www.example.com/`.
-	HTTPURLKey = attribute.Key("http.url")
-	// The full request target as passed in a HTTP request line or equivalent.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '/path/12314/?q=ddds#123'
-	HTTPTargetKey = attribute.Key("http.target")
-	// The value of the [HTTP host
-	// header](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is
-	// empty or not present, this attribute should be the same.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'www.example.org'
-	HTTPHostKey = attribute.Key("http.host")
-	// The URI scheme identifying the used protocol.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'http', 'https'
-	HTTPSchemeKey = attribute.Key("http.scheme")
-	// [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).
-	//
-	// Type: int
-	// Required: If and only if one was received/sent.
-	// Stability: stable
-	// Examples: 200
-	HTTPStatusCodeKey = attribute.Key("http.status_code")
-	// Kind of HTTP protocol used.
-	//
-	// Type: Enum
-	// Required: No
-	// Stability: stable
-	// Examples: '1.0'
-	// Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP`
-	// except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.
-	HTTPFlavorKey = attribute.Key("http.flavor")
-	// Value of the [HTTP User-
-	// Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the
-	// client.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'CERN-LineMode/2.15 libwww/2.17b3'
-	HTTPUserAgentKey = attribute.Key("http.user_agent")
-	// The size of the request payload body in bytes. This is the number of bytes
-	// transferred excluding headers and is often, but not always, present as the
-	// [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For
-	// requests using transport encoding, this should be the compressed size.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 3495
-	HTTPRequestContentLengthKey = attribute.Key("http.request_content_length")
-	// The size of the uncompressed request payload body after transport decoding. Not
-	// set if transport encoding not used.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 5493
-	HTTPRequestContentLengthUncompressedKey = attribute.Key("http.request_content_length_uncompressed")
-	// The size of the response payload body in bytes. This is the number of bytes
-	// transferred excluding headers and is often, but not always, present as the
-	// [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For
-	// requests using transport encoding, this should be the compressed size.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 3495
-	HTTPResponseContentLengthKey = attribute.Key("http.response_content_length")
-	// The size of the uncompressed response payload body after transport decoding.
-	// Not set if transport encoding not used.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 5493
-	HTTPResponseContentLengthUncompressedKey = attribute.Key("http.response_content_length_uncompressed")
-)
-
-var (
-	// HTTP 1.0
-	HTTPFlavorHTTP10 = HTTPFlavorKey.String("1.0")
-	// HTTP 1.1
-	HTTPFlavorHTTP11 = HTTPFlavorKey.String("1.1")
-	// HTTP 2
-	HTTPFlavorHTTP20 = HTTPFlavorKey.String("2.0")
-	// SPDY protocol
-	HTTPFlavorSPDY = HTTPFlavorKey.String("SPDY")
-	// QUIC protocol
-	HTTPFlavorQUIC = HTTPFlavorKey.String("QUIC")
-)
-
-// Semantic Convention for HTTP Server
-const (
-	// The primary server name of the matched virtual host. This should be obtained
-	// via configuration. If no such configuration can be obtained, this attribute
-	// MUST NOT be set ( `net.host.name` should be used instead).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'example.com'
-	// Note: `http.url` is usually not readily available on the server side but would
-	// have to be assembled in a cumbersome and sometimes lossy process from other
-	// information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus
-	// preferred to supply the raw data that is available.
-	HTTPServerNameKey = attribute.Key("http.server_name")
-	// The matched route (path template).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '/users/:userID?'
-	HTTPRouteKey = attribute.Key("http.route")
-	// The IP address of the original client behind all proxies, if known (e.g. from
-	// [X-Forwarded-For](https://developer.mozilla.org/en-
-	// US/docs/Web/HTTP/Headers/X-Forwarded-For)).
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '83.164.160.102'
-	// Note: This is not necessarily the same as `net.peer.ip`, which would identify
-	// the network-level peer, which may be a proxy.
-	HTTPClientIPKey = attribute.Key("http.client_ip")
-)
-
-// Attributes that exist for multiple DynamoDB request types.
-const (
-	// The keys in the `RequestItems` object field.
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: 'Users', 'Cats'
-	AWSDynamoDBTableNamesKey = attribute.Key("aws.dynamodb.table_names")
-	// The JSON-serialized value of each item in the `ConsumedCapacity` response
-	// field.
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: '{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : {
-	// "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits":
-	// number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number,
-	// "ReadCapacityUnits": number, "WriteCapacityUnits": number } },
-	// "ReadCapacityUnits": number, "Table": { "CapacityUnits": number,
-	// "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName":
-	// "string", "WriteCapacityUnits": number }'
-	AWSDynamoDBConsumedCapacityKey = attribute.Key("aws.dynamodb.consumed_capacity")
-	// The JSON-serialized value of the `ItemCollectionMetrics` response field.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob,
-	// "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" :
-	// "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S":
-	// "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }'
-	AWSDynamoDBItemCollectionMetricsKey = attribute.Key("aws.dynamodb.item_collection_metrics")
-	// The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.
-	//
-	// Type: double
-	// Required: No
-	// Stability: stable
-	// Examples: 1.0, 2.0
-	AWSDynamoDBProvisionedReadCapacityKey = attribute.Key("aws.dynamodb.provisioned_read_capacity")
-	// The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.
-	//
-	// Type: double
-	// Required: No
-	// Stability: stable
-	// Examples: 1.0, 2.0
-	AWSDynamoDBProvisionedWriteCapacityKey = attribute.Key("aws.dynamodb.provisioned_write_capacity")
-	// The value of the `ConsistentRead` request parameter.
-	//
-	// Type: boolean
-	// Required: No
-	// Stability: stable
-	AWSDynamoDBConsistentReadKey = attribute.Key("aws.dynamodb.consistent_read")
-	// The value of the `ProjectionExpression` request parameter.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'Title', 'Title, Price, Color', 'Title, Description, RelatedItems,
-	// ProductReviews'
-	AWSDynamoDBProjectionKey = attribute.Key("aws.dynamodb.projection")
-	// The value of the `Limit` request parameter.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 10
-	AWSDynamoDBLimitKey = attribute.Key("aws.dynamodb.limit")
-	// The value of the `AttributesToGet` request parameter.
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: 'lives', 'id'
-	AWSDynamoDBAttributesToGetKey = attribute.Key("aws.dynamodb.attributes_to_get")
-	// The value of the `IndexName` request parameter.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'name_to_group'
-	AWSDynamoDBIndexNameKey = attribute.Key("aws.dynamodb.index_name")
-	// The value of the `Select` request parameter.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'ALL_ATTRIBUTES', 'COUNT'
-	AWSDynamoDBSelectKey = attribute.Key("aws.dynamodb.select")
-)
-
-// DynamoDB.CreateTable
-const (
-	// The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request
-	// field
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: '{ "IndexName": "string", "KeySchema": [ { "AttributeName": "string",
-	// "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ],
-	// "ProjectionType": "string" }, "ProvisionedThroughput": { "ReadCapacityUnits":
-	// number, "WriteCapacityUnits": number } }'
-	AWSDynamoDBGlobalSecondaryIndexesKey = attribute.Key("aws.dynamodb.global_secondary_indexes")
-	// The JSON-serialized value of each item of the `LocalSecondaryIndexes` request
-	// field.
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: '{ "IndexARN": "string", "IndexName": "string", "IndexSizeBytes":
-	// number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string",
-	// "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ],
-	// "ProjectionType": "string" } }'
-	AWSDynamoDBLocalSecondaryIndexesKey = attribute.Key("aws.dynamodb.local_secondary_indexes")
-)
-
-// DynamoDB.ListTables
-const (
-	// The value of the `ExclusiveStartTableName` request parameter.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'Users', 'CatsTable'
-	AWSDynamoDBExclusiveStartTableKey = attribute.Key("aws.dynamodb.exclusive_start_table")
-	// The the number of items in the `TableNames` response parameter.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 20
-	AWSDynamoDBTableCountKey = attribute.Key("aws.dynamodb.table_count")
-)
-
-// DynamoDB.Query
-const (
-	// The value of the `ScanIndexForward` request parameter.
-	//
-	// Type: boolean
-	// Required: No
-	// Stability: stable
-	AWSDynamoDBScanForwardKey = attribute.Key("aws.dynamodb.scan_forward")
-)
-
-// DynamoDB.Scan
-const (
-	// The value of the `Segment` request parameter.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 10
-	AWSDynamoDBSegmentKey = attribute.Key("aws.dynamodb.segment")
-	// The value of the `TotalSegments` request parameter.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 100
-	AWSDynamoDBTotalSegmentsKey = attribute.Key("aws.dynamodb.total_segments")
-	// The value of the `Count` response parameter.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 10
-	AWSDynamoDBCountKey = attribute.Key("aws.dynamodb.count")
-	// The value of the `ScannedCount` response parameter.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 50
-	AWSDynamoDBScannedCountKey = attribute.Key("aws.dynamodb.scanned_count")
-)
-
-// DynamoDB.UpdateTable
-const (
-	// The JSON-serialized value of each item in the `AttributeDefinitions` request
-	// field.
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: '{ "AttributeName": "string", "AttributeType": "string" }'
-	AWSDynamoDBAttributeDefinitionsKey = attribute.Key("aws.dynamodb.attribute_definitions")
-	// The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates`
-	// request field.
-	//
-	// Type: string[]
-	// Required: No
-	// Stability: stable
-	// Examples: '{ "Create": { "IndexName": "string", "KeySchema": [ {
-	// "AttributeName": "string", "KeyType": "string" } ], "Projection": {
-	// "NonKeyAttributes": [ "string" ], "ProjectionType": "string" },
-	// "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits":
-	// number } }'
-	AWSDynamoDBGlobalSecondaryIndexUpdatesKey = attribute.Key("aws.dynamodb.global_secondary_index_updates")
-)
-
-// This document defines the attributes used in messaging systems.
-const (
-	// A string identifying the messaging system.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'kafka', 'rabbitmq', 'activemq', 'AmazonSQS'
-	MessagingSystemKey = attribute.Key("messaging.system")
-	// The message destination name. This might be equal to the span name but is
-	// required nevertheless.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'MyQueue', 'MyTopic'
-	MessagingDestinationKey = attribute.Key("messaging.destination")
-	// The kind of message destination
-	//
-	// Type: Enum
-	// Required: Required only if the message destination is either a `queue` or
-	// `topic`.
-	// Stability: stable
-	MessagingDestinationKindKey = attribute.Key("messaging.destination_kind")
-	// A boolean that is true if the message destination is temporary.
-	//
-	// Type: boolean
-	// Required: If missing, it is assumed to be false.
-	// Stability: stable
-	MessagingTempDestinationKey = attribute.Key("messaging.temp_destination")
-	// The name of the transport protocol.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'AMQP', 'MQTT'
-	MessagingProtocolKey = attribute.Key("messaging.protocol")
-	// The version of the transport protocol.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '0.9.1'
-	MessagingProtocolVersionKey = attribute.Key("messaging.protocol_version")
-	// Connection string.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'tibjmsnaming://localhost:7222',
-	// 'https://queue.amazonaws.com/80398EXAMPLE/MyQueue'
-	MessagingURLKey = attribute.Key("messaging.url")
-	// A value used by the messaging system as an identifier for the message,
-	// represented as a string.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '452a7c7c7c7048c2f887f61572b18fc2'
-	MessagingMessageIDKey = attribute.Key("messaging.message_id")
-	// The [conversation ID](#conversations) identifying the conversation to which the
-	// message belongs, represented as a string. Sometimes called "Correlation ID".
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'MyConversationID'
-	MessagingConversationIDKey = attribute.Key("messaging.conversation_id")
-	// The (uncompressed) size of the message payload in bytes. Also use this
-	// attribute if it is unknown whether the compressed or uncompressed payload size
-	// is reported.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 2738
-	MessagingMessagePayloadSizeBytesKey = attribute.Key("messaging.message_payload_size_bytes")
-	// The compressed size of the message payload in bytes.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 2048
-	MessagingMessagePayloadCompressedSizeBytesKey = attribute.Key("messaging.message_payload_compressed_size_bytes")
-)
-
-var (
-	// A message sent to a queue
-	MessagingDestinationKindQueue = MessagingDestinationKindKey.String("queue")
-	// A message sent to a topic
-	MessagingDestinationKindTopic = MessagingDestinationKindKey.String("topic")
-)
-
-// Semantic convention for a consumer of messages received from a messaging system
-const (
-	// A string identifying the kind of message consumption as defined in the
-	// [Operation names](#operation-names) section above. If the operation is "send",
-	// this attribute MUST NOT be set, since the operation can be inferred from the
-	// span kind in that case.
-	//
-	// Type: Enum
-	// Required: No
-	// Stability: stable
-	MessagingOperationKey = attribute.Key("messaging.operation")
-)
-
-var (
-	// receive
-	MessagingOperationReceive = MessagingOperationKey.String("receive")
-	// process
-	MessagingOperationProcess = MessagingOperationKey.String("process")
-)
-
-// Attributes for RabbitMQ
-const (
-	// RabbitMQ message routing key.
-	//
-	// Type: string
-	// Required: Unless it is empty.
-	// Stability: stable
-	// Examples: 'myKey'
-	MessagingRabbitmqRoutingKeyKey = attribute.Key("messaging.rabbitmq.routing_key")
-)
-
-// Attributes for Apache Kafka
-const (
-	// Message keys in Kafka are used for grouping alike messages to ensure they're
-	// processed on the same partition. They differ from `messaging.message_id` in
-	// that they're not unique. If the key is `null`, the attribute MUST NOT be set.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'myKey'
-	// Note: If the key type is not string, it's string representation has to be
-	// supplied for the attribute. If the key has no unambiguous, canonical string
-	// form, don't include its value.
-	MessagingKafkaMessageKeyKey = attribute.Key("messaging.kafka.message_key")
-	// Name of the Kafka Consumer Group that is handling the message. Only applies to
-	// consumers, not producers.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'my-group'
-	MessagingKafkaConsumerGroupKey = attribute.Key("messaging.kafka.consumer_group")
-	// Client ID for the Consumer or Producer that is handling the message.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'client-5'
-	MessagingKafkaClientIDKey = attribute.Key("messaging.kafka.client_id")
-	// Partition the message is sent to.
-	//
-	// Type: int
-	// Required: No
-	// Stability: stable
-	// Examples: 2
-	MessagingKafkaPartitionKey = attribute.Key("messaging.kafka.partition")
-	// A boolean that is true if the message is a tombstone.
-	//
-	// Type: boolean
-	// Required: If missing, it is assumed to be false.
-	// Stability: stable
-	MessagingKafkaTombstoneKey = attribute.Key("messaging.kafka.tombstone")
-)
-
-// This document defines semantic conventions for remote procedure calls.
-const (
-	// A string identifying the remoting system.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'grpc', 'java_rmi', 'wcf'
-	RPCSystemKey = attribute.Key("rpc.system")
-	// The full name of the service being called, including its package name, if
-	// applicable.
-	//
-	// Type: string
-	// Required: No, but recommended
-	// Stability: stable
-	// Examples: 'myservice.EchoService'
-	RPCServiceKey = attribute.Key("rpc.service")
-	// The name of the method being called, must be equal to the $method part in the
-	// span name.
-	//
-	// Type: string
-	// Required: No, but recommended
-	// Stability: stable
-	// Examples: 'exampleMethod'
-	RPCMethodKey = attribute.Key("rpc.method")
-)
-
-// Tech-specific attributes for gRPC.
-const (
-	// The [numeric status
-	// code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC
-	// request.
-	//
-	// Type: Enum
-	// Required: Always
-	// Stability: stable
-	// Examples: 0, 1, 16
-	RPCGRPCStatusCodeKey = attribute.Key("rpc.grpc.status_code")
-)
-
-var (
-	// OK
-	RPCGRPCStatusCodeOk = RPCGRPCStatusCodeKey.Int(0)
-	// CANCELLED
-	RPCGRPCStatusCodeCancelled = RPCGRPCStatusCodeKey.Int(1)
-	// UNKNOWN
-	RPCGRPCStatusCodeUnknown = RPCGRPCStatusCodeKey.Int(2)
-	// INVALID_ARGUMENT
-	RPCGRPCStatusCodeInvalidArgument = RPCGRPCStatusCodeKey.Int(3)
-	// DEADLINE_EXCEEDED
-	RPCGRPCStatusCodeDeadlineExceeded = RPCGRPCStatusCodeKey.Int(4)
-	// NOT_FOUND
-	RPCGRPCStatusCodeNotFound = RPCGRPCStatusCodeKey.Int(5)
-	// ALREADY_EXISTS
-	RPCGRPCStatusCodeAlreadyExists = RPCGRPCStatusCodeKey.Int(6)
-	// PERMISSION_DENIED
-	RPCGRPCStatusCodePermissionDenied = RPCGRPCStatusCodeKey.Int(7)
-	// RESOURCE_EXHAUSTED
-	RPCGRPCStatusCodeResourceExhausted = RPCGRPCStatusCodeKey.Int(8)
-	// FAILED_PRECONDITION
-	RPCGRPCStatusCodeFailedPrecondition = RPCGRPCStatusCodeKey.Int(9)
-	// ABORTED
-	RPCGRPCStatusCodeAborted = RPCGRPCStatusCodeKey.Int(10)
-	// OUT_OF_RANGE
-	RPCGRPCStatusCodeOutOfRange = RPCGRPCStatusCodeKey.Int(11)
-	// UNIMPLEMENTED
-	RPCGRPCStatusCodeUnimplemented = RPCGRPCStatusCodeKey.Int(12)
-	// INTERNAL
-	RPCGRPCStatusCodeInternal = RPCGRPCStatusCodeKey.Int(13)
-	// UNAVAILABLE
-	RPCGRPCStatusCodeUnavailable = RPCGRPCStatusCodeKey.Int(14)
-	// DATA_LOSS
-	RPCGRPCStatusCodeDataLoss = RPCGRPCStatusCodeKey.Int(15)
-	// UNAUTHENTICATED
-	RPCGRPCStatusCodeUnauthenticated = RPCGRPCStatusCodeKey.Int(16)
-)
-
-// Tech-specific attributes for [JSON RPC](https://www.jsonrpc.org/).
-const (
-	// Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC
-	// 1.0 does not specify this, the value can be omitted.
-	//
-	// Type: string
-	// Required: If missing, it is assumed to be "1.0".
-	// Stability: stable
-	// Examples: '2.0', '1.0'
-	RPCJsonrpcVersionKey = attribute.Key("rpc.jsonrpc.version")
-	// `method` property from request. Unlike `rpc.method`, this may not relate to the
-	// actual method being called. Useful for client-side traces since client does not
-	// know what will be called on the server.
-	//
-	// Type: string
-	// Required: Always
-	// Stability: stable
-	// Examples: 'users.create', 'get_users'
-	RPCJsonrpcMethodKey = attribute.Key("rpc.jsonrpc.method")
-	// `id` property of request or response. Since protocol allows id to be int,
-	// string, `null` or missing (for notifications), value is expected to be cast to
-	// string for simplicity. Use empty string in case of `null` value. Omit entirely
-	// if this is a notification.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: '10', 'request-7', ''
-	RPCJsonrpcRequestIDKey = attribute.Key("rpc.jsonrpc.request_id")
-	// `error.code` property of response if it is an error response.
-	//
-	// Type: int
-	// Required: If missing, response is assumed to be successful.
-	// Stability: stable
-	// Examples: -32700, 100
-	RPCJsonrpcErrorCodeKey = attribute.Key("rpc.jsonrpc.error_code")
-	// `error.message` property of response if it is an error response.
-	//
-	// Type: string
-	// Required: No
-	// Stability: stable
-	// Examples: 'Parse error', 'User already exists'
-	RPCJsonrpcErrorMessageKey = attribute.Key("rpc.jsonrpc.error_message")
-)
diff --git a/vendor/go.opentelemetry.io/otel/trace.go b/vendor/go.opentelemetry.io/otel/trace.go
index 28b4f5e4..caf7249d 100644
--- a/vendor/go.opentelemetry.io/otel/trace.go
+++ b/vendor/go.opentelemetry.io/otel/trace.go
@@ -31,9 +31,12 @@ func Tracer(name string, opts ...trace.TracerOption) trace.Tracer {
 // If none is registered then an instance of NoopTracerProvider is returned.
 //
 // Use the trace provider to create a named tracer. E.g.
-//     tracer := otel.GetTracerProvider().Tracer("example.com/foo")
+//
+//	tracer := otel.GetTracerProvider().Tracer("example.com/foo")
+//
 // or
-//     tracer := otel.Tracer("example.com/foo")
+//
+//	tracer := otel.Tracer("example.com/foo")
 func GetTracerProvider() trace.TracerProvider {
 	return global.TracerProvider()
 }
diff --git a/vendor/go.opentelemetry.io/otel/trace/go.mod b/vendor/go.opentelemetry.io/otel/trace/go.mod
index 670e2864..d4b34f0c 100644
--- a/vendor/go.opentelemetry.io/otel/trace/go.mod
+++ b/vendor/go.opentelemetry.io/otel/trace/go.mod
@@ -7,7 +7,7 @@ replace go.opentelemetry.io/otel => ../
 require (
 	github.com/google/go-cmp v0.5.8
 	github.com/stretchr/testify v1.7.1
-	go.opentelemetry.io/otel v1.9.0
+	go.opentelemetry.io/otel v1.10.0
 )
 
 require (
diff --git a/vendor/go.opentelemetry.io/otel/trace/trace.go b/vendor/go.opentelemetry.io/otel/trace/trace.go
index e1f61e07..97f3d838 100644
--- a/vendor/go.opentelemetry.io/otel/trace/trace.go
+++ b/vendor/go.opentelemetry.io/otel/trace/trace.go
@@ -386,16 +386,16 @@ type Span interface {
 //
 // For example, a Link is used in the following situations:
 //
-//   1. Batch Processing: A batch of operations may contain operations
-//      associated with one or more traces/spans. Since there can only be one
-//      parent SpanContext, a Link is used to keep reference to the
-//      SpanContext of all operations in the batch.
-//   2. Public Endpoint: A SpanContext for an in incoming client request on a
-//      public endpoint should be considered untrusted. In such a case, a new
-//      trace with its own identity and sampling decision needs to be created,
-//      but this new trace needs to be related to the original trace in some
-//      form. A Link is used to keep reference to the original SpanContext and
-//      track the relationship.
+//  1. Batch Processing: A batch of operations may contain operations
+//     associated with one or more traces/spans. Since there can only be one
+//     parent SpanContext, a Link is used to keep reference to the
+//     SpanContext of all operations in the batch.
+//  2. Public Endpoint: A SpanContext for an in incoming client request on a
+//     public endpoint should be considered untrusted. In such a case, a new
+//     trace with its own identity and sampling decision needs to be created,
+//     but this new trace needs to be related to the original trace in some
+//     form. A Link is used to keep reference to the original SpanContext and
+//     track the relationship.
 type Link struct {
 	// SpanContext of the linked Span.
 	SpanContext SpanContext
@@ -503,17 +503,48 @@ type Tracer interface {
 	Start(ctx context.Context, spanName string, opts ...SpanStartOption) (context.Context, Span)
 }
 
-// TracerProvider provides access to instrumentation Tracers.
+// TracerProvider provides Tracers that are used by instrumentation code to
+// trace computational workflows.
+//
+// A TracerProvider is the collection destination of all Spans from Tracers it
+// provides, it represents a unique telemetry collection pipeline. How that
+// pipeline is defined, meaning how those Spans are collected, processed, and
+// where they are exported, depends on its implementation. Instrumentation
+// authors do not need to define this implementation, rather just use the
+// provided Tracers to instrument code.
+//
+// Commonly, instrumentation code will accept a TracerProvider implementation
+// at runtime from its users or it can simply use the globally registered one
+// (see https://pkg.go.dev/go.opentelemetry.io/otel#GetTracerProvider).
 //
 // Warning: methods may be added to this interface in minor releases.
 type TracerProvider interface {
-	// Tracer creates an implementation of the Tracer interface.
-	// The instrumentationName must be the name of the library providing
-	// instrumentation. This name may be the same as the instrumented code
-	// only if that code provides built-in instrumentation. If the
-	// instrumentationName is empty, then a implementation defined default
-	// name will be used instead.
+	// Tracer returns a unique Tracer scoped to be used by instrumentation code
+	// to trace computational workflows. The scope and identity of that
+	// instrumentation code is uniquely defined by the name and options passed.
+	//
+	// The passed name needs to uniquely identify instrumentation code.
+	// Therefore, it is recommended that name is the Go package name of the
+	// library providing instrumentation (note: not the code being
+	// instrumented). Instrumentation libraries can have multiple versions,
+	// therefore, the WithInstrumentationVersion option should be used to
+	// distinguish these different codebases. Additionally, instrumentation
+	// libraries may sometimes use traces to communicate different domains of
+	// workflow data (i.e. using spans to communicate workflow events only). If
+	// this is the case, the WithScopeAttributes option should be used to
+	// uniquely identify Tracers that handle the different domains of workflow
+	// data.
+	//
+	// If the same name and options are passed multiple times, the same Tracer
+	// will be returned (it is up to the implementation if this will be the
+	// same underlying instance of that Tracer or not). It is not necessary to
+	// call this multiple times with the same name and options to get an
+	// up-to-date Tracer. All implementations will ensure any TracerProvider
+	// configuration changes are propagated to all provided Tracers.
+	//
+	// If name is empty, then an implementation defined default name will be
+	// used instead.
 	//
-	// This method must be concurrency safe.
-	Tracer(instrumentationName string, opts ...TracerOption) Tracer
+	// This method is safe to call concurrently.
+	Tracer(name string, options ...TracerOption) Tracer
 }
diff --git a/vendor/go.opentelemetry.io/otel/trace/tracestate.go b/vendor/go.opentelemetry.io/otel/trace/tracestate.go
index 5e775ce5..ca68a82e 100644
--- a/vendor/go.opentelemetry.io/otel/trace/tracestate.go
+++ b/vendor/go.opentelemetry.io/otel/trace/tracestate.go
@@ -21,7 +21,7 @@ import (
 	"strings"
 )
 
-var (
+const (
 	maxListMembers = 32
 
 	listDelimiter = ","
@@ -32,10 +32,6 @@ var (
 	withTenantKeyFormat = `[a-z0-9][_0-9a-z\-\*\/]{0,240}@[a-z][_0-9a-z\-\*\/]{0,13}`
 	valueFormat         = `[\x20-\x2b\x2d-\x3c\x3e-\x7e]{0,255}[\x21-\x2b\x2d-\x3c\x3e-\x7e]`
 
-	keyRe    = regexp.MustCompile(`^((` + noTenantKeyFormat + `)|(` + withTenantKeyFormat + `))$`)
-	valueRe  = regexp.MustCompile(`^(` + valueFormat + `)$`)
-	memberRe = regexp.MustCompile(`^\s*((` + noTenantKeyFormat + `)|(` + withTenantKeyFormat + `))=(` + valueFormat + `)\s*$`)
-
 	errInvalidKey    errorConst = "invalid tracestate key"
 	errInvalidValue  errorConst = "invalid tracestate value"
 	errInvalidMember errorConst = "invalid tracestate list-member"
@@ -43,6 +39,12 @@ var (
 	errDuplicate     errorConst = "duplicate list-member in tracestate"
 )
 
+var (
+	keyRe    = regexp.MustCompile(`^((` + noTenantKeyFormat + `)|(` + withTenantKeyFormat + `))$`)
+	valueRe  = regexp.MustCompile(`^(` + valueFormat + `)$`)
+	memberRe = regexp.MustCompile(`^\s*((` + noTenantKeyFormat + `)|(` + withTenantKeyFormat + `))=(` + valueFormat + `)\s*$`)
+)
+
 type member struct {
 	Key   string
 	Value string
diff --git a/vendor/go.opentelemetry.io/otel/version.go b/vendor/go.opentelemetry.io/otel/version.go
index 3de2c94c..806db41c 100644
--- a/vendor/go.opentelemetry.io/otel/version.go
+++ b/vendor/go.opentelemetry.io/otel/version.go
@@ -16,5 +16,5 @@ package otel // import "go.opentelemetry.io/otel"
 
 // Version is the current release version of OpenTelemetry in use.
 func Version() string {
-	return "1.9.0"
+	return "1.10.0"
 }
diff --git a/vendor/go.opentelemetry.io/otel/versions.yaml b/vendor/go.opentelemetry.io/otel/versions.yaml
index ec74ef51..ec2ca16d 100644
--- a/vendor/go.opentelemetry.io/otel/versions.yaml
+++ b/vendor/go.opentelemetry.io/otel/versions.yaml
@@ -14,7 +14,7 @@
 
 module-sets:
   stable-v1:
-    version: v1.9.0
+    version: v1.10.0
     modules:
       - go.opentelemetry.io/otel
       - go.opentelemetry.io/otel/bridge/opentracing
diff --git a/vendor/golang.org/x/sync/singleflight/singleflight.go b/vendor/golang.org/x/sync/singleflight/singleflight.go
index 690eb850..8473fb79 100644
--- a/vendor/golang.org/x/sync/singleflight/singleflight.go
+++ b/vendor/golang.org/x/sync/singleflight/singleflight.go
@@ -52,10 +52,6 @@ type call struct {
 	val interface{}
 	err error
 
-	// forgotten indicates whether Forget was called with this call's key
-	// while the call was still in flight.
-	forgotten bool
-
 	// These fields are read and written with the singleflight
 	// mutex held before the WaitGroup is done, and are read but
 	// not written after the WaitGroup is done.
@@ -148,10 +144,10 @@ func (g *Group) doCall(c *call, key string, fn func() (interface{}, error)) {
 			c.err = errGoexit
 		}
 
-		c.wg.Done()
 		g.mu.Lock()
 		defer g.mu.Unlock()
-		if !c.forgotten {
+		c.wg.Done()
+		if g.m[key] == c {
 			delete(g.m, key)
 		}
 
@@ -204,9 +200,6 @@ func (g *Group) doCall(c *call, key string, fn func() (interface{}, error)) {
 // an earlier call to complete.
 func (g *Group) Forget(key string) {
 	g.mu.Lock()
-	if c, ok := g.m[key]; ok {
-		c.forgotten = true
-	}
 	delete(g.m, key)
 	g.mu.Unlock()
 }
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 4f59628a..4323c4d7 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -1,4 +1,4 @@
-# git.autistici.org/ai3/go-common v0.0.0-20220814151247-39e01d32d5ee
+# git.autistici.org/ai3/go-common v0.0.0-20221125154433-06304016b1da
 ## explicit
 git.autistici.org/ai3/go-common
 git.autistici.org/ai3/go-common/clientutil
@@ -15,7 +15,7 @@ github.com/beorn7/perks/quantile
 github.com/cenkalti/backoff/v4
 # github.com/cespare/xxhash/v2 v2.1.2
 github.com/cespare/xxhash/v2
-# github.com/coreos/go-systemd/v22 v22.3.2
+# github.com/coreos/go-systemd/v22 v22.5.0
 github.com/coreos/go-systemd/v22/daemon
 # github.com/felixge/httpsnoop v1.0.3
 github.com/felixge/httpsnoop
@@ -54,7 +54,9 @@ github.com/prometheus/procfs/internal/fs
 github.com/prometheus/procfs/internal/util
 # go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.34.0
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
-# go.opentelemetry.io/otel v1.9.0
+# go.opentelemetry.io/contrib/propagators/b3 v1.9.0
+go.opentelemetry.io/contrib/propagators/b3
+# go.opentelemetry.io/otel v1.10.0
 go.opentelemetry.io/otel
 go.opentelemetry.io/otel/attribute
 go.opentelemetry.io/otel/baggage
@@ -65,7 +67,6 @@ go.opentelemetry.io/otel/internal/global
 go.opentelemetry.io/otel/propagation
 go.opentelemetry.io/otel/semconv/internal
 go.opentelemetry.io/otel/semconv/v1.12.0
-go.opentelemetry.io/otel/semconv/v1.4.0
 # go.opentelemetry.io/otel/exporters/zipkin v1.9.0
 go.opentelemetry.io/otel/exporters/zipkin
 # go.opentelemetry.io/otel/metric v0.31.0
@@ -78,13 +79,13 @@ go.opentelemetry.io/otel/metric/instrument/syncfloat64
 go.opentelemetry.io/otel/metric/instrument/syncint64
 go.opentelemetry.io/otel/metric/internal/global
 go.opentelemetry.io/otel/metric/unit
-# go.opentelemetry.io/otel/sdk v1.9.0
+# go.opentelemetry.io/otel/sdk v1.10.0
 go.opentelemetry.io/otel/sdk/instrumentation
 go.opentelemetry.io/otel/sdk/internal
 go.opentelemetry.io/otel/sdk/internal/env
 go.opentelemetry.io/otel/sdk/resource
 go.opentelemetry.io/otel/sdk/trace
-# go.opentelemetry.io/otel/trace v1.9.0
+# go.opentelemetry.io/otel/trace v1.10.0
 go.opentelemetry.io/otel/trace
 # golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90
 ## explicit
@@ -97,7 +98,7 @@ golang.org/x/net/internal/iana
 golang.org/x/net/internal/socket
 golang.org/x/net/ipv4
 golang.org/x/net/ipv6
-# golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4
+# golang.org/x/sync v0.1.0
 golang.org/x/sync/singleflight
 # golang.org/x/sys v0.0.0-20220114195835-da31bd327af9
 golang.org/x/sys/execabs
-- 
GitLab