From 411e09b969b1170a9f0c467558eb4c4c110d9c77 Mon Sep 17 00:00:00 2001
From: Michael Darakananda <pongad@google.com>
Date: Tue, 4 Apr 2017 23:20:09 +1000
Subject: [PATCH] all: regenerate protos (#23)

* all: regenerate protos

Adds speech/v1 and language/v1beta2, among other changes

* travis: update Go version

Add 1.7 and 1.8.
Drop 1.5 since grpc doesn't support it.
---
 .travis.yml                                   |    3 +-
 googleapis/api/metric/metric.pb.go            |    6 +-
 googleapis/api/serviceconfig/auth.pb.go       |    6 +
 googleapis/api/serviceconfig/endpoint.pb.go   |   46 +-
 googleapis/api/serviceconfig/quota.pb.go      |  392 +++
 googleapis/api/serviceconfig/service.pb.go    |  127 +-
 .../api/serviceconfig/source_info.pb.go       |   56 +
 .../api/serviceconfig/system_parameter.pb.go  |   10 +-
 googleapis/api/serviceconfig/usage.pb.go      |    8 +-
 .../servicemanagement/v1/servicemanager.pb.go |   30 +-
 .../cloud/language/v1/language_service.pb.go  |   16 +-
 .../language/v1beta1/language_service.pb.go   |   16 +-
 .../language/v1beta2/language_service.pb.go   | 2442 +++++++++++++++++
 googleapis/cloud/speech/v1/cloud_speech.pb.go | 1171 ++++++++
 .../cloud/speech/v1beta1/cloud_speech.pb.go   |  324 +--
 googleapis/cloud/support/common/common.pb.go  |  865 ++++++
 .../support/v1alpha1/cloud_support.pb.go      |  807 ++++++
 googleapis/container/v1/cluster_service.pb.go |  375 +--
 .../devtools/sourcerepo/v1/sourcerepo.pb.go   |  597 ++++
 googleapis/watcher/v1/watch.pb.go             |  376 +++
 20 files changed, 7224 insertions(+), 449 deletions(-)
 create mode 100644 googleapis/api/serviceconfig/quota.pb.go
 create mode 100644 googleapis/api/serviceconfig/source_info.pb.go
 create mode 100644 googleapis/cloud/language/v1beta2/language_service.pb.go
 create mode 100644 googleapis/cloud/speech/v1/cloud_speech.pb.go
 create mode 100644 googleapis/cloud/support/common/common.pb.go
 create mode 100644 googleapis/cloud/support/v1alpha1/cloud_support.pb.go
 create mode 100644 googleapis/devtools/sourcerepo/v1/sourcerepo.pb.go
 create mode 100644 googleapis/watcher/v1/watch.pb.go

diff --git a/.travis.yml b/.travis.yml
index 0a0f71c8..8ea5b23c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,6 @@
 language: go
 go:
-  - 1.5
   - 1.6
+  - 1.7
+  - 1.8
 go_import_path: google.golang.org/genproto
diff --git a/googleapis/api/metric/metric.pb.go b/googleapis/api/metric/metric.pb.go
index 93abe416..738ff43e 100644
--- a/googleapis/api/metric/metric.pb.go
+++ b/googleapis/api/metric/metric.pb.go
@@ -125,12 +125,12 @@ type MetricDescriptor struct {
 	// that defines the scope of the metric type or of its data; and (2) the
 	// metric's URL-encoded type, which also appears in the `type` field of this
 	// descriptor. For example, following is the resource name of a custom
-	// metric within the GCP project 123456789:
+	// metric within the GCP project `my-project-id`:
 	//
-	//     "projects/123456789/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
+	//     "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
 	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
 	// The metric type, including its DNS name prefix. The type is not
-	// URL-encoded.  All user-defined metric types have the DNS name
+	// URL-encoded.  All user-defined custom metric types have the DNS name
 	// `custom.googleapis.com`.  Metric types should use a natural hierarchical
 	// grouping. For example:
 	//
diff --git a/googleapis/api/serviceconfig/auth.pb.go b/googleapis/api/serviceconfig/auth.pb.go
index 6db5ec47..f4899292 100644
--- a/googleapis/api/serviceconfig/auth.pb.go
+++ b/googleapis/api/serviceconfig/auth.pb.go
@@ -17,7 +17,9 @@ It is generated from these files:
 	google/api/log.proto
 	google/api/logging.proto
 	google/api/monitoring.proto
+	google/api/quota.proto
 	google/api/service.proto
+	google/api/source_info.proto
 	google/api/system_parameter.proto
 	google/api/usage.proto
 
@@ -43,7 +45,11 @@ It has these top-level messages:
 	LogDescriptor
 	Logging
 	Monitoring
+	Quota
+	MetricRule
+	QuotaLimit
 	Service
+	SourceInfo
 	SystemParameters
 	SystemParameterRule
 	SystemParameter
diff --git a/googleapis/api/serviceconfig/endpoint.pb.go b/googleapis/api/serviceconfig/endpoint.pb.go
index c726472b..d30d1adc 100644
--- a/googleapis/api/serviceconfig/endpoint.pb.go
+++ b/googleapis/api/serviceconfig/endpoint.pb.go
@@ -43,6 +43,11 @@ type Endpoint struct {
 	Apis []string `protobuf:"bytes,3,rep,name=apis" json:"apis,omitempty"`
 	// The list of features enabled on this endpoint.
 	Features []string `protobuf:"bytes,4,rep,name=features" json:"features,omitempty"`
+	// The specification of an Internet routable address of API frontend that will
+	// handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).
+	// It should be either a valid IPv4 address or a fully-qualified domain name.
+	// For example, "8.8.8.8" or "myservice.appspot.com".
+	Target string `protobuf:"bytes,101,opt,name=target" json:"target,omitempty"`
 	// Allowing
 	// [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
 	// cross-domain traffic, would allow the backends served from this endpoint to
@@ -85,6 +90,13 @@ func (m *Endpoint) GetFeatures() []string {
 	return nil
 }
 
+func (m *Endpoint) GetTarget() string {
+	if m != nil {
+		return m.Target
+	}
+	return ""
+}
+
 func (m *Endpoint) GetAllowCors() bool {
 	if m != nil {
 		return m.AllowCors
@@ -99,21 +111,21 @@ func init() {
 func init() { proto.RegisterFile("google/api/endpoint.proto", fileDescriptor7) }
 
 var fileDescriptor7 = []byte{
-	// 241 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x8f, 0xbf, 0x4e, 0xc3, 0x30,
-	0x10, 0xc6, 0xe5, 0x36, 0x40, 0x62, 0x09, 0x06, 0x4f, 0xa6, 0x02, 0x29, 0x62, 0xca, 0x94, 0x0c,
-	0x8c, 0x4c, 0x14, 0x55, 0x88, 0x2d, 0xca, 0xc8, 0x82, 0x8e, 0x70, 0xb5, 0x2c, 0xb9, 0x77, 0x96,
-	0x6d, 0xe0, 0x11, 0x78, 0x0f, 0x9e, 0x14, 0xc5, 0x69, 0x81, 0x6e, 0xf7, 0xfd, 0x39, 0xe9, 0xf7,
-	0xc9, 0x4b, 0xc3, 0x6c, 0x1c, 0x76, 0xe0, 0x6d, 0x87, 0xf4, 0xe6, 0xd9, 0x52, 0x6a, 0x7d, 0xe0,
-	0xc4, 0x4a, 0xce, 0x51, 0x0b, 0xde, 0xae, 0xae, 0xfe, 0xd5, 0x80, 0x88, 0x13, 0x24, 0xcb, 0x14,
-	0xe7, 0xe6, 0xcd, 0x97, 0x90, 0xe5, 0x66, 0xff, 0xac, 0x94, 0x2c, 0x08, 0x76, 0xa8, 0x45, 0x2d,
-	0x9a, 0x6a, 0xc8, 0xb7, 0xd2, 0xf2, 0x0c, 0x9c, 0x85, 0x88, 0x51, 0x2f, 0xea, 0x65, 0x53, 0x0d,
-	0x07, 0x39, 0xb5, 0xc1, 0xdb, 0xa8, 0x97, 0xd9, 0xce, 0xb7, 0x5a, 0xc9, 0x72, 0x8b, 0x90, 0xde,
-	0x03, 0x46, 0x5d, 0x64, 0xff, 0x57, 0xab, 0x6b, 0x29, 0xc1, 0x39, 0xfe, 0x7c, 0x19, 0x39, 0x44,
-	0x7d, 0x52, 0x8b, 0xa6, 0x1c, 0xaa, 0xec, 0x3c, 0x70, 0x88, 0x6b, 0x96, 0x17, 0x23, 0xef, 0xda,
-	0x3f, 0xf2, 0xf5, 0xf9, 0x01, 0xac, 0x9f, 0x50, 0x7b, 0xf1, 0xbc, 0xd9, 0x87, 0x86, 0x1d, 0x90,
-	0x69, 0x39, 0x98, 0xce, 0x20, 0xe5, 0x21, 0xdd, 0x1c, 0x4d, 0x10, 0x79, 0x69, 0xc4, 0xf0, 0x61,
-	0x47, 0x1c, 0x99, 0xb6, 0xd6, 0xdc, 0x1d, 0xa9, 0xef, 0x45, 0xf1, 0x78, 0xdf, 0x3f, 0xbd, 0x9e,
-	0xe6, 0xc7, 0xdb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x43, 0xb9, 0x21, 0x48, 0x01, 0x00,
-	0x00,
+	// 253 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0x41, 0x4b, 0xc4, 0x30,
+	0x10, 0x85, 0xe9, 0x6e, 0x5d, 0xdb, 0x01, 0x3d, 0xe4, 0x20, 0x71, 0x51, 0x28, 0x9e, 0x7a, 0x6a,
+	0x0f, 0x1e, 0x3d, 0xb9, 0xb2, 0x88, 0xb7, 0xd2, 0xa3, 0x17, 0x19, 0xeb, 0x6c, 0x08, 0x64, 0x33,
+	0x21, 0x89, 0xfa, 0x73, 0x04, 0x7f, 0xa9, 0x34, 0xed, 0xaa, 0x7b, 0x9b, 0xef, 0xbd, 0x37, 0x61,
+	0x5e, 0xe0, 0x52, 0x31, 0x2b, 0x43, 0x2d, 0x3a, 0xdd, 0x92, 0x7d, 0x73, 0xac, 0x6d, 0x6c, 0x9c,
+	0xe7, 0xc8, 0x02, 0x26, 0xab, 0x41, 0xa7, 0xd7, 0x57, 0xff, 0x62, 0x68, 0x2d, 0x47, 0x8c, 0x9a,
+	0x6d, 0x98, 0x92, 0x37, 0x5f, 0x19, 0x14, 0xdb, 0x79, 0x59, 0x08, 0xc8, 0x2d, 0xee, 0x49, 0x66,
+	0x55, 0x56, 0x97, 0x7d, 0x9a, 0x85, 0x84, 0x53, 0x34, 0x1a, 0x03, 0x05, 0xb9, 0xa8, 0x96, 0x75,
+	0xd9, 0x1f, 0x70, 0x4c, 0xa3, 0xd3, 0x41, 0x2e, 0x93, 0x9c, 0x66, 0xb1, 0x86, 0x62, 0x47, 0x18,
+	0xdf, 0x3d, 0x05, 0x99, 0x27, 0xfd, 0x97, 0xc5, 0x05, 0xac, 0x22, 0x7a, 0x45, 0x51, 0x52, 0x7a,
+	0x7f, 0x26, 0x71, 0x0d, 0x80, 0xc6, 0xf0, 0xe7, 0xcb, 0xc0, 0x3e, 0xc8, 0x93, 0x2a, 0xab, 0x8b,
+	0xbe, 0x4c, 0xca, 0x03, 0xfb, 0xb0, 0x61, 0x38, 0x1f, 0x78, 0xdf, 0xfc, 0x35, 0xda, 0x9c, 0x1d,
+	0x0e, 0xee, 0xc6, 0x0a, 0x5d, 0xf6, 0xbc, 0x9d, 0x4d, 0xc5, 0x06, 0xad, 0x6a, 0xd8, 0xab, 0x56,
+	0x91, 0x4d, 0x05, 0xdb, 0xc9, 0x1a, 0x8f, 0x4b, 0x3f, 0x10, 0xc8, 0x7f, 0xe8, 0x81, 0x06, 0xb6,
+	0x3b, 0xad, 0xee, 0x8e, 0xe8, 0x7b, 0x91, 0x3f, 0xde, 0x77, 0x4f, 0xaf, 0xab, 0xb4, 0x78, 0xfb,
+	0x13, 0x00, 0x00, 0xff, 0xff, 0x34, 0x0e, 0xdd, 0x70, 0x60, 0x01, 0x00, 0x00,
 }
diff --git a/googleapis/api/serviceconfig/quota.pb.go b/googleapis/api/serviceconfig/quota.pb.go
new file mode 100644
index 00000000..f5f18ed1
--- /dev/null
+++ b/googleapis/api/serviceconfig/quota.pb.go
@@ -0,0 +1,392 @@
+// Code generated by protoc-gen-go.
+// source: google/api/quota.proto
+// DO NOT EDIT!
+
+package serviceconfig
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// Quota configuration helps to achieve fairness and budgeting in service
+// usage.
+//
+// The quota configuration works this way:
+// - The service configuration defines a set of metrics.
+// - For API calls, the quota.metric_rules maps methods to metrics with
+//   corresponding costs.
+// - The quota.limits defines limits on the metrics, which will be used for
+//   quota checks at runtime.
+//
+// An example quota configuration in yaml format:
+//
+//    quota:
+//      limits:
+//
+//      - name: apiWriteQpsPerProject
+//        metric: library.googleapis.com/write_calls
+//        unit: "1/min/{project}"  # rate limit for consumer projects
+//        values:
+//          STANDARD: 10000
+//
+//      # The metric rules bind all methods to the read_calls metric,
+//      # except for the UpdateBook and DeleteBook methods. These two methods
+//      # are mapped to the write_calls metric, with the UpdateBook method
+//      # consuming at twice rate as the DeleteBook method.
+//      metric_rules:
+//      - selector: "*"
+//        metric_costs:
+//          library.googleapis.com/read_calls: 1
+//      - selector: google.example.library.v1.LibraryService.UpdateBook
+//        metric_costs:
+//          library.googleapis.com/write_calls: 2
+//      - selector: google.example.library.v1.LibraryService.DeleteBook
+//        metric_costs:
+//          library.googleapis.com/write_calls: 1
+//
+//  Corresponding Metric definition:
+//
+//      metrics:
+//      - name: library.googleapis.com/read_calls
+//        display_name: Read requests
+//        metric_kind: DELTA
+//        value_type: INT64
+//
+//      - name: library.googleapis.com/write_calls
+//        display_name: Write requests
+//        metric_kind: DELTA
+//        value_type: INT64
+//
+type Quota struct {
+	// List of `QuotaLimit` definitions for the service.
+	//
+	// Used by metric-based quotas only.
+	Limits []*QuotaLimit `protobuf:"bytes,3,rep,name=limits" json:"limits,omitempty"`
+	// List of `MetricRule` definitions, each one mapping a selected method to one
+	// or more metrics.
+	//
+	// Used by metric-based quotas only.
+	MetricRules []*MetricRule `protobuf:"bytes,4,rep,name=metric_rules,json=metricRules" json:"metric_rules,omitempty"`
+}
+
+func (m *Quota) Reset()                    { *m = Quota{} }
+func (m *Quota) String() string            { return proto.CompactTextString(m) }
+func (*Quota) ProtoMessage()               {}
+func (*Quota) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{0} }
+
+func (m *Quota) GetLimits() []*QuotaLimit {
+	if m != nil {
+		return m.Limits
+	}
+	return nil
+}
+
+func (m *Quota) GetMetricRules() []*MetricRule {
+	if m != nil {
+		return m.MetricRules
+	}
+	return nil
+}
+
+// Bind API methods to metrics. Binding a method to a metric causes that
+// metric's configured quota, billing, and monitoring behaviors to apply to the
+// method call.
+//
+// Used by metric-based quotas only.
+type MetricRule struct {
+	// Selects the methods to which this rule applies.
+	//
+	// Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
+	Selector string `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"`
+	// Metrics to update when the selected methods are called, and the associated
+	// cost applied to each metric.
+	//
+	// The key of the map is the metric name, and the values are the amount
+	// increased for the metric against which the quota limits are defined.
+	// The value must not be negative.
+	MetricCosts map[string]int64 `protobuf:"bytes,2,rep,name=metric_costs,json=metricCosts" json:"metric_costs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+}
+
+func (m *MetricRule) Reset()                    { *m = MetricRule{} }
+func (m *MetricRule) String() string            { return proto.CompactTextString(m) }
+func (*MetricRule) ProtoMessage()               {}
+func (*MetricRule) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{1} }
+
+func (m *MetricRule) GetSelector() string {
+	if m != nil {
+		return m.Selector
+	}
+	return ""
+}
+
+func (m *MetricRule) GetMetricCosts() map[string]int64 {
+	if m != nil {
+		return m.MetricCosts
+	}
+	return nil
+}
+
+// `QuotaLimit` defines a specific limit that applies over a specified duration
+// for a limit type. There can be at most one limit for a duration and limit
+// type combination defined within a `QuotaGroup`.
+type QuotaLimit struct {
+	// Name of the quota limit. The name is used to refer to the limit when
+	// overriding the default limit on per-consumer basis.
+	//
+	// For group-based quota limits, the name must be unique within the quota
+	// group. If a name is not provided, it will be generated from the limit_by
+	// and duration fields.
+	//
+	// For metric-based quota limits, the name must be provided, and it must be
+	// unique within the service. The name can only include alphanumeric
+	// characters as well as '-'.
+	//
+	// The maximum length of the limit name is 64 characters.
+	//
+	// The name of a limit is used as a unique identifier for this limit.
+	// Therefore, once a limit has been put into use, its name should be
+	// immutable. You can use the display_name field to provide a user-friendly
+	// name for the limit. The display name can be evolved over time without
+	// affecting the identity of the limit.
+	Name string `protobuf:"bytes,6,opt,name=name" json:"name,omitempty"`
+	// Optional. User-visible, extended description for this quota limit.
+	// Should be used only when more context is needed to understand this limit
+	// than provided by the limit's display name (see: `display_name`).
+	Description string `protobuf:"bytes,2,opt,name=description" json:"description,omitempty"`
+	// Default number of tokens that can be consumed during the specified
+	// duration. This is the number of tokens assigned when a client
+	// application developer activates the service for his/her project.
+	//
+	// Specifying a value of 0 will block all requests. This can be used if you
+	// are provisioning quota to selected consumers and blocking others.
+	// Similarly, a value of -1 will indicate an unlimited quota. No other
+	// negative values are allowed.
+	//
+	// Used by group-based quotas only.
+	DefaultLimit int64 `protobuf:"varint,3,opt,name=default_limit,json=defaultLimit" json:"default_limit,omitempty"`
+	// Maximum number of tokens that can be consumed during the specified
+	// duration. Client application developers can override the default limit up
+	// to this maximum. If specified, this value cannot be set to a value less
+	// than the default limit. If not specified, it is set to the default limit.
+	//
+	// To allow clients to apply overrides with no upper bound, set this to -1,
+	// indicating unlimited maximum quota.
+	//
+	// Used by group-based quotas only.
+	MaxLimit int64 `protobuf:"varint,4,opt,name=max_limit,json=maxLimit" json:"max_limit,omitempty"`
+	// Free tier value displayed in the Developers Console for this limit.
+	// The free tier is the number of tokens that will be subtracted from the
+	// billed amount when billing is enabled.
+	// This field can only be set on a limit with duration "1d", in a billable
+	// group; it is invalid on any other limit. If this field is not set, it
+	// defaults to 0, indicating that there is no free tier for this service.
+	//
+	// Used by group-based quotas only.
+	FreeTier int64 `protobuf:"varint,7,opt,name=free_tier,json=freeTier" json:"free_tier,omitempty"`
+	// Duration of this limit in textual notation. Example: "100s", "24h", "1d".
+	// For duration longer than a day, only multiple of days is supported. We
+	// support only "100s" and "1d" for now. Additional support will be added in
+	// the future. "0" indicates indefinite duration.
+	//
+	// Used by group-based quotas only.
+	Duration string `protobuf:"bytes,5,opt,name=duration" json:"duration,omitempty"`
+	// The name of the metric this quota limit applies to. The quota limits with
+	// the same metric will be checked together during runtime. The metric must be
+	// defined within the service config.
+	//
+	// Used by metric-based quotas only.
+	Metric string `protobuf:"bytes,8,opt,name=metric" json:"metric,omitempty"`
+	// Specify the unit of the quota limit. It uses the same syntax as
+	// [Metric.unit][]. The supported unit kinds are determined by the quota
+	// backend system.
+	//
+	// The [Google Service Control](https://cloud.google.com/service-control)
+	// supports the following unit components:
+	// * One of the time intevals:
+	//   * "/min"  for quota every minute.
+	//   * "/d"  for quota every 24 hours, starting 00:00 US Pacific Time.
+	//   * Otherwise the quota won't be reset by time, such as storage limit.
+	// * One and only one of the granted containers:
+	//   * "/{organization}" quota for an organization.
+	//   * "/{project}" quota for a project.
+	//   * "/{folder}" quota for a folder.
+	//   * "/{resource}" quota for a universal resource.
+	// * Zero or more quota segmentation dimension. Not all combos are valid.
+	//   * "/{region}" quota for every region. Not to be used with time intervals.
+	//   * Otherwise the resources granted on the target is not segmented.
+	//   * "/{zone}" quota for every zone. Not to be used with time intervals.
+	//   * Otherwise the resources granted on the target is not segmented.
+	//   * "/{resource}" quota for a resource associated with a project or org.
+	//
+	// Here are some examples:
+	// * "1/min/{project}" for quota per minute per project.
+	// * "1/min/{user}" for quota per minute per user.
+	// * "1/min/{organization}" for quota per minute per organization.
+	//
+	// Note: the order of unit components is insignificant.
+	// The "1" at the beginning is required to follow the metric unit syntax.
+	//
+	// Used by metric-based quotas only.
+	Unit string `protobuf:"bytes,9,opt,name=unit" json:"unit,omitempty"`
+	// Tiered limit values. Also allows for regional or zone overrides for these
+	// values if "/{region}" or "/{zone}" is specified in the unit field.
+	//
+	// Currently supported tiers from low to high:
+	// VERY_LOW, LOW, STANDARD, HIGH, VERY_HIGH
+	//
+	// To apply different limit values for users according to their tiers, specify
+	// the values for the tiers you want to differentiate. For example:
+	// {LOW:100, STANDARD:500, HIGH:1000, VERY_HIGH:5000}
+	//
+	// The limit value for each tier is optional except for the tier STANDARD.
+	// The limit value for an unspecified tier falls to the value of its next
+	// tier towards tier STANDARD. For the above example, the limit value for tier
+	// STANDARD is 500.
+	//
+	// To apply the same limit value for all users, just specify limit value for
+	// tier STANDARD. For example: {STANDARD:500}.
+	//
+	// To apply a regional overide for a tier, add a map entry with key
+	// "<TIER>/<region>", where <region> is a region name. Similarly, for a zone
+	// override, add a map entry with key "<TIER>/{zone}".
+	// Further, a wildcard can be used at the end of a zone name in order to
+	// specify zone level overrides. For example:
+	// LOW: 10, STANDARD: 50, HIGH: 100,
+	// LOW/us-central1: 20, STANDARD/us-central1: 60, HIGH/us-central1: 200,
+	// LOW/us-central1-*: 10, STANDARD/us-central1-*: 20, HIGH/us-central1-*: 80
+	//
+	// The regional overrides tier set for each region must be the same as
+	// the tier set for default limit values. Same rule applies for zone overrides
+	// tier as well.
+	//
+	// Used by metric-based quotas only.
+	Values map[string]int64 `protobuf:"bytes,10,rep,name=values" json:"values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	// User-visible display name for this limit.
+	// Optional. If not set, the UI will provide a default display name based on
+	// the quota configuration. This field can be used to override the default
+	// display name generated from the configuration.
+	DisplayName string `protobuf:"bytes,12,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+}
+
+func (m *QuotaLimit) Reset()                    { *m = QuotaLimit{} }
+func (m *QuotaLimit) String() string            { return proto.CompactTextString(m) }
+func (*QuotaLimit) ProtoMessage()               {}
+func (*QuotaLimit) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{2} }
+
+func (m *QuotaLimit) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *QuotaLimit) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *QuotaLimit) GetDefaultLimit() int64 {
+	if m != nil {
+		return m.DefaultLimit
+	}
+	return 0
+}
+
+func (m *QuotaLimit) GetMaxLimit() int64 {
+	if m != nil {
+		return m.MaxLimit
+	}
+	return 0
+}
+
+func (m *QuotaLimit) GetFreeTier() int64 {
+	if m != nil {
+		return m.FreeTier
+	}
+	return 0
+}
+
+func (m *QuotaLimit) GetDuration() string {
+	if m != nil {
+		return m.Duration
+	}
+	return ""
+}
+
+func (m *QuotaLimit) GetMetric() string {
+	if m != nil {
+		return m.Metric
+	}
+	return ""
+}
+
+func (m *QuotaLimit) GetUnit() string {
+	if m != nil {
+		return m.Unit
+	}
+	return ""
+}
+
+func (m *QuotaLimit) GetValues() map[string]int64 {
+	if m != nil {
+		return m.Values
+	}
+	return nil
+}
+
+func (m *QuotaLimit) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*Quota)(nil), "google.api.Quota")
+	proto.RegisterType((*MetricRule)(nil), "google.api.MetricRule")
+	proto.RegisterType((*QuotaLimit)(nil), "google.api.QuotaLimit")
+}
+
+func init() { proto.RegisterFile("google/api/quota.proto", fileDescriptor11) }
+
+var fileDescriptor11 = []byte{
+	// 466 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xc1, 0x8e, 0xd3, 0x30,
+	0x10, 0x55, 0x9a, 0xb6, 0xb4, 0xd3, 0x82, 0x56, 0x16, 0xaa, 0xac, 0xc2, 0xa1, 0x94, 0x03, 0x3d,
+	0xa5, 0x12, 0x5c, 0xd8, 0x45, 0x42, 0x62, 0xd1, 0x0a, 0x81, 0x00, 0x95, 0x08, 0x71, 0xe0, 0x52,
+	0x99, 0x74, 0x1a, 0x59, 0x38, 0x71, 0xb0, 0x9d, 0xd5, 0xf6, 0xcc, 0x9f, 0xf0, 0x0d, 0x7c, 0x20,
+	0xf2, 0xd8, 0xdb, 0x16, 0xd8, 0xcb, 0xde, 0x66, 0xe6, 0xbd, 0xe7, 0x17, 0x3f, 0x4f, 0x60, 0x52,
+	0x6a, 0x5d, 0x2a, 0x5c, 0x8a, 0x46, 0x2e, 0x7f, 0xb4, 0xda, 0x89, 0xac, 0x31, 0xda, 0x69, 0x06,
+	0x61, 0x9e, 0x89, 0x46, 0x4e, 0x1f, 0x1e, 0x71, 0x44, 0x5d, 0x6b, 0x27, 0x9c, 0xd4, 0xb5, 0x0d,
+	0xcc, 0xb9, 0x81, 0xde, 0x27, 0x2f, 0x64, 0x19, 0xf4, 0x95, 0xac, 0xa4, 0xb3, 0x3c, 0x9d, 0xa5,
+	0x8b, 0xd1, 0xd3, 0x49, 0x76, 0x38, 0x23, 0x23, 0xca, 0x7b, 0x0f, 0xe7, 0x91, 0xc5, 0x4e, 0x61,
+	0x5c, 0xa1, 0x33, 0xb2, 0x58, 0x9b, 0x56, 0xa1, 0xe5, 0xdd, 0xff, 0x55, 0x1f, 0x08, 0xcf, 0x5b,
+	0x85, 0xf9, 0xa8, 0xda, 0xd7, 0x76, 0xfe, 0x3b, 0x01, 0x38, 0x60, 0x6c, 0x0a, 0x03, 0x8b, 0x0a,
+	0x0b, 0xa7, 0x0d, 0x4f, 0x66, 0xc9, 0x62, 0x98, 0xef, 0x7b, 0xf6, 0x6e, 0xef, 0x52, 0x68, 0xeb,
+	0x2c, 0xef, 0x90, 0xcb, 0x93, 0x9b, 0x5d, 0x62, 0xf9, 0xda, 0x33, 0x2f, 0x6a, 0x67, 0x76, 0xd7,
+	0xb6, 0x34, 0x99, 0xbe, 0x84, 0x93, 0x7f, 0x09, 0xec, 0x04, 0xd2, 0xef, 0xb8, 0x8b, 0xb6, 0xbe,
+	0x64, 0xf7, 0xa1, 0x77, 0x29, 0x54, 0x8b, 0xbc, 0x33, 0x4b, 0x16, 0x69, 0x1e, 0x9a, 0xb3, 0xce,
+	0xf3, 0x64, 0xfe, 0x33, 0x05, 0x38, 0x04, 0xc1, 0x18, 0x74, 0x6b, 0x51, 0x21, 0xef, 0x93, 0x96,
+	0x6a, 0x36, 0x83, 0xd1, 0x06, 0x6d, 0x61, 0x64, 0xe3, 0x33, 0xa6, 0x23, 0x86, 0xf9, 0xf1, 0x88,
+	0x3d, 0x86, 0xbb, 0x1b, 0xdc, 0x8a, 0x56, 0xb9, 0x35, 0x05, 0xc9, 0x53, 0xb2, 0x19, 0xc7, 0x61,
+	0x38, 0xfa, 0x01, 0x0c, 0x2b, 0x71, 0x15, 0x09, 0x5d, 0x22, 0x0c, 0x2a, 0x71, 0xb5, 0x07, 0xb7,
+	0x06, 0x71, 0xed, 0x24, 0x1a, 0x7e, 0x27, 0x80, 0x7e, 0xf0, 0x59, 0xa2, 0xf1, 0x59, 0x6e, 0x5a,
+	0x43, 0x2f, 0xcc, 0x7b, 0x21, 0xcb, 0xeb, 0x9e, 0x4d, 0xa0, 0x1f, 0xe2, 0xe0, 0x03, 0x42, 0x62,
+	0xe7, 0x2f, 0xd2, 0xd6, 0xd2, 0xf1, 0x61, 0xb8, 0x88, 0xaf, 0xd9, 0x19, 0xf4, 0xe9, 0xe2, 0x96,
+	0x03, 0x25, 0x3e, 0xbf, 0x79, 0x1b, 0xb2, 0x2f, 0x44, 0x0a, 0x61, 0x47, 0x05, 0x7b, 0x04, 0xe3,
+	0x8d, 0xb4, 0x8d, 0x12, 0xbb, 0x35, 0x05, 0x34, 0x8e, 0x29, 0x84, 0xd9, 0x47, 0x51, 0xe1, 0xf4,
+	0x14, 0x46, 0x47, 0xca, 0xdb, 0xbc, 0xc2, 0xb9, 0x82, 0x7b, 0x85, 0xae, 0x8e, 0x3e, 0xe7, 0x3c,
+	0x3c, 0xca, 0xca, 0xaf, 0xf3, 0x2a, 0xf9, 0x7a, 0x11, 0x91, 0x52, 0x2b, 0x51, 0x97, 0x99, 0x36,
+	0xe5, 0xb2, 0xc4, 0x9a, 0x96, 0x7d, 0x19, 0x20, 0xd1, 0x48, 0x4b, 0x7f, 0x83, 0x45, 0x73, 0x29,
+	0x0b, 0x2c, 0x74, 0xbd, 0x95, 0xe5, 0x8b, 0xbf, 0xba, 0x5f, 0x9d, 0xee, 0x9b, 0x57, 0xab, 0xb7,
+	0xdf, 0xfa, 0x24, 0x7c, 0xf6, 0x27, 0x00, 0x00, 0xff, 0xff, 0x90, 0x7e, 0xf5, 0xab, 0x69, 0x03,
+	0x00, 0x00,
+}
diff --git a/googleapis/api/serviceconfig/service.pb.go b/googleapis/api/serviceconfig/service.pb.go
index e2ce14d8..43c3777b 100644
--- a/googleapis/api/serviceconfig/service.pb.go
+++ b/googleapis/api/serviceconfig/service.pb.go
@@ -94,6 +94,8 @@ type Service struct {
 	Backend *Backend `protobuf:"bytes,8,opt,name=backend" json:"backend,omitempty"`
 	// HTTP configuration.
 	Http *google_api.Http `protobuf:"bytes,9,opt,name=http" json:"http,omitempty"`
+	// Quota configuration.
+	Quota *Quota `protobuf:"bytes,10,opt,name=quota" json:"quota,omitempty"`
 	// Auth configuration.
 	Authentication *Authentication `protobuf:"bytes,11,opt,name=authentication" json:"authentication,omitempty"`
 	// Context configuration.
@@ -119,6 +121,8 @@ type Service struct {
 	Monitoring *Monitoring `protobuf:"bytes,28,opt,name=monitoring" json:"monitoring,omitempty"`
 	// System parameter configuration.
 	SystemParameters *SystemParameters `protobuf:"bytes,29,opt,name=system_parameters,json=systemParameters" json:"system_parameters,omitempty"`
+	// Output only. The source information for this configuration if available.
+	SourceInfo *SourceInfo `protobuf:"bytes,37,opt,name=source_info,json=sourceInfo" json:"source_info,omitempty"`
 	// Experimental configuration.
 	Experimental *google_api5.Experimental `protobuf:"bytes,101,opt,name=experimental" json:"experimental,omitempty"`
 }
@@ -126,7 +130,7 @@ type Service struct {
 func (m *Service) Reset()                    { *m = Service{} }
 func (m *Service) String() string            { return proto.CompactTextString(m) }
 func (*Service) ProtoMessage()               {}
-func (*Service) Descriptor() ([]byte, []int) { return fileDescriptor11, []int{0} }
+func (*Service) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{0} }
 
 func (m *Service) GetConfigVersion() *google_protobuf5.UInt32Value {
 	if m != nil {
@@ -205,6 +209,13 @@ func (m *Service) GetHttp() *google_api.Http {
 	return nil
 }
 
+func (m *Service) GetQuota() *Quota {
+	if m != nil {
+		return m.Quota
+	}
+	return nil
+}
+
 func (m *Service) GetAuthentication() *Authentication {
 	if m != nil {
 		return m.Authentication
@@ -282,6 +293,13 @@ func (m *Service) GetSystemParameters() *SystemParameters {
 	return nil
 }
 
+func (m *Service) GetSourceInfo() *SourceInfo {
+	if m != nil {
+		return m.SourceInfo
+	}
+	return nil
+}
+
 func (m *Service) GetExperimental() *google_api5.Experimental {
 	if m != nil {
 		return m.Experimental
@@ -293,56 +311,59 @@ func init() {
 	proto.RegisterType((*Service)(nil), "google.api.Service")
 }
 
-func init() { proto.RegisterFile("google/api/service.proto", fileDescriptor11) }
-
-var fileDescriptor11 = []byte{
-	// 756 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x95, 0x5f, 0x4f, 0xdb, 0x3a,
-	0x14, 0xc0, 0xd5, 0xd2, 0xc2, 0xad, 0xf9, 0x73, 0xc1, 0x14, 0x30, 0xa5, 0xf7, 0x0a, 0xb6, 0x49,
-	0x54, 0x9b, 0x48, 0xa5, 0x22, 0xf1, 0xb2, 0x49, 0x13, 0x05, 0xb4, 0x55, 0x62, 0x52, 0x65, 0x06,
-	0x9a, 0xf6, 0x52, 0xa5, 0x89, 0x09, 0xde, 0x12, 0xdb, 0xb2, 0x1d, 0x46, 0x5f, 0xf7, 0x51, 0xf6,
-	0x49, 0xa7, 0xd8, 0x09, 0x75, 0xda, 0xf2, 0x86, 0xfd, 0xfb, 0x9d, 0xc3, 0x71, 0xec, 0x73, 0x0a,
-	0x50, 0xc4, 0x79, 0x14, 0x93, 0xae, 0x2f, 0x68, 0x57, 0x11, 0xf9, 0x48, 0x03, 0xe2, 0x09, 0xc9,
-	0x35, 0x87, 0xc0, 0x12, 0xcf, 0x17, 0xb4, 0xd5, 0x76, 0x2c, 0x9f, 0x31, 0xae, 0x7d, 0x4d, 0x39,
-	0x53, 0xd6, 0x6c, 0xed, 0xb8, 0x34, 0xd5, 0x0f, 0xf9, 0xb6, 0x9b, 0x7a, 0xec, 0x07, 0x3f, 0x09,
-	0x0b, 0x17, 0x90, 0x80, 0x33, 0x4d, 0x9e, 0xf4, 0x0b, 0x44, 0xf2, 0x38, 0x27, 0xff, 0x3b, 0x24,
-	0xe4, 0x41, 0x9a, 0x10, 0x66, 0xab, 0xc8, 0xf9, 0xbe, 0xc3, 0x09, 0x0b, 0x05, 0xa7, 0xac, 0x48,
-	0xfa, 0xd6, 0x45, 0x4f, 0x82, 0x48, 0x6a, 0x82, 0xe3, 0xd2, 0x62, 0xc1, 0x59, 0x1e, 0xb4, 0x16,
-	0xf9, 0xf6, 0xae, 0xb3, 0x1d, 0xfb, 0x63, 0x52, 0xe8, 0x4d, 0x77, 0x9f, 0x47, 0x0b, 0x4e, 0x11,
-	0xf3, 0x28, 0xa2, 0xac, 0x20, 0x7b, 0x0e, 0x49, 0x88, 0x96, 0x34, 0xc8, 0xc1, 0x6b, 0x17, 0x70,
-	0x46, 0x35, 0x97, 0x24, 0x1c, 0x49, 0xa2, 0x78, 0x2a, 0x8b, 0x2b, 0x69, 0x1d, 0xcc, 0x4b, 0xd3,
-	0xd4, 0x47, 0xee, 0x4d, 0x4e, 0x94, 0x26, 0xc9, 0x48, 0xf8, 0xd2, 0x4f, 0x88, 0x26, 0x72, 0xc1,
-	0x29, 0x52, 0xe5, 0x47, 0x64, 0xe6, 0xdb, 0x99, 0xd5, 0x38, 0xbd, 0xef, 0xfa, 0x6c, 0xf2, 0x22,
-	0x12, 0x34, 0x47, 0xad, 0x59, 0xa4, 0x27, 0x82, 0xcc, 0xdc, 0xd6, 0x33, 0xfb, 0x25, 0x7d, 0x21,
-	0x88, 0xcc, 0x9f, 0xcc, 0xab, 0xdf, 0x0d, 0xb0, 0x72, 0x63, 0x9f, 0x1b, 0xbc, 0x00, 0x1b, 0x01,
-	0x67, 0xf7, 0x34, 0x1a, 0x3d, 0x12, 0xa9, 0x28, 0x67, 0xa8, 0x79, 0x58, 0xe9, 0xac, 0xf6, 0xda,
-	0x5e, 0xfe, 0x02, 0x8b, 0x24, 0xde, 0xed, 0x80, 0xe9, 0xd3, 0xde, 0x9d, 0x1f, 0xa7, 0x04, 0xaf,
-	0xdb, 0x98, 0x3b, 0x1b, 0x02, 0x21, 0xa8, 0x31, 0x3f, 0x21, 0xa8, 0x72, 0x58, 0xe9, 0x34, 0xb0,
-	0xf9, 0x1b, 0x6e, 0x80, 0x2a, 0x0d, 0xd1, 0x91, 0xd9, 0xa9, 0xd2, 0x10, 0x36, 0x41, 0x5d, 0x53,
-	0x1d, 0x13, 0x54, 0x35, 0x5b, 0x76, 0x01, 0x3d, 0xb0, 0x2d, 0x24, 0x0f, 0xd3, 0x80, 0xc8, 0x91,
-	0x90, 0xfc, 0x07, 0x09, 0xf4, 0x88, 0x86, 0x68, 0xd7, 0x38, 0x5b, 0x05, 0x1a, 0x5a, 0x32, 0x08,
-	0x61, 0x07, 0xd4, 0x7c, 0x41, 0x15, 0x5a, 0x3a, 0x5c, 0xea, 0xac, 0xf6, 0x9a, 0x73, 0x45, 0x9e,
-	0x0b, 0x8a, 0x8d, 0x01, 0xdf, 0x81, 0x7a, 0xf6, 0x49, 0x14, 0xaa, 0x19, 0x75, 0x67, 0x4e, 0xfd,
-	0x3a, 0x11, 0x04, 0x5b, 0x27, 0x93, 0x09, 0x4b, 0x13, 0x85, 0xea, 0x2f, 0xc8, 0x57, 0x2c, 0x4d,
-	0xb0, 0x75, 0xe0, 0x47, 0xb0, 0x5e, 0xea, 0x01, 0xb4, 0x6c, 0xbe, 0xd8, 0xbe, 0x37, 0xed, 0x59,
-	0xef, 0xd2, 0x15, 0x70, 0xd9, 0x87, 0x27, 0x60, 0x25, 0x6f, 0x49, 0xf4, 0x8f, 0x09, 0xdd, 0x76,
-	0x43, 0xfb, 0x16, 0xe1, 0xc2, 0x81, 0x6f, 0x40, 0x2d, 0x6b, 0x06, 0xd4, 0x30, 0xee, 0xa6, 0xeb,
-	0x7e, 0xd6, 0x5a, 0x60, 0x43, 0x61, 0x1f, 0x6c, 0x64, 0xed, 0x4f, 0x98, 0xa6, 0x81, 0x2d, 0x6b,
-	0xd5, 0xf8, 0x2d, 0xd7, 0x3f, 0x2f, 0x19, 0x78, 0x26, 0x22, 0x2b, 0x2c, 0x9f, 0x08, 0x68, 0x6d,
-	0xbe, 0xb0, 0x0b, 0x8b, 0x70, 0xe1, 0xc0, 0x63, 0x50, 0x37, 0x0f, 0x19, 0xfd, 0x6b, 0xe4, 0x2d,
-	0x57, 0xbe, 0xcd, 0x00, 0xb6, 0x1c, 0xf6, 0x40, 0xa3, 0x98, 0x0a, 0x0a, 0xc1, 0xf2, 0xd5, 0x65,
-	0xf2, 0x55, 0x0e, 0xf1, 0x54, 0x2b, 0x6a, 0x91, 0x3c, 0x46, 0x3b, 0x8b, 0x6b, 0x91, 0x3c, 0xc6,
-	0x85, 0x03, 0x4f, 0x40, 0x2d, 0xe6, 0x91, 0x42, 0x7b, 0x26, 0x7b, 0xe9, 0x2e, 0xae, 0x79, 0x74,
-	0x49, 0x54, 0x20, 0xa9, 0xd0, 0x5c, 0x62, 0xa3, 0xc1, 0x33, 0xb0, 0x62, 0x27, 0x80, 0x42, 0xc8,
-	0x44, 0xb4, 0xdd, 0x88, 0x2f, 0x06, 0x39, 0x41, 0x85, 0x0c, 0xbf, 0x81, 0xed, 0xf9, 0x01, 0xa1,
-	0xd0, 0xbe, 0xc9, 0x71, 0x5c, 0xca, 0x51, 0x68, 0x38, 0xb7, 0x9c, 0x74, 0x30, 0x99, 0x85, 0xe6,
-	0xbc, 0xf9, 0xb4, 0x42, 0x07, 0xf3, 0xe7, 0xbd, 0xb6, 0x08, 0x17, 0x0e, 0x3c, 0x03, 0x60, 0x3a,
-	0x84, 0x50, 0xdb, 0x44, 0xec, 0x2e, 0xf8, 0xff, 0x59, 0x90, 0x63, 0xc2, 0x01, 0xd8, 0x9a, 0x9d,
-	0x4f, 0x0a, 0xfd, 0x57, 0x6e, 0xf9, 0x2c, 0xfc, 0xc6, 0x48, 0xc3, 0x67, 0x07, 0x6f, 0xaa, 0x99,
-	0x1d, 0xf8, 0x01, 0xac, 0xb9, 0x33, 0x1c, 0x11, 0x93, 0x05, 0x95, 0x2e, 0xd6, 0xe1, 0xb8, 0x64,
-	0xf7, 0x59, 0x36, 0x78, 0x12, 0x47, 0xee, 0xaf, 0xe5, 0x33, 0x69, 0x98, 0x35, 0xdd, 0xb0, 0xf2,
-	0xfd, 0x2a, 0x67, 0x11, 0x8f, 0x7d, 0x16, 0x79, 0x5c, 0x46, 0xdd, 0x88, 0x30, 0xd3, 0x92, 0x5d,
-	0x8b, 0xb2, 0x46, 0x77, 0x7f, 0x3c, 0xed, 0x54, 0x7a, 0x5f, 0x5a, 0xfd, 0xa9, 0xd6, 0x3e, 0x9d,
-	0x0f, 0x07, 0xe3, 0x65, 0x13, 0x78, 0xfa, 0x37, 0x00, 0x00, 0xff, 0xff, 0xe7, 0xee, 0x78, 0x1f,
-	0x74, 0x07, 0x00, 0x00,
+func init() { proto.RegisterFile("google/api/service.proto", fileDescriptor12) }
+
+var fileDescriptor12 = []byte{
+	// 809 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x95, 0xdd, 0x6e, 0xdb, 0x36,
+	0x14, 0x80, 0x61, 0xd7, 0x6e, 0x66, 0x3a, 0xcd, 0x1a, 0xc6, 0x49, 0x19, 0xd7, 0x1b, 0xd2, 0xfd,
+	0xa0, 0xc6, 0x86, 0xca, 0x80, 0x0b, 0x74, 0x17, 0x1b, 0x30, 0xc4, 0x6d, 0xb0, 0x19, 0xe8, 0x00,
+	0x8f, 0x59, 0x8b, 0x61, 0x37, 0x06, 0x2d, 0xd1, 0x0a, 0x37, 0x89, 0xe4, 0x48, 0x2a, 0x8b, 0x5f,
+	0x67, 0xcf, 0xb6, 0x07, 0x19, 0x44, 0x52, 0x31, 0x65, 0x39, 0x77, 0xd6, 0xf9, 0xbe, 0x73, 0x7c,
+	0x28, 0x92, 0x47, 0x00, 0xa5, 0x42, 0xa4, 0x19, 0x9d, 0x10, 0xc9, 0x26, 0x9a, 0xaa, 0x5b, 0x16,
+	0xd3, 0x48, 0x2a, 0x61, 0x04, 0x04, 0x8e, 0x44, 0x44, 0xb2, 0xe1, 0x28, 0xb0, 0x08, 0xe7, 0xc2,
+	0x10, 0xc3, 0x04, 0xd7, 0xce, 0x1c, 0x9e, 0x86, 0xb4, 0x30, 0x37, 0x3e, 0x1c, 0x96, 0x5e, 0x91,
+	0xf8, 0x2f, 0xca, 0x93, 0x3d, 0x24, 0x16, 0xdc, 0xd0, 0x3b, 0xf3, 0x00, 0x51, 0x22, 0xf3, 0xe4,
+	0xf3, 0x80, 0x24, 0x22, 0x2e, 0x72, 0xca, 0x5d, 0x17, 0x9e, 0x9f, 0x07, 0x9c, 0xf2, 0x44, 0x0a,
+	0xc6, 0xab, 0xa2, 0xdf, 0x84, 0xe8, 0x4e, 0x52, 0xc5, 0x6c, 0x72, 0x56, 0x7b, 0xd8, 0xb3, 0x96,
+	0x1b, 0x63, 0xa4, 0x0f, 0x9f, 0x05, 0xe1, 0x8c, 0xac, 0x68, 0xa5, 0x0f, 0xc2, 0xb8, 0x48, 0xf7,
+	0xac, 0x22, 0x13, 0x69, 0xca, 0x78, 0x45, 0x9e, 0x05, 0x24, 0xa7, 0x46, 0xb1, 0xd8, 0x83, 0x2f,
+	0x43, 0x20, 0x38, 0x33, 0x42, 0xd1, 0x64, 0xa9, 0xa8, 0x16, 0x85, 0xaa, 0xb6, 0x64, 0xf8, 0xbc,
+	0x29, 0x6d, 0x4b, 0x87, 0x2d, 0xfe, 0x5d, 0x08, 0x43, 0x7c, 0x3c, 0xdc, 0x3b, 0x57, 0x6d, 0xc9,
+	0xf8, 0x5a, 0x78, 0xfa, 0x22, 0xa4, 0x1b, 0x6d, 0x68, 0xbe, 0x94, 0x44, 0x91, 0x9c, 0x1a, 0xaa,
+	0xf6, 0x14, 0x2e, 0x34, 0x49, 0xe9, 0xce, 0x1b, 0xb7, 0x4f, 0xab, 0x62, 0x3d, 0x21, 0x7c, 0xf3,
+	0x20, 0x92, 0xcc, 0xa3, 0xe1, 0x2e, 0x32, 0x1b, 0x49, 0x77, 0xf6, 0xf8, 0x9e, 0xfd, 0xa3, 0x88,
+	0x94, 0x54, 0xf9, 0x83, 0xf6, 0xc5, 0x7f, 0x3d, 0x70, 0x70, 0xed, 0x0e, 0x29, 0x7c, 0x0b, 0x8e,
+	0x62, 0xc1, 0xd7, 0x2c, 0x5d, 0xde, 0x52, 0xa5, 0x99, 0xe0, 0x68, 0x70, 0xd1, 0x1a, 0xf7, 0xa7,
+	0xa3, 0xc8, 0x9f, 0xdb, 0xaa, 0x48, 0xf4, 0x61, 0xce, 0xcd, 0xeb, 0xe9, 0x47, 0x92, 0x15, 0x14,
+	0x3f, 0x71, 0x39, 0x1f, 0x5d, 0x0a, 0x84, 0xa0, 0xc3, 0x49, 0x4e, 0x51, 0xeb, 0xa2, 0x35, 0xee,
+	0x61, 0xfb, 0x1b, 0x1e, 0x81, 0x36, 0x4b, 0xd0, 0x0b, 0x1b, 0x69, 0xb3, 0x04, 0x0e, 0x40, 0xd7,
+	0x30, 0x93, 0x51, 0xd4, 0xb6, 0x21, 0xf7, 0x00, 0x23, 0x70, 0x22, 0x95, 0x48, 0x8a, 0x98, 0xaa,
+	0xa5, 0x54, 0xe2, 0x4f, 0x1a, 0x9b, 0x25, 0x4b, 0xd0, 0x99, 0x75, 0x8e, 0x2b, 0xb4, 0x70, 0x64,
+	0x9e, 0xc0, 0x31, 0xe8, 0x10, 0xc9, 0x34, 0x7a, 0x74, 0xf1, 0x68, 0xdc, 0x9f, 0x0e, 0x1a, 0x4d,
+	0x5e, 0x4a, 0x86, 0xad, 0x01, 0xbf, 0x05, 0xdd, 0xf2, 0x95, 0x68, 0xd4, 0xb1, 0xea, 0x69, 0x43,
+	0xfd, 0x6d, 0x23, 0x29, 0x76, 0x4e, 0x29, 0x53, 0x5e, 0xe4, 0x1a, 0x75, 0x1f, 0x90, 0xaf, 0x78,
+	0x91, 0x63, 0xe7, 0xc0, 0x1f, 0xc1, 0x93, 0xda, 0xcd, 0x41, 0x8f, 0xed, 0x1b, 0x3b, 0x8f, 0xb6,
+	0x37, 0x3d, 0x7a, 0x17, 0x0a, 0xb8, 0xee, 0xc3, 0x57, 0xe0, 0xc0, 0x5f, 0x64, 0xf4, 0x89, 0x4d,
+	0x3d, 0x09, 0x53, 0x67, 0x0e, 0xe1, 0xca, 0x81, 0x5f, 0x81, 0x4e, 0x79, 0x85, 0x50, 0xcf, 0xba,
+	0x4f, 0x43, 0xf7, 0x67, 0x63, 0x24, 0xb6, 0x14, 0xbe, 0x04, 0x5d, 0x7b, 0x5c, 0x11, 0xb0, 0xda,
+	0x71, 0xa8, 0xfd, 0x5a, 0x02, 0xec, 0x38, 0x9c, 0x81, 0xa3, 0x72, 0xba, 0x50, 0x6e, 0x58, 0xec,
+	0xfa, 0xef, 0xdb, 0x8c, 0x61, 0x98, 0x71, 0x59, 0x33, 0xf0, 0x4e, 0x46, 0xb9, 0x02, 0x3f, 0x70,
+	0xd0, 0x61, 0x73, 0x05, 0x6f, 0x1d, 0xc2, 0x95, 0x53, 0xf6, 0x66, 0x4f, 0x3c, 0xfa, 0xb4, 0xd9,
+	0xdb, 0x87, 0x12, 0x60, 0xc7, 0xe1, 0x14, 0xf4, 0xaa, 0xa1, 0xa3, 0x11, 0xac, 0xef, 0x71, 0x29,
+	0x5f, 0x79, 0x88, 0xb7, 0x5a, 0xd5, 0x8b, 0x12, 0x19, 0x3a, 0xdd, 0xdf, 0x8b, 0x12, 0x19, 0xae,
+	0x1c, 0xf8, 0x0a, 0x74, 0x32, 0x91, 0x6a, 0xf4, 0xcc, 0x56, 0xaf, 0x6d, 0xda, 0x7b, 0x91, 0xbe,
+	0xa3, 0x3a, 0x56, 0x4c, 0x1a, 0xa1, 0xb0, 0xd5, 0xe0, 0x1b, 0x70, 0xe0, 0x06, 0x8c, 0x46, 0xc8,
+	0x66, 0x8c, 0xc2, 0x8c, 0x5f, 0x2c, 0x0a, 0x92, 0x2a, 0x19, 0xfe, 0x0e, 0x4e, 0x9a, 0xf3, 0x47,
+	0xa3, 0x73, 0x5b, 0xe3, 0x65, 0xad, 0x46, 0xa5, 0x61, 0x6f, 0x05, 0xe5, 0x60, 0xbe, 0x0b, 0xed,
+	0x7a, 0xfd, 0x30, 0x44, 0xcf, 0x9b, 0xeb, 0x7d, 0xef, 0x10, 0xae, 0x1c, 0xf8, 0x06, 0x80, 0xed,
+	0x8c, 0x43, 0x23, 0x9b, 0x71, 0xb6, 0xe7, 0xff, 0xcb, 0xa4, 0xc0, 0x84, 0x73, 0x70, 0xbc, 0x3b,
+	0xc8, 0x34, 0xfa, 0xac, 0x3e, 0x1b, 0xca, 0xf4, 0x6b, 0x2b, 0x2d, 0xee, 0x1d, 0xfc, 0x54, 0xef,
+	0x44, 0xe0, 0x77, 0xa0, 0x1f, 0x4c, 0x4c, 0xf4, 0x75, 0xb3, 0x87, 0x6b, 0x8b, 0xe7, 0x7c, 0x2d,
+	0x30, 0xd0, 0xf7, 0xbf, 0xe1, 0x0f, 0xe0, 0x30, 0xfc, 0xb6, 0x20, 0x6a, 0x33, 0x51, 0xed, 0x44,
+	0x04, 0x1c, 0xd7, 0xec, 0x19, 0x2f, 0x47, 0x5b, 0x1e, 0xc8, 0xb3, 0x43, 0x3f, 0xf5, 0x16, 0xe5,
+	0xb5, 0x5e, 0xb4, 0xfe, 0xb8, 0xf2, 0x2c, 0x15, 0x19, 0xe1, 0x69, 0x24, 0x54, 0x3a, 0x49, 0x29,
+	0xb7, 0x97, 0x7e, 0xe2, 0x50, 0x39, 0x4a, 0xc2, 0x8f, 0xba, 0x9b, 0x7b, 0xdf, 0xd7, 0x9e, 0xfe,
+	0x6d, 0x77, 0x7e, 0xba, 0x5c, 0xcc, 0x57, 0x8f, 0x6d, 0xe2, 0xeb, 0xff, 0x03, 0x00, 0x00, 0xff,
+	0xff, 0xcc, 0xae, 0xb3, 0x8f, 0x0c, 0x08, 0x00, 0x00,
 }
diff --git a/googleapis/api/serviceconfig/source_info.pb.go b/googleapis/api/serviceconfig/source_info.pb.go
new file mode 100644
index 00000000..7bcd3bc0
--- /dev/null
+++ b/googleapis/api/serviceconfig/source_info.pb.go
@@ -0,0 +1,56 @@
+// Code generated by protoc-gen-go.
+// source: google/api/source_info.proto
+// DO NOT EDIT!
+
+package serviceconfig
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import google_protobuf1 "github.com/golang/protobuf/ptypes/any"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// Source information used to create a Service Config
+type SourceInfo struct {
+	// All files used during config generation.
+	SourceFiles []*google_protobuf1.Any `protobuf:"bytes,1,rep,name=source_files,json=sourceFiles" json:"source_files,omitempty"`
+}
+
+func (m *SourceInfo) Reset()                    { *m = SourceInfo{} }
+func (m *SourceInfo) String() string            { return proto.CompactTextString(m) }
+func (*SourceInfo) ProtoMessage()               {}
+func (*SourceInfo) Descriptor() ([]byte, []int) { return fileDescriptor13, []int{0} }
+
+func (m *SourceInfo) GetSourceFiles() []*google_protobuf1.Any {
+	if m != nil {
+		return m.SourceFiles
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SourceInfo)(nil), "google.api.SourceInfo")
+}
+
+func init() { proto.RegisterFile("google/api/source_info.proto", fileDescriptor13) }
+
+var fileDescriptor13 = []byte{
+	// 198 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0x4f, 0x2c, 0xc8, 0xd4, 0x2f, 0xce, 0x2f, 0x2d, 0x4a, 0x4e, 0x8d, 0xcf, 0xcc,
+	0x4b, 0xcb, 0xd7, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x82, 0xc8, 0xea, 0x25, 0x16, 0x64,
+	0x4a, 0x49, 0x42, 0x55, 0x82, 0x65, 0x92, 0x4a, 0xd3, 0xf4, 0x13, 0xf3, 0x2a, 0x21, 0xca, 0x94,
+	0x5c, 0xb9, 0xb8, 0x82, 0xc1, 0x7a, 0x3d, 0xf3, 0xd2, 0xf2, 0x85, 0xcc, 0xb9, 0x78, 0xa0, 0x26,
+	0xa5, 0x65, 0xe6, 0xa4, 0x16, 0x4b, 0x30, 0x2a, 0x30, 0x6b, 0x70, 0x1b, 0x89, 0xe8, 0x41, 0xcd,
+	0x82, 0xe9, 0xd7, 0x73, 0xcc, 0xab, 0x0c, 0xe2, 0x86, 0xa8, 0x74, 0x03, 0x29, 0x74, 0x2a, 0xe4,
+	0xe2, 0x4b, 0xce, 0xcf, 0xd5, 0x43, 0xd8, 0xe9, 0xc4, 0x8f, 0x30, 0x36, 0x00, 0xa4, 0x2d, 0x80,
+	0x31, 0xca, 0x15, 0x2a, 0x9d, 0x9e, 0x9f, 0x93, 0x98, 0x97, 0xae, 0x97, 0x5f, 0x94, 0xae, 0x9f,
+	0x9e, 0x9a, 0x07, 0x36, 0x54, 0x1f, 0x22, 0x95, 0x58, 0x90, 0x59, 0x0c, 0xf1, 0x4f, 0x6a, 0x51,
+	0x59, 0x66, 0x72, 0x6a, 0x72, 0x7e, 0x5e, 0x5a, 0x66, 0xba, 0x35, 0x0a, 0x6f, 0x11, 0x13, 0x8b,
+	0xbb, 0x63, 0x80, 0x67, 0x12, 0x1b, 0x58, 0xa3, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x78,
+	0x5d, 0xab, 0x07, 0x01, 0x00, 0x00,
+}
diff --git a/googleapis/api/serviceconfig/system_parameter.pb.go b/googleapis/api/serviceconfig/system_parameter.pb.go
index 937416e8..9f9366df 100644
--- a/googleapis/api/serviceconfig/system_parameter.pb.go
+++ b/googleapis/api/serviceconfig/system_parameter.pb.go
@@ -55,7 +55,7 @@ type SystemParameters struct {
 func (m *SystemParameters) Reset()                    { *m = SystemParameters{} }
 func (m *SystemParameters) String() string            { return proto.CompactTextString(m) }
 func (*SystemParameters) ProtoMessage()               {}
-func (*SystemParameters) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{0} }
+func (*SystemParameters) Descriptor() ([]byte, []int) { return fileDescriptor14, []int{0} }
 
 func (m *SystemParameters) GetRules() []*SystemParameterRule {
 	if m != nil {
@@ -83,7 +83,7 @@ type SystemParameterRule struct {
 func (m *SystemParameterRule) Reset()                    { *m = SystemParameterRule{} }
 func (m *SystemParameterRule) String() string            { return proto.CompactTextString(m) }
 func (*SystemParameterRule) ProtoMessage()               {}
-func (*SystemParameterRule) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{1} }
+func (*SystemParameterRule) Descriptor() ([]byte, []int) { return fileDescriptor14, []int{1} }
 
 func (m *SystemParameterRule) GetSelector() string {
 	if m != nil {
@@ -116,7 +116,7 @@ type SystemParameter struct {
 func (m *SystemParameter) Reset()                    { *m = SystemParameter{} }
 func (m *SystemParameter) String() string            { return proto.CompactTextString(m) }
 func (*SystemParameter) ProtoMessage()               {}
-func (*SystemParameter) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{2} }
+func (*SystemParameter) Descriptor() ([]byte, []int) { return fileDescriptor14, []int{2} }
 
 func (m *SystemParameter) GetName() string {
 	if m != nil {
@@ -145,9 +145,9 @@ func init() {
 	proto.RegisterType((*SystemParameter)(nil), "google.api.SystemParameter")
 }
 
-func init() { proto.RegisterFile("google/api/system_parameter.proto", fileDescriptor12) }
+func init() { proto.RegisterFile("google/api/system_parameter.proto", fileDescriptor14) }
 
-var fileDescriptor12 = []byte{
+var fileDescriptor14 = []byte{
 	// 286 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0xbf, 0x4e, 0xc3, 0x30,
 	0x10, 0x87, 0x95, 0xb6, 0x20, 0xb8, 0x4a, 0xfc, 0x71, 0x19, 0x22, 0x18, 0x5a, 0x3a, 0x75, 0x72,
diff --git a/googleapis/api/serviceconfig/usage.pb.go b/googleapis/api/serviceconfig/usage.pb.go
index cabacf86..e09a7e7e 100644
--- a/googleapis/api/serviceconfig/usage.pb.go
+++ b/googleapis/api/serviceconfig/usage.pb.go
@@ -38,7 +38,7 @@ type Usage struct {
 func (m *Usage) Reset()                    { *m = Usage{} }
 func (m *Usage) String() string            { return proto.CompactTextString(m) }
 func (*Usage) ProtoMessage()               {}
-func (*Usage) Descriptor() ([]byte, []int) { return fileDescriptor13, []int{0} }
+func (*Usage) Descriptor() ([]byte, []int) { return fileDescriptor15, []int{0} }
 
 func (m *Usage) GetRequirements() []string {
 	if m != nil {
@@ -99,7 +99,7 @@ type UsageRule struct {
 func (m *UsageRule) Reset()                    { *m = UsageRule{} }
 func (m *UsageRule) String() string            { return proto.CompactTextString(m) }
 func (*UsageRule) ProtoMessage()               {}
-func (*UsageRule) Descriptor() ([]byte, []int) { return fileDescriptor13, []int{1} }
+func (*UsageRule) Descriptor() ([]byte, []int) { return fileDescriptor15, []int{1} }
 
 func (m *UsageRule) GetSelector() string {
 	if m != nil {
@@ -120,9 +120,9 @@ func init() {
 	proto.RegisterType((*UsageRule)(nil), "google.api.UsageRule")
 }
 
-func init() { proto.RegisterFile("google/api/usage.proto", fileDescriptor13) }
+func init() { proto.RegisterFile("google/api/usage.proto", fileDescriptor15) }
 
-var fileDescriptor13 = []byte{
+var fileDescriptor15 = []byte{
 	// 303 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0xcf, 0x4b, 0x3b, 0x31,
 	0x10, 0xc5, 0x49, 0xfb, 0x6d, 0xbf, 0x6d, 0x14, 0x0f, 0x01, 0x4b, 0xa8, 0x0a, 0x4b, 0x4f, 0x0b,
diff --git a/googleapis/api/servicemanagement/v1/servicemanager.pb.go b/googleapis/api/servicemanagement/v1/servicemanager.pb.go
index 55aa67fc..962d16d1 100644
--- a/googleapis/api/servicemanagement/v1/servicemanager.pb.go
+++ b/googleapis/api/servicemanagement/v1/servicemanager.pb.go
@@ -8,7 +8,7 @@ import proto "github.com/golang/protobuf/proto"
 import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
-import google_api19 "google.golang.org/genproto/googleapis/api/serviceconfig"
+import google_api21 "google.golang.org/genproto/googleapis/api/serviceconfig"
 import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
 import google_protobuf1 "github.com/golang/protobuf/ptypes/any"
 import _ "github.com/golang/protobuf/ptypes/empty"
@@ -250,7 +250,7 @@ func (m *ListServiceConfigsRequest) GetPageSize() int32 {
 // Response message for ListServiceConfigs method.
 type ListServiceConfigsResponse struct {
 	// The list of service configuration resources.
-	ServiceConfigs []*google_api19.Service `protobuf:"bytes,1,rep,name=service_configs,json=serviceConfigs" json:"service_configs,omitempty"`
+	ServiceConfigs []*google_api21.Service `protobuf:"bytes,1,rep,name=service_configs,json=serviceConfigs" json:"service_configs,omitempty"`
 	// The token of the next page of results.
 	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
 }
@@ -260,7 +260,7 @@ func (m *ListServiceConfigsResponse) String() string            { return proto.C
 func (*ListServiceConfigsResponse) ProtoMessage()               {}
 func (*ListServiceConfigsResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} }
 
-func (m *ListServiceConfigsResponse) GetServiceConfigs() []*google_api19.Service {
+func (m *ListServiceConfigsResponse) GetServiceConfigs() []*google_api21.Service {
 	if m != nil {
 		return m.ServiceConfigs
 	}
@@ -280,7 +280,7 @@ type CreateServiceConfigRequest struct {
 	// for naming requirements.  For example: `example.googleapis.com`.
 	ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName" json:"service_name,omitempty"`
 	// The service configuration resource.
-	ServiceConfig *google_api19.Service `protobuf:"bytes,2,opt,name=service_config,json=serviceConfig" json:"service_config,omitempty"`
+	ServiceConfig *google_api21.Service `protobuf:"bytes,2,opt,name=service_config,json=serviceConfig" json:"service_config,omitempty"`
 }
 
 func (m *CreateServiceConfigRequest) Reset()                    { *m = CreateServiceConfigRequest{} }
@@ -295,7 +295,7 @@ func (m *CreateServiceConfigRequest) GetServiceName() string {
 	return ""
 }
 
-func (m *CreateServiceConfigRequest) GetServiceConfig() *google_api19.Service {
+func (m *CreateServiceConfigRequest) GetServiceConfig() *google_api21.Service {
 	if m != nil {
 		return m.ServiceConfig
 	}
@@ -344,7 +344,7 @@ func (m *SubmitConfigSourceRequest) GetValidateOnly() bool {
 // Response message for SubmitConfigSource method.
 type SubmitConfigSourceResponse struct {
 	// The generated service configuration.
-	ServiceConfig *google_api19.Service `protobuf:"bytes,1,opt,name=service_config,json=serviceConfig" json:"service_config,omitempty"`
+	ServiceConfig *google_api21.Service `protobuf:"bytes,1,opt,name=service_config,json=serviceConfig" json:"service_config,omitempty"`
 }
 
 func (m *SubmitConfigSourceResponse) Reset()                    { *m = SubmitConfigSourceResponse{} }
@@ -352,7 +352,7 @@ func (m *SubmitConfigSourceResponse) String() string            { return proto.C
 func (*SubmitConfigSourceResponse) ProtoMessage()               {}
 func (*SubmitConfigSourceResponse) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} }
 
-func (m *SubmitConfigSourceResponse) GetServiceConfig() *google_api19.Service {
+func (m *SubmitConfigSourceResponse) GetServiceConfig() *google_api21.Service {
 	if m != nil {
 		return m.ServiceConfig
 	}
@@ -694,12 +694,12 @@ type ServiceManagerClient interface {
 	// from the newest to the oldest.
 	ListServiceConfigs(ctx context.Context, in *ListServiceConfigsRequest, opts ...grpc.CallOption) (*ListServiceConfigsResponse, error)
 	// Gets a service configuration (version) for a managed service.
-	GetServiceConfig(ctx context.Context, in *GetServiceConfigRequest, opts ...grpc.CallOption) (*google_api19.Service, error)
+	GetServiceConfig(ctx context.Context, in *GetServiceConfigRequest, opts ...grpc.CallOption) (*google_api21.Service, error)
 	// Creates a new service configuration (version) for a managed service.
 	// This method only stores the service configuration. To roll out the service
 	// configuration to backend systems please call
 	// [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout].
-	CreateServiceConfig(ctx context.Context, in *CreateServiceConfigRequest, opts ...grpc.CallOption) (*google_api19.Service, error)
+	CreateServiceConfig(ctx context.Context, in *CreateServiceConfigRequest, opts ...grpc.CallOption) (*google_api21.Service, error)
 	// Creates a new service configuration (version) for a managed service based
 	// on
 	// user-supplied configuration source files (for example: OpenAPI
@@ -813,8 +813,8 @@ func (c *serviceManagerClient) ListServiceConfigs(ctx context.Context, in *ListS
 	return out, nil
 }
 
-func (c *serviceManagerClient) GetServiceConfig(ctx context.Context, in *GetServiceConfigRequest, opts ...grpc.CallOption) (*google_api19.Service, error) {
-	out := new(google_api19.Service)
+func (c *serviceManagerClient) GetServiceConfig(ctx context.Context, in *GetServiceConfigRequest, opts ...grpc.CallOption) (*google_api21.Service, error) {
+	out := new(google_api21.Service)
 	err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/GetServiceConfig", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -822,8 +822,8 @@ func (c *serviceManagerClient) GetServiceConfig(ctx context.Context, in *GetServ
 	return out, nil
 }
 
-func (c *serviceManagerClient) CreateServiceConfig(ctx context.Context, in *CreateServiceConfigRequest, opts ...grpc.CallOption) (*google_api19.Service, error) {
-	out := new(google_api19.Service)
+func (c *serviceManagerClient) CreateServiceConfig(ctx context.Context, in *CreateServiceConfigRequest, opts ...grpc.CallOption) (*google_api21.Service, error) {
+	out := new(google_api21.Service)
 	err := grpc.Invoke(ctx, "/google.api.servicemanagement.v1.ServiceManager/CreateServiceConfig", in, out, c.cc, opts...)
 	if err != nil {
 		return nil, err
@@ -924,12 +924,12 @@ type ServiceManagerServer interface {
 	// from the newest to the oldest.
 	ListServiceConfigs(context.Context, *ListServiceConfigsRequest) (*ListServiceConfigsResponse, error)
 	// Gets a service configuration (version) for a managed service.
-	GetServiceConfig(context.Context, *GetServiceConfigRequest) (*google_api19.Service, error)
+	GetServiceConfig(context.Context, *GetServiceConfigRequest) (*google_api21.Service, error)
 	// Creates a new service configuration (version) for a managed service.
 	// This method only stores the service configuration. To roll out the service
 	// configuration to backend systems please call
 	// [CreateServiceRollout][google.api.servicemanagement.v1.ServiceManager.CreateServiceRollout].
-	CreateServiceConfig(context.Context, *CreateServiceConfigRequest) (*google_api19.Service, error)
+	CreateServiceConfig(context.Context, *CreateServiceConfigRequest) (*google_api21.Service, error)
 	// Creates a new service configuration (version) for a managed service based
 	// on
 	// user-supplied configuration source files (for example: OpenAPI
diff --git a/googleapis/cloud/language/v1/language_service.pb.go b/googleapis/cloud/language/v1/language_service.pb.go
index 59b83931..638bef05 100644
--- a/googleapis/cloud/language/v1/language_service.pb.go
+++ b/googleapis/cloud/language/v1/language_service.pb.go
@@ -1067,9 +1067,7 @@ type Document struct {
 	// accepted.<br>
 	// **Current Language Restrictions:**
 	//
-	//  * Only English, Spanish, and Japanese textual content
-	//    are supported, with the following additional restriction:
-	//    * `analyzeSentiment` only supports English text.
+	//  * Only English, Spanish, and Japanese textual content are supported.
 	// If the language (either specified by the caller or automatically detected)
 	// is not supported by the called API method, an `INVALID_ARGUMENT` error
 	// is returned.
@@ -1343,7 +1341,7 @@ type Sentiment struct {
 	// negative).
 	Magnitude float32 `protobuf:"fixed32,2,opt,name=magnitude" json:"magnitude,omitempty"`
 	// Sentiment score between -1.0 (negative sentiment) and 1.0
-	// (positive sentiment.)
+	// (positive sentiment).
 	Score float32 `protobuf:"fixed32,3,opt,name=score" json:"score,omitempty"`
 }
 
@@ -1950,8 +1948,9 @@ const _ = grpc.SupportPackageIsVersion4
 type LanguageServiceClient interface {
 	// Analyzes the sentiment of the provided text.
 	AnalyzeSentiment(ctx context.Context, in *AnalyzeSentimentRequest, opts ...grpc.CallOption) (*AnalyzeSentimentResponse, error)
-	// Finds named entities (currently finds proper names) in the text,
-	// entity types, salience, mentions for each entity, and other properties.
+	// Finds named entities (currently proper names and common nouns) in the text
+	// along with entity types, salience, mentions for each entity, and
+	// other properties.
 	AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error)
 	// Analyzes the syntax of the text and provides sentence boundaries and
 	// tokenization along with part of speech tags, dependency trees, and other
@@ -2011,8 +2010,9 @@ func (c *languageServiceClient) AnnotateText(ctx context.Context, in *AnnotateTe
 type LanguageServiceServer interface {
 	// Analyzes the sentiment of the provided text.
 	AnalyzeSentiment(context.Context, *AnalyzeSentimentRequest) (*AnalyzeSentimentResponse, error)
-	// Finds named entities (currently finds proper names) in the text,
-	// entity types, salience, mentions for each entity, and other properties.
+	// Finds named entities (currently proper names and common nouns) in the text
+	// along with entity types, salience, mentions for each entity, and
+	// other properties.
 	AnalyzeEntities(context.Context, *AnalyzeEntitiesRequest) (*AnalyzeEntitiesResponse, error)
 	// Analyzes the syntax of the text and provides sentence boundaries and
 	// tokenization along with part of speech tags, dependency trees, and other
diff --git a/googleapis/cloud/language/v1beta1/language_service.pb.go b/googleapis/cloud/language/v1beta1/language_service.pb.go
index 7ae6078e..3e710dec 100644
--- a/googleapis/cloud/language/v1beta1/language_service.pb.go
+++ b/googleapis/cloud/language/v1beta1/language_service.pb.go
@@ -1067,9 +1067,7 @@ type Document struct {
 	// accepted.<br>
 	// **Current Language Restrictions:**
 	//
-	//  * Only English, Spanish, and Japanese textual content
-	//    are supported, with the following additional restriction:
-	//    * `analyzeSentiment` only supports English text.
+	//  * Only English, Spanish, and Japanese textual content are supported.
 	// If the language (either specified by the caller or automatically detected)
 	// is not supported by the called API method, an `INVALID_ARGUMENT` error
 	// is returned.
@@ -1347,7 +1345,7 @@ type Sentiment struct {
 	// negative).
 	Magnitude float32 `protobuf:"fixed32,2,opt,name=magnitude" json:"magnitude,omitempty"`
 	// Sentiment score between -1.0 (negative sentiment) and 1.0
-	// (positive sentiment.)
+	// (positive sentiment).
 	Score float32 `protobuf:"fixed32,3,opt,name=score" json:"score,omitempty"`
 }
 
@@ -1957,8 +1955,9 @@ const _ = grpc.SupportPackageIsVersion4
 type LanguageServiceClient interface {
 	// Analyzes the sentiment of the provided text.
 	AnalyzeSentiment(ctx context.Context, in *AnalyzeSentimentRequest, opts ...grpc.CallOption) (*AnalyzeSentimentResponse, error)
-	// Finds named entities (currently finds proper names) in the text,
-	// entity types, salience, mentions for each entity, and other properties.
+	// Finds named entities (currently proper names and common nouns) in the text
+	// along with entity types, salience, mentions for each entity, and
+	// other properties.
 	AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error)
 	// Analyzes the syntax of the text and provides sentence boundaries and
 	// tokenization along with part of speech tags, dependency trees, and other
@@ -2018,8 +2017,9 @@ func (c *languageServiceClient) AnnotateText(ctx context.Context, in *AnnotateTe
 type LanguageServiceServer interface {
 	// Analyzes the sentiment of the provided text.
 	AnalyzeSentiment(context.Context, *AnalyzeSentimentRequest) (*AnalyzeSentimentResponse, error)
-	// Finds named entities (currently finds proper names) in the text,
-	// entity types, salience, mentions for each entity, and other properties.
+	// Finds named entities (currently proper names and common nouns) in the text
+	// along with entity types, salience, mentions for each entity, and
+	// other properties.
 	AnalyzeEntities(context.Context, *AnalyzeEntitiesRequest) (*AnalyzeEntitiesResponse, error)
 	// Analyzes the syntax of the text and provides sentence boundaries and
 	// tokenization along with part of speech tags, dependency trees, and other
diff --git a/googleapis/cloud/language/v1beta2/language_service.pb.go b/googleapis/cloud/language/v1beta2/language_service.pb.go
new file mode 100644
index 00000000..70598bf6
--- /dev/null
+++ b/googleapis/cloud/language/v1beta2/language_service.pb.go
@@ -0,0 +1,2442 @@
+// Code generated by protoc-gen-go.
+// source: google/cloud/language/v1beta2/language_service.proto
+// DO NOT EDIT!
+
+/*
+Package language is a generated protocol buffer package.
+
+It is generated from these files:
+	google/cloud/language/v1beta2/language_service.proto
+
+It has these top-level messages:
+	Document
+	Sentence
+	Entity
+	Token
+	Sentiment
+	PartOfSpeech
+	DependencyEdge
+	EntityMention
+	TextSpan
+	AnalyzeSentimentRequest
+	AnalyzeSentimentResponse
+	AnalyzeEntitySentimentRequest
+	AnalyzeEntitySentimentResponse
+	AnalyzeEntitiesRequest
+	AnalyzeEntitiesResponse
+	AnalyzeSyntaxRequest
+	AnalyzeSyntaxResponse
+	AnnotateTextRequest
+	AnnotateTextResponse
+*/
+package language
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import _ "google.golang.org/genproto/googleapis/longrunning"
+import _ "github.com/golang/protobuf/ptypes/timestamp"
+import _ "google.golang.org/genproto/googleapis/rpc/status"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// Represents the text encoding that the caller uses to process the output.
+// Providing an `EncodingType` is recommended because the API provides the
+// beginning offsets for various outputs, such as tokens and mentions, and
+// languages that natively use different text encodings may access offsets
+// differently.
+type EncodingType int32
+
+const (
+	// If `EncodingType` is not specified, encoding-dependent information (such as
+	// `begin_offset`) will be set at `-1`.
+	EncodingType_NONE EncodingType = 0
+	// Encoding-dependent information (such as `begin_offset`) is calculated based
+	// on the UTF-8 encoding of the input. C++ and Go are examples of languages
+	// that use this encoding natively.
+	EncodingType_UTF8 EncodingType = 1
+	// Encoding-dependent information (such as `begin_offset`) is calculated based
+	// on the UTF-16 encoding of the input. Java and Javascript are examples of
+	// languages that use this encoding natively.
+	EncodingType_UTF16 EncodingType = 2
+	// Encoding-dependent information (such as `begin_offset`) is calculated based
+	// on the UTF-32 encoding of the input. Python is an example of a language
+	// that uses this encoding natively.
+	EncodingType_UTF32 EncodingType = 3
+)
+
+var EncodingType_name = map[int32]string{
+	0: "NONE",
+	1: "UTF8",
+	2: "UTF16",
+	3: "UTF32",
+}
+var EncodingType_value = map[string]int32{
+	"NONE":  0,
+	"UTF8":  1,
+	"UTF16": 2,
+	"UTF32": 3,
+}
+
+func (x EncodingType) String() string {
+	return proto.EnumName(EncodingType_name, int32(x))
+}
+func (EncodingType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+// The document types enum.
+type Document_Type int32
+
+const (
+	// The content type is not specified.
+	Document_TYPE_UNSPECIFIED Document_Type = 0
+	// Plain text
+	Document_PLAIN_TEXT Document_Type = 1
+	// HTML
+	Document_HTML Document_Type = 2
+)
+
+var Document_Type_name = map[int32]string{
+	0: "TYPE_UNSPECIFIED",
+	1: "PLAIN_TEXT",
+	2: "HTML",
+}
+var Document_Type_value = map[string]int32{
+	"TYPE_UNSPECIFIED": 0,
+	"PLAIN_TEXT":       1,
+	"HTML":             2,
+}
+
+func (x Document_Type) String() string {
+	return proto.EnumName(Document_Type_name, int32(x))
+}
+func (Document_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} }
+
+// The type of the entity.
+type Entity_Type int32
+
+const (
+	// Unknown
+	Entity_UNKNOWN Entity_Type = 0
+	// Person
+	Entity_PERSON Entity_Type = 1
+	// Location
+	Entity_LOCATION Entity_Type = 2
+	// Organization
+	Entity_ORGANIZATION Entity_Type = 3
+	// Event
+	Entity_EVENT Entity_Type = 4
+	// Work of art
+	Entity_WORK_OF_ART Entity_Type = 5
+	// Consumer goods
+	Entity_CONSUMER_GOOD Entity_Type = 6
+	// Other types
+	Entity_OTHER Entity_Type = 7
+)
+
+var Entity_Type_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "PERSON",
+	2: "LOCATION",
+	3: "ORGANIZATION",
+	4: "EVENT",
+	5: "WORK_OF_ART",
+	6: "CONSUMER_GOOD",
+	7: "OTHER",
+}
+var Entity_Type_value = map[string]int32{
+	"UNKNOWN":       0,
+	"PERSON":        1,
+	"LOCATION":      2,
+	"ORGANIZATION":  3,
+	"EVENT":         4,
+	"WORK_OF_ART":   5,
+	"CONSUMER_GOOD": 6,
+	"OTHER":         7,
+}
+
+func (x Entity_Type) String() string {
+	return proto.EnumName(Entity_Type_name, int32(x))
+}
+func (Entity_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
+
+// The part of speech tags enum.
+type PartOfSpeech_Tag int32
+
+const (
+	// Unknown
+	PartOfSpeech_UNKNOWN PartOfSpeech_Tag = 0
+	// Adjective
+	PartOfSpeech_ADJ PartOfSpeech_Tag = 1
+	// Adposition (preposition and postposition)
+	PartOfSpeech_ADP PartOfSpeech_Tag = 2
+	// Adverb
+	PartOfSpeech_ADV PartOfSpeech_Tag = 3
+	// Conjunction
+	PartOfSpeech_CONJ PartOfSpeech_Tag = 4
+	// Determiner
+	PartOfSpeech_DET PartOfSpeech_Tag = 5
+	// Noun (common and proper)
+	PartOfSpeech_NOUN PartOfSpeech_Tag = 6
+	// Cardinal number
+	PartOfSpeech_NUM PartOfSpeech_Tag = 7
+	// Pronoun
+	PartOfSpeech_PRON PartOfSpeech_Tag = 8
+	// Particle or other function word
+	PartOfSpeech_PRT PartOfSpeech_Tag = 9
+	// Punctuation
+	PartOfSpeech_PUNCT PartOfSpeech_Tag = 10
+	// Verb (all tenses and modes)
+	PartOfSpeech_VERB PartOfSpeech_Tag = 11
+	// Other: foreign words, typos, abbreviations
+	PartOfSpeech_X PartOfSpeech_Tag = 12
+	// Affix
+	PartOfSpeech_AFFIX PartOfSpeech_Tag = 13
+)
+
+var PartOfSpeech_Tag_name = map[int32]string{
+	0:  "UNKNOWN",
+	1:  "ADJ",
+	2:  "ADP",
+	3:  "ADV",
+	4:  "CONJ",
+	5:  "DET",
+	6:  "NOUN",
+	7:  "NUM",
+	8:  "PRON",
+	9:  "PRT",
+	10: "PUNCT",
+	11: "VERB",
+	12: "X",
+	13: "AFFIX",
+}
+var PartOfSpeech_Tag_value = map[string]int32{
+	"UNKNOWN": 0,
+	"ADJ":     1,
+	"ADP":     2,
+	"ADV":     3,
+	"CONJ":    4,
+	"DET":     5,
+	"NOUN":    6,
+	"NUM":     7,
+	"PRON":    8,
+	"PRT":     9,
+	"PUNCT":   10,
+	"VERB":    11,
+	"X":       12,
+	"AFFIX":   13,
+}
+
+func (x PartOfSpeech_Tag) String() string {
+	return proto.EnumName(PartOfSpeech_Tag_name, int32(x))
+}
+func (PartOfSpeech_Tag) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 0} }
+
+// The characteristic of a verb that expresses time flow during an event.
+type PartOfSpeech_Aspect int32
+
+const (
+	// Aspect is not applicable in the analyzed language or is not predicted.
+	PartOfSpeech_ASPECT_UNKNOWN PartOfSpeech_Aspect = 0
+	// Perfective
+	PartOfSpeech_PERFECTIVE PartOfSpeech_Aspect = 1
+	// Imperfective
+	PartOfSpeech_IMPERFECTIVE PartOfSpeech_Aspect = 2
+	// Progressive
+	PartOfSpeech_PROGRESSIVE PartOfSpeech_Aspect = 3
+)
+
+var PartOfSpeech_Aspect_name = map[int32]string{
+	0: "ASPECT_UNKNOWN",
+	1: "PERFECTIVE",
+	2: "IMPERFECTIVE",
+	3: "PROGRESSIVE",
+}
+var PartOfSpeech_Aspect_value = map[string]int32{
+	"ASPECT_UNKNOWN": 0,
+	"PERFECTIVE":     1,
+	"IMPERFECTIVE":   2,
+	"PROGRESSIVE":    3,
+}
+
+func (x PartOfSpeech_Aspect) String() string {
+	return proto.EnumName(PartOfSpeech_Aspect_name, int32(x))
+}
+func (PartOfSpeech_Aspect) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 1} }
+
+// The grammatical function performed by a noun or pronoun in a phrase,
+// clause, or sentence. In some languages, other parts of speech, such as
+// adjective and determiner, take case inflection in agreement with the noun.
+type PartOfSpeech_Case int32
+
+const (
+	// Case is not applicable in the analyzed language or is not predicted.
+	PartOfSpeech_CASE_UNKNOWN PartOfSpeech_Case = 0
+	// Accusative
+	PartOfSpeech_ACCUSATIVE PartOfSpeech_Case = 1
+	// Adverbial
+	PartOfSpeech_ADVERBIAL PartOfSpeech_Case = 2
+	// Complementive
+	PartOfSpeech_COMPLEMENTIVE PartOfSpeech_Case = 3
+	// Dative
+	PartOfSpeech_DATIVE PartOfSpeech_Case = 4
+	// Genitive
+	PartOfSpeech_GENITIVE PartOfSpeech_Case = 5
+	// Instrumental
+	PartOfSpeech_INSTRUMENTAL PartOfSpeech_Case = 6
+	// Locative
+	PartOfSpeech_LOCATIVE PartOfSpeech_Case = 7
+	// Nominative
+	PartOfSpeech_NOMINATIVE PartOfSpeech_Case = 8
+	// Oblique
+	PartOfSpeech_OBLIQUE PartOfSpeech_Case = 9
+	// Partitive
+	PartOfSpeech_PARTITIVE PartOfSpeech_Case = 10
+	// Prepositional
+	PartOfSpeech_PREPOSITIONAL PartOfSpeech_Case = 11
+	// Reflexive
+	PartOfSpeech_REFLEXIVE_CASE PartOfSpeech_Case = 12
+	// Relative
+	PartOfSpeech_RELATIVE_CASE PartOfSpeech_Case = 13
+	// Vocative
+	PartOfSpeech_VOCATIVE PartOfSpeech_Case = 14
+)
+
+var PartOfSpeech_Case_name = map[int32]string{
+	0:  "CASE_UNKNOWN",
+	1:  "ACCUSATIVE",
+	2:  "ADVERBIAL",
+	3:  "COMPLEMENTIVE",
+	4:  "DATIVE",
+	5:  "GENITIVE",
+	6:  "INSTRUMENTAL",
+	7:  "LOCATIVE",
+	8:  "NOMINATIVE",
+	9:  "OBLIQUE",
+	10: "PARTITIVE",
+	11: "PREPOSITIONAL",
+	12: "REFLEXIVE_CASE",
+	13: "RELATIVE_CASE",
+	14: "VOCATIVE",
+}
+var PartOfSpeech_Case_value = map[string]int32{
+	"CASE_UNKNOWN":   0,
+	"ACCUSATIVE":     1,
+	"ADVERBIAL":      2,
+	"COMPLEMENTIVE":  3,
+	"DATIVE":         4,
+	"GENITIVE":       5,
+	"INSTRUMENTAL":   6,
+	"LOCATIVE":       7,
+	"NOMINATIVE":     8,
+	"OBLIQUE":        9,
+	"PARTITIVE":      10,
+	"PREPOSITIONAL":  11,
+	"REFLEXIVE_CASE": 12,
+	"RELATIVE_CASE":  13,
+	"VOCATIVE":       14,
+}
+
+func (x PartOfSpeech_Case) String() string {
+	return proto.EnumName(PartOfSpeech_Case_name, int32(x))
+}
+func (PartOfSpeech_Case) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 2} }
+
+// Depending on the language, Form can be categorizing different forms of
+// verbs, adjectives, adverbs, etc. For example, categorizing inflected
+// endings of verbs and adjectives or distinguishing between short and long
+// forms of adjectives and participles
+type PartOfSpeech_Form int32
+
+const (
+	// Form is not applicable in the analyzed language or is not predicted.
+	PartOfSpeech_FORM_UNKNOWN PartOfSpeech_Form = 0
+	// Adnomial
+	PartOfSpeech_ADNOMIAL PartOfSpeech_Form = 1
+	// Auxiliary
+	PartOfSpeech_AUXILIARY PartOfSpeech_Form = 2
+	// Complementizer
+	PartOfSpeech_COMPLEMENTIZER PartOfSpeech_Form = 3
+	// Final ending
+	PartOfSpeech_FINAL_ENDING PartOfSpeech_Form = 4
+	// Gerund
+	PartOfSpeech_GERUND PartOfSpeech_Form = 5
+	// Realis
+	PartOfSpeech_REALIS PartOfSpeech_Form = 6
+	// Irrealis
+	PartOfSpeech_IRREALIS PartOfSpeech_Form = 7
+	// Short form
+	PartOfSpeech_SHORT PartOfSpeech_Form = 8
+	// Long form
+	PartOfSpeech_LONG PartOfSpeech_Form = 9
+	// Order form
+	PartOfSpeech_ORDER PartOfSpeech_Form = 10
+	// Specific form
+	PartOfSpeech_SPECIFIC PartOfSpeech_Form = 11
+)
+
+var PartOfSpeech_Form_name = map[int32]string{
+	0:  "FORM_UNKNOWN",
+	1:  "ADNOMIAL",
+	2:  "AUXILIARY",
+	3:  "COMPLEMENTIZER",
+	4:  "FINAL_ENDING",
+	5:  "GERUND",
+	6:  "REALIS",
+	7:  "IRREALIS",
+	8:  "SHORT",
+	9:  "LONG",
+	10: "ORDER",
+	11: "SPECIFIC",
+}
+var PartOfSpeech_Form_value = map[string]int32{
+	"FORM_UNKNOWN":   0,
+	"ADNOMIAL":       1,
+	"AUXILIARY":      2,
+	"COMPLEMENTIZER": 3,
+	"FINAL_ENDING":   4,
+	"GERUND":         5,
+	"REALIS":         6,
+	"IRREALIS":       7,
+	"SHORT":          8,
+	"LONG":           9,
+	"ORDER":          10,
+	"SPECIFIC":       11,
+}
+
+func (x PartOfSpeech_Form) String() string {
+	return proto.EnumName(PartOfSpeech_Form_name, int32(x))
+}
+func (PartOfSpeech_Form) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 3} }
+
+// Gender classes of nouns reflected in the behaviour of associated words.
+type PartOfSpeech_Gender int32
+
+const (
+	// Gender is not applicable in the analyzed language or is not predicted.
+	PartOfSpeech_GENDER_UNKNOWN PartOfSpeech_Gender = 0
+	// Feminine
+	PartOfSpeech_FEMININE PartOfSpeech_Gender = 1
+	// Masculine
+	PartOfSpeech_MASCULINE PartOfSpeech_Gender = 2
+	// Neuter
+	PartOfSpeech_NEUTER PartOfSpeech_Gender = 3
+)
+
+var PartOfSpeech_Gender_name = map[int32]string{
+	0: "GENDER_UNKNOWN",
+	1: "FEMININE",
+	2: "MASCULINE",
+	3: "NEUTER",
+}
+var PartOfSpeech_Gender_value = map[string]int32{
+	"GENDER_UNKNOWN": 0,
+	"FEMININE":       1,
+	"MASCULINE":      2,
+	"NEUTER":         3,
+}
+
+func (x PartOfSpeech_Gender) String() string {
+	return proto.EnumName(PartOfSpeech_Gender_name, int32(x))
+}
+func (PartOfSpeech_Gender) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 4} }
+
+// The grammatical feature of verbs, used for showing modality and attitude.
+type PartOfSpeech_Mood int32
+
+const (
+	// Mood is not applicable in the analyzed language or is not predicted.
+	PartOfSpeech_MOOD_UNKNOWN PartOfSpeech_Mood = 0
+	// Conditional
+	PartOfSpeech_CONDITIONAL_MOOD PartOfSpeech_Mood = 1
+	// Imperative
+	PartOfSpeech_IMPERATIVE PartOfSpeech_Mood = 2
+	// Indicative
+	PartOfSpeech_INDICATIVE PartOfSpeech_Mood = 3
+	// Interrogative
+	PartOfSpeech_INTERROGATIVE PartOfSpeech_Mood = 4
+	// Jussive
+	PartOfSpeech_JUSSIVE PartOfSpeech_Mood = 5
+	// Subjunctive
+	PartOfSpeech_SUBJUNCTIVE PartOfSpeech_Mood = 6
+)
+
+var PartOfSpeech_Mood_name = map[int32]string{
+	0: "MOOD_UNKNOWN",
+	1: "CONDITIONAL_MOOD",
+	2: "IMPERATIVE",
+	3: "INDICATIVE",
+	4: "INTERROGATIVE",
+	5: "JUSSIVE",
+	6: "SUBJUNCTIVE",
+}
+var PartOfSpeech_Mood_value = map[string]int32{
+	"MOOD_UNKNOWN":     0,
+	"CONDITIONAL_MOOD": 1,
+	"IMPERATIVE":       2,
+	"INDICATIVE":       3,
+	"INTERROGATIVE":    4,
+	"JUSSIVE":          5,
+	"SUBJUNCTIVE":      6,
+}
+
+func (x PartOfSpeech_Mood) String() string {
+	return proto.EnumName(PartOfSpeech_Mood_name, int32(x))
+}
+func (PartOfSpeech_Mood) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 5} }
+
+// Count distinctions.
+type PartOfSpeech_Number int32
+
+const (
+	// Number is not applicable in the analyzed language or is not predicted.
+	PartOfSpeech_NUMBER_UNKNOWN PartOfSpeech_Number = 0
+	// Singular
+	PartOfSpeech_SINGULAR PartOfSpeech_Number = 1
+	// Plural
+	PartOfSpeech_PLURAL PartOfSpeech_Number = 2
+	// Dual
+	PartOfSpeech_DUAL PartOfSpeech_Number = 3
+)
+
+var PartOfSpeech_Number_name = map[int32]string{
+	0: "NUMBER_UNKNOWN",
+	1: "SINGULAR",
+	2: "PLURAL",
+	3: "DUAL",
+}
+var PartOfSpeech_Number_value = map[string]int32{
+	"NUMBER_UNKNOWN": 0,
+	"SINGULAR":       1,
+	"PLURAL":         2,
+	"DUAL":           3,
+}
+
+func (x PartOfSpeech_Number) String() string {
+	return proto.EnumName(PartOfSpeech_Number_name, int32(x))
+}
+func (PartOfSpeech_Number) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 6} }
+
+// The distinction between the speaker, second person, third person, etc.
+type PartOfSpeech_Person int32
+
+const (
+	// Person is not applicable in the analyzed language or is not predicted.
+	PartOfSpeech_PERSON_UNKNOWN PartOfSpeech_Person = 0
+	// First
+	PartOfSpeech_FIRST PartOfSpeech_Person = 1
+	// Second
+	PartOfSpeech_SECOND PartOfSpeech_Person = 2
+	// Third
+	PartOfSpeech_THIRD PartOfSpeech_Person = 3
+	// Reflexive
+	PartOfSpeech_REFLEXIVE_PERSON PartOfSpeech_Person = 4
+)
+
+var PartOfSpeech_Person_name = map[int32]string{
+	0: "PERSON_UNKNOWN",
+	1: "FIRST",
+	2: "SECOND",
+	3: "THIRD",
+	4: "REFLEXIVE_PERSON",
+}
+var PartOfSpeech_Person_value = map[string]int32{
+	"PERSON_UNKNOWN":   0,
+	"FIRST":            1,
+	"SECOND":           2,
+	"THIRD":            3,
+	"REFLEXIVE_PERSON": 4,
+}
+
+func (x PartOfSpeech_Person) String() string {
+	return proto.EnumName(PartOfSpeech_Person_name, int32(x))
+}
+func (PartOfSpeech_Person) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 7} }
+
+// This category shows if the token is part of a proper name.
+type PartOfSpeech_Proper int32
+
+const (
+	// Proper is not applicable in the analyzed language or is not predicted.
+	PartOfSpeech_PROPER_UNKNOWN PartOfSpeech_Proper = 0
+	// Proper
+	PartOfSpeech_PROPER PartOfSpeech_Proper = 1
+	// Not proper
+	PartOfSpeech_NOT_PROPER PartOfSpeech_Proper = 2
+)
+
+var PartOfSpeech_Proper_name = map[int32]string{
+	0: "PROPER_UNKNOWN",
+	1: "PROPER",
+	2: "NOT_PROPER",
+}
+var PartOfSpeech_Proper_value = map[string]int32{
+	"PROPER_UNKNOWN": 0,
+	"PROPER":         1,
+	"NOT_PROPER":     2,
+}
+
+func (x PartOfSpeech_Proper) String() string {
+	return proto.EnumName(PartOfSpeech_Proper_name, int32(x))
+}
+func (PartOfSpeech_Proper) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 8} }
+
+// Reciprocal features of a pronoun.
+type PartOfSpeech_Reciprocity int32
+
+const (
+	// Reciprocity is not applicable in the analyzed language or is not
+	// predicted.
+	PartOfSpeech_RECIPROCITY_UNKNOWN PartOfSpeech_Reciprocity = 0
+	// Reciprocal
+	PartOfSpeech_RECIPROCAL PartOfSpeech_Reciprocity = 1
+	// Non-reciprocal
+	PartOfSpeech_NON_RECIPROCAL PartOfSpeech_Reciprocity = 2
+)
+
+var PartOfSpeech_Reciprocity_name = map[int32]string{
+	0: "RECIPROCITY_UNKNOWN",
+	1: "RECIPROCAL",
+	2: "NON_RECIPROCAL",
+}
+var PartOfSpeech_Reciprocity_value = map[string]int32{
+	"RECIPROCITY_UNKNOWN": 0,
+	"RECIPROCAL":          1,
+	"NON_RECIPROCAL":      2,
+}
+
+func (x PartOfSpeech_Reciprocity) String() string {
+	return proto.EnumName(PartOfSpeech_Reciprocity_name, int32(x))
+}
+func (PartOfSpeech_Reciprocity) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 9} }
+
+// Time reference.
+type PartOfSpeech_Tense int32
+
+const (
+	// Tense is not applicable in the analyzed language or is not predicted.
+	PartOfSpeech_TENSE_UNKNOWN PartOfSpeech_Tense = 0
+	// Conditional
+	PartOfSpeech_CONDITIONAL_TENSE PartOfSpeech_Tense = 1
+	// Future
+	PartOfSpeech_FUTURE PartOfSpeech_Tense = 2
+	// Past
+	PartOfSpeech_PAST PartOfSpeech_Tense = 3
+	// Present
+	PartOfSpeech_PRESENT PartOfSpeech_Tense = 4
+	// Imperfect
+	PartOfSpeech_IMPERFECT PartOfSpeech_Tense = 5
+	// Pluperfect
+	PartOfSpeech_PLUPERFECT PartOfSpeech_Tense = 6
+)
+
+var PartOfSpeech_Tense_name = map[int32]string{
+	0: "TENSE_UNKNOWN",
+	1: "CONDITIONAL_TENSE",
+	2: "FUTURE",
+	3: "PAST",
+	4: "PRESENT",
+	5: "IMPERFECT",
+	6: "PLUPERFECT",
+}
+var PartOfSpeech_Tense_value = map[string]int32{
+	"TENSE_UNKNOWN":     0,
+	"CONDITIONAL_TENSE": 1,
+	"FUTURE":            2,
+	"PAST":              3,
+	"PRESENT":           4,
+	"IMPERFECT":         5,
+	"PLUPERFECT":        6,
+}
+
+func (x PartOfSpeech_Tense) String() string {
+	return proto.EnumName(PartOfSpeech_Tense_name, int32(x))
+}
+func (PartOfSpeech_Tense) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 10} }
+
+// The relationship between the action that a verb expresses and the
+// participants identified by its arguments.
+type PartOfSpeech_Voice int32
+
+const (
+	// Voice is not applicable in the analyzed language or is not predicted.
+	PartOfSpeech_VOICE_UNKNOWN PartOfSpeech_Voice = 0
+	// Active
+	PartOfSpeech_ACTIVE PartOfSpeech_Voice = 1
+	// Causative
+	PartOfSpeech_CAUSATIVE PartOfSpeech_Voice = 2
+	// Passive
+	PartOfSpeech_PASSIVE PartOfSpeech_Voice = 3
+)
+
+var PartOfSpeech_Voice_name = map[int32]string{
+	0: "VOICE_UNKNOWN",
+	1: "ACTIVE",
+	2: "CAUSATIVE",
+	3: "PASSIVE",
+}
+var PartOfSpeech_Voice_value = map[string]int32{
+	"VOICE_UNKNOWN": 0,
+	"ACTIVE":        1,
+	"CAUSATIVE":     2,
+	"PASSIVE":       3,
+}
+
+func (x PartOfSpeech_Voice) String() string {
+	return proto.EnumName(PartOfSpeech_Voice_name, int32(x))
+}
+func (PartOfSpeech_Voice) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 11} }
+
+// The parse label enum for the token.
+type DependencyEdge_Label int32
+
+const (
+	// Unknown
+	DependencyEdge_UNKNOWN DependencyEdge_Label = 0
+	// Abbreviation modifier
+	DependencyEdge_ABBREV DependencyEdge_Label = 1
+	// Adjectival complement
+	DependencyEdge_ACOMP DependencyEdge_Label = 2
+	// Adverbial clause modifier
+	DependencyEdge_ADVCL DependencyEdge_Label = 3
+	// Adverbial modifier
+	DependencyEdge_ADVMOD DependencyEdge_Label = 4
+	// Adjectival modifier of an NP
+	DependencyEdge_AMOD DependencyEdge_Label = 5
+	// Appositional modifier of an NP
+	DependencyEdge_APPOS DependencyEdge_Label = 6
+	// Attribute dependent of a copular verb
+	DependencyEdge_ATTR DependencyEdge_Label = 7
+	// Auxiliary (non-main) verb
+	DependencyEdge_AUX DependencyEdge_Label = 8
+	// Passive auxiliary
+	DependencyEdge_AUXPASS DependencyEdge_Label = 9
+	// Coordinating conjunction
+	DependencyEdge_CC DependencyEdge_Label = 10
+	// Clausal complement of a verb or adjective
+	DependencyEdge_CCOMP DependencyEdge_Label = 11
+	// Conjunct
+	DependencyEdge_CONJ DependencyEdge_Label = 12
+	// Clausal subject
+	DependencyEdge_CSUBJ DependencyEdge_Label = 13
+	// Clausal passive subject
+	DependencyEdge_CSUBJPASS DependencyEdge_Label = 14
+	// Dependency (unable to determine)
+	DependencyEdge_DEP DependencyEdge_Label = 15
+	// Determiner
+	DependencyEdge_DET DependencyEdge_Label = 16
+	// Discourse
+	DependencyEdge_DISCOURSE DependencyEdge_Label = 17
+	// Direct object
+	DependencyEdge_DOBJ DependencyEdge_Label = 18
+	// Expletive
+	DependencyEdge_EXPL DependencyEdge_Label = 19
+	// Goes with (part of a word in a text not well edited)
+	DependencyEdge_GOESWITH DependencyEdge_Label = 20
+	// Indirect object
+	DependencyEdge_IOBJ DependencyEdge_Label = 21
+	// Marker (word introducing a subordinate clause)
+	DependencyEdge_MARK DependencyEdge_Label = 22
+	// Multi-word expression
+	DependencyEdge_MWE DependencyEdge_Label = 23
+	// Multi-word verbal expression
+	DependencyEdge_MWV DependencyEdge_Label = 24
+	// Negation modifier
+	DependencyEdge_NEG DependencyEdge_Label = 25
+	// Noun compound modifier
+	DependencyEdge_NN DependencyEdge_Label = 26
+	// Noun phrase used as an adverbial modifier
+	DependencyEdge_NPADVMOD DependencyEdge_Label = 27
+	// Nominal subject
+	DependencyEdge_NSUBJ DependencyEdge_Label = 28
+	// Passive nominal subject
+	DependencyEdge_NSUBJPASS DependencyEdge_Label = 29
+	// Numeric modifier of a noun
+	DependencyEdge_NUM DependencyEdge_Label = 30
+	// Element of compound number
+	DependencyEdge_NUMBER DependencyEdge_Label = 31
+	// Punctuation mark
+	DependencyEdge_P DependencyEdge_Label = 32
+	// Parataxis relation
+	DependencyEdge_PARATAXIS DependencyEdge_Label = 33
+	// Participial modifier
+	DependencyEdge_PARTMOD DependencyEdge_Label = 34
+	// The complement of a preposition is a clause
+	DependencyEdge_PCOMP DependencyEdge_Label = 35
+	// Object of a preposition
+	DependencyEdge_POBJ DependencyEdge_Label = 36
+	// Possession modifier
+	DependencyEdge_POSS DependencyEdge_Label = 37
+	// Postverbal negative particle
+	DependencyEdge_POSTNEG DependencyEdge_Label = 38
+	// Predicate complement
+	DependencyEdge_PRECOMP DependencyEdge_Label = 39
+	// Preconjunt
+	DependencyEdge_PRECONJ DependencyEdge_Label = 40
+	// Predeterminer
+	DependencyEdge_PREDET DependencyEdge_Label = 41
+	// Prefix
+	DependencyEdge_PREF DependencyEdge_Label = 42
+	// Prepositional modifier
+	DependencyEdge_PREP DependencyEdge_Label = 43
+	// The relationship between a verb and verbal morpheme
+	DependencyEdge_PRONL DependencyEdge_Label = 44
+	// Particle
+	DependencyEdge_PRT DependencyEdge_Label = 45
+	// Associative or possessive marker
+	DependencyEdge_PS DependencyEdge_Label = 46
+	// Quantifier phrase modifier
+	DependencyEdge_QUANTMOD DependencyEdge_Label = 47
+	// Relative clause modifier
+	DependencyEdge_RCMOD DependencyEdge_Label = 48
+	// Complementizer in relative clause
+	DependencyEdge_RCMODREL DependencyEdge_Label = 49
+	// Ellipsis without a preceding predicate
+	DependencyEdge_RDROP DependencyEdge_Label = 50
+	// Referent
+	DependencyEdge_REF DependencyEdge_Label = 51
+	// Remnant
+	DependencyEdge_REMNANT DependencyEdge_Label = 52
+	// Reparandum
+	DependencyEdge_REPARANDUM DependencyEdge_Label = 53
+	// Root
+	DependencyEdge_ROOT DependencyEdge_Label = 54
+	// Suffix specifying a unit of number
+	DependencyEdge_SNUM DependencyEdge_Label = 55
+	// Suffix
+	DependencyEdge_SUFF DependencyEdge_Label = 56
+	// Temporal modifier
+	DependencyEdge_TMOD DependencyEdge_Label = 57
+	// Topic marker
+	DependencyEdge_TOPIC DependencyEdge_Label = 58
+	// Clause headed by an infinite form of the verb that modifies a noun
+	DependencyEdge_VMOD DependencyEdge_Label = 59
+	// Vocative
+	DependencyEdge_VOCATIVE DependencyEdge_Label = 60
+	// Open clausal complement
+	DependencyEdge_XCOMP DependencyEdge_Label = 61
+	// Name suffix
+	DependencyEdge_SUFFIX DependencyEdge_Label = 62
+	// Name title
+	DependencyEdge_TITLE DependencyEdge_Label = 63
+	// Adverbial phrase modifier
+	DependencyEdge_ADVPHMOD DependencyEdge_Label = 64
+	// Causative auxiliary
+	DependencyEdge_AUXCAUS DependencyEdge_Label = 65
+	// Helper auxiliary
+	DependencyEdge_AUXVV DependencyEdge_Label = 66
+	// Rentaishi (Prenominal modifier)
+	DependencyEdge_DTMOD DependencyEdge_Label = 67
+	// Foreign words
+	DependencyEdge_FOREIGN DependencyEdge_Label = 68
+	// Keyword
+	DependencyEdge_KW DependencyEdge_Label = 69
+	// List for chains of comparable items
+	DependencyEdge_LIST DependencyEdge_Label = 70
+	// Nominalized clause
+	DependencyEdge_NOMC DependencyEdge_Label = 71
+	// Nominalized clausal subject
+	DependencyEdge_NOMCSUBJ DependencyEdge_Label = 72
+	// Nominalized clausal passive
+	DependencyEdge_NOMCSUBJPASS DependencyEdge_Label = 73
+	// Compound of numeric modifier
+	DependencyEdge_NUMC DependencyEdge_Label = 74
+	// Copula
+	DependencyEdge_COP DependencyEdge_Label = 75
+	// Dislocated relation (for fronted/topicalized elements)
+	DependencyEdge_DISLOCATED DependencyEdge_Label = 76
+)
+
+var DependencyEdge_Label_name = map[int32]string{
+	0:  "UNKNOWN",
+	1:  "ABBREV",
+	2:  "ACOMP",
+	3:  "ADVCL",
+	4:  "ADVMOD",
+	5:  "AMOD",
+	6:  "APPOS",
+	7:  "ATTR",
+	8:  "AUX",
+	9:  "AUXPASS",
+	10: "CC",
+	11: "CCOMP",
+	12: "CONJ",
+	13: "CSUBJ",
+	14: "CSUBJPASS",
+	15: "DEP",
+	16: "DET",
+	17: "DISCOURSE",
+	18: "DOBJ",
+	19: "EXPL",
+	20: "GOESWITH",
+	21: "IOBJ",
+	22: "MARK",
+	23: "MWE",
+	24: "MWV",
+	25: "NEG",
+	26: "NN",
+	27: "NPADVMOD",
+	28: "NSUBJ",
+	29: "NSUBJPASS",
+	30: "NUM",
+	31: "NUMBER",
+	32: "P",
+	33: "PARATAXIS",
+	34: "PARTMOD",
+	35: "PCOMP",
+	36: "POBJ",
+	37: "POSS",
+	38: "POSTNEG",
+	39: "PRECOMP",
+	40: "PRECONJ",
+	41: "PREDET",
+	42: "PREF",
+	43: "PREP",
+	44: "PRONL",
+	45: "PRT",
+	46: "PS",
+	47: "QUANTMOD",
+	48: "RCMOD",
+	49: "RCMODREL",
+	50: "RDROP",
+	51: "REF",
+	52: "REMNANT",
+	53: "REPARANDUM",
+	54: "ROOT",
+	55: "SNUM",
+	56: "SUFF",
+	57: "TMOD",
+	58: "TOPIC",
+	59: "VMOD",
+	60: "VOCATIVE",
+	61: "XCOMP",
+	62: "SUFFIX",
+	63: "TITLE",
+	64: "ADVPHMOD",
+	65: "AUXCAUS",
+	66: "AUXVV",
+	67: "DTMOD",
+	68: "FOREIGN",
+	69: "KW",
+	70: "LIST",
+	71: "NOMC",
+	72: "NOMCSUBJ",
+	73: "NOMCSUBJPASS",
+	74: "NUMC",
+	75: "COP",
+	76: "DISLOCATED",
+}
+var DependencyEdge_Label_value = map[string]int32{
+	"UNKNOWN":      0,
+	"ABBREV":       1,
+	"ACOMP":        2,
+	"ADVCL":        3,
+	"ADVMOD":       4,
+	"AMOD":         5,
+	"APPOS":        6,
+	"ATTR":         7,
+	"AUX":          8,
+	"AUXPASS":      9,
+	"CC":           10,
+	"CCOMP":        11,
+	"CONJ":         12,
+	"CSUBJ":        13,
+	"CSUBJPASS":    14,
+	"DEP":          15,
+	"DET":          16,
+	"DISCOURSE":    17,
+	"DOBJ":         18,
+	"EXPL":         19,
+	"GOESWITH":     20,
+	"IOBJ":         21,
+	"MARK":         22,
+	"MWE":          23,
+	"MWV":          24,
+	"NEG":          25,
+	"NN":           26,
+	"NPADVMOD":     27,
+	"NSUBJ":        28,
+	"NSUBJPASS":    29,
+	"NUM":          30,
+	"NUMBER":       31,
+	"P":            32,
+	"PARATAXIS":    33,
+	"PARTMOD":      34,
+	"PCOMP":        35,
+	"POBJ":         36,
+	"POSS":         37,
+	"POSTNEG":      38,
+	"PRECOMP":      39,
+	"PRECONJ":      40,
+	"PREDET":       41,
+	"PREF":         42,
+	"PREP":         43,
+	"PRONL":        44,
+	"PRT":          45,
+	"PS":           46,
+	"QUANTMOD":     47,
+	"RCMOD":        48,
+	"RCMODREL":     49,
+	"RDROP":        50,
+	"REF":          51,
+	"REMNANT":      52,
+	"REPARANDUM":   53,
+	"ROOT":         54,
+	"SNUM":         55,
+	"SUFF":         56,
+	"TMOD":         57,
+	"TOPIC":        58,
+	"VMOD":         59,
+	"VOCATIVE":     60,
+	"XCOMP":        61,
+	"SUFFIX":       62,
+	"TITLE":        63,
+	"ADVPHMOD":     64,
+	"AUXCAUS":      65,
+	"AUXVV":        66,
+	"DTMOD":        67,
+	"FOREIGN":      68,
+	"KW":           69,
+	"LIST":         70,
+	"NOMC":         71,
+	"NOMCSUBJ":     72,
+	"NOMCSUBJPASS": 73,
+	"NUMC":         74,
+	"COP":          75,
+	"DISLOCATED":   76,
+}
+
+func (x DependencyEdge_Label) String() string {
+	return proto.EnumName(DependencyEdge_Label_name, int32(x))
+}
+func (DependencyEdge_Label) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{6, 0} }
+
+// The supported types of mentions.
+type EntityMention_Type int32
+
+const (
+	// Unknown
+	EntityMention_TYPE_UNKNOWN EntityMention_Type = 0
+	// Proper name
+	EntityMention_PROPER EntityMention_Type = 1
+	// Common noun (or noun compound)
+	EntityMention_COMMON EntityMention_Type = 2
+)
+
+var EntityMention_Type_name = map[int32]string{
+	0: "TYPE_UNKNOWN",
+	1: "PROPER",
+	2: "COMMON",
+}
+var EntityMention_Type_value = map[string]int32{
+	"TYPE_UNKNOWN": 0,
+	"PROPER":       1,
+	"COMMON":       2,
+}
+
+func (x EntityMention_Type) String() string {
+	return proto.EnumName(EntityMention_Type_name, int32(x))
+}
+func (EntityMention_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} }
+
+// ################################################################ #
+//
+// Represents the input to API methods.
+type Document struct {
+	// Required. If the type is not set or is `TYPE_UNSPECIFIED`,
+	// returns an `INVALID_ARGUMENT` error.
+	Type Document_Type `protobuf:"varint,1,opt,name=type,enum=google.cloud.language.v1beta2.Document_Type" json:"type,omitempty"`
+	// The source of the document: a string containing the content or a
+	// Google Cloud Storage URI.
+	//
+	// Types that are valid to be assigned to Source:
+	//	*Document_Content
+	//	*Document_GcsContentUri
+	Source isDocument_Source `protobuf_oneof:"source"`
+	// The language of the document (if not specified, the language is
+	// automatically detected). Both ISO and BCP-47 language codes are
+	// accepted.<br>
+	// **Current Language Restrictions:**
+	//
+	//  * Only English, Spanish, and Japanese textual content are supported.
+	// If the language (either specified by the caller or automatically detected)
+	// is not supported by the called API method, an `INVALID_ARGUMENT` error
+	// is returned.
+	Language string `protobuf:"bytes,4,opt,name=language" json:"language,omitempty"`
+}
+
+func (m *Document) Reset()                    { *m = Document{} }
+func (m *Document) String() string            { return proto.CompactTextString(m) }
+func (*Document) ProtoMessage()               {}
+func (*Document) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+type isDocument_Source interface {
+	isDocument_Source()
+}
+
+type Document_Content struct {
+	Content string `protobuf:"bytes,2,opt,name=content,oneof"`
+}
+type Document_GcsContentUri struct {
+	GcsContentUri string `protobuf:"bytes,3,opt,name=gcs_content_uri,json=gcsContentUri,oneof"`
+}
+
+func (*Document_Content) isDocument_Source()       {}
+func (*Document_GcsContentUri) isDocument_Source() {}
+
+func (m *Document) GetSource() isDocument_Source {
+	if m != nil {
+		return m.Source
+	}
+	return nil
+}
+
+func (m *Document) GetType() Document_Type {
+	if m != nil {
+		return m.Type
+	}
+	return Document_TYPE_UNSPECIFIED
+}
+
+func (m *Document) GetContent() string {
+	if x, ok := m.GetSource().(*Document_Content); ok {
+		return x.Content
+	}
+	return ""
+}
+
+func (m *Document) GetGcsContentUri() string {
+	if x, ok := m.GetSource().(*Document_GcsContentUri); ok {
+		return x.GcsContentUri
+	}
+	return ""
+}
+
+func (m *Document) GetLanguage() string {
+	if m != nil {
+		return m.Language
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*Document) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _Document_OneofMarshaler, _Document_OneofUnmarshaler, _Document_OneofSizer, []interface{}{
+		(*Document_Content)(nil),
+		(*Document_GcsContentUri)(nil),
+	}
+}
+
+func _Document_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*Document)
+	// source
+	switch x := m.Source.(type) {
+	case *Document_Content:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.Content)
+	case *Document_GcsContentUri:
+		b.EncodeVarint(3<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.GcsContentUri)
+	case nil:
+	default:
+		return fmt.Errorf("Document.Source has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _Document_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*Document)
+	switch tag {
+	case 2: // source.content
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.Source = &Document_Content{x}
+		return true, err
+	case 3: // source.gcs_content_uri
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.Source = &Document_GcsContentUri{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _Document_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*Document)
+	// source
+	switch x := m.Source.(type) {
+	case *Document_Content:
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Content)))
+		n += len(x.Content)
+	case *Document_GcsContentUri:
+		n += proto.SizeVarint(3<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.GcsContentUri)))
+		n += len(x.GcsContentUri)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// Represents a sentence in the input document.
+type Sentence struct {
+	// The sentence text.
+	Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
+	// For calls to [AnalyzeSentiment][] or if
+	// [AnnotateTextRequest.Features.extract_document_sentiment][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_document_sentiment] is set to
+	// true, this field will contain the sentiment for the sentence.
+	Sentiment *Sentiment `protobuf:"bytes,2,opt,name=sentiment" json:"sentiment,omitempty"`
+}
+
+func (m *Sentence) Reset()                    { *m = Sentence{} }
+func (m *Sentence) String() string            { return proto.CompactTextString(m) }
+func (*Sentence) ProtoMessage()               {}
+func (*Sentence) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *Sentence) GetText() *TextSpan {
+	if m != nil {
+		return m.Text
+	}
+	return nil
+}
+
+func (m *Sentence) GetSentiment() *Sentiment {
+	if m != nil {
+		return m.Sentiment
+	}
+	return nil
+}
+
+// Represents a phrase in the text that is a known entity, such as
+// a person, an organization, or location. The API associates information, such
+// as salience and mentions, with entities.
+type Entity struct {
+	// The representative name for the entity.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// The entity type.
+	Type Entity_Type `protobuf:"varint,2,opt,name=type,enum=google.cloud.language.v1beta2.Entity_Type" json:"type,omitempty"`
+	// Metadata associated with the entity.
+	//
+	// Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if
+	// available. The associated keys are "wikipedia_url" and "mid", respectively.
+	Metadata map[string]string `protobuf:"bytes,3,rep,name=metadata" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// The salience score associated with the entity in the [0, 1.0] range.
+	//
+	// The salience score for an entity provides information about the
+	// importance or centrality of that entity to the entire document text.
+	// Scores closer to 0 are less salient, while scores closer to 1.0 are highly
+	// salient.
+	Salience float32 `protobuf:"fixed32,4,opt,name=salience" json:"salience,omitempty"`
+	// The mentions of this entity in the input document. The API currently
+	// supports proper noun mentions.
+	Mentions []*EntityMention `protobuf:"bytes,5,rep,name=mentions" json:"mentions,omitempty"`
+	// For calls to [AnalyzeEntitySentiment][] or if
+	// [AnnotateTextRequest.Features.extract_entity_sentiment][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_entity_sentiment] is set to
+	// true, this field will contain the aggregate sentiment expressed for this
+	// entity in the provided document.
+	Sentiment *Sentiment `protobuf:"bytes,6,opt,name=sentiment" json:"sentiment,omitempty"`
+}
+
+func (m *Entity) Reset()                    { *m = Entity{} }
+func (m *Entity) String() string            { return proto.CompactTextString(m) }
+func (*Entity) ProtoMessage()               {}
+func (*Entity) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *Entity) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Entity) GetType() Entity_Type {
+	if m != nil {
+		return m.Type
+	}
+	return Entity_UNKNOWN
+}
+
+func (m *Entity) GetMetadata() map[string]string {
+	if m != nil {
+		return m.Metadata
+	}
+	return nil
+}
+
+func (m *Entity) GetSalience() float32 {
+	if m != nil {
+		return m.Salience
+	}
+	return 0
+}
+
+func (m *Entity) GetMentions() []*EntityMention {
+	if m != nil {
+		return m.Mentions
+	}
+	return nil
+}
+
+func (m *Entity) GetSentiment() *Sentiment {
+	if m != nil {
+		return m.Sentiment
+	}
+	return nil
+}
+
+// Represents the smallest syntactic building block of the text.
+type Token struct {
+	// The token text.
+	Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
+	// Parts of speech tag for this token.
+	PartOfSpeech *PartOfSpeech `protobuf:"bytes,2,opt,name=part_of_speech,json=partOfSpeech" json:"part_of_speech,omitempty"`
+	// Dependency tree parse for this token.
+	DependencyEdge *DependencyEdge `protobuf:"bytes,3,opt,name=dependency_edge,json=dependencyEdge" json:"dependency_edge,omitempty"`
+	// [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.
+	Lemma string `protobuf:"bytes,4,opt,name=lemma" json:"lemma,omitempty"`
+}
+
+func (m *Token) Reset()                    { *m = Token{} }
+func (m *Token) String() string            { return proto.CompactTextString(m) }
+func (*Token) ProtoMessage()               {}
+func (*Token) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *Token) GetText() *TextSpan {
+	if m != nil {
+		return m.Text
+	}
+	return nil
+}
+
+func (m *Token) GetPartOfSpeech() *PartOfSpeech {
+	if m != nil {
+		return m.PartOfSpeech
+	}
+	return nil
+}
+
+func (m *Token) GetDependencyEdge() *DependencyEdge {
+	if m != nil {
+		return m.DependencyEdge
+	}
+	return nil
+}
+
+func (m *Token) GetLemma() string {
+	if m != nil {
+		return m.Lemma
+	}
+	return ""
+}
+
+// Represents the feeling associated with the entire text or entities in
+// the text.
+type Sentiment struct {
+	// A non-negative number in the [0, +inf) range, which represents
+	// the absolute magnitude of sentiment regardless of score (positive or
+	// negative).
+	Magnitude float32 `protobuf:"fixed32,2,opt,name=magnitude" json:"magnitude,omitempty"`
+	// Sentiment score between -1.0 (negative sentiment) and 1.0
+	// (positive sentiment).
+	Score float32 `protobuf:"fixed32,3,opt,name=score" json:"score,omitempty"`
+}
+
+func (m *Sentiment) Reset()                    { *m = Sentiment{} }
+func (m *Sentiment) String() string            { return proto.CompactTextString(m) }
+func (*Sentiment) ProtoMessage()               {}
+func (*Sentiment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+func (m *Sentiment) GetMagnitude() float32 {
+	if m != nil {
+		return m.Magnitude
+	}
+	return 0
+}
+
+func (m *Sentiment) GetScore() float32 {
+	if m != nil {
+		return m.Score
+	}
+	return 0
+}
+
+// Represents part of speech information for a token.
+type PartOfSpeech struct {
+	// The part of speech tag.
+	Tag PartOfSpeech_Tag `protobuf:"varint,1,opt,name=tag,enum=google.cloud.language.v1beta2.PartOfSpeech_Tag" json:"tag,omitempty"`
+	// The grammatical aspect.
+	Aspect PartOfSpeech_Aspect `protobuf:"varint,2,opt,name=aspect,enum=google.cloud.language.v1beta2.PartOfSpeech_Aspect" json:"aspect,omitempty"`
+	// The grammatical case.
+	Case PartOfSpeech_Case `protobuf:"varint,3,opt,name=case,enum=google.cloud.language.v1beta2.PartOfSpeech_Case" json:"case,omitempty"`
+	// The grammatical form.
+	Form PartOfSpeech_Form `protobuf:"varint,4,opt,name=form,enum=google.cloud.language.v1beta2.PartOfSpeech_Form" json:"form,omitempty"`
+	// The grammatical gender.
+	Gender PartOfSpeech_Gender `protobuf:"varint,5,opt,name=gender,enum=google.cloud.language.v1beta2.PartOfSpeech_Gender" json:"gender,omitempty"`
+	// The grammatical mood.
+	Mood PartOfSpeech_Mood `protobuf:"varint,6,opt,name=mood,enum=google.cloud.language.v1beta2.PartOfSpeech_Mood" json:"mood,omitempty"`
+	// The grammatical number.
+	Number PartOfSpeech_Number `protobuf:"varint,7,opt,name=number,enum=google.cloud.language.v1beta2.PartOfSpeech_Number" json:"number,omitempty"`
+	// The grammatical person.
+	Person PartOfSpeech_Person `protobuf:"varint,8,opt,name=person,enum=google.cloud.language.v1beta2.PartOfSpeech_Person" json:"person,omitempty"`
+	// The grammatical properness.
+	Proper PartOfSpeech_Proper `protobuf:"varint,9,opt,name=proper,enum=google.cloud.language.v1beta2.PartOfSpeech_Proper" json:"proper,omitempty"`
+	// The grammatical reciprocity.
+	Reciprocity PartOfSpeech_Reciprocity `protobuf:"varint,10,opt,name=reciprocity,enum=google.cloud.language.v1beta2.PartOfSpeech_Reciprocity" json:"reciprocity,omitempty"`
+	// The grammatical tense.
+	Tense PartOfSpeech_Tense `protobuf:"varint,11,opt,name=tense,enum=google.cloud.language.v1beta2.PartOfSpeech_Tense" json:"tense,omitempty"`
+	// The grammatical voice.
+	Voice PartOfSpeech_Voice `protobuf:"varint,12,opt,name=voice,enum=google.cloud.language.v1beta2.PartOfSpeech_Voice" json:"voice,omitempty"`
+}
+
+func (m *PartOfSpeech) Reset()                    { *m = PartOfSpeech{} }
+func (m *PartOfSpeech) String() string            { return proto.CompactTextString(m) }
+func (*PartOfSpeech) ProtoMessage()               {}
+func (*PartOfSpeech) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+func (m *PartOfSpeech) GetTag() PartOfSpeech_Tag {
+	if m != nil {
+		return m.Tag
+	}
+	return PartOfSpeech_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetAspect() PartOfSpeech_Aspect {
+	if m != nil {
+		return m.Aspect
+	}
+	return PartOfSpeech_ASPECT_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetCase() PartOfSpeech_Case {
+	if m != nil {
+		return m.Case
+	}
+	return PartOfSpeech_CASE_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetForm() PartOfSpeech_Form {
+	if m != nil {
+		return m.Form
+	}
+	return PartOfSpeech_FORM_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetGender() PartOfSpeech_Gender {
+	if m != nil {
+		return m.Gender
+	}
+	return PartOfSpeech_GENDER_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetMood() PartOfSpeech_Mood {
+	if m != nil {
+		return m.Mood
+	}
+	return PartOfSpeech_MOOD_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetNumber() PartOfSpeech_Number {
+	if m != nil {
+		return m.Number
+	}
+	return PartOfSpeech_NUMBER_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetPerson() PartOfSpeech_Person {
+	if m != nil {
+		return m.Person
+	}
+	return PartOfSpeech_PERSON_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetProper() PartOfSpeech_Proper {
+	if m != nil {
+		return m.Proper
+	}
+	return PartOfSpeech_PROPER_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetReciprocity() PartOfSpeech_Reciprocity {
+	if m != nil {
+		return m.Reciprocity
+	}
+	return PartOfSpeech_RECIPROCITY_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetTense() PartOfSpeech_Tense {
+	if m != nil {
+		return m.Tense
+	}
+	return PartOfSpeech_TENSE_UNKNOWN
+}
+
+func (m *PartOfSpeech) GetVoice() PartOfSpeech_Voice {
+	if m != nil {
+		return m.Voice
+	}
+	return PartOfSpeech_VOICE_UNKNOWN
+}
+
+// Represents dependency parse tree information for a token.
+type DependencyEdge struct {
+	// Represents the head of this token in the dependency tree.
+	// This is the index of the token which has an arc going to this token.
+	// The index is the position of the token in the array of tokens returned
+	// by the API method. If this token is a root token, then the
+	// `head_token_index` is its own index.
+	HeadTokenIndex int32 `protobuf:"varint,1,opt,name=head_token_index,json=headTokenIndex" json:"head_token_index,omitempty"`
+	// The parse label for the token.
+	Label DependencyEdge_Label `protobuf:"varint,2,opt,name=label,enum=google.cloud.language.v1beta2.DependencyEdge_Label" json:"label,omitempty"`
+}
+
+func (m *DependencyEdge) Reset()                    { *m = DependencyEdge{} }
+func (m *DependencyEdge) String() string            { return proto.CompactTextString(m) }
+func (*DependencyEdge) ProtoMessage()               {}
+func (*DependencyEdge) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+
+func (m *DependencyEdge) GetHeadTokenIndex() int32 {
+	if m != nil {
+		return m.HeadTokenIndex
+	}
+	return 0
+}
+
+func (m *DependencyEdge) GetLabel() DependencyEdge_Label {
+	if m != nil {
+		return m.Label
+	}
+	return DependencyEdge_UNKNOWN
+}
+
+// Represents a mention for an entity in the text. Currently, proper noun
+// mentions are supported.
+type EntityMention struct {
+	// The mention text.
+	Text *TextSpan `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
+	// The type of the entity mention.
+	Type EntityMention_Type `protobuf:"varint,2,opt,name=type,enum=google.cloud.language.v1beta2.EntityMention_Type" json:"type,omitempty"`
+	// For calls to [AnalyzeEntitySentiment][] or if
+	// [AnnotateTextRequest.Features.extract_entity_sentiment][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_entity_sentiment] is set to
+	// true, this field will contain the sentiment expressed for this mention of
+	// the entity in the provided document.
+	Sentiment *Sentiment `protobuf:"bytes,3,opt,name=sentiment" json:"sentiment,omitempty"`
+}
+
+func (m *EntityMention) Reset()                    { *m = EntityMention{} }
+func (m *EntityMention) String() string            { return proto.CompactTextString(m) }
+func (*EntityMention) ProtoMessage()               {}
+func (*EntityMention) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+
+func (m *EntityMention) GetText() *TextSpan {
+	if m != nil {
+		return m.Text
+	}
+	return nil
+}
+
+func (m *EntityMention) GetType() EntityMention_Type {
+	if m != nil {
+		return m.Type
+	}
+	return EntityMention_TYPE_UNKNOWN
+}
+
+func (m *EntityMention) GetSentiment() *Sentiment {
+	if m != nil {
+		return m.Sentiment
+	}
+	return nil
+}
+
+// Represents an output piece of text.
+type TextSpan struct {
+	// The content of the output text.
+	Content string `protobuf:"bytes,1,opt,name=content" json:"content,omitempty"`
+	// The API calculates the beginning offset of the content in the original
+	// document according to the [EncodingType][google.cloud.language.v1beta2.EncodingType] specified in the API request.
+	BeginOffset int32 `protobuf:"varint,2,opt,name=begin_offset,json=beginOffset" json:"begin_offset,omitempty"`
+}
+
+func (m *TextSpan) Reset()                    { *m = TextSpan{} }
+func (m *TextSpan) String() string            { return proto.CompactTextString(m) }
+func (*TextSpan) ProtoMessage()               {}
+func (*TextSpan) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+
+func (m *TextSpan) GetContent() string {
+	if m != nil {
+		return m.Content
+	}
+	return ""
+}
+
+func (m *TextSpan) GetBeginOffset() int32 {
+	if m != nil {
+		return m.BeginOffset
+	}
+	return 0
+}
+
+// The sentiment analysis request message.
+type AnalyzeSentimentRequest struct {
+	// Input document. Currently, `analyzeSentiment` only supports English text
+	// ([Document.language][google.cloud.language.v1beta2.Document.language]="EN").
+	Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"`
+	// The encoding type used by the API to calculate sentence offsets for the
+	// sentence sentiment.
+	EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta2.EncodingType" json:"encoding_type,omitempty"`
+}
+
+func (m *AnalyzeSentimentRequest) Reset()                    { *m = AnalyzeSentimentRequest{} }
+func (m *AnalyzeSentimentRequest) String() string            { return proto.CompactTextString(m) }
+func (*AnalyzeSentimentRequest) ProtoMessage()               {}
+func (*AnalyzeSentimentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+
+func (m *AnalyzeSentimentRequest) GetDocument() *Document {
+	if m != nil {
+		return m.Document
+	}
+	return nil
+}
+
+func (m *AnalyzeSentimentRequest) GetEncodingType() EncodingType {
+	if m != nil {
+		return m.EncodingType
+	}
+	return EncodingType_NONE
+}
+
+// The sentiment analysis response message.
+type AnalyzeSentimentResponse struct {
+	// The overall sentiment of the input document.
+	DocumentSentiment *Sentiment `protobuf:"bytes,1,opt,name=document_sentiment,json=documentSentiment" json:"document_sentiment,omitempty"`
+	// The language of the text, which will be the same as the language specified
+	// in the request or, if not specified, the automatically-detected language.
+	Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"`
+	// The sentiment for all the sentences in the document.
+	Sentences []*Sentence `protobuf:"bytes,3,rep,name=sentences" json:"sentences,omitempty"`
+}
+
+func (m *AnalyzeSentimentResponse) Reset()                    { *m = AnalyzeSentimentResponse{} }
+func (m *AnalyzeSentimentResponse) String() string            { return proto.CompactTextString(m) }
+func (*AnalyzeSentimentResponse) ProtoMessage()               {}
+func (*AnalyzeSentimentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+
+func (m *AnalyzeSentimentResponse) GetDocumentSentiment() *Sentiment {
+	if m != nil {
+		return m.DocumentSentiment
+	}
+	return nil
+}
+
+func (m *AnalyzeSentimentResponse) GetLanguage() string {
+	if m != nil {
+		return m.Language
+	}
+	return ""
+}
+
+func (m *AnalyzeSentimentResponse) GetSentences() []*Sentence {
+	if m != nil {
+		return m.Sentences
+	}
+	return nil
+}
+
+// The entity-level sentiment analysis request message.
+type AnalyzeEntitySentimentRequest struct {
+	// Input document.
+	Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"`
+	// The encoding type used by the API to calculate offsets.
+	EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta2.EncodingType" json:"encoding_type,omitempty"`
+}
+
+func (m *AnalyzeEntitySentimentRequest) Reset()                    { *m = AnalyzeEntitySentimentRequest{} }
+func (m *AnalyzeEntitySentimentRequest) String() string            { return proto.CompactTextString(m) }
+func (*AnalyzeEntitySentimentRequest) ProtoMessage()               {}
+func (*AnalyzeEntitySentimentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+
+func (m *AnalyzeEntitySentimentRequest) GetDocument() *Document {
+	if m != nil {
+		return m.Document
+	}
+	return nil
+}
+
+func (m *AnalyzeEntitySentimentRequest) GetEncodingType() EncodingType {
+	if m != nil {
+		return m.EncodingType
+	}
+	return EncodingType_NONE
+}
+
+// The entity-level sentiment analysis response message.
+type AnalyzeEntitySentimentResponse struct {
+	// The recognized entities in the input document with associated sentiments.
+	Entities []*Entity `protobuf:"bytes,1,rep,name=entities" json:"entities,omitempty"`
+	// The language of the text, which will be the same as the language specified
+	// in the request or, if not specified, the automatically-detected language.
+	// See [Document.language][google.cloud.language.v1beta2.Document.language] field for more details.
+	Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"`
+}
+
+func (m *AnalyzeEntitySentimentResponse) Reset()                    { *m = AnalyzeEntitySentimentResponse{} }
+func (m *AnalyzeEntitySentimentResponse) String() string            { return proto.CompactTextString(m) }
+func (*AnalyzeEntitySentimentResponse) ProtoMessage()               {}
+func (*AnalyzeEntitySentimentResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+
+func (m *AnalyzeEntitySentimentResponse) GetEntities() []*Entity {
+	if m != nil {
+		return m.Entities
+	}
+	return nil
+}
+
+func (m *AnalyzeEntitySentimentResponse) GetLanguage() string {
+	if m != nil {
+		return m.Language
+	}
+	return ""
+}
+
+// The entity analysis request message.
+type AnalyzeEntitiesRequest struct {
+	// Input document.
+	Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"`
+	// The encoding type used by the API to calculate offsets.
+	EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta2.EncodingType" json:"encoding_type,omitempty"`
+}
+
+func (m *AnalyzeEntitiesRequest) Reset()                    { *m = AnalyzeEntitiesRequest{} }
+func (m *AnalyzeEntitiesRequest) String() string            { return proto.CompactTextString(m) }
+func (*AnalyzeEntitiesRequest) ProtoMessage()               {}
+func (*AnalyzeEntitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+
+func (m *AnalyzeEntitiesRequest) GetDocument() *Document {
+	if m != nil {
+		return m.Document
+	}
+	return nil
+}
+
+func (m *AnalyzeEntitiesRequest) GetEncodingType() EncodingType {
+	if m != nil {
+		return m.EncodingType
+	}
+	return EncodingType_NONE
+}
+
+// The entity analysis response message.
+type AnalyzeEntitiesResponse struct {
+	// The recognized entities in the input document.
+	Entities []*Entity `protobuf:"bytes,1,rep,name=entities" json:"entities,omitempty"`
+	// The language of the text, which will be the same as the language specified
+	// in the request or, if not specified, the automatically-detected language.
+	// See [Document.language][google.cloud.language.v1beta2.Document.language] field for more details.
+	Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"`
+}
+
+func (m *AnalyzeEntitiesResponse) Reset()                    { *m = AnalyzeEntitiesResponse{} }
+func (m *AnalyzeEntitiesResponse) String() string            { return proto.CompactTextString(m) }
+func (*AnalyzeEntitiesResponse) ProtoMessage()               {}
+func (*AnalyzeEntitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+
+func (m *AnalyzeEntitiesResponse) GetEntities() []*Entity {
+	if m != nil {
+		return m.Entities
+	}
+	return nil
+}
+
+func (m *AnalyzeEntitiesResponse) GetLanguage() string {
+	if m != nil {
+		return m.Language
+	}
+	return ""
+}
+
+// The syntax analysis request message.
+type AnalyzeSyntaxRequest struct {
+	// Input document.
+	Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"`
+	// The encoding type used by the API to calculate offsets.
+	EncodingType EncodingType `protobuf:"varint,2,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta2.EncodingType" json:"encoding_type,omitempty"`
+}
+
+func (m *AnalyzeSyntaxRequest) Reset()                    { *m = AnalyzeSyntaxRequest{} }
+func (m *AnalyzeSyntaxRequest) String() string            { return proto.CompactTextString(m) }
+func (*AnalyzeSyntaxRequest) ProtoMessage()               {}
+func (*AnalyzeSyntaxRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+
+func (m *AnalyzeSyntaxRequest) GetDocument() *Document {
+	if m != nil {
+		return m.Document
+	}
+	return nil
+}
+
+func (m *AnalyzeSyntaxRequest) GetEncodingType() EncodingType {
+	if m != nil {
+		return m.EncodingType
+	}
+	return EncodingType_NONE
+}
+
+// The syntax analysis response message.
+type AnalyzeSyntaxResponse struct {
+	// Sentences in the input document.
+	Sentences []*Sentence `protobuf:"bytes,1,rep,name=sentences" json:"sentences,omitempty"`
+	// Tokens, along with their syntactic information, in the input document.
+	Tokens []*Token `protobuf:"bytes,2,rep,name=tokens" json:"tokens,omitempty"`
+	// The language of the text, which will be the same as the language specified
+	// in the request or, if not specified, the automatically-detected language.
+	// See [Document.language][google.cloud.language.v1beta2.Document.language] field for more details.
+	Language string `protobuf:"bytes,3,opt,name=language" json:"language,omitempty"`
+}
+
+func (m *AnalyzeSyntaxResponse) Reset()                    { *m = AnalyzeSyntaxResponse{} }
+func (m *AnalyzeSyntaxResponse) String() string            { return proto.CompactTextString(m) }
+func (*AnalyzeSyntaxResponse) ProtoMessage()               {}
+func (*AnalyzeSyntaxResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+
+func (m *AnalyzeSyntaxResponse) GetSentences() []*Sentence {
+	if m != nil {
+		return m.Sentences
+	}
+	return nil
+}
+
+func (m *AnalyzeSyntaxResponse) GetTokens() []*Token {
+	if m != nil {
+		return m.Tokens
+	}
+	return nil
+}
+
+func (m *AnalyzeSyntaxResponse) GetLanguage() string {
+	if m != nil {
+		return m.Language
+	}
+	return ""
+}
+
+// The request message for the text annotation API, which can perform multiple
+// analysis types (sentiment, entities, and syntax) in one call.
+type AnnotateTextRequest struct {
+	// Input document.
+	Document *Document `protobuf:"bytes,1,opt,name=document" json:"document,omitempty"`
+	// The enabled features.
+	Features *AnnotateTextRequest_Features `protobuf:"bytes,2,opt,name=features" json:"features,omitempty"`
+	// The encoding type used by the API to calculate offsets.
+	EncodingType EncodingType `protobuf:"varint,3,opt,name=encoding_type,json=encodingType,enum=google.cloud.language.v1beta2.EncodingType" json:"encoding_type,omitempty"`
+}
+
+func (m *AnnotateTextRequest) Reset()                    { *m = AnnotateTextRequest{} }
+func (m *AnnotateTextRequest) String() string            { return proto.CompactTextString(m) }
+func (*AnnotateTextRequest) ProtoMessage()               {}
+func (*AnnotateTextRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+
+func (m *AnnotateTextRequest) GetDocument() *Document {
+	if m != nil {
+		return m.Document
+	}
+	return nil
+}
+
+func (m *AnnotateTextRequest) GetFeatures() *AnnotateTextRequest_Features {
+	if m != nil {
+		return m.Features
+	}
+	return nil
+}
+
+func (m *AnnotateTextRequest) GetEncodingType() EncodingType {
+	if m != nil {
+		return m.EncodingType
+	}
+	return EncodingType_NONE
+}
+
+// All available features for sentiment, syntax, and semantic analysis.
+// Setting each one to true will enable that specific analysis for the input.
+type AnnotateTextRequest_Features struct {
+	// Extract syntax information.
+	ExtractSyntax bool `protobuf:"varint,1,opt,name=extract_syntax,json=extractSyntax" json:"extract_syntax,omitempty"`
+	// Extract entities.
+	ExtractEntities bool `protobuf:"varint,2,opt,name=extract_entities,json=extractEntities" json:"extract_entities,omitempty"`
+	// Extract document-level sentiment.
+	ExtractDocumentSentiment bool `protobuf:"varint,3,opt,name=extract_document_sentiment,json=extractDocumentSentiment" json:"extract_document_sentiment,omitempty"`
+	// Extract entities and their associated sentiment.
+	ExtractEntitySentiment bool `protobuf:"varint,4,opt,name=extract_entity_sentiment,json=extractEntitySentiment" json:"extract_entity_sentiment,omitempty"`
+}
+
+func (m *AnnotateTextRequest_Features) Reset()         { *m = AnnotateTextRequest_Features{} }
+func (m *AnnotateTextRequest_Features) String() string { return proto.CompactTextString(m) }
+func (*AnnotateTextRequest_Features) ProtoMessage()    {}
+func (*AnnotateTextRequest_Features) Descriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{17, 0}
+}
+
+func (m *AnnotateTextRequest_Features) GetExtractSyntax() bool {
+	if m != nil {
+		return m.ExtractSyntax
+	}
+	return false
+}
+
+func (m *AnnotateTextRequest_Features) GetExtractEntities() bool {
+	if m != nil {
+		return m.ExtractEntities
+	}
+	return false
+}
+
+func (m *AnnotateTextRequest_Features) GetExtractDocumentSentiment() bool {
+	if m != nil {
+		return m.ExtractDocumentSentiment
+	}
+	return false
+}
+
+func (m *AnnotateTextRequest_Features) GetExtractEntitySentiment() bool {
+	if m != nil {
+		return m.ExtractEntitySentiment
+	}
+	return false
+}
+
+// The text annotations response message.
+type AnnotateTextResponse struct {
+	// Sentences in the input document. Populated if the user enables
+	// [AnnotateTextRequest.Features.extract_syntax][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_syntax].
+	Sentences []*Sentence `protobuf:"bytes,1,rep,name=sentences" json:"sentences,omitempty"`
+	// Tokens, along with their syntactic information, in the input document.
+	// Populated if the user enables
+	// [AnnotateTextRequest.Features.extract_syntax][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_syntax].
+	Tokens []*Token `protobuf:"bytes,2,rep,name=tokens" json:"tokens,omitempty"`
+	// Entities, along with their semantic information, in the input document.
+	// Populated if the user enables
+	// [AnnotateTextRequest.Features.extract_entities][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_entities].
+	Entities []*Entity `protobuf:"bytes,3,rep,name=entities" json:"entities,omitempty"`
+	// The overall sentiment for the document. Populated if the user enables
+	// [AnnotateTextRequest.Features.extract_document_sentiment][google.cloud.language.v1beta2.AnnotateTextRequest.Features.extract_document_sentiment].
+	DocumentSentiment *Sentiment `protobuf:"bytes,4,opt,name=document_sentiment,json=documentSentiment" json:"document_sentiment,omitempty"`
+	// The language of the text, which will be the same as the language specified
+	// in the request or, if not specified, the automatically-detected language.
+	// See [Document.language][google.cloud.language.v1beta2.Document.language] field for more details.
+	Language string `protobuf:"bytes,5,opt,name=language" json:"language,omitempty"`
+}
+
+func (m *AnnotateTextResponse) Reset()                    { *m = AnnotateTextResponse{} }
+func (m *AnnotateTextResponse) String() string            { return proto.CompactTextString(m) }
+func (*AnnotateTextResponse) ProtoMessage()               {}
+func (*AnnotateTextResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+
+func (m *AnnotateTextResponse) GetSentences() []*Sentence {
+	if m != nil {
+		return m.Sentences
+	}
+	return nil
+}
+
+func (m *AnnotateTextResponse) GetTokens() []*Token {
+	if m != nil {
+		return m.Tokens
+	}
+	return nil
+}
+
+func (m *AnnotateTextResponse) GetEntities() []*Entity {
+	if m != nil {
+		return m.Entities
+	}
+	return nil
+}
+
+func (m *AnnotateTextResponse) GetDocumentSentiment() *Sentiment {
+	if m != nil {
+		return m.DocumentSentiment
+	}
+	return nil
+}
+
+func (m *AnnotateTextResponse) GetLanguage() string {
+	if m != nil {
+		return m.Language
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*Document)(nil), "google.cloud.language.v1beta2.Document")
+	proto.RegisterType((*Sentence)(nil), "google.cloud.language.v1beta2.Sentence")
+	proto.RegisterType((*Entity)(nil), "google.cloud.language.v1beta2.Entity")
+	proto.RegisterType((*Token)(nil), "google.cloud.language.v1beta2.Token")
+	proto.RegisterType((*Sentiment)(nil), "google.cloud.language.v1beta2.Sentiment")
+	proto.RegisterType((*PartOfSpeech)(nil), "google.cloud.language.v1beta2.PartOfSpeech")
+	proto.RegisterType((*DependencyEdge)(nil), "google.cloud.language.v1beta2.DependencyEdge")
+	proto.RegisterType((*EntityMention)(nil), "google.cloud.language.v1beta2.EntityMention")
+	proto.RegisterType((*TextSpan)(nil), "google.cloud.language.v1beta2.TextSpan")
+	proto.RegisterType((*AnalyzeSentimentRequest)(nil), "google.cloud.language.v1beta2.AnalyzeSentimentRequest")
+	proto.RegisterType((*AnalyzeSentimentResponse)(nil), "google.cloud.language.v1beta2.AnalyzeSentimentResponse")
+	proto.RegisterType((*AnalyzeEntitySentimentRequest)(nil), "google.cloud.language.v1beta2.AnalyzeEntitySentimentRequest")
+	proto.RegisterType((*AnalyzeEntitySentimentResponse)(nil), "google.cloud.language.v1beta2.AnalyzeEntitySentimentResponse")
+	proto.RegisterType((*AnalyzeEntitiesRequest)(nil), "google.cloud.language.v1beta2.AnalyzeEntitiesRequest")
+	proto.RegisterType((*AnalyzeEntitiesResponse)(nil), "google.cloud.language.v1beta2.AnalyzeEntitiesResponse")
+	proto.RegisterType((*AnalyzeSyntaxRequest)(nil), "google.cloud.language.v1beta2.AnalyzeSyntaxRequest")
+	proto.RegisterType((*AnalyzeSyntaxResponse)(nil), "google.cloud.language.v1beta2.AnalyzeSyntaxResponse")
+	proto.RegisterType((*AnnotateTextRequest)(nil), "google.cloud.language.v1beta2.AnnotateTextRequest")
+	proto.RegisterType((*AnnotateTextRequest_Features)(nil), "google.cloud.language.v1beta2.AnnotateTextRequest.Features")
+	proto.RegisterType((*AnnotateTextResponse)(nil), "google.cloud.language.v1beta2.AnnotateTextResponse")
+	proto.RegisterEnum("google.cloud.language.v1beta2.EncodingType", EncodingType_name, EncodingType_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.Document_Type", Document_Type_name, Document_Type_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.Entity_Type", Entity_Type_name, Entity_Type_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Tag", PartOfSpeech_Tag_name, PartOfSpeech_Tag_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Aspect", PartOfSpeech_Aspect_name, PartOfSpeech_Aspect_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Case", PartOfSpeech_Case_name, PartOfSpeech_Case_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Form", PartOfSpeech_Form_name, PartOfSpeech_Form_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Gender", PartOfSpeech_Gender_name, PartOfSpeech_Gender_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Mood", PartOfSpeech_Mood_name, PartOfSpeech_Mood_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Number", PartOfSpeech_Number_name, PartOfSpeech_Number_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Person", PartOfSpeech_Person_name, PartOfSpeech_Person_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Proper", PartOfSpeech_Proper_name, PartOfSpeech_Proper_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Reciprocity", PartOfSpeech_Reciprocity_name, PartOfSpeech_Reciprocity_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Tense", PartOfSpeech_Tense_name, PartOfSpeech_Tense_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.PartOfSpeech_Voice", PartOfSpeech_Voice_name, PartOfSpeech_Voice_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.DependencyEdge_Label", DependencyEdge_Label_name, DependencyEdge_Label_value)
+	proto.RegisterEnum("google.cloud.language.v1beta2.EntityMention_Type", EntityMention_Type_name, EntityMention_Type_value)
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for LanguageService service
+
+type LanguageServiceClient interface {
+	// Analyzes the sentiment of the provided text.
+	AnalyzeSentiment(ctx context.Context, in *AnalyzeSentimentRequest, opts ...grpc.CallOption) (*AnalyzeSentimentResponse, error)
+	// Finds named entities (currently proper names and common nouns) in the text
+	// along with entity types, salience, mentions for each entity, and
+	// other properties.
+	AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error)
+	// Finds entities, similar to [AnalyzeEntities][google.cloud.language.v1beta2.LanguageService.AnalyzeEntities] in the text and analyzes
+	// sentiment associated with each entity and its mentions.
+	AnalyzeEntitySentiment(ctx context.Context, in *AnalyzeEntitySentimentRequest, opts ...grpc.CallOption) (*AnalyzeEntitySentimentResponse, error)
+	// Analyzes the syntax of the text and provides sentence boundaries and
+	// tokenization along with part of speech tags, dependency trees, and other
+	// properties.
+	AnalyzeSyntax(ctx context.Context, in *AnalyzeSyntaxRequest, opts ...grpc.CallOption) (*AnalyzeSyntaxResponse, error)
+	// A convenience method that provides all syntax, sentiment, and entity
+	// features in one call.
+	AnnotateText(ctx context.Context, in *AnnotateTextRequest, opts ...grpc.CallOption) (*AnnotateTextResponse, error)
+}
+
+type languageServiceClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewLanguageServiceClient(cc *grpc.ClientConn) LanguageServiceClient {
+	return &languageServiceClient{cc}
+}
+
+func (c *languageServiceClient) AnalyzeSentiment(ctx context.Context, in *AnalyzeSentimentRequest, opts ...grpc.CallOption) (*AnalyzeSentimentResponse, error) {
+	out := new(AnalyzeSentimentResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/AnalyzeSentiment", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *languageServiceClient) AnalyzeEntities(ctx context.Context, in *AnalyzeEntitiesRequest, opts ...grpc.CallOption) (*AnalyzeEntitiesResponse, error) {
+	out := new(AnalyzeEntitiesResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/AnalyzeEntities", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *languageServiceClient) AnalyzeEntitySentiment(ctx context.Context, in *AnalyzeEntitySentimentRequest, opts ...grpc.CallOption) (*AnalyzeEntitySentimentResponse, error) {
+	out := new(AnalyzeEntitySentimentResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/AnalyzeEntitySentiment", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *languageServiceClient) AnalyzeSyntax(ctx context.Context, in *AnalyzeSyntaxRequest, opts ...grpc.CallOption) (*AnalyzeSyntaxResponse, error) {
+	out := new(AnalyzeSyntaxResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/AnalyzeSyntax", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *languageServiceClient) AnnotateText(ctx context.Context, in *AnnotateTextRequest, opts ...grpc.CallOption) (*AnnotateTextResponse, error) {
+	out := new(AnnotateTextResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.language.v1beta2.LanguageService/AnnotateText", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for LanguageService service
+
+type LanguageServiceServer interface {
+	// Analyzes the sentiment of the provided text.
+	AnalyzeSentiment(context.Context, *AnalyzeSentimentRequest) (*AnalyzeSentimentResponse, error)
+	// Finds named entities (currently proper names and common nouns) in the text
+	// along with entity types, salience, mentions for each entity, and
+	// other properties.
+	AnalyzeEntities(context.Context, *AnalyzeEntitiesRequest) (*AnalyzeEntitiesResponse, error)
+	// Finds entities, similar to [AnalyzeEntities][google.cloud.language.v1beta2.LanguageService.AnalyzeEntities] in the text and analyzes
+	// sentiment associated with each entity and its mentions.
+	AnalyzeEntitySentiment(context.Context, *AnalyzeEntitySentimentRequest) (*AnalyzeEntitySentimentResponse, error)
+	// Analyzes the syntax of the text and provides sentence boundaries and
+	// tokenization along with part of speech tags, dependency trees, and other
+	// properties.
+	AnalyzeSyntax(context.Context, *AnalyzeSyntaxRequest) (*AnalyzeSyntaxResponse, error)
+	// A convenience method that provides all syntax, sentiment, and entity
+	// features in one call.
+	AnnotateText(context.Context, *AnnotateTextRequest) (*AnnotateTextResponse, error)
+}
+
+func RegisterLanguageServiceServer(s *grpc.Server, srv LanguageServiceServer) {
+	s.RegisterService(&_LanguageService_serviceDesc, srv)
+}
+
+func _LanguageService_AnalyzeSentiment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(AnalyzeSentimentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(LanguageServiceServer).AnalyzeSentiment(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.language.v1beta2.LanguageService/AnalyzeSentiment",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(LanguageServiceServer).AnalyzeSentiment(ctx, req.(*AnalyzeSentimentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _LanguageService_AnalyzeEntities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(AnalyzeEntitiesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(LanguageServiceServer).AnalyzeEntities(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.language.v1beta2.LanguageService/AnalyzeEntities",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(LanguageServiceServer).AnalyzeEntities(ctx, req.(*AnalyzeEntitiesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _LanguageService_AnalyzeEntitySentiment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(AnalyzeEntitySentimentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(LanguageServiceServer).AnalyzeEntitySentiment(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.language.v1beta2.LanguageService/AnalyzeEntitySentiment",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(LanguageServiceServer).AnalyzeEntitySentiment(ctx, req.(*AnalyzeEntitySentimentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _LanguageService_AnalyzeSyntax_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(AnalyzeSyntaxRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(LanguageServiceServer).AnalyzeSyntax(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.language.v1beta2.LanguageService/AnalyzeSyntax",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(LanguageServiceServer).AnalyzeSyntax(ctx, req.(*AnalyzeSyntaxRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _LanguageService_AnnotateText_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(AnnotateTextRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(LanguageServiceServer).AnnotateText(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.language.v1beta2.LanguageService/AnnotateText",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(LanguageServiceServer).AnnotateText(ctx, req.(*AnnotateTextRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _LanguageService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.language.v1beta2.LanguageService",
+	HandlerType: (*LanguageServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "AnalyzeSentiment",
+			Handler:    _LanguageService_AnalyzeSentiment_Handler,
+		},
+		{
+			MethodName: "AnalyzeEntities",
+			Handler:    _LanguageService_AnalyzeEntities_Handler,
+		},
+		{
+			MethodName: "AnalyzeEntitySentiment",
+			Handler:    _LanguageService_AnalyzeEntitySentiment_Handler,
+		},
+		{
+			MethodName: "AnalyzeSyntax",
+			Handler:    _LanguageService_AnalyzeSyntax_Handler,
+		},
+		{
+			MethodName: "AnnotateText",
+			Handler:    _LanguageService_AnnotateText_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/language/v1beta2/language_service.proto",
+}
+
+func init() {
+	proto.RegisterFile("google/cloud/language/v1beta2/language_service.proto", fileDescriptor0)
+}
+
+var fileDescriptor0 = []byte{
+	// 2873 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4d, 0x73, 0xdb, 0xc6,
+	0xf9, 0x37, 0xf8, 0x26, 0x72, 0x29, 0xc9, 0x6b, 0xc4, 0x89, 0xf9, 0xd7, 0x3f, 0x2f, 0x0e, 0x12,
+	0xd7, 0x8a, 0x9d, 0x50, 0xb1, 0xec, 0x38, 0xae, 0xed, 0xbc, 0x40, 0xc0, 0x92, 0x82, 0x4c, 0x02,
+	0xc8, 0x02, 0xa0, 0xe5, 0x5c, 0x38, 0x30, 0xb9, 0x62, 0x38, 0x91, 0x00, 0x96, 0x80, 0x3c, 0x56,
+	0x2f, 0x99, 0xc9, 0x4c, 0x8f, 0x99, 0x1e, 0x72, 0xe8, 0x07, 0xe8, 0xa1, 0xa7, 0x4e, 0x3a, 0xd3,
+	0x99, 0x4e, 0xfb, 0x19, 0x7a, 0x4c, 0xa7, 0xa7, 0x1e, 0x7b, 0xec, 0xa1, 0x87, 0x1e, 0x7a, 0xec,
+	0x3c, 0xbb, 0x0b, 0xbe, 0xc8, 0x8e, 0x25, 0x3a, 0x99, 0x4e, 0x7a, 0xdb, 0x7d, 0xf0, 0xfc, 0x9e,
+	0x7d, 0xde, 0x9f, 0x05, 0x48, 0x74, 0x63, 0x10, 0xc7, 0x83, 0x7d, 0xb6, 0xd1, 0xdb, 0x8f, 0x0f,
+	0xfb, 0x1b, 0xfb, 0x61, 0x34, 0x38, 0x0c, 0x07, 0x6c, 0xe3, 0xd1, 0xb5, 0x87, 0x2c, 0x0d, 0x37,
+	0x27, 0x84, 0x6e, 0xc2, 0xc6, 0x8f, 0x86, 0x3d, 0x56, 0x1f, 0x8d, 0xe3, 0x34, 0x56, 0x5f, 0x11,
+	0xa8, 0x3a, 0x47, 0xd5, 0x33, 0xa6, 0xba, 0x44, 0xad, 0xbd, 0x2c, 0x85, 0x86, 0xa3, 0xe1, 0x46,
+	0x18, 0x45, 0x71, 0x1a, 0xa6, 0xc3, 0x38, 0x4a, 0x04, 0x78, 0xed, 0x0d, 0xf9, 0x74, 0x3f, 0x8e,
+	0x06, 0xe3, 0xc3, 0x28, 0x1a, 0x46, 0x83, 0x8d, 0x78, 0xc4, 0xc6, 0x73, 0x4c, 0xaf, 0x49, 0x26,
+	0xbe, 0x7b, 0x78, 0xb8, 0xb7, 0x91, 0x0e, 0x0f, 0x58, 0x92, 0x86, 0x07, 0x23, 0xc9, 0x70, 0x41,
+	0x32, 0x8c, 0x47, 0xbd, 0x8d, 0x24, 0x0d, 0xd3, 0x43, 0x89, 0xd4, 0xfe, 0xa9, 0xa0, 0xb2, 0x19,
+	0xf7, 0x0e, 0x0f, 0x58, 0x94, 0xaa, 0x1f, 0xa3, 0x42, 0x7a, 0x34, 0x62, 0x35, 0xe5, 0xa2, 0xb2,
+	0xbe, 0xba, 0xf9, 0x76, 0xfd, 0x99, 0x7a, 0xd7, 0x33, 0x58, 0xdd, 0x3f, 0x1a, 0x31, 0xca, 0x91,
+	0xea, 0x1a, 0x5a, 0xea, 0xc5, 0x51, 0xca, 0xa2, 0xb4, 0x96, 0xbb, 0xa8, 0xac, 0x57, 0xb6, 0xcf,
+	0xd0, 0x8c, 0xa0, 0xae, 0xa3, 0xb3, 0x83, 0x5e, 0xd2, 0x95, 0xdb, 0xee, 0xe1, 0x78, 0x58, 0xcb,
+	0x4b, 0x9e, 0x95, 0x41, 0x2f, 0x31, 0x04, 0x3d, 0x18, 0x0f, 0xd5, 0x35, 0x54, 0xce, 0x4e, 0xab,
+	0x15, 0x80, 0x85, 0x4e, 0xf6, 0xda, 0x4d, 0x54, 0x80, 0xf3, 0xd4, 0xf3, 0x08, 0xfb, 0x0f, 0x5c,
+	0xd2, 0x0d, 0x6c, 0xcf, 0x25, 0x86, 0xd5, 0xb0, 0x88, 0x89, 0xcf, 0xa8, 0xab, 0x08, 0xb9, 0x2d,
+	0xdd, 0xb2, 0xbb, 0x3e, 0xd9, 0xf5, 0xb1, 0xa2, 0x96, 0x51, 0x61, 0xdb, 0x6f, 0xb7, 0x70, 0x6e,
+	0xab, 0x8c, 0x4a, 0x49, 0x7c, 0x38, 0xee, 0x31, 0xed, 0x97, 0x0a, 0x2a, 0x7b, 0x0c, 0x0e, 0xeb,
+	0x31, 0xf5, 0x0e, 0x2a, 0xa4, 0xec, 0x71, 0xca, 0x4d, 0xae, 0x6e, 0x5e, 0x3e, 0xc1, 0x64, 0x9f,
+	0x3d, 0x4e, 0xbd, 0x51, 0x18, 0x51, 0x0e, 0x52, 0x1b, 0xa8, 0x92, 0xb0, 0x08, 0x7c, 0x2d, 0xed,
+	0xad, 0x6e, 0xae, 0x9f, 0x20, 0xc1, 0xcb, 0xf8, 0xe9, 0x14, 0xaa, 0x7d, 0x5d, 0x40, 0x25, 0x12,
+	0xa5, 0xc3, 0xf4, 0x48, 0x55, 0x51, 0x21, 0x0a, 0x0f, 0x44, 0x08, 0x2a, 0x94, 0xaf, 0xd5, 0x0f,
+	0x65, 0x58, 0x72, 0x3c, 0x2c, 0x57, 0x4e, 0x38, 0x41, 0x08, 0x9a, 0x0d, 0x8a, 0x83, 0xca, 0x07,
+	0x2c, 0x0d, 0xfb, 0x61, 0x1a, 0xd6, 0xf2, 0x17, 0xf3, 0xeb, 0xd5, 0xcd, 0xeb, 0xa7, 0x93, 0xd1,
+	0x96, 0x28, 0x12, 0xa5, 0xe3, 0x23, 0x3a, 0x11, 0x02, 0xf1, 0x49, 0xc2, 0xfd, 0x21, 0x38, 0x90,
+	0xc7, 0x27, 0x47, 0x27, 0x7b, 0x75, 0x1b, 0x0e, 0x8b, 0x78, 0x72, 0xd6, 0x8a, 0xfc, 0xb0, 0xb7,
+	0x4f, 0x75, 0x58, 0x5b, 0x80, 0xe8, 0x04, 0x3d, 0xef, 0xdd, 0xd2, 0x73, 0x7b, 0x77, 0xed, 0x0e,
+	0x5a, 0x99, 0x33, 0x44, 0xc5, 0x28, 0xff, 0x39, 0x3b, 0x92, 0x2e, 0x86, 0xa5, 0x7a, 0x1e, 0x15,
+	0x1f, 0x85, 0xfb, 0x87, 0xc2, 0xc5, 0x15, 0x2a, 0x36, 0xb7, 0x73, 0xb7, 0x14, 0xed, 0x48, 0xa6,
+	0x5b, 0x15, 0x2d, 0x05, 0xf6, 0x3d, 0xdb, 0xb9, 0x6f, 0xe3, 0x33, 0x2a, 0x42, 0x25, 0x97, 0x50,
+	0xcf, 0xb1, 0xb1, 0xa2, 0x2e, 0xa3, 0x72, 0xcb, 0x31, 0x74, 0xdf, 0x72, 0x6c, 0x9c, 0x53, 0x31,
+	0x5a, 0x76, 0x68, 0x53, 0xb7, 0xad, 0x4f, 0x05, 0x25, 0xaf, 0x56, 0x50, 0x91, 0x74, 0x88, 0xed,
+	0xe3, 0x82, 0x7a, 0x16, 0x55, 0xef, 0x3b, 0xf4, 0x5e, 0xd7, 0x69, 0x74, 0x75, 0xea, 0xe3, 0xa2,
+	0x7a, 0x0e, 0xad, 0x18, 0x8e, 0xed, 0x05, 0x6d, 0x42, 0xbb, 0x4d, 0xc7, 0x31, 0x71, 0x09, 0xd8,
+	0x1d, 0x7f, 0x9b, 0x50, 0xbc, 0xa4, 0xfd, 0x22, 0x87, 0x8a, 0x7e, 0xfc, 0x39, 0x8b, 0xbe, 0x5f,
+	0x92, 0x7e, 0x82, 0x56, 0x47, 0xe1, 0x38, 0xed, 0xc6, 0x7b, 0xdd, 0x64, 0xc4, 0x58, 0xef, 0x33,
+	0x99, 0xa9, 0x57, 0x4f, 0x10, 0xe3, 0x86, 0xe3, 0xd4, 0xd9, 0xf3, 0x38, 0x84, 0x2e, 0x8f, 0x66,
+	0x76, 0x6a, 0x07, 0x9d, 0xed, 0xb3, 0x11, 0x8b, 0xfa, 0x2c, 0xea, 0x1d, 0x75, 0x59, 0x7f, 0xc0,
+	0x78, 0x25, 0x57, 0x37, 0xdf, 0x39, 0xa9, 0x65, 0x4c, 0x50, 0xa4, 0x3f, 0x60, 0x74, 0xb5, 0x3f,
+	0xb7, 0x87, 0x30, 0xec, 0xb3, 0x83, 0x83, 0x50, 0x16, 0xbd, 0xd8, 0x68, 0x1f, 0xa1, 0xca, 0x24,
+	0xae, 0xea, 0xcb, 0xa8, 0x72, 0x10, 0x0e, 0xa2, 0x61, 0x7a, 0xd8, 0x17, 0xd1, 0xca, 0xd1, 0x29,
+	0x01, 0x04, 0x24, 0xbd, 0x78, 0x2c, 0xd4, 0xc9, 0x51, 0xb1, 0xd1, 0xfe, 0x74, 0x0e, 0x2d, 0xcf,
+	0x5a, 0xa3, 0xea, 0x28, 0x9f, 0x86, 0x03, 0xd9, 0xe6, 0x36, 0x16, 0xf0, 0x43, 0xdd, 0x0f, 0x07,
+	0x14, 0xb0, 0xea, 0x0e, 0x2a, 0x85, 0xc9, 0x88, 0xf5, 0x52, 0x59, 0x95, 0x9b, 0x8b, 0x48, 0xd1,
+	0x39, 0x92, 0x4a, 0x09, 0xaa, 0x89, 0x0a, 0xbd, 0x30, 0x11, 0x4a, 0xaf, 0x6e, 0xbe, 0xbb, 0x88,
+	0x24, 0x23, 0x4c, 0x18, 0xe5, 0x68, 0x90, 0xb2, 0x17, 0x8f, 0x0f, 0xb8, 0xef, 0x16, 0x94, 0xd2,
+	0x88, 0xc7, 0x07, 0x94, 0xa3, 0xc1, 0xae, 0x01, 0x84, 0x64, 0x5c, 0x2b, 0x2e, 0x6e, 0x57, 0x93,
+	0x23, 0xa9, 0x94, 0x00, 0x1a, 0x1d, 0xc4, 0x71, 0x9f, 0xd7, 0xee, 0x82, 0x1a, 0xb5, 0xe3, 0xb8,
+	0x4f, 0x39, 0x1a, 0x34, 0x8a, 0x0e, 0x0f, 0x1e, 0xb2, 0x71, 0x6d, 0x69, 0x71, 0x8d, 0x6c, 0x8e,
+	0xa4, 0x52, 0x02, 0xc8, 0x1a, 0xb1, 0x71, 0x12, 0x47, 0xb5, 0xf2, 0xe2, 0xb2, 0x5c, 0x8e, 0xa4,
+	0x52, 0x02, 0x97, 0x35, 0x86, 0x49, 0x5c, 0xab, 0x3c, 0x87, 0x2c, 0x8e, 0xa4, 0x52, 0x82, 0xfa,
+	0x00, 0x55, 0xc7, 0xac, 0x37, 0x1c, 0x8d, 0xe3, 0xde, 0x30, 0x3d, 0xaa, 0x21, 0x2e, 0xf0, 0xfd,
+	0x45, 0x04, 0xd2, 0x29, 0x9c, 0xce, 0xca, 0x52, 0x9b, 0xa8, 0x98, 0xb2, 0x28, 0x61, 0xb5, 0x2a,
+	0x17, 0x7a, 0x6d, 0xa1, 0x6c, 0x07, 0x20, 0x15, 0x78, 0x10, 0xf4, 0x28, 0x1e, 0xf6, 0x58, 0x6d,
+	0x79, 0x71, 0x41, 0x1d, 0x00, 0x52, 0x81, 0xd7, 0xbe, 0x52, 0x50, 0xde, 0x0f, 0x07, 0xf3, 0x2d,
+	0x75, 0x09, 0xe5, 0x75, 0x73, 0x07, 0x2b, 0x62, 0xe1, 0xe2, 0x9c, 0x58, 0x74, 0x70, 0x1e, 0x66,
+	0xb8, 0xe1, 0xd8, 0x3b, 0xb8, 0x00, 0x24, 0x93, 0x40, 0xe3, 0x2c, 0xa3, 0x82, 0xed, 0x04, 0x36,
+	0x2e, 0x01, 0xc9, 0x0e, 0xda, 0x78, 0x09, 0x48, 0x2e, 0x75, 0x6c, 0x5c, 0x06, 0x92, 0x4b, 0x7d,
+	0x5c, 0x81, 0x5e, 0xea, 0x06, 0xb6, 0xe1, 0x63, 0x04, 0x4f, 0x3b, 0x84, 0x6e, 0xe1, 0xaa, 0x5a,
+	0x44, 0xca, 0x2e, 0x5e, 0x86, 0x67, 0x7a, 0xa3, 0x61, 0xed, 0xe2, 0x15, 0xcd, 0x41, 0x25, 0x51,
+	0x90, 0xaa, 0x8a, 0x56, 0x75, 0xb8, 0x4d, 0xf8, 0xdd, 0xa9, 0x62, 0x70, 0xa3, 0x20, 0xb4, 0x41,
+	0x0c, 0xdf, 0xea, 0x10, 0xac, 0x40, 0x87, 0xb7, 0xda, 0x33, 0x94, 0x1c, 0xb4, 0x75, 0x97, 0x3a,
+	0x4d, 0x4a, 0x3c, 0x0f, 0x08, 0x79, 0xed, 0xdf, 0x0a, 0x2a, 0x40, 0x61, 0x02, 0xaf, 0xa1, 0x7b,
+	0x64, 0x5e, 0x9a, 0x6e, 0x18, 0x81, 0xa7, 0x4b, 0x69, 0x2b, 0xa8, 0xa2, 0x9b, 0xa0, 0x99, 0xa5,
+	0xb7, 0x70, 0x4e, 0x0c, 0x84, 0xb6, 0xdb, 0x22, 0x6d, 0x62, 0x73, 0x8e, 0x3c, 0xcc, 0x1a, 0x53,
+	0x70, 0x17, 0x60, 0xd6, 0x34, 0x89, 0x6d, 0xf1, 0x5d, 0x91, 0x6b, 0x62, 0x7b, 0x3e, 0x0d, 0x80,
+	0x59, 0x6f, 0xe1, 0xd2, 0x74, 0x16, 0x75, 0x08, 0x5e, 0x82, 0xb3, 0x6c, 0xa7, 0x6d, 0xd9, 0x62,
+	0x5f, 0x06, 0x7f, 0x3b, 0x5b, 0x2d, 0xeb, 0x93, 0x80, 0xe0, 0x0a, 0x1c, 0xec, 0xea, 0xd4, 0x17,
+	0xb2, 0x10, 0x1c, 0xec, 0x52, 0xe2, 0x3a, 0x9e, 0x05, 0x63, 0x4b, 0x6f, 0xe1, 0x2a, 0x38, 0x83,
+	0x92, 0x46, 0x8b, 0xec, 0x5a, 0x1d, 0xd2, 0x05, 0x33, 0xf0, 0x32, 0xb0, 0x51, 0xd2, 0xe2, 0x02,
+	0x05, 0x69, 0x05, 0xce, 0xec, 0x64, 0x67, 0xae, 0x6a, 0xdf, 0x28, 0xa8, 0x00, 0xdd, 0x04, 0x94,
+	0x6b, 0x38, 0xb4, 0x3d, 0x63, 0xfa, 0x32, 0x2a, 0xeb, 0x26, 0x28, 0xa4, 0xb7, 0xa4, 0xe1, 0xc1,
+	0xae, 0xd5, 0xb2, 0x74, 0xfa, 0x00, 0xe7, 0xe0, 0xb0, 0x19, 0xc3, 0x3f, 0x25, 0x14, 0xe7, 0xb9,
+	0x08, 0xcb, 0xd6, 0x5b, 0x5d, 0x62, 0x9b, 0x96, 0xdd, 0xc4, 0x05, 0xf0, 0x45, 0x93, 0xd0, 0xc0,
+	0x36, 0x71, 0x11, 0xd6, 0x94, 0xe8, 0x2d, 0xcb, 0x13, 0x76, 0x5b, 0x54, 0xee, 0x96, 0x20, 0xb4,
+	0xde, 0xb6, 0x43, 0x7d, 0x5c, 0x86, 0xb0, 0xb7, 0x1c, 0xbb, 0x29, 0x72, 0xc1, 0xa1, 0x26, 0xa1,
+	0x18, 0x01, 0xb7, 0xbc, 0x32, 0x1a, 0xb8, 0xaa, 0x11, 0x54, 0x12, 0x6d, 0x0b, 0x74, 0x68, 0x12,
+	0xdb, 0x24, 0x74, 0x5e, 0xe9, 0x06, 0x69, 0x5b, 0xb6, 0x65, 0xcb, 0x68, 0xb5, 0x75, 0xcf, 0x08,
+	0x5a, 0xb0, 0xcd, 0x81, 0x0a, 0x36, 0x09, 0x7c, 0x50, 0x56, 0xfb, 0x02, 0x15, 0xa0, 0x67, 0x81,
+	0xd2, 0x6d, 0xc7, 0x31, 0x67, 0x44, 0x9c, 0x47, 0xd8, 0x70, 0x6c, 0x53, 0x3a, 0xb6, 0x0b, 0x4f,
+	0xb1, 0x02, 0xc1, 0xe1, 0x69, 0xa4, 0xcb, 0x24, 0x82, 0xbd, 0x6d, 0x5a, 0xd2, 0x91, 0x79, 0xf0,
+	0xb4, 0x65, 0xfb, 0x84, 0x52, 0xa7, 0x99, 0x45, 0xbf, 0x8a, 0x96, 0x76, 0x02, 0x91, 0x63, 0x45,
+	0x48, 0x3a, 0x2f, 0xd8, 0xda, 0x81, 0xf4, 0x06, 0x42, 0x49, 0xfb, 0x18, 0x95, 0x44, 0xb3, 0x03,
+	0x3b, 0xec, 0xa0, 0xbd, 0x75, 0xdc, 0x0e, 0xcf, 0xb2, 0x9b, 0x41, 0x4b, 0xa7, 0x58, 0xe1, 0xf7,
+	0x97, 0x56, 0x40, 0x79, 0xca, 0x95, 0x51, 0xc1, 0x0c, 0xf4, 0x16, 0xce, 0x6b, 0x3e, 0x2a, 0x89,
+	0x16, 0x07, 0x12, 0xc4, 0xfd, 0x66, 0x46, 0x42, 0x05, 0x15, 0x1b, 0x16, 0xf5, 0x7c, 0x01, 0xf7,
+	0x08, 0xd8, 0x84, 0x73, 0x40, 0xf6, 0xb7, 0x2d, 0x6a, 0xe2, 0x3c, 0x18, 0x3a, 0x4d, 0x18, 0x79,
+	0x3f, 0x2a, 0x68, 0xb7, 0x50, 0x49, 0x34, 0x3b, 0x2e, 0x95, 0x3a, 0xee, 0x9c, 0x5e, 0xa0, 0x09,
+	0xa7, 0x09, 0x97, 0xd8, 0x8e, 0xdf, 0x95, 0xfb, 0x9c, 0xb6, 0x83, 0xaa, 0x33, 0x5d, 0x4d, 0xbd,
+	0x80, 0x5e, 0xa0, 0xc4, 0xb0, 0x5c, 0xea, 0x18, 0x96, 0xff, 0x60, 0xbe, 0xa6, 0xb2, 0x07, 0x3c,
+	0xb5, 0xc0, 0x7e, 0xc7, 0xee, 0xce, 0xd0, 0x72, 0x5a, 0x82, 0x8a, 0xbc, 0x99, 0x81, 0x5f, 0x7d,
+	0x62, 0xcf, 0xd5, 0xe4, 0x8b, 0xe8, 0xdc, 0x6c, 0x80, 0xf8, 0x63, 0x61, 0x65, 0x23, 0xf0, 0x03,
+	0x4a, 0x84, 0x93, 0x5c, 0xdd, 0xf3, 0x71, 0x1e, 0x82, 0xe0, 0x52, 0xe2, 0x89, 0x0b, 0xdd, 0x0a,
+	0xaa, 0x4c, 0x7a, 0x01, 0x2e, 0x8a, 0x97, 0x8f, 0x20, 0xdb, 0x97, 0xb4, 0x2d, 0x54, 0xe4, 0x8d,
+	0x0f, 0x0e, 0xed, 0x38, 0x96, 0x41, 0xe6, 0x0d, 0xd7, 0x8d, 0x69, 0x13, 0x30, 0xf4, 0xac, 0x27,
+	0xe4, 0xf8, 0x11, 0x7a, 0xd6, 0x4b, 0xfe, 0xb5, 0x84, 0x56, 0xe7, 0x6f, 0x4d, 0xea, 0x3a, 0xc2,
+	0x9f, 0xb1, 0xb0, 0xdf, 0x4d, 0xe1, 0x6e, 0xd8, 0x1d, 0x46, 0x7d, 0xf6, 0x98, 0x5f, 0x65, 0x8a,
+	0x74, 0x15, 0xe8, 0xfc, 0xca, 0x68, 0x01, 0x55, 0xb5, 0x50, 0x71, 0x3f, 0x7c, 0xc8, 0xf6, 0xe5,
+	0x1d, 0xe5, 0xfa, 0x42, 0xb7, 0xb3, 0x7a, 0x0b, 0xa0, 0x54, 0x48, 0xd0, 0xfe, 0x51, 0x42, 0x45,
+	0x4e, 0x78, 0xe2, 0x26, 0xac, 0x6f, 0x6d, 0x51, 0xd2, 0xc1, 0x0a, 0x6f, 0xa9, 0x50, 0xc4, 0x22,
+	0x2b, 0x74, 0xb3, 0x63, 0xb4, 0x44, 0xff, 0xd2, 0xcd, 0x4e, 0xdb, 0x31, 0x71, 0x01, 0xdc, 0xa8,
+	0xc3, 0xaa, 0xc8, 0x19, 0x5c, 0xd7, 0x81, 0xe2, 0x05, 0xa2, 0xef, 0x53, 0xbc, 0xc4, 0x3b, 0x7e,
+	0xb0, 0x2b, 0x3a, 0x95, 0x1e, 0xec, 0x82, 0x13, 0x70, 0x45, 0x2d, 0xa1, 0x9c, 0x61, 0x60, 0x04,
+	0x10, 0x83, 0x8b, 0xaf, 0x4e, 0x26, 0x02, 0x6f, 0xe3, 0x06, 0xd4, 0x01, 0x5e, 0xe1, 0x5e, 0x84,
+	0x25, 0x87, 0xad, 0x8a, 0x59, 0xe1, 0xe2, 0xb3, 0xd9, 0xd0, 0xc0, 0xc0, 0x60, 0x5a, 0x9e, 0xe1,
+	0x04, 0xd4, 0x23, 0xf8, 0x1c, 0x4f, 0x7c, 0x67, 0x6b, 0x07, 0xab, 0xb0, 0x22, 0xbb, 0x6e, 0x0b,
+	0xbf, 0xc0, 0x1b, 0xac, 0x43, 0xbc, 0xfb, 0x96, 0xbf, 0x8d, 0xcf, 0x03, 0xdd, 0x02, 0x8e, 0x17,
+	0x61, 0xd5, 0xd6, 0xe9, 0x3d, 0xfc, 0x12, 0x48, 0x6b, 0xdf, 0x27, 0xf8, 0x82, 0x58, 0x74, 0x70,
+	0x8d, 0x4f, 0x20, 0xd2, 0xc4, 0xff, 0x07, 0x8a, 0xda, 0x36, 0x5e, 0x03, 0x21, 0xb6, 0x2b, 0x6d,
+	0xfe, 0x7f, 0xd0, 0xd0, 0xe6, 0x1a, 0xbe, 0x0c, 0x0a, 0xd8, 0x13, 0x0d, 0x5f, 0xc9, 0x46, 0xd7,
+	0xab, 0xbc, 0x8f, 0xf0, 0x82, 0xc5, 0xaf, 0xc1, 0x78, 0x72, 0xf1, 0x45, 0xd9, 0x9e, 0x75, 0x5f,
+	0xdf, 0xb5, 0x3c, 0xfc, 0xba, 0x48, 0x09, 0xea, 0x83, 0x44, 0x8d, 0x8f, 0x35, 0xee, 0x88, 0x37,
+	0x78, 0x5e, 0x82, 0x86, 0x6f, 0x8a, 0x95, 0xe7, 0xe1, 0x4b, 0x9c, 0xd7, 0xf1, 0x7c, 0xd0, 0xe9,
+	0x27, 0x32, 0x5d, 0x39, 0xf7, 0xe5, 0xc9, 0xc6, 0xde, 0xc1, 0xeb, 0xa2, 0xf2, 0x08, 0x78, 0xe6,
+	0x2d, 0x31, 0x3b, 0x49, 0x03, 0x5f, 0x91, 0x2b, 0x17, 0x5f, 0xe5, 0xa7, 0x50, 0xc7, 0x6e, 0xe1,
+	0xb7, 0xb3, 0x81, 0xfa, 0x0e, 0x58, 0xe8, 0x7a, 0xb8, 0x0e, 0x16, 0x7e, 0x12, 0xe8, 0x36, 0xd7,
+	0x67, 0x03, 0x38, 0xa9, 0x01, 0xcb, 0x77, 0xe1, 0x01, 0x5f, 0x52, 0xd2, 0xc2, 0xd7, 0xf8, 0x03,
+	0x93, 0x3a, 0x2e, 0xde, 0x04, 0x11, 0x70, 0xc0, 0x75, 0xd0, 0x81, 0x92, 0xb6, 0xad, 0xdb, 0x3e,
+	0xbe, 0x21, 0x2a, 0x17, 0xec, 0xb4, 0xcd, 0xa0, 0x8d, 0xdf, 0x83, 0xd3, 0xa9, 0xe3, 0xf8, 0xf8,
+	0x26, 0xac, 0x3c, 0x70, 0xce, 0xfb, 0x7c, 0x15, 0x34, 0x1a, 0xf8, 0x16, 0xac, 0xf8, 0x89, 0x3f,
+	0xe5, 0x4d, 0xc7, 0x71, 0x2d, 0x03, 0xdf, 0xe6, 0x83, 0x1d, 0x88, 0x77, 0xe6, 0x06, 0xd1, 0x5d,
+	0x60, 0xd9, 0xe5, 0x66, 0x7f, 0xc0, 0xdb, 0x55, 0xc0, 0x67, 0xfd, 0x87, 0x1c, 0x69, 0xf9, 0x2d,
+	0x82, 0x3f, 0x12, 0xf3, 0xa8, 0xe3, 0x6e, 0x03, 0xfa, 0x63, 0x99, 0x72, 0x50, 0x86, 0x58, 0xe7,
+	0xd9, 0x19, 0xec, 0x76, 0x3a, 0x78, 0x0b, 0x96, 0x26, 0x3f, 0xd5, 0x00, 0x96, 0x86, 0x43, 0x89,
+	0xd5, 0xb4, 0xb1, 0x09, 0xae, 0xb8, 0x77, 0x1f, 0x13, 0x3e, 0x61, 0x2c, 0xcf, 0xc7, 0x0d, 0x71,
+	0x27, 0x69, 0x1b, 0xb8, 0xc9, 0x13, 0xc0, 0x69, 0x8b, 0xbc, 0xdc, 0x86, 0x89, 0x90, 0xed, 0x78,
+	0xe0, 0x2d, 0xce, 0x19, 0xb4, 0x0d, 0xbc, 0x03, 0x6e, 0x31, 0x1c, 0x17, 0xdf, 0x03, 0x4f, 0x98,
+	0x96, 0xc7, 0x87, 0x37, 0x31, 0x71, 0x4b, 0xfb, 0x2a, 0x87, 0x56, 0xe6, 0xde, 0x8b, 0xbf, 0xdf,
+	0x3b, 0x20, 0x99, 0xfb, 0x82, 0x70, 0x6d, 0x91, 0x17, 0xf2, 0xd9, 0x0f, 0x09, 0x73, 0x6f, 0xe4,
+	0xf9, 0xe7, 0xff, 0xde, 0xf1, 0xae, 0x7c, 0xa9, 0xc6, 0x68, 0x59, 0x7e, 0xc3, 0x79, 0xda, 0x3c,
+	0x40, 0xa8, 0x64, 0x38, 0xed, 0x36, 0xbc, 0x57, 0x6b, 0x4d, 0x54, 0xce, 0x4c, 0x52, 0x6b, 0xd3,
+	0x6f, 0x4c, 0xe2, 0x15, 0x7e, 0xf2, 0x85, 0xe9, 0x75, 0xb4, 0xfc, 0x90, 0x0d, 0x86, 0x51, 0x37,
+	0xde, 0xdb, 0x4b, 0x98, 0x78, 0x35, 0x2b, 0xd2, 0x2a, 0xa7, 0x39, 0x9c, 0xa4, 0xfd, 0x4e, 0x41,
+	0x17, 0xf4, 0x28, 0xdc, 0x3f, 0xfa, 0x39, 0x9b, 0xaa, 0xc6, 0x7e, 0x76, 0xc8, 0x92, 0x54, 0x35,
+	0x50, 0xb9, 0x2f, 0xbf, 0x69, 0x9d, 0xd2, 0xcd, 0xd9, 0x27, 0x30, 0x3a, 0x01, 0xaa, 0x2e, 0x5a,
+	0x61, 0x51, 0x2f, 0xee, 0x0f, 0xa3, 0x41, 0x77, 0xc6, 0xe7, 0x57, 0x4f, 0xf4, 0xb9, 0xc0, 0x70,
+	0x6f, 0x2f, 0xb3, 0x99, 0x9d, 0xf6, 0x57, 0x05, 0xd5, 0x9e, 0x54, 0x39, 0x19, 0xc5, 0x30, 0xcf,
+	0xee, 0x23, 0x35, 0x3b, 0xba, 0x3b, 0x8d, 0x8d, 0xb2, 0x60, 0x6c, 0xce, 0x65, 0x32, 0xa6, 0x2f,
+	0xda, 0xb3, 0xdf, 0xe0, 0x72, 0xf3, 0xdf, 0xe0, 0x54, 0x22, 0xf2, 0x80, 0x45, 0x3d, 0x96, 0xc8,
+	0x2f, 0x4a, 0x97, 0x4f, 0x71, 0x16, 0xf0, 0xd3, 0x29, 0x52, 0xfb, 0x83, 0x82, 0x5e, 0x91, 0x86,
+	0x89, 0x94, 0xfb, 0x5f, 0x89, 0xc8, 0x17, 0xe8, 0xd5, 0xef, 0xd2, 0x5b, 0x86, 0x45, 0x47, 0x65,
+	0xa0, 0xa5, 0x43, 0x96, 0xd4, 0x14, 0xee, 0xa0, 0x4b, 0xa7, 0x2a, 0x3a, 0x3a, 0x81, 0x3d, 0x2b,
+	0x00, 0x70, 0xcd, 0x7e, 0x69, 0x56, 0x83, 0x21, 0x4b, 0x7e, 0xe4, 0x2e, 0x7b, 0x3c, 0x29, 0xbb,
+	0xa9, 0xc2, 0xff, 0x1d, 0x5f, 0xfd, 0x56, 0x41, 0xe7, 0xb3, 0xf2, 0x39, 0x8a, 0xd2, 0xf0, 0xf1,
+	0x8f, 0xdc, 0x53, 0x7f, 0x54, 0xd0, 0x8b, 0xc7, 0xf4, 0x95, 0x8e, 0x9a, 0x2b, 0x3b, 0xe5, 0x79,
+	0xcb, 0x4e, 0xbd, 0x8b, 0x4a, 0xfc, 0xea, 0x98, 0xd4, 0x72, 0x5c, 0xc6, 0x9b, 0x27, 0xcd, 0x12,
+	0x60, 0xa6, 0x12, 0x33, 0xe7, 0xea, 0xfc, 0x31, 0x57, 0xff, 0x2d, 0x8f, 0x5e, 0xd0, 0xc5, 0x2f,
+	0x18, 0x0c, 0xda, 0xf5, 0x0f, 0xea, 0xe9, 0xfb, 0xa8, 0xbc, 0xc7, 0xc2, 0xf4, 0x70, 0xcc, 0x12,
+	0xf9, 0x05, 0xf3, 0xce, 0x09, 0x42, 0x9e, 0xa2, 0x4a, 0xbd, 0x21, 0x45, 0xd0, 0x89, 0xb0, 0x27,
+	0x43, 0x98, 0xff, 0x9e, 0x21, 0x5c, 0xfb, 0x8b, 0x82, 0xca, 0xd9, 0x41, 0xea, 0x25, 0xb4, 0xca,
+	0x1e, 0xa7, 0xe3, 0xb0, 0x97, 0x76, 0x13, 0x1e, 0x4f, 0xee, 0x82, 0x32, 0x5d, 0x91, 0x54, 0x11,
+	0x64, 0xf5, 0x2d, 0x84, 0x33, 0xb6, 0x49, 0x35, 0xe4, 0x38, 0xe3, 0x59, 0x49, 0xcf, 0x0a, 0x47,
+	0xbd, 0x8b, 0xd6, 0x32, 0xd6, 0xa7, 0xf4, 0xfe, 0x3c, 0x07, 0xd5, 0x24, 0x87, 0xf9, 0x44, 0x63,
+	0xbf, 0x85, 0x6a, 0x73, 0x07, 0x1d, 0xcd, 0x60, 0x0b, 0x1c, 0xfb, 0xd2, 0xec, 0x81, 0xd3, 0xe6,
+	0xa6, 0x7d, 0x9b, 0x83, 0x4a, 0x9a, 0xf5, 0xe9, 0x8f, 0x29, 0x31, 0x67, 0xdb, 0x48, 0xfe, 0xf9,
+	0xda, 0xc8, 0xd3, 0x87, 0x69, 0xe1, 0x87, 0x1d, 0xa6, 0xc5, 0xf9, 0xa2, 0xb9, 0x72, 0x0b, 0x2d,
+	0xcf, 0xa6, 0x92, 0xb8, 0x47, 0xda, 0x04, 0x9f, 0x81, 0x55, 0xe0, 0x37, 0x6e, 0x89, 0x57, 0xab,
+	0xc0, 0x6f, 0x5c, 0xbb, 0x29, 0x5e, 0xad, 0x02, 0xbf, 0x71, 0x7d, 0x13, 0xe7, 0x37, 0x7f, 0xb5,
+	0x84, 0xce, 0xb6, 0xa4, 0x18, 0x4f, 0xfc, 0xe2, 0xa8, 0xfe, 0x5e, 0x41, 0xf8, 0xf8, 0x65, 0x41,
+	0xbd, 0x79, 0x62, 0xa1, 0x3c, 0xf5, 0x42, 0xb4, 0xf6, 0xfe, 0xc2, 0x38, 0x91, 0x10, 0x5a, 0xfd,
+	0xcb, 0x6f, 0xff, 0xfe, 0x75, 0x6e, 0x5d, 0x7b, 0x63, 0xf2, 0xd3, 0x68, 0xe6, 0x93, 0xe4, 0x76,
+	0x78, 0x0c, 0x74, 0x5b, 0xb9, 0xa2, 0x7e, 0xa3, 0xa0, 0xb3, 0xc7, 0xc6, 0x83, 0xfa, 0xde, 0xe9,
+	0x0e, 0x3f, 0x36, 0xff, 0xd6, 0x6e, 0x2e, 0x0a, 0x93, 0x2a, 0xbf, 0xc3, 0x55, 0xbe, 0xac, 0x69,
+	0xdf, 0xad, 0x72, 0x86, 0x01, 0x8d, 0xff, 0x7c, 0x6c, 0x02, 0x4f, 0xcb, 0x44, 0xbd, 0xbb, 0x80,
+	0x06, 0x4f, 0x5c, 0x79, 0xd6, 0x3e, 0x78, 0x4e, 0xb4, 0x34, 0xe3, 0x06, 0x37, 0xa3, 0xae, 0xbd,
+	0x75, 0x82, 0x19, 0x47, 0x73, 0xfe, 0xff, 0x8d, 0x82, 0x56, 0xe6, 0x66, 0x8e, 0x7a, 0xfd, 0x94,
+	0xa1, 0x9f, 0x9d, 0xa8, 0x6b, 0x37, 0x16, 0x03, 0x49, 0x95, 0xaf, 0x72, 0x95, 0x2f, 0x69, 0x17,
+	0x9f, 0x91, 0x2c, 0x1c, 0x01, 0x9a, 0xfe, 0x5a, 0x41, 0xcb, 0xb3, 0x3d, 0x48, 0xdd, 0x5c, 0x7c,
+	0x08, 0xac, 0x5d, 0x5f, 0x08, 0x23, 0xd5, 0xbc, 0xc2, 0xd5, 0x7c, 0x53, 0x7b, 0xed, 0xa9, 0x6a,
+	0x4e, 0x01, 0xb7, 0x95, 0x2b, 0x5b, 0x5f, 0x2a, 0xe8, 0xf5, 0x5e, 0x7c, 0xf0, 0xec, 0x63, 0xb6,
+	0xce, 0x1f, 0x2b, 0x5e, 0x77, 0x1c, 0xa7, 0xb1, 0xab, 0x7c, 0x4a, 0x24, 0x6c, 0x10, 0x03, 0xa4,
+	0x1e, 0x8f, 0x07, 0x1b, 0x03, 0x16, 0xf1, 0xdf, 0xeb, 0x37, 0xc4, 0xa3, 0x70, 0x34, 0x4c, 0xbe,
+	0xe3, 0x4f, 0x08, 0x77, 0x32, 0xc2, 0xc3, 0x12, 0x47, 0x5c, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff,
+	0xff, 0x55, 0xc3, 0xe3, 0x00, 0xb5, 0x20, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/speech/v1/cloud_speech.pb.go b/googleapis/cloud/speech/v1/cloud_speech.pb.go
new file mode 100644
index 00000000..51de3f2f
--- /dev/null
+++ b/googleapis/cloud/speech/v1/cloud_speech.pb.go
@@ -0,0 +1,1171 @@
+// Code generated by protoc-gen-go.
+// source: google/cloud/speech/v1/cloud_speech.proto
+// DO NOT EDIT!
+
+/*
+Package speech is a generated protocol buffer package.
+
+It is generated from these files:
+	google/cloud/speech/v1/cloud_speech.proto
+
+It has these top-level messages:
+	RecognizeRequest
+	LongRunningRecognizeRequest
+	StreamingRecognizeRequest
+	StreamingRecognitionConfig
+	RecognitionConfig
+	SpeechContext
+	RecognitionAudio
+	RecognizeResponse
+	LongRunningRecognizeResponse
+	LongRunningRecognizeMetadata
+	StreamingRecognizeResponse
+	StreamingRecognitionResult
+	SpeechRecognitionResult
+	SpeechRecognitionAlternative
+*/
+package speech
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
+import _ "github.com/golang/protobuf/ptypes/any"
+import _ "github.com/golang/protobuf/ptypes/duration"
+import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp"
+import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// Audio encoding of the data sent in the audio message. All encodings support
+// only 1 channel (mono) audio. Only `FLAC` includes a header that describes
+// the bytes of audio that follow the header. The other encodings are raw
+// audio bytes with no header.
+//
+// For best results, the audio source should be captured and transmitted using
+// a lossless encoding (`FLAC` or `LINEAR16`). Recognition accuracy may be
+// reduced if lossy codecs, which include the other codecs listed in
+// this section, are used to capture or transmit the audio, particularly if
+// background noise is present.
+type RecognitionConfig_AudioEncoding int32
+
+const (
+	// Not specified. Will return result [google.rpc.Code.INVALID_ARGUMENT][].
+	RecognitionConfig_ENCODING_UNSPECIFIED RecognitionConfig_AudioEncoding = 0
+	// Uncompressed 16-bit signed little-endian samples (Linear PCM).
+	RecognitionConfig_LINEAR16 RecognitionConfig_AudioEncoding = 1
+	// [`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio
+	// Codec) is the recommended encoding because it is
+	// lossless--therefore recognition is not compromised--and
+	// requires only about half the bandwidth of `LINEAR16`. `FLAC` stream
+	// encoding supports 16-bit and 24-bit samples, however, not all fields in
+	// `STREAMINFO` are supported.
+	RecognitionConfig_FLAC RecognitionConfig_AudioEncoding = 2
+	// 8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.
+	RecognitionConfig_MULAW RecognitionConfig_AudioEncoding = 3
+	// Adaptive Multi-Rate Narrowband codec. `sample_rate_hertz` must be 8000.
+	RecognitionConfig_AMR RecognitionConfig_AudioEncoding = 4
+	// Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000.
+	RecognitionConfig_AMR_WB RecognitionConfig_AudioEncoding = 5
+	// Opus encoded audio frames in Ogg container
+	// ([OggOpus](https://wiki.xiph.org/OggOpus)).
+	// `sample_rate_hertz` must be 16000.
+	RecognitionConfig_OGG_OPUS RecognitionConfig_AudioEncoding = 6
+	// Although the use of lossy encodings is not recommended, if a very low
+	// bitrate encoding is required, `OGG_OPUS` is highly preferred over
+	// Speex encoding. The [Speex](https://speex.org/)  encoding supported by
+	// Cloud Speech API has a header byte in each block, as in MIME type
+	// `audio/x-speex-with-header-byte`.
+	// It is a variant of the RTP Speex encoding defined in
+	// [RFC 5574](https://tools.ietf.org/html/rfc5574).
+	// The stream is a sequence of blocks, one block per RTP packet. Each block
+	// starts with a byte containing the length of the block, in bytes, followed
+	// by one or more frames of Speex data, padded to an integral number of
+	// bytes (octets) as specified in RFC 5574. In other words, each RTP header
+	// is replaced with a single byte containing the block length. Only Speex
+	// wideband is supported. `sample_rate_hertz` must be 16000.
+	RecognitionConfig_SPEEX_WITH_HEADER_BYTE RecognitionConfig_AudioEncoding = 7
+)
+
+var RecognitionConfig_AudioEncoding_name = map[int32]string{
+	0: "ENCODING_UNSPECIFIED",
+	1: "LINEAR16",
+	2: "FLAC",
+	3: "MULAW",
+	4: "AMR",
+	5: "AMR_WB",
+	6: "OGG_OPUS",
+	7: "SPEEX_WITH_HEADER_BYTE",
+}
+var RecognitionConfig_AudioEncoding_value = map[string]int32{
+	"ENCODING_UNSPECIFIED":   0,
+	"LINEAR16":               1,
+	"FLAC":                   2,
+	"MULAW":                  3,
+	"AMR":                    4,
+	"AMR_WB":                 5,
+	"OGG_OPUS":               6,
+	"SPEEX_WITH_HEADER_BYTE": 7,
+}
+
+func (x RecognitionConfig_AudioEncoding) String() string {
+	return proto.EnumName(RecognitionConfig_AudioEncoding_name, int32(x))
+}
+func (RecognitionConfig_AudioEncoding) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{4, 0}
+}
+
+// Indicates the type of speech event.
+type StreamingRecognizeResponse_SpeechEventType int32
+
+const (
+	// No speech event specified.
+	StreamingRecognizeResponse_SPEECH_EVENT_UNSPECIFIED StreamingRecognizeResponse_SpeechEventType = 0
+	// This event indicates that the server has detected the end of the user's
+	// speech utterance and expects no additional speech. Therefore, the server
+	// will not process additional audio (although it may subsequently return
+	// additional results). The client should stop sending additional audio
+	// data, half-close the gRPC connection, and wait for any additional results
+	// until the server closes the gRPC connection. This event is only sent if
+	// `single_utterance` was set to `true`, and is not used otherwise.
+	StreamingRecognizeResponse_END_OF_SINGLE_UTTERANCE StreamingRecognizeResponse_SpeechEventType = 1
+)
+
+var StreamingRecognizeResponse_SpeechEventType_name = map[int32]string{
+	0: "SPEECH_EVENT_UNSPECIFIED",
+	1: "END_OF_SINGLE_UTTERANCE",
+}
+var StreamingRecognizeResponse_SpeechEventType_value = map[string]int32{
+	"SPEECH_EVENT_UNSPECIFIED": 0,
+	"END_OF_SINGLE_UTTERANCE":  1,
+}
+
+func (x StreamingRecognizeResponse_SpeechEventType) String() string {
+	return proto.EnumName(StreamingRecognizeResponse_SpeechEventType_name, int32(x))
+}
+func (StreamingRecognizeResponse_SpeechEventType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{10, 0}
+}
+
+// The top-level message sent by the client for the `Recognize` method.
+type RecognizeRequest struct {
+	// *Required* Provides information to the recognizer that specifies how to
+	// process the request.
+	Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
+	// *Required* The audio data to be recognized.
+	Audio *RecognitionAudio `protobuf:"bytes,2,opt,name=audio" json:"audio,omitempty"`
+}
+
+func (m *RecognizeRequest) Reset()                    { *m = RecognizeRequest{} }
+func (m *RecognizeRequest) String() string            { return proto.CompactTextString(m) }
+func (*RecognizeRequest) ProtoMessage()               {}
+func (*RecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *RecognizeRequest) GetConfig() *RecognitionConfig {
+	if m != nil {
+		return m.Config
+	}
+	return nil
+}
+
+func (m *RecognizeRequest) GetAudio() *RecognitionAudio {
+	if m != nil {
+		return m.Audio
+	}
+	return nil
+}
+
+// The top-level message sent by the client for the `LongRunningRecognize`
+// method.
+type LongRunningRecognizeRequest struct {
+	// *Required* Provides information to the recognizer that specifies how to
+	// process the request.
+	Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
+	// *Required* The audio data to be recognized.
+	Audio *RecognitionAudio `protobuf:"bytes,2,opt,name=audio" json:"audio,omitempty"`
+}
+
+func (m *LongRunningRecognizeRequest) Reset()                    { *m = LongRunningRecognizeRequest{} }
+func (m *LongRunningRecognizeRequest) String() string            { return proto.CompactTextString(m) }
+func (*LongRunningRecognizeRequest) ProtoMessage()               {}
+func (*LongRunningRecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *LongRunningRecognizeRequest) GetConfig() *RecognitionConfig {
+	if m != nil {
+		return m.Config
+	}
+	return nil
+}
+
+func (m *LongRunningRecognizeRequest) GetAudio() *RecognitionAudio {
+	if m != nil {
+		return m.Audio
+	}
+	return nil
+}
+
+// The top-level message sent by the client for the `StreamingRecognize` method.
+// Multiple `StreamingRecognizeRequest` messages are sent. The first message
+// must contain a `streaming_config` message and must not contain `audio` data.
+// All subsequent messages must contain `audio` data and must not contain a
+// `streaming_config` message.
+type StreamingRecognizeRequest struct {
+	// Types that are valid to be assigned to StreamingRequest:
+	//	*StreamingRecognizeRequest_StreamingConfig
+	//	*StreamingRecognizeRequest_AudioContent
+	StreamingRequest isStreamingRecognizeRequest_StreamingRequest `protobuf_oneof:"streaming_request"`
+}
+
+func (m *StreamingRecognizeRequest) Reset()                    { *m = StreamingRecognizeRequest{} }
+func (m *StreamingRecognizeRequest) String() string            { return proto.CompactTextString(m) }
+func (*StreamingRecognizeRequest) ProtoMessage()               {}
+func (*StreamingRecognizeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+type isStreamingRecognizeRequest_StreamingRequest interface {
+	isStreamingRecognizeRequest_StreamingRequest()
+}
+
+type StreamingRecognizeRequest_StreamingConfig struct {
+	StreamingConfig *StreamingRecognitionConfig `protobuf:"bytes,1,opt,name=streaming_config,json=streamingConfig,oneof"`
+}
+type StreamingRecognizeRequest_AudioContent struct {
+	AudioContent []byte `protobuf:"bytes,2,opt,name=audio_content,json=audioContent,proto3,oneof"`
+}
+
+func (*StreamingRecognizeRequest_StreamingConfig) isStreamingRecognizeRequest_StreamingRequest() {}
+func (*StreamingRecognizeRequest_AudioContent) isStreamingRecognizeRequest_StreamingRequest()    {}
+
+func (m *StreamingRecognizeRequest) GetStreamingRequest() isStreamingRecognizeRequest_StreamingRequest {
+	if m != nil {
+		return m.StreamingRequest
+	}
+	return nil
+}
+
+func (m *StreamingRecognizeRequest) GetStreamingConfig() *StreamingRecognitionConfig {
+	if x, ok := m.GetStreamingRequest().(*StreamingRecognizeRequest_StreamingConfig); ok {
+		return x.StreamingConfig
+	}
+	return nil
+}
+
+func (m *StreamingRecognizeRequest) GetAudioContent() []byte {
+	if x, ok := m.GetStreamingRequest().(*StreamingRecognizeRequest_AudioContent); ok {
+		return x.AudioContent
+	}
+	return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*StreamingRecognizeRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _StreamingRecognizeRequest_OneofMarshaler, _StreamingRecognizeRequest_OneofUnmarshaler, _StreamingRecognizeRequest_OneofSizer, []interface{}{
+		(*StreamingRecognizeRequest_StreamingConfig)(nil),
+		(*StreamingRecognizeRequest_AudioContent)(nil),
+	}
+}
+
+func _StreamingRecognizeRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*StreamingRecognizeRequest)
+	// streaming_request
+	switch x := m.StreamingRequest.(type) {
+	case *StreamingRecognizeRequest_StreamingConfig:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		if err := b.EncodeMessage(x.StreamingConfig); err != nil {
+			return err
+		}
+	case *StreamingRecognizeRequest_AudioContent:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.AudioContent)
+	case nil:
+	default:
+		return fmt.Errorf("StreamingRecognizeRequest.StreamingRequest has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _StreamingRecognizeRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*StreamingRecognizeRequest)
+	switch tag {
+	case 1: // streaming_request.streaming_config
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		msg := new(StreamingRecognitionConfig)
+		err := b.DecodeMessage(msg)
+		m.StreamingRequest = &StreamingRecognizeRequest_StreamingConfig{msg}
+		return true, err
+	case 2: // streaming_request.audio_content
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.StreamingRequest = &StreamingRecognizeRequest_AudioContent{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _StreamingRecognizeRequest_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*StreamingRecognizeRequest)
+	// streaming_request
+	switch x := m.StreamingRequest.(type) {
+	case *StreamingRecognizeRequest_StreamingConfig:
+		s := proto.Size(x.StreamingConfig)
+		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(s))
+		n += s
+	case *StreamingRecognizeRequest_AudioContent:
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.AudioContent)))
+		n += len(x.AudioContent)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// Provides information to the recognizer that specifies how to process the
+// request.
+type StreamingRecognitionConfig struct {
+	// *Required* Provides information to the recognizer that specifies how to
+	// process the request.
+	Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
+	// *Optional* If `false` or omitted, the recognizer will perform continuous
+	// recognition (continuing to wait for and process audio even if the user
+	// pauses speaking) until the client closes the input stream (gRPC API) or
+	// until the maximum time limit has been reached. May return multiple
+	// `StreamingRecognitionResult`s with the `is_final` flag set to `true`.
+	//
+	// If `true`, the recognizer will detect a single spoken utterance. When it
+	// detects that the user has paused or stopped speaking, it will return an
+	// `END_OF_SINGLE_UTTERANCE` event and cease recognition. It will return no
+	// more than one `StreamingRecognitionResult` with the `is_final` flag set to
+	// `true`.
+	SingleUtterance bool `protobuf:"varint,2,opt,name=single_utterance,json=singleUtterance" json:"single_utterance,omitempty"`
+	// *Optional* If `true`, interim results (tentative hypotheses) may be
+	// returned as they become available (these interim results are indicated with
+	// the `is_final=false` flag).
+	// If `false` or omitted, only `is_final=true` result(s) are returned.
+	InterimResults bool `protobuf:"varint,3,opt,name=interim_results,json=interimResults" json:"interim_results,omitempty"`
+}
+
+func (m *StreamingRecognitionConfig) Reset()                    { *m = StreamingRecognitionConfig{} }
+func (m *StreamingRecognitionConfig) String() string            { return proto.CompactTextString(m) }
+func (*StreamingRecognitionConfig) ProtoMessage()               {}
+func (*StreamingRecognitionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *StreamingRecognitionConfig) GetConfig() *RecognitionConfig {
+	if m != nil {
+		return m.Config
+	}
+	return nil
+}
+
+func (m *StreamingRecognitionConfig) GetSingleUtterance() bool {
+	if m != nil {
+		return m.SingleUtterance
+	}
+	return false
+}
+
+func (m *StreamingRecognitionConfig) GetInterimResults() bool {
+	if m != nil {
+		return m.InterimResults
+	}
+	return false
+}
+
+// Provides information to the recognizer that specifies how to process the
+// request.
+type RecognitionConfig struct {
+	// *Required* Encoding of audio data sent in all `RecognitionAudio` messages.
+	Encoding RecognitionConfig_AudioEncoding `protobuf:"varint,1,opt,name=encoding,enum=google.cloud.speech.v1.RecognitionConfig_AudioEncoding" json:"encoding,omitempty"`
+	// *Required* Sample rate in Hertz of the audio data sent in all
+	// `RecognitionAudio` messages. Valid values are: 8000-48000.
+	// 16000 is optimal. For best results, set the sampling rate of the audio
+	// source to 16000 Hz. If that's not possible, use the native sample rate of
+	// the audio source (instead of re-sampling).
+	SampleRateHertz int32 `protobuf:"varint,2,opt,name=sample_rate_hertz,json=sampleRateHertz" json:"sample_rate_hertz,omitempty"`
+	// *Required* The language of the supplied audio as a
+	// [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag.
+	// Example: "en-US".
+	// See [Language Support](https://cloud.google.com/speech/docs/languages)
+	// for a list of the currently supported language codes.
+	LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
+	// *Optional* Maximum number of recognition hypotheses to be returned.
+	// Specifically, the maximum number of `SpeechRecognitionAlternative` messages
+	// within each `SpeechRecognitionResult`.
+	// The server may return fewer than `max_alternatives`.
+	// Valid values are `0`-`30`. A value of `0` or `1` will return a maximum of
+	// one. If omitted, will return a maximum of one.
+	MaxAlternatives int32 `protobuf:"varint,4,opt,name=max_alternatives,json=maxAlternatives" json:"max_alternatives,omitempty"`
+	// *Optional* If set to `true`, the server will attempt to filter out
+	// profanities, replacing all but the initial character in each filtered word
+	// with asterisks, e.g. "f***". If set to `false` or omitted, profanities
+	// won't be filtered out.
+	ProfanityFilter bool `protobuf:"varint,5,opt,name=profanity_filter,json=profanityFilter" json:"profanity_filter,omitempty"`
+	// *Optional* A means to provide context to assist the speech recognition.
+	SpeechContexts []*SpeechContext `protobuf:"bytes,6,rep,name=speech_contexts,json=speechContexts" json:"speech_contexts,omitempty"`
+}
+
+func (m *RecognitionConfig) Reset()                    { *m = RecognitionConfig{} }
+func (m *RecognitionConfig) String() string            { return proto.CompactTextString(m) }
+func (*RecognitionConfig) ProtoMessage()               {}
+func (*RecognitionConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+func (m *RecognitionConfig) GetEncoding() RecognitionConfig_AudioEncoding {
+	if m != nil {
+		return m.Encoding
+	}
+	return RecognitionConfig_ENCODING_UNSPECIFIED
+}
+
+func (m *RecognitionConfig) GetSampleRateHertz() int32 {
+	if m != nil {
+		return m.SampleRateHertz
+	}
+	return 0
+}
+
+func (m *RecognitionConfig) GetLanguageCode() string {
+	if m != nil {
+		return m.LanguageCode
+	}
+	return ""
+}
+
+func (m *RecognitionConfig) GetMaxAlternatives() int32 {
+	if m != nil {
+		return m.MaxAlternatives
+	}
+	return 0
+}
+
+func (m *RecognitionConfig) GetProfanityFilter() bool {
+	if m != nil {
+		return m.ProfanityFilter
+	}
+	return false
+}
+
+func (m *RecognitionConfig) GetSpeechContexts() []*SpeechContext {
+	if m != nil {
+		return m.SpeechContexts
+	}
+	return nil
+}
+
+// Provides "hints" to the speech recognizer to favor specific words and phrases
+// in the results.
+type SpeechContext struct {
+	// *Optional* A list of strings containing words and phrases "hints" so that
+	// the speech recognition is more likely to recognize them. This can be used
+	// to improve the accuracy for specific words and phrases, for example, if
+	// specific commands are typically spoken by the user. This can also be used
+	// to add additional words to the vocabulary of the recognizer. See
+	// [usage limits](https://cloud.google.com/speech/limits#content).
+	Phrases []string `protobuf:"bytes,1,rep,name=phrases" json:"phrases,omitempty"`
+}
+
+func (m *SpeechContext) Reset()                    { *m = SpeechContext{} }
+func (m *SpeechContext) String() string            { return proto.CompactTextString(m) }
+func (*SpeechContext) ProtoMessage()               {}
+func (*SpeechContext) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+func (m *SpeechContext) GetPhrases() []string {
+	if m != nil {
+		return m.Phrases
+	}
+	return nil
+}
+
+// Contains audio data in the encoding specified in the `RecognitionConfig`.
+// Either `content` or `uri` must be supplied. Supplying both or neither
+// returns [google.rpc.Code.INVALID_ARGUMENT][]. See
+// [audio limits](https://cloud.google.com/speech/limits#content).
+type RecognitionAudio struct {
+	// Types that are valid to be assigned to AudioSource:
+	//	*RecognitionAudio_Content
+	//	*RecognitionAudio_Uri
+	AudioSource isRecognitionAudio_AudioSource `protobuf_oneof:"audio_source"`
+}
+
+func (m *RecognitionAudio) Reset()                    { *m = RecognitionAudio{} }
+func (m *RecognitionAudio) String() string            { return proto.CompactTextString(m) }
+func (*RecognitionAudio) ProtoMessage()               {}
+func (*RecognitionAudio) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+
+type isRecognitionAudio_AudioSource interface {
+	isRecognitionAudio_AudioSource()
+}
+
+type RecognitionAudio_Content struct {
+	Content []byte `protobuf:"bytes,1,opt,name=content,proto3,oneof"`
+}
+type RecognitionAudio_Uri struct {
+	Uri string `protobuf:"bytes,2,opt,name=uri,oneof"`
+}
+
+func (*RecognitionAudio_Content) isRecognitionAudio_AudioSource() {}
+func (*RecognitionAudio_Uri) isRecognitionAudio_AudioSource()     {}
+
+func (m *RecognitionAudio) GetAudioSource() isRecognitionAudio_AudioSource {
+	if m != nil {
+		return m.AudioSource
+	}
+	return nil
+}
+
+func (m *RecognitionAudio) GetContent() []byte {
+	if x, ok := m.GetAudioSource().(*RecognitionAudio_Content); ok {
+		return x.Content
+	}
+	return nil
+}
+
+func (m *RecognitionAudio) GetUri() string {
+	if x, ok := m.GetAudioSource().(*RecognitionAudio_Uri); ok {
+		return x.Uri
+	}
+	return ""
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*RecognitionAudio) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+	return _RecognitionAudio_OneofMarshaler, _RecognitionAudio_OneofUnmarshaler, _RecognitionAudio_OneofSizer, []interface{}{
+		(*RecognitionAudio_Content)(nil),
+		(*RecognitionAudio_Uri)(nil),
+	}
+}
+
+func _RecognitionAudio_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+	m := msg.(*RecognitionAudio)
+	// audio_source
+	switch x := m.AudioSource.(type) {
+	case *RecognitionAudio_Content:
+		b.EncodeVarint(1<<3 | proto.WireBytes)
+		b.EncodeRawBytes(x.Content)
+	case *RecognitionAudio_Uri:
+		b.EncodeVarint(2<<3 | proto.WireBytes)
+		b.EncodeStringBytes(x.Uri)
+	case nil:
+	default:
+		return fmt.Errorf("RecognitionAudio.AudioSource has unexpected type %T", x)
+	}
+	return nil
+}
+
+func _RecognitionAudio_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+	m := msg.(*RecognitionAudio)
+	switch tag {
+	case 1: // audio_source.content
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeRawBytes(true)
+		m.AudioSource = &RecognitionAudio_Content{x}
+		return true, err
+	case 2: // audio_source.uri
+		if wire != proto.WireBytes {
+			return true, proto.ErrInternalBadWireType
+		}
+		x, err := b.DecodeStringBytes()
+		m.AudioSource = &RecognitionAudio_Uri{x}
+		return true, err
+	default:
+		return false, nil
+	}
+}
+
+func _RecognitionAudio_OneofSizer(msg proto.Message) (n int) {
+	m := msg.(*RecognitionAudio)
+	// audio_source
+	switch x := m.AudioSource.(type) {
+	case *RecognitionAudio_Content:
+		n += proto.SizeVarint(1<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Content)))
+		n += len(x.Content)
+	case *RecognitionAudio_Uri:
+		n += proto.SizeVarint(2<<3 | proto.WireBytes)
+		n += proto.SizeVarint(uint64(len(x.Uri)))
+		n += len(x.Uri)
+	case nil:
+	default:
+		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+	}
+	return n
+}
+
+// The only message returned to the client by the `Recognize` method. It
+// contains the result as zero or more sequential `SpeechRecognitionResult`
+// messages.
+type RecognizeResponse struct {
+	// *Output-only* Sequential list of transcription results corresponding to
+	// sequential portions of audio.
+	Results []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"`
+}
+
+func (m *RecognizeResponse) Reset()                    { *m = RecognizeResponse{} }
+func (m *RecognizeResponse) String() string            { return proto.CompactTextString(m) }
+func (*RecognizeResponse) ProtoMessage()               {}
+func (*RecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+
+func (m *RecognizeResponse) GetResults() []*SpeechRecognitionResult {
+	if m != nil {
+		return m.Results
+	}
+	return nil
+}
+
+// The only message returned to the client by the `LongRunningRecognize` method.
+// It contains the result as zero or more sequential `SpeechRecognitionResult`
+// messages. It is included in the `result.response` field of the `Operation`
+// returned by the `GetOperation` call of the `google::longrunning::Operations`
+// service.
+type LongRunningRecognizeResponse struct {
+	// *Output-only* Sequential list of transcription results corresponding to
+	// sequential portions of audio.
+	Results []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"`
+}
+
+func (m *LongRunningRecognizeResponse) Reset()                    { *m = LongRunningRecognizeResponse{} }
+func (m *LongRunningRecognizeResponse) String() string            { return proto.CompactTextString(m) }
+func (*LongRunningRecognizeResponse) ProtoMessage()               {}
+func (*LongRunningRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+
+func (m *LongRunningRecognizeResponse) GetResults() []*SpeechRecognitionResult {
+	if m != nil {
+		return m.Results
+	}
+	return nil
+}
+
+// Describes the progress of a long-running `LongRunningRecognize` call. It is
+// included in the `metadata` field of the `Operation` returned by the
+// `GetOperation` call of the `google::longrunning::Operations` service.
+type LongRunningRecognizeMetadata struct {
+	// Approximate percentage of audio processed thus far. Guaranteed to be 100
+	// when the audio is fully processed and the results are available.
+	ProgressPercent int32 `protobuf:"varint,1,opt,name=progress_percent,json=progressPercent" json:"progress_percent,omitempty"`
+	// Time when the request was received.
+	StartTime *google_protobuf4.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
+	// Time of the most recent processing update.
+	LastUpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"`
+}
+
+func (m *LongRunningRecognizeMetadata) Reset()                    { *m = LongRunningRecognizeMetadata{} }
+func (m *LongRunningRecognizeMetadata) String() string            { return proto.CompactTextString(m) }
+func (*LongRunningRecognizeMetadata) ProtoMessage()               {}
+func (*LongRunningRecognizeMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+
+func (m *LongRunningRecognizeMetadata) GetProgressPercent() int32 {
+	if m != nil {
+		return m.ProgressPercent
+	}
+	return 0
+}
+
+func (m *LongRunningRecognizeMetadata) GetStartTime() *google_protobuf4.Timestamp {
+	if m != nil {
+		return m.StartTime
+	}
+	return nil
+}
+
+func (m *LongRunningRecognizeMetadata) GetLastUpdateTime() *google_protobuf4.Timestamp {
+	if m != nil {
+		return m.LastUpdateTime
+	}
+	return nil
+}
+
+// `StreamingRecognizeResponse` is the only message returned to the client by
+// `StreamingRecognize`. A series of one or more `StreamingRecognizeResponse`
+// messages are streamed back to the client.
+//
+// Here's an example of a series of ten `StreamingRecognizeResponse`s that might
+// be returned while processing audio:
+//
+// 1. results { alternatives { transcript: "tube" } stability: 0.01 }
+//
+// 2. results { alternatives { transcript: "to be a" } stability: 0.01 }
+//
+// 3. results { alternatives { transcript: "to be" } stability: 0.9 }
+//    results { alternatives { transcript: " or not to be" } stability: 0.01 }
+//
+// 4. results { alternatives { transcript: "to be or not to be"
+//                             confidence: 0.92 }
+//              alternatives { transcript: "to bee or not to bee" }
+//              is_final: true }
+//
+// 5. results { alternatives { transcript: " that's" } stability: 0.01 }
+//
+// 6. results { alternatives { transcript: " that is" } stability: 0.9 }
+//    results { alternatives { transcript: " the question" } stability: 0.01 }
+//
+// 7. speech_event_type: END_OF_SINGLE_UTTERANCE
+//
+// 8. results { alternatives { transcript: " that is the question"
+//                             confidence: 0.98 }
+//              alternatives { transcript: " that was the question" }
+//              is_final: true }
+//
+// Notes:
+//
+// - Only two of the above responses #4 and #8 contain final results; they are
+//   indicated by `is_final: true`. Concatenating these together generates the
+//   full transcript: "to be or not to be that is the question".
+//
+// - The others contain interim `results`. #3 and #6 contain two interim
+//   `results`: the first portion has a high stability and is less likely to
+//   change; the second portion has a low stability and is very likely to
+//   change. A UI designer might choose to show only high stability `results`.
+//
+// - The specific `stability` and `confidence` values shown above are only for
+//   illustrative purposes. Actual values may vary.
+//
+// - In each response, only one of these fields will be set:
+//     `error`,
+//     `speech_event_type`, or
+//     one or more (repeated) `results`.
+type StreamingRecognizeResponse struct {
+	// *Output-only* If set, returns a [google.rpc.Status][] message that
+	// specifies the error for the operation.
+	Error *google_rpc.Status `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"`
+	// *Output-only* This repeated list contains zero or more results that
+	// correspond to consecutive portions of the audio currently being processed.
+	// It contains zero or one `is_final=true` result (the newly settled portion),
+	// followed by zero or more `is_final=false` results.
+	Results []*StreamingRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"`
+	// *Output-only* Indicates the type of speech event.
+	SpeechEventType StreamingRecognizeResponse_SpeechEventType `protobuf:"varint,4,opt,name=speech_event_type,json=speechEventType,enum=google.cloud.speech.v1.StreamingRecognizeResponse_SpeechEventType" json:"speech_event_type,omitempty"`
+}
+
+func (m *StreamingRecognizeResponse) Reset()                    { *m = StreamingRecognizeResponse{} }
+func (m *StreamingRecognizeResponse) String() string            { return proto.CompactTextString(m) }
+func (*StreamingRecognizeResponse) ProtoMessage()               {}
+func (*StreamingRecognizeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+
+func (m *StreamingRecognizeResponse) GetError() *google_rpc.Status {
+	if m != nil {
+		return m.Error
+	}
+	return nil
+}
+
+func (m *StreamingRecognizeResponse) GetResults() []*StreamingRecognitionResult {
+	if m != nil {
+		return m.Results
+	}
+	return nil
+}
+
+func (m *StreamingRecognizeResponse) GetSpeechEventType() StreamingRecognizeResponse_SpeechEventType {
+	if m != nil {
+		return m.SpeechEventType
+	}
+	return StreamingRecognizeResponse_SPEECH_EVENT_UNSPECIFIED
+}
+
+// A streaming speech recognition result corresponding to a portion of the audio
+// that is currently being processed.
+type StreamingRecognitionResult struct {
+	// *Output-only* May contain one or more recognition hypotheses (up to the
+	// maximum specified in `max_alternatives`).
+	Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"`
+	// *Output-only* If `false`, this `StreamingRecognitionResult` represents an
+	// interim result that may change. If `true`, this is the final time the
+	// speech service will return this particular `StreamingRecognitionResult`,
+	// the recognizer will not return any further hypotheses for this portion of
+	// the transcript and corresponding audio.
+	IsFinal bool `protobuf:"varint,2,opt,name=is_final,json=isFinal" json:"is_final,omitempty"`
+	// *Output-only* An estimate of the likelihood that the recognizer will not
+	// change its guess about this interim result. Values range from 0.0
+	// (completely unstable) to 1.0 (completely stable).
+	// This field is only provided for interim results (`is_final=false`).
+	// The default of 0.0 is a sentinel value indicating `stability` was not set.
+	Stability float32 `protobuf:"fixed32,3,opt,name=stability" json:"stability,omitempty"`
+}
+
+func (m *StreamingRecognitionResult) Reset()                    { *m = StreamingRecognitionResult{} }
+func (m *StreamingRecognitionResult) String() string            { return proto.CompactTextString(m) }
+func (*StreamingRecognitionResult) ProtoMessage()               {}
+func (*StreamingRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+
+func (m *StreamingRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative {
+	if m != nil {
+		return m.Alternatives
+	}
+	return nil
+}
+
+func (m *StreamingRecognitionResult) GetIsFinal() bool {
+	if m != nil {
+		return m.IsFinal
+	}
+	return false
+}
+
+func (m *StreamingRecognitionResult) GetStability() float32 {
+	if m != nil {
+		return m.Stability
+	}
+	return 0
+}
+
+// A speech recognition result corresponding to a portion of the audio.
+type SpeechRecognitionResult struct {
+	// *Output-only* May contain one or more recognition hypotheses (up to the
+	// maximum specified in `max_alternatives`).
+	Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"`
+}
+
+func (m *SpeechRecognitionResult) Reset()                    { *m = SpeechRecognitionResult{} }
+func (m *SpeechRecognitionResult) String() string            { return proto.CompactTextString(m) }
+func (*SpeechRecognitionResult) ProtoMessage()               {}
+func (*SpeechRecognitionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+
+func (m *SpeechRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternative {
+	if m != nil {
+		return m.Alternatives
+	}
+	return nil
+}
+
+// Alternative hypotheses (a.k.a. n-best list).
+type SpeechRecognitionAlternative struct {
+	// *Output-only* Transcript text representing the words that the user spoke.
+	Transcript string `protobuf:"bytes,1,opt,name=transcript" json:"transcript,omitempty"`
+	// *Output-only* The confidence estimate between 0.0 and 1.0. A higher number
+	// indicates an estimated greater likelihood that the recognized words are
+	// correct. This field is typically provided only for the top hypothesis, and
+	// only for `is_final=true` results. Clients should not rely on the
+	// `confidence` field as it is not guaranteed to be accurate, or even set, in
+	// any of the results.
+	// The default of 0.0 is a sentinel value indicating `confidence` was not set.
+	Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"`
+}
+
+func (m *SpeechRecognitionAlternative) Reset()                    { *m = SpeechRecognitionAlternative{} }
+func (m *SpeechRecognitionAlternative) String() string            { return proto.CompactTextString(m) }
+func (*SpeechRecognitionAlternative) ProtoMessage()               {}
+func (*SpeechRecognitionAlternative) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+
+func (m *SpeechRecognitionAlternative) GetTranscript() string {
+	if m != nil {
+		return m.Transcript
+	}
+	return ""
+}
+
+func (m *SpeechRecognitionAlternative) GetConfidence() float32 {
+	if m != nil {
+		return m.Confidence
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*RecognizeRequest)(nil), "google.cloud.speech.v1.RecognizeRequest")
+	proto.RegisterType((*LongRunningRecognizeRequest)(nil), "google.cloud.speech.v1.LongRunningRecognizeRequest")
+	proto.RegisterType((*StreamingRecognizeRequest)(nil), "google.cloud.speech.v1.StreamingRecognizeRequest")
+	proto.RegisterType((*StreamingRecognitionConfig)(nil), "google.cloud.speech.v1.StreamingRecognitionConfig")
+	proto.RegisterType((*RecognitionConfig)(nil), "google.cloud.speech.v1.RecognitionConfig")
+	proto.RegisterType((*SpeechContext)(nil), "google.cloud.speech.v1.SpeechContext")
+	proto.RegisterType((*RecognitionAudio)(nil), "google.cloud.speech.v1.RecognitionAudio")
+	proto.RegisterType((*RecognizeResponse)(nil), "google.cloud.speech.v1.RecognizeResponse")
+	proto.RegisterType((*LongRunningRecognizeResponse)(nil), "google.cloud.speech.v1.LongRunningRecognizeResponse")
+	proto.RegisterType((*LongRunningRecognizeMetadata)(nil), "google.cloud.speech.v1.LongRunningRecognizeMetadata")
+	proto.RegisterType((*StreamingRecognizeResponse)(nil), "google.cloud.speech.v1.StreamingRecognizeResponse")
+	proto.RegisterType((*StreamingRecognitionResult)(nil), "google.cloud.speech.v1.StreamingRecognitionResult")
+	proto.RegisterType((*SpeechRecognitionResult)(nil), "google.cloud.speech.v1.SpeechRecognitionResult")
+	proto.RegisterType((*SpeechRecognitionAlternative)(nil), "google.cloud.speech.v1.SpeechRecognitionAlternative")
+	proto.RegisterEnum("google.cloud.speech.v1.RecognitionConfig_AudioEncoding", RecognitionConfig_AudioEncoding_name, RecognitionConfig_AudioEncoding_value)
+	proto.RegisterEnum("google.cloud.speech.v1.StreamingRecognizeResponse_SpeechEventType", StreamingRecognizeResponse_SpeechEventType_name, StreamingRecognizeResponse_SpeechEventType_value)
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for Speech service
+
+type SpeechClient interface {
+	// Performs synchronous speech recognition: receive results after all audio
+	// has been sent and processed.
+	Recognize(ctx context.Context, in *RecognizeRequest, opts ...grpc.CallOption) (*RecognizeResponse, error)
+	// Performs asynchronous speech recognition: receive results via the
+	// google.longrunning.Operations interface. Returns either an
+	// `Operation.error` or an `Operation.response` which contains
+	// a `LongRunningRecognizeResponse` message.
+	LongRunningRecognize(ctx context.Context, in *LongRunningRecognizeRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
+	// Performs bidirectional streaming speech recognition: receive results while
+	// sending audio. This method is only available via the gRPC API (not REST).
+	StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error)
+}
+
+type speechClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewSpeechClient(cc *grpc.ClientConn) SpeechClient {
+	return &speechClient{cc}
+}
+
+func (c *speechClient) Recognize(ctx context.Context, in *RecognizeRequest, opts ...grpc.CallOption) (*RecognizeResponse, error) {
+	out := new(RecognizeResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.speech.v1.Speech/Recognize", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *speechClient) LongRunningRecognize(ctx context.Context, in *LongRunningRecognizeRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
+	out := new(google_longrunning.Operation)
+	err := grpc.Invoke(ctx, "/google.cloud.speech.v1.Speech/LongRunningRecognize", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *speechClient) StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error) {
+	stream, err := grpc.NewClientStream(ctx, &_Speech_serviceDesc.Streams[0], c.cc, "/google.cloud.speech.v1.Speech/StreamingRecognize", opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &speechStreamingRecognizeClient{stream}
+	return x, nil
+}
+
+type Speech_StreamingRecognizeClient interface {
+	Send(*StreamingRecognizeRequest) error
+	Recv() (*StreamingRecognizeResponse, error)
+	grpc.ClientStream
+}
+
+type speechStreamingRecognizeClient struct {
+	grpc.ClientStream
+}
+
+func (x *speechStreamingRecognizeClient) Send(m *StreamingRecognizeRequest) error {
+	return x.ClientStream.SendMsg(m)
+}
+
+func (x *speechStreamingRecognizeClient) Recv() (*StreamingRecognizeResponse, error) {
+	m := new(StreamingRecognizeResponse)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+// Server API for Speech service
+
+type SpeechServer interface {
+	// Performs synchronous speech recognition: receive results after all audio
+	// has been sent and processed.
+	Recognize(context.Context, *RecognizeRequest) (*RecognizeResponse, error)
+	// Performs asynchronous speech recognition: receive results via the
+	// google.longrunning.Operations interface. Returns either an
+	// `Operation.error` or an `Operation.response` which contains
+	// a `LongRunningRecognizeResponse` message.
+	LongRunningRecognize(context.Context, *LongRunningRecognizeRequest) (*google_longrunning.Operation, error)
+	// Performs bidirectional streaming speech recognition: receive results while
+	// sending audio. This method is only available via the gRPC API (not REST).
+	StreamingRecognize(Speech_StreamingRecognizeServer) error
+}
+
+func RegisterSpeechServer(s *grpc.Server, srv SpeechServer) {
+	s.RegisterService(&_Speech_serviceDesc, srv)
+}
+
+func _Speech_Recognize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(RecognizeRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SpeechServer).Recognize(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.speech.v1.Speech/Recognize",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SpeechServer).Recognize(ctx, req.(*RecognizeRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Speech_LongRunningRecognize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(LongRunningRecognizeRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SpeechServer).LongRunningRecognize(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.speech.v1.Speech/LongRunningRecognize",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SpeechServer).LongRunningRecognize(ctx, req.(*LongRunningRecognizeRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Speech_StreamingRecognize_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(SpeechServer).StreamingRecognize(&speechStreamingRecognizeServer{stream})
+}
+
+type Speech_StreamingRecognizeServer interface {
+	Send(*StreamingRecognizeResponse) error
+	Recv() (*StreamingRecognizeRequest, error)
+	grpc.ServerStream
+}
+
+type speechStreamingRecognizeServer struct {
+	grpc.ServerStream
+}
+
+func (x *speechStreamingRecognizeServer) Send(m *StreamingRecognizeResponse) error {
+	return x.ServerStream.SendMsg(m)
+}
+
+func (x *speechStreamingRecognizeServer) Recv() (*StreamingRecognizeRequest, error) {
+	m := new(StreamingRecognizeRequest)
+	if err := x.ServerStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+var _Speech_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.speech.v1.Speech",
+	HandlerType: (*SpeechServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "Recognize",
+			Handler:    _Speech_Recognize_Handler,
+		},
+		{
+			MethodName: "LongRunningRecognize",
+			Handler:    _Speech_LongRunningRecognize_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "StreamingRecognize",
+			Handler:       _Speech_StreamingRecognize_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+	},
+	Metadata: "google/cloud/speech/v1/cloud_speech.proto",
+}
+
+func init() { proto.RegisterFile("google/cloud/speech/v1/cloud_speech.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 1212 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4f, 0x6f, 0x1b, 0x45,
+	0x14, 0xcf, 0xc6, 0x75, 0x12, 0xbf, 0xe6, 0xcf, 0x66, 0xa8, 0x5a, 0xc7, 0x0d, 0x6d, 0xb5, 0xa5,
+	0x22, 0xe9, 0xc1, 0x26, 0x2e, 0x02, 0x51, 0x10, 0x92, 0xed, 0x6c, 0x62, 0x4b, 0x8e, 0x13, 0x8d,
+	0x1d, 0x5a, 0x38, 0x74, 0x34, 0x5d, 0x4f, 0xb6, 0x2b, 0xd9, 0xb3, 0xcb, 0xcc, 0x6c, 0xd4, 0xf4,
+	0x82, 0xe0, 0xca, 0x11, 0xc1, 0x99, 0x13, 0x57, 0x0e, 0x5c, 0xf8, 0x0c, 0x1c, 0xe1, 0x2b, 0x70,
+	0xe5, 0x3b, 0xa0, 0x9d, 0xd9, 0x75, 0x6c, 0x37, 0x6e, 0x53, 0xa9, 0x48, 0xdc, 0x3c, 0xbf, 0xf7,
+	0x7b, 0x6f, 0x7e, 0xf3, 0xf6, 0xbd, 0x37, 0x63, 0xd8, 0xf6, 0xc3, 0xd0, 0x1f, 0xb0, 0x8a, 0x37,
+	0x08, 0xe3, 0x7e, 0x45, 0x46, 0x8c, 0x79, 0xcf, 0x2a, 0xa7, 0x3b, 0x66, 0x4d, 0xcc, 0xba, 0x1c,
+	0x89, 0x50, 0x85, 0xe8, 0xba, 0xa1, 0x96, 0xb5, 0xa9, 0x9c, 0x9a, 0x4e, 0x77, 0x4a, 0x9b, 0x69,
+	0x08, 0x1a, 0x05, 0x15, 0xca, 0x79, 0xa8, 0xa8, 0x0a, 0x42, 0x2e, 0x8d, 0x57, 0xe9, 0x6e, 0x6a,
+	0x1d, 0x84, 0xdc, 0x17, 0x31, 0xe7, 0x01, 0xf7, 0x2b, 0x61, 0xc4, 0xc4, 0x04, 0x69, 0x23, 0x25,
+	0xe9, 0xd5, 0xd3, 0xf8, 0xa4, 0x42, 0xf9, 0x59, 0x6a, 0xba, 0x35, 0x6d, 0xea, 0xc7, 0xc6, 0x37,
+	0xb5, 0xdf, 0x9e, 0xb6, 0xab, 0x60, 0xc8, 0xa4, 0xa2, 0xc3, 0x28, 0x25, 0xdc, 0x48, 0x09, 0x22,
+	0xf2, 0x2a, 0x52, 0x51, 0x15, 0xa7, 0x9b, 0x3a, 0x3f, 0x5a, 0x60, 0x63, 0xe6, 0x85, 0x3e, 0x0f,
+	0x5e, 0x30, 0xcc, 0xbe, 0x8e, 0x99, 0x54, 0xa8, 0x06, 0x0b, 0x5e, 0xc8, 0x4f, 0x02, 0xbf, 0x68,
+	0xdd, 0xb1, 0xb6, 0xae, 0x56, 0xb7, 0xcb, 0x17, 0x9f, 0xba, 0x9c, 0x7a, 0x26, 0x4a, 0x1a, 0xda,
+	0x01, 0xa7, 0x8e, 0xe8, 0x73, 0xc8, 0xd3, 0xb8, 0x1f, 0x84, 0xc5, 0x79, 0x1d, 0x61, 0xeb, 0x12,
+	0x11, 0x6a, 0x09, 0x1f, 0x1b, 0x37, 0xe7, 0x67, 0x0b, 0x6e, 0xb6, 0x43, 0xee, 0x63, 0x93, 0xad,
+	0xff, 0xa3, 0xc4, 0xdf, 0x2d, 0xd8, 0xe8, 0x2a, 0xc1, 0xe8, 0xf0, 0x22, 0x81, 0x04, 0x6c, 0x99,
+	0x19, 0xc9, 0x84, 0xd4, 0xea, 0xac, 0x8d, 0xa6, 0x83, 0x9d, 0x6b, 0x6e, 0xce, 0xe1, 0xb5, 0x51,
+	0x34, 0x03, 0xa1, 0x7b, 0xb0, 0xa2, 0x75, 0x24, 0xc1, 0x15, 0xe3, 0x4a, 0x1f, 0x63, 0xb9, 0x39,
+	0x87, 0x97, 0x35, 0xdc, 0x30, 0x68, 0xfd, 0x1d, 0x58, 0x3f, 0xd7, 0x21, 0x8c, 0x38, 0xe7, 0x37,
+	0x0b, 0x4a, 0xb3, 0x77, 0x7b, 0x1b, 0xc9, 0xdd, 0x06, 0x5b, 0x06, 0xdc, 0x1f, 0x30, 0x12, 0x2b,
+	0xc5, 0x04, 0xe5, 0x1e, 0xd3, 0x02, 0x97, 0xf0, 0x9a, 0xc1, 0x8f, 0x33, 0x18, 0xbd, 0x0f, 0x6b,
+	0x01, 0x57, 0x4c, 0x04, 0x43, 0x22, 0x98, 0x8c, 0x07, 0x4a, 0x16, 0x73, 0x9a, 0xb9, 0x9a, 0xc2,
+	0xd8, 0xa0, 0xce, 0x3f, 0x39, 0x58, 0x7f, 0x59, 0x6c, 0x17, 0x96, 0x18, 0xf7, 0xc2, 0x7e, 0xc0,
+	0x8d, 0xdc, 0xd5, 0xea, 0xc7, 0x97, 0x96, 0x5b, 0xd6, 0x1f, 0xd4, 0x4d, 0xdd, 0xf1, 0x28, 0x10,
+	0xba, 0x0f, 0xeb, 0x92, 0x0e, 0xa3, 0x01, 0x23, 0x82, 0x2a, 0x46, 0x9e, 0x31, 0xa1, 0x5e, 0x68,
+	0xfd, 0x79, 0xbc, 0x66, 0x0c, 0x98, 0x2a, 0xd6, 0x4c, 0x60, 0x74, 0x17, 0x56, 0x06, 0x94, 0xfb,
+	0x31, 0xf5, 0x19, 0xf1, 0xc2, 0x3e, 0xd3, 0xea, 0x0b, 0x78, 0x39, 0x03, 0x1b, 0x61, 0x9f, 0x25,
+	0xf9, 0x18, 0xd2, 0xe7, 0x84, 0x0e, 0x14, 0x13, 0x9c, 0xaa, 0xe0, 0x94, 0xc9, 0xe2, 0x15, 0x13,
+	0x6f, 0x48, 0x9f, 0xd7, 0xc6, 0xe0, 0x84, 0x1a, 0x89, 0xf0, 0x84, 0xf2, 0x40, 0x9d, 0x91, 0x93,
+	0x20, 0x31, 0x15, 0xf3, 0x26, 0x75, 0x23, 0x7c, 0x4f, 0xc3, 0xa8, 0x03, 0x6b, 0xe6, 0x74, 0xa6,
+	0x08, 0x9e, 0x2b, 0x59, 0x5c, 0xb8, 0x93, 0xdb, 0xba, 0x5a, 0xbd, 0x37, 0xb3, 0xc6, 0xf4, 0xaf,
+	0x86, 0x61, 0xe3, 0x55, 0x39, 0xbe, 0x94, 0xce, 0xf7, 0x16, 0xac, 0x4c, 0xa4, 0x04, 0x15, 0xe1,
+	0x9a, 0xdb, 0x69, 0x1c, 0xee, 0xb6, 0x3a, 0xfb, 0xe4, 0xb8, 0xd3, 0x3d, 0x72, 0x1b, 0xad, 0xbd,
+	0x96, 0xbb, 0x6b, 0xcf, 0xa1, 0x65, 0x58, 0x6a, 0xb7, 0x3a, 0x6e, 0x0d, 0xef, 0x7c, 0x64, 0x5b,
+	0x68, 0x09, 0xae, 0xec, 0xb5, 0x6b, 0x0d, 0x7b, 0x1e, 0x15, 0x20, 0x7f, 0x70, 0xdc, 0xae, 0x3d,
+	0xb2, 0x73, 0x68, 0x11, 0x72, 0xb5, 0x03, 0x6c, 0x5f, 0x41, 0x00, 0x0b, 0xb5, 0x03, 0x4c, 0x1e,
+	0xd5, 0xed, 0x7c, 0xe2, 0x77, 0xb8, 0xbf, 0x4f, 0x0e, 0x8f, 0x8e, 0xbb, 0xf6, 0x02, 0x2a, 0xc1,
+	0xf5, 0xee, 0x91, 0xeb, 0x3e, 0x26, 0x8f, 0x5a, 0xbd, 0x26, 0x69, 0xba, 0xb5, 0x5d, 0x17, 0x93,
+	0xfa, 0x97, 0x3d, 0xd7, 0x5e, 0x74, 0xb6, 0x61, 0x65, 0x42, 0x2e, 0x2a, 0xc2, 0x62, 0xf4, 0x4c,
+	0x50, 0xc9, 0x64, 0xd1, 0xba, 0x93, 0xdb, 0x2a, 0xe0, 0x6c, 0xe9, 0xe0, 0xd1, 0x14, 0x1b, 0xb5,
+	0x29, 0x2a, 0xc1, 0x62, 0xd6, 0x1a, 0x56, 0xda, 0x1a, 0x19, 0x80, 0x10, 0xe4, 0x62, 0x11, 0xe8,
+	0x2f, 0x5a, 0x68, 0xce, 0xe1, 0x64, 0x51, 0x5f, 0x05, 0xd3, 0x39, 0x44, 0x86, 0xb1, 0xf0, 0x98,
+	0xf3, 0x64, 0x54, 0x6d, 0x49, 0x57, 0xcb, 0x28, 0xe4, 0x92, 0xa1, 0x16, 0x2c, 0x66, 0x45, 0x3a,
+	0xaf, 0x33, 0x5d, 0x79, 0x75, 0xa6, 0xc7, 0x54, 0x99, 0x32, 0xc6, 0x99, 0xbf, 0x13, 0xc0, 0xe6,
+	0xc5, 0x13, 0xee, 0xed, 0x6f, 0xf5, 0x87, 0x75, 0xf1, 0x5e, 0x07, 0x4c, 0xd1, 0x3e, 0x55, 0x34,
+	0xad, 0x39, 0x5f, 0x30, 0x29, 0x49, 0xc4, 0x84, 0x97, 0x25, 0x2d, 0xaf, 0x6b, 0x4e, 0xe3, 0x47,
+	0x06, 0x46, 0x9f, 0x00, 0x48, 0x45, 0x85, 0x22, 0xc9, 0x1d, 0x93, 0xce, 0xce, 0x52, 0xa6, 0x2c,
+	0xbb, 0x80, 0xca, 0xbd, 0xec, 0x02, 0xc2, 0x05, 0xcd, 0x4e, 0xd6, 0x68, 0x17, 0xec, 0x01, 0x95,
+	0x8a, 0xc4, 0x51, 0x3f, 0xe9, 0x2a, 0x1d, 0x20, 0xf7, 0xda, 0x00, 0xab, 0x89, 0xcf, 0xb1, 0x76,
+	0x49, 0x40, 0xe7, 0xcf, 0xf9, 0x97, 0x87, 0xd7, 0x58, 0xda, 0xb6, 0x20, 0xcf, 0x84, 0x08, 0x45,
+	0x3a, 0xbb, 0x50, 0x16, 0x59, 0x44, 0x5e, 0xb9, 0xab, 0xaf, 0x3e, 0x6c, 0x08, 0xa8, 0x3d, 0x9d,
+	0xe0, 0x37, 0x9a, 0xcc, 0x53, 0x39, 0x46, 0x1c, 0xd6, 0xd3, 0x5e, 0x64, 0xa7, 0x8c, 0x2b, 0xa2,
+	0xce, 0x22, 0xa6, 0x5b, 0x7c, 0xb5, 0x5a, 0xbf, 0x6c, 0xdc, 0xf3, 0x63, 0xa4, 0xdf, 0xd4, 0x4d,
+	0x42, 0xf5, 0xce, 0x22, 0x86, 0xd3, 0x46, 0x1f, 0x01, 0x4e, 0x1b, 0xd6, 0xa6, 0x38, 0x68, 0x13,
+	0x8a, 0x49, 0x33, 0x35, 0x9a, 0xc4, 0xfd, 0xc2, 0xed, 0xf4, 0xa6, 0x1a, 0xf6, 0x26, 0xdc, 0x70,
+	0x3b, 0xbb, 0xe4, 0x70, 0x8f, 0x74, 0x5b, 0x9d, 0xfd, 0xb6, 0x4b, 0x8e, 0x7b, 0x3d, 0x17, 0xd7,
+	0x3a, 0x0d, 0xd7, 0xb6, 0x9c, 0x5f, 0x67, 0xdc, 0x08, 0xe6, 0x94, 0xe8, 0x31, 0x2c, 0x4f, 0x8c,
+	0x2e, 0x4b, 0xe7, 0xeb, 0xc3, 0x4b, 0x17, 0xe4, 0xd8, 0x80, 0xc3, 0x13, 0x91, 0xd0, 0x06, 0x2c,
+	0x05, 0x92, 0x9c, 0x04, 0x9c, 0x0e, 0xd2, 0x0b, 0x62, 0x31, 0x90, 0x7b, 0xc9, 0x12, 0x6d, 0x42,
+	0x52, 0x3b, 0x4f, 0x83, 0x41, 0xa0, 0xce, 0x74, 0x9d, 0xcc, 0xe3, 0x73, 0xc0, 0x91, 0x70, 0x63,
+	0x46, 0xdd, 0xff, 0x77, 0x6a, 0x9d, 0x27, 0xb0, 0xf9, 0x2a, 0x36, 0xba, 0x05, 0xa0, 0x04, 0xe5,
+	0xd2, 0x13, 0x41, 0x64, 0x3a, 0xa8, 0x80, 0xc7, 0x90, 0xc4, 0xae, 0x2f, 0xc8, 0x3e, 0xcb, 0x2e,
+	0xc4, 0x79, 0x3c, 0x86, 0x54, 0x7f, 0xc9, 0xc1, 0x82, 0xd9, 0x00, 0x7d, 0x6b, 0x41, 0x61, 0x54,
+	0x16, 0xe8, 0x75, 0xaf, 0x93, 0xd1, 0xc3, 0xa3, 0xb4, 0x7d, 0x09, 0xa6, 0xa9, 0x31, 0xe7, 0xf6,
+	0x77, 0x7f, 0xfd, 0xfd, 0xc3, 0xfc, 0x86, 0x73, 0x2d, 0x79, 0xec, 0x1a, 0xe2, 0x43, 0x91, 0xb1,
+	0x1e, 0x5a, 0xf7, 0xd1, 0x4f, 0x16, 0x5c, 0xbb, 0x68, 0x6e, 0xa0, 0x07, 0xb3, 0x36, 0x79, 0xc5,
+	0x9b, 0xad, 0xf4, 0x6e, 0xe6, 0x34, 0xf6, 0x0c, 0x2e, 0x1f, 0x66, 0xcf, 0x60, 0xe7, 0xbe, 0x56,
+	0xf3, 0x9e, 0x73, 0x7b, 0x4c, 0xcd, 0x18, 0x73, 0x42, 0xd8, 0x37, 0x80, 0x5e, 0xee, 0x1d, 0xb4,
+	0xf3, 0x26, 0x7d, 0x66, 0x34, 0x55, 0xdf, 0xbc, 0x35, 0xb7, 0xac, 0x0f, 0xac, 0x7a, 0x00, 0x25,
+	0x2f, 0x1c, 0xce, 0x70, 0xae, 0x5f, 0x35, 0xdf, 0xf0, 0x28, 0x19, 0x66, 0x47, 0xd6, 0x57, 0x9f,
+	0xa5, 0x34, 0x3f, 0x4c, 0xde, 0x04, 0xe5, 0x50, 0xf8, 0x15, 0x9f, 0x71, 0x3d, 0xea, 0x2a, 0xc6,
+	0x44, 0xa3, 0x40, 0x4e, 0xff, 0xfd, 0xf8, 0xd4, 0xfc, 0x7a, 0xba, 0xa0, 0x89, 0x0f, 0xfe, 0x0d,
+	0x00, 0x00, 0xff, 0xff, 0x1f, 0xdc, 0x74, 0x41, 0xa6, 0x0c, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/speech/v1beta1/cloud_speech.pb.go b/googleapis/cloud/speech/v1beta1/cloud_speech.pb.go
index cd932d9b..baf71e90 100644
--- a/googleapis/cloud/speech/v1beta1/cloud_speech.pb.go
+++ b/googleapis/cloud/speech/v1beta1/cloud_speech.pb.go
@@ -31,7 +31,8 @@ import fmt "fmt"
 import math "math"
 import _ "google.golang.org/genproto/googleapis/api/annotations"
 import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
-import google_protobuf3 "github.com/golang/protobuf/ptypes/timestamp"
+import _ "github.com/golang/protobuf/ptypes/duration"
+import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp"
 import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
 
 import (
@@ -114,16 +115,26 @@ type StreamingRecognizeResponse_EndpointerType int32
 const (
 	// No endpointer event specified.
 	StreamingRecognizeResponse_ENDPOINTER_EVENT_UNSPECIFIED StreamingRecognizeResponse_EndpointerType = 0
-	// Speech has been detected in the audio stream.
+	// Speech has been detected in the audio stream, and the service is
+	// beginning to process it.
 	StreamingRecognizeResponse_START_OF_SPEECH StreamingRecognizeResponse_EndpointerType = 1
-	// Speech has ceased to be detected in the audio stream.
+	// Speech has ceased to be detected in the audio stream. (For example, the
+	// user may have paused after speaking.) If `single_utterance` is `false`,
+	// the service will continue to process audio, and if subsequent speech is
+	// detected, will send another START_OF_SPEECH event.
 	StreamingRecognizeResponse_END_OF_SPEECH StreamingRecognizeResponse_EndpointerType = 2
-	// The end of the audio stream has been reached. and it is being processed.
+	// This event is sent after the client has half-closed the input stream gRPC
+	// connection and the server has received all of the audio. (The server may
+	// still be processing the audio and may subsequently return additional
+	// results.)
 	StreamingRecognizeResponse_END_OF_AUDIO StreamingRecognizeResponse_EndpointerType = 3
 	// This event is only sent when `single_utterance` is `true`. It indicates
 	// that the server has detected the end of the user's speech utterance and
 	// expects no additional speech. Therefore, the server will not process
-	// additional audio. The client should stop sending additional audio data.
+	// additional audio (although it may subsequently return additional
+	// results). The client should stop sending additional audio data,
+	// half-close the gRPC connection, and wait for any additional results
+	// until the server closes the gRPC connection.
 	StreamingRecognizeResponse_END_OF_UTTERANCE StreamingRecognizeResponse_EndpointerType = 4
 )
 
@@ -149,13 +160,12 @@ func (StreamingRecognizeResponse_EndpointerType) EnumDescriptor() ([]byte, []int
 	return fileDescriptor0, []int{10, 0}
 }
 
-// `SyncRecognizeRequest` is the top-level message sent by the client for
-// the `SyncRecognize` method.
+// The top-level message sent by the client for the `SyncRecognize` method.
 type SyncRecognizeRequest struct {
-	// [Required] The `config` message provides information to the recognizer
-	// that specifies how to process the request.
+	// *Required* Provides information to the recognizer that specifies how to
+	// process the request.
 	Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
-	// [Required] The audio data to be recognized.
+	// *Required* The audio data to be recognized.
 	Audio *RecognitionAudio `protobuf:"bytes,2,opt,name=audio" json:"audio,omitempty"`
 }
 
@@ -178,13 +188,12 @@ func (m *SyncRecognizeRequest) GetAudio() *RecognitionAudio {
 	return nil
 }
 
-// `AsyncRecognizeRequest` is the top-level message sent by the client for
-// the `AsyncRecognize` method.
+// The top-level message sent by the client for the `AsyncRecognize` method.
 type AsyncRecognizeRequest struct {
-	// [Required] The `config` message provides information to the recognizer
-	// that specifies how to process the request.
+	// *Required* Provides information to the recognizer that specifies how to
+	// process the request.
 	Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
-	// [Required] The audio data to be recognized.
+	// *Required* The audio data to be recognized.
 	Audio *RecognitionAudio `protobuf:"bytes,2,opt,name=audio" json:"audio,omitempty"`
 }
 
@@ -207,11 +216,11 @@ func (m *AsyncRecognizeRequest) GetAudio() *RecognitionAudio {
 	return nil
 }
 
-// `StreamingRecognizeRequest` is the top-level message sent by the client for
-// the `StreamingRecognize`. Multiple `StreamingRecognizeRequest` messages are
-// sent. The first message must contain a `streaming_config` message and must
-// not contain `audio` data. All subsequent messages must contain `audio` data
-// and must not contain a `streaming_config` message.
+// The top-level message sent by the client for the `StreamingRecognize` method.
+// Multiple `StreamingRecognizeRequest` messages are sent. The first message
+// must contain a `streaming_config` message and must not contain `audio` data.
+// All subsequent messages must contain `audio` data and must not contain a
+// `streaming_config` message.
 type StreamingRecognizeRequest struct {
 	// Types that are valid to be assigned to StreamingRequest:
 	//	*StreamingRecognizeRequest_StreamingConfig
@@ -329,24 +338,24 @@ func _StreamingRecognizeRequest_OneofSizer(msg proto.Message) (n int) {
 	return n
 }
 
-// The `StreamingRecognitionConfig` message provides information to the
-// recognizer that specifies how to process the request.
+// Provides information to the recognizer that specifies how to process the
+// request.
 type StreamingRecognitionConfig struct {
-	// [Required] The `config` message provides information to the recognizer
-	// that specifies how to process the request.
+	// *Required* Provides information to the recognizer that specifies how to
+	// process the request.
 	Config *RecognitionConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
-	// [Optional] If `false` or omitted, the recognizer will perform continuous
-	// recognition (continuing to process audio even if the user pauses speaking)
-	// until the client closes the output stream (gRPC API) or when the maximum
-	// time limit has been reached. Multiple `StreamingRecognitionResult`s with
-	// the `is_final` flag set to `true` may be returned.
+	// *Optional* If `false` or omitted, the recognizer will perform continuous
+	// recognition (continuing to wait for and process audio even if the user
+	// pauses speaking) until the client closes the input stream (gRPC API) or
+	// until the maximum time limit has been reached. May return multiple
+	// `StreamingRecognitionResult`s with the `is_final` flag set to `true`.
 	//
 	// If `true`, the recognizer will detect a single spoken utterance. When it
 	// detects that the user has paused or stopped speaking, it will return an
 	// `END_OF_UTTERANCE` event and cease recognition. It will return no more than
 	// one `StreamingRecognitionResult` with the `is_final` flag set to `true`.
 	SingleUtterance bool `protobuf:"varint,2,opt,name=single_utterance,json=singleUtterance" json:"single_utterance,omitempty"`
-	// [Optional] If `true`, interim results (tentative hypotheses) may be
+	// *Optional* If `true`, interim results (tentative hypotheses) may be
 	// returned as they become available (these interim results are indicated with
 	// the `is_final=false` flag).
 	// If `false` or omitted, only `is_final=true` result(s) are returned.
@@ -379,36 +388,36 @@ func (m *StreamingRecognitionConfig) GetInterimResults() bool {
 	return false
 }
 
-// The `RecognitionConfig` message provides information to the recognizer
-// that specifies how to process the request.
+// Provides information to the recognizer that specifies how to process the
+// request.
 type RecognitionConfig struct {
-	// [Required] Encoding of audio data sent in all `RecognitionAudio` messages.
+	// *Required* Encoding of audio data sent in all `RecognitionAudio` messages.
 	Encoding RecognitionConfig_AudioEncoding `protobuf:"varint,1,opt,name=encoding,enum=google.cloud.speech.v1beta1.RecognitionConfig_AudioEncoding" json:"encoding,omitempty"`
-	// [Required] Sample rate in Hertz of the audio data sent in all
+	// *Required* Sample rate in Hertz of the audio data sent in all
 	// `RecognitionAudio` messages. Valid values are: 8000-48000.
 	// 16000 is optimal. For best results, set the sampling rate of the audio
 	// source to 16000 Hz. If that's not possible, use the native sample rate of
 	// the audio source (instead of re-sampling).
 	SampleRate int32 `protobuf:"varint,2,opt,name=sample_rate,json=sampleRate" json:"sample_rate,omitempty"`
-	// [Optional] The language of the supplied audio as a BCP-47 language tag.
+	// *Optional* The language of the supplied audio as a BCP-47 language tag.
 	// Example: "en-GB"  https://www.rfc-editor.org/rfc/bcp/bcp47.txt
 	// If omitted, defaults to "en-US". See
-	// [Language Support](https://cloud.google.com/speech/docs/best-practices#language_support)
+	// [Language Support](https://cloud.google.com/speech/docs/languages)
 	// for a list of the currently supported language codes.
 	LanguageCode string `protobuf:"bytes,3,opt,name=language_code,json=languageCode" json:"language_code,omitempty"`
-	// [Optional] Maximum number of recognition hypotheses to be returned.
+	// *Optional* Maximum number of recognition hypotheses to be returned.
 	// Specifically, the maximum number of `SpeechRecognitionAlternative` messages
 	// within each `SpeechRecognitionResult`.
 	// The server may return fewer than `max_alternatives`.
 	// Valid values are `0`-`30`. A value of `0` or `1` will return a maximum of
-	// `1`. If omitted, defaults to `1`.
+	// one. If omitted, will return a maximum of one.
 	MaxAlternatives int32 `protobuf:"varint,4,opt,name=max_alternatives,json=maxAlternatives" json:"max_alternatives,omitempty"`
-	// [Optional] If set to `true`, the server will attempt to filter out
+	// *Optional* If set to `true`, the server will attempt to filter out
 	// profanities, replacing all but the initial character in each filtered word
 	// with asterisks, e.g. "f***". If set to `false` or omitted, profanities
 	// won't be filtered out.
 	ProfanityFilter bool `protobuf:"varint,5,opt,name=profanity_filter,json=profanityFilter" json:"profanity_filter,omitempty"`
-	// [Optional] A means to provide context to assist the speech recognition.
+	// *Optional* A means to provide context to assist the speech recognition.
 	SpeechContext *SpeechContext `protobuf:"bytes,6,opt,name=speech_context,json=speechContext" json:"speech_context,omitempty"`
 }
 
@@ -462,7 +471,7 @@ func (m *RecognitionConfig) GetSpeechContext() *SpeechContext {
 // Provides "hints" to the speech recognizer to favor specific words and phrases
 // in the results.
 type SpeechContext struct {
-	// [Optional] A list of strings containing words and phrases "hints" so that
+	// *Optional* A list of strings containing words and phrases "hints" so that
 	// the speech recognition is more likely to recognize them. This can be used
 	// to improve the accuracy for specific words and phrases, for example, if
 	// specific commands are typically spoken by the user. This can also be used
@@ -600,11 +609,11 @@ func _RecognitionAudio_OneofSizer(msg proto.Message) (n int) {
 	return n
 }
 
-// `SyncRecognizeResponse` is the only message returned to the client by
-// `SyncRecognize`. It contains the result as zero or more sequential
-// `SpeechRecognitionResult` messages.
+// The only message returned to the client by `SyncRecognize`. It
+// contains the result as zero or more sequential `SpeechRecognitionResult`
+// messages.
 type SyncRecognizeResponse struct {
-	// [Output-only] Sequential list of transcription results corresponding to
+	// *Output-only* Sequential list of transcription results corresponding to
 	// sequential portions of audio.
 	Results []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"`
 }
@@ -621,13 +630,12 @@ func (m *SyncRecognizeResponse) GetResults() []*SpeechRecognitionResult {
 	return nil
 }
 
-// `AsyncRecognizeResponse` is the only message returned to the client by
-// `AsyncRecognize`. It contains the result as zero or more sequential
-// `SpeechRecognitionResult` messages. It is included in the `result.response`
-// field of the `Operation` returned by the `GetOperation` call of the
-// `google::longrunning::Operations` service.
+// The only message returned to the client by `AsyncRecognize`. It contains the
+// result as zero or more sequential `SpeechRecognitionResult` messages. It is
+// included in the `result.response` field of the `Operation` returned by the
+// `GetOperation` call of the `google::longrunning::Operations` service.
 type AsyncRecognizeResponse struct {
-	// [Output-only] Sequential list of transcription results corresponding to
+	// *Output-only* Sequential list of transcription results corresponding to
 	// sequential portions of audio.
 	Results []*SpeechRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"`
 }
@@ -644,18 +652,17 @@ func (m *AsyncRecognizeResponse) GetResults() []*SpeechRecognitionResult {
 	return nil
 }
 
-// `AsyncRecognizeMetadata` describes the progress of a long-running
-// `AsyncRecognize` call. It is included in the `metadata` field of the
-// `Operation` returned by the `GetOperation` call of the
-// `google::longrunning::Operations` service.
+// Describes the progress of a long-running `AsyncRecognize` call. It is
+// included in the `metadata` field of the `Operation` returned by the
+// `GetOperation` call of the `google::longrunning::Operations` service.
 type AsyncRecognizeMetadata struct {
 	// Approximate percentage of audio processed thus far. Guaranteed to be 100
 	// when the audio is fully processed and the results are available.
 	ProgressPercent int32 `protobuf:"varint,1,opt,name=progress_percent,json=progressPercent" json:"progress_percent,omitempty"`
 	// Time when the request was received.
-	StartTime *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
+	StartTime *google_protobuf4.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
 	// Time of the most recent processing update.
-	LastUpdateTime *google_protobuf3.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"`
+	LastUpdateTime *google_protobuf4.Timestamp `protobuf:"bytes,3,opt,name=last_update_time,json=lastUpdateTime" json:"last_update_time,omitempty"`
 }
 
 func (m *AsyncRecognizeMetadata) Reset()                    { *m = AsyncRecognizeMetadata{} }
@@ -670,14 +677,14 @@ func (m *AsyncRecognizeMetadata) GetProgressPercent() int32 {
 	return 0
 }
 
-func (m *AsyncRecognizeMetadata) GetStartTime() *google_protobuf3.Timestamp {
+func (m *AsyncRecognizeMetadata) GetStartTime() *google_protobuf4.Timestamp {
 	if m != nil {
 		return m.StartTime
 	}
 	return nil
 }
 
-func (m *AsyncRecognizeMetadata) GetLastUpdateTime() *google_protobuf3.Timestamp {
+func (m *AsyncRecognizeMetadata) GetLastUpdateTime() *google_protobuf4.Timestamp {
 	if m != nil {
 		return m.LastUpdateTime
 	}
@@ -737,24 +744,27 @@ func (m *AsyncRecognizeMetadata) GetLastUpdateTime() *google_protobuf3.Timestamp
 //   change, the second portion has a low stability and is very likely to
 //   change. A UI designer might choose to show only high stability `results`.
 //
+// - The specific `stability` and `confidence` values shown above are only for
+//   illustrative purposes. Actual values may vary.
+//
 // - The `result_index` indicates the portion of audio that has had final
 //   results returned, and is no longer being processed. For example, the
 //   `results` in #6 and later correspond to the portion of audio after
 //   "to be or not to be".
 type StreamingRecognizeResponse struct {
-	// [Output-only] If set, returns a [google.rpc.Status][] message that
+	// *Output-only* If set, returns a [google.rpc.Status][google.rpc.Status] message that
 	// specifies the error for the operation.
 	Error *google_rpc.Status `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"`
-	// [Output-only] This repeated list contains zero or more results that
+	// *Output-only* This repeated list contains zero or more results that
 	// correspond to consecutive portions of the audio currently being processed.
 	// It contains zero or one `is_final=true` result (the newly settled portion),
 	// followed by zero or more `is_final=false` results.
 	Results []*StreamingRecognitionResult `protobuf:"bytes,2,rep,name=results" json:"results,omitempty"`
-	// [Output-only] Indicates the lowest index in the `results` array that has
+	// *Output-only* Indicates the lowest index in the `results` array that has
 	// changed. The repeated `StreamingRecognitionResult` results overwrite past
 	// results at this index and higher.
 	ResultIndex int32 `protobuf:"varint,3,opt,name=result_index,json=resultIndex" json:"result_index,omitempty"`
-	// [Output-only] Indicates the type of endpointer event.
+	// *Output-only* Indicates the type of endpointer event.
 	EndpointerType StreamingRecognizeResponse_EndpointerType `protobuf:"varint,4,opt,name=endpointer_type,json=endpointerType,enum=google.cloud.speech.v1beta1.StreamingRecognizeResponse_EndpointerType" json:"endpointer_type,omitempty"`
 }
 
@@ -794,22 +804,20 @@ func (m *StreamingRecognizeResponse) GetEndpointerType() StreamingRecognizeRespo
 // A streaming speech recognition result corresponding to a portion of the audio
 // that is currently being processed.
 type StreamingRecognitionResult struct {
-	// [Output-only] May contain one or more recognition hypotheses (up to the
+	// *Output-only* May contain one or more recognition hypotheses (up to the
 	// maximum specified in `max_alternatives`).
 	Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"`
-	// [Output-only] If `false`, this `StreamingRecognitionResult` represents an
+	// *Output-only* If `false`, this `StreamingRecognitionResult` represents an
 	// interim result that may change. If `true`, this is the final time the
 	// speech service will return this particular `StreamingRecognitionResult`,
 	// the recognizer will not return any further hypotheses for this portion of
 	// the transcript and corresponding audio.
 	IsFinal bool `protobuf:"varint,2,opt,name=is_final,json=isFinal" json:"is_final,omitempty"`
-	// [Output-only] An estimate of the probability that the recognizer will not
+	// *Output-only* An estimate of the likelihood that the recognizer will not
 	// change its guess about this interim result. Values range from 0.0
-	// (completely unstable) to 1.0 (completely stable). Note that this is not the
-	// same as `confidence`, which estimates the probability that a recognition
-	// result is correct.
+	// (completely unstable) to 1.0 (completely stable).
 	// This field is only provided for interim results (`is_final=false`).
-	// The default of 0.0 is a sentinel value indicating stability was not set.
+	// The default of 0.0 is a sentinel value indicating `stability` was not set.
 	Stability float32 `protobuf:"fixed32,3,opt,name=stability" json:"stability,omitempty"`
 }
 
@@ -841,7 +849,7 @@ func (m *StreamingRecognitionResult) GetStability() float32 {
 
 // A speech recognition result corresponding to a portion of the audio.
 type SpeechRecognitionResult struct {
-	// [Output-only] May contain one or more recognition hypotheses (up to the
+	// *Output-only* May contain one or more recognition hypotheses (up to the
 	// maximum specified in `max_alternatives`).
 	Alternatives []*SpeechRecognitionAlternative `protobuf:"bytes,1,rep,name=alternatives" json:"alternatives,omitempty"`
 }
@@ -860,13 +868,15 @@ func (m *SpeechRecognitionResult) GetAlternatives() []*SpeechRecognitionAlternat
 
 // Alternative hypotheses (a.k.a. n-best list).
 type SpeechRecognitionAlternative struct {
-	// [Output-only] Transcript text representing the words that the user spoke.
+	// *Output-only* Transcript text representing the words that the user spoke.
 	Transcript string `protobuf:"bytes,1,opt,name=transcript" json:"transcript,omitempty"`
-	// [Output-only] The confidence estimate between 0.0 and 1.0. A higher number
-	// means the system is more confident that the recognition is correct.
-	// This field is typically provided only for the top hypothesis, and only for
-	// `is_final=true` results.
-	// The default of 0.0 is a sentinel value indicating confidence was not set.
+	// *Output-only* The confidence estimate between 0.0 and 1.0. A higher number
+	// indicates an estimated greater likelihood that the recognized words are
+	// correct. This field is typically provided only for the top hypothesis, and
+	// only for `is_final=true` results. Clients should not rely on the
+	// `confidence` field as it is not guaranteed to be accurate, or even set, in
+	// any of the results.
+	// The default of 0.0 is a sentinel value indicating `confidence` was not set.
 	Confidence float32 `protobuf:"fixed32,2,opt,name=confidence" json:"confidence,omitempty"`
 }
 
@@ -919,15 +929,17 @@ const _ = grpc.SupportPackageIsVersion4
 // Client API for Speech service
 
 type SpeechClient interface {
-	// Perform synchronous speech-recognition: receive results after all audio
+	// Performs synchronous speech recognition: receive results after all audio
 	// has been sent and processed.
 	SyncRecognize(ctx context.Context, in *SyncRecognizeRequest, opts ...grpc.CallOption) (*SyncRecognizeResponse, error)
-	// Perform asynchronous speech-recognition: receive results via the
-	// google.longrunning.Operations interface. Returns either an
+	// Performs asynchronous speech recognition: receive results via the
+	// [google.longrunning.Operations]
+	// (/speech/reference/rest/v1beta1/operations#Operation)
+	// interface. Returns either an
 	// `Operation.error` or an `Operation.response` which contains
 	// an `AsyncRecognizeResponse` message.
 	AsyncRecognize(ctx context.Context, in *AsyncRecognizeRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
-	// Perform bidirectional streaming speech-recognition: receive results while
+	// Performs bidirectional streaming speech recognition: receive results while
 	// sending audio. This method is only available via the gRPC API (not REST).
 	StreamingRecognize(ctx context.Context, opts ...grpc.CallOption) (Speech_StreamingRecognizeClient, error)
 }
@@ -992,15 +1004,17 @@ func (x *speechStreamingRecognizeClient) Recv() (*StreamingRecognizeResponse, er
 // Server API for Speech service
 
 type SpeechServer interface {
-	// Perform synchronous speech-recognition: receive results after all audio
+	// Performs synchronous speech recognition: receive results after all audio
 	// has been sent and processed.
 	SyncRecognize(context.Context, *SyncRecognizeRequest) (*SyncRecognizeResponse, error)
-	// Perform asynchronous speech-recognition: receive results via the
-	// google.longrunning.Operations interface. Returns either an
+	// Performs asynchronous speech recognition: receive results via the
+	// [google.longrunning.Operations]
+	// (/speech/reference/rest/v1beta1/operations#Operation)
+	// interface. Returns either an
 	// `Operation.error` or an `Operation.response` which contains
 	// an `AsyncRecognizeResponse` message.
 	AsyncRecognize(context.Context, *AsyncRecognizeRequest) (*google_longrunning.Operation, error)
-	// Perform bidirectional streaming speech-recognition: receive results while
+	// Performs bidirectional streaming speech recognition: receive results while
 	// sending audio. This method is only available via the gRPC API (not REST).
 	StreamingRecognize(Speech_StreamingRecognizeServer) error
 }
@@ -1098,81 +1112,81 @@ var _Speech_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/cloud/speech/v1beta1/cloud_speech.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 1206 bytes of a gzipped FileDescriptorProto
+	// 1214 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x4d, 0x6f, 0x1b, 0xc5,
 	0x1b, 0xcf, 0xda, 0x71, 0x5e, 0x9e, 0xd8, 0xce, 0x76, 0xda, 0xfe, 0xeb, 0xfa, 0x9f, 0xb6, 0x61,
 	0x2b, 0x44, 0x5a, 0x89, 0x35, 0x09, 0xa8, 0x55, 0x0b, 0x17, 0xc7, 0x59, 0x13, 0x4b, 0x8d, 0x93,
 	0x4e, 0x1c, 0x8a, 0x90, 0x60, 0x35, 0x59, 0x4f, 0xb6, 0x2b, 0xd9, 0x33, 0xcb, 0xcc, 0x6c, 0x95,
 	0x70, 0xec, 0x8d, 0x0b, 0x17, 0xbe, 0x00, 0x12, 0x7c, 0x02, 0xc4, 0x81, 0x0b, 0xe2, 0xc2, 0x81,
 	0x3b, 0x5f, 0x81, 0x0f, 0x82, 0x76, 0x66, 0x37, 0xb1, 0x9d, 0xc6, 0x34, 0x88, 0x4a, 0xdc, 0xfc,
-	0xfc, 0xe6, 0x79, 0xf9, 0xed, 0x33, 0xcf, 0xcb, 0x18, 0xdc, 0x90, 0xf3, 0x70, 0x40, 0x1b, 0xc1,
+	0xfc, 0x9e, 0x97, 0xf9, 0xed, 0x33, 0xcf, 0xcb, 0x18, 0xdc, 0x90, 0xf3, 0x70, 0x40, 0x1b, 0xc1,
 	0x80, 0x27, 0xfd, 0x86, 0x8c, 0x29, 0x0d, 0x9e, 0x37, 0x5e, 0xac, 0x1f, 0x52, 0x45, 0xd6, 0x0d,
-	0xe8, 0x1b, 0xd0, 0x8d, 0x05, 0x57, 0x1c, 0xfd, 0xdf, 0xe8, 0xbb, 0xfa, 0xc8, 0xcd, 0x8e, 0x32,
-	0xfd, 0xfa, 0x4a, 0xe6, 0x8c, 0xc4, 0x51, 0x83, 0x30, 0xc6, 0x15, 0x51, 0x11, 0x67, 0xd2, 0x98,
-	0xd6, 0xef, 0x66, 0xa7, 0x03, 0xce, 0x42, 0x91, 0x30, 0x16, 0xb1, 0xb0, 0xc1, 0x63, 0x2a, 0xc6,
-	0x94, 0xee, 0x64, 0x4a, 0x5a, 0x3a, 0x4c, 0x8e, 0x1a, 0x2a, 0x1a, 0x52, 0xa9, 0xc8, 0x30, 0xce,
-	0x14, 0x6e, 0x64, 0x0a, 0x22, 0x0e, 0x1a, 0x52, 0x11, 0x95, 0x64, 0x96, 0xce, 0xf7, 0x16, 0x5c,
-	0xdb, 0x3f, 0x61, 0x01, 0xa6, 0x01, 0x0f, 0x59, 0xf4, 0x15, 0xc5, 0xf4, 0xcb, 0x84, 0x4a, 0x85,
-	0xda, 0x30, 0x17, 0x70, 0x76, 0x14, 0x85, 0x35, 0x6b, 0xd5, 0x5a, 0x5b, 0xda, 0x70, 0xdd, 0x29,
-	0xdf, 0xe0, 0x66, 0xe6, 0x29, 0xa7, 0x96, 0xb6, 0xc2, 0x99, 0x35, 0x6a, 0x41, 0x89, 0x24, 0xfd,
-	0x88, 0xd7, 0x0a, 0xda, 0xcd, 0xbb, 0xaf, 0xeb, 0xa6, 0x99, 0x1a, 0x61, 0x63, 0xeb, 0xfc, 0x60,
-	0xc1, 0xf5, 0xa6, 0xfc, 0xcf, 0xd3, 0xfc, 0xc5, 0x82, 0x9b, 0xfb, 0x4a, 0x50, 0x32, 0x8c, 0x58,
-	0x78, 0x8e, 0x6a, 0x1f, 0x6c, 0x99, 0x1f, 0xfa, 0x63, 0xa4, 0x1f, 0x4e, 0x8d, 0x36, 0xe9, 0xf1,
-	0x8c, 0xfd, 0xf6, 0x0c, 0x5e, 0x3e, 0x75, 0x69, 0x20, 0xf4, 0x36, 0x54, 0x34, 0x99, 0x34, 0x82,
-	0xa2, 0x4c, 0xe9, 0x0f, 0x2a, 0x6f, 0xcf, 0xe0, 0xb2, 0x86, 0x5b, 0x06, 0xdd, 0xbc, 0x0a, 0x57,
-	0xce, 0xc8, 0x08, 0xc3, 0xd0, 0xf9, 0xd9, 0x82, 0xfa, 0xc5, 0xd1, 0xfe, 0xb5, 0x5c, 0xdf, 0x03,
-	0x5b, 0x46, 0x2c, 0x1c, 0x50, 0x3f, 0x51, 0x8a, 0x0a, 0xc2, 0x02, 0xaa, 0x59, 0x2e, 0xe0, 0x65,
-	0x83, 0x1f, 0xe4, 0x30, 0x7a, 0x07, 0x96, 0x23, 0xa6, 0xa8, 0x88, 0x86, 0xbe, 0xa0, 0x32, 0x19,
-	0x28, 0x59, 0x2b, 0x6a, 0xcd, 0x6a, 0x06, 0x63, 0x83, 0x3a, 0xbf, 0x16, 0xe1, 0xca, 0x79, 0xc6,
-	0x9f, 0xc2, 0x02, 0x65, 0x01, 0xef, 0x47, 0xcc, 0x70, 0xae, 0x6e, 0x7c, 0x74, 0x39, 0xce, 0xae,
-	0xbe, 0x5f, 0x2f, 0xf3, 0x81, 0x4f, 0xbd, 0xa1, 0x3b, 0xb0, 0x24, 0xc9, 0x30, 0x1e, 0x50, 0x5f,
-	0x10, 0x65, 0xe8, 0x97, 0x30, 0x18, 0x08, 0x13, 0x45, 0xd1, 0x5d, 0xa8, 0x0c, 0x08, 0x0b, 0x13,
-	0x12, 0x52, 0x3f, 0xe0, 0x7d, 0xaa, 0x79, 0x2f, 0xe2, 0x72, 0x0e, 0xb6, 0x78, 0x9f, 0xa6, 0x99,
-	0x18, 0x92, 0x63, 0x9f, 0x0c, 0x14, 0x15, 0x8c, 0xa8, 0xe8, 0x05, 0x95, 0xb5, 0x59, 0xed, 0x6a,
-	0x79, 0x48, 0x8e, 0x9b, 0x23, 0x70, 0xaa, 0x1a, 0x0b, 0x7e, 0x44, 0x58, 0xa4, 0x4e, 0xfc, 0xa3,
-	0x28, 0x3d, 0xaa, 0x95, 0x4c, 0xd2, 0x4e, 0xf1, 0xb6, 0x86, 0xd1, 0x53, 0xa8, 0x9a, 0xef, 0x32,
-	0x35, 0x70, 0xac, 0x6a, 0x73, 0xfa, 0xbe, 0xee, 0x4f, 0x2f, 0x33, 0x2d, 0xb6, 0x8c, 0x05, 0xae,
-	0xc8, 0x51, 0xd1, 0x21, 0x50, 0x19, 0xcb, 0x04, 0xaa, 0xc1, 0x35, 0xaf, 0xdb, 0xda, 0xdd, 0xea,
-	0x74, 0x3f, 0xf6, 0x0f, 0xba, 0xfb, 0x7b, 0x5e, 0xab, 0xd3, 0xee, 0x78, 0x5b, 0xf6, 0x0c, 0x2a,
-	0xc3, 0xc2, 0x93, 0x4e, 0xd7, 0x6b, 0xe2, 0xf5, 0x07, 0xb6, 0x85, 0x16, 0x60, 0xb6, 0xfd, 0xa4,
-	0xd9, 0xb2, 0x0b, 0x68, 0x11, 0x4a, 0x3b, 0x07, 0x4f, 0x9a, 0xcf, 0xec, 0x22, 0x9a, 0x87, 0x62,
-	0x73, 0x07, 0xdb, 0xb3, 0x08, 0x60, 0xae, 0xb9, 0x83, 0xfd, 0x67, 0x9b, 0x76, 0xc9, 0xb9, 0x07,
-	0x95, 0x31, 0x0a, 0xa8, 0x06, 0xf3, 0xf1, 0x73, 0x41, 0x24, 0x95, 0x35, 0x6b, 0xb5, 0xb8, 0xb6,
-	0x88, 0x73, 0xd1, 0xc1, 0x60, 0x4f, 0xb6, 0x20, 0xaa, 0xc3, 0x7c, 0x5e, 0xf1, 0x56, 0x56, 0xf1,
-	0x39, 0x80, 0x10, 0x14, 0x13, 0x11, 0xe9, 0x4b, 0x5a, 0xdc, 0x9e, 0xc1, 0xa9, 0xb0, 0x59, 0x05,
-	0xd3, 0x10, 0xbe, 0xe4, 0x89, 0x08, 0xa8, 0x13, 0xc2, 0xf5, 0x89, 0x39, 0x28, 0x63, 0xce, 0x24,
-	0x45, 0x5d, 0x98, 0xcf, 0x4b, 0xaf, 0xb0, 0x5a, 0x5c, 0x5b, 0xda, 0xf8, 0xe0, 0x35, 0xd2, 0x38,
-	0x42, 0xcf, 0x54, 0x28, 0xce, 0x9d, 0x38, 0xcf, 0xe1, 0x7f, 0x93, 0xa3, 0xec, 0x0d, 0x45, 0xfa,
-	0xcd, 0x9a, 0x0c, 0xb5, 0x43, 0x15, 0xe9, 0x13, 0x45, 0xb2, 0x6a, 0x0a, 0x05, 0x95, 0xd2, 0x8f,
-	0xa9, 0x08, 0xf2, 0xb4, 0x95, 0x74, 0x35, 0x69, 0x7c, 0xcf, 0xc0, 0xe8, 0x11, 0x80, 0x54, 0x44,
-	0x28, 0x3f, 0xdd, 0x29, 0xd9, 0x78, 0xac, 0xe7, 0xc4, 0xf2, 0x85, 0xe3, 0xf6, 0xf2, 0x85, 0x83,
-	0x17, 0xb5, 0x76, 0x2a, 0xa3, 0x2d, 0xb0, 0x07, 0x44, 0x2a, 0x3f, 0x89, 0xfb, 0x44, 0x51, 0xe3,
-	0xa0, 0xf8, 0xb7, 0x0e, 0xaa, 0xa9, 0xcd, 0x81, 0x36, 0x49, 0x41, 0xe7, 0xc7, 0xe2, 0xf9, 0xa9,
-	0x34, 0x92, 0xb5, 0x35, 0x28, 0x51, 0x21, 0xb8, 0xc8, 0x86, 0x12, 0xca, 0x3d, 0x8b, 0x38, 0x70,
-	0xf7, 0xf5, 0xaa, 0xc3, 0x46, 0x01, 0x3d, 0x9d, 0xcc, 0xef, 0xe5, 0xe7, 0xee, 0x44, 0x8a, 0xd1,
-	0x5b, 0x50, 0x36, 0x3f, 0xfd, 0x88, 0xf5, 0xe9, 0xb1, 0xfe, 0xba, 0x12, 0x5e, 0x32, 0x58, 0x27,
-	0x85, 0x10, 0x87, 0x65, 0xca, 0xfa, 0x31, 0xd7, 0x03, 0xcb, 0x57, 0x27, 0x31, 0xd5, 0x2d, 0x5e,
-	0xdd, 0x68, 0x5f, 0x2a, 0xfa, 0xd9, 0x17, 0xbb, 0xde, 0xa9, 0xbb, 0xde, 0x49, 0x4c, 0x71, 0x95,
-	0x8e, 0xc9, 0xce, 0x4b, 0x0b, 0xaa, 0xe3, 0x2a, 0x68, 0x15, 0x56, 0xbc, 0xee, 0xd6, 0xde, 0x6e,
-	0xa7, 0xdb, 0xf3, 0xb0, 0xef, 0x7d, 0xe2, 0x75, 0x7b, 0x13, 0x5d, 0x7b, 0x15, 0x96, 0xf7, 0x7b,
-	0x4d, 0xdc, 0xf3, 0x77, 0xdb, 0xfe, 0xfe, 0x9e, 0xe7, 0xb5, 0xb6, 0x6d, 0x0b, 0x5d, 0x81, 0x8a,
-	0xd7, 0xdd, 0x1a, 0x81, 0x0a, 0xc8, 0x86, 0x72, 0x06, 0x35, 0x0f, 0xb6, 0x3a, 0xbb, 0x76, 0x11,
-	0x5d, 0x03, 0x3b, 0x43, 0x0e, 0x7a, 0x3d, 0x0f, 0x37, 0xbb, 0x2d, 0xcf, 0x9e, 0x75, 0x7e, 0xba,
-	0x60, 0x95, 0x98, 0x04, 0xa2, 0xcf, 0xa1, 0x3c, 0x36, 0xf4, 0x2c, 0x7d, 0x1f, 0x8f, 0x2e, 0x57,
-	0xef, 0x23, 0xf3, 0x11, 0x8f, 0xb9, 0x43, 0x37, 0x61, 0x21, 0x92, 0xfe, 0x51, 0xc4, 0xc8, 0x20,
-	0xdb, 0x2c, 0xf3, 0x91, 0x6c, 0xa7, 0x22, 0x5a, 0x81, 0xb4, 0x40, 0x0f, 0xa3, 0x41, 0xa4, 0x4e,
-	0xf4, 0x75, 0x15, 0xf0, 0x19, 0xe0, 0x1c, 0xc3, 0x8d, 0x0b, 0xda, 0xea, 0x0d, 0x53, 0x76, 0xbe,
-	0x80, 0x95, 0x69, 0xda, 0xe8, 0x36, 0x80, 0x12, 0x84, 0xc9, 0x40, 0x44, 0xb1, 0xe9, 0xd5, 0x45,
-	0x3c, 0x82, 0xa4, 0xe7, 0x7a, 0xbd, 0xf6, 0x69, 0xbe, 0x4e, 0x0b, 0x78, 0x04, 0xd9, 0xf8, 0xbd,
-	0x08, 0x73, 0x26, 0x00, 0xfa, 0xce, 0x82, 0xca, 0xd8, 0xac, 0x43, 0xeb, 0xd3, 0xbf, 0xe2, 0x15,
-	0x0f, 0xaf, 0xfa, 0xc6, 0x65, 0x4c, 0x4c, 0xe1, 0x3a, 0x6b, 0x2f, 0xff, 0xf8, 0xf3, 0xdb, 0x82,
-	0xe3, 0xdc, 0x3a, 0x7d, 0x2b, 0x1b, 0xb3, 0xc7, 0xe9, 0x90, 0x12, 0xb9, 0xfa, 0x63, 0xeb, 0x3e,
-	0xfa, 0xc6, 0x82, 0xea, 0xf8, 0xe8, 0x42, 0xd3, 0x03, 0xbe, 0xf2, 0x75, 0x58, 0xbf, 0x95, 0xdb,
-	0x8c, 0xbc, 0x9e, 0xdd, 0xdd, 0xfc, 0xf5, 0xec, 0xdc, 0xd3, 0x7c, 0xee, 0x3a, 0xb7, 0x27, 0xf9,
-	0x90, 0x73, 0x84, 0xbe, 0xb6, 0x00, 0x9d, 0x6f, 0x49, 0xf4, 0xe0, 0xd2, 0x3d, 0x6c, 0x88, 0x3d,
-	0xfc, 0x87, 0xbd, 0xbf, 0x66, 0xbd, 0x67, 0x6d, 0x4a, 0xb8, 0x13, 0xf0, 0xe1, 0x34, 0x0f, 0x9b,
-	0x4b, 0xe6, 0xaa, 0xf7, 0xd2, 0xe9, 0xba, 0x67, 0x7d, 0xd6, 0xcc, 0x74, 0x43, 0x9e, 0x3e, 0x3f,
-	0x5c, 0x2e, 0xc2, 0x46, 0x48, 0x99, 0x9e, 0xbd, 0x0d, 0x73, 0x44, 0xe2, 0x48, 0xbe, 0xf2, 0xef,
-	0xcc, 0x87, 0x46, 0x3c, 0x9c, 0xd3, 0xda, 0xef, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, 0xf5, 0xe0,
-	0xdc, 0xd0, 0xfb, 0x0c, 0x00, 0x00,
+	0xe8, 0x1b, 0xd0, 0x8d, 0x05, 0x57, 0x1c, 0xfd, 0xdf, 0xd8, 0xbb, 0x5a, 0xe5, 0x66, 0xaa, 0xcc,
+	0xbe, 0xbe, 0x92, 0x05, 0x23, 0x71, 0xd4, 0x20, 0x8c, 0x71, 0x45, 0x54, 0xc4, 0x99, 0x34, 0xae,
+	0xf5, 0xbb, 0x99, 0x76, 0xc0, 0x59, 0x28, 0x12, 0xc6, 0x22, 0x16, 0x36, 0x78, 0x4c, 0xc5, 0x98,
+	0xd1, 0xed, 0xcc, 0x48, 0x4b, 0x87, 0xc9, 0x51, 0xa3, 0x9f, 0x18, 0x83, 0x4c, 0x7f, 0x67, 0x52,
+	0xaf, 0xa2, 0x21, 0x95, 0x8a, 0x0c, 0xe3, 0xcc, 0xe0, 0x46, 0x66, 0x20, 0xe2, 0xa0, 0x21, 0x15,
+	0x51, 0x49, 0x16, 0xd9, 0xf9, 0xde, 0x82, 0x6b, 0xfb, 0x27, 0x2c, 0xc0, 0x34, 0xe0, 0x21, 0x8b,
+	0xbe, 0xa2, 0x98, 0x7e, 0x99, 0x50, 0xa9, 0x50, 0x1b, 0xe6, 0x02, 0xce, 0x8e, 0xa2, 0xb0, 0x66,
+	0xad, 0x5a, 0x6b, 0x4b, 0x1b, 0xae, 0x3b, 0xe5, 0x1b, 0xdd, 0xcc, 0x3d, 0xa5, 0xd4, 0xd2, 0x5e,
+	0x38, 0xf3, 0x46, 0x2d, 0x28, 0x91, 0xa4, 0x1f, 0xf1, 0x5a, 0x41, 0x87, 0x79, 0xf7, 0x75, 0xc3,
+	0x34, 0x53, 0x27, 0x6c, 0x7c, 0x9d, 0x1f, 0x2c, 0xb8, 0xde, 0x94, 0xff, 0x79, 0x9a, 0xbf, 0x58,
+	0x70, 0x73, 0x5f, 0x09, 0x4a, 0x86, 0x11, 0x0b, 0xcf, 0x51, 0xed, 0x83, 0x2d, 0x73, 0xa5, 0x3f,
+	0x46, 0xfa, 0xe1, 0xd4, 0xd3, 0x26, 0x23, 0x9e, 0xb1, 0xdf, 0x9e, 0xc1, 0xcb, 0xa7, 0x21, 0x0d,
+	0x84, 0xde, 0x86, 0x8a, 0x26, 0x93, 0x9e, 0xa0, 0x28, 0x53, 0xfa, 0x83, 0xca, 0xdb, 0x33, 0xb8,
+	0xac, 0xe1, 0x96, 0x41, 0x37, 0xaf, 0xc2, 0x95, 0x33, 0x32, 0xc2, 0x30, 0x74, 0x7e, 0xb6, 0xa0,
+	0x7e, 0xf1, 0x69, 0xff, 0x5a, 0xae, 0xef, 0x81, 0x2d, 0x23, 0x16, 0x0e, 0xa8, 0x9f, 0x28, 0x45,
+	0x05, 0x61, 0x01, 0xd5, 0x2c, 0x17, 0xf0, 0xb2, 0xc1, 0x0f, 0x72, 0x18, 0xbd, 0x03, 0xcb, 0x11,
+	0x53, 0x54, 0x44, 0x43, 0x5f, 0x50, 0x99, 0x0c, 0x94, 0xac, 0x15, 0xb5, 0x65, 0x35, 0x83, 0xb1,
+	0x41, 0x9d, 0x5f, 0x8b, 0x70, 0xe5, 0x3c, 0xe3, 0x4f, 0x61, 0x81, 0xb2, 0x80, 0xf7, 0x23, 0x66,
+	0x38, 0x57, 0x37, 0x3e, 0xba, 0x1c, 0x67, 0x57, 0xdf, 0xaf, 0x97, 0xc5, 0xc0, 0xa7, 0xd1, 0xd0,
+	0x1d, 0x58, 0x92, 0x64, 0x18, 0x0f, 0xa8, 0x2f, 0x88, 0x32, 0xf4, 0x4b, 0x18, 0x0c, 0x84, 0x89,
+	0xa2, 0xe8, 0x2e, 0x54, 0x06, 0x84, 0x85, 0x09, 0x09, 0xa9, 0x1f, 0xf0, 0x3e, 0xd5, 0xbc, 0x17,
+	0x71, 0x39, 0x07, 0x5b, 0xbc, 0x4f, 0xd3, 0x4c, 0x0c, 0xc9, 0xb1, 0x4f, 0x06, 0x8a, 0x0a, 0x46,
+	0x54, 0xf4, 0x82, 0xca, 0xda, 0xac, 0x0e, 0xb5, 0x3c, 0x24, 0xc7, 0xcd, 0x11, 0x38, 0x35, 0x8d,
+	0x05, 0x3f, 0x22, 0x2c, 0x52, 0x27, 0xfe, 0x51, 0x94, 0xaa, 0x6a, 0x25, 0x93, 0xb4, 0x53, 0xbc,
+	0xad, 0x61, 0xf4, 0x14, 0xaa, 0xe6, 0xbb, 0x4c, 0x0d, 0x1c, 0xab, 0xda, 0x9c, 0xbe, 0xaf, 0xfb,
+	0xd3, 0xcb, 0x4c, 0x8b, 0x2d, 0xe3, 0x81, 0x2b, 0x72, 0x54, 0x74, 0x08, 0x54, 0xc6, 0x32, 0x81,
+	0x6a, 0x70, 0xcd, 0xeb, 0xb6, 0x76, 0xb7, 0x3a, 0xdd, 0x8f, 0xfd, 0x83, 0xee, 0xfe, 0x9e, 0xd7,
+	0xea, 0xb4, 0x3b, 0xde, 0x96, 0x3d, 0x83, 0xca, 0xb0, 0xf0, 0xa4, 0xd3, 0xf5, 0x9a, 0x78, 0xfd,
+	0x81, 0x6d, 0xa1, 0x05, 0x98, 0x6d, 0x3f, 0x69, 0xb6, 0xec, 0x02, 0x5a, 0x84, 0xd2, 0xce, 0xc1,
+	0x93, 0xe6, 0x33, 0xbb, 0x88, 0xe6, 0xa1, 0xd8, 0xdc, 0xc1, 0xf6, 0x2c, 0x02, 0x98, 0x6b, 0xee,
+	0x60, 0xff, 0xd9, 0xa6, 0x5d, 0x72, 0xee, 0x41, 0x65, 0x8c, 0x02, 0xaa, 0xc1, 0x7c, 0xfc, 0x5c,
+	0x10, 0x49, 0x65, 0xcd, 0x5a, 0x2d, 0xae, 0x2d, 0xe2, 0x5c, 0x74, 0x30, 0xd8, 0x93, 0x2d, 0x88,
+	0xea, 0x30, 0x9f, 0x57, 0xbc, 0x95, 0x55, 0x7c, 0x0e, 0x20, 0x04, 0xc5, 0x44, 0x44, 0xfa, 0x92,
+	0x16, 0xb7, 0x67, 0x70, 0x2a, 0x6c, 0x56, 0xc1, 0x34, 0x84, 0x2f, 0x79, 0x22, 0x02, 0xea, 0x84,
+	0x70, 0x7d, 0x62, 0x0e, 0xca, 0x98, 0x33, 0x49, 0x51, 0x17, 0xe6, 0xf3, 0xd2, 0x2b, 0xac, 0x16,
+	0xd7, 0x96, 0x36, 0x3e, 0x78, 0x8d, 0x34, 0x8e, 0xd0, 0x33, 0x15, 0x8a, 0xf3, 0x20, 0xce, 0x73,
+	0xf8, 0xdf, 0xe4, 0x28, 0x7b, 0x43, 0x27, 0xfd, 0x66, 0x4d, 0x1e, 0xb5, 0x43, 0x15, 0xe9, 0x13,
+	0x45, 0xb2, 0x6a, 0x0a, 0x05, 0x95, 0xd2, 0x8f, 0xa9, 0x08, 0xf2, 0xb4, 0x95, 0x74, 0x35, 0x69,
+	0x7c, 0xcf, 0xc0, 0xe8, 0x11, 0x80, 0x54, 0x44, 0x28, 0x3f, 0xdd, 0x29, 0xd9, 0x78, 0xac, 0xe7,
+	0xc4, 0xf2, 0x85, 0xe3, 0xf6, 0xf2, 0x85, 0x83, 0x17, 0xb5, 0x75, 0x2a, 0xa3, 0x2d, 0xb0, 0x07,
+	0x44, 0x2a, 0x3f, 0x89, 0xfb, 0x44, 0x51, 0x13, 0xa0, 0xf8, 0xb7, 0x01, 0xaa, 0xa9, 0xcf, 0x81,
+	0x76, 0x49, 0x41, 0xe7, 0xc7, 0xe2, 0xf9, 0xa9, 0x34, 0x92, 0xb5, 0x35, 0x28, 0x51, 0x21, 0xb8,
+	0xc8, 0x86, 0x12, 0xca, 0x23, 0x8b, 0x38, 0x70, 0xf7, 0xf5, 0xaa, 0xc3, 0xc6, 0x00, 0x3d, 0x9d,
+	0xcc, 0xef, 0xe5, 0xe7, 0xee, 0x44, 0x8a, 0xd1, 0x5b, 0x50, 0x36, 0x3f, 0xfd, 0x88, 0xf5, 0xe9,
+	0xb1, 0xfe, 0xba, 0x12, 0x5e, 0x32, 0x58, 0x27, 0x85, 0x10, 0x87, 0x65, 0xca, 0xfa, 0x31, 0xd7,
+	0x03, 0xcb, 0x57, 0x27, 0x31, 0xd5, 0x2d, 0x5e, 0xdd, 0x68, 0x5f, 0xea, 0xf4, 0xb3, 0x2f, 0x76,
+	0xbd, 0xd3, 0x70, 0xbd, 0x93, 0x98, 0xe2, 0x2a, 0x1d, 0x93, 0x9d, 0x97, 0x16, 0x54, 0xc7, 0x4d,
+	0xd0, 0x2a, 0xac, 0x78, 0xdd, 0xad, 0xbd, 0xdd, 0x4e, 0xb7, 0xe7, 0x61, 0xdf, 0xfb, 0xc4, 0xeb,
+	0xf6, 0x26, 0xba, 0xf6, 0x2a, 0x2c, 0xef, 0xf7, 0x9a, 0xb8, 0xe7, 0xef, 0xb6, 0xfd, 0xfd, 0x3d,
+	0xcf, 0x6b, 0x6d, 0xdb, 0x16, 0xba, 0x02, 0x15, 0xaf, 0xbb, 0x35, 0x02, 0x15, 0x90, 0x0d, 0xe5,
+	0x0c, 0x6a, 0x1e, 0x6c, 0x75, 0x76, 0xed, 0x22, 0xba, 0x06, 0x76, 0x86, 0x1c, 0xf4, 0x7a, 0x1e,
+	0x6e, 0x76, 0x5b, 0x9e, 0x3d, 0xeb, 0xfc, 0x74, 0xc1, 0x2a, 0x31, 0x09, 0x44, 0x9f, 0x43, 0x79,
+	0x6c, 0xe8, 0x59, 0xfa, 0x3e, 0x1e, 0x5d, 0xae, 0xde, 0x47, 0xe6, 0x23, 0x1e, 0x0b, 0x87, 0x6e,
+	0xc2, 0x42, 0x24, 0xfd, 0xa3, 0x88, 0x91, 0x41, 0xb6, 0x59, 0xe6, 0x23, 0xd9, 0x4e, 0x45, 0xb4,
+	0x02, 0x69, 0x81, 0x1e, 0x46, 0x83, 0x48, 0x9d, 0xe8, 0xeb, 0x2a, 0xe0, 0x33, 0xc0, 0x39, 0x86,
+	0x1b, 0x17, 0xb4, 0xd5, 0x1b, 0xa6, 0xec, 0x7c, 0x01, 0x2b, 0xd3, 0xac, 0xd1, 0x6d, 0x00, 0x25,
+	0x08, 0x93, 0x81, 0x88, 0x62, 0xd3, 0xab, 0x8b, 0x78, 0x04, 0x49, 0xf5, 0x7a, 0xbd, 0xf6, 0x69,
+	0xbe, 0x4e, 0x0b, 0x78, 0x04, 0xd9, 0xf8, 0xbd, 0x08, 0x73, 0xe6, 0x00, 0xf4, 0x9d, 0x05, 0x95,
+	0xb1, 0x59, 0x87, 0xd6, 0xa7, 0x7f, 0xc5, 0x2b, 0x1e, 0x5e, 0xf5, 0x8d, 0xcb, 0xb8, 0x98, 0xc2,
+	0x75, 0xd6, 0x5e, 0xfe, 0xf1, 0xe7, 0xb7, 0x05, 0xc7, 0xb9, 0x75, 0xfa, 0x96, 0x36, 0x6e, 0x8f,
+	0xd3, 0x21, 0x25, 0x72, 0xf3, 0xc7, 0xd6, 0x7d, 0xf4, 0x8d, 0x05, 0xd5, 0xf1, 0xd1, 0x85, 0xa6,
+	0x1f, 0xf8, 0xca, 0xd7, 0x61, 0xfd, 0x56, 0xee, 0x33, 0xf2, 0xba, 0x76, 0x77, 0xf3, 0xd7, 0xb5,
+	0x73, 0x4f, 0xf3, 0xb9, 0xeb, 0xdc, 0x9e, 0xe4, 0x43, 0xce, 0x11, 0xfa, 0xda, 0x02, 0x74, 0xbe,
+	0x25, 0xd1, 0x83, 0x4b, 0xf7, 0xb0, 0x21, 0xf6, 0xf0, 0x1f, 0xf6, 0xfe, 0x9a, 0xf5, 0x9e, 0xb5,
+	0x29, 0xe1, 0x4e, 0xc0, 0x87, 0xd3, 0x22, 0x6c, 0x2e, 0x99, 0xab, 0xde, 0x4b, 0xa7, 0xeb, 0x9e,
+	0xf5, 0x59, 0x33, 0xb3, 0x0d, 0x79, 0xfa, 0xfc, 0x70, 0xb9, 0x08, 0x1b, 0x21, 0x65, 0x7a, 0xf6,
+	0x36, 0x8c, 0x8a, 0xc4, 0x91, 0x7c, 0xe5, 0xdf, 0x9d, 0x0f, 0x8d, 0x78, 0x38, 0xa7, 0xad, 0xdf,
+	0xff, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x25, 0x0d, 0x06, 0x48, 0x1b, 0x0d, 0x00, 0x00,
 }
diff --git a/googleapis/cloud/support/common/common.pb.go b/googleapis/cloud/support/common/common.pb.go
new file mode 100644
index 00000000..9c9daaa9
--- /dev/null
+++ b/googleapis/cloud/support/common/common.pb.go
@@ -0,0 +1,865 @@
+// Code generated by protoc-gen-go.
+// source: google/cloud/support/common.proto
+// DO NOT EDIT!
+
+/*
+Package common is a generated protocol buffer package.
+
+It is generated from these files:
+	google/cloud/support/common.proto
+
+It has these top-level messages:
+	SupportAccount
+	Case
+	CustomerIssue
+	SupportRole
+	Comment
+	IssueTaxonomy
+*/
+package common
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_protobuf1 "github.com/golang/protobuf/ptypes/timestamp"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// The current state of this SupportAccount.
+type SupportAccount_State int32
+
+const (
+	// Account is in an unknown state.
+	SupportAccount_STATE_UNSPECIFIED SupportAccount_State = 0
+	// Account is in an active state.
+	SupportAccount_ACTIVE SupportAccount_State = 1
+	// Account has been created but is being provisioned in support systems.
+	SupportAccount_PENDING SupportAccount_State = 2
+	// Account deletion has been requested by the user.
+	SupportAccount_PENDING_DELETION SupportAccount_State = 3
+)
+
+var SupportAccount_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "ACTIVE",
+	2: "PENDING",
+	3: "PENDING_DELETION",
+}
+var SupportAccount_State_value = map[string]int32{
+	"STATE_UNSPECIFIED": 0,
+	"ACTIVE":            1,
+	"PENDING":           2,
+	"PENDING_DELETION":  3,
+}
+
+func (x SupportAccount_State) String() string {
+	return proto.EnumName(SupportAccount_State_name, int32(x))
+}
+func (SupportAccount_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} }
+
+// Pricing model applicable to this support account.
+type SupportAccount_PricingModel int32
+
+const (
+	// This account is subscribed to an unknown pricing model.
+	SupportAccount_PRICING_MODEL_UNKNOWN SupportAccount_PricingModel = 0
+	// Package based pricing (Platinum, Gold, Silver, Bronze).
+	SupportAccount_PACKAGES SupportAccount_PricingModel = 1
+	// Support charges are calculated based on user seats a.k.a,
+	// "Pick Your Team" model.
+	SupportAccount_USER_ROLES SupportAccount_PricingModel = 2
+)
+
+var SupportAccount_PricingModel_name = map[int32]string{
+	0: "PRICING_MODEL_UNKNOWN",
+	1: "PACKAGES",
+	2: "USER_ROLES",
+}
+var SupportAccount_PricingModel_value = map[string]int32{
+	"PRICING_MODEL_UNKNOWN": 0,
+	"PACKAGES":              1,
+	"USER_ROLES":            2,
+}
+
+func (x SupportAccount_PricingModel) String() string {
+	return proto.EnumName(SupportAccount_PricingModel_name, int32(x))
+}
+func (SupportAccount_PricingModel) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor0, []int{0, 1}
+}
+
+// The case priority with P0 being the most urgent and P4 the least.
+type Case_Priority int32
+
+const (
+	// Priority is undefined or has not been set yet.
+	Case_PRIORITY_UNSPECIFIED Case_Priority = 0
+	// Extreme impact on a production service - Service is hard down.
+	Case_P0 Case_Priority = 1
+	// Critical impact on a production service - Service is currently unusable.
+	Case_P1 Case_Priority = 2
+	// Severe impact on a production service - Service is usable but greatly
+	// impaired.
+	Case_P2 Case_Priority = 3
+	// Medium impact on a production service - Service is available, but
+	// moderately impaired.
+	Case_P3 Case_Priority = 4
+	// General questions or minor issues - Production service is fully
+	// available.
+	Case_P4 Case_Priority = 5
+)
+
+var Case_Priority_name = map[int32]string{
+	0: "PRIORITY_UNSPECIFIED",
+	1: "P0",
+	2: "P1",
+	3: "P2",
+	4: "P3",
+	5: "P4",
+}
+var Case_Priority_value = map[string]int32{
+	"PRIORITY_UNSPECIFIED": 0,
+	"P0": 1,
+	"P1": 2,
+	"P2": 3,
+	"P3": 4,
+	"P4": 5,
+}
+
+func (x Case_Priority) String() string {
+	return proto.EnumName(Case_Priority_name, int32(x))
+}
+func (Case_Priority) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
+
+// The state of a case.
+type Case_State int32
+
+const (
+	// Case is in an unknown state.
+	Case_STATE_UNSPECIFIED Case_State = 0
+	// Case has been created but no one is assigned to work on it yet.
+	Case_NEW Case_State = 1
+	// Case has been assigned to a support agent.
+	Case_ASSIGNED Case_State = 2
+	// A support agent is currently investigating the case.
+	Case_IN_PROGRESS_GOOGLE_SUPPORT Case_State = 3
+	// Case has been forwarded to product team for further investigation.
+	Case_IN_PROGRESS_GOOGLE_ENG Case_State = 4
+	// Case is under investigation and relates to a known issue.
+	Case_IN_PROGRESS_KNOWN_ISSUE Case_State = 5
+	// Case is waiting for a response from the customer.
+	Case_WAITING_FOR_CUSTOMER_RESPONSE Case_State = 6
+	// A solution has been offered for the case but it isn't closed yet.
+	Case_SOLUTION_OFFERED Case_State = 7
+	// Cases has been fully resolved and is in a closed state.
+	Case_CLOSED Case_State = 8
+)
+
+var Case_State_name = map[int32]string{
+	0: "STATE_UNSPECIFIED",
+	1: "NEW",
+	2: "ASSIGNED",
+	3: "IN_PROGRESS_GOOGLE_SUPPORT",
+	4: "IN_PROGRESS_GOOGLE_ENG",
+	5: "IN_PROGRESS_KNOWN_ISSUE",
+	6: "WAITING_FOR_CUSTOMER_RESPONSE",
+	7: "SOLUTION_OFFERED",
+	8: "CLOSED",
+}
+var Case_State_value = map[string]int32{
+	"STATE_UNSPECIFIED":             0,
+	"NEW":                           1,
+	"ASSIGNED":                      2,
+	"IN_PROGRESS_GOOGLE_SUPPORT":    3,
+	"IN_PROGRESS_GOOGLE_ENG":        4,
+	"IN_PROGRESS_KNOWN_ISSUE":       5,
+	"WAITING_FOR_CUSTOMER_RESPONSE": 6,
+	"SOLUTION_OFFERED":              7,
+	"CLOSED":                        8,
+}
+
+func (x Case_State) String() string {
+	return proto.EnumName(Case_State_name, int32(x))
+}
+func (Case_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} }
+
+// The status of a customer issue.
+type CustomerIssue_IssueState int32
+
+const (
+	// Issue in an unknown state.
+	CustomerIssue_ISSUE_STATE_UNSPECIFIED CustomerIssue_IssueState = 0
+	// Issue is currently open but the work on it has not been started.
+	CustomerIssue_OPEN CustomerIssue_IssueState = 1
+	// Issue is currently being worked on.
+	CustomerIssue_IN_PROGRESS CustomerIssue_IssueState = 2
+	// Issue is fixed.
+	CustomerIssue_FIXED CustomerIssue_IssueState = 3
+	// Issue has been marked as invalid.
+	CustomerIssue_WONT_FIX CustomerIssue_IssueState = 4
+	// Issue verified and in production.
+	CustomerIssue_VERIFIED CustomerIssue_IssueState = 5
+)
+
+var CustomerIssue_IssueState_name = map[int32]string{
+	0: "ISSUE_STATE_UNSPECIFIED",
+	1: "OPEN",
+	2: "IN_PROGRESS",
+	3: "FIXED",
+	4: "WONT_FIX",
+	5: "VERIFIED",
+}
+var CustomerIssue_IssueState_value = map[string]int32{
+	"ISSUE_STATE_UNSPECIFIED": 0,
+	"OPEN":        1,
+	"IN_PROGRESS": 2,
+	"FIXED":       3,
+	"WONT_FIX":    4,
+	"VERIFIED":    5,
+}
+
+func (x CustomerIssue_IssueState) String() string {
+	return proto.EnumName(CustomerIssue_IssueState_name, int32(x))
+}
+func (CustomerIssue_IssueState) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
+
+// A role which determines the support resources and features a user might
+// get access to.
+type SupportRole_Role int32
+
+const (
+	// An unknown role.
+	SupportRole_ROLE_UNSPECIFIED SupportRole_Role = 0
+	// The basic support role.
+	SupportRole_BASIC SupportRole_Role = 1
+	// The developer role.
+	SupportRole_DEVELOPER SupportRole_Role = 2
+	// The operation role.
+	SupportRole_OPERATION SupportRole_Role = 3
+	// The site reliability role.
+	SupportRole_SITE_RELIABILITY SupportRole_Role = 4
+)
+
+var SupportRole_Role_name = map[int32]string{
+	0: "ROLE_UNSPECIFIED",
+	1: "BASIC",
+	2: "DEVELOPER",
+	3: "OPERATION",
+	4: "SITE_RELIABILITY",
+}
+var SupportRole_Role_value = map[string]int32{
+	"ROLE_UNSPECIFIED": 0,
+	"BASIC":            1,
+	"DEVELOPER":        2,
+	"OPERATION":        3,
+	"SITE_RELIABILITY": 4,
+}
+
+func (x SupportRole_Role) String() string {
+	return proto.EnumName(SupportRole_Role_name, int32(x))
+}
+func (SupportRole_Role) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} }
+
+// A Google Cloud Platform account that identifies support eligibility for a
+// Cloud resource. Currently the Cloud resource can only be an Organization
+// but this might change in future.
+type SupportAccount struct {
+	// The resource name for a support account in format
+	// `supportAccounts/{account_id}`.
+	// Output only.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// Identifier for this entity that gets persisted in storage system. The
+	// resource name is populated using this field in format
+	// `supportAccounts/{account_id}`.
+	AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId" json:"account_id,omitempty"`
+	// The Cloud resource with which this support account is associated.
+	CloudResource string `protobuf:"bytes,3,opt,name=cloud_resource,json=cloudResource" json:"cloud_resource,omitempty"`
+	// A user friendly display name assigned to this support account.
+	DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+	// Indicates the current state of an account.
+	State SupportAccount_State `protobuf:"varint,5,opt,name=state,enum=google.cloud.support.common.SupportAccount_State" json:"state,omitempty"`
+	// Time when this account was created.
+	// Output only.
+	CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+	// The resource name of a billing account associated with this support
+	// account. For example, `billingAccounts/ABCDEF-012345-567890`.
+	BillingAccountName string `protobuf:"bytes,7,opt,name=billing_account_name,json=billingAccountName" json:"billing_account_name,omitempty"`
+	UnifyAccountId     string `protobuf:"bytes,8,opt,name=unify_account_id,json=unifyAccountId" json:"unify_account_id,omitempty"`
+	// The PricingModel applicable to this support account.
+	PricingModel SupportAccount_PricingModel `protobuf:"varint,9,opt,name=pricing_model,json=pricingModel,enum=google.cloud.support.common.SupportAccount_PricingModel" json:"pricing_model,omitempty"`
+}
+
+func (m *SupportAccount) Reset()                    { *m = SupportAccount{} }
+func (m *SupportAccount) String() string            { return proto.CompactTextString(m) }
+func (*SupportAccount) ProtoMessage()               {}
+func (*SupportAccount) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *SupportAccount) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *SupportAccount) GetAccountId() string {
+	if m != nil {
+		return m.AccountId
+	}
+	return ""
+}
+
+func (m *SupportAccount) GetCloudResource() string {
+	if m != nil {
+		return m.CloudResource
+	}
+	return ""
+}
+
+func (m *SupportAccount) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *SupportAccount) GetState() SupportAccount_State {
+	if m != nil {
+		return m.State
+	}
+	return SupportAccount_STATE_UNSPECIFIED
+}
+
+func (m *SupportAccount) GetCreateTime() *google_protobuf1.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *SupportAccount) GetBillingAccountName() string {
+	if m != nil {
+		return m.BillingAccountName
+	}
+	return ""
+}
+
+func (m *SupportAccount) GetUnifyAccountId() string {
+	if m != nil {
+		return m.UnifyAccountId
+	}
+	return ""
+}
+
+func (m *SupportAccount) GetPricingModel() SupportAccount_PricingModel {
+	if m != nil {
+		return m.PricingModel
+	}
+	return SupportAccount_PRICING_MODEL_UNKNOWN
+}
+
+// A support case created by the user.
+type Case struct {
+	// The resource name for the Case in format
+	// `supportAccounts/{account_id}/cases/{case_id}`
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// The short summary of the issue reported in this case.
+	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+	// The board description of issue provided with initial summary.
+	Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
+	// The product component for which this Case is reported.
+	Component string `protobuf:"bytes,4,opt,name=component" json:"component,omitempty"`
+	// The product subcomponent for which this Case is reported.
+	Subcomponent string `protobuf:"bytes,5,opt,name=subcomponent" json:"subcomponent,omitempty"`
+	// Timezone the client sending this request is in.
+	// It should be in a format IANA recognizes: https://www.iana.org/time-zone
+	// There is no additional validation done by the API.
+	ClientTimezone string `protobuf:"bytes,6,opt,name=client_timezone,json=clientTimezone" json:"client_timezone,omitempty"`
+	// The email addresses that can be copied to receive updates on this case.
+	// Users can specify a maximum of 10 email addresses.
+	CcAddresses []string `protobuf:"bytes,7,rep,name=cc_addresses,json=ccAddresses" json:"cc_addresses,omitempty"`
+	// The Google Cloud Platform project ID for which this case is created.
+	ProjectId string `protobuf:"bytes,8,opt,name=project_id,json=projectId" json:"project_id,omitempty"`
+	// List of customer issues associated with this case.
+	Issues []*CustomerIssue `protobuf:"bytes,10,rep,name=issues" json:"issues,omitempty"`
+	// The current priority of this case.
+	Priority Case_Priority `protobuf:"varint,11,opt,name=priority,enum=google.cloud.support.common.Case_Priority" json:"priority,omitempty"`
+	// The current state of this case.
+	State Case_State `protobuf:"varint,12,opt,name=state,enum=google.cloud.support.common.Case_State" json:"state,omitempty"`
+	// Time when this case was created.
+	// Output only.
+	CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,13,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+	// Time when this case was last updated.
+	// Output only.
+	UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,14,opt,name=update_time,json=updateTime" json:"update_time,omitempty"`
+	// Email address of user who created this case.
+	// Output only. It is inferred from credentials supplied during case creation.
+	CreatorEmail string `protobuf:"bytes,15,opt,name=creator_email,json=creatorEmail" json:"creator_email,omitempty"`
+	// The issue category applicable to this case.
+	Category string `protobuf:"bytes,16,opt,name=category" json:"category,omitempty"`
+}
+
+func (m *Case) Reset()                    { *m = Case{} }
+func (m *Case) String() string            { return proto.CompactTextString(m) }
+func (*Case) ProtoMessage()               {}
+func (*Case) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *Case) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Case) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *Case) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+func (m *Case) GetComponent() string {
+	if m != nil {
+		return m.Component
+	}
+	return ""
+}
+
+func (m *Case) GetSubcomponent() string {
+	if m != nil {
+		return m.Subcomponent
+	}
+	return ""
+}
+
+func (m *Case) GetClientTimezone() string {
+	if m != nil {
+		return m.ClientTimezone
+	}
+	return ""
+}
+
+func (m *Case) GetCcAddresses() []string {
+	if m != nil {
+		return m.CcAddresses
+	}
+	return nil
+}
+
+func (m *Case) GetProjectId() string {
+	if m != nil {
+		return m.ProjectId
+	}
+	return ""
+}
+
+func (m *Case) GetIssues() []*CustomerIssue {
+	if m != nil {
+		return m.Issues
+	}
+	return nil
+}
+
+func (m *Case) GetPriority() Case_Priority {
+	if m != nil {
+		return m.Priority
+	}
+	return Case_PRIORITY_UNSPECIFIED
+}
+
+func (m *Case) GetState() Case_State {
+	if m != nil {
+		return m.State
+	}
+	return Case_STATE_UNSPECIFIED
+}
+
+func (m *Case) GetCreateTime() *google_protobuf1.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *Case) GetUpdateTime() *google_protobuf1.Timestamp {
+	if m != nil {
+		return m.UpdateTime
+	}
+	return nil
+}
+
+func (m *Case) GetCreatorEmail() string {
+	if m != nil {
+		return m.CreatorEmail
+	}
+	return ""
+}
+
+func (m *Case) GetCategory() string {
+	if m != nil {
+		return m.Category
+	}
+	return ""
+}
+
+// Reference to a Google internal ticket used for investigating a support case.
+// Not every support case will have an internal ticket associated with it.
+// A support case can have multiple tickets linked to it.
+type CustomerIssue struct {
+	// Unique identifier for the internal issue.
+	// Output only.
+	IssueId string `protobuf:"bytes,1,opt,name=issue_id,json=issueId" json:"issue_id,omitempty"`
+	// Represents current status of the internal ticket.
+	// Output only.
+	State CustomerIssue_IssueState `protobuf:"varint,2,opt,name=state,enum=google.cloud.support.common.CustomerIssue_IssueState" json:"state,omitempty"`
+	// Time when the internal issue was created.
+	// Output only.
+	CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+	// Time when the internal issue was marked as resolved.
+	// Output only.
+	ResolveTime *google_protobuf1.Timestamp `protobuf:"bytes,4,opt,name=resolve_time,json=resolveTime" json:"resolve_time,omitempty"`
+	// Time when the internal issue was last updated.
+	// Output only.
+	UpdateTime *google_protobuf1.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime" json:"update_time,omitempty"`
+}
+
+func (m *CustomerIssue) Reset()                    { *m = CustomerIssue{} }
+func (m *CustomerIssue) String() string            { return proto.CompactTextString(m) }
+func (*CustomerIssue) ProtoMessage()               {}
+func (*CustomerIssue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *CustomerIssue) GetIssueId() string {
+	if m != nil {
+		return m.IssueId
+	}
+	return ""
+}
+
+func (m *CustomerIssue) GetState() CustomerIssue_IssueState {
+	if m != nil {
+		return m.State
+	}
+	return CustomerIssue_ISSUE_STATE_UNSPECIFIED
+}
+
+func (m *CustomerIssue) GetCreateTime() *google_protobuf1.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *CustomerIssue) GetResolveTime() *google_protobuf1.Timestamp {
+	if m != nil {
+		return m.ResolveTime
+	}
+	return nil
+}
+
+func (m *CustomerIssue) GetUpdateTime() *google_protobuf1.Timestamp {
+	if m != nil {
+		return m.UpdateTime
+	}
+	return nil
+}
+
+// A message that contains mapping of a user and their role under a support
+// account.
+type SupportRole struct {
+	// Email address of user being added through this Role.
+	Email string `protobuf:"bytes,1,opt,name=email" json:"email,omitempty"`
+	// The type of role assigned to user.
+	Role SupportRole_Role `protobuf:"varint,2,opt,name=role,enum=google.cloud.support.common.SupportRole_Role" json:"role,omitempty"`
+}
+
+func (m *SupportRole) Reset()                    { *m = SupportRole{} }
+func (m *SupportRole) String() string            { return proto.CompactTextString(m) }
+func (*SupportRole) ProtoMessage()               {}
+func (*SupportRole) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *SupportRole) GetEmail() string {
+	if m != nil {
+		return m.Email
+	}
+	return ""
+}
+
+func (m *SupportRole) GetRole() SupportRole_Role {
+	if m != nil {
+		return m.Role
+	}
+	return SupportRole_ROLE_UNSPECIFIED
+}
+
+// The comment text associated with a `Case`.
+type Comment struct {
+	// Text containing a maximum of 3000 characters.
+	Text string `protobuf:"bytes,1,opt,name=text" json:"text,omitempty"`
+	// Time when this update was created.
+	// Output only.
+	CreateTime *google_protobuf1.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime" json:"create_time,omitempty"`
+	// The email address/name of user who created this comment.
+	// Output only.
+	Author string `protobuf:"bytes,3,opt,name=author" json:"author,omitempty"`
+	// The resource name for this comment in format
+	// `supportAccounts/{account_id}/cases/{case_id}/{comment_id}`.
+	// Output only.
+	Name string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *Comment) Reset()                    { *m = Comment{} }
+func (m *Comment) String() string            { return proto.CompactTextString(m) }
+func (*Comment) ProtoMessage()               {}
+func (*Comment) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+func (m *Comment) GetText() string {
+	if m != nil {
+		return m.Text
+	}
+	return ""
+}
+
+func (m *Comment) GetCreateTime() *google_protobuf1.Timestamp {
+	if m != nil {
+		return m.CreateTime
+	}
+	return nil
+}
+
+func (m *Comment) GetAuthor() string {
+	if m != nil {
+		return m.Author
+	}
+	return ""
+}
+
+func (m *Comment) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Represents the product component taxonomy that is to be used while creating
+// or updating a `Case`. A client should obtain the list of issue categories,
+// component/subcomponent from this object and specify it in `Case.category`,
+// `Case.component` and `Case.subcomponent` fields respectively.
+type IssueTaxonomy struct {
+	// Map of available categories.
+	Categories map[string]*IssueTaxonomy_Category `protobuf:"bytes,1,rep,name=categories" json:"categories,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+}
+
+func (m *IssueTaxonomy) Reset()                    { *m = IssueTaxonomy{} }
+func (m *IssueTaxonomy) String() string            { return proto.CompactTextString(m) }
+func (*IssueTaxonomy) ProtoMessage()               {}
+func (*IssueTaxonomy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+func (m *IssueTaxonomy) GetCategories() map[string]*IssueTaxonomy_Category {
+	if m != nil {
+		return m.Categories
+	}
+	return nil
+}
+
+// The representation of a product component. It is composed of a canonical
+// name for the product (e.g., Google App Engine), languages in which a
+// support ticket can be created under this component, a template that
+// provides hints on important details to be filled out before submitting a
+// case. It also contains an embedded list of product subcomponents that have
+// similar attributes as top-level components.
+// (e.g., Google App Engine > Memcache).
+type IssueTaxonomy_Component struct {
+	// User friendly name of this component.
+	DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+	// List of languages in which a support case can be created under this
+	// component. Represented by language codes in ISO_639-1 standard.
+	Languages []string `protobuf:"bytes,2,rep,name=languages" json:"languages,omitempty"`
+	// Template to be used while filling the description of a support case.
+	Template string `protobuf:"bytes,3,opt,name=template" json:"template,omitempty"`
+	// List of subcomponents under this component.
+	Subcomponents []*IssueTaxonomy_Component `protobuf:"bytes,4,rep,name=subcomponents" json:"subcomponents,omitempty"`
+}
+
+func (m *IssueTaxonomy_Component) Reset()                    { *m = IssueTaxonomy_Component{} }
+func (m *IssueTaxonomy_Component) String() string            { return proto.CompactTextString(m) }
+func (*IssueTaxonomy_Component) ProtoMessage()               {}
+func (*IssueTaxonomy_Component) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 0} }
+
+func (m *IssueTaxonomy_Component) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *IssueTaxonomy_Component) GetLanguages() []string {
+	if m != nil {
+		return m.Languages
+	}
+	return nil
+}
+
+func (m *IssueTaxonomy_Component) GetTemplate() string {
+	if m != nil {
+		return m.Template
+	}
+	return ""
+}
+
+func (m *IssueTaxonomy_Component) GetSubcomponents() []*IssueTaxonomy_Component {
+	if m != nil {
+		return m.Subcomponents
+	}
+	return nil
+}
+
+// Represents the category of issue (Technical or Non-Technical)
+// reported through a support case.
+type IssueTaxonomy_Category struct {
+	// User friendly name of this category.
+	DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName" json:"display_name,omitempty"`
+	// Map of product components under this category.
+	Components map[string]*IssueTaxonomy_Component `protobuf:"bytes,2,rep,name=components" json:"components,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+}
+
+func (m *IssueTaxonomy_Category) Reset()                    { *m = IssueTaxonomy_Category{} }
+func (m *IssueTaxonomy_Category) String() string            { return proto.CompactTextString(m) }
+func (*IssueTaxonomy_Category) ProtoMessage()               {}
+func (*IssueTaxonomy_Category) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5, 1} }
+
+func (m *IssueTaxonomy_Category) GetDisplayName() string {
+	if m != nil {
+		return m.DisplayName
+	}
+	return ""
+}
+
+func (m *IssueTaxonomy_Category) GetComponents() map[string]*IssueTaxonomy_Component {
+	if m != nil {
+		return m.Components
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*SupportAccount)(nil), "google.cloud.support.common.SupportAccount")
+	proto.RegisterType((*Case)(nil), "google.cloud.support.common.Case")
+	proto.RegisterType((*CustomerIssue)(nil), "google.cloud.support.common.CustomerIssue")
+	proto.RegisterType((*SupportRole)(nil), "google.cloud.support.common.SupportRole")
+	proto.RegisterType((*Comment)(nil), "google.cloud.support.common.Comment")
+	proto.RegisterType((*IssueTaxonomy)(nil), "google.cloud.support.common.IssueTaxonomy")
+	proto.RegisterType((*IssueTaxonomy_Component)(nil), "google.cloud.support.common.IssueTaxonomy.Component")
+	proto.RegisterType((*IssueTaxonomy_Category)(nil), "google.cloud.support.common.IssueTaxonomy.Category")
+	proto.RegisterEnum("google.cloud.support.common.SupportAccount_State", SupportAccount_State_name, SupportAccount_State_value)
+	proto.RegisterEnum("google.cloud.support.common.SupportAccount_PricingModel", SupportAccount_PricingModel_name, SupportAccount_PricingModel_value)
+	proto.RegisterEnum("google.cloud.support.common.Case_Priority", Case_Priority_name, Case_Priority_value)
+	proto.RegisterEnum("google.cloud.support.common.Case_State", Case_State_name, Case_State_value)
+	proto.RegisterEnum("google.cloud.support.common.CustomerIssue_IssueState", CustomerIssue_IssueState_name, CustomerIssue_IssueState_value)
+	proto.RegisterEnum("google.cloud.support.common.SupportRole_Role", SupportRole_Role_name, SupportRole_Role_value)
+}
+
+func init() { proto.RegisterFile("google/cloud/support/common.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 1336 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x61, 0x6e, 0xdb, 0xc6,
+	0x12, 0x0e, 0x29, 0xc9, 0x92, 0x46, 0x96, 0xbd, 0x59, 0x38, 0x79, 0x8c, 0x92, 0xbc, 0x38, 0x7a,
+	0x78, 0x88, 0x51, 0xa0, 0x72, 0xe2, 0xa4, 0x40, 0x90, 0x20, 0x3f, 0x64, 0x6a, 0x2d, 0xb0, 0x91,
+	0x49, 0x82, 0xa4, 0xe3, 0x24, 0x45, 0x41, 0xd0, 0xd4, 0x46, 0x65, 0x43, 0x72, 0x09, 0x92, 0x4a,
+	0xa3, 0x1e, 0xa0, 0x3d, 0x45, 0xef, 0xd0, 0x5f, 0xbd, 0x40, 0x7b, 0x83, 0xde, 0xa1, 0xe7, 0x28,
+	0x76, 0x49, 0xc9, 0xb2, 0x63, 0xd8, 0x51, 0xfe, 0x68, 0x39, 0xb3, 0x33, 0xb3, 0x33, 0xb3, 0xdf,
+	0xb7, 0x63, 0xc3, 0xfd, 0x09, 0x63, 0x93, 0x90, 0xee, 0xfa, 0x21, 0x9b, 0x8e, 0x77, 0xb3, 0x69,
+	0x92, 0xb0, 0x34, 0xdf, 0xf5, 0x59, 0x14, 0xb1, 0xb8, 0x97, 0xa4, 0x2c, 0x67, 0xf8, 0x76, 0x61,
+	0xd2, 0x13, 0x26, 0xbd, 0xd2, 0xa4, 0x57, 0x98, 0x74, 0xee, 0x94, 0xfe, 0x5e, 0x12, 0xec, 0x7a,
+	0x71, 0xcc, 0x72, 0x2f, 0x0f, 0x58, 0x9c, 0x15, 0xae, 0x9d, 0x7b, 0xe5, 0xae, 0x90, 0x4e, 0xa6,
+	0xef, 0x76, 0xf3, 0x20, 0xa2, 0x59, 0xee, 0x45, 0x49, 0x61, 0xd0, 0xfd, 0xa7, 0x0a, 0x1b, 0x76,
+	0x11, 0xb1, 0xef, 0xfb, 0x6c, 0x1a, 0xe7, 0x18, 0x43, 0x35, 0xf6, 0x22, 0xaa, 0x48, 0xdb, 0xd2,
+	0x4e, 0xd3, 0x12, 0xdf, 0xf8, 0x2e, 0x80, 0x57, 0x6c, 0xbb, 0xc1, 0x58, 0x91, 0xc5, 0x4e, 0xb3,
+	0xd4, 0x68, 0x63, 0xfc, 0x7f, 0xd8, 0x10, 0xc9, 0xb9, 0x29, 0xcd, 0xd8, 0x34, 0xf5, 0xa9, 0x52,
+	0x11, 0x26, 0x6d, 0xa1, 0xb5, 0x4a, 0x25, 0xbe, 0x0f, 0xeb, 0xe3, 0x20, 0x4b, 0x42, 0x6f, 0xe6,
+	0x8a, 0x13, 0xaa, 0xc2, 0xa8, 0x55, 0xea, 0x74, 0x7e, 0xd0, 0x10, 0x6a, 0x59, 0xee, 0xe5, 0x54,
+	0xa9, 0x6d, 0x4b, 0x3b, 0x1b, 0x7b, 0x8f, 0x7a, 0x97, 0xd4, 0xde, 0x3b, 0x9b, 0x78, 0xcf, 0xe6,
+	0x8e, 0x56, 0xe1, 0x8f, 0x9f, 0x43, 0xcb, 0x4f, 0xa9, 0x97, 0x53, 0x97, 0x97, 0xac, 0xac, 0x6d,
+	0x4b, 0x3b, 0xad, 0xbd, 0xce, 0x3c, 0xdc, 0xbc, 0x1f, 0x3d, 0x67, 0xde, 0x0f, 0x0b, 0x0a, 0x73,
+	0xae, 0xc0, 0x0f, 0x61, 0xeb, 0x24, 0x08, 0xc3, 0x20, 0x9e, 0xb8, 0xf3, 0xb2, 0x45, 0xc2, 0x75,
+	0x91, 0x30, 0x2e, 0xf7, 0xca, 0x73, 0x45, 0xde, 0x3b, 0x80, 0xa6, 0x71, 0xf0, 0x6e, 0xe6, 0x2e,
+	0xb5, 0xa9, 0x21, 0xac, 0x37, 0x84, 0xbe, 0xbf, 0xe8, 0xd5, 0xf7, 0xd0, 0x4e, 0xd2, 0xc0, 0xe7,
+	0xb1, 0x23, 0x36, 0xa6, 0xa1, 0xd2, 0x14, 0x95, 0x3e, 0x5d, 0xa5, 0x52, 0xb3, 0x08, 0x70, 0xc8,
+	0xfd, 0xad, 0xf5, 0x64, 0x49, 0xea, 0x1e, 0x42, 0x4d, 0xf4, 0x01, 0xdf, 0x80, 0xeb, 0xb6, 0xd3,
+	0x77, 0x88, 0x7b, 0xa4, 0xdb, 0x26, 0x51, 0xb5, 0x03, 0x8d, 0x0c, 0xd0, 0x35, 0x0c, 0xb0, 0xd6,
+	0x57, 0x1d, 0xed, 0x15, 0x41, 0x12, 0x6e, 0x41, 0xdd, 0x24, 0xfa, 0x40, 0xd3, 0x87, 0x48, 0xc6,
+	0x5b, 0x80, 0x4a, 0xc1, 0x1d, 0x90, 0x11, 0x71, 0x34, 0x43, 0x47, 0x95, 0xee, 0x10, 0xd6, 0x97,
+	0x0f, 0xc3, 0xb7, 0xe0, 0x86, 0x69, 0x69, 0x2a, 0xb7, 0x3a, 0x34, 0x06, 0x64, 0xe4, 0x1e, 0xe9,
+	0x2f, 0x75, 0xe3, 0x58, 0x47, 0xd7, 0xf0, 0x3a, 0x34, 0xcc, 0xbe, 0xfa, 0xb2, 0x3f, 0x24, 0x36,
+	0x92, 0xf0, 0x06, 0xc0, 0x91, 0x4d, 0x2c, 0xd7, 0x32, 0x46, 0xc4, 0x46, 0x72, 0xf7, 0x8f, 0x3a,
+	0x54, 0x55, 0x2f, 0xa3, 0x17, 0xc2, 0xeb, 0x3c, 0x30, 0xe4, 0x4f, 0x81, 0xb1, 0x0d, 0xad, 0x31,
+	0xcd, 0xfc, 0x34, 0x48, 0x38, 0xbe, 0x4b, 0x7c, 0x2d, 0xab, 0xf0, 0x1d, 0x68, 0xfa, 0x2c, 0x4a,
+	0x58, 0x4c, 0xe3, 0xbc, 0x84, 0xd6, 0xa9, 0x02, 0x77, 0x61, 0x3d, 0x9b, 0x9e, 0x9c, 0x1a, 0xd4,
+	0x84, 0xc1, 0x19, 0x1d, 0x7e, 0x00, 0x9b, 0x7e, 0x18, 0xd0, 0x38, 0x17, 0x98, 0xf9, 0x99, 0xc5,
+	0x05, 0x6e, 0x9a, 0xd6, 0x46, 0xa1, 0x76, 0x4a, 0x2d, 0xcf, 0xd7, 0xf7, 0x5d, 0x6f, 0x3c, 0x4e,
+	0x69, 0x96, 0xd1, 0x4c, 0xa9, 0x6f, 0x57, 0x78, 0x36, 0xbe, 0xdf, 0x9f, 0xab, 0x38, 0x63, 0x92,
+	0x94, 0xfd, 0x48, 0xfd, 0x25, 0x28, 0x34, 0x4b, 0x8d, 0x36, 0xc6, 0xfb, 0xb0, 0x16, 0x64, 0xd9,
+	0x94, 0x66, 0x0a, 0x6c, 0x57, 0x76, 0x5a, 0x7b, 0x5f, 0x5d, 0x7a, 0xfd, 0xea, 0x34, 0xcb, 0x59,
+	0x44, 0x53, 0x8d, 0xbb, 0x58, 0xa5, 0x27, 0x3e, 0x80, 0x46, 0x92, 0x06, 0x2c, 0x0d, 0xf2, 0x99,
+	0xd2, 0x12, 0x20, 0xba, 0x22, 0x8a, 0x97, 0x51, 0x0e, 0x1d, 0xe1, 0x61, 0x2d, 0x7c, 0xf1, 0x8b,
+	0x39, 0xe7, 0xd6, 0x45, 0x90, 0x07, 0x57, 0x07, 0xb9, 0x8c, 0x69, 0xed, 0x95, 0x98, 0xf6, 0x1c,
+	0x5a, 0xd3, 0x64, 0xbc, 0x70, 0xde, 0xb8, 0xda, 0xb9, 0x30, 0x17, 0xce, 0xff, 0x83, 0xb6, 0x08,
+	0xc5, 0x52, 0x97, 0x46, 0x5e, 0x10, 0x2a, 0x9b, 0xc5, 0xa5, 0x96, 0x4a, 0xc2, 0x75, 0xb8, 0x03,
+	0x0d, 0xdf, 0xcb, 0xe9, 0x84, 0xa5, 0x33, 0x05, 0x89, 0xfd, 0x85, 0xdc, 0x1d, 0x41, 0x63, 0xde,
+	0x0f, 0xac, 0xc0, 0x96, 0x69, 0x69, 0x86, 0xa5, 0x39, 0x6f, 0xce, 0x51, 0x66, 0x0d, 0x64, 0xf3,
+	0x21, 0x92, 0xc4, 0xfa, 0x08, 0xc9, 0x62, 0xdd, 0x43, 0x15, 0xb1, 0x3e, 0x46, 0x55, 0xb1, 0x3e,
+	0x41, 0xb5, 0xee, 0xdf, 0xd2, 0x15, 0xdc, 0xab, 0x43, 0x45, 0x27, 0xc7, 0x48, 0xe2, 0x54, 0xe9,
+	0xdb, 0xb6, 0x36, 0xd4, 0xc9, 0x00, 0xc9, 0xf8, 0xbf, 0xd0, 0xd1, 0x74, 0xd7, 0xb4, 0x8c, 0xa1,
+	0x45, 0x6c, 0xdb, 0x1d, 0x1a, 0xc6, 0x70, 0x44, 0x5c, 0xfb, 0xc8, 0x34, 0x0d, 0xcb, 0x41, 0x15,
+	0xdc, 0x81, 0x9b, 0x17, 0xec, 0x13, 0x7d, 0x88, 0xaa, 0xf8, 0x36, 0xfc, 0x67, 0x79, 0x4f, 0x70,
+	0xd1, 0xd5, 0x6c, 0xfb, 0x88, 0xa0, 0x1a, 0xbe, 0x0f, 0x77, 0x8f, 0xfb, 0x9a, 0xc3, 0xc9, 0x7a,
+	0x60, 0x58, 0xae, 0x7a, 0x64, 0x3b, 0xc6, 0x21, 0xe7, 0x24, 0xb1, 0x4d, 0x43, 0xb7, 0x09, 0x5a,
+	0xe3, 0xac, 0xb7, 0x8d, 0xd1, 0x11, 0x67, 0xbb, 0x6b, 0x1c, 0x1c, 0x10, 0x8b, 0x0c, 0x50, 0x9d,
+	0x3f, 0x12, 0xea, 0xc8, 0xb0, 0xc9, 0x00, 0x35, 0xba, 0xbf, 0x55, 0xa0, 0x7d, 0x06, 0x7f, 0xf8,
+	0x16, 0x34, 0x04, 0x02, 0x39, 0xb0, 0x0b, 0x16, 0xd7, 0x85, 0xac, 0x8d, 0xf1, 0xcb, 0x39, 0x94,
+	0x64, 0x01, 0xa5, 0x6f, 0x3e, 0x1f, 0xd5, 0x3d, 0xf1, 0x7b, 0x19, 0xb0, 0x2a, 0x2b, 0x01, 0xeb,
+	0x05, 0xac, 0xf3, 0x61, 0x14, 0x7e, 0x28, 0xbd, 0xab, 0x57, 0x7a, 0xb7, 0x4a, 0xfb, 0x8b, 0x70,
+	0x59, 0x5b, 0x05, 0x97, 0xdd, 0xf7, 0x00, 0xa7, 0xd5, 0x88, 0x2b, 0xe2, 0x17, 0xe2, 0x5e, 0x04,
+	0x89, 0x06, 0x54, 0x0d, 0x93, 0xe8, 0x48, 0xc2, 0x9b, 0xd0, 0x5a, 0xba, 0x49, 0x24, 0xe3, 0x26,
+	0xd4, 0x0e, 0xb4, 0xd7, 0x64, 0x80, 0x2a, 0x1c, 0x2f, 0xc7, 0x86, 0xee, 0xb8, 0x07, 0xda, 0x6b,
+	0x54, 0xe5, 0xd2, 0x2b, 0x62, 0x15, 0x11, 0x6a, 0xdd, 0x3f, 0x25, 0x68, 0x95, 0xe3, 0xc1, 0x62,
+	0x21, 0xc5, 0x5b, 0x50, 0x2b, 0xc8, 0x50, 0x5c, 0x4d, 0x21, 0xe0, 0x3e, 0x54, 0x53, 0x16, 0xce,
+	0xef, 0xe5, 0xeb, 0xcf, 0x19, 0x36, 0x3c, 0x5a, 0x8f, 0xff, 0x58, 0xc2, 0xb5, 0xfb, 0x1d, 0x54,
+	0xcb, 0x03, 0x10, 0x7f, 0xd4, 0xcf, 0x15, 0xd2, 0x84, 0xda, 0x7e, 0xdf, 0xd6, 0x54, 0x24, 0xe1,
+	0x36, 0x34, 0x07, 0xe4, 0x15, 0x19, 0x19, 0x26, 0xb1, 0x90, 0xcc, 0x45, 0xfe, 0xd5, 0x2f, 0x26,
+	0x8a, 0x40, 0x9c, 0xe6, 0x10, 0xd7, 0x22, 0x23, 0xad, 0xbf, 0xaf, 0x8d, 0x34, 0xe7, 0x0d, 0xaa,
+	0x76, 0x7f, 0x91, 0xa0, 0xae, 0xb2, 0x28, 0xa2, 0xc5, 0x1f, 0x20, 0x39, 0xfd, 0x98, 0xcf, 0x27,
+	0x04, 0xff, 0x3e, 0x8f, 0x05, 0x79, 0x25, 0x2c, 0xdc, 0x84, 0x35, 0x6f, 0x9a, 0xff, 0xc0, 0xd2,
+	0x72, 0x6c, 0x94, 0xd2, 0x62, 0x14, 0x55, 0x4f, 0x47, 0x51, 0xf7, 0xf7, 0x1a, 0xb4, 0xc5, 0xe5,
+	0x39, 0xde, 0x47, 0x16, 0xb3, 0x68, 0x86, 0xdf, 0x02, 0x94, 0x0f, 0x46, 0x40, 0x33, 0x45, 0x12,
+	0xcf, 0xf5, 0xb3, 0x4b, 0x1b, 0x78, 0xc6, 0xbf, 0xa7, 0x2e, 0x9c, 0x49, 0x9c, 0xa7, 0x33, 0x6b,
+	0x29, 0x5a, 0xe7, 0x2f, 0x09, 0x9a, 0xea, 0x62, 0xfe, 0x9c, 0x1f, 0x83, 0xd2, 0xa7, 0x63, 0xf0,
+	0x0e, 0x34, 0x43, 0x2f, 0x9e, 0x4c, 0xbd, 0x09, 0xcd, 0x14, 0x59, 0x8c, 0x9d, 0x53, 0x05, 0x7f,
+	0xeb, 0x72, 0x1a, 0x25, 0x21, 0x67, 0x60, 0x51, 0xea, 0x42, 0xc6, 0x6f, 0xa1, 0xbd, 0x3c, 0xec,
+	0x32, 0xa5, 0x2a, 0x2a, 0x79, 0xb2, 0x4a, 0x25, 0x73, 0x67, 0xeb, 0x6c, 0xa8, 0xce, 0xaf, 0x32,
+	0x34, 0xca, 0x32, 0x67, 0x9f, 0x53, 0x85, 0x0f, 0xb0, 0x94, 0x88, 0x2c, 0x12, 0x51, 0x57, 0x6f,
+	0xe9, 0x52, 0x46, 0x8b, 0xde, 0x9e, 0x26, 0x95, 0xc1, 0xe6, 0xb9, 0x6d, 0x8c, 0xa0, 0xf2, 0x9e,
+	0xce, 0xca, 0x8c, 0xf8, 0x27, 0xfe, 0x16, 0x6a, 0x1f, 0xbc, 0x70, 0x3a, 0x47, 0xd4, 0x97, 0x75,
+	0xa3, 0x08, 0xf1, 0x4c, 0x7e, 0x2a, 0x75, 0x52, 0xd8, 0x3c, 0x77, 0xdf, 0x17, 0x1c, 0xaa, 0x9d,
+	0x3d, 0xf4, 0xf1, 0x17, 0x54, 0xbe, 0x74, 0xe6, 0xfe, 0x4f, 0x70, 0xcf, 0x67, 0xd1, 0x65, 0x41,
+	0xf6, 0xaf, 0xab, 0x5c, 0x5b, 0x12, 0xdb, 0xe4, 0x6c, 0x79, 0xdb, 0x2f, 0xed, 0x27, 0x8c, 0xe3,
+	0xa7, 0xc7, 0xd2, 0xc9, 0xee, 0x84, 0xc6, 0x82, 0x49, 0xbb, 0xc5, 0x96, 0x97, 0x04, 0xd9, 0x85,
+	0xff, 0x97, 0x3c, 0x2f, 0x96, 0x93, 0x35, 0x61, 0xfd, 0xf8, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff,
+	0x0c, 0xd0, 0x7b, 0x46, 0xc4, 0x0c, 0x00, 0x00,
+}
diff --git a/googleapis/cloud/support/v1alpha1/cloud_support.pb.go b/googleapis/cloud/support/v1alpha1/cloud_support.pb.go
new file mode 100644
index 00000000..71a13793
--- /dev/null
+++ b/googleapis/cloud/support/v1alpha1/cloud_support.pb.go
@@ -0,0 +1,807 @@
+// Code generated by protoc-gen-go.
+// source: google/cloud/support/v1alpha1/cloud_support.proto
+// DO NOT EDIT!
+
+/*
+Package support is a generated protocol buffer package.
+
+It is generated from these files:
+	google/cloud/support/v1alpha1/cloud_support.proto
+
+It has these top-level messages:
+	GetSupportAccountRequest
+	ListSupportAccountsRequest
+	ListSupportAccountsResponse
+	GetCaseRequest
+	ListCasesRequest
+	ListCasesResponse
+	ListCommentsRequest
+	ListCommentsResponse
+	CreateCaseRequest
+	UpdateCaseRequest
+	CreateCommentRequest
+	GetIssueTaxonomyRequest
+*/
+package support
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_cloud_support_common "google.golang.org/genproto/googleapis/cloud/support/common"
+import _ "github.com/golang/protobuf/ptypes/empty"
+import google_protobuf3 "google.golang.org/genproto/protobuf/field_mask"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// The request message for `GetSupportAccount`.
+type GetSupportAccountRequest struct {
+	// The resource name of the support accounts. For example:
+	// `supportAccounts/accountA`.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetSupportAccountRequest) Reset()                    { *m = GetSupportAccountRequest{} }
+func (m *GetSupportAccountRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetSupportAccountRequest) ProtoMessage()               {}
+func (*GetSupportAccountRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *GetSupportAccountRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// The request message for `ListSupportAccount`.
+type ListSupportAccountsRequest struct {
+	// The filter applied to search results. It only supports filtering a support
+	// account list by a cloud_resource. For example, to filter results by support
+	// accounts associated with an Organization, its value should be:
+	// "cloud_resource:organizations/<organization_id>"
+	Filter string `protobuf:"bytes,1,opt,name=filter" json:"filter,omitempty"`
+	// Maximum number of accounts fetched with each request.
+	PageSize int64 `protobuf:"varint,2,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+	// A token identifying the page of results to return. If unspecified, the
+	// first page is retrieved.
+	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+}
+
+func (m *ListSupportAccountsRequest) Reset()                    { *m = ListSupportAccountsRequest{} }
+func (m *ListSupportAccountsRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListSupportAccountsRequest) ProtoMessage()               {}
+func (*ListSupportAccountsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *ListSupportAccountsRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+func (m *ListSupportAccountsRequest) GetPageSize() int64 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListSupportAccountsRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// The response message for `ListSupportAccount`.
+type ListSupportAccountsResponse struct {
+	// A list of support accounts.
+	Accounts []*google_cloud_support_common.SupportAccount `protobuf:"bytes,1,rep,name=accounts" json:"accounts,omitempty"`
+	// A token to retrieve the next page of results. This should be passed on in
+	// `page_token` field of `ListSupportAccountRequest` for next request. If
+	// unspecified, there are no more results to retrieve.
+	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListSupportAccountsResponse) Reset()                    { *m = ListSupportAccountsResponse{} }
+func (m *ListSupportAccountsResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListSupportAccountsResponse) ProtoMessage()               {}
+func (*ListSupportAccountsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *ListSupportAccountsResponse) GetAccounts() []*google_cloud_support_common.SupportAccount {
+	if m != nil {
+		return m.Accounts
+	}
+	return nil
+}
+
+func (m *ListSupportAccountsResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// The request message for `GetCase` method.
+type GetCaseRequest struct {
+	// Name of case resource requested.
+	// For example: "supportAccounts/accountA/cases/123"
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetCaseRequest) Reset()                    { *m = GetCaseRequest{} }
+func (m *GetCaseRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetCaseRequest) ProtoMessage()               {}
+func (*GetCaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *GetCaseRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// The request message for `ListCase` method.
+type ListCasesRequest struct {
+	// Name of the account resource for which cases are requested. For example:
+	// "supportAccounts/accountA"
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// The filter applied to the search results. Currently it only accepts "OPEN"
+	// or "CLOSED" strings, filtering out cases that are open or resolved.
+	Filter string `protobuf:"bytes,2,opt,name=filter" json:"filter,omitempty"`
+	// Maximum number of cases fetched with each request.
+	PageSize int64 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
+	// A token identifying the page of results to return. If unspecified, the
+	// first page is retrieved.
+	PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
+}
+
+func (m *ListCasesRequest) Reset()                    { *m = ListCasesRequest{} }
+func (m *ListCasesRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListCasesRequest) ProtoMessage()               {}
+func (*ListCasesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+func (m *ListCasesRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ListCasesRequest) GetFilter() string {
+	if m != nil {
+		return m.Filter
+	}
+	return ""
+}
+
+func (m *ListCasesRequest) GetPageSize() int64 {
+	if m != nil {
+		return m.PageSize
+	}
+	return 0
+}
+
+func (m *ListCasesRequest) GetPageToken() string {
+	if m != nil {
+		return m.PageToken
+	}
+	return ""
+}
+
+// The response message for `ListCase` method.
+type ListCasesResponse struct {
+	// A list of cases.
+	Cases []*google_cloud_support_common.Case `protobuf:"bytes,1,rep,name=cases" json:"cases,omitempty"`
+	// A token to retrieve the next page of results. This should be passed on in
+	// `page_token` field of `ListCaseRequest` for next request. If unspecified,
+	// there are no more results to retrieve.
+	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
+}
+
+func (m *ListCasesResponse) Reset()                    { *m = ListCasesResponse{} }
+func (m *ListCasesResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListCasesResponse) ProtoMessage()               {}
+func (*ListCasesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+func (m *ListCasesResponse) GetCases() []*google_cloud_support_common.Case {
+	if m != nil {
+		return m.Cases
+	}
+	return nil
+}
+
+func (m *ListCasesResponse) GetNextPageToken() string {
+	if m != nil {
+		return m.NextPageToken
+	}
+	return ""
+}
+
+// The request message for `ListComments` method.
+type ListCommentsRequest struct {
+	// The resource name of case for which comments should be listed.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *ListCommentsRequest) Reset()                    { *m = ListCommentsRequest{} }
+func (m *ListCommentsRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListCommentsRequest) ProtoMessage()               {}
+func (*ListCommentsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+
+func (m *ListCommentsRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// The response message for `ListComments` method.
+type ListCommentsResponse struct {
+	// A list of comments.
+	Comments []*google_cloud_support_common.Comment `protobuf:"bytes,1,rep,name=comments" json:"comments,omitempty"`
+}
+
+func (m *ListCommentsResponse) Reset()                    { *m = ListCommentsResponse{} }
+func (m *ListCommentsResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListCommentsResponse) ProtoMessage()               {}
+func (*ListCommentsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+
+func (m *ListCommentsResponse) GetComments() []*google_cloud_support_common.Comment {
+	if m != nil {
+		return m.Comments
+	}
+	return nil
+}
+
+// The request message for `CreateCase` method.
+type CreateCaseRequest struct {
+	// The resource name for `SupportAccount` under which this case is created.
+	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+	// The case resource to create.
+	Case *google_cloud_support_common.Case `protobuf:"bytes,2,opt,name=case" json:"case,omitempty"`
+}
+
+func (m *CreateCaseRequest) Reset()                    { *m = CreateCaseRequest{} }
+func (m *CreateCaseRequest) String() string            { return proto.CompactTextString(m) }
+func (*CreateCaseRequest) ProtoMessage()               {}
+func (*CreateCaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+
+func (m *CreateCaseRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *CreateCaseRequest) GetCase() *google_cloud_support_common.Case {
+	if m != nil {
+		return m.Case
+	}
+	return nil
+}
+
+// The request message for `UpdateCase` method.
+type UpdateCaseRequest struct {
+	// The case resource to update.
+	Case *google_cloud_support_common.Case `protobuf:"bytes,1,opt,name=case" json:"case,omitempty"`
+	// A field that represents attributes of a Case object that should be updated
+	// as part of this request.
+	UpdateMask *google_protobuf3.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
+}
+
+func (m *UpdateCaseRequest) Reset()                    { *m = UpdateCaseRequest{} }
+func (m *UpdateCaseRequest) String() string            { return proto.CompactTextString(m) }
+func (*UpdateCaseRequest) ProtoMessage()               {}
+func (*UpdateCaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+
+func (m *UpdateCaseRequest) GetCase() *google_cloud_support_common.Case {
+	if m != nil {
+		return m.Case
+	}
+	return nil
+}
+
+func (m *UpdateCaseRequest) GetUpdateMask() *google_protobuf3.FieldMask {
+	if m != nil {
+		return m.UpdateMask
+	}
+	return nil
+}
+
+// The request message for `CreateComment` method.
+type CreateCommentRequest struct {
+	// The resource name of case to which this comment should be added.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// The `Comment` to be added to this case.
+	Comment *google_cloud_support_common.Comment `protobuf:"bytes,2,opt,name=comment" json:"comment,omitempty"`
+}
+
+func (m *CreateCommentRequest) Reset()                    { *m = CreateCommentRequest{} }
+func (m *CreateCommentRequest) String() string            { return proto.CompactTextString(m) }
+func (*CreateCommentRequest) ProtoMessage()               {}
+func (*CreateCommentRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+
+func (m *CreateCommentRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *CreateCommentRequest) GetComment() *google_cloud_support_common.Comment {
+	if m != nil {
+		return m.Comment
+	}
+	return nil
+}
+
+// The request message for `GetIssueTaxonomy` method.
+type GetIssueTaxonomyRequest struct {
+}
+
+func (m *GetIssueTaxonomyRequest) Reset()                    { *m = GetIssueTaxonomyRequest{} }
+func (m *GetIssueTaxonomyRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetIssueTaxonomyRequest) ProtoMessage()               {}
+func (*GetIssueTaxonomyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+
+func init() {
+	proto.RegisterType((*GetSupportAccountRequest)(nil), "google.cloud.support.v1alpha1.GetSupportAccountRequest")
+	proto.RegisterType((*ListSupportAccountsRequest)(nil), "google.cloud.support.v1alpha1.ListSupportAccountsRequest")
+	proto.RegisterType((*ListSupportAccountsResponse)(nil), "google.cloud.support.v1alpha1.ListSupportAccountsResponse")
+	proto.RegisterType((*GetCaseRequest)(nil), "google.cloud.support.v1alpha1.GetCaseRequest")
+	proto.RegisterType((*ListCasesRequest)(nil), "google.cloud.support.v1alpha1.ListCasesRequest")
+	proto.RegisterType((*ListCasesResponse)(nil), "google.cloud.support.v1alpha1.ListCasesResponse")
+	proto.RegisterType((*ListCommentsRequest)(nil), "google.cloud.support.v1alpha1.ListCommentsRequest")
+	proto.RegisterType((*ListCommentsResponse)(nil), "google.cloud.support.v1alpha1.ListCommentsResponse")
+	proto.RegisterType((*CreateCaseRequest)(nil), "google.cloud.support.v1alpha1.CreateCaseRequest")
+	proto.RegisterType((*UpdateCaseRequest)(nil), "google.cloud.support.v1alpha1.UpdateCaseRequest")
+	proto.RegisterType((*CreateCommentRequest)(nil), "google.cloud.support.v1alpha1.CreateCommentRequest")
+	proto.RegisterType((*GetIssueTaxonomyRequest)(nil), "google.cloud.support.v1alpha1.GetIssueTaxonomyRequest")
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for CloudSupport service
+
+type CloudSupportClient interface {
+	// Retrieves the support account details given an account identifier.
+	// The authenticated user calling this method must be the account owner.
+	GetSupportAccount(ctx context.Context, in *GetSupportAccountRequest, opts ...grpc.CallOption) (*google_cloud_support_common.SupportAccount, error)
+	// Retrieves the list of accounts the current authenticated user has access
+	// to.
+	ListSupportAccounts(ctx context.Context, in *ListSupportAccountsRequest, opts ...grpc.CallOption) (*ListSupportAccountsResponse, error)
+	// Retrieves the details for a support case. The current authenticated user
+	// calling this method must have permissions to view this case.
+	GetCase(ctx context.Context, in *GetCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error)
+	// Retrieves the list of support cases associated with an account. The current
+	// authenticated user must have the permission to list and view these cases.
+	ListCases(ctx context.Context, in *ListCasesRequest, opts ...grpc.CallOption) (*ListCasesResponse, error)
+	// Lists all comments from a case.
+	ListComments(ctx context.Context, in *ListCommentsRequest, opts ...grpc.CallOption) (*ListCommentsResponse, error)
+	// Creates a case and associates it with a
+	// [SupportAccount][google.cloud.support.v1alpha2.SupportAcccount]. The
+	// authenticated user attempting this action must have permissions to create a
+	// `Case` under that [SupportAccount].
+	CreateCase(ctx context.Context, in *CreateCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error)
+	// Updates a support case. Only a small set of details (priority, subject and
+	// cc_address) can be update after a case is created.
+	UpdateCase(ctx context.Context, in *UpdateCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error)
+	// Adds a new comment to a case.
+	CreateComment(ctx context.Context, in *CreateCommentRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Comment, error)
+	// Retrieves the taxonomy of product categories and components to be used
+	// while creating a support case.
+	GetIssueTaxonomy(ctx context.Context, in *GetIssueTaxonomyRequest, opts ...grpc.CallOption) (*google_cloud_support_common.IssueTaxonomy, error)
+}
+
+type cloudSupportClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewCloudSupportClient(cc *grpc.ClientConn) CloudSupportClient {
+	return &cloudSupportClient{cc}
+}
+
+func (c *cloudSupportClient) GetSupportAccount(ctx context.Context, in *GetSupportAccountRequest, opts ...grpc.CallOption) (*google_cloud_support_common.SupportAccount, error) {
+	out := new(google_cloud_support_common.SupportAccount)
+	err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/GetSupportAccount", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudSupportClient) ListSupportAccounts(ctx context.Context, in *ListSupportAccountsRequest, opts ...grpc.CallOption) (*ListSupportAccountsResponse, error) {
+	out := new(ListSupportAccountsResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/ListSupportAccounts", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudSupportClient) GetCase(ctx context.Context, in *GetCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error) {
+	out := new(google_cloud_support_common.Case)
+	err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/GetCase", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudSupportClient) ListCases(ctx context.Context, in *ListCasesRequest, opts ...grpc.CallOption) (*ListCasesResponse, error) {
+	out := new(ListCasesResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/ListCases", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudSupportClient) ListComments(ctx context.Context, in *ListCommentsRequest, opts ...grpc.CallOption) (*ListCommentsResponse, error) {
+	out := new(ListCommentsResponse)
+	err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/ListComments", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudSupportClient) CreateCase(ctx context.Context, in *CreateCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error) {
+	out := new(google_cloud_support_common.Case)
+	err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/CreateCase", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudSupportClient) UpdateCase(ctx context.Context, in *UpdateCaseRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Case, error) {
+	out := new(google_cloud_support_common.Case)
+	err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/UpdateCase", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudSupportClient) CreateComment(ctx context.Context, in *CreateCommentRequest, opts ...grpc.CallOption) (*google_cloud_support_common.Comment, error) {
+	out := new(google_cloud_support_common.Comment)
+	err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/CreateComment", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *cloudSupportClient) GetIssueTaxonomy(ctx context.Context, in *GetIssueTaxonomyRequest, opts ...grpc.CallOption) (*google_cloud_support_common.IssueTaxonomy, error) {
+	out := new(google_cloud_support_common.IssueTaxonomy)
+	err := grpc.Invoke(ctx, "/google.cloud.support.v1alpha1.CloudSupport/GetIssueTaxonomy", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for CloudSupport service
+
+type CloudSupportServer interface {
+	// Retrieves the support account details given an account identifier.
+	// The authenticated user calling this method must be the account owner.
+	GetSupportAccount(context.Context, *GetSupportAccountRequest) (*google_cloud_support_common.SupportAccount, error)
+	// Retrieves the list of accounts the current authenticated user has access
+	// to.
+	ListSupportAccounts(context.Context, *ListSupportAccountsRequest) (*ListSupportAccountsResponse, error)
+	// Retrieves the details for a support case. The current authenticated user
+	// calling this method must have permissions to view this case.
+	GetCase(context.Context, *GetCaseRequest) (*google_cloud_support_common.Case, error)
+	// Retrieves the list of support cases associated with an account. The current
+	// authenticated user must have the permission to list and view these cases.
+	ListCases(context.Context, *ListCasesRequest) (*ListCasesResponse, error)
+	// Lists all comments from a case.
+	ListComments(context.Context, *ListCommentsRequest) (*ListCommentsResponse, error)
+	// Creates a case and associates it with a
+	// [SupportAccount][google.cloud.support.v1alpha2.SupportAcccount]. The
+	// authenticated user attempting this action must have permissions to create a
+	// `Case` under that [SupportAccount].
+	CreateCase(context.Context, *CreateCaseRequest) (*google_cloud_support_common.Case, error)
+	// Updates a support case. Only a small set of details (priority, subject and
+	// cc_address) can be update after a case is created.
+	UpdateCase(context.Context, *UpdateCaseRequest) (*google_cloud_support_common.Case, error)
+	// Adds a new comment to a case.
+	CreateComment(context.Context, *CreateCommentRequest) (*google_cloud_support_common.Comment, error)
+	// Retrieves the taxonomy of product categories and components to be used
+	// while creating a support case.
+	GetIssueTaxonomy(context.Context, *GetIssueTaxonomyRequest) (*google_cloud_support_common.IssueTaxonomy, error)
+}
+
+func RegisterCloudSupportServer(s *grpc.Server, srv CloudSupportServer) {
+	s.RegisterService(&_CloudSupport_serviceDesc, srv)
+}
+
+func _CloudSupport_GetSupportAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetSupportAccountRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudSupportServer).GetSupportAccount(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/GetSupportAccount",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudSupportServer).GetSupportAccount(ctx, req.(*GetSupportAccountRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudSupport_ListSupportAccounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListSupportAccountsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudSupportServer).ListSupportAccounts(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/ListSupportAccounts",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudSupportServer).ListSupportAccounts(ctx, req.(*ListSupportAccountsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudSupport_GetCase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetCaseRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudSupportServer).GetCase(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/GetCase",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudSupportServer).GetCase(ctx, req.(*GetCaseRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudSupport_ListCases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListCasesRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudSupportServer).ListCases(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/ListCases",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudSupportServer).ListCases(ctx, req.(*ListCasesRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudSupport_ListComments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListCommentsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudSupportServer).ListComments(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/ListComments",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudSupportServer).ListComments(ctx, req.(*ListCommentsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudSupport_CreateCase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateCaseRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudSupportServer).CreateCase(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/CreateCase",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudSupportServer).CreateCase(ctx, req.(*CreateCaseRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudSupport_UpdateCase_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(UpdateCaseRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudSupportServer).UpdateCase(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/UpdateCase",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudSupportServer).UpdateCase(ctx, req.(*UpdateCaseRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudSupport_CreateComment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateCommentRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudSupportServer).CreateComment(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/CreateComment",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudSupportServer).CreateComment(ctx, req.(*CreateCommentRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _CloudSupport_GetIssueTaxonomy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetIssueTaxonomyRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(CloudSupportServer).GetIssueTaxonomy(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.cloud.support.v1alpha1.CloudSupport/GetIssueTaxonomy",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(CloudSupportServer).GetIssueTaxonomy(ctx, req.(*GetIssueTaxonomyRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _CloudSupport_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.cloud.support.v1alpha1.CloudSupport",
+	HandlerType: (*CloudSupportServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "GetSupportAccount",
+			Handler:    _CloudSupport_GetSupportAccount_Handler,
+		},
+		{
+			MethodName: "ListSupportAccounts",
+			Handler:    _CloudSupport_ListSupportAccounts_Handler,
+		},
+		{
+			MethodName: "GetCase",
+			Handler:    _CloudSupport_GetCase_Handler,
+		},
+		{
+			MethodName: "ListCases",
+			Handler:    _CloudSupport_ListCases_Handler,
+		},
+		{
+			MethodName: "ListComments",
+			Handler:    _CloudSupport_ListComments_Handler,
+		},
+		{
+			MethodName: "CreateCase",
+			Handler:    _CloudSupport_CreateCase_Handler,
+		},
+		{
+			MethodName: "UpdateCase",
+			Handler:    _CloudSupport_UpdateCase_Handler,
+		},
+		{
+			MethodName: "CreateComment",
+			Handler:    _CloudSupport_CreateComment_Handler,
+		},
+		{
+			MethodName: "GetIssueTaxonomy",
+			Handler:    _CloudSupport_GetIssueTaxonomy_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/cloud/support/v1alpha1/cloud_support.proto",
+}
+
+func init() { proto.RegisterFile("google/cloud/support/v1alpha1/cloud_support.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 863 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x41, 0x4f, 0x33, 0x45,
+	0x18, 0xce, 0xb4, 0xc8, 0x07, 0x2f, 0xdf, 0xa7, 0x5f, 0x47, 0x82, 0x65, 0x0b, 0x49, 0x3b, 0x21,
+	0xa6, 0x56, 0xdd, 0x85, 0x36, 0x88, 0x96, 0x40, 0x14, 0x88, 0x8d, 0x89, 0x26, 0xa4, 0x60, 0x62,
+	0xbc, 0x34, 0x43, 0x19, 0xd6, 0x95, 0xee, 0xce, 0xda, 0x99, 0x1a, 0x40, 0xbd, 0x78, 0xf1, 0xa6,
+	0x07, 0x6f, 0x7a, 0xe1, 0xe2, 0x59, 0x0f, 0xfe, 0x13, 0xff, 0x82, 0xfe, 0x0f, 0xb3, 0xb3, 0xb3,
+	0xed, 0x76, 0x69, 0x77, 0x17, 0x6e, 0xdd, 0x77, 0xde, 0xe7, 0x7d, 0x9f, 0x79, 0xe6, 0x9d, 0x67,
+	0x0a, 0x3b, 0x36, 0xe7, 0xf6, 0x80, 0x59, 0xfd, 0x01, 0x1f, 0x5d, 0x5a, 0x62, 0xe4, 0xfb, 0x7c,
+	0x28, 0xad, 0x6f, 0x77, 0xe8, 0xc0, 0xff, 0x8a, 0xee, 0x84, 0xe1, 0x9e, 0x0e, 0x9b, 0xfe, 0x90,
+	0x4b, 0x8e, 0x37, 0x43, 0x88, 0xa9, 0xd6, 0xcc, 0x68, 0x2d, 0x82, 0x18, 0x1b, 0xba, 0x22, 0xf5,
+	0x1d, 0x8b, 0x7a, 0x1e, 0x97, 0x54, 0x3a, 0xdc, 0x13, 0x21, 0xd8, 0xa8, 0xcd, 0xec, 0xd7, 0xe7,
+	0xae, 0xcb, 0x3d, 0x9d, 0x52, 0xd1, 0x29, 0xea, 0xeb, 0x62, 0x74, 0x65, 0x31, 0xd7, 0x97, 0xb7,
+	0x7a, 0xb1, 0x9a, 0x5c, 0xbc, 0x72, 0xd8, 0xe0, 0xb2, 0xe7, 0x52, 0x71, 0x1d, 0x66, 0x10, 0x13,
+	0xca, 0x1d, 0x26, 0xcf, 0xc2, 0xca, 0x1f, 0xf5, 0xfb, 0x7c, 0xe4, 0xc9, 0x2e, 0xfb, 0x66, 0xc4,
+	0x84, 0xc4, 0x18, 0x16, 0x3c, 0xea, 0xb2, 0x32, 0xaa, 0xa2, 0xfa, 0x72, 0x57, 0xfd, 0x26, 0x3e,
+	0x18, 0x9f, 0x3a, 0x22, 0x01, 0x10, 0x11, 0x62, 0x0d, 0x16, 0xaf, 0x9c, 0x81, 0x64, 0x43, 0x8d,
+	0xd1, 0x5f, 0xb8, 0x02, 0xcb, 0x3e, 0xb5, 0x59, 0x4f, 0x38, 0x77, 0xac, 0x5c, 0xa8, 0xa2, 0x7a,
+	0xb1, 0xbb, 0x14, 0x04, 0xce, 0x9c, 0x3b, 0x86, 0x37, 0x01, 0xd4, 0xa2, 0xe4, 0xd7, 0xcc, 0x2b,
+	0x17, 0x15, 0x50, 0xa5, 0x9f, 0x07, 0x01, 0xf2, 0x33, 0x82, 0xca, 0xcc, 0x96, 0xc2, 0xe7, 0x9e,
+	0x60, 0xb8, 0x03, 0x4b, 0x54, 0xc7, 0xca, 0xa8, 0x5a, 0xac, 0xaf, 0x34, 0xdf, 0x36, 0x67, 0x6a,
+	0xae, 0x65, 0x4b, 0xec, 0x75, 0x0c, 0xc6, 0x6f, 0xc2, 0x6b, 0x1e, 0xbb, 0x91, 0xbd, 0x18, 0x99,
+	0x82, 0x22, 0xf3, 0x22, 0x08, 0x9f, 0x8e, 0x09, 0x6d, 0xc1, 0xab, 0x1d, 0x26, 0x8f, 0xa9, 0x60,
+	0x69, 0x42, 0xdd, 0xc1, 0xcb, 0x80, 0x75, 0x90, 0x26, 0x52, 0xf2, 0x62, 0x92, 0x15, 0xe6, 0x4b,
+	0x56, 0x4c, 0x95, 0x6c, 0x21, 0x29, 0x99, 0x84, 0x52, 0xac, 0xb7, 0xd6, 0x69, 0x0f, 0x5e, 0xe9,
+	0x07, 0x01, 0x2d, 0x52, 0x2d, 0x55, 0x24, 0xb5, 0xbb, 0x30, 0x3f, 0xb7, 0x2e, 0x6f, 0xc1, 0xeb,
+	0xaa, 0x2b, 0x77, 0x5d, 0x16, 0x9b, 0x89, 0x59, 0xe2, 0x7c, 0x01, 0xab, 0xd3, 0xa9, 0x9a, 0xe3,
+	0x87, 0xb0, 0xd4, 0xd7, 0x31, 0x4d, 0x73, 0x2b, 0x9d, 0x66, 0x98, 0xdc, 0x1d, 0xa3, 0xc8, 0x05,
+	0x94, 0x8e, 0x87, 0x8c, 0x4a, 0x16, 0x3f, 0x9f, 0x35, 0x58, 0xf4, 0xe9, 0x90, 0x79, 0x32, 0x1a,
+	0xcb, 0xf0, 0x0b, 0xef, 0xc2, 0x42, 0xb0, 0x45, 0xb5, 0x9d, 0x5c, 0x8a, 0xa8, 0x74, 0xf2, 0x13,
+	0x82, 0xd2, 0xe7, 0xfe, 0x65, 0xa2, 0x49, 0x54, 0x0c, 0x3d, 0xaa, 0x18, 0xde, 0x87, 0x95, 0x91,
+	0xaa, 0xa5, 0x6e, 0xa5, 0xa6, 0x62, 0x44, 0xe8, 0xe8, 0xe2, 0x9a, 0x1f, 0x07, 0x17, 0xf7, 0x33,
+	0x2a, 0xae, 0xbb, 0x10, 0xa6, 0x07, 0xbf, 0xc9, 0xd7, 0xb0, 0xaa, 0x77, 0xab, 0x85, 0x48, 0x19,
+	0xb4, 0x43, 0x78, 0xa6, 0x55, 0xd2, 0x4d, 0xf2, 0x49, 0x1b, 0x81, 0xc8, 0x3a, 0xbc, 0xd1, 0x61,
+	0xf2, 0x13, 0x21, 0x46, 0xec, 0x9c, 0xde, 0x70, 0x8f, 0xbb, 0xb7, 0xba, 0x5d, 0xf3, 0xbf, 0x15,
+	0x78, 0x7e, 0x1c, 0x14, 0xd1, 0x77, 0x0b, 0xff, 0x81, 0xa0, 0xf4, 0xc0, 0x56, 0xf0, 0x9e, 0x99,
+	0xea, 0x85, 0xe6, 0x3c, 0x23, 0x32, 0x1e, 0x73, 0xa1, 0x49, 0xe3, 0xc7, 0x7f, 0xfe, 0xfd, 0xb5,
+	0xb0, 0x85, 0xc9, 0xc4, 0x97, 0xbf, 0x0b, 0x04, 0x38, 0x10, 0xd3, 0x06, 0x62, 0x35, 0x7e, 0xc0,
+	0x7f, 0xa2, 0x70, 0x66, 0x13, 0xde, 0x82, 0x3f, 0xc8, 0x60, 0x3a, 0xdf, 0x02, 0x8d, 0xf6, 0x53,
+	0xa0, 0xe1, 0xf8, 0x93, 0x9a, 0xa2, 0x5e, 0xc1, 0xeb, 0x13, 0xea, 0x09, 0xd2, 0xf8, 0x17, 0x04,
+	0xcf, 0xb4, 0xfb, 0xe0, 0x77, 0xb3, 0xf5, 0x8c, 0x0d, 0xa8, 0x91, 0x3d, 0x92, 0xa4, 0xa9, 0x08,
+	0xbc, 0x83, 0x1b, 0x99, 0xda, 0x59, 0xca, 0x1b, 0x02, 0x0d, 0xef, 0x11, 0x2c, 0x8f, 0xdd, 0x06,
+	0x5b, 0x39, 0xb6, 0x1f, 0xf7, 0x44, 0x63, 0x3b, 0x3f, 0x40, 0xab, 0xb4, 0xad, 0x48, 0x36, 0x70,
+	0x3d, 0xfb, 0x80, 0x43, 0x96, 0xf8, 0x6f, 0x04, 0xcf, 0xe3, 0x7e, 0x83, 0x9b, 0x79, 0x9a, 0x4e,
+	0xfb, 0x98, 0xd1, 0x7a, 0x14, 0x46, 0x73, 0xdd, 0x57, 0x5c, 0x77, 0x71, 0x2b, 0xbf, 0xa0, 0x56,
+	0xe4, 0x65, 0xf8, 0x77, 0x04, 0x30, 0x31, 0x33, 0x9c, 0xa5, 0xd4, 0x03, 0xdf, 0xcb, 0x73, 0xe2,
+	0xef, 0x2b, 0x82, 0x4d, 0x12, 0x3f, 0xf1, 0xd0, 0x1d, 0xe7, 0xca, 0xd9, 0x0e, 0x8d, 0xeb, 0x1e,
+	0x01, 0x4c, 0x5c, 0x30, 0x93, 0xdd, 0x03, 0xc3, 0xcc, 0xc3, 0xee, 0x40, 0xb1, 0xdb, 0x6b, 0x5a,
+	0x31, 0x76, 0x41, 0x73, 0x33, 0x43, 0x43, 0x4d, 0xf1, 0x2f, 0x04, 0x2f, 0xa6, 0xfc, 0x11, 0xb7,
+	0xf2, 0x69, 0x38, 0xe5, 0xa6, 0x46, 0x2e, 0xa3, 0x24, 0x27, 0x8a, 0xeb, 0x21, 0x79, 0xca, 0x51,
+	0xb7, 0x23, 0x97, 0xc5, 0xbf, 0x21, 0x78, 0x99, 0xb4, 0x59, 0xfc, 0x5e, 0xf6, 0x45, 0x9f, 0xe5,
+	0xcb, 0x46, 0x23, 0x95, 0xf8, 0x14, 0x84, 0x10, 0x45, 0x7f, 0x03, 0x1b, 0x63, 0xfa, 0x6d, 0x3b,
+	0x51, 0xf6, 0xe8, 0x7b, 0xa8, 0xf5, 0xb9, 0x9b, 0x4e, 0xe6, 0xa8, 0x14, 0x7f, 0x09, 0x4e, 0x83,
+	0xf7, 0xeb, 0xcb, 0x13, 0x8d, 0xb0, 0xf9, 0x80, 0x7a, 0xb6, 0xc9, 0x87, 0xb6, 0x65, 0x33, 0x4f,
+	0xbd, 0x6d, 0x56, 0xb8, 0x44, 0x7d, 0x47, 0xcc, 0xf9, 0x57, 0xbd, 0xaf, 0x03, 0x17, 0x8b, 0x0a,
+	0xd0, 0xfa, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xad, 0xe1, 0xf2, 0x57, 0x85, 0x0b, 0x00, 0x00,
+}
diff --git a/googleapis/container/v1/cluster_service.pb.go b/googleapis/container/v1/cluster_service.pb.go
index 7b63f6aa..33744953 100644
--- a/googleapis/container/v1/cluster_service.pb.go
+++ b/googleapis/container/v1/cluster_service.pb.go
@@ -1796,8 +1796,15 @@ func (m *NodePool) GetManagement() *NodeManagement {
 // NodeManagement defines the set of node management services turned on for the
 // node pool.
 type NodeManagement struct {
-	// Whether the nodes will be automatically upgraded.
+	// A flag that specifies whether node auto-upgrade is enabled for the node
+	// pool. If enabled, node auto-upgrade helps keep the nodes in your node pool
+	// up to date with the latest release version of Kubernetes.
 	AutoUpgrade bool `protobuf:"varint,1,opt,name=auto_upgrade,json=autoUpgrade" json:"auto_upgrade,omitempty"`
+	// A flag that specifies whether the node auto-repair is enabled for the node
+	// pool. If enabled, the nodes in this node pool will be monitored and, if
+	// they fail health checks too many times, an automatic repair action will be
+	// triggered.
+	AutoRepair bool `protobuf:"varint,2,opt,name=auto_repair,json=autoRepair" json:"auto_repair,omitempty"`
 	// Specifies the Auto Upgrade knobs for the node pool.
 	UpgradeOptions *AutoUpgradeOptions `protobuf:"bytes,10,opt,name=upgrade_options,json=upgradeOptions" json:"upgrade_options,omitempty"`
 }
@@ -1814,6 +1821,13 @@ func (m *NodeManagement) GetAutoUpgrade() bool {
 	return false
 }
 
+func (m *NodeManagement) GetAutoRepair() bool {
+	if m != nil {
+		return m.AutoRepair
+	}
+	return false
+}
+
 func (m *NodeManagement) GetUpgradeOptions() *AutoUpgradeOptions {
 	if m != nil {
 		return m.UpgradeOptions
@@ -2666,183 +2680,184 @@ var _ClusterManager_serviceDesc = grpc.ServiceDesc{
 func init() { proto.RegisterFile("google/container/v1/cluster_service.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 2838 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcb, 0x6f, 0xe3, 0xd6,
-	0xd5, 0xff, 0x68, 0xcb, 0xb2, 0x74, 0xf4, 0xb0, 0x7c, 0xfd, 0x18, 0x42, 0x99, 0xc9, 0x38, 0xcc,
-	0x63, 0x26, 0xce, 0x17, 0x2b, 0xf3, 0xc8, 0xcb, 0x33, 0x0d, 0xa2, 0x91, 0x15, 0x8f, 0x32, 0x7e,
-	0xa8, 0x94, 0x9d, 0xa0, 0x01, 0x5a, 0x82, 0x16, 0xaf, 0x25, 0xc6, 0x14, 0xc9, 0xf0, 0x52, 0x4e,
-	0x3c, 0x03, 0x2f, 0x5a, 0x34, 0x40, 0x81, 0x2e, 0x5b, 0x14, 0x5d, 0x14, 0x45, 0x91, 0xa6, 0x9b,
-	0x6e, 0xba, 0x29, 0xba, 0xe9, 0xb6, 0x8b, 0xee, 0xb3, 0x28, 0x5a, 0xa0, 0xe8, 0xa6, 0xe8, 0xb6,
-	0xff, 0x42, 0x71, 0x1f, 0xa4, 0x48, 0x99, 0xb2, 0xec, 0x78, 0xdc, 0x74, 0x35, 0xba, 0xe7, 0x71,
-	0xef, 0xb9, 0xe7, 0xf1, 0xbb, 0xe7, 0xd0, 0x03, 0x2f, 0x77, 0x1c, 0xa7, 0x63, 0xe1, 0x4a, 0xdb,
-	0xb1, 0x7d, 0xdd, 0xb4, 0xb1, 0x57, 0x39, 0xbc, 0x55, 0x69, 0x5b, 0x7d, 0xe2, 0x63, 0x4f, 0x23,
-	0xd8, 0x3b, 0x34, 0xdb, 0x78, 0xc5, 0xf5, 0x1c, 0xdf, 0x41, 0x73, 0x5c, 0x74, 0x25, 0x14, 0x5d,
-	0x39, 0xbc, 0x55, 0xbe, 0x2a, 0xf4, 0x75, 0xd7, 0xac, 0xe8, 0xb6, 0xed, 0xf8, 0xba, 0x6f, 0x3a,
-	0x36, 0xe1, 0x2a, 0xe5, 0x67, 0x04, 0x97, 0xad, 0xf6, 0xfa, 0xfb, 0x15, 0xdc, 0x73, 0xfd, 0x23,
-	0xce, 0x54, 0xbe, 0x48, 0x01, 0x6c, 0x39, 0x06, 0xae, 0x39, 0xf6, 0xbe, 0xd9, 0x41, 0xcf, 0x41,
-	0xbe, 0xa7, 0xb7, 0xbb, 0xa6, 0x8d, 0x35, 0xff, 0xc8, 0xc5, 0xb2, 0xb4, 0x24, 0xdd, 0xcc, 0xaa,
-	0x39, 0x41, 0xdb, 0x39, 0x72, 0x31, 0x5a, 0x82, 0xbc, 0x61, 0x92, 0x03, 0x8d, 0x98, 0x8f, 0xb1,
-	0xd6, 0xd9, 0x93, 0x27, 0x96, 0xa4, 0x9b, 0x53, 0x2a, 0x50, 0x5a, 0xcb, 0x7c, 0x8c, 0xd7, 0xf7,
-	0xe8, 0x26, 0x8e, 0xde, 0xf7, 0xbb, 0x1a, 0x69, 0x3b, 0x2e, 0x26, 0xf2, 0xe4, 0xd2, 0x24, 0xdd,
-	0x84, 0xd1, 0x5a, 0x8c, 0x84, 0x6e, 0xc0, 0x8c, 0xb8, 0x97, 0xa6, 0xb7, 0xdb, 0x4e, 0xdf, 0xf6,
-	0xe5, 0x2c, 0x3b, 0xaa, 0x28, 0xc8, 0x55, 0x4e, 0x45, 0x0d, 0xc8, 0xf4, 0xb0, 0xaf, 0x1b, 0xba,
-	0xaf, 0xcb, 0xa9, 0xa5, 0xc9, 0x9b, 0xb9, 0xdb, 0xaf, 0xae, 0x24, 0xb8, 0x60, 0x65, 0x70, 0x87,
-	0x95, 0x4d, 0x21, 0x5f, 0xb7, 0x7d, 0xef, 0x48, 0x0d, 0xd5, 0xd1, 0x35, 0x00, 0xb3, 0xa7, 0x77,
-	0xc4, 0xcd, 0xa6, 0xd8, 0x71, 0x59, 0x46, 0x61, 0xf7, 0xaa, 0x41, 0xda, 0xd2, 0xf7, 0xb0, 0x45,
-	0xe4, 0x34, 0x3b, 0xe7, 0x95, 0x71, 0xe7, 0x6c, 0x30, 0x69, 0x7e, 0x8a, 0x50, 0x45, 0x2f, 0xc1,
-	0x8c, 0xe5, 0xb4, 0x75, 0x4b, 0x23, 0xc4, 0xd0, 0xf8, 0xbd, 0xa6, 0x99, 0x7f, 0x0a, 0x8c, 0xdc,
-	0x22, 0x46, 0x8d, 0x5d, 0x0b, 0x41, 0xca, 0xd7, 0x3b, 0x44, 0xce, 0x30, 0xd7, 0xb0, 0xdf, 0x68,
-	0x09, 0x72, 0xae, 0x87, 0x69, 0x70, 0xcc, 0x3d, 0x0b, 0xcb, 0xb0, 0x24, 0xdd, 0xcc, 0xa8, 0x51,
-	0x52, 0xf9, 0x1e, 0x14, 0x62, 0x97, 0x43, 0x25, 0x98, 0x3c, 0xc0, 0x47, 0x22, 0x4a, 0xf4, 0x27,
-	0x9a, 0x87, 0xa9, 0x43, 0xdd, 0xea, 0x63, 0x16, 0x96, 0xac, 0xca, 0x17, 0xab, 0x13, 0x6f, 0x49,
-	0xe5, 0xb7, 0x21, 0x17, 0xb1, 0xf8, 0x3c, 0xaa, 0xca, 0x9f, 0x25, 0x80, 0x4d, 0x9d, 0x66, 0x63,
-	0xb5, 0xef, 0x77, 0x51, 0x19, 0x32, 0x7d, 0x82, 0x3d, 0x5b, 0xef, 0x05, 0x09, 0x12, 0xae, 0x29,
-	0xcf, 0xd5, 0x09, 0xf9, 0xd4, 0xf1, 0x0c, 0xb1, 0x4f, 0xb8, 0x46, 0x77, 0x61, 0x31, 0x48, 0xea,
-	0xb6, 0xae, 0xb5, 0xb1, 0xe7, 0x9b, 0xfb, 0x66, 0x5b, 0xf7, 0xb1, 0x6c, 0x30, 0xc9, 0x79, 0xc1,
-	0xad, 0xe9, 0xb5, 0x01, 0x0f, 0xbd, 0x0a, 0xa8, 0x6d, 0x99, 0xd8, 0xf6, 0x63, 0x1a, 0x98, 0x69,
-	0xcc, 0x72, 0x4e, 0x54, 0xfc, 0x1a, 0x80, 0x10, 0xa7, 0xd7, 0xdb, 0xe7, 0x51, 0xe6, 0x94, 0x47,
-	0xf8, 0x48, 0xf9, 0x4a, 0x82, 0x7c, 0xd5, 0x30, 0x1c, 0x9b, 0x88, 0x8c, 0xff, 0x00, 0xe6, 0xba,
-	0xbe, 0xef, 0x6a, 0x96, 0xa3, 0x1b, 0xda, 0x9e, 0x6e, 0xe9, 0x76, 0xdb, 0xb4, 0x3b, 0xec, 0x5e,
-	0xb9, 0xdb, 0x2f, 0x25, 0xe6, 0xc0, 0x43, 0xdf, 0x77, 0x37, 0x1c, 0xdd, 0x78, 0x10, 0x48, 0xab,
-	0xb3, 0xdd, 0x61, 0x12, 0x3a, 0x80, 0x72, 0xd7, 0xf1, 0xcc, 0xc7, 0x54, 0xd1, 0xd2, 0x5c, 0xc7,
-	0xd0, 0xf4, 0xbe, 0xef, 0x90, 0xb6, 0x6e, 0xd1, 0xed, 0x27, 0xd8, 0xf6, 0xc9, 0xa9, 0xfc, 0x30,
-	0x54, 0x6b, 0x3a, 0x46, 0x75, 0xa0, 0xa4, 0xca, 0xdd, 0x11, 0x1c, 0xa5, 0x02, 0xb3, 0x27, 0x8c,
-	0xa2, 0xa1, 0x30, 0x4c, 0xa2, 0xef, 0x59, 0xd8, 0x60, 0xd7, 0xc9, 0xa8, 0xe1, 0x5a, 0x79, 0x03,
-	0xe4, 0x51, 0xc7, 0x9c, 0xaa, 0xf7, 0x27, 0x80, 0xe9, 0x1a, 0x8f, 0x12, 0xcd, 0xe1, 0x48, 0x0a,
-	0xb0, 0xdf, 0x34, 0x87, 0x0d, 0x4c, 0xda, 0x9e, 0xe9, 0x52, 0x04, 0x12, 0x19, 0x10, 0x25, 0xa1,
-	0xff, 0x07, 0x64, 0xda, 0xa6, 0x6f, 0xea, 0x96, 0x66, 0x3b, 0x06, 0x16, 0x45, 0x32, 0xc9, 0x8a,
-	0xa4, 0x24, 0x38, 0xbc, 0xc8, 0x68, 0x9d, 0xbc, 0x0b, 0x39, 0x21, 0x45, 0x83, 0x25, 0xa7, 0x98,
-	0xdb, 0xae, 0x8f, 0xa9, 0x4c, 0x15, 0xec, 0x01, 0xa2, 0xbd, 0x0b, 0xb9, 0x1e, 0x4b, 0x5d, 0xea,
-	0xff, 0x2e, 0x2b, 0xfb, 0x51, 0x3b, 0x0c, 0x52, 0x5c, 0x85, 0xde, 0x20, 0xdd, 0x6f, 0xd0, 0x9a,
-	0xee, 0x74, 0x4c, 0xbb, 0x13, 0x60, 0xb1, 0x9c, 0xe6, 0x58, 0x25, 0xc8, 0x2d, 0x4e, 0xa5, 0x99,
-	0xda, 0x73, 0x6c, 0xd3, 0x77, 0xbc, 0xa8, 0xec, 0x34, 0xcf, 0xd4, 0x01, 0x27, 0x10, 0x97, 0x61,
-	0xda, 0xc6, 0xfe, 0xa7, 0x8e, 0x77, 0x20, 0x67, 0x98, 0x4c, 0xb0, 0x44, 0xcb, 0x30, 0x1b, 0x14,
-	0x8a, 0xe9, 0x1e, 0xde, 0xd5, 0xda, 0xa6, 0xe1, 0x09, 0x7c, 0x9c, 0x11, 0x8c, 0x86, 0x7b, 0x78,
-	0xb7, 0x66, 0x1a, 0x1e, 0x7a, 0x0f, 0x0a, 0x3a, 0xcb, 0xe7, 0xc0, 0x47, 0xc0, 0x6e, 0xf8, 0x5c,
-	0xe2, 0x0d, 0xa3, 0x99, 0xaf, 0xe6, 0xf5, 0x68, 0x1d, 0x3c, 0x0b, 0x40, 0xfa, 0x7b, 0x81, 0x41,
-	0x39, 0x76, 0x58, 0x84, 0x82, 0xee, 0x03, 0xf3, 0xaa, 0xe6, 0x3a, 0x8e, 0x45, 0xe4, 0x3c, 0x83,
-	0xc8, 0x6b, 0x23, 0x03, 0xd1, 0x74, 0x1c, 0x4b, 0xcd, 0xda, 0xe2, 0x17, 0x41, 0x57, 0x21, 0x4b,
-	0x01, 0x90, 0x3d, 0x4b, 0x72, 0x81, 0x81, 0xde, 0x80, 0x80, 0xde, 0x80, 0x2b, 0xd8, 0xa6, 0x09,
-	0xa6, 0x1d, 0xf4, 0xf7, 0xb0, 0x67, 0x63, 0x1f, 0x13, 0x4d, 0xb7, 0xdc, 0xae, 0x2e, 0x17, 0x59,
-	0x02, 0x2e, 0x70, 0xf6, 0xa3, 0x90, 0x5b, 0xa5, 0x4c, 0xf4, 0x0c, 0x64, 0x09, 0xb6, 0xf6, 0x35,
-	0xcb, 0xb4, 0x0f, 0x04, 0x86, 0x64, 0x28, 0x61, 0xc3, 0xb4, 0x0f, 0x68, 0x7a, 0x3e, 0x76, 0xec,
-	0x00, 0x29, 0xd8, 0x6f, 0x9a, 0xda, 0xd8, 0x36, 0x5c, 0xc7, 0xb4, 0x7d, 0x01, 0x0d, 0xe1, 0x9a,
-	0x1a, 0x11, 0x24, 0x66, 0xe0, 0xfc, 0x43, 0xec, 0x11, 0x9a, 0xc6, 0x1d, 0x26, 0xba, 0x20, 0xd8,
-	0x22, 0xff, 0x3f, 0xe0, 0x4c, 0x86, 0x6a, 0x7d, 0xcf, 0xa3, 0x88, 0x23, 0x12, 0x2d, 0x50, 0xeb,
-	0x0a, 0x54, 0xe3, 0x5c, 0x9e, 0x5d, 0x81, 0xd6, 0x6b, 0x10, 0xd0, 0x79, 0x19, 0x04, 0x3a, 0x26,
-	0xd3, 0x41, 0x82, 0x47, 0x5d, 0x19, 0x68, 0x5c, 0x87, 0x5c, 0xdb, 0xc3, 0xba, 0x8f, 0x35, 0xdf,
-	0xec, 0x61, 0xf9, 0x63, 0x1e, 0x21, 0x4e, 0xda, 0x31, 0x7b, 0x18, 0xdd, 0x83, 0x34, 0xf1, 0x75,
-	0xbf, 0x4f, 0xe4, 0x83, 0x25, 0xe9, 0x66, 0xf1, 0xf6, 0xf3, 0x89, 0xd1, 0x11, 0xd6, 0xaf, 0xb4,
-	0x98, 0xa8, 0x2a, 0x54, 0xd0, 0x8b, 0x50, 0xe4, 0xbf, 0xb4, 0x1e, 0x26, 0x44, 0xef, 0x60, 0xd9,
-	0x62, 0x07, 0x14, 0x38, 0x75, 0x93, 0x13, 0xd1, 0xab, 0x30, 0xc7, 0xcc, 0x0d, 0xd3, 0x92, 0xb5,
-	0x01, 0x72, 0x8f, 0x97, 0x2f, 0x65, 0x05, 0x89, 0x49, 0x7b, 0x01, 0x5a, 0xec, 0xa2, 0x0c, 0x48,
-	0x24, 0x93, 0x6d, 0xb6, 0x73, 0x29, 0xe0, 0x84, 0xa9, 0xbc, 0x02, 0x73, 0xa6, 0x4d, 0x7c, 0xdd,
-	0x6e, 0x63, 0xad, 0xe3, 0x39, 0x7d, 0x57, 0xeb, 0x7b, 0x16, 0x91, 0x1d, 0x96, 0x2e, 0xb3, 0x01,
-	0x6b, 0x9d, 0x72, 0x76, 0x3d, 0x8b, 0xd0, 0xdd, 0x63, 0x3e, 0xe4, 0x50, 0xe2, 0x72, 0x5b, 0x22,
-	0x1e, 0xe4, 0x50, 0x72, 0x1d, 0x72, 0xf8, 0x33, 0xd7, 0xf4, 0x84, 0xff, 0x3e, 0xe1, 0xfe, 0xe3,
-	0x24, 0xea, 0x3f, 0xc5, 0x84, 0x34, 0x77, 0x0a, 0x5a, 0x04, 0xd4, 0xda, 0xa9, 0xee, 0xec, 0xb6,
-	0xb4, 0xdd, 0xad, 0x56, 0xb3, 0x5e, 0x6b, 0xbc, 0xd7, 0xa8, 0xaf, 0x95, 0xfe, 0x0f, 0x95, 0x20,
-	0xdf, 0x54, 0xb7, 0x3f, 0x68, 0xb4, 0x1a, 0xdb, 0x5b, 0x8d, 0xad, 0xf5, 0x92, 0x84, 0x72, 0x30,
-	0xad, 0xee, 0x6e, 0xb1, 0xc5, 0x04, 0x9a, 0x81, 0x9c, 0x5a, 0xaf, 0x6d, 0x6f, 0xd5, 0x1a, 0x1b,
-	0x94, 0x30, 0x89, 0xf2, 0x90, 0x69, 0xed, 0x6c, 0x37, 0x9b, 0x74, 0x95, 0x42, 0x59, 0x98, 0xaa,
-	0xab, 0xea, 0xb6, 0x5a, 0x9a, 0x52, 0x3e, 0x4f, 0x41, 0x41, 0x04, 0x62, 0xd7, 0x35, 0xe8, 0xb3,
-	0xf5, 0x1a, 0xcc, 0x1b, 0x98, 0x98, 0x1e, 0x36, 0xe2, 0xf9, 0x90, 0xe2, 0xf9, 0x20, 0x78, 0xd1,
-	0x7c, 0xb8, 0x0f, 0xe5, 0x40, 0x23, 0x01, 0x75, 0x78, 0x7b, 0x23, 0x0b, 0x89, 0xcd, 0x13, 0xe0,
-	0xb3, 0x0b, 0x0b, 0x81, 0x76, 0x1c, 0x3e, 0xd2, 0x67, 0x85, 0x8f, 0x39, 0xa1, 0x1f, 0x7b, 0x4d,
-	0x2b, 0x43, 0xd7, 0xa0, 0x68, 0xa1, 0x99, 0x46, 0x00, 0x82, 0x91, 0x6b, 0x50, 0x5c, 0x68, 0x18,
-	0x34, 0x86, 0x81, 0x42, 0xa4, 0x39, 0xe3, 0x78, 0x58, 0x12, 0x9c, 0x46, 0xd8, 0xa3, 0x1d, 0xc0,
-	0xb5, 0x93, 0xdb, 0x47, 0xdf, 0xd5, 0x2c, 0xb3, 0xfe, 0xe6, 0xa9, 0xb8, 0x14, 0x7d, 0x52, 0xcb,
-	0x43, 0x16, 0x45, 0xdf, 0xc1, 0x57, 0x20, 0xb0, 0x57, 0x1b, 0x60, 0x17, 0xb0, 0x64, 0x0c, 0x2c,
-	0xdb, 0x08, 0x21, 0xec, 0x2e, 0x2c, 0x86, 0xd1, 0x88, 0xa3, 0x80, 0xe8, 0x6d, 0x82, 0x48, 0x44,
-	0x51, 0x40, 0xf9, 0x77, 0x0a, 0xb2, 0xdb, 0x2e, 0xf6, 0xd8, 0x26, 0x89, 0x0f, 0x6a, 0x80, 0x62,
-	0x13, 0x11, 0x14, 0x7b, 0x1f, 0x8a, 0x4e, 0xa0, 0xc4, 0xfd, 0x35, 0x79, 0x4a, 0xc1, 0x87, 0xfb,
-	0xaf, 0x50, 0x17, 0xaa, 0x85, 0x50, 0x95, 0x79, 0xf4, 0x5b, 0x21, 0x68, 0xa4, 0xd8, 0x1e, 0x2f,
-	0x8e, 0xd9, 0x63, 0x08, 0x36, 0x16, 0x21, 0x6d, 0x60, 0x5f, 0x37, 0x2d, 0x11, 0x32, 0xb1, 0x4a,
-	0x80, 0x93, 0xa9, 0x24, 0x38, 0x89, 0x01, 0x78, 0x7a, 0x08, 0xc0, 0xaf, 0x43, 0xce, 0xd7, 0xbd,
-	0x0e, 0xf6, 0x39, 0x9b, 0xa7, 0x10, 0x70, 0x12, 0x15, 0x50, 0xd4, 0xb1, 0x05, 0x9b, 0x83, 0xe9,
-	0x66, 0x7d, 0x6b, 0x2d, 0xa1, 0x56, 0x33, 0x90, 0x5a, 0xdb, 0xde, 0xaa, 0xf3, 0x22, 0xad, 0x3e,
-	0xd8, 0x56, 0x77, 0x58, 0x91, 0x2a, 0x7f, 0x97, 0x20, 0xc5, 0x1c, 0x33, 0x0f, 0xa5, 0x9d, 0xef,
-	0x34, 0xeb, 0x43, 0x1b, 0x22, 0x28, 0xd6, 0xd4, 0x7a, 0x75, 0xa7, 0xae, 0xd5, 0x36, 0x76, 0x5b,
-	0x3b, 0x75, 0xb5, 0x24, 0x51, 0xda, 0x5a, 0x7d, 0xa3, 0x1e, 0xa1, 0x4d, 0x50, 0xda, 0x6e, 0x73,
-	0x5d, 0xad, 0xae, 0xd5, 0xb5, 0xcd, 0x2a, 0xa3, 0x4d, 0xa2, 0x59, 0x28, 0x04, 0xb4, 0xad, 0xed,
-	0xb5, 0x7a, 0xab, 0x94, 0xa2, 0x62, 0x6a, 0xbd, 0x59, 0x6d, 0xa8, 0xa1, 0xea, 0x14, 0x57, 0x5d,
-	0x8b, 0x1e, 0x91, 0xa6, 0xc6, 0x88, 0x63, 0xa9, 0xa6, 0xd6, 0xdc, 0xde, 0xde, 0x28, 0x4d, 0x53,
-	0xaa, 0x38, 0x78, 0x40, 0xcd, 0xa0, 0xab, 0x20, 0xb7, 0xea, 0x3b, 0x03, 0x92, 0xb6, 0x59, 0xdd,
-	0xaa, 0xae, 0xd7, 0x37, 0xeb, 0x5b, 0x3b, 0xa5, 0xac, 0xf2, 0x7d, 0x09, 0xe6, 0x6b, 0xec, 0xcd,
-	0x10, 0xf8, 0xa3, 0xe2, 0x4f, 0xfa, 0x98, 0xf8, 0xb4, 0x6f, 0x76, 0x3d, 0xe7, 0x63, 0xdc, 0xf6,
-	0x69, 0xbd, 0xf2, 0x14, 0xcc, 0x0a, 0x4a, 0xc3, 0x48, 0xcc, 0xc3, 0x37, 0x60, 0x5a, 0xbc, 0x94,
-	0x2c, 0x01, 0x73, 0xb7, 0xaf, 0x9e, 0xf6, 0xe2, 0xa8, 0x81, 0xb0, 0x82, 0x61, 0x76, 0x1d, 0xfb,
-	0x17, 0x3f, 0x9f, 0xb5, 0xfa, 0xa2, 0x4d, 0x32, 0x98, 0x09, 0xac, 0xd5, 0xe7, 0xfd, 0x91, 0xa1,
-	0x7c, 0x29, 0xc1, 0x3c, 0x47, 0xd7, 0xcb, 0x3e, 0x0a, 0xad, 0x42, 0xba, 0xcf, 0x4e, 0x12, 0x1d,
-	0xaa, 0x72, 0x9a, 0x23, 0xb8, 0x4d, 0xaa, 0xd0, 0x50, 0xba, 0x30, 0xbf, 0x86, 0x2d, 0x7c, 0xf9,
-	0x56, 0x2a, 0x0f, 0x61, 0x6e, 0xc3, 0x24, 0x81, 0xe3, 0xc9, 0xd7, 0x3f, 0x48, 0xe9, 0xc3, 0x7c,
-	0x7c, 0x27, 0xe2, 0x3a, 0x36, 0xc1, 0xe8, 0x2d, 0xc8, 0x88, 0xe3, 0x88, 0x2c, 0xb1, 0x16, 0xf1,
-	0xf4, 0x94, 0x08, 0xa5, 0xd1, 0xf3, 0x50, 0xe8, 0x99, 0x84, 0xd0, 0x27, 0x8c, 0x9e, 0x40, 0xe4,
-	0x09, 0x06, 0xb4, 0x79, 0x41, 0xfc, 0x88, 0xd2, 0x94, 0x03, 0x98, 0x5b, 0xc7, 0x7e, 0x08, 0x46,
-	0x17, 0xf0, 0xd4, 0x73, 0x90, 0x1f, 0x40, 0x68, 0xe8, 0xab, 0x5c, 0x48, 0x6b, 0x18, 0xca, 0xfb,
-	0xb0, 0x40, 0xef, 0x18, 0x9e, 0x76, 0x11, 0x7f, 0xd9, 0xb0, 0x58, 0xa3, 0xbd, 0x8b, 0xf5, 0x5f,
-	0xb2, 0xfd, 0x18, 0x16, 0x87, 0x6d, 0x17, 0x11, 0x7a, 0x07, 0x20, 0x14, 0x0c, 0x62, 0xf4, 0xec,
-	0xe9, 0x98, 0xaf, 0x46, 0x34, 0xce, 0x16, 0xa7, 0x47, 0xb0, 0xb8, 0x8e, 0x7d, 0xda, 0x6a, 0x60,
-	0x4f, 0x74, 0x0b, 0x5f, 0xdf, 0x77, 0x3f, 0x9c, 0x80, 0x7c, 0x74, 0x2b, 0xda, 0xa8, 0x1b, 0x78,
-	0x5f, 0xef, 0x5b, 0xfe, 0x89, 0x46, 0x9d, 0x6f, 0xb8, 0x20, 0xd8, 0x43, 0x8d, 0xfa, 0x0a, 0xcc,
-	0x1d, 0xea, 0x96, 0x19, 0x6f, 0xb0, 0x82, 0xaf, 0x53, 0xb3, 0x8c, 0x15, 0xe9, 0xaf, 0x08, 0x6f,
-	0x4d, 0xf8, 0x39, 0x91, 0xd6, 0x24, 0x15, 0xb4, 0x26, 0x8c, 0x33, 0x68, 0x4d, 0x96, 0x81, 0x6f,
-	0x11, 0x91, 0x25, 0xf2, 0x14, 0xdb, 0x7b, 0x86, 0x31, 0x42, 0x51, 0x82, 0x6e, 0xc3, 0x02, 0x97,
-	0x8d, 0xb7, 0x0a, 0xfc, 0xcb, 0x53, 0x56, 0xe5, 0x66, 0xc6, 0x3a, 0x05, 0xa2, 0xfc, 0x46, 0x82,
-	0x05, 0x0e, 0xdc, 0xe1, 0x7c, 0x75, 0x89, 0x70, 0x96, 0x0d, 0xdb, 0x2b, 0x81, 0x68, 0x63, 0x46,
-	0xbd, 0x4c, 0x30, 0xea, 0x29, 0x3f, 0x96, 0x60, 0x81, 0xe3, 0xd9, 0xe5, 0xdb, 0xb9, 0x04, 0xf9,
-	0x58, 0x97, 0xc9, 0x63, 0x03, 0x76, 0xd8, 0x5e, 0x52, 0x70, 0xa5, 0x85, 0x10, 0x98, 0x42, 0x2e,
-	0x0f, 0x5c, 0x7f, 0x24, 0x01, 0x5a, 0xc7, 0xfe, 0xff, 0xc2, 0xa5, 0xff, 0x95, 0x82, 0x4c, 0x60,
-	0x47, 0x62, 0x53, 0xf9, 0x26, 0xa4, 0x45, 0xb7, 0x3f, 0x71, 0xb6, 0x0f, 0x2a, 0x42, 0xfc, 0x9c,
-	0x1f, 0x6f, 0x4e, 0x1d, 0xcf, 0x65, 0x98, 0x0e, 0xaa, 0x96, 0x4f, 0xe8, 0xc1, 0x72, 0xd4, 0x18,
-	0xb8, 0x3f, 0x6a, 0x0c, 0xbc, 0x1f, 0xb6, 0xb0, 0x1d, 0xd6, 0xc2, 0xbe, 0x70, 0x6a, 0xaa, 0x8e,
-	0x1f, 0x7c, 0xbb, 0x49, 0x9d, 0xea, 0xfb, 0x90, 0x8b, 0xce, 0x19, 0xa9, 0x73, 0xce, 0x19, 0x51,
-	0x65, 0x54, 0x03, 0xe8, 0xe9, 0xb6, 0xde, 0xc1, 0x3d, 0x6c, 0xfb, 0xe2, 0x8b, 0xd4, 0xf3, 0x23,
-	0xb7, 0xda, 0x0c, 0x45, 0xd5, 0x88, 0x1a, 0x6d, 0xe4, 0x2e, 0x38, 0xae, 0x2e, 0x02, 0x12, 0x0b,
-	0xed, 0xc3, 0xc6, 0xce, 0x43, 0x8d, 0x0f, 0xa7, 0x93, 0xc3, 0x63, 0x6c, 0x2a, 0x36, 0xc6, 0x4e,
-	0x0d, 0xc6, 0xd8, 0xb4, 0xf2, 0xb9, 0x04, 0xc5, 0xb8, 0x89, 0xf4, 0x71, 0xa2, 0x57, 0xd5, 0xfa,
-	0x6e, 0xc7, 0xd3, 0x0d, 0x2c, 0x3e, 0x20, 0xb2, 0xeb, 0xef, 0x72, 0x12, 0x6a, 0xc2, 0x8c, 0xe0,
-	0x6a, 0x8e, 0x1b, 0x4c, 0x55, 0xd4, 0x07, 0x37, 0x92, 0x87, 0xce, 0x81, 0xea, 0x36, 0x17, 0x57,
-	0x8b, 0xfd, 0xd8, 0x5a, 0xe9, 0x01, 0x3a, 0x29, 0x85, 0x5e, 0x87, 0x2b, 0x51, 0x53, 0x34, 0xe2,
-	0xeb, 0x9e, 0xcf, 0x87, 0x7f, 0x5e, 0x0c, 0xf3, 0x11, 0xab, 0x5a, 0x94, 0xc9, 0x3e, 0xa3, 0x8c,
-	0xfd, 0x84, 0xa9, 0xfc, 0x45, 0x82, 0xab, 0xad, 0x41, 0xa9, 0x47, 0x02, 0xf4, 0xcd, 0x15, 0xfd,
-	0xd3, 0x49, 0xaa, 0x9f, 0x4a, 0xf0, 0xac, 0xea, 0x58, 0xd6, 0x9e, 0xde, 0x3e, 0x08, 0xae, 0x27,
-	0x1c, 0xf4, 0x4d, 0x02, 0xda, 0x2e, 0x6f, 0xc5, 0x22, 0x28, 0x2e, 0xba, 0x99, 0xf8, 0x47, 0x49,
-	0xe9, 0x7c, 0x1f, 0x25, 0x95, 0x27, 0x30, 0x97, 0x34, 0xf7, 0xcb, 0x30, 0xcd, 0x3f, 0x37, 0x06,
-	0x9f, 0xbf, 0x83, 0x25, 0x7a, 0x01, 0x8a, 0x3d, 0xd3, 0x8e, 0x42, 0x1f, 0xff, 0xe3, 0x57, 0xbe,
-	0x67, 0xda, 0x03, 0xd8, 0xa3, 0x52, 0xfa, 0x67, 0x27, 0x01, 0x32, 0xdf, 0xd3, 0x3f, 0x0b, 0xa5,
-	0x6e, 0xff, 0x63, 0x1e, 0x8a, 0xa2, 0x41, 0xe1, 0xc1, 0xf0, 0xd0, 0x2f, 0x24, 0xc8, 0x47, 0xdb,
-	0x6a, 0x94, 0x8c, 0x2f, 0x09, 0x3d, 0x7c, 0xf9, 0xe5, 0x33, 0x48, 0x72, 0x9f, 0x29, 0x6f, 0xfe,
-	0xe0, 0xab, 0x7f, 0xfe, 0x64, 0xe2, 0x16, 0xaa, 0x54, 0x0e, 0x6f, 0x55, 0x44, 0xe0, 0x48, 0xe5,
-	0xc9, 0x20, 0xa8, 0xc7, 0x15, 0xd6, 0xd9, 0x55, 0x9e, 0xd0, 0x7f, 0x8e, 0x2b, 0x61, 0x8b, 0xfe,
-	0x73, 0x09, 0x60, 0x30, 0xb7, 0xa1, 0xe4, 0xbf, 0x8d, 0x9c, 0x18, 0xec, 0xca, 0xa7, 0x4e, 0x00,
-	0xca, 0x1a, 0xb3, 0xe6, 0x1d, 0x74, 0xff, 0x9c, 0xd6, 0x54, 0x9e, 0x0c, 0x52, 0xea, 0x18, 0xfd,
-	0x4c, 0x82, 0x42, 0x6c, 0xaa, 0x45, 0xc9, 0x0e, 0x49, 0x9a, 0x7c, 0xcb, 0x63, 0xda, 0x5f, 0x65,
-	0x95, 0x99, 0x78, 0x57, 0x39, 0xaf, 0xc3, 0x56, 0xa5, 0x65, 0xf4, 0x6b, 0x09, 0x0a, 0xb1, 0x19,
-	0x74, 0x84, 0x61, 0x49, 0x73, 0xea, 0x58, 0xc3, 0xd6, 0x99, 0x61, 0xd5, 0xf2, 0x85, 0x7c, 0x47,
-	0xad, 0xfc, 0x95, 0x04, 0x85, 0xd8, 0x0c, 0x3a, 0xc2, 0xca, 0xa4, 0x39, 0x75, 0xac, 0x95, 0x22,
-	0xc2, 0xcb, 0x17, 0x8b, 0xf0, 0x97, 0x12, 0x14, 0xe3, 0x23, 0x0d, 0x5a, 0x1e, 0x99, 0xf3, 0x27,
-	0x66, 0xb6, 0xf2, 0x2b, 0x67, 0x92, 0x15, 0x15, 0xf2, 0x36, 0xb3, 0xf8, 0x0e, 0xba, 0x75, 0x46,
-	0x8b, 0x23, 0xe3, 0xd1, 0x17, 0x12, 0xe4, 0xa3, 0x23, 0xea, 0x88, 0x12, 0x4e, 0x98, 0x62, 0xc7,
-	0xfa, 0xf1, 0x21, 0xb3, 0xea, 0x01, 0x7a, 0xf7, 0xdc, 0x56, 0x55, 0x9e, 0x44, 0xe7, 0xc5, 0x63,
-	0xf4, 0x5b, 0x09, 0x66, 0x86, 0xc6, 0x51, 0x94, 0xec, 0xa0, 0xe4, 0xa1, 0xb5, 0xbc, 0x18, 0x08,
-	0x07, 0xff, 0xa5, 0x60, 0xa5, 0xde, 0x73, 0xfd, 0x23, 0x45, 0x65, 0x26, 0x6e, 0x28, 0xeb, 0x17,
-	0x35, 0x71, 0xb5, 0xcd, 0x0e, 0xa6, 0xb9, 0xf9, 0x4b, 0x09, 0x66, 0x86, 0x86, 0xc9, 0x11, 0xc6,
-	0x26, 0x8f, 0x9c, 0xe5, 0xe4, 0x4f, 0xd9, 0x51, 0x49, 0xe5, 0x1e, 0xb3, 0xfb, 0x75, 0x74, 0xe7,
-	0x8c, 0x76, 0x13, 0xa6, 0x2c, 0x7a, 0xe2, 0x3f, 0x48, 0x50, 0x88, 0xbd, 0x4e, 0x68, 0x34, 0x18,
-	0x0f, 0xcf, 0x21, 0xe5, 0xe5, 0xb3, 0x88, 0x8a, 0xb4, 0xdc, 0x62, 0x56, 0x3e, 0x44, 0xef, 0x5d,
-	0xa4, 0x90, 0x2a, 0x83, 0xbf, 0xc9, 0xfd, 0x5e, 0x82, 0x5c, 0x64, 0x62, 0x41, 0x37, 0x46, 0x79,
-	0x75, 0x68, 0xa6, 0x29, 0x9f, 0xfe, 0xc2, 0x2a, 0xdf, 0x65, 0x76, 0x7e, 0x88, 0x76, 0x9f, 0x8e,
-	0x9d, 0x95, 0x27, 0xd1, 0xee, 0xe0, 0x18, 0xfd, 0x4e, 0x82, 0x62, 0x7c, 0x10, 0x1e, 0x81, 0x04,
-	0x89, 0xd3, 0xf2, 0xd8, 0x32, 0xfb, 0x36, 0xb3, 0xfe, 0x91, 0xf2, 0x94, 0xbc, 0x4c, 0x53, 0xf8,
-	0x8f, 0x12, 0x14, 0xe3, 0x23, 0xf1, 0x08, 0x8b, 0x13, 0xe7, 0xe6, 0xb1, 0x16, 0x0b, 0x7f, 0x2f,
-	0x5f, 0x92, 0xbf, 0xff, 0x2a, 0xc1, 0x95, 0x11, 0x3d, 0x21, 0xba, 0x93, 0x68, 0xda, 0xe9, 0x1d,
-	0xe4, 0xd8, 0xfb, 0x98, 0xec, 0x3e, 0x6d, 0xe5, 0x7b, 0x97, 0x72, 0x9f, 0x55, 0x4f, 0x58, 0x47,
-	0x23, 0xf3, 0x37, 0x09, 0x16, 0x12, 0x3b, 0x79, 0x74, 0x6b, 0x04, 0x6a, 0x8c, 0xee, 0xfa, 0xc7,
-	0xde, 0xcb, 0x66, 0xf7, 0xea, 0x2a, 0xed, 0x4b, 0xb9, 0x57, 0x85, 0x60, 0x7f, 0x60, 0xd3, 0xaa,
-	0xb4, 0xfc, 0xc0, 0x86, 0x2b, 0x6d, 0xa7, 0x97, 0x64, 0xd4, 0x83, 0x39, 0xf1, 0x86, 0x8b, 0xbf,
-	0x06, 0x36, 0x29, 0x8c, 0x37, 0xa5, 0x8f, 0xee, 0x0b, 0xd9, 0x8e, 0x63, 0xe9, 0x76, 0x67, 0xc5,
-	0xf1, 0x3a, 0x95, 0x0e, 0xb6, 0x19, 0xc8, 0x57, 0x38, 0x4b, 0x77, 0x4d, 0x12, 0xfb, 0x6f, 0x6a,
-	0xf7, 0xc2, 0xc5, 0x5e, 0x9a, 0x09, 0xde, 0xf9, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x59,
-	0xbc, 0xdf, 0xce, 0x26, 0x00, 0x00,
+	// 2858 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xc9, 0x6f, 0x23, 0xc7,
+	0xd5, 0xff, 0x5a, 0xa2, 0x24, 0xf2, 0x71, 0x11, 0x55, 0x5a, 0xa6, 0x41, 0xcf, 0x78, 0xe4, 0xf6,
+	0x32, 0x63, 0xf9, 0xb3, 0xe8, 0x59, 0xbc, 0x69, 0xe6, 0x33, 0xcc, 0xa1, 0x68, 0x0d, 0x3d, 0x5a,
+	0xf8, 0x35, 0x25, 0x1b, 0x9f, 0x81, 0x2f, 0x8d, 0x12, 0xbb, 0x44, 0xb6, 0xd5, 0xec, 0x6e, 0x77,
+	0x35, 0x65, 0x6b, 0x06, 0x73, 0x48, 0x90, 0x00, 0x01, 0x72, 0x4c, 0x10, 0xe4, 0x10, 0x04, 0x81,
+	0xe3, 0xe4, 0x90, 0x4b, 0x2e, 0x41, 0x2e, 0xb9, 0xe6, 0x90, 0xbb, 0x0f, 0x41, 0x02, 0x04, 0xb9,
+	0x04, 0xb9, 0xe6, 0x5f, 0x08, 0x6a, 0xe9, 0x66, 0x93, 0x6a, 0x8a, 0x92, 0x65, 0xc5, 0x39, 0xa9,
+	0xeb, 0x2d, 0x55, 0xaf, 0x5e, 0xbd, 0xf7, 0xab, 0xf7, 0x8a, 0x82, 0x97, 0xdb, 0xae, 0xdb, 0xb6,
+	0x49, 0xb9, 0xe5, 0x3a, 0x01, 0xb6, 0x1c, 0xe2, 0x97, 0x8f, 0x6e, 0x95, 0x5b, 0x76, 0x8f, 0x06,
+	0xc4, 0x37, 0x28, 0xf1, 0x8f, 0xac, 0x16, 0x59, 0xf5, 0x7c, 0x37, 0x70, 0xd1, 0xbc, 0x10, 0x5d,
+	0x8d, 0x44, 0x57, 0x8f, 0x6e, 0x95, 0xae, 0x4a, 0x7d, 0xec, 0x59, 0x65, 0xec, 0x38, 0x6e, 0x80,
+	0x03, 0xcb, 0x75, 0xa8, 0x50, 0x29, 0x3d, 0x23, 0xb9, 0x7c, 0xb4, 0xdf, 0x3b, 0x28, 0x93, 0xae,
+	0x17, 0x1c, 0x0b, 0xa6, 0xf6, 0x79, 0x0a, 0x60, 0xdb, 0x35, 0x49, 0xd5, 0x75, 0x0e, 0xac, 0x36,
+	0x7a, 0x0e, 0x72, 0x5d, 0xdc, 0xea, 0x58, 0x0e, 0x31, 0x82, 0x63, 0x8f, 0xa8, 0xca, 0xb2, 0x72,
+	0x33, 0xa3, 0x67, 0x25, 0x6d, 0xf7, 0xd8, 0x23, 0x68, 0x19, 0x72, 0xa6, 0x45, 0x0f, 0x0d, 0x6a,
+	0x3d, 0x26, 0x46, 0x7b, 0x5f, 0x9d, 0x58, 0x56, 0x6e, 0x4e, 0xe9, 0xc0, 0x68, 0x4d, 0xeb, 0x31,
+	0xd9, 0xd8, 0x67, 0x93, 0xb8, 0xb8, 0x17, 0x74, 0x0c, 0xda, 0x72, 0x3d, 0x42, 0xd5, 0xc9, 0xe5,
+	0x49, 0x36, 0x09, 0xa7, 0x35, 0x39, 0x09, 0xdd, 0x80, 0x59, 0xb9, 0x2f, 0x03, 0xb7, 0x5a, 0x6e,
+	0xcf, 0x09, 0xd4, 0x0c, 0x5f, 0xaa, 0x20, 0xc9, 0x15, 0x41, 0x45, 0x75, 0x48, 0x77, 0x49, 0x80,
+	0x4d, 0x1c, 0x60, 0x35, 0xb5, 0x3c, 0x79, 0x33, 0x7b, 0xfb, 0xd5, 0xd5, 0x04, 0x17, 0xac, 0xf6,
+	0xf7, 0xb0, 0xba, 0x25, 0xe5, 0x6b, 0x4e, 0xe0, 0x1f, 0xeb, 0x91, 0x3a, 0xba, 0x06, 0x60, 0x75,
+	0x71, 0x5b, 0xee, 0x6c, 0x8a, 0x2f, 0x97, 0xe1, 0x14, 0xbe, 0xaf, 0x2a, 0x4c, 0xdb, 0x78, 0x9f,
+	0xd8, 0x54, 0x9d, 0xe6, 0xeb, 0xbc, 0x32, 0x6e, 0x9d, 0x4d, 0x2e, 0x2d, 0x56, 0x91, 0xaa, 0xe8,
+	0x25, 0x98, 0xb5, 0xdd, 0x16, 0xb6, 0x0d, 0x4a, 0x4d, 0x43, 0xec, 0x6b, 0x86, 0xfb, 0x27, 0xcf,
+	0xc9, 0x4d, 0x6a, 0x56, 0xf9, 0xb6, 0x10, 0xa4, 0x02, 0xdc, 0xa6, 0x6a, 0x9a, 0xbb, 0x86, 0x7f,
+	0xa3, 0x65, 0xc8, 0x7a, 0x3e, 0x61, 0x87, 0x63, 0xed, 0xdb, 0x44, 0x85, 0x65, 0xe5, 0x66, 0x5a,
+	0x8f, 0x93, 0x4a, 0xf7, 0x20, 0x3f, 0xb0, 0x39, 0x54, 0x84, 0xc9, 0x43, 0x72, 0x2c, 0x4f, 0x89,
+	0x7d, 0xa2, 0x05, 0x98, 0x3a, 0xc2, 0x76, 0x8f, 0xf0, 0x63, 0xc9, 0xe8, 0x62, 0xb0, 0x36, 0xf1,
+	0x96, 0x52, 0x7a, 0x1b, 0xb2, 0x31, 0x8b, 0xcf, 0xa3, 0xaa, 0xfd, 0x51, 0x01, 0xd8, 0xc2, 0x2c,
+	0x1a, 0x2b, 0xbd, 0xa0, 0x83, 0x4a, 0x90, 0xee, 0x51, 0xe2, 0x3b, 0xb8, 0x1b, 0x06, 0x48, 0x34,
+	0x66, 0x3c, 0x0f, 0x53, 0xfa, 0xa9, 0xeb, 0x9b, 0x72, 0x9e, 0x68, 0x8c, 0xee, 0xc2, 0x52, 0x18,
+	0xd4, 0x2d, 0x6c, 0xb4, 0x88, 0x1f, 0x58, 0x07, 0x56, 0x0b, 0x07, 0x44, 0x35, 0xb9, 0xe4, 0x82,
+	0xe4, 0x56, 0x71, 0xb5, 0xcf, 0x43, 0xaf, 0x02, 0x6a, 0xd9, 0x16, 0x71, 0x82, 0x01, 0x0d, 0xc2,
+	0x35, 0xe6, 0x04, 0x27, 0x2e, 0x7e, 0x0d, 0x40, 0x8a, 0xb3, 0xed, 0x1d, 0x88, 0x53, 0x16, 0x94,
+	0x47, 0xe4, 0x58, 0xfb, 0x52, 0x81, 0x5c, 0xc5, 0x34, 0x5d, 0x87, 0xca, 0x88, 0xff, 0x00, 0xe6,
+	0x3b, 0x41, 0xe0, 0x19, 0xb6, 0x8b, 0x4d, 0x63, 0x1f, 0xdb, 0xd8, 0x69, 0x59, 0x4e, 0x9b, 0xef,
+	0x2b, 0x7b, 0xfb, 0xa5, 0xc4, 0x18, 0x78, 0x18, 0x04, 0xde, 0xa6, 0x8b, 0xcd, 0x07, 0xa1, 0xb4,
+	0x3e, 0xd7, 0x19, 0x26, 0xa1, 0x43, 0x28, 0x75, 0x5c, 0xdf, 0x7a, 0xcc, 0x14, 0x6d, 0xc3, 0x73,
+	0x4d, 0x03, 0xf7, 0x02, 0x97, 0xb6, 0xb0, 0xcd, 0xa6, 0x9f, 0xe0, 0xd3, 0x27, 0x87, 0xf2, 0xc3,
+	0x48, 0xad, 0xe1, 0x9a, 0x95, 0xbe, 0x92, 0xae, 0x76, 0x46, 0x70, 0xb4, 0x32, 0xcc, 0x9d, 0x30,
+	0x8a, 0x1d, 0x85, 0x69, 0x51, 0xbc, 0x6f, 0x13, 0x93, 0x6f, 0x27, 0xad, 0x47, 0x63, 0xed, 0x0d,
+	0x50, 0x47, 0x2d, 0x73, 0xaa, 0xde, 0x1f, 0x00, 0x66, 0xaa, 0xe2, 0x94, 0x58, 0x0c, 0xc7, 0x42,
+	0x80, 0x7f, 0xb3, 0x18, 0x36, 0x09, 0x6d, 0xf9, 0x96, 0xc7, 0x10, 0x48, 0x46, 0x40, 0x9c, 0x84,
+	0xfe, 0x1b, 0x90, 0xe5, 0x58, 0x81, 0x85, 0x6d, 0xc3, 0x71, 0x4d, 0x22, 0x93, 0x64, 0x92, 0x27,
+	0x49, 0x51, 0x72, 0x44, 0x92, 0xb1, 0x3c, 0x79, 0x17, 0xb2, 0x52, 0x8a, 0x1d, 0x96, 0x9a, 0xe2,
+	0x6e, 0xbb, 0x3e, 0x26, 0x33, 0x75, 0x70, 0xfa, 0x88, 0xf6, 0x2e, 0x64, 0xbb, 0x3c, 0x74, 0x99,
+	0xff, 0x3b, 0x3c, 0xed, 0x47, 0xcd, 0xd0, 0x0f, 0x71, 0x1d, 0xba, 0xfd, 0x70, 0xbf, 0xc1, 0x72,
+	0xba, 0xdd, 0xb6, 0x9c, 0x76, 0x88, 0xc5, 0xea, 0xb4, 0xc0, 0x2a, 0x49, 0x6e, 0x0a, 0x2a, 0x8b,
+	0xd4, 0xae, 0xeb, 0x58, 0x81, 0xeb, 0xc7, 0x65, 0x67, 0x44, 0xa4, 0xf6, 0x39, 0xa1, 0xb8, 0x0a,
+	0x33, 0x0e, 0x09, 0x3e, 0x75, 0xfd, 0x43, 0x35, 0xcd, 0x65, 0xc2, 0x21, 0x5a, 0x81, 0xb9, 0x30,
+	0x51, 0x2c, 0xef, 0xe8, 0xae, 0xd1, 0xb2, 0x4c, 0x5f, 0xe2, 0xe3, 0xac, 0x64, 0xd4, 0xbd, 0xa3,
+	0xbb, 0x55, 0xcb, 0xf4, 0xd1, 0x7b, 0x90, 0xc7, 0x3c, 0x9e, 0x43, 0x1f, 0x01, 0xdf, 0xe1, 0x73,
+	0x89, 0x3b, 0x8c, 0x47, 0xbe, 0x9e, 0xc3, 0xf1, 0x3c, 0x78, 0x16, 0x80, 0xf6, 0xf6, 0x43, 0x83,
+	0xb2, 0x7c, 0xb1, 0x18, 0x05, 0xdd, 0x07, 0xee, 0x55, 0xc3, 0x73, 0x5d, 0x9b, 0xaa, 0x39, 0x0e,
+	0x91, 0xd7, 0x46, 0x1e, 0x44, 0xc3, 0x75, 0x6d, 0x3d, 0xe3, 0xc8, 0x2f, 0x8a, 0xae, 0x42, 0x86,
+	0x01, 0x20, 0xbf, 0x96, 0xd4, 0x3c, 0x07, 0xbd, 0x3e, 0x01, 0xbd, 0x01, 0x57, 0x88, 0xc3, 0x02,
+	0xcc, 0x38, 0xec, 0xed, 0x13, 0xdf, 0x21, 0x01, 0xa1, 0x06, 0xb6, 0xbd, 0x0e, 0x56, 0x0b, 0x3c,
+	0x00, 0x17, 0x05, 0xfb, 0x51, 0xc4, 0xad, 0x30, 0x26, 0x7a, 0x06, 0x32, 0x94, 0xd8, 0x07, 0x86,
+	0x6d, 0x39, 0x87, 0x12, 0x43, 0xd2, 0x8c, 0xb0, 0x69, 0x39, 0x87, 0x2c, 0x3c, 0x1f, 0xbb, 0x4e,
+	0x88, 0x14, 0xfc, 0x9b, 0x85, 0x36, 0x71, 0x4c, 0xcf, 0xb5, 0x9c, 0x40, 0x42, 0x43, 0x34, 0x66,
+	0x46, 0x84, 0x81, 0x19, 0x3a, 0xff, 0x88, 0xf8, 0x94, 0x85, 0x71, 0x9b, 0x8b, 0x2e, 0x4a, 0xb6,
+	0x8c, 0xff, 0x0f, 0x04, 0x93, 0xa3, 0x5a, 0xcf, 0xf7, 0x19, 0xe2, 0xc8, 0x40, 0x0b, 0xd5, 0x3a,
+	0x12, 0xd5, 0x04, 0x57, 0x44, 0x57, 0xa8, 0xf5, 0x1a, 0x84, 0x74, 0x91, 0x06, 0xa1, 0x8e, 0xc5,
+	0x75, 0x90, 0xe4, 0x31, 0x57, 0x86, 0x1a, 0xd7, 0x21, 0xdb, 0xf2, 0x09, 0x0e, 0x88, 0x11, 0x58,
+	0x5d, 0xa2, 0x7e, 0x2c, 0x4e, 0x48, 0x90, 0x76, 0xad, 0x2e, 0x41, 0xf7, 0x60, 0x9a, 0x06, 0x38,
+	0xe8, 0x51, 0xf5, 0x70, 0x59, 0xb9, 0x59, 0xb8, 0xfd, 0x7c, 0xe2, 0xe9, 0x48, 0xeb, 0x57, 0x9b,
+	0x5c, 0x54, 0x97, 0x2a, 0xe8, 0x45, 0x28, 0x88, 0x2f, 0xa3, 0x4b, 0x28, 0xc5, 0x6d, 0xa2, 0xda,
+	0x7c, 0x81, 0xbc, 0xa0, 0x6e, 0x09, 0x22, 0x7a, 0x15, 0xe6, 0xb9, 0xb9, 0x51, 0x58, 0xf2, 0x32,
+	0x40, 0xed, 0x8a, 0xf4, 0x65, 0xac, 0x30, 0x30, 0x59, 0x2d, 0xc0, 0x92, 0x5d, 0xa6, 0x01, 0x8d,
+	0x45, 0xb2, 0xc3, 0x67, 0x2e, 0x86, 0x9c, 0x28, 0x94, 0x57, 0x61, 0xde, 0x72, 0x68, 0x80, 0x9d,
+	0x16, 0x31, 0xda, 0xbe, 0xdb, 0xf3, 0x8c, 0x9e, 0x6f, 0x53, 0xd5, 0xe5, 0xe1, 0x32, 0x17, 0xb2,
+	0x36, 0x18, 0x67, 0xcf, 0xb7, 0x29, 0x9b, 0x7d, 0xc0, 0x87, 0x02, 0x4a, 0x3c, 0x61, 0x4b, 0xcc,
+	0x83, 0x02, 0x4a, 0xae, 0x43, 0x96, 0x7c, 0xe6, 0x59, 0xbe, 0xf4, 0xdf, 0x27, 0xc2, 0x7f, 0x82,
+	0xc4, 0xfc, 0xa7, 0x59, 0x30, 0x2d, 0x9c, 0x82, 0x96, 0x00, 0x35, 0x77, 0x2b, 0xbb, 0x7b, 0x4d,
+	0x63, 0x6f, 0xbb, 0xd9, 0xa8, 0x55, 0xeb, 0xef, 0xd5, 0x6b, 0xeb, 0xc5, 0xff, 0x42, 0x45, 0xc8,
+	0x35, 0xf4, 0x9d, 0x0f, 0xea, 0xcd, 0xfa, 0xce, 0x76, 0x7d, 0x7b, 0xa3, 0xa8, 0xa0, 0x2c, 0xcc,
+	0xe8, 0x7b, 0xdb, 0x7c, 0x30, 0x81, 0x66, 0x21, 0xab, 0xd7, 0xaa, 0x3b, 0xdb, 0xd5, 0xfa, 0x26,
+	0x23, 0x4c, 0xa2, 0x1c, 0xa4, 0x9b, 0xbb, 0x3b, 0x8d, 0x06, 0x1b, 0xa5, 0x50, 0x06, 0xa6, 0x6a,
+	0xba, 0xbe, 0xa3, 0x17, 0xa7, 0xb4, 0xef, 0xa5, 0x20, 0x2f, 0x0f, 0x62, 0xcf, 0x33, 0xd9, 0xb5,
+	0xf5, 0x1a, 0x2c, 0x98, 0x84, 0x5a, 0x3e, 0x31, 0x07, 0xe3, 0x21, 0x25, 0xe2, 0x41, 0xf2, 0xe2,
+	0xf1, 0x70, 0x1f, 0x4a, 0xa1, 0x46, 0x02, 0xea, 0x88, 0xf2, 0x46, 0x95, 0x12, 0x5b, 0x27, 0xc0,
+	0x67, 0x0f, 0x16, 0x43, 0xed, 0x41, 0xf8, 0x98, 0x3e, 0x2b, 0x7c, 0xcc, 0x4b, 0xfd, 0x81, 0xdb,
+	0xb4, 0x3c, 0xb4, 0x0d, 0x86, 0x16, 0x86, 0x65, 0x86, 0x20, 0x18, 0xdb, 0x06, 0xc3, 0x85, 0xba,
+	0xc9, 0xce, 0x30, 0x54, 0x88, 0x15, 0x67, 0x02, 0x0f, 0x8b, 0x92, 0x53, 0x8f, 0x6a, 0xb4, 0x43,
+	0xb8, 0x76, 0x72, 0xfa, 0xf8, 0xbd, 0x9a, 0xe1, 0xd6, 0xdf, 0x3c, 0x15, 0x97, 0xe2, 0x57, 0x6a,
+	0x69, 0xc8, 0xa2, 0xf8, 0x3d, 0xf8, 0x0a, 0x84, 0xf6, 0x1a, 0x7d, 0xec, 0x02, 0x1e, 0x8c, 0xa1,
+	0x65, 0x9b, 0x11, 0x84, 0xdd, 0x85, 0xa5, 0xe8, 0x34, 0x06, 0x51, 0x40, 0xd6, 0x36, 0xe1, 0x49,
+	0xc4, 0x51, 0x40, 0xfb, 0x67, 0x0a, 0x32, 0x3b, 0x1e, 0xf1, 0xf9, 0x24, 0x89, 0x17, 0x6a, 0x88,
+	0x62, 0x13, 0x31, 0x14, 0x7b, 0x1f, 0x0a, 0x6e, 0xa8, 0x24, 0xfc, 0x35, 0x79, 0x4a, 0xc2, 0x47,
+	0xf3, 0xaf, 0x32, 0x17, 0xea, 0xf9, 0x48, 0x95, 0x7b, 0xf4, 0x7f, 0x22, 0xd0, 0x48, 0xf1, 0x39,
+	0x5e, 0x1c, 0x33, 0xc7, 0x10, 0x6c, 0x2c, 0xc1, 0xb4, 0x49, 0x02, 0x6c, 0xd9, 0xf2, 0xc8, 0xe4,
+	0x28, 0x01, 0x4e, 0xa6, 0x92, 0xe0, 0x64, 0x00, 0xc0, 0xa7, 0x87, 0x00, 0xfc, 0x3a, 0x64, 0x03,
+	0xec, 0xb7, 0x49, 0x20, 0xd8, 0x22, 0x84, 0x40, 0x90, 0x98, 0x80, 0xa6, 0x8f, 0x4d, 0xd8, 0x2c,
+	0xcc, 0x34, 0x6a, 0xdb, 0xeb, 0x09, 0xb9, 0x9a, 0x86, 0xd4, 0xfa, 0xce, 0x76, 0x4d, 0x24, 0x69,
+	0xe5, 0xc1, 0x8e, 0xbe, 0xcb, 0x93, 0x54, 0xfb, 0xab, 0x02, 0x29, 0xee, 0x98, 0x05, 0x28, 0xee,
+	0xfe, 0x5f, 0xa3, 0x36, 0x34, 0x21, 0x82, 0x42, 0x55, 0xaf, 0x55, 0x76, 0x6b, 0x46, 0x75, 0x73,
+	0xaf, 0xb9, 0x5b, 0xd3, 0x8b, 0x0a, 0xa3, 0xad, 0xd7, 0x36, 0x6b, 0x31, 0xda, 0x04, 0xa3, 0xed,
+	0x35, 0x36, 0xf4, 0xca, 0x7a, 0xcd, 0xd8, 0xaa, 0x70, 0xda, 0x24, 0x9a, 0x83, 0x7c, 0x48, 0xdb,
+	0xde, 0x59, 0xaf, 0x35, 0x8b, 0x29, 0x26, 0xa6, 0xd7, 0x1a, 0x95, 0xba, 0x1e, 0xa9, 0x4e, 0x09,
+	0xd5, 0xf5, 0xf8, 0x12, 0xd3, 0xcc, 0x18, 0xb9, 0x2c, 0xd3, 0x34, 0x1a, 0x3b, 0x3b, 0x9b, 0xc5,
+	0x19, 0x46, 0x95, 0x0b, 0xf7, 0xa9, 0x69, 0x74, 0x15, 0xd4, 0x66, 0x6d, 0xb7, 0x4f, 0x32, 0xb6,
+	0x2a, 0xdb, 0x95, 0x8d, 0xda, 0x56, 0x6d, 0x7b, 0xb7, 0x98, 0xd1, 0xbe, 0xad, 0xc0, 0x42, 0x95,
+	0xdf, 0x19, 0x12, 0x7f, 0x74, 0xf2, 0x49, 0x8f, 0xd0, 0x80, 0xd5, 0xcd, 0x9e, 0xef, 0x7e, 0x4c,
+	0x5a, 0x01, 0xcb, 0x57, 0x11, 0x82, 0x19, 0x49, 0xa9, 0x9b, 0x89, 0x71, 0xf8, 0x06, 0xcc, 0xc8,
+	0x9b, 0x92, 0x07, 0x60, 0xf6, 0xf6, 0xd5, 0xd3, 0x6e, 0x1c, 0x3d, 0x14, 0xd6, 0x08, 0xcc, 0x6d,
+	0x90, 0xe0, 0xe2, 0xeb, 0xf3, 0x52, 0x5f, 0x96, 0x49, 0x26, 0x37, 0x81, 0x97, 0xfa, 0xa2, 0x3e,
+	0x32, 0xb5, 0x2f, 0x14, 0x58, 0x10, 0xe8, 0x7a, 0xd9, 0x4b, 0xa1, 0x35, 0x98, 0xee, 0xf1, 0x95,
+	0x64, 0x85, 0xaa, 0x9d, 0xe6, 0x08, 0x61, 0x93, 0x2e, 0x35, 0xb4, 0x0e, 0x2c, 0xac, 0x13, 0x9b,
+	0x5c, 0xbe, 0x95, 0xda, 0x43, 0x98, 0xdf, 0xb4, 0x68, 0xe8, 0x78, 0xfa, 0xd5, 0x17, 0xd2, 0x7a,
+	0xb0, 0x30, 0x38, 0x13, 0xf5, 0x5c, 0x87, 0x12, 0xf4, 0x16, 0xa4, 0xe5, 0x72, 0x54, 0x55, 0x78,
+	0x89, 0x78, 0x7a, 0x48, 0x44, 0xd2, 0xe8, 0x79, 0xc8, 0x77, 0x2d, 0x4a, 0xd9, 0x15, 0xc6, 0x56,
+	0xa0, 0xea, 0x04, 0x07, 0xda, 0x9c, 0x24, 0x7e, 0xc4, 0x68, 0xda, 0x21, 0xcc, 0x6f, 0x90, 0x20,
+	0x02, 0xa3, 0x0b, 0x78, 0xea, 0x39, 0xc8, 0xf5, 0x21, 0x34, 0xf2, 0x55, 0x36, 0xa2, 0xd5, 0x4d,
+	0xed, 0x7d, 0x58, 0x64, 0x7b, 0x8c, 0x56, 0xbb, 0x88, 0xbf, 0x1c, 0x58, 0xaa, 0xb2, 0xda, 0xc5,
+	0xfe, 0x37, 0xd9, 0xfe, 0x14, 0x96, 0x86, 0x6d, 0x97, 0x27, 0xf4, 0x0e, 0x40, 0x24, 0x18, 0x9e,
+	0xd1, 0xb3, 0xa7, 0x63, 0xbe, 0x1e, 0xd3, 0x38, 0xdb, 0x39, 0x3d, 0x82, 0xa5, 0x0d, 0x12, 0xb0,
+	0x52, 0x83, 0xf8, 0xb2, 0x5a, 0xf8, 0xea, 0xbe, 0xfb, 0xee, 0x04, 0xe4, 0xe2, 0x53, 0xb1, 0x42,
+	0xdd, 0x24, 0x07, 0xb8, 0x67, 0x07, 0x27, 0x0a, 0x75, 0x31, 0xe1, 0xa2, 0x64, 0x0f, 0x15, 0xea,
+	0xab, 0x30, 0x7f, 0x84, 0x6d, 0x6b, 0xb0, 0xc0, 0x0a, 0x5f, 0xa7, 0xe6, 0x38, 0x2b, 0x56, 0x5f,
+	0x51, 0x51, 0x9a, 0x88, 0x75, 0x62, 0xa5, 0x49, 0x2a, 0x2c, 0x4d, 0x38, 0xa7, 0x5f, 0x9a, 0xac,
+	0x80, 0x98, 0x22, 0x26, 0x4b, 0xd5, 0x29, 0x3e, 0xf7, 0x2c, 0x67, 0x44, 0xa2, 0x14, 0xdd, 0x86,
+	0x45, 0x21, 0x3b, 0x58, 0x2a, 0x88, 0x97, 0xa7, 0x8c, 0x2e, 0xcc, 0x1c, 0xa8, 0x14, 0xa8, 0xf6,
+	0x4b, 0x05, 0x16, 0x05, 0x70, 0x47, 0xfd, 0xd5, 0x25, 0xc2, 0x59, 0x26, 0x2a, 0xaf, 0x24, 0xa2,
+	0x8d, 0x69, 0xf5, 0xd2, 0x61, 0xab, 0xa7, 0xfd, 0x40, 0x81, 0x45, 0x81, 0x67, 0x97, 0x6f, 0xe7,
+	0x32, 0xe4, 0x06, 0xaa, 0x4c, 0x71, 0x36, 0xe0, 0x44, 0xe5, 0x25, 0x03, 0x57, 0x96, 0x08, 0xa1,
+	0x29, 0xf4, 0xf2, 0xc0, 0xf5, 0xfb, 0x0a, 0xa0, 0x0d, 0x12, 0xfc, 0x27, 0x6c, 0xfa, 0x1f, 0x29,
+	0x48, 0x87, 0x76, 0x24, 0x16, 0x95, 0x6f, 0xc2, 0xb4, 0xac, 0xf6, 0x27, 0xce, 0xf6, 0xa0, 0x22,
+	0xc5, 0xcf, 0xf9, 0x78, 0x73, 0x6a, 0x7b, 0xae, 0xc2, 0x4c, 0x98, 0xb5, 0xa2, 0x43, 0x0f, 0x87,
+	0xa3, 0xda, 0xc0, 0x83, 0x51, 0x6d, 0xe0, 0xfd, 0xa8, 0x84, 0x6d, 0xf3, 0x12, 0xf6, 0x85, 0x53,
+	0x43, 0x75, 0x7c, 0xe3, 0xdb, 0x49, 0xaa, 0x54, 0xdf, 0x87, 0x6c, 0xbc, 0xcf, 0x48, 0x9d, 0xb3,
+	0xcf, 0x88, 0x2b, 0xa3, 0x2a, 0x40, 0x17, 0x3b, 0xb8, 0x4d, 0xba, 0xc4, 0x09, 0xe4, 0x8b, 0xd4,
+	0xf3, 0x23, 0xa7, 0xda, 0x8a, 0x44, 0xf5, 0x98, 0x1a, 0x2b, 0xe4, 0x2e, 0xd8, 0xae, 0x2e, 0x01,
+	0x92, 0x03, 0xe3, 0xc3, 0xfa, 0xee, 0x43, 0x43, 0x34, 0xa7, 0x93, 0xc3, 0x6d, 0x6c, 0x6a, 0xa0,
+	0x8d, 0x9d, 0xea, 0xb7, 0xb1, 0xd3, 0xda, 0xaf, 0x14, 0x28, 0x0c, 0x9a, 0xc8, 0x2e, 0x27, 0xb6,
+	0x55, 0xa3, 0xe7, 0xb5, 0x7d, 0x6c, 0x12, 0xf9, 0x80, 0xc8, 0xb7, 0xbf, 0x27, 0x48, 0xac, 0xae,
+	0xe7, 0x22, 0x3e, 0xf1, 0xb0, 0xe5, 0xf3, 0x10, 0x4c, 0xeb, 0xc0, 0x48, 0x3a, 0xa7, 0xa0, 0x06,
+	0xcc, 0x4a, 0x75, 0xc3, 0xf5, 0xc2, 0xb6, 0x8b, 0x39, 0xe9, 0x46, 0x72, 0x57, 0xda, 0x9f, 0x7b,
+	0x47, 0x88, 0xeb, 0x85, 0xde, 0xc0, 0x58, 0xeb, 0x02, 0x3a, 0x29, 0x85, 0x5e, 0x87, 0x2b, 0x71,
+	0x5b, 0x0d, 0x1a, 0x60, 0x3f, 0x10, 0xaf, 0x03, 0x22, 0x5b, 0x16, 0x62, 0x66, 0x37, 0x19, 0x93,
+	0xbf, 0xb3, 0x8c, 0x7d, 0xe3, 0xd4, 0xfe, 0xa4, 0xc0, 0xd5, 0x66, 0x1f, 0x0b, 0x62, 0x27, 0xf8,
+	0xcd, 0xa1, 0xc2, 0xd7, 0x13, 0x75, 0x3f, 0x52, 0xe0, 0x59, 0xdd, 0xb5, 0xed, 0x7d, 0xdc, 0x3a,
+	0x0c, 0xb7, 0x27, 0x1d, 0xf4, 0x4d, 0x22, 0xde, 0x9e, 0xa8, 0xd5, 0x62, 0x30, 0x2f, 0xcb, 0x9d,
+	0xc1, 0x57, 0x4b, 0xe5, 0x7c, 0xaf, 0x96, 0xda, 0x13, 0x98, 0x4f, 0x7a, 0x18, 0x50, 0x61, 0x46,
+	0xbc, 0x47, 0x86, 0xef, 0xe3, 0xe1, 0x10, 0xbd, 0x00, 0x85, 0xae, 0xe5, 0xc4, 0xb1, 0x51, 0xfc,
+	0x3a, 0x96, 0xeb, 0x5a, 0x4e, 0x1f, 0x17, 0x99, 0x14, 0xfe, 0xec, 0x24, 0x82, 0xe6, 0xba, 0xf8,
+	0xb3, 0x48, 0xea, 0xf6, 0xdf, 0x16, 0xa0, 0x20, 0x2b, 0x18, 0x71, 0x18, 0x3e, 0xfa, 0xa9, 0x02,
+	0xb9, 0x78, 0xdd, 0x8d, 0x92, 0x01, 0x28, 0xa1, 0xc8, 0x2f, 0xbd, 0x7c, 0x06, 0x49, 0xe1, 0x33,
+	0xed, 0xcd, 0xef, 0x7c, 0xf9, 0xf7, 0x1f, 0x4e, 0xdc, 0x42, 0xe5, 0xf2, 0xd1, 0xad, 0xb2, 0x3c,
+	0x38, 0x5a, 0x7e, 0xd2, 0x3f, 0xd4, 0xa7, 0x65, 0x5e, 0xfa, 0x95, 0x9f, 0xb0, 0x3f, 0x4f, 0xcb,
+	0x51, 0x0d, 0xff, 0x13, 0x05, 0xa0, 0xdf, 0xd8, 0xa1, 0xe4, 0x1f, 0x4f, 0x4e, 0x74, 0x7e, 0xa5,
+	0x53, 0x5b, 0x04, 0x6d, 0x9d, 0x5b, 0xf3, 0x0e, 0xba, 0x7f, 0x4e, 0x6b, 0xca, 0x4f, 0xfa, 0x21,
+	0xf5, 0x14, 0xfd, 0x58, 0x81, 0xfc, 0x40, 0xdb, 0x8b, 0x92, 0x1d, 0x92, 0xd4, 0x1a, 0x97, 0xc6,
+	0xd4, 0xc7, 0xda, 0x1a, 0x37, 0xf1, 0xae, 0x76, 0x5e, 0x87, 0xad, 0x29, 0x2b, 0xe8, 0x17, 0x0a,
+	0xe4, 0x07, 0x9a, 0xd4, 0x11, 0x86, 0x25, 0x35, 0xb2, 0x63, 0x0d, 0xdb, 0xe0, 0x86, 0x55, 0x4a,
+	0x17, 0xf2, 0x1d, 0xb3, 0xf2, 0xe7, 0x0a, 0xe4, 0x07, 0x9a, 0xd4, 0x11, 0x56, 0x26, 0x35, 0xb2,
+	0x63, 0xad, 0x94, 0x27, 0xbc, 0x72, 0xb1, 0x13, 0xfe, 0x42, 0x81, 0xc2, 0x60, 0xcf, 0x83, 0x56,
+	0x46, 0xc6, 0xfc, 0x89, 0xa6, 0xae, 0xf4, 0xca, 0x99, 0x64, 0x65, 0x86, 0xbc, 0xcd, 0x2d, 0xbe,
+	0x83, 0x6e, 0x9d, 0xd1, 0xe2, 0x58, 0xff, 0xf4, 0xb9, 0x02, 0xb9, 0x78, 0x0f, 0x3b, 0x22, 0x85,
+	0x13, 0xda, 0xdc, 0xb1, 0x7e, 0x7c, 0xc8, 0xad, 0x7a, 0x80, 0xde, 0x3d, 0xb7, 0x55, 0xe5, 0x27,
+	0xf1, 0x86, 0xf2, 0x29, 0xfa, 0xb5, 0x02, 0xb3, 0x43, 0xfd, 0x2a, 0x4a, 0x76, 0x50, 0x72, 0x57,
+	0x5b, 0x5a, 0x0a, 0x85, 0xc3, 0xff, 0x39, 0x58, 0xad, 0x75, 0xbd, 0xe0, 0x58, 0xd3, 0xb9, 0x89,
+	0x9b, 0xda, 0xc6, 0x45, 0x4d, 0x5c, 0x6b, 0xf1, 0x85, 0x59, 0x6c, 0xfe, 0x4c, 0x81, 0xd9, 0xa1,
+	0x6e, 0x73, 0x84, 0xb1, 0xc9, 0x3d, 0x69, 0x29, 0xf9, 0xad, 0x3b, 0x2e, 0xa9, 0xdd, 0xe3, 0x76,
+	0xbf, 0x8e, 0xee, 0x9c, 0xd1, 0x6e, 0xca, 0x95, 0x65, 0xd1, 0xfc, 0x3b, 0x05, 0xf2, 0x03, 0xb7,
+	0x13, 0x1a, 0x0d, 0xc6, 0xc3, 0x8d, 0x4a, 0x69, 0xe5, 0x2c, 0xa2, 0x32, 0x2c, 0xb7, 0xb9, 0x95,
+	0x0f, 0xd1, 0x7b, 0x17, 0x49, 0xa4, 0x72, 0xff, 0x47, 0xbb, 0xdf, 0x2a, 0x90, 0x8d, 0xb5, 0x34,
+	0xe8, 0xc6, 0x28, 0xaf, 0x0e, 0x35, 0x3d, 0xa5, 0xd3, 0x6f, 0x58, 0xed, 0xff, 0xb9, 0x9d, 0x1f,
+	0xa2, 0xbd, 0xaf, 0xc7, 0xce, 0xf2, 0x93, 0x78, 0x75, 0xf0, 0x14, 0xfd, 0x46, 0x81, 0xc2, 0x60,
+	0xa7, 0x3c, 0x02, 0x09, 0x12, 0xdb, 0xe9, 0xb1, 0x69, 0xf6, 0xbf, 0xdc, 0xfa, 0x47, 0xda, 0xd7,
+	0xe4, 0x65, 0x16, 0xc2, 0xbf, 0x57, 0xa0, 0x30, 0xd8, 0x33, 0x8f, 0xb0, 0x38, 0xb1, 0xb1, 0x1e,
+	0x6b, 0xb1, 0xf4, 0xf7, 0xca, 0x25, 0xf9, 0xfb, 0xcf, 0x0a, 0x5c, 0x19, 0x51, 0x13, 0xa2, 0x3b,
+	0x89, 0xa6, 0x9d, 0x5e, 0x41, 0x8e, 0xdd, 0x8f, 0xc5, 0xf7, 0xd3, 0xd2, 0xbe, 0x75, 0x29, 0xfb,
+	0x59, 0xf3, 0xa5, 0x75, 0xec, 0x64, 0xfe, 0xa2, 0xc0, 0x62, 0x62, 0x25, 0x8f, 0x6e, 0x8d, 0x40,
+	0x8d, 0xd1, 0x55, 0xff, 0xd8, 0x7d, 0x39, 0x7c, 0x5f, 0x1d, 0xad, 0x75, 0x29, 0xfb, 0x2a, 0x53,
+	0x12, 0xf4, 0x6d, 0x5a, 0x53, 0x56, 0x1e, 0x38, 0x70, 0xa5, 0xe5, 0x76, 0x93, 0x8c, 0x7a, 0x30,
+	0x2f, 0xef, 0x70, 0xf9, 0x73, 0x61, 0x83, 0xc1, 0x78, 0x43, 0xf9, 0xe8, 0xbe, 0x94, 0x6d, 0xbb,
+	0x36, 0x76, 0xda, 0xab, 0xae, 0xdf, 0x2e, 0xb7, 0x89, 0xc3, 0x41, 0xbe, 0x2c, 0x58, 0xd8, 0xb3,
+	0xe8, 0xc0, 0xff, 0xb1, 0xdd, 0x8b, 0x06, 0xfb, 0xd3, 0x5c, 0xf0, 0xce, 0xbf, 0x02, 0x00, 0x00,
+	0xff, 0xff, 0xe4, 0xb0, 0xcf, 0x43, 0xef, 0x26, 0x00, 0x00,
 }
diff --git a/googleapis/devtools/sourcerepo/v1/sourcerepo.pb.go b/googleapis/devtools/sourcerepo/v1/sourcerepo.pb.go
new file mode 100644
index 00000000..56635ebf
--- /dev/null
+++ b/googleapis/devtools/sourcerepo/v1/sourcerepo.pb.go
@@ -0,0 +1,597 @@
+// Code generated by protoc-gen-go.
+// source: google/devtools/sourcerepo/v1/sourcerepo.proto
+// DO NOT EDIT!
+
+/*
+Package sourcerepo is a generated protocol buffer package.
+
+It is generated from these files:
+	google/devtools/sourcerepo/v1/sourcerepo.proto
+
+It has these top-level messages:
+	Repo
+	MirrorConfig
+	GetRepoRequest
+	ListReposRequest
+	ListReposResponse
+	CreateRepoRequest
+	DeleteRepoRequest
+*/
+package sourcerepo
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import _ "google.golang.org/genproto/googleapis/api/serviceconfig"
+import google_iam_v11 "google.golang.org/genproto/googleapis/iam/v1"
+import google_iam_v1 "google.golang.org/genproto/googleapis/iam/v1"
+import google_protobuf1 "github.com/golang/protobuf/ptypes/empty"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// A repository (or repo) is a Git repository storing versioned source content.
+type Repo struct {
+	// Resource name of the repository, of the form
+	// `projects/<project>/repos/<repo>`.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// The size in bytes of the repo.
+	Size int64 `protobuf:"varint,2,opt,name=size" json:"size,omitempty"`
+	// URL to clone the repository from Google Cloud Source Repositories.
+	Url string `protobuf:"bytes,3,opt,name=url" json:"url,omitempty"`
+	// How this repository mirrors a repository managed by another service.
+	MirrorConfig *MirrorConfig `protobuf:"bytes,4,opt,name=mirror_config,json=mirrorConfig" json:"mirror_config,omitempty"`
+}
+
+func (m *Repo) Reset()                    { *m = Repo{} }
+func (m *Repo) String() string            { return proto.CompactTextString(m) }
+func (*Repo) ProtoMessage()               {}
+func (*Repo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *Repo) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Repo) GetSize() int64 {
+	if m != nil {
+		return m.Size
+	}
+	return 0
+}
+
+func (m *Repo) GetUrl() string {
+	if m != nil {
+		return m.Url
+	}
+	return ""
+}
+
+func (m *Repo) GetMirrorConfig() *MirrorConfig {
+	if m != nil {
+		return m.MirrorConfig
+	}
+	return nil
+}
+
+// Configuration to automatically mirror a repository from another
+// hosting service, for example GitHub or BitBucket.
+type MirrorConfig struct {
+	// URL of the main repository at the other hosting service.
+	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	// ID of the webhook listening to updates to trigger mirroring.
+	// Removing this webook from the other hosting service will stop
+	// Google Cloud Source Repositories from receiving notifications,
+	// and thereby disabling mirroring.
+	WebhookId string `protobuf:"bytes,2,opt,name=webhook_id,json=webhookId" json:"webhook_id,omitempty"`
+	// ID of the SSH deploy key at the other hosting service.
+	// Removing this key from the other service would deauthorize
+	// Google Cloud Source Repositories from mirroring.
+	DeployKeyId string `protobuf:"bytes,3,opt,name=deploy_key_id,json=deployKeyId" json:"deploy_key_id,omitempty"`
+}
+
+func (m *MirrorConfig) Reset()                    { *m = MirrorConfig{} }
+func (m *MirrorConfig) String() string            { return proto.CompactTextString(m) }
+func (*MirrorConfig) ProtoMessage()               {}
+func (*MirrorConfig) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *MirrorConfig) GetUrl() string {
+	if m != nil {
+		return m.Url
+	}
+	return ""
+}
+
+func (m *MirrorConfig) GetWebhookId() string {
+	if m != nil {
+		return m.WebhookId
+	}
+	return ""
+}
+
+func (m *MirrorConfig) GetDeployKeyId() string {
+	if m != nil {
+		return m.DeployKeyId
+	}
+	return ""
+}
+
+// Request for GetRepo.
+type GetRepoRequest struct {
+	// The name of the requested repository. Values are of the form
+	// `projects/<project>/repos/<repo>`.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *GetRepoRequest) Reset()                    { *m = GetRepoRequest{} }
+func (m *GetRepoRequest) String() string            { return proto.CompactTextString(m) }
+func (*GetRepoRequest) ProtoMessage()               {}
+func (*GetRepoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *GetRepoRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Request for ListRepos.
+type ListReposRequest struct {
+	// The project ID whose repos should be listed. Values are of the form
+	// `projects/<project>`.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *ListReposRequest) Reset()                    { *m = ListReposRequest{} }
+func (m *ListReposRequest) String() string            { return proto.CompactTextString(m) }
+func (*ListReposRequest) ProtoMessage()               {}
+func (*ListReposRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *ListReposRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+// Response for ListRepos.
+type ListReposResponse struct {
+	// The listed repos.
+	Repos []*Repo `protobuf:"bytes,1,rep,name=repos" json:"repos,omitempty"`
+}
+
+func (m *ListReposResponse) Reset()                    { *m = ListReposResponse{} }
+func (m *ListReposResponse) String() string            { return proto.CompactTextString(m) }
+func (*ListReposResponse) ProtoMessage()               {}
+func (*ListReposResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+func (m *ListReposResponse) GetRepos() []*Repo {
+	if m != nil {
+		return m.Repos
+	}
+	return nil
+}
+
+// Request for CreateRepo
+type CreateRepoRequest struct {
+	// The project in which to create the repo. Values are of the form
+	// `projects/<project>`.
+	Parent string `protobuf:"bytes,1,opt,name=parent" json:"parent,omitempty"`
+	// The repo to create.  Only name needs to be set; all other fields
+	// are currently ignored.
+	Repo *Repo `protobuf:"bytes,2,opt,name=repo" json:"repo,omitempty"`
+}
+
+func (m *CreateRepoRequest) Reset()                    { *m = CreateRepoRequest{} }
+func (m *CreateRepoRequest) String() string            { return proto.CompactTextString(m) }
+func (*CreateRepoRequest) ProtoMessage()               {}
+func (*CreateRepoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+func (m *CreateRepoRequest) GetParent() string {
+	if m != nil {
+		return m.Parent
+	}
+	return ""
+}
+
+func (m *CreateRepoRequest) GetRepo() *Repo {
+	if m != nil {
+		return m.Repo
+	}
+	return nil
+}
+
+// Request for DeleteRepo.
+type DeleteRepoRequest struct {
+	// The name of the repo to delete. Values are of the form
+	// `projects/<project>/repos/<repo>`.
+	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+}
+
+func (m *DeleteRepoRequest) Reset()                    { *m = DeleteRepoRequest{} }
+func (m *DeleteRepoRequest) String() string            { return proto.CompactTextString(m) }
+func (*DeleteRepoRequest) ProtoMessage()               {}
+func (*DeleteRepoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+
+func (m *DeleteRepoRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*Repo)(nil), "google.devtools.sourcerepo.v1.Repo")
+	proto.RegisterType((*MirrorConfig)(nil), "google.devtools.sourcerepo.v1.MirrorConfig")
+	proto.RegisterType((*GetRepoRequest)(nil), "google.devtools.sourcerepo.v1.GetRepoRequest")
+	proto.RegisterType((*ListReposRequest)(nil), "google.devtools.sourcerepo.v1.ListReposRequest")
+	proto.RegisterType((*ListReposResponse)(nil), "google.devtools.sourcerepo.v1.ListReposResponse")
+	proto.RegisterType((*CreateRepoRequest)(nil), "google.devtools.sourcerepo.v1.CreateRepoRequest")
+	proto.RegisterType((*DeleteRepoRequest)(nil), "google.devtools.sourcerepo.v1.DeleteRepoRequest")
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for SourceRepo service
+
+type SourceRepoClient interface {
+	// Returns all repos belonging to a project.
+	ListRepos(ctx context.Context, in *ListReposRequest, opts ...grpc.CallOption) (*ListReposResponse, error)
+	// Returns information about a repo.
+	GetRepo(ctx context.Context, in *GetRepoRequest, opts ...grpc.CallOption) (*Repo, error)
+	// Creates a repo in the given project with the given name..
+	//
+	// If the named repository already exists, `CreateRepo` returns
+	// `ALREADY_EXISTS`.
+	CreateRepo(ctx context.Context, in *CreateRepoRequest, opts ...grpc.CallOption) (*Repo, error)
+	// Deletes a repo.
+	DeleteRepo(ctx context.Context, in *DeleteRepoRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error)
+	// Sets the access control policy on the specified resource. Replaces any
+	// existing policy.
+	SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error)
+	// Gets the access control policy for a resource.
+	// Returns an empty policy if the resource exists and does not have a policy
+	// set.
+	GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error)
+	// Returns permissions that a caller has on the specified resource.
+	// If the resource does not exist, this will return an empty set of
+	// permissions, not a NOT_FOUND error.
+	TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error)
+}
+
+type sourceRepoClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewSourceRepoClient(cc *grpc.ClientConn) SourceRepoClient {
+	return &sourceRepoClient{cc}
+}
+
+func (c *sourceRepoClient) ListRepos(ctx context.Context, in *ListReposRequest, opts ...grpc.CallOption) (*ListReposResponse, error) {
+	out := new(ListReposResponse)
+	err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/ListRepos", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *sourceRepoClient) GetRepo(ctx context.Context, in *GetRepoRequest, opts ...grpc.CallOption) (*Repo, error) {
+	out := new(Repo)
+	err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/GetRepo", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *sourceRepoClient) CreateRepo(ctx context.Context, in *CreateRepoRequest, opts ...grpc.CallOption) (*Repo, error) {
+	out := new(Repo)
+	err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/CreateRepo", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *sourceRepoClient) DeleteRepo(ctx context.Context, in *DeleteRepoRequest, opts ...grpc.CallOption) (*google_protobuf1.Empty, error) {
+	out := new(google_protobuf1.Empty)
+	err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/DeleteRepo", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *sourceRepoClient) SetIamPolicy(ctx context.Context, in *google_iam_v11.SetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) {
+	out := new(google_iam_v1.Policy)
+	err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/SetIamPolicy", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *sourceRepoClient) GetIamPolicy(ctx context.Context, in *google_iam_v11.GetIamPolicyRequest, opts ...grpc.CallOption) (*google_iam_v1.Policy, error) {
+	out := new(google_iam_v1.Policy)
+	err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/GetIamPolicy", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *sourceRepoClient) TestIamPermissions(ctx context.Context, in *google_iam_v11.TestIamPermissionsRequest, opts ...grpc.CallOption) (*google_iam_v11.TestIamPermissionsResponse, error) {
+	out := new(google_iam_v11.TestIamPermissionsResponse)
+	err := grpc.Invoke(ctx, "/google.devtools.sourcerepo.v1.SourceRepo/TestIamPermissions", in, out, c.cc, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// Server API for SourceRepo service
+
+type SourceRepoServer interface {
+	// Returns all repos belonging to a project.
+	ListRepos(context.Context, *ListReposRequest) (*ListReposResponse, error)
+	// Returns information about a repo.
+	GetRepo(context.Context, *GetRepoRequest) (*Repo, error)
+	// Creates a repo in the given project with the given name..
+	//
+	// If the named repository already exists, `CreateRepo` returns
+	// `ALREADY_EXISTS`.
+	CreateRepo(context.Context, *CreateRepoRequest) (*Repo, error)
+	// Deletes a repo.
+	DeleteRepo(context.Context, *DeleteRepoRequest) (*google_protobuf1.Empty, error)
+	// Sets the access control policy on the specified resource. Replaces any
+	// existing policy.
+	SetIamPolicy(context.Context, *google_iam_v11.SetIamPolicyRequest) (*google_iam_v1.Policy, error)
+	// Gets the access control policy for a resource.
+	// Returns an empty policy if the resource exists and does not have a policy
+	// set.
+	GetIamPolicy(context.Context, *google_iam_v11.GetIamPolicyRequest) (*google_iam_v1.Policy, error)
+	// Returns permissions that a caller has on the specified resource.
+	// If the resource does not exist, this will return an empty set of
+	// permissions, not a NOT_FOUND error.
+	TestIamPermissions(context.Context, *google_iam_v11.TestIamPermissionsRequest) (*google_iam_v11.TestIamPermissionsResponse, error)
+}
+
+func RegisterSourceRepoServer(s *grpc.Server, srv SourceRepoServer) {
+	s.RegisterService(&_SourceRepo_serviceDesc, srv)
+}
+
+func _SourceRepo_ListRepos_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ListReposRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SourceRepoServer).ListRepos(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/ListRepos",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SourceRepoServer).ListRepos(ctx, req.(*ListReposRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SourceRepo_GetRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetRepoRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SourceRepoServer).GetRepo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/GetRepo",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SourceRepoServer).GetRepo(ctx, req.(*GetRepoRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SourceRepo_CreateRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(CreateRepoRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SourceRepoServer).CreateRepo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/CreateRepo",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SourceRepoServer).CreateRepo(ctx, req.(*CreateRepoRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SourceRepo_DeleteRepo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeleteRepoRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SourceRepoServer).DeleteRepo(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/DeleteRepo",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SourceRepoServer).DeleteRepo(ctx, req.(*DeleteRepoRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SourceRepo_SetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(google_iam_v11.SetIamPolicyRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SourceRepoServer).SetIamPolicy(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/SetIamPolicy",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SourceRepoServer).SetIamPolicy(ctx, req.(*google_iam_v11.SetIamPolicyRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SourceRepo_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(google_iam_v11.GetIamPolicyRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SourceRepoServer).GetIamPolicy(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/GetIamPolicy",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SourceRepoServer).GetIamPolicy(ctx, req.(*google_iam_v11.GetIamPolicyRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _SourceRepo_TestIamPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(google_iam_v11.TestIamPermissionsRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(SourceRepoServer).TestIamPermissions(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/google.devtools.sourcerepo.v1.SourceRepo/TestIamPermissions",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(SourceRepoServer).TestIamPermissions(ctx, req.(*google_iam_v11.TestIamPermissionsRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _SourceRepo_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.devtools.sourcerepo.v1.SourceRepo",
+	HandlerType: (*SourceRepoServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "ListRepos",
+			Handler:    _SourceRepo_ListRepos_Handler,
+		},
+		{
+			MethodName: "GetRepo",
+			Handler:    _SourceRepo_GetRepo_Handler,
+		},
+		{
+			MethodName: "CreateRepo",
+			Handler:    _SourceRepo_CreateRepo_Handler,
+		},
+		{
+			MethodName: "DeleteRepo",
+			Handler:    _SourceRepo_DeleteRepo_Handler,
+		},
+		{
+			MethodName: "SetIamPolicy",
+			Handler:    _SourceRepo_SetIamPolicy_Handler,
+		},
+		{
+			MethodName: "GetIamPolicy",
+			Handler:    _SourceRepo_GetIamPolicy_Handler,
+		},
+		{
+			MethodName: "TestIamPermissions",
+			Handler:    _SourceRepo_TestIamPermissions_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "google/devtools/sourcerepo/v1/sourcerepo.proto",
+}
+
+func init() { proto.RegisterFile("google/devtools/sourcerepo/v1/sourcerepo.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 701 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xdd, 0x4e, 0x13, 0x41,
+	0x14, 0xce, 0xd0, 0x0a, 0xe9, 0xa1, 0x28, 0x4c, 0x02, 0x69, 0x8a, 0x25, 0x75, 0x50, 0xac, 0x25,
+	0xee, 0x0a, 0x6a, 0x88, 0x35, 0x26, 0x06, 0x34, 0x0d, 0xf1, 0x27, 0x4d, 0xf1, 0xca, 0x9b, 0x66,
+	0x69, 0x0f, 0xcb, 0x4a, 0x77, 0x67, 0xdd, 0xd9, 0x62, 0xaa, 0x41, 0x13, 0x12, 0xee, 0x8d, 0x3c,
+	0x86, 0x8f, 0xe3, 0x2b, 0xf8, 0x10, 0x5e, 0x9a, 0x3d, 0xbb, 0x6b, 0xb7, 0xb4, 0xb6, 0x7b, 0x37,
+	0x73, 0xce, 0x77, 0xe6, 0xfb, 0xe6, 0x3b, 0x67, 0x67, 0x41, 0x33, 0xa5, 0x34, 0xbb, 0xa8, 0x77,
+	0xf0, 0xd4, 0x97, 0xb2, 0xab, 0x74, 0x25, 0x7b, 0x5e, 0x1b, 0x3d, 0x74, 0xa5, 0x7e, 0xba, 0x95,
+	0xd8, 0x69, 0xae, 0x27, 0x7d, 0xc9, 0x4b, 0x21, 0x5e, 0x8b, 0xf1, 0x5a, 0x02, 0x71, 0xba, 0x55,
+	0xbc, 0x19, 0x1d, 0x67, 0xb8, 0x96, 0x6e, 0x38, 0x8e, 0xf4, 0x0d, 0xdf, 0x92, 0x8e, 0x0a, 0x8b,
+	0x8b, 0xcb, 0xc9, 0x6c, 0xcf, 0x3f, 0x8e, 0xc2, 0x6b, 0x51, 0xd8, 0x32, 0xec, 0x80, 0xd3, 0x32,
+	0xec, 0x96, 0x2b, 0xbb, 0x56, 0xbb, 0x1f, 0xe5, 0x8b, 0xc3, 0xf9, 0xa1, 0xdc, 0x6a, 0x94, 0xa3,
+	0xdd, 0x61, 0xef, 0x48, 0x47, 0xdb, 0xf5, 0xa3, 0xa4, 0xf8, 0xc1, 0x20, 0xdb, 0x44, 0x57, 0x72,
+	0x0e, 0x59, 0xc7, 0xb0, 0xb1, 0xc0, 0xca, 0xac, 0x92, 0x6b, 0xd2, 0x3a, 0x88, 0x29, 0xeb, 0x33,
+	0x16, 0x66, 0xca, 0xac, 0x92, 0x69, 0xd2, 0x9a, 0x2f, 0x42, 0xa6, 0xe7, 0x75, 0x0b, 0x19, 0x82,
+	0x05, 0x4b, 0xde, 0x80, 0x05, 0xdb, 0xf2, 0x3c, 0xe9, 0xb5, 0xda, 0xd2, 0x39, 0xb2, 0xcc, 0x42,
+	0xb6, 0xcc, 0x2a, 0xf3, 0xdb, 0x9b, 0xda, 0x44, 0x1f, 0xb4, 0x37, 0x54, 0xb3, 0x47, 0x25, 0xcd,
+	0xbc, 0x9d, 0xd8, 0x89, 0x36, 0xe4, 0x93, 0xd9, 0x98, 0x93, 0x0d, 0x38, 0x4b, 0x00, 0x9f, 0xf0,
+	0xf0, 0x58, 0xca, 0x93, 0x96, 0xd5, 0x21, 0x7d, 0xb9, 0x66, 0x2e, 0x8a, 0xec, 0x77, 0xb8, 0x80,
+	0x85, 0x0e, 0xba, 0x5d, 0xd9, 0x6f, 0x9d, 0x60, 0x3f, 0x40, 0x84, 0x72, 0xe7, 0xc3, 0xe0, 0x2b,
+	0xec, 0xef, 0x77, 0xc4, 0x6d, 0xb8, 0x5e, 0x47, 0x3f, 0xb8, 0x7b, 0x13, 0x3f, 0xf6, 0x50, 0xf9,
+	0xe3, 0x2c, 0x10, 0x1b, 0xb0, 0xf8, 0xda, 0x52, 0x04, 0x53, 0x93, 0x70, 0x6f, 0x61, 0x29, 0x81,
+	0x53, 0xae, 0x74, 0x14, 0xf2, 0x27, 0x70, 0x2d, 0xb8, 0xad, 0x2a, 0xb0, 0x72, 0xa6, 0x32, 0xbf,
+	0xbd, 0x3e, 0xc5, 0x11, 0xd2, 0x12, 0x56, 0x88, 0x0e, 0x2c, 0xed, 0x79, 0x68, 0xf8, 0x98, 0x14,
+	0xb8, 0x02, 0xb3, 0xae, 0xe1, 0xa1, 0xe3, 0x47, 0xd4, 0xd1, 0x8e, 0xef, 0x40, 0x36, 0xa8, 0x22,
+	0x1f, 0x52, 0xd2, 0x50, 0x81, 0xb8, 0x0b, 0x4b, 0x2f, 0xb0, 0x8b, 0xc3, 0x2c, 0x63, 0xae, 0xb7,
+	0xfd, 0x67, 0x0e, 0xe0, 0x80, 0x4e, 0xa1, 0x61, 0xb9, 0x64, 0x90, 0xfb, 0x77, 0x5d, 0xae, 0x4f,
+	0x21, 0xbc, 0x6a, 0x60, 0xf1, 0x41, 0xfa, 0x82, 0xd0, 0x49, 0xb1, 0x7e, 0xfe, 0xeb, 0xf7, 0xe5,
+	0x4c, 0x89, 0xaf, 0x06, 0xd3, 0xfd, 0x25, 0x90, 0xf4, 0xcc, 0xf5, 0xe4, 0x07, 0x6c, 0xfb, 0x4a,
+	0xaf, 0x9e, 0xe9, 0xe4, 0x19, 0xbf, 0x60, 0x30, 0x17, 0xb5, 0x94, 0xdf, 0x9f, 0x42, 0x31, 0xdc,
+	0xfa, 0x62, 0x1a, 0xcf, 0xc4, 0x06, 0x89, 0x28, 0xf3, 0xb5, 0x71, 0x22, 0x42, 0x0d, 0x7a, 0xb5,
+	0x7a, 0xc6, 0xbf, 0x33, 0x80, 0x41, 0xf3, 0xf8, 0xb4, 0xdb, 0x8e, 0xf4, 0x39, 0x9d, 0x9a, 0x4d,
+	0x52, 0x73, 0x47, 0x94, 0x48, 0x4d, 0x38, 0x09, 0xa3, 0xa6, 0xd4, 0xa8, 0xd1, 0xfc, 0x2b, 0xc0,
+	0xa0, 0xd1, 0x53, 0x15, 0x8d, 0xcc, 0x44, 0x71, 0x25, 0xae, 0x88, 0x1f, 0x11, 0xed, 0x65, 0xf0,
+	0x88, 0xc4, 0x96, 0x54, 0xa7, 0x59, 0x72, 0xc1, 0x20, 0x7f, 0x80, 0xfe, 0xbe, 0x61, 0x37, 0xe8,
+	0x69, 0xe2, 0x22, 0x3e, 0xd0, 0x32, 0xec, 0x80, 0x32, 0x99, 0x8c, 0x49, 0x97, 0xaf, 0x60, 0xc2,
+	0xac, 0xa8, 0x11, 0xe7, 0x23, 0xa1, 0x13, 0xa7, 0x87, 0xa1, 0xf6, 0xb1, 0xbc, 0x35, 0x95, 0x38,
+	0xb6, 0xc6, 0xaa, 0xfc, 0x9c, 0x41, 0xbe, 0x3e, 0x49, 0x47, 0x3d, 0xbd, 0x8e, 0x1d, 0xd2, 0xb1,
+	0xc5, 0xd3, 0xe8, 0x30, 0x93, 0x9c, 0x3f, 0x19, 0xf0, 0x77, 0xa8, 0x28, 0x82, 0x9e, 0x6d, 0x29,
+	0x15, 0xfc, 0x00, 0x78, 0xe5, 0x0a, 0xcd, 0x28, 0x24, 0x16, 0x74, 0x2f, 0x05, 0x32, 0xfa, 0x70,
+	0x9e, 0x93, 0xc8, 0x9a, 0x78, 0x9c, 0x42, 0xa4, 0x3f, 0x72, 0x4c, 0x8d, 0x55, 0x77, 0xbf, 0xc1,
+	0xad, 0xb6, 0xb4, 0x27, 0x4f, 0xcc, 0xee, 0x8d, 0xc1, 0xe3, 0xd0, 0x08, 0x26, 0xa4, 0xc1, 0xde,
+	0xd7, 0xa3, 0x0a, 0x53, 0x76, 0x0d, 0xc7, 0xd4, 0xa4, 0x67, 0xea, 0x26, 0x3a, 0x34, 0x3f, 0x7a,
+	0x98, 0x32, 0x5c, 0x4b, 0xfd, 0xe7, 0xaf, 0xfa, 0x74, 0xb0, 0x3b, 0x9c, 0xa5, 0x9a, 0x87, 0x7f,
+	0x03, 0x00, 0x00, 0xff, 0xff, 0x38, 0x78, 0xe1, 0x33, 0x88, 0x07, 0x00, 0x00,
+}
diff --git a/googleapis/watcher/v1/watch.pb.go b/googleapis/watcher/v1/watch.pb.go
new file mode 100644
index 00000000..25ed4200
--- /dev/null
+++ b/googleapis/watcher/v1/watch.pb.go
@@ -0,0 +1,376 @@
+// Code generated by protoc-gen-go.
+// source: google/watcher/v1/watch.proto
+// DO NOT EDIT!
+
+/*
+Package watcher is a generated protocol buffer package.
+
+It is generated from these files:
+	google/watcher/v1/watch.proto
+
+It has these top-level messages:
+	Request
+	ChangeBatch
+	Change
+*/
+package watcher
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import _ "google.golang.org/genproto/googleapis/api/annotations"
+import google_protobuf1 "github.com/golang/protobuf/ptypes/any"
+import _ "github.com/golang/protobuf/ptypes/empty"
+
+import (
+	context "golang.org/x/net/context"
+	grpc "google.golang.org/grpc"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+// A reported value can be in one of the following states:
+type Change_State int32
+
+const (
+	// The element exists and its full value is included in data.
+	Change_EXISTS Change_State = 0
+	// The element does not exist.
+	Change_DOES_NOT_EXIST Change_State = 1
+	// Element may or may not exist. Used only for initial state delivery when
+	// the client is not interested in fetching the initial state. See the
+	// "Initial State" section above.
+	Change_INITIAL_STATE_SKIPPED Change_State = 2
+	// The element may exist, but some error has occurred. More information is
+	// available in the data field - the value is a serialized Status
+	// proto (from [google.rpc.Status][])
+	Change_ERROR Change_State = 3
+)
+
+var Change_State_name = map[int32]string{
+	0: "EXISTS",
+	1: "DOES_NOT_EXIST",
+	2: "INITIAL_STATE_SKIPPED",
+	3: "ERROR",
+}
+var Change_State_value = map[string]int32{
+	"EXISTS":                0,
+	"DOES_NOT_EXIST":        1,
+	"INITIAL_STATE_SKIPPED": 2,
+	"ERROR":                 3,
+}
+
+func (x Change_State) String() string {
+	return proto.EnumName(Change_State_name, int32(x))
+}
+func (Change_State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
+
+// The message used by the client to register interest in an entity.
+type Request struct {
+	// The `target` value **must** be a valid URL path pointing to an entity
+	// to watch. Note that the service name **must** be
+	// removed from the target field (e.g., the target field must say
+	// "/foo/bar", not "myservice.googleapis.com/foo/bar"). A client is
+	// also allowed to pass system-specific parameters in the URL that
+	// are only obeyed by some implementations. Some parameters will be
+	// implementation-specific. However, some have predefined meaning
+	// and are listed here:
+	//
+	//  * recursive = true|false [default=false]
+	//    If set to true, indicates that the client wants to watch all elements
+	//    of entities in the subtree rooted at the entity's name in `target`. For
+	//    descendants that are not the immediate children of the target, the
+	//    `Change.element` will contain slashes.
+	//
+	//    Note that some namespaces and entities will not support recursive
+	//    watching. When watching such an entity, a client must not set recursive
+	//    to true. Otherwise, it will receive an `UNIMPLEMENTED` error.
+	//
+	// Normal URL encoding must be used inside `target`.  For example, if a query
+	// parameter name or value, or the non-query parameter portion of `target`
+	// contains a special character, it must be %-encoded.  We recommend that
+	// clients and servers use their runtime's URL library to produce and consume
+	// target values.
+	Target string `protobuf:"bytes,1,opt,name=target" json:"target,omitempty"`
+	// The `resume_marker` specifies how much of the existing underlying state is
+	// delivered to the client when the watch request is received by the
+	// system. The client can set this marker in one of the following ways to get
+	// different semantics:
+	//
+	// *   Parameter is not specified or has the value "".
+	//     Semantics: Fetch initial state.
+	//     The client wants the entity's initial state to be delivered. See the
+	//     description in "Initial State".
+	//
+	// *   Parameter is set to the string "now" (UTF-8 encoding).
+	//     Semantics: Fetch new changes only.
+	//     The client just wants to get the changes received by the system after
+	//     the watch point. The system may deliver changes from before the watch
+	//     point as well.
+	//
+	// *   Parameter is set to a value received in an earlier
+	//     `Change.resume_marker` field while watching the same entity.
+	//     Semantics: Resume from a specific point.
+	//     The client wants to receive the changes from a specific point; this
+	//     value must correspond to a value received in the `Change.resume_marker`
+	//     field. The system may deliver changes from before the `resume_marker`
+	//     as well. If the system cannot resume the stream from this point (e.g.,
+	//     if it is too far behind in the stream), it can raise the
+	//     `FAILED_PRECONDITION` error.
+	//
+	// An implementation MUST support an unspecified parameter and the
+	// empty string "" marker (initial state fetching) and the "now" marker.
+	// It need not support resuming from a specific point.
+	ResumeMarker []byte `protobuf:"bytes,2,opt,name=resume_marker,json=resumeMarker,proto3" json:"resume_marker,omitempty"`
+}
+
+func (m *Request) Reset()                    { *m = Request{} }
+func (m *Request) String() string            { return proto.CompactTextString(m) }
+func (*Request) ProtoMessage()               {}
+func (*Request) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *Request) GetTarget() string {
+	if m != nil {
+		return m.Target
+	}
+	return ""
+}
+
+func (m *Request) GetResumeMarker() []byte {
+	if m != nil {
+		return m.ResumeMarker
+	}
+	return nil
+}
+
+// A batch of Change messages.
+type ChangeBatch struct {
+	// A list of Change messages.
+	Changes []*Change `protobuf:"bytes,1,rep,name=changes" json:"changes,omitempty"`
+}
+
+func (m *ChangeBatch) Reset()                    { *m = ChangeBatch{} }
+func (m *ChangeBatch) String() string            { return proto.CompactTextString(m) }
+func (*ChangeBatch) ProtoMessage()               {}
+func (*ChangeBatch) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *ChangeBatch) GetChanges() []*Change {
+	if m != nil {
+		return m.Changes
+	}
+	return nil
+}
+
+// A Change indicates the most recent state of an element.
+type Change struct {
+	// Name of the element, interpreted relative to the entity's actual
+	// name. "" refers to the entity itself. The element name is a valid
+	// UTF-8 string.
+	Element string `protobuf:"bytes,1,opt,name=element" json:"element,omitempty"`
+	// The state of the `element`.
+	State Change_State `protobuf:"varint,2,opt,name=state,enum=google.watcher.v1.Change_State" json:"state,omitempty"`
+	// The actual change data. This field is present only when `state() == EXISTS`
+	// or `state() == ERROR`. Please see [google.protobuf.Any][google.protobuf.Any] about how to use
+	// the Any type.
+	Data *google_protobuf1.Any `protobuf:"bytes,6,opt,name=data" json:"data,omitempty"`
+	// If present, provides a compact representation of all the messages that have
+	// been received by the caller for the given entity, e.g., it could be a
+	// sequence number or a multi-part timestamp/version vector. This marker can
+	// be provided in the Request message, allowing the caller to resume the stream
+	// watching at a specific point without fetching the initial state.
+	ResumeMarker []byte `protobuf:"bytes,4,opt,name=resume_marker,json=resumeMarker,proto3" json:"resume_marker,omitempty"`
+	// If true, this Change is followed by more Changes that are in the same group
+	// as this Change.
+	Continued bool `protobuf:"varint,5,opt,name=continued" json:"continued,omitempty"`
+}
+
+func (m *Change) Reset()                    { *m = Change{} }
+func (m *Change) String() string            { return proto.CompactTextString(m) }
+func (*Change) ProtoMessage()               {}
+func (*Change) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *Change) GetElement() string {
+	if m != nil {
+		return m.Element
+	}
+	return ""
+}
+
+func (m *Change) GetState() Change_State {
+	if m != nil {
+		return m.State
+	}
+	return Change_EXISTS
+}
+
+func (m *Change) GetData() *google_protobuf1.Any {
+	if m != nil {
+		return m.Data
+	}
+	return nil
+}
+
+func (m *Change) GetResumeMarker() []byte {
+	if m != nil {
+		return m.ResumeMarker
+	}
+	return nil
+}
+
+func (m *Change) GetContinued() bool {
+	if m != nil {
+		return m.Continued
+	}
+	return false
+}
+
+func init() {
+	proto.RegisterType((*Request)(nil), "google.watcher.v1.Request")
+	proto.RegisterType((*ChangeBatch)(nil), "google.watcher.v1.ChangeBatch")
+	proto.RegisterType((*Change)(nil), "google.watcher.v1.Change")
+	proto.RegisterEnum("google.watcher.v1.Change_State", Change_State_name, Change_State_value)
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for Watcher service
+
+type WatcherClient interface {
+	// Start a streaming RPC to get watch information from the server.
+	Watch(ctx context.Context, in *Request, opts ...grpc.CallOption) (Watcher_WatchClient, error)
+}
+
+type watcherClient struct {
+	cc *grpc.ClientConn
+}
+
+func NewWatcherClient(cc *grpc.ClientConn) WatcherClient {
+	return &watcherClient{cc}
+}
+
+func (c *watcherClient) Watch(ctx context.Context, in *Request, opts ...grpc.CallOption) (Watcher_WatchClient, error) {
+	stream, err := grpc.NewClientStream(ctx, &_Watcher_serviceDesc.Streams[0], c.cc, "/google.watcher.v1.Watcher/Watch", opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &watcherWatchClient{stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+type Watcher_WatchClient interface {
+	Recv() (*ChangeBatch, error)
+	grpc.ClientStream
+}
+
+type watcherWatchClient struct {
+	grpc.ClientStream
+}
+
+func (x *watcherWatchClient) Recv() (*ChangeBatch, error) {
+	m := new(ChangeBatch)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+// Server API for Watcher service
+
+type WatcherServer interface {
+	// Start a streaming RPC to get watch information from the server.
+	Watch(*Request, Watcher_WatchServer) error
+}
+
+func RegisterWatcherServer(s *grpc.Server, srv WatcherServer) {
+	s.RegisterService(&_Watcher_serviceDesc, srv)
+}
+
+func _Watcher_Watch_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(Request)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(WatcherServer).Watch(m, &watcherWatchServer{stream})
+}
+
+type Watcher_WatchServer interface {
+	Send(*ChangeBatch) error
+	grpc.ServerStream
+}
+
+type watcherWatchServer struct {
+	grpc.ServerStream
+}
+
+func (x *watcherWatchServer) Send(m *ChangeBatch) error {
+	return x.ServerStream.SendMsg(m)
+}
+
+var _Watcher_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "google.watcher.v1.Watcher",
+	HandlerType: (*WatcherServer)(nil),
+	Methods:     []grpc.MethodDesc{},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "Watch",
+			Handler:       _Watcher_Watch_Handler,
+			ServerStreams: true,
+		},
+	},
+	Metadata: "google/watcher/v1/watch.proto",
+}
+
+func init() { proto.RegisterFile("google/watcher/v1/watch.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+	// 445 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0x51, 0x6f, 0xd3, 0x30,
+	0x10, 0xc6, 0xdd, 0x92, 0xd2, 0xeb, 0x98, 0x3a, 0x0b, 0x50, 0x5a, 0x06, 0x44, 0xe1, 0x25, 0x4f,
+	0x09, 0xeb, 0x84, 0x84, 0xc4, 0x53, 0xcb, 0x82, 0x88, 0x60, 0x6b, 0xe5, 0x44, 0x62, 0xe2, 0x25,
+	0xf2, 0x3a, 0xe3, 0x55, 0xb4, 0x76, 0x49, 0x9c, 0xa1, 0xbd, 0xf2, 0x17, 0x10, 0xbf, 0x8c, 0xbf,
+	0xc0, 0x0f, 0x41, 0xb5, 0x1d, 0x40, 0x74, 0x7d, 0xbb, 0xfb, 0xbe, 0xef, 0xce, 0xf7, 0x9d, 0x0f,
+	0x1e, 0x73, 0x29, 0xf9, 0x82, 0xc5, 0x5f, 0xa9, 0x9a, 0x5d, 0xb1, 0x32, 0xbe, 0x3e, 0x32, 0x61,
+	0xb4, 0x2a, 0xa5, 0x92, 0xf8, 0xc0, 0xd0, 0x91, 0xa5, 0xa3, 0xeb, 0xa3, 0xc1, 0xa1, 0xad, 0xa0,
+	0xab, 0x79, 0x4c, 0x85, 0x90, 0x8a, 0xaa, 0xb9, 0x14, 0x95, 0x29, 0x18, 0xf4, 0x2d, 0xab, 0xb3,
+	0x8b, 0xfa, 0x53, 0x4c, 0xc5, 0x8d, 0xa5, 0x1e, 0xfd, 0x4f, 0xb1, 0xe5, 0x4a, 0x59, 0x32, 0x78,
+	0x03, 0x6d, 0xc2, 0xbe, 0xd4, 0xac, 0x52, 0xf8, 0x21, 0xb8, 0x8a, 0x96, 0x9c, 0x29, 0x0f, 0xf9,
+	0x28, 0xec, 0x10, 0x9b, 0xe1, 0x67, 0x70, 0xaf, 0x64, 0x55, 0xbd, 0x64, 0xc5, 0x92, 0x96, 0x9f,
+	0x59, 0xe9, 0xb5, 0x7c, 0x14, 0xee, 0x91, 0x3d, 0x03, 0x9e, 0x6a, 0x2c, 0x18, 0x43, 0xf7, 0xf5,
+	0x15, 0x15, 0x9c, 0x8d, 0xd7, 0x13, 0xe3, 0x63, 0x68, 0xcf, 0x74, 0x5a, 0x79, 0xc8, 0xdf, 0x09,
+	0xbb, 0xc3, 0x7e, 0xb4, 0xe1, 0x28, 0x32, 0x05, 0xa4, 0x51, 0x06, 0x3f, 0x5a, 0xe0, 0x1a, 0x0c,
+	0x7b, 0xd0, 0x66, 0x0b, 0xb6, 0x64, 0xa2, 0x19, 0xa6, 0x49, 0xf1, 0x0b, 0x70, 0x2a, 0x45, 0x15,
+	0xd3, 0x53, 0xec, 0x0f, 0x9f, 0x6e, 0xed, 0x1b, 0x65, 0x6b, 0x19, 0x31, 0x6a, 0x1c, 0xc2, 0xee,
+	0x25, 0x55, 0xd4, 0x73, 0x7d, 0x14, 0x76, 0x87, 0xf7, 0x9b, 0xaa, 0x66, 0x27, 0xd1, 0x48, 0xdc,
+	0x10, 0xad, 0xd8, 0xb4, 0xbb, 0xbb, 0x69, 0x17, 0x1f, 0x42, 0x67, 0x26, 0x85, 0x9a, 0x8b, 0x9a,
+	0x5d, 0x7a, 0x8e, 0x8f, 0xc2, 0xbb, 0xe4, 0x2f, 0x10, 0x9c, 0x82, 0xa3, 0x1f, 0xc7, 0x00, 0x6e,
+	0x72, 0x9e, 0x66, 0x79, 0xd6, 0xbb, 0x83, 0x31, 0xec, 0x9f, 0x4c, 0x92, 0xac, 0x38, 0x9b, 0xe4,
+	0x85, 0x06, 0x7b, 0x08, 0xf7, 0xe1, 0x41, 0x7a, 0x96, 0xe6, 0xe9, 0xe8, 0x7d, 0x91, 0xe5, 0xa3,
+	0x3c, 0x29, 0xb2, 0x77, 0xe9, 0x74, 0x9a, 0x9c, 0xf4, 0x5a, 0xb8, 0x03, 0x4e, 0x42, 0xc8, 0x84,
+	0xf4, 0x76, 0x86, 0x33, 0x68, 0x7f, 0x30, 0xee, 0xf0, 0x39, 0x38, 0x3a, 0xc4, 0x83, 0x5b, 0x7c,
+	0xdb, 0x8f, 0x1c, 0x3c, 0xd9, 0xba, 0x13, 0xfd, 0x39, 0xc1, 0xc1, 0xb7, 0x9f, 0xbf, 0xbe, 0xb7,
+	0xba, 0xb8, 0xf3, 0xe7, 0xea, 0x9e, 0xa3, 0xf1, 0xdb, 0x31, 0xe8, 0xce, 0xd3, 0xf5, 0x46, 0xa6,
+	0xe8, 0xe3, 0x4b, 0xdb, 0x83, 0xcb, 0x05, 0x15, 0x3c, 0x92, 0x25, 0x8f, 0x39, 0x13, 0x7a, 0x5f,
+	0xb1, 0xa1, 0xe8, 0x6a, 0x5e, 0xfd, 0x73, 0xbf, 0xaf, 0x6c, 0x78, 0xe1, 0x6a, 0xd1, 0xf1, 0xef,
+	0x00, 0x00, 0x00, 0xff, 0xff, 0x4f, 0x60, 0xe9, 0x84, 0xe3, 0x02, 0x00, 0x00,
+}
-- 
GitLab