cmd/protoc-gen-go: generate descriptor and plugin with reflection

In CL/152020, we checked in pre-generated versions of descriptor and plugin.
This CL makes it such that they are generated by protoc-gen-go.

We modify protoc-gen-go to avoid reflection support by default
since the binary size increase is still an issue to investigate.
Reflection support is temporarily enabled by setting a special
PROTOC_GEN_GO_ENABLE_REFLECT environment variable.

Reflection support is always enabled for descriptor and plugin.
Furthermore, we change descriptor to depend on the protoapi package
instead of the proto package. The reason we do not switch to protoapi
for all generated protos is because we still depend on v1 proto
for the table-driven InternalMessageInfo type. Dropping it from descriptor
is semantically correct, but does incur slight performance cost.
It does not seem appropriate to drop it for all generated messages.

We could move InternalMessageInfo to protoapi, but the logic behind that
is significant.

Change-Id: I5c3fff7f6eab1a5a2399049d42fa6bf42d4c93f9
Reviewed-on: https://go-review.googlesource.com/c/152547
Reviewed-by: Damien Neil <dneil@google.com>
This commit is contained in:
Joe Tsai 2018-12-04 22:53:56 -08:00 committed by Joe Tsai
parent b3960a7de0
commit 24ceb2b095
11 changed files with 588 additions and 372 deletions

View File

@ -31,9 +31,10 @@ import (
const generatedCodeVersion = 3
const (
fmtPackage = protogen.GoImportPath("fmt")
mathPackage = protogen.GoImportPath("math")
protoPackage = protogen.GoImportPath("github.com/golang/protobuf/proto")
fmtPackage = protogen.GoImportPath("fmt")
mathPackage = protogen.GoImportPath("math")
protoPackage = protogen.GoImportPath("github.com/golang/protobuf/proto")
protoapiPackage = protogen.GoImportPath("github.com/golang/protobuf/protoapi")
)
type fileInfo struct {
@ -46,6 +47,28 @@ type fileInfo struct {
fileReflect fileReflect
}
// protoPackage returns the package to import, which is either the protoPackage
// or the protoapiPackage constant.
//
// This special casing exists because we are unable to move InternalMessageInfo
// to protoapi since the implementation behind that logic is heavy and
// too intricately connected to other parts of the proto package.
// The descriptor proto is special in that it avoids using InternalMessageInfo
// so that it is able to depend solely on protoapi and break its dependency
// on the proto package. It is still semantically correct for descriptor to
// avoid using InternalMessageInfo, but it does incur some performance penalty.
// This is acceptable for descriptor, which is a single proto file and is not
// known to be in the hot path for any code.
//
// TODO: Remove this special-casing when the table-driven implementation has
// been ported over to v2.
func (f *fileInfo) protoPackage() protogen.GoImportPath {
if isDescriptor(f.File) {
return protoapiPackage
}
return protoPackage
}
// GenerateFile generates the contents of a .pb.go file.
func GenerateFile(gen *protogen.Plugin, file *protogen.File, g *protogen.GeneratedFile) {
f := &fileInfo{
@ -97,19 +120,21 @@ func GenerateFile(gen *protogen.Plugin, file *protogen.File, g *protogen.Generat
// detect unintended variations.
//
// TODO: Eventually remove this.
g.P("// Reference imports to suppress errors if they are not otherwise used.")
g.P("var _ = ", protoPackage.Ident("Marshal"))
g.P("var _ = ", fmtPackage.Ident("Errorf"))
g.P("var _ = ", mathPackage.Ident("Inf"))
g.P()
if !isDescriptor(file) {
g.P("// Reference imports to suppress errors if they are not otherwise used.")
g.P("var _ = ", protoPackage.Ident("Marshal"))
g.P("var _ = ", fmtPackage.Ident("Errorf"))
g.P("var _ = ", mathPackage.Ident("Inf"))
g.P()
g.P("// This is a compile-time assertion to ensure that this generated file")
g.P("// is compatible with the proto package it is being compiled against.")
g.P("// A compilation error at this line likely means your copy of the")
g.P("// proto package needs to be updated.")
g.P("const _ = ", protoPackage.Ident(fmt.Sprintf("ProtoPackageIsVersion%d", generatedCodeVersion)),
"// please upgrade the proto package")
g.P()
g.P("// This is a compile-time assertion to ensure that this generated file")
g.P("// is compatible with the proto package it is being compiled against.")
g.P("// A compilation error at this line likely means your copy of the")
g.P("// proto package needs to be updated.")
g.P("const _ = ", protoPackage.Ident(fmt.Sprintf("ProtoPackageIsVersion%d", generatedCodeVersion)),
"// please upgrade the proto package")
g.P()
}
for i, imps := 0, f.Desc.Imports(); i < imps.Len(); i++ {
genImport(gen, g, f, imps.Get(i))
@ -235,7 +260,7 @@ func genFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileI
w.Close()
b = buf.Bytes()
g.P("func init() { proto.RegisterFile(", strconv.Quote(f.Desc.Path()), ", ", f.descriptorVar, ") }")
g.P("func init() {", f.protoPackage().Ident("RegisterFile"), "(", strconv.Quote(f.Desc.Path()), ", ", f.descriptorVar, ") }")
g.P()
g.P("var ", f.descriptorVar, " = []byte{")
g.P("// ", len(b), " bytes of a gzipped FileDescriptorProto")
@ -304,13 +329,13 @@ func genEnum(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, enum
g.P()
}
g.P("func (x ", enum.GoIdent, ") String() string {")
g.P("return ", protoPackage.Ident("EnumName"), "(", enum.GoIdent, "_name, int32(x))")
g.P("return ", f.protoPackage().Ident("EnumName"), "(", enum.GoIdent, "_name, int32(x))")
g.P("}")
g.P()
if enum.Desc.Syntax() != protoreflect.Proto3 {
g.P("func (x *", enum.GoIdent, ") UnmarshalJSON(data []byte) error {")
g.P("value, err := ", protoPackage.Ident("UnmarshalJSONEnum"), "(", enum.GoIdent, `_value, data, "`, enum.GoIdent, `")`)
g.P("value, err := ", f.protoPackage().Ident("UnmarshalJSONEnum"), "(", enum.GoIdent, `_value, data, "`, enum.GoIdent, `")`)
g.P("if err != nil {")
g.P("return err")
g.P("}")
@ -409,7 +434,7 @@ func genMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, me
tags = append(tags, `protobuf_messageset:"1"`)
}
tags = append(tags, `json:"-"`)
g.P(protoPackage.Ident("XXX_InternalExtensions"), " `", strings.Join(tags, " "), "`")
g.P(f.protoPackage().Ident("XXX_InternalExtensions"), " `", strings.Join(tags, " "), "`")
}
// TODO XXX_InternalExtensions
g.P("XXX_unrecognized []byte `json:\"-\"`")
@ -423,7 +448,7 @@ func genMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, me
// Reset
g.P("func (m *", message.GoIdent, ") Reset() { *m = ", message.GoIdent, "{} }")
// String
g.P("func (m *", message.GoIdent, ") String() string { return ", protoPackage.Ident("CompactTextString"), "(m) }")
g.P("func (m *", message.GoIdent, ") String() string { return ", f.protoPackage().Ident("CompactTextString"), "(m) }")
// ProtoMessage
g.P("func (*", message.GoIdent, ") ProtoMessage() {}")
// Descriptor
@ -438,7 +463,7 @@ func genMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, me
// ExtensionRangeArray
if extranges := message.Desc.ExtensionRanges(); extranges.Len() > 0 {
protoExtRange := protoPackage.Ident("ExtensionRange")
protoExtRange := f.protoPackage().Ident("ExtensionRange")
extRangeVar := "extRange_" + message.GoIdent.GoName
g.P("var ", extRangeVar, " = []", protoExtRange, " {")
for i := 0; i < extranges.Len(); i++ {
@ -462,30 +487,35 @@ func genMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, me
// table-driven approach. Instead, we should only add a single method
// that allows getting access to the *InternalMessageInfo struct and then
// calling Unmarshal, Marshal, Merge, Size, and Discard directly on that.
messageInfoVar := "xxx_messageInfo_" + message.GoIdent.GoName
// XXX_Unmarshal
g.P("func (m *", message.GoIdent, ") XXX_Unmarshal(b []byte) error {")
g.P("return ", messageInfoVar, ".Unmarshal(m, b)")
g.P("}")
// XXX_Marshal
g.P("func (m *", message.GoIdent, ") XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {")
g.P("return ", messageInfoVar, ".Marshal(b, m, deterministic)")
g.P("}")
// XXX_Merge
g.P("func (m *", message.GoIdent, ") XXX_Merge(src proto.Message) {")
g.P(messageInfoVar, ".Merge(m, src)")
g.P("}")
// XXX_Size
g.P("func (m *", message.GoIdent, ") XXX_Size() int {")
g.P("return ", messageInfoVar, ".Size(m)")
g.P("}")
// XXX_DiscardUnknown
g.P("func (m *", message.GoIdent, ") XXX_DiscardUnknown() {")
g.P(messageInfoVar, ".DiscardUnknown(m)")
g.P("}")
g.P()
g.P("var ", messageInfoVar, " ", protoPackage.Ident("InternalMessageInfo"))
g.P()
if !isDescriptor(f.File) {
// NOTE: We avoid adding table-driven support for descriptor proto
// since this depends on the v1 proto package, which would eventually
// need to depend on the descriptor itself.
messageInfoVar := "xxx_messageInfo_" + message.GoIdent.GoName
// XXX_Unmarshal
g.P("func (m *", message.GoIdent, ") XXX_Unmarshal(b []byte) error {")
g.P("return ", messageInfoVar, ".Unmarshal(m, b)")
g.P("}")
// XXX_Marshal
g.P("func (m *", message.GoIdent, ") XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {")
g.P("return ", messageInfoVar, ".Marshal(b, m, deterministic)")
g.P("}")
// XXX_Merge
g.P("func (m *", message.GoIdent, ") XXX_Merge(src proto.Message) {")
g.P(messageInfoVar, ".Merge(m, src)")
g.P("}")
// XXX_Size
g.P("func (m *", message.GoIdent, ") XXX_Size() int {")
g.P("return ", messageInfoVar, ".Size(m)")
g.P("}")
// XXX_DiscardUnknown
g.P("func (m *", message.GoIdent, ") XXX_DiscardUnknown() {")
g.P(messageInfoVar, ".DiscardUnknown(m)")
g.P("}")
g.P()
g.P("var ", messageInfoVar, " ", protoPackage.Ident("InternalMessageInfo"))
g.P()
}
// Constants and vars holding the default values of fields.
for _, field := range message.Fields {
@ -699,7 +729,7 @@ func genExtension(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo,
name = n
}
g.P("var ", extensionVar(f.File, extension), " = &", protoPackage.Ident("ExtensionDesc"), "{")
g.P("var ", extensionVar(f.File, extension), " = &", f.protoPackage().Ident("ExtensionDesc"), "{")
g.P("ExtendedType: (*", extension.ExtendedType.GoIdent, ")(nil),")
goType, pointer := fieldGoType(g, extension)
if pointer {
@ -757,7 +787,7 @@ func genInitFunction(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInf
g.P("func init() {")
for _, enum := range f.allEnums {
name := enum.GoIdent.GoName
g.P(protoPackage.Ident("RegisterEnum"), fmt.Sprintf("(%q, %s_name, %s_value)", enumRegistryName(enum), name, name))
g.P(f.protoPackage().Ident("RegisterEnum"), fmt.Sprintf("(%q, %s_name, %s_value)", enumRegistryName(enum), name, name))
}
for _, message := range f.allMessages {
if message.Desc.IsMapEntry() {
@ -769,7 +799,7 @@ func genInitFunction(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInf
}
name := message.GoIdent.GoName
g.P(protoPackage.Ident("RegisterType"), fmt.Sprintf("((*%s)(nil), %q)", name, message.Desc.FullName()))
g.P(f.protoPackage().Ident("RegisterType"), fmt.Sprintf("((*%s)(nil), %q)", name, message.Desc.FullName()))
// Types of map fields, sorted by the name of the field message type.
var mapFields []*protogen.Field
@ -786,7 +816,7 @@ func genInitFunction(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInf
for _, field := range mapFields {
typeName := string(field.MessageType.Desc.FullName())
goType, _ := fieldGoType(g, field)
g.P(protoPackage.Ident("RegisterMapType"), fmt.Sprintf("((%v)(nil), %q)", goType, typeName))
g.P(f.protoPackage().Ident("RegisterMapType"), fmt.Sprintf("((%v)(nil), %q)", goType, typeName))
}
}
for _, extension := range f.Extensions {
@ -797,7 +827,7 @@ func genInitFunction(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInf
}
func genRegisterExtension(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, extension *protogen.Extension) {
g.P(protoPackage.Ident("RegisterExtension"), "(", extensionVar(f.File, extension), ")")
g.P(f.protoPackage().Ident("RegisterExtension"), "(", extensionVar(f.File, extension), ")")
}
// deprecationComment returns a standard deprecation comment if deprecated is true.

View File

@ -7,6 +7,7 @@ package internal_gengo
import (
"fmt"
"math"
"os"
"reflect"
"strconv"
"strings"
@ -16,7 +17,17 @@ import (
)
// TODO: Remove this flag.
const enableReflect = true
// Remember to remove the copy in internal/protogen/goldentest.
var enableReflectFlag = os.Getenv("PROTOC_GEN_GO_ENABLE_REFLECT") != ""
func enableReflection(f *protogen.File) bool {
return enableReflectFlag || isDescriptor(f)
}
// TODO: Remove special-casing for descriptor proto.
func isDescriptor(f *protogen.File) bool {
return f.Desc.Path() == "google/protobuf/descriptor.proto" && f.Desc.Package() == "google.protobuf"
}
// minimumVersion is minimum version of the v2 proto package that is required.
// This is incremented every time the generated code relies on some property
@ -68,7 +79,7 @@ func (r *fileReflect) init(f *fileInfo) {
}
func genReflectInitFunction(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
if !enableReflect {
if !enableReflection(f.File) {
return
}
@ -160,7 +171,7 @@ func genReflectInitFunction(gen *protogen.Plugin, g *protogen.GeneratedFile, f *
}
func genReflectFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
if !enableReflect {
if !enableReflection(f.File) {
return
}
@ -318,7 +329,7 @@ func genReflectFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f
}
func genReflectEnum(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, enum *protogen.Enum) {
if !enableReflect {
if !enableReflection(f.File) {
return
}
@ -340,7 +351,7 @@ func genReflectEnum(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo
}
func genReflectMessage(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, message *protogen.Message) {
if !enableReflect {
if !enableReflection(f.File) {
return
}

2
go.mod
View File

@ -1,7 +1,7 @@
module github.com/golang/protobuf/v2
require (
github.com/golang/protobuf v1.2.1-0.20181130223505-8f3966804431
github.com/golang/protobuf v1.2.1-0.20181205191652-7e65e513332f
github.com/google/go-cmp v0.2.1-0.20181101181452-745b8ec83783
golang.org/x/tools v0.0.0-20180928181343-b3c0be4c978b
)

4
go.sum
View File

@ -1,6 +1,6 @@
github.com/golang/protobuf v1.2.1-0.20181127190454-8d0c54c12466/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=
github.com/golang/protobuf v1.2.1-0.20181130223505-8f3966804431 h1:OtJApg8lwJ831/LP3MINk4iuG5OrqxeBJUx3IMCKWY8=
github.com/golang/protobuf v1.2.1-0.20181130223505-8f3966804431/go.mod h1:asK8yRb/+zxJTE0SbTESCku/4OjiDfbPwk4rEyIatUA=
github.com/golang/protobuf v1.2.1-0.20181205191652-7e65e513332f h1:jEoef3K+ZQwZ7UB1iGu6KhX8hS9cYw1aXR7djS3Vn10=
github.com/golang/protobuf v1.2.1-0.20181205191652-7e65e513332f/go.mod h1:asK8yRb/+zxJTE0SbTESCku/4OjiDfbPwk4rEyIatUA=
github.com/golang/protobuf/v2 v2.0.0-20181127193627-d7e97bc71bcb/go.mod h1:MgUD+N3FwzDmj2CdMsT5ap7K7jx+c9cQDQ7fVhmH+Xw=
github.com/google/go-cmp v0.2.1-0.20181101181452-745b8ec83783 h1:wVZ6laEGf86tNDTpR5mxFyFIclJJiXCxuJhcQKnsOHk=
github.com/google/go-cmp v0.2.1-0.20181101181452-745b8ec83783/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=

View File

@ -119,6 +119,8 @@ func Protoc(t *testing.T, args []string) {
// We set the RUN_AS_PROTOC_PLUGIN environment variable to indicate that
// the subprocess should act as a proto compiler rather than a test.
cmd.Env = append(os.Environ(), "RUN_AS_PROTOC_PLUGIN=1")
// TODO: Remove this when protoc-gen-go always generates reflection.
cmd.Env = append(cmd.Env, "PROTOC_GEN_GO_ENABLE_REFLECT=1")
out, err := cmd.CombinedOutput()
if len(out) > 0 || err != nil {
t.Log("RUNNING: ", strings.Join(cmd.Args, " "))

View File

@ -383,16 +383,6 @@ func makeRequest(t *testing.T, args ...string) *pluginpb.CodeGeneratorRequest {
t.Fatal(err)
}
req := &pluginpb.CodeGeneratorRequest{}
// TODO: This is a hack, but the proto v1 UnmarshalText relies on global
// enum registration to work. The v2 textpb will not have this issue.
proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", descriptorpb.FieldDescriptorProto_Type_name, descriptorpb.FieldDescriptorProto_Type_value)
proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", descriptorpb.FieldDescriptorProto_Label_name, descriptorpb.FieldDescriptorProto_Label_value)
proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", descriptorpb.FileOptions_OptimizeMode_name, descriptorpb.FileOptions_OptimizeMode_value)
proto.RegisterEnum("google.protobuf.FieldOptions_CType", descriptorpb.FieldOptions_CType_name, descriptorpb.FieldOptions_CType_value)
proto.RegisterEnum("google.protobuf.FieldOptions_JSType", descriptorpb.FieldOptions_JSType_name, descriptorpb.FieldOptions_JSType_value)
proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", descriptorpb.MethodOptions_IdempotencyLevel_name, descriptorpb.MethodOptions_IdempotencyLevel_value)
if err := proto.UnmarshalText(string(b), req); err != nil {
t.Fatal(err)
}

View File

@ -21,9 +21,28 @@ PROTO_DIRS=(
for dir in ${PROTO_DIRS[@]}; do
for p in `find $dir -name "*.proto"`; do
echo "# $p"
protoc -I$dir \
PROTOC_GEN_GO_ENABLE_REFLECT=1 protoc -I$dir \
--go_out=paths=source_relative:$dir \
--go-grpc_out=paths=source_relative:$dir \
$p
done
done
# Generate descriptor and plugin.
# TODO: Make this more automated.
echo "# types/descriptor/descriptor.proto"
mkdir -p $tmpdir/src/google/protobuf
cp ./types/descriptor/descriptor.proto $tmpdir/src/google/protobuf/descriptor.proto
PROTOC_GEN_GO_ENABLE_REFLECT=1 protoc -I$tmpdir/src \
--go_out=paths=source_relative:$tmpdir/src \
$tmpdir/src/google/protobuf/descriptor.proto
cp $tmpdir/src/google/protobuf/descriptor.pb.go ./types/descriptor/descriptor.pb.go
echo "# types/plugin/plugin.proto"
mkdir -p $tmpdir/src/google/protobuf/compiler
cp ./types/plugin/plugin.proto $tmpdir/src/google/protobuf/compiler/plugin.proto
PROTOC_GEN_GO_ENABLE_REFLECT=1 protoc -I$tmpdir/src \
--go_out=paths=source_relative:$tmpdir/src \
$tmpdir/src/google/protobuf/compiler/plugin.proto
cp $tmpdir/src/google/protobuf/compiler/plugin.pb.go ./types/plugin/plugin.pb.go

View File

@ -1,12 +1,10 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/protobuf/descriptor.proto
package descriptor
package descriptor_proto
import (
"errors"
proto "github.com/golang/protobuf/protoapi"
protoapi "github.com/golang/protobuf/protoapi"
protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
prototype "github.com/golang/protobuf/v2/reflect/prototype"
protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
@ -107,11 +105,16 @@ func (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type {
}
func (x FieldDescriptorProto_Type) String() string {
return FieldDescriptorProto_Type_name[int32(x)]
return protoapi.EnumName(FieldDescriptorProto_Type_name, int32(x))
}
func (x *FieldDescriptorProto_Type) UnmarshalJSON(data []byte) error {
return errors.New("not implemented")
value, err := protoapi.UnmarshalJSONEnum(FieldDescriptorProto_Type_value, data, "FieldDescriptorProto_Type")
if err != nil {
return err
}
*x = FieldDescriptorProto_Type(value)
return nil
}
func (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) {
@ -158,11 +161,16 @@ func (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label {
}
func (x FieldDescriptorProto_Label) String() string {
return FieldDescriptorProto_Label_name[int32(x)]
return protoapi.EnumName(FieldDescriptorProto_Label_name, int32(x))
}
func (x *FieldDescriptorProto_Label) UnmarshalJSON(data []byte) error {
return errors.New("not implemented")
value, err := protoapi.UnmarshalJSONEnum(FieldDescriptorProto_Label_value, data, "FieldDescriptorProto_Label")
if err != nil {
return err
}
*x = FieldDescriptorProto_Label(value)
return nil
}
func (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) {
@ -210,11 +218,16 @@ func (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode {
}
func (x FileOptions_OptimizeMode) String() string {
return FileOptions_OptimizeMode_name[int32(x)]
return protoapi.EnumName(FileOptions_OptimizeMode_name, int32(x))
}
func (x *FileOptions_OptimizeMode) UnmarshalJSON(data []byte) error {
return errors.New("not implemented")
value, err := protoapi.UnmarshalJSONEnum(FileOptions_OptimizeMode_value, data, "FileOptions_OptimizeMode")
if err != nil {
return err
}
*x = FileOptions_OptimizeMode(value)
return nil
}
func (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) {
@ -261,11 +274,16 @@ func (x FieldOptions_CType) Enum() *FieldOptions_CType {
}
func (x FieldOptions_CType) String() string {
return FieldOptions_CType_name[int32(x)]
return protoapi.EnumName(FieldOptions_CType_name, int32(x))
}
func (x *FieldOptions_CType) UnmarshalJSON(data []byte) error {
return errors.New("not implemented")
value, err := protoapi.UnmarshalJSONEnum(FieldOptions_CType_value, data, "FieldOptions_CType")
if err != nil {
return err
}
*x = FieldOptions_CType(value)
return nil
}
func (FieldOptions_CType) EnumDescriptor() ([]byte, []int) {
@ -314,11 +332,16 @@ func (x FieldOptions_JSType) Enum() *FieldOptions_JSType {
}
func (x FieldOptions_JSType) String() string {
return FieldOptions_JSType_name[int32(x)]
return protoapi.EnumName(FieldOptions_JSType_name, int32(x))
}
func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error {
return errors.New("not implemented")
value, err := protoapi.UnmarshalJSONEnum(FieldOptions_JSType_value, data, "FieldOptions_JSType")
if err != nil {
return err
}
*x = FieldOptions_JSType(value)
return nil
}
func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) {
@ -367,11 +390,16 @@ func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel {
}
func (x MethodOptions_IdempotencyLevel) String() string {
return MethodOptions_IdempotencyLevel_name[int32(x)]
return protoapi.EnumName(MethodOptions_IdempotencyLevel_name, int32(x))
}
func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error {
return errors.New("not implemented")
value, err := protoapi.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel")
if err != nil {
return err
}
*x = MethodOptions_IdempotencyLevel(value)
return nil
}
func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {
@ -407,7 +435,7 @@ func (m xxx_FileDescriptorSet) Interface() protoreflect.ProtoMessage {
func (m xxx_FileDescriptorSet) ProtoMutable() {}
func (m *FileDescriptorSet) Reset() { *m = FileDescriptorSet{} }
func (m *FileDescriptorSet) String() string { return "not implemented" }
func (m *FileDescriptorSet) String() string { return protoapi.CompactTextString(m) }
func (*FileDescriptorSet) ProtoMessage() {}
func (*FileDescriptorSet) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{0}
@ -470,7 +498,7 @@ func (m xxx_FileDescriptorProto) Interface() protoreflect.ProtoMessage {
func (m xxx_FileDescriptorProto) ProtoMutable() {}
func (m *FileDescriptorProto) Reset() { *m = FileDescriptorProto{} }
func (m *FileDescriptorProto) String() string { return "not implemented" }
func (m *FileDescriptorProto) String() string { return protoapi.CompactTextString(m) }
func (*FileDescriptorProto) ProtoMessage() {}
func (*FileDescriptorProto) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{1}
@ -599,7 +627,7 @@ func (m xxx_DescriptorProto) Interface() protoreflect.ProtoMessage {
func (m xxx_DescriptorProto) ProtoMutable() {}
func (m *DescriptorProto) Reset() { *m = DescriptorProto{} }
func (m *DescriptorProto) String() string { return "not implemented" }
func (m *DescriptorProto) String() string { return protoapi.CompactTextString(m) }
func (*DescriptorProto) ProtoMessage() {}
func (*DescriptorProto) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{2}
@ -706,7 +734,7 @@ func (m xxx_DescriptorProto_ExtensionRange) Interface() protoreflect.ProtoMessag
func (m xxx_DescriptorProto_ExtensionRange) ProtoMutable() {}
func (m *DescriptorProto_ExtensionRange) Reset() { *m = DescriptorProto_ExtensionRange{} }
func (m *DescriptorProto_ExtensionRange) String() string { return "not implemented" }
func (m *DescriptorProto_ExtensionRange) String() string { return protoapi.CompactTextString(m) }
func (*DescriptorProto_ExtensionRange) ProtoMessage() {}
func (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{2, 0}
@ -766,7 +794,7 @@ func (m xxx_DescriptorProto_ReservedRange) Interface() protoreflect.ProtoMessage
func (m xxx_DescriptorProto_ReservedRange) ProtoMutable() {}
func (m *DescriptorProto_ReservedRange) Reset() { *m = DescriptorProto_ReservedRange{} }
func (m *DescriptorProto_ReservedRange) String() string { return "not implemented" }
func (m *DescriptorProto_ReservedRange) String() string { return protoapi.CompactTextString(m) }
func (*DescriptorProto_ReservedRange) ProtoMessage() {}
func (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{2, 1}
@ -788,11 +816,11 @@ func (m *DescriptorProto_ReservedRange) GetEnd() int32 {
type ExtensionRangeOptions struct {
// The parser stores options it doesn't recognize here. See above.
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
proto.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
protoapi.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
type xxx_ExtensionRangeOptions struct{ m *ExtensionRangeOptions }
@ -815,17 +843,17 @@ func (m xxx_ExtensionRangeOptions) Interface() protoreflect.ProtoMessage {
func (m xxx_ExtensionRangeOptions) ProtoMutable() {}
func (m *ExtensionRangeOptions) Reset() { *m = ExtensionRangeOptions{} }
func (m *ExtensionRangeOptions) String() string { return "not implemented" }
func (m *ExtensionRangeOptions) String() string { return protoapi.CompactTextString(m) }
func (*ExtensionRangeOptions) ProtoMessage() {}
func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{3}
}
var extRange_ExtensionRangeOptions = []proto.ExtensionRange{
var extRange_ExtensionRangeOptions = []protoapi.ExtensionRange{
{Start: 1000, End: 536870911},
}
func (*ExtensionRangeOptions) ExtensionRangeArray() []proto.ExtensionRange {
func (*ExtensionRangeOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
return extRange_ExtensionRangeOptions
}
@ -893,7 +921,7 @@ func (m xxx_FieldDescriptorProto) Interface() protoreflect.ProtoMessage {
func (m xxx_FieldDescriptorProto) ProtoMutable() {}
func (m *FieldDescriptorProto) Reset() { *m = FieldDescriptorProto{} }
func (m *FieldDescriptorProto) String() string { return "not implemented" }
func (m *FieldDescriptorProto) String() string { return protoapi.CompactTextString(m) }
func (*FieldDescriptorProto) ProtoMessage() {}
func (*FieldDescriptorProto) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{4}
@ -998,7 +1026,7 @@ func (m xxx_OneofDescriptorProto) Interface() protoreflect.ProtoMessage {
func (m xxx_OneofDescriptorProto) ProtoMutable() {}
func (m *OneofDescriptorProto) Reset() { *m = OneofDescriptorProto{} }
func (m *OneofDescriptorProto) String() string { return "not implemented" }
func (m *OneofDescriptorProto) String() string { return protoapi.CompactTextString(m) }
func (*OneofDescriptorProto) ProtoMessage() {}
func (*OneofDescriptorProto) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{5}
@ -1055,7 +1083,7 @@ func (m xxx_EnumDescriptorProto) Interface() protoreflect.ProtoMessage {
func (m xxx_EnumDescriptorProto) ProtoMutable() {}
func (m *EnumDescriptorProto) Reset() { *m = EnumDescriptorProto{} }
func (m *EnumDescriptorProto) String() string { return "not implemented" }
func (m *EnumDescriptorProto) String() string { return protoapi.CompactTextString(m) }
func (*EnumDescriptorProto) ProtoMessage() {}
func (*EnumDescriptorProto) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{6}
@ -1132,7 +1160,7 @@ func (m xxx_EnumDescriptorProto_EnumReservedRange) Interface() protoreflect.Prot
func (m xxx_EnumDescriptorProto_EnumReservedRange) ProtoMutable() {}
func (m *EnumDescriptorProto_EnumReservedRange) Reset() { *m = EnumDescriptorProto_EnumReservedRange{} }
func (m *EnumDescriptorProto_EnumReservedRange) String() string { return "not implemented" }
func (m *EnumDescriptorProto_EnumReservedRange) String() string { return protoapi.CompactTextString(m) }
func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {}
func (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{6, 0}
@ -1182,7 +1210,7 @@ func (m xxx_EnumValueDescriptorProto) Interface() protoreflect.ProtoMessage {
func (m xxx_EnumValueDescriptorProto) ProtoMutable() {}
func (m *EnumValueDescriptorProto) Reset() { *m = EnumValueDescriptorProto{} }
func (m *EnumValueDescriptorProto) String() string { return "not implemented" }
func (m *EnumValueDescriptorProto) String() string { return protoapi.CompactTextString(m) }
func (*EnumValueDescriptorProto) ProtoMessage() {}
func (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{7}
@ -1239,7 +1267,7 @@ func (m xxx_ServiceDescriptorProto) Interface() protoreflect.ProtoMessage {
func (m xxx_ServiceDescriptorProto) ProtoMutable() {}
func (m *ServiceDescriptorProto) Reset() { *m = ServiceDescriptorProto{} }
func (m *ServiceDescriptorProto) String() string { return "not implemented" }
func (m *ServiceDescriptorProto) String() string { return protoapi.CompactTextString(m) }
func (*ServiceDescriptorProto) ProtoMessage() {}
func (*ServiceDescriptorProto) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{8}
@ -1303,7 +1331,7 @@ func (m xxx_MethodDescriptorProto) Interface() protoreflect.ProtoMessage {
func (m xxx_MethodDescriptorProto) ProtoMutable() {}
func (m *MethodDescriptorProto) Reset() { *m = MethodDescriptorProto{} }
func (m *MethodDescriptorProto) String() string { return "not implemented" }
func (m *MethodDescriptorProto) String() string { return protoapi.CompactTextString(m) }
func (*MethodDescriptorProto) ProtoMessage() {}
func (*MethodDescriptorProto) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{9}
@ -1438,11 +1466,11 @@ type FileOptions struct {
RubyPackage *string `protobuf:"bytes,45,opt,name=ruby_package,json=rubyPackage" json:"ruby_package,omitempty"`
// The parser stores options it doesn't recognize here.
// See the documentation for the "Options" section above.
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
proto.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
protoapi.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
type xxx_FileOptions struct{ m *FileOptions }
@ -1465,17 +1493,17 @@ func (m xxx_FileOptions) Interface() protoreflect.ProtoMessage {
func (m xxx_FileOptions) ProtoMutable() {}
func (m *FileOptions) Reset() { *m = FileOptions{} }
func (m *FileOptions) String() string { return "not implemented" }
func (m *FileOptions) String() string { return protoapi.CompactTextString(m) }
func (*FileOptions) ProtoMessage() {}
func (*FileOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{10}
}
var extRange_FileOptions = []proto.ExtensionRange{
var extRange_FileOptions = []protoapi.ExtensionRange{
{Start: 1000, End: 536870911},
}
func (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange {
func (*FileOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
return extRange_FileOptions
}
@ -1689,11 +1717,11 @@ type MessageOptions struct {
// parser.
MapEntry *bool `protobuf:"varint,7,opt,name=map_entry,json=mapEntry" json:"map_entry,omitempty"`
// The parser stores options it doesn't recognize here. See above.
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
proto.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
protoapi.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
type xxx_MessageOptions struct{ m *MessageOptions }
@ -1716,17 +1744,17 @@ func (m xxx_MessageOptions) Interface() protoreflect.ProtoMessage {
func (m xxx_MessageOptions) ProtoMutable() {}
func (m *MessageOptions) Reset() { *m = MessageOptions{} }
func (m *MessageOptions) String() string { return "not implemented" }
func (m *MessageOptions) String() string { return protoapi.CompactTextString(m) }
func (*MessageOptions) ProtoMessage() {}
func (*MessageOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{11}
}
var extRange_MessageOptions = []proto.ExtensionRange{
var extRange_MessageOptions = []protoapi.ExtensionRange{
{Start: 1000, End: 536870911},
}
func (*MessageOptions) ExtensionRangeArray() []proto.ExtensionRange {
func (*MessageOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
return extRange_MessageOptions
}
@ -1830,11 +1858,11 @@ type FieldOptions struct {
// For Google-internal migration only. Do not use.
Weak *bool `protobuf:"varint,10,opt,name=weak,def=0" json:"weak,omitempty"`
// The parser stores options it doesn't recognize here. See above.
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
proto.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
protoapi.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
type xxx_FieldOptions struct{ m *FieldOptions }
@ -1857,17 +1885,17 @@ func (m xxx_FieldOptions) Interface() protoreflect.ProtoMessage {
func (m xxx_FieldOptions) ProtoMutable() {}
func (m *FieldOptions) Reset() { *m = FieldOptions{} }
func (m *FieldOptions) String() string { return "not implemented" }
func (m *FieldOptions) String() string { return protoapi.CompactTextString(m) }
func (*FieldOptions) ProtoMessage() {}
func (*FieldOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{12}
}
var extRange_FieldOptions = []proto.ExtensionRange{
var extRange_FieldOptions = []protoapi.ExtensionRange{
{Start: 1000, End: 536870911},
}
func (*FieldOptions) ExtensionRangeArray() []proto.ExtensionRange {
func (*FieldOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
return extRange_FieldOptions
}
@ -1928,11 +1956,11 @@ func (m *FieldOptions) GetUninterpretedOption() []*UninterpretedOption {
type OneofOptions struct {
// The parser stores options it doesn't recognize here. See above.
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
proto.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
protoapi.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
type xxx_OneofOptions struct{ m *OneofOptions }
@ -1955,17 +1983,17 @@ func (m xxx_OneofOptions) Interface() protoreflect.ProtoMessage {
func (m xxx_OneofOptions) ProtoMutable() {}
func (m *OneofOptions) Reset() { *m = OneofOptions{} }
func (m *OneofOptions) String() string { return "not implemented" }
func (m *OneofOptions) String() string { return protoapi.CompactTextString(m) }
func (*OneofOptions) ProtoMessage() {}
func (*OneofOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{13}
}
var extRange_OneofOptions = []proto.ExtensionRange{
var extRange_OneofOptions = []protoapi.ExtensionRange{
{Start: 1000, End: 536870911},
}
func (*OneofOptions) ExtensionRangeArray() []proto.ExtensionRange {
func (*OneofOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
return extRange_OneofOptions
}
@ -1986,11 +2014,11 @@ type EnumOptions struct {
// is a formalization for deprecating enums.
Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
// The parser stores options it doesn't recognize here. See above.
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
proto.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
protoapi.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
type xxx_EnumOptions struct{ m *EnumOptions }
@ -2013,17 +2041,17 @@ func (m xxx_EnumOptions) Interface() protoreflect.ProtoMessage {
func (m xxx_EnumOptions) ProtoMutable() {}
func (m *EnumOptions) Reset() { *m = EnumOptions{} }
func (m *EnumOptions) String() string { return "not implemented" }
func (m *EnumOptions) String() string { return protoapi.CompactTextString(m) }
func (*EnumOptions) ProtoMessage() {}
func (*EnumOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{14}
}
var extRange_EnumOptions = []proto.ExtensionRange{
var extRange_EnumOptions = []protoapi.ExtensionRange{
{Start: 1000, End: 536870911},
}
func (*EnumOptions) ExtensionRangeArray() []proto.ExtensionRange {
func (*EnumOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
return extRange_EnumOptions
}
@ -2057,11 +2085,11 @@ type EnumValueOptions struct {
// this is a formalization for deprecating enum values.
Deprecated *bool `protobuf:"varint,1,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
// The parser stores options it doesn't recognize here. See above.
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
proto.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
protoapi.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
type xxx_EnumValueOptions struct{ m *EnumValueOptions }
@ -2084,17 +2112,17 @@ func (m xxx_EnumValueOptions) Interface() protoreflect.ProtoMessage {
func (m xxx_EnumValueOptions) ProtoMutable() {}
func (m *EnumValueOptions) Reset() { *m = EnumValueOptions{} }
func (m *EnumValueOptions) String() string { return "not implemented" }
func (m *EnumValueOptions) String() string { return protoapi.CompactTextString(m) }
func (*EnumValueOptions) ProtoMessage() {}
func (*EnumValueOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{15}
}
var extRange_EnumValueOptions = []proto.ExtensionRange{
var extRange_EnumValueOptions = []protoapi.ExtensionRange{
{Start: 1000, End: 536870911},
}
func (*EnumValueOptions) ExtensionRangeArray() []proto.ExtensionRange {
func (*EnumValueOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
return extRange_EnumValueOptions
}
@ -2121,11 +2149,11 @@ type ServiceOptions struct {
// this is a formalization for deprecating services.
Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
// The parser stores options it doesn't recognize here. See above.
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
proto.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
protoapi.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
type xxx_ServiceOptions struct{ m *ServiceOptions }
@ -2148,17 +2176,17 @@ func (m xxx_ServiceOptions) Interface() protoreflect.ProtoMessage {
func (m xxx_ServiceOptions) ProtoMutable() {}
func (m *ServiceOptions) Reset() { *m = ServiceOptions{} }
func (m *ServiceOptions) String() string { return "not implemented" }
func (m *ServiceOptions) String() string { return protoapi.CompactTextString(m) }
func (*ServiceOptions) ProtoMessage() {}
func (*ServiceOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{16}
}
var extRange_ServiceOptions = []proto.ExtensionRange{
var extRange_ServiceOptions = []protoapi.ExtensionRange{
{Start: 1000, End: 536870911},
}
func (*ServiceOptions) ExtensionRangeArray() []proto.ExtensionRange {
func (*ServiceOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
return extRange_ServiceOptions
}
@ -2186,11 +2214,11 @@ type MethodOptions struct {
Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
IdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0" json:"idempotency_level,omitempty"`
// The parser stores options it doesn't recognize here. See above.
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
proto.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
protoapi.XXX_InternalExtensions `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
type xxx_MethodOptions struct{ m *MethodOptions }
@ -2213,17 +2241,17 @@ func (m xxx_MethodOptions) Interface() protoreflect.ProtoMessage {
func (m xxx_MethodOptions) ProtoMutable() {}
func (m *MethodOptions) Reset() { *m = MethodOptions{} }
func (m *MethodOptions) String() string { return "not implemented" }
func (m *MethodOptions) String() string { return protoapi.CompactTextString(m) }
func (*MethodOptions) ProtoMessage() {}
func (*MethodOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{17}
}
var extRange_MethodOptions = []proto.ExtensionRange{
var extRange_MethodOptions = []protoapi.ExtensionRange{
{Start: 1000, End: 536870911},
}
func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange {
func (*MethodOptions) ExtensionRangeArray() []protoapi.ExtensionRange {
return extRange_MethodOptions
}
@ -2292,7 +2320,7 @@ func (m xxx_UninterpretedOption) Interface() protoreflect.ProtoMessage {
func (m xxx_UninterpretedOption) ProtoMutable() {}
func (m *UninterpretedOption) Reset() { *m = UninterpretedOption{} }
func (m *UninterpretedOption) String() string { return "not implemented" }
func (m *UninterpretedOption) String() string { return protoapi.CompactTextString(m) }
func (*UninterpretedOption) ProtoMessage() {}
func (*UninterpretedOption) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{18}
@ -2380,7 +2408,7 @@ func (m xxx_UninterpretedOption_NamePart) Interface() protoreflect.ProtoMessage
func (m xxx_UninterpretedOption_NamePart) ProtoMutable() {}
func (m *UninterpretedOption_NamePart) Reset() { *m = UninterpretedOption_NamePart{} }
func (m *UninterpretedOption_NamePart) String() string { return "not implemented" }
func (m *UninterpretedOption_NamePart) String() string { return protoapi.CompactTextString(m) }
func (*UninterpretedOption_NamePart) ProtoMessage() {}
func (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{18, 0}
@ -2472,7 +2500,7 @@ func (m xxx_SourceCodeInfo) Interface() protoreflect.ProtoMessage {
func (m xxx_SourceCodeInfo) ProtoMutable() {}
func (m *SourceCodeInfo) Reset() { *m = SourceCodeInfo{} }
func (m *SourceCodeInfo) String() string { return "not implemented" }
func (m *SourceCodeInfo) String() string { return protoapi.CompactTextString(m) }
func (*SourceCodeInfo) ProtoMessage() {}
func (*SourceCodeInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{19}
@ -2591,7 +2619,7 @@ func (m xxx_SourceCodeInfo_Location) Interface() protoreflect.ProtoMessage {
func (m xxx_SourceCodeInfo_Location) ProtoMutable() {}
func (m *SourceCodeInfo_Location) Reset() { *m = SourceCodeInfo_Location{} }
func (m *SourceCodeInfo_Location) String() string { return "not implemented" }
func (m *SourceCodeInfo_Location) String() string { return protoapi.CompactTextString(m) }
func (*SourceCodeInfo_Location) ProtoMessage() {}
func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{19, 0}
@ -2664,7 +2692,7 @@ func (m xxx_GeneratedCodeInfo) Interface() protoreflect.ProtoMessage {
func (m xxx_GeneratedCodeInfo) ProtoMutable() {}
func (m *GeneratedCodeInfo) Reset() { *m = GeneratedCodeInfo{} }
func (m *GeneratedCodeInfo) String() string { return "not implemented" }
func (m *GeneratedCodeInfo) String() string { return protoapi.CompactTextString(m) }
func (*GeneratedCodeInfo) ProtoMessage() {}
func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{20}
@ -2715,7 +2743,7 @@ func (m xxx_GeneratedCodeInfo_Annotation) Interface() protoreflect.ProtoMessage
func (m xxx_GeneratedCodeInfo_Annotation) ProtoMutable() {}
func (m *GeneratedCodeInfo_Annotation) Reset() { *m = GeneratedCodeInfo_Annotation{} }
func (m *GeneratedCodeInfo_Annotation) String() string { return "not implemented" }
func (m *GeneratedCodeInfo_Annotation) String() string { return protoapi.CompactTextString(m) }
func (*GeneratedCodeInfo_Annotation) ProtoMessage() {}
func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) {
return fileDescriptor_e5baabe45344a177, []int{20, 0}
@ -2749,170 +2777,210 @@ func (m *GeneratedCodeInfo_Annotation) GetEnd() int32 {
return 0
}
func init() {
protoapi.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", FieldDescriptorProto_Type_name, FieldDescriptorProto_Type_value)
protoapi.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", FieldDescriptorProto_Label_name, FieldDescriptorProto_Label_value)
protoapi.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value)
protoapi.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value)
protoapi.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value)
protoapi.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value)
protoapi.RegisterType((*FileDescriptorSet)(nil), "google.protobuf.FileDescriptorSet")
protoapi.RegisterType((*FileDescriptorProto)(nil), "google.protobuf.FileDescriptorProto")
protoapi.RegisterType((*DescriptorProto)(nil), "google.protobuf.DescriptorProto")
protoapi.RegisterType((*DescriptorProto_ExtensionRange)(nil), "google.protobuf.DescriptorProto.ExtensionRange")
protoapi.RegisterType((*DescriptorProto_ReservedRange)(nil), "google.protobuf.DescriptorProto.ReservedRange")
protoapi.RegisterType((*ExtensionRangeOptions)(nil), "google.protobuf.ExtensionRangeOptions")
protoapi.RegisterType((*FieldDescriptorProto)(nil), "google.protobuf.FieldDescriptorProto")
protoapi.RegisterType((*OneofDescriptorProto)(nil), "google.protobuf.OneofDescriptorProto")
protoapi.RegisterType((*EnumDescriptorProto)(nil), "google.protobuf.EnumDescriptorProto")
protoapi.RegisterType((*EnumDescriptorProto_EnumReservedRange)(nil), "google.protobuf.EnumDescriptorProto.EnumReservedRange")
protoapi.RegisterType((*EnumValueDescriptorProto)(nil), "google.protobuf.EnumValueDescriptorProto")
protoapi.RegisterType((*ServiceDescriptorProto)(nil), "google.protobuf.ServiceDescriptorProto")
protoapi.RegisterType((*MethodDescriptorProto)(nil), "google.protobuf.MethodDescriptorProto")
protoapi.RegisterType((*FileOptions)(nil), "google.protobuf.FileOptions")
protoapi.RegisterType((*MessageOptions)(nil), "google.protobuf.MessageOptions")
protoapi.RegisterType((*FieldOptions)(nil), "google.protobuf.FieldOptions")
protoapi.RegisterType((*OneofOptions)(nil), "google.protobuf.OneofOptions")
protoapi.RegisterType((*EnumOptions)(nil), "google.protobuf.EnumOptions")
protoapi.RegisterType((*EnumValueOptions)(nil), "google.protobuf.EnumValueOptions")
protoapi.RegisterType((*ServiceOptions)(nil), "google.protobuf.ServiceOptions")
protoapi.RegisterType((*MethodOptions)(nil), "google.protobuf.MethodOptions")
protoapi.RegisterType((*UninterpretedOption)(nil), "google.protobuf.UninterpretedOption")
protoapi.RegisterType((*UninterpretedOption_NamePart)(nil), "google.protobuf.UninterpretedOption.NamePart")
protoapi.RegisterType((*SourceCodeInfo)(nil), "google.protobuf.SourceCodeInfo")
protoapi.RegisterType((*SourceCodeInfo_Location)(nil), "google.protobuf.SourceCodeInfo.Location")
protoapi.RegisterType((*GeneratedCodeInfo)(nil), "google.protobuf.GeneratedCodeInfo")
protoapi.RegisterType((*GeneratedCodeInfo_Annotation)(nil), "google.protobuf.GeneratedCodeInfo.Annotation")
}
func init() {
protoapi.RegisterFile("google/protobuf/descriptor.proto", fileDescriptor_e5baabe45344a177)
}
var fileDescriptor_e5baabe45344a177 = []byte{
// 2589 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xdd, 0x8e, 0xdb, 0xc6,
0x15, 0x0e, 0xf5, 0xb7, 0xd2, 0x91, 0x56, 0x3b, 0x3b, 0xbb, 0xb1, 0xe9, 0xcd, 0x8f, 0xd7, 0xca,
0x8f, 0xd7, 0x4e, 0xac, 0x0d, 0x1c, 0xdb, 0x71, 0xd6, 0x45, 0x5a, 0xad, 0x44, 0x6f, 0xe4, 0xee,
0x4a, 0x2a, 0xa5, 0x6d, 0x7e, 0x80, 0x82, 0x98, 0x25, 0x47, 0x12, 0x6d, 0x8a, 0x64, 0x48, 0xca,
0xf6, 0x06, 0xbd, 0x30, 0xd0, 0xab, 0x5e, 0x15, 0xe8, 0x55, 0x51, 0x14, 0xbd, 0xe8, 0x4d, 0x80,
0x3e, 0x40, 0x81, 0xde, 0xf5, 0x09, 0x0a, 0xe4, 0x0d, 0x8a, 0xb6, 0x40, 0xfb, 0x08, 0xbd, 0x2c,
0x66, 0x86, 0xa4, 0x48, 0x49, 0x1b, 0x6f, 0x02, 0xc4, 0xb9, 0x92, 0xe6, 0x3b, 0xdf, 0x39, 0x73,
0xe6, 0xcc, 0x99, 0x99, 0x33, 0x43, 0xd8, 0x1e, 0x39, 0xce, 0xc8, 0xa2, 0xbb, 0xae, 0xe7, 0x04,
0xce, 0xc9, 0x74, 0xb8, 0x6b, 0x50, 0x5f, 0xf7, 0x4c, 0x37, 0x70, 0xbc, 0x3a, 0xc7, 0xf0, 0x9a,
0x60, 0xd4, 0x23, 0x46, 0xed, 0x08, 0xd6, 0xef, 0x9b, 0x16, 0x6d, 0xc5, 0xc4, 0x3e, 0x0d, 0xf0,
0x5d, 0xc8, 0x0d, 0x4d, 0x8b, 0xca, 0xd2, 0x76, 0x76, 0xa7, 0x7c, 0xf3, 0xcd, 0xfa, 0x9c, 0x52,
0x3d, 0xad, 0xd1, 0x63, 0xb0, 0xca, 0x35, 0x6a, 0xff, 0xce, 0xc1, 0xc6, 0x12, 0x29, 0xc6, 0x90,
0xb3, 0xc9, 0x84, 0x59, 0x94, 0x76, 0x4a, 0x2a, 0xff, 0x8f, 0x65, 0x58, 0x71, 0x89, 0xfe, 0x88,
0x8c, 0xa8, 0x9c, 0xe1, 0x70, 0xd4, 0xc4, 0xaf, 0x03, 0x18, 0xd4, 0xa5, 0xb6, 0x41, 0x6d, 0xfd,
0x54, 0xce, 0x6e, 0x67, 0x77, 0x4a, 0x6a, 0x02, 0xc1, 0xef, 0xc0, 0xba, 0x3b, 0x3d, 0xb1, 0x4c,
0x5d, 0x4b, 0xd0, 0x60, 0x3b, 0xbb, 0x93, 0x57, 0x91, 0x10, 0xb4, 0x66, 0xe4, 0xab, 0xb0, 0xf6,
0x84, 0x92, 0x47, 0x49, 0x6a, 0x99, 0x53, 0xab, 0x0c, 0x4e, 0x10, 0x9b, 0x50, 0x99, 0x50, 0xdf,
0x27, 0x23, 0xaa, 0x05, 0xa7, 0x2e, 0x95, 0x73, 0x7c, 0xf4, 0xdb, 0x0b, 0xa3, 0x9f, 0x1f, 0x79,
0x39, 0xd4, 0x1a, 0x9c, 0xba, 0x14, 0x37, 0xa0, 0x44, 0xed, 0xe9, 0x44, 0x58, 0xc8, 0x9f, 0x11,
0x3f, 0xc5, 0x9e, 0x4e, 0xe6, 0xad, 0x14, 0x99, 0x5a, 0x68, 0x62, 0xc5, 0xa7, 0xde, 0x63, 0x53,
0xa7, 0x72, 0x81, 0x1b, 0xb8, 0xba, 0x60, 0xa0, 0x2f, 0xe4, 0xf3, 0x36, 0x22, 0x3d, 0xdc, 0x84,
0x12, 0x7d, 0x1a, 0x50, 0xdb, 0x37, 0x1d, 0x5b, 0x5e, 0xe1, 0x46, 0xde, 0x5a, 0x32, 0x8b, 0xd4,
0x32, 0xe6, 0x4d, 0xcc, 0xf4, 0xf0, 0x1d, 0x58, 0x71, 0xdc, 0xc0, 0x74, 0x6c, 0x5f, 0x2e, 0x6e,
0x4b, 0x3b, 0xe5, 0x9b, 0xaf, 0x2e, 0x4d, 0x84, 0xae, 0xe0, 0xa8, 0x11, 0x19, 0xb7, 0x01, 0xf9,
0xce, 0xd4, 0xd3, 0xa9, 0xa6, 0x3b, 0x06, 0xd5, 0x4c, 0x7b, 0xe8, 0xc8, 0x25, 0x6e, 0xe0, 0xf2,
0xe2, 0x40, 0x38, 0xb1, 0xe9, 0x18, 0xb4, 0x6d, 0x0f, 0x1d, 0xb5, 0xea, 0xa7, 0xda, 0xf8, 0x02,
0x14, 0xfc, 0x53, 0x3b, 0x20, 0x4f, 0xe5, 0x0a, 0xcf, 0x90, 0xb0, 0x55, 0xfb, 0x6b, 0x01, 0xd6,
0xce, 0x93, 0x62, 0xf7, 0x20, 0x3f, 0x64, 0xa3, 0x94, 0x33, 0xdf, 0x26, 0x06, 0x42, 0x27, 0x1d,
0xc4, 0xc2, 0x77, 0x0c, 0x62, 0x03, 0xca, 0x36, 0xf5, 0x03, 0x6a, 0x88, 0x8c, 0xc8, 0x9e, 0x33,
0xa7, 0x40, 0x28, 0x2d, 0xa6, 0x54, 0xee, 0x3b, 0xa5, 0xd4, 0xa7, 0xb0, 0x16, 0xbb, 0xa4, 0x79,
0xc4, 0x1e, 0x45, 0xb9, 0xb9, 0xfb, 0x3c, 0x4f, 0xea, 0x4a, 0xa4, 0xa7, 0x32, 0x35, 0xb5, 0x4a,
0x53, 0x6d, 0xdc, 0x02, 0x70, 0x6c, 0xea, 0x0c, 0x35, 0x83, 0xea, 0x96, 0x5c, 0x3c, 0x23, 0x4a,
0x5d, 0x46, 0x59, 0x88, 0x92, 0x23, 0x50, 0xdd, 0xc2, 0x1f, 0xce, 0x52, 0x6d, 0xe5, 0x8c, 0x4c,
0x39, 0x12, 0x8b, 0x6c, 0x21, 0xdb, 0x8e, 0xa1, 0xea, 0x51, 0x96, 0xf7, 0xd4, 0x08, 0x47, 0x56,
0xe2, 0x4e, 0xd4, 0x9f, 0x3b, 0x32, 0x35, 0x54, 0x13, 0x03, 0x5b, 0xf5, 0x92, 0x4d, 0xfc, 0x06,
0xc4, 0x80, 0xc6, 0xd3, 0x0a, 0xf8, 0x2e, 0x54, 0x89, 0xc0, 0x0e, 0x99, 0xd0, 0xad, 0x2f, 0xa1,
0x9a, 0x0e, 0x0f, 0xde, 0x84, 0xbc, 0x1f, 0x10, 0x2f, 0xe0, 0x59, 0x98, 0x57, 0x45, 0x03, 0x23,
0xc8, 0x52, 0xdb, 0xe0, 0xbb, 0x5c, 0x5e, 0x65, 0x7f, 0xf1, 0x4f, 0x66, 0x03, 0xce, 0xf2, 0x01,
0xbf, 0xbd, 0x38, 0xa3, 0x29, 0xcb, 0xf3, 0xe3, 0xde, 0xfa, 0x00, 0x56, 0x53, 0x03, 0x38, 0x6f,
0xd7, 0xb5, 0x5f, 0xc2, 0xcb, 0x4b, 0x4d, 0xe3, 0x4f, 0x61, 0x73, 0x6a, 0x9b, 0x76, 0x40, 0x3d,
0xd7, 0xa3, 0x2c, 0x63, 0x45, 0x57, 0xf2, 0x7f, 0x56, 0xce, 0xc8, 0xb9, 0xe3, 0x24, 0x5b, 0x58,
0x51, 0x37, 0xa6, 0x8b, 0xe0, 0xf5, 0x52, 0xf1, 0xbf, 0x2b, 0xe8, 0xd9, 0xb3, 0x67, 0xcf, 0x32,
0xb5, 0xdf, 0x15, 0x60, 0x73, 0xd9, 0x9a, 0x59, 0xba, 0x7c, 0x2f, 0x40, 0xc1, 0x9e, 0x4e, 0x4e,
0xa8, 0xc7, 0x83, 0x94, 0x57, 0xc3, 0x16, 0x6e, 0x40, 0xde, 0x22, 0x27, 0xd4, 0x92, 0x73, 0xdb,
0xd2, 0x4e, 0xf5, 0xe6, 0x3b, 0xe7, 0x5a, 0x95, 0xf5, 0x43, 0xa6, 0xa2, 0x0a, 0x4d, 0xfc, 0x11,
0xe4, 0xc2, 0x2d, 0x9a, 0x59, 0xb8, 0x7e, 0x3e, 0x0b, 0x6c, 0x2d, 0xa9, 0x5c, 0x0f, 0xbf, 0x02,
0x25, 0xf6, 0x2b, 0x72, 0xa3, 0xc0, 0x7d, 0x2e, 0x32, 0x80, 0xe5, 0x05, 0xde, 0x82, 0x22, 0x5f,
0x26, 0x06, 0x8d, 0x8e, 0xb6, 0xb8, 0xcd, 0x12, 0xcb, 0xa0, 0x43, 0x32, 0xb5, 0x02, 0xed, 0x31,
0xb1, 0xa6, 0x94, 0x27, 0x7c, 0x49, 0xad, 0x84, 0xe0, 0xcf, 0x19, 0x86, 0x2f, 0x43, 0x59, 0xac,
0x2a, 0xd3, 0x36, 0xe8, 0x53, 0xbe, 0x7b, 0xe6, 0x55, 0xb1, 0xd0, 0xda, 0x0c, 0x61, 0xdd, 0x3f,
0xf4, 0x1d, 0x3b, 0x4a, 0x4d, 0xde, 0x05, 0x03, 0x78, 0xf7, 0x1f, 0xcc, 0x6f, 0xdc, 0xaf, 0x2d,
0x1f, 0xde, 0x7c, 0x4e, 0xd5, 0xfe, 0x92, 0x81, 0x1c, 0xdf, 0x2f, 0xd6, 0xa0, 0x3c, 0xf8, 0xac,
0xa7, 0x68, 0xad, 0xee, 0xf1, 0xfe, 0xa1, 0x82, 0x24, 0x5c, 0x05, 0xe0, 0xc0, 0xfd, 0xc3, 0x6e,
0x63, 0x80, 0x32, 0x71, 0xbb, 0xdd, 0x19, 0xdc, 0xb9, 0x85, 0xb2, 0xb1, 0xc2, 0xb1, 0x00, 0x72,
0x49, 0xc2, 0xfb, 0x37, 0x51, 0x1e, 0x23, 0xa8, 0x08, 0x03, 0xed, 0x4f, 0x95, 0xd6, 0x9d, 0x5b,
0xa8, 0x90, 0x46, 0xde, 0xbf, 0x89, 0x56, 0xf0, 0x2a, 0x94, 0x38, 0xb2, 0xdf, 0xed, 0x1e, 0xa2,
0x62, 0x6c, 0xb3, 0x3f, 0x50, 0xdb, 0x9d, 0x03, 0x54, 0x8a, 0x6d, 0x1e, 0xa8, 0xdd, 0xe3, 0x1e,
0x82, 0xd8, 0xc2, 0x91, 0xd2, 0xef, 0x37, 0x0e, 0x14, 0x54, 0x8e, 0x19, 0xfb, 0x9f, 0x0d, 0x94,
0x3e, 0xaa, 0xa4, 0xdc, 0x7a, 0xff, 0x26, 0x5a, 0x8d, 0xbb, 0x50, 0x3a, 0xc7, 0x47, 0xa8, 0x8a,
0xd7, 0x61, 0x55, 0x74, 0x11, 0x39, 0xb1, 0x36, 0x07, 0xdd, 0xb9, 0x85, 0xd0, 0xcc, 0x11, 0x61,
0x65, 0x3d, 0x05, 0xdc, 0xb9, 0x85, 0x70, 0xad, 0x09, 0x79, 0x9e, 0x5d, 0x18, 0x43, 0xf5, 0xb0,
0xb1, 0xaf, 0x1c, 0x6a, 0xdd, 0xde, 0xa0, 0xdd, 0xed, 0x34, 0x0e, 0x91, 0x34, 0xc3, 0x54, 0xe5,
0x67, 0xc7, 0x6d, 0x55, 0x69, 0xa1, 0x4c, 0x12, 0xeb, 0x29, 0x8d, 0x81, 0xd2, 0x42, 0xd9, 0x9a,
0x0e, 0x9b, 0xcb, 0xf6, 0xc9, 0xa5, 0x2b, 0x23, 0x31, 0xc5, 0x99, 0x33, 0xa6, 0x98, 0xdb, 0x5a,
0x98, 0xe2, 0x7f, 0x65, 0x60, 0x63, 0xc9, 0x59, 0xb1, 0xb4, 0x93, 0x1f, 0x43, 0x5e, 0xa4, 0xa8,
0x38, 0x3d, 0xaf, 0x2d, 0x3d, 0x74, 0x78, 0xc2, 0x2e, 0x9c, 0xa0, 0x5c, 0x2f, 0x59, 0x41, 0x64,
0xcf, 0xa8, 0x20, 0x98, 0x89, 0x85, 0x3d, 0xfd, 0x17, 0x0b, 0x7b, 0xba, 0x38, 0xf6, 0xee, 0x9c,
0xe7, 0xd8, 0xe3, 0xd8, 0xb7, 0xdb, 0xdb, 0xf3, 0x4b, 0xf6, 0xf6, 0x7b, 0xb0, 0xbe, 0x60, 0xe8,
0xdc, 0x7b, 0xec, 0xaf, 0x24, 0x90, 0xcf, 0x0a, 0xce, 0x73, 0x76, 0xba, 0x4c, 0x6a, 0xa7, 0xbb,
0x37, 0x1f, 0xc1, 0x2b, 0x67, 0x4f, 0xc2, 0xc2, 0x5c, 0x7f, 0x25, 0xc1, 0x85, 0xe5, 0x95, 0xe2,
0x52, 0x1f, 0x3e, 0x82, 0xc2, 0x84, 0x06, 0x63, 0x27, 0xaa, 0x96, 0xde, 0x5e, 0x72, 0x06, 0x33,
0xf1, 0xfc, 0x64, 0x87, 0x5a, 0xc9, 0x43, 0x3c, 0x7b, 0x56, 0xb9, 0x27, 0xbc, 0x59, 0xf0, 0xf4,
0xd7, 0x19, 0x78, 0x79, 0xa9, 0xf1, 0xa5, 0x8e, 0xbe, 0x06, 0x60, 0xda, 0xee, 0x34, 0x10, 0x15,
0x91, 0xd8, 0x60, 0x4b, 0x1c, 0xe1, 0x9b, 0x17, 0xdb, 0x3c, 0xa7, 0x41, 0x2c, 0xcf, 0x72, 0x39,
0x08, 0x88, 0x13, 0xee, 0xce, 0x1c, 0xcd, 0x71, 0x47, 0x5f, 0x3f, 0x63, 0xa4, 0x0b, 0x89, 0xf9,
0x1e, 0x20, 0xdd, 0x32, 0xa9, 0x1d, 0x68, 0x7e, 0xe0, 0x51, 0x32, 0x31, 0xed, 0x11, 0x3f, 0x41,
0x8a, 0x7b, 0xf9, 0x21, 0xb1, 0x7c, 0xaa, 0xae, 0x09, 0x71, 0x3f, 0x92, 0x32, 0x0d, 0x9e, 0x40,
0x5e, 0x42, 0xa3, 0x90, 0xd2, 0x10, 0xe2, 0x58, 0xa3, 0xf6, 0xdb, 0x12, 0x94, 0x13, 0x75, 0x35,
0xbe, 0x02, 0x95, 0x87, 0xe4, 0x31, 0xd1, 0xa2, 0xbb, 0x92, 0x88, 0x44, 0x99, 0x61, 0xbd, 0xf0,
0xbe, 0xf4, 0x1e, 0x6c, 0x72, 0x8a, 0x33, 0x0d, 0xa8, 0xa7, 0xe9, 0x16, 0xf1, 0x7d, 0x1e, 0xb4,
0x22, 0xa7, 0x62, 0x26, 0xeb, 0x32, 0x51, 0x33, 0x92, 0xe0, 0xdb, 0xb0, 0xc1, 0x35, 0x26, 0x53,
0x2b, 0x30, 0x5d, 0x8b, 0x6a, 0xec, 0xf6, 0xe6, 0xf3, 0x93, 0x24, 0xf6, 0x6c, 0x9d, 0x31, 0x8e,
0x42, 0x02, 0xf3, 0xc8, 0xc7, 0x2d, 0x78, 0x8d, 0xab, 0x8d, 0xa8, 0x4d, 0x3d, 0x12, 0x50, 0x8d,
0x7e, 0x31, 0x25, 0x96, 0xaf, 0x11, 0xdb, 0xd0, 0xc6, 0xc4, 0x1f, 0xcb, 0x9b, 0xcc, 0xc0, 0x7e,
0x46, 0x96, 0xd4, 0x4b, 0x8c, 0x78, 0x10, 0xf2, 0x14, 0x4e, 0x6b, 0xd8, 0xc6, 0xc7, 0xc4, 0x1f,
0xe3, 0x3d, 0xb8, 0xc0, 0xad, 0xf8, 0x81, 0x67, 0xda, 0x23, 0x4d, 0x1f, 0x53, 0xfd, 0x91, 0x36,
0x0d, 0x86, 0x77, 0xe5, 0x57, 0x92, 0xfd, 0x73, 0x0f, 0xfb, 0x9c, 0xd3, 0x64, 0x94, 0xe3, 0x60,
0x78, 0x17, 0xf7, 0xa1, 0xc2, 0x26, 0x63, 0x62, 0x7e, 0x49, 0xb5, 0xa1, 0xe3, 0xf1, 0xa3, 0xb1,
0xba, 0x64, 0x6b, 0x4a, 0x44, 0xb0, 0xde, 0x0d, 0x15, 0x8e, 0x1c, 0x83, 0xee, 0xe5, 0xfb, 0x3d,
0x45, 0x69, 0xa9, 0xe5, 0xc8, 0xca, 0x7d, 0xc7, 0x63, 0x09, 0x35, 0x72, 0xe2, 0x00, 0x97, 0x45,
0x42, 0x8d, 0x9c, 0x28, 0xbc, 0xb7, 0x61, 0x43, 0xd7, 0xc5, 0x98, 0x4d, 0x5d, 0x0b, 0xef, 0x58,
0xbe, 0x8c, 0x52, 0xc1, 0xd2, 0xf5, 0x03, 0x41, 0x08, 0x73, 0xdc, 0xc7, 0x1f, 0xc2, 0xcb, 0xb3,
0x60, 0x25, 0x15, 0xd7, 0x17, 0x46, 0x39, 0xaf, 0x7a, 0x1b, 0x36, 0xdc, 0xd3, 0x45, 0x45, 0x9c,
0xea, 0xd1, 0x3d, 0x9d, 0x57, 0xfb, 0x00, 0x36, 0xdd, 0xb1, 0xbb, 0xa8, 0x77, 0x3d, 0xa9, 0x87,
0xdd, 0xb1, 0x3b, 0xaf, 0xf8, 0x16, 0xbf, 0x70, 0x7b, 0x54, 0x27, 0x01, 0x35, 0xe4, 0x8b, 0x49,
0x7a, 0x42, 0x80, 0x77, 0x01, 0xe9, 0xba, 0x46, 0x6d, 0x72, 0x62, 0x51, 0x8d, 0x78, 0xd4, 0x26,
0xbe, 0x7c, 0x39, 0x49, 0xae, 0xea, 0xba, 0xc2, 0xa5, 0x0d, 0x2e, 0xc4, 0xd7, 0x61, 0xdd, 0x39,
0x79, 0xa8, 0x8b, 0x94, 0xd4, 0x5c, 0x8f, 0x0e, 0xcd, 0xa7, 0xf2, 0x9b, 0x3c, 0xbe, 0x6b, 0x4c,
0xc0, 0x13, 0xb2, 0xc7, 0x61, 0x7c, 0x0d, 0x90, 0xee, 0x8f, 0x89, 0xe7, 0xf2, 0x3d, 0xd9, 0x77,
0x89, 0x4e, 0xe5, 0xb7, 0x04, 0x55, 0xe0, 0x9d, 0x08, 0x66, 0x4b, 0xc2, 0x7f, 0x62, 0x0e, 0x83,
0xc8, 0xe2, 0x55, 0xb1, 0x24, 0x38, 0x16, 0x5a, 0xdb, 0x01, 0xc4, 0x42, 0x91, 0xea, 0x78, 0x87,
0xd3, 0xaa, 0xee, 0xd8, 0x4d, 0xf6, 0xfb, 0x06, 0xac, 0x32, 0xe6, 0xac, 0xd3, 0x6b, 0xa2, 0x20,
0x73, 0xc7, 0x89, 0x1e, 0x6f, 0xc1, 0x05, 0x46, 0x9a, 0xd0, 0x80, 0x18, 0x24, 0x20, 0x09, 0xf6,
0xbb, 0x9c, 0xcd, 0xe2, 0x7e, 0x14, 0x0a, 0x53, 0x7e, 0x7a, 0xd3, 0x93, 0xd3, 0x38, 0xb3, 0x6e,
0x08, 0x3f, 0x19, 0x16, 0xe5, 0xd6, 0xf7, 0x56, 0x74, 0xd7, 0xf6, 0xa0, 0x92, 0x4c, 0x7c, 0x5c,
0x02, 0x91, 0xfa, 0x48, 0x62, 0x55, 0x50, 0xb3, 0xdb, 0x62, 0xf5, 0xcb, 0xe7, 0x0a, 0xca, 0xb0,
0x3a, 0xea, 0xb0, 0x3d, 0x50, 0x34, 0xf5, 0xb8, 0x33, 0x68, 0x1f, 0x29, 0x28, 0x9b, 0x28, 0xd8,
0x1f, 0xe4, 0x8a, 0x6f, 0xa3, 0xab, 0xb5, 0xaf, 0x33, 0x50, 0x4d, 0xdf, 0xc0, 0xf0, 0x8f, 0xe0,
0x62, 0xf4, 0x5c, 0xe2, 0xd3, 0x40, 0x7b, 0x62, 0x7a, 0x7c, 0x45, 0x4e, 0x88, 0x38, 0x1d, 0xe3,
0x9c, 0xd8, 0x0c, 0x59, 0x7d, 0x1a, 0x7c, 0x62, 0x7a, 0x6c, 0xbd, 0x4d, 0x48, 0x80, 0x0f, 0xe1,
0xb2, 0xed, 0x68, 0x7e, 0x40, 0x6c, 0x83, 0x78, 0x86, 0x36, 0x7b, 0xa8, 0xd2, 0x88, 0xae, 0x53,
0xdf, 0x77, 0xc4, 0x49, 0x18, 0x5b, 0x79, 0xd5, 0x76, 0xfa, 0x21, 0x79, 0x76, 0x44, 0x34, 0x42,
0xea, 0x5c, 0xfe, 0x66, 0xcf, 0xca, 0xdf, 0x57, 0xa0, 0x34, 0x21, 0xae, 0x46, 0xed, 0xc0, 0x3b,
0xe5, 0x75, 0x77, 0x51, 0x2d, 0x4e, 0x88, 0xab, 0xb0, 0xf6, 0x0b, 0xb9, 0xfe, 0x3c, 0xc8, 0x15,
0x8b, 0xa8, 0xf4, 0x20, 0x57, 0x2c, 0x21, 0xa8, 0xfd, 0x33, 0x0b, 0x95, 0x64, 0x1d, 0xce, 0xae,
0x35, 0x3a, 0x3f, 0xb2, 0x24, 0xbe, 0xa9, 0xbd, 0xf1, 0x8d, 0x55, 0x7b, 0xbd, 0xc9, 0xce, 0xb2,
0xbd, 0x82, 0xa8, 0x8e, 0x55, 0xa1, 0xc9, 0xea, 0x08, 0x96, 0x6c, 0x54, 0x54, 0x23, 0x45, 0x35,
0x6c, 0xe1, 0x03, 0x28, 0x3c, 0xf4, 0xb9, 0xed, 0x02, 0xb7, 0xfd, 0xe6, 0x37, 0xdb, 0x7e, 0xd0,
0xe7, 0xc6, 0x4b, 0x0f, 0xfa, 0x5a, 0xa7, 0xab, 0x1e, 0x35, 0x0e, 0xd5, 0x50, 0x1d, 0x5f, 0x82,
0x9c, 0x45, 0xbe, 0x3c, 0x4d, 0x9f, 0x7a, 0x1c, 0x3a, 0xef, 0x24, 0x5c, 0x82, 0xdc, 0x13, 0x4a,
0x1e, 0xa5, 0xcf, 0x1a, 0x0e, 0x7d, 0x8f, 0x8b, 0x61, 0x17, 0xf2, 0x3c, 0x5e, 0x18, 0x20, 0x8c,
0x18, 0x7a, 0x09, 0x17, 0x21, 0xd7, 0xec, 0xaa, 0x6c, 0x41, 0x20, 0xa8, 0x08, 0x54, 0xeb, 0xb5,
0x95, 0xa6, 0x82, 0x32, 0xb5, 0xdb, 0x50, 0x10, 0x41, 0x60, 0x8b, 0x25, 0x0e, 0x03, 0x7a, 0x29,
0x6c, 0x86, 0x36, 0xa4, 0x48, 0x7a, 0x7c, 0xb4, 0xaf, 0xa8, 0x28, 0x93, 0x9e, 0xea, 0x1c, 0xca,
0xd7, 0x7c, 0xa8, 0x24, 0x0b, 0xf1, 0x17, 0x73, 0xc9, 0xfe, 0x9b, 0x04, 0xe5, 0x44, 0x61, 0xcd,
0x2a, 0x22, 0x62, 0x59, 0xce, 0x13, 0x8d, 0x58, 0x26, 0xf1, 0xc3, 0xd4, 0x00, 0x0e, 0x35, 0x18,
0x72, 0xde, 0xa9, 0x7b, 0x41, 0x4b, 0x24, 0x8f, 0x0a, 0xb5, 0x3f, 0x4a, 0x80, 0xe6, 0x2b, 0xdb,
0x39, 0x37, 0xa5, 0x1f, 0xd2, 0xcd, 0xda, 0x1f, 0x24, 0xa8, 0xa6, 0xcb, 0xd9, 0x39, 0xf7, 0xae,
0xfc, 0xa0, 0xee, 0xfd, 0x23, 0x03, 0xab, 0xa9, 0x22, 0xf6, 0xbc, 0xde, 0x7d, 0x01, 0xeb, 0xa6,
0x41, 0x27, 0xae, 0x13, 0x50, 0x5b, 0x3f, 0xd5, 0x2c, 0xfa, 0x98, 0x5a, 0x72, 0x8d, 0x6f, 0x1a,
0xbb, 0xdf, 0x5c, 0x26, 0xd7, 0xdb, 0x33, 0xbd, 0x43, 0xa6, 0xb6, 0xb7, 0xd1, 0x6e, 0x29, 0x47,
0xbd, 0xee, 0x40, 0xe9, 0x34, 0x3f, 0xd3, 0x8e, 0x3b, 0x3f, 0xed, 0x74, 0x3f, 0xe9, 0xa8, 0xc8,
0x9c, 0xa3, 0x7d, 0x8f, 0xcb, 0xbe, 0x07, 0x68, 0xde, 0x29, 0x7c, 0x11, 0x96, 0xb9, 0x85, 0x5e,
0xc2, 0x1b, 0xb0, 0xd6, 0xe9, 0x6a, 0xfd, 0x76, 0x4b, 0xd1, 0x94, 0xfb, 0xf7, 0x95, 0xe6, 0xa0,
0x2f, 0x1e, 0x3e, 0x62, 0xf6, 0x20, 0xb5, 0xc0, 0x6b, 0xbf, 0xcf, 0xc2, 0xc6, 0x12, 0x4f, 0x70,
0x23, 0xbc, 0xb2, 0x88, 0x5b, 0xd4, 0x8d, 0xf3, 0x78, 0x5f, 0x67, 0x35, 0x43, 0x8f, 0x78, 0x41,
0x78, 0xc3, 0xb9, 0x06, 0x2c, 0x4a, 0x76, 0x60, 0x0e, 0x4d, 0xea, 0x85, 0xef, 0x44, 0xe2, 0x1e,
0xb3, 0x36, 0xc3, 0xc5, 0x53, 0xd1, 0xbb, 0x80, 0x5d, 0xc7, 0x37, 0x03, 0xf3, 0x31, 0xd5, 0x4c,
0x3b, 0x7a, 0x54, 0x62, 0xf7, 0x9a, 0x9c, 0x8a, 0x22, 0x49, 0xdb, 0x0e, 0x62, 0xb6, 0x4d, 0x47,
0x64, 0x8e, 0xcd, 0x36, 0xf3, 0xac, 0x8a, 0x22, 0x49, 0xcc, 0xbe, 0x02, 0x15, 0xc3, 0x99, 0xb2,
0x62, 0x4f, 0xf0, 0xd8, 0xd9, 0x21, 0xa9, 0x65, 0x81, 0xc5, 0x94, 0xb0, 0x8c, 0x9f, 0xbd, 0x66,
0x55, 0xd4, 0xb2, 0xc0, 0x04, 0xe5, 0x2a, 0xac, 0x91, 0xd1, 0xc8, 0x63, 0xc6, 0x23, 0x43, 0xe2,
0x62, 0x52, 0x8d, 0x61, 0x4e, 0xdc, 0x7a, 0x00, 0xc5, 0x28, 0x0e, 0xec, 0xa8, 0x66, 0x91, 0xd0,
0x5c, 0x71, 0xdb, 0xce, 0xec, 0x94, 0xd4, 0xa2, 0x1d, 0x09, 0xaf, 0x40, 0xc5, 0xf4, 0xb5, 0xd9,
0xe3, 0x7c, 0x66, 0x3b, 0xb3, 0x53, 0x54, 0xcb, 0xa6, 0x1f, 0x3f, 0x6c, 0xd6, 0xbe, 0xca, 0x40,
0x35, 0xfd, 0x71, 0x01, 0xb7, 0xa0, 0x68, 0x39, 0x3a, 0xe1, 0xa9, 0x25, 0xbe, 0x6c, 0xed, 0x3c,
0xe7, 0x7b, 0x44, 0xfd, 0x30, 0xe4, 0xab, 0xb1, 0xe6, 0xd6, 0xdf, 0x25, 0x28, 0x46, 0x30, 0xbe,
0x00, 0x39, 0x97, 0x04, 0x63, 0x6e, 0x2e, 0xbf, 0x9f, 0x41, 0x92, 0xca, 0xdb, 0x0c, 0xf7, 0x5d,
0x62, 0xf3, 0x14, 0x08, 0x71, 0xd6, 0x66, 0xf3, 0x6a, 0x51, 0x62, 0xf0, 0x5b, 0x8f, 0x33, 0x99,
0x50, 0x3b, 0xf0, 0xa3, 0x79, 0x0d, 0xf1, 0x66, 0x08, 0xe3, 0x77, 0x60, 0x3d, 0xf0, 0x88, 0x69,
0xa5, 0xb8, 0x39, 0xce, 0x45, 0x91, 0x20, 0x26, 0xef, 0xc1, 0xa5, 0xc8, 0xae, 0x41, 0x03, 0xa2,
0x8f, 0xa9, 0x31, 0x53, 0x2a, 0xf0, 0xd7, 0x8d, 0x8b, 0x21, 0xa1, 0x15, 0xca, 0x23, 0xdd, 0xda,
0xd7, 0x12, 0xac, 0x47, 0xf7, 0x34, 0x23, 0x0e, 0xd6, 0x11, 0x00, 0xb1, 0x6d, 0x27, 0x48, 0x86,
0x6b, 0x31, 0x95, 0x17, 0xf4, 0xea, 0x8d, 0x58, 0x49, 0x4d, 0x18, 0xd8, 0x9a, 0x00, 0xcc, 0x24,
0x67, 0x86, 0xed, 0x32, 0x94, 0xc3, 0x2f, 0x47, 0xfc, 0xf3, 0xa3, 0xb8, 0xd9, 0x83, 0x80, 0xd8,
0x85, 0x0e, 0x6f, 0x42, 0xfe, 0x84, 0x8e, 0x4c, 0x3b, 0x7c, 0x0f, 0x16, 0x8d, 0xe8, 0xfd, 0x25,
0x17, 0xbf, 0xbf, 0xec, 0xff, 0x46, 0x82, 0x0d, 0xdd, 0x99, 0xcc, 0xfb, 0xbb, 0x8f, 0xe6, 0x9e,
0x17, 0xfc, 0x8f, 0xa5, 0xcf, 0x3f, 0x1a, 0x99, 0xc1, 0x78, 0x7a, 0x52, 0xd7, 0x9d, 0xc9, 0xee,
0xc8, 0xb1, 0x88, 0x3d, 0x9a, 0x7d, 0x3f, 0xe5, 0x7f, 0xf4, 0x1b, 0x23, 0x6a, 0xdf, 0x18, 0x39,
0x89, 0xaf, 0xa9, 0xf7, 0x66, 0x7f, 0xff, 0x27, 0x49, 0x7f, 0xca, 0x64, 0x0f, 0x7a, 0xfb, 0x7f,
0xce, 0x6c, 0x1d, 0x88, 0xee, 0x7a, 0x51, 0x78, 0x54, 0x3a, 0xb4, 0xa8, 0xce, 0x86, 0xfc, 0xff,
0x00, 0x00, 0x00, 0xff, 0xff, 0x3e, 0xe8, 0xef, 0xc4, 0x9b, 0x1d, 0x00, 0x00,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xdd, 0x6e, 0x1b, 0xc7,
0xf5, 0xcf, 0xf2, 0x4b, 0xe4, 0x21, 0x45, 0x8d, 0x46, 0x8a, 0xbd, 0x56, 0x3e, 0x2c, 0x33, 0x1f,
0x96, 0x9d, 0x84, 0x0a, 0x14, 0xdb, 0x71, 0xe4, 0x3f, 0x92, 0x3f, 0x45, 0xae, 0x15, 0xba, 0x12,
0xc9, 0x2e, 0xa9, 0xe6, 0x03, 0x28, 0x16, 0xa3, 0xdd, 0x21, 0xb9, 0xf6, 0x72, 0x77, 0xb3, 0xbb,
0xb4, 0xad, 0xa0, 0x17, 0x06, 0x7a, 0xd5, 0xbb, 0xa2, 0x57, 0x45, 0x51, 0xf4, 0xa2, 0x37, 0x01,
0xfa, 0x00, 0x05, 0x7a, 0xd7, 0x27, 0x28, 0x90, 0x37, 0x28, 0xda, 0x02, 0xed, 0x23, 0xf4, 0xb2,
0x98, 0x99, 0xdd, 0xe5, 0x2e, 0x49, 0xc5, 0x4a, 0x80, 0x24, 0x57, 0xe4, 0xfc, 0xce, 0xef, 0x9c,
0x39, 0x73, 0xe6, 0xcc, 0xcc, 0x99, 0x59, 0xd8, 0x1e, 0x39, 0xce, 0xc8, 0xa2, 0xbb, 0xae, 0xe7,
0x04, 0xce, 0xe9, 0x74, 0xb8, 0x6b, 0x50, 0x5f, 0xf7, 0x4c, 0x37, 0x70, 0xbc, 0x3a, 0xc7, 0xf0,
0x9a, 0x60, 0xd4, 0x23, 0x46, 0xed, 0x18, 0xd6, 0xef, 0x9b, 0x16, 0x6d, 0xc5, 0xc4, 0x3e, 0x0d,
0xf0, 0x5d, 0xc8, 0x0d, 0x4d, 0x8b, 0xca, 0xd2, 0x76, 0x76, 0xa7, 0xbc, 0xf7, 0x7a, 0x7d, 0x4e,
0xa9, 0x9e, 0xd6, 0xe8, 0x31, 0x58, 0xe5, 0x1a, 0xb5, 0x7f, 0xe5, 0x60, 0x63, 0x89, 0x14, 0x63,
0xc8, 0xd9, 0x64, 0xc2, 0x2c, 0x4a, 0x3b, 0x25, 0x95, 0xff, 0xc7, 0x32, 0xac, 0xb8, 0x44, 0x7f,
0x44, 0x46, 0x54, 0xce, 0x70, 0x38, 0x6a, 0xe2, 0x57, 0x01, 0x0c, 0xea, 0x52, 0xdb, 0xa0, 0xb6,
0x7e, 0x26, 0x67, 0xb7, 0xb3, 0x3b, 0x25, 0x35, 0x81, 0xe0, 0xb7, 0x60, 0xdd, 0x9d, 0x9e, 0x5a,
0xa6, 0xae, 0x25, 0x68, 0xb0, 0x9d, 0xdd, 0xc9, 0xab, 0x48, 0x08, 0x5a, 0x33, 0xf2, 0x75, 0x58,
0x7b, 0x42, 0xc9, 0xa3, 0x24, 0xb5, 0xcc, 0xa9, 0x55, 0x06, 0x27, 0x88, 0x4d, 0xa8, 0x4c, 0xa8,
0xef, 0x93, 0x11, 0xd5, 0x82, 0x33, 0x97, 0xca, 0x39, 0x3e, 0xfa, 0xed, 0x85, 0xd1, 0xcf, 0x8f,
0xbc, 0x1c, 0x6a, 0x0d, 0xce, 0x5c, 0x8a, 0x1b, 0x50, 0xa2, 0xf6, 0x74, 0x22, 0x2c, 0xe4, 0xcf,
0x89, 0x9f, 0x62, 0x4f, 0x27, 0xf3, 0x56, 0x8a, 0x4c, 0x2d, 0x34, 0xb1, 0xe2, 0x53, 0xef, 0xb1,
0xa9, 0x53, 0xb9, 0xc0, 0x0d, 0x5c, 0x5f, 0x30, 0xd0, 0x17, 0xf2, 0x79, 0x1b, 0x91, 0x1e, 0x6e,
0x42, 0x89, 0x3e, 0x0d, 0xa8, 0xed, 0x9b, 0x8e, 0x2d, 0xaf, 0x70, 0x23, 0x6f, 0x2c, 0x99, 0x45,
0x6a, 0x19, 0xf3, 0x26, 0x66, 0x7a, 0xf8, 0x0e, 0xac, 0x38, 0x6e, 0x60, 0x3a, 0xb6, 0x2f, 0x17,
0xb7, 0xa5, 0x9d, 0xf2, 0xde, 0xcb, 0x4b, 0x13, 0xa1, 0x2b, 0x38, 0x6a, 0x44, 0xc6, 0x6d, 0x40,
0xbe, 0x33, 0xf5, 0x74, 0xaa, 0xe9, 0x8e, 0x41, 0x35, 0xd3, 0x1e, 0x3a, 0x72, 0x89, 0x1b, 0xb8,
0xba, 0x38, 0x10, 0x4e, 0x6c, 0x3a, 0x06, 0x6d, 0xdb, 0x43, 0x47, 0xad, 0xfa, 0xa9, 0x36, 0xbe,
0x04, 0x05, 0xff, 0xcc, 0x0e, 0xc8, 0x53, 0xb9, 0xc2, 0x33, 0x24, 0x6c, 0xd5, 0xfe, 0x52, 0x80,
0xb5, 0x8b, 0xa4, 0xd8, 0x3d, 0xc8, 0x0f, 0xd9, 0x28, 0xe5, 0xcc, 0xb7, 0x89, 0x81, 0xd0, 0x49,
0x07, 0xb1, 0xf0, 0x1d, 0x83, 0xd8, 0x80, 0xb2, 0x4d, 0xfd, 0x80, 0x1a, 0x22, 0x23, 0xb2, 0x17,
0xcc, 0x29, 0x10, 0x4a, 0x8b, 0x29, 0x95, 0xfb, 0x4e, 0x29, 0xf5, 0x29, 0xac, 0xc5, 0x2e, 0x69,
0x1e, 0xb1, 0x47, 0x51, 0x6e, 0xee, 0x3e, 0xcf, 0x93, 0xba, 0x12, 0xe9, 0xa9, 0x4c, 0x4d, 0xad,
0xd2, 0x54, 0x1b, 0xb7, 0x00, 0x1c, 0x9b, 0x3a, 0x43, 0xcd, 0xa0, 0xba, 0x25, 0x17, 0xcf, 0x89,
0x52, 0x97, 0x51, 0x16, 0xa2, 0xe4, 0x08, 0x54, 0xb7, 0xf0, 0x07, 0xb3, 0x54, 0x5b, 0x39, 0x27,
0x53, 0x8e, 0xc5, 0x22, 0x5b, 0xc8, 0xb6, 0x13, 0xa8, 0x7a, 0x94, 0xe5, 0x3d, 0x35, 0xc2, 0x91,
0x95, 0xb8, 0x13, 0xf5, 0xe7, 0x8e, 0x4c, 0x0d, 0xd5, 0xc4, 0xc0, 0x56, 0xbd, 0x64, 0x13, 0xbf,
0x06, 0x31, 0xa0, 0xf1, 0xb4, 0x02, 0xbe, 0x0b, 0x55, 0x22, 0xb0, 0x43, 0x26, 0x74, 0xeb, 0x4b,
0xa8, 0xa6, 0xc3, 0x83, 0x37, 0x21, 0xef, 0x07, 0xc4, 0x0b, 0x78, 0x16, 0xe6, 0x55, 0xd1, 0xc0,
0x08, 0xb2, 0xd4, 0x36, 0xf8, 0x2e, 0x97, 0x57, 0xd9, 0x5f, 0xfc, 0xff, 0xb3, 0x01, 0x67, 0xf9,
0x80, 0xdf, 0x5c, 0x9c, 0xd1, 0x94, 0xe5, 0xf9, 0x71, 0x6f, 0xbd, 0x0f, 0xab, 0xa9, 0x01, 0x5c,
0xb4, 0xeb, 0xda, 0x2f, 0xe0, 0xc5, 0xa5, 0xa6, 0xf1, 0xa7, 0xb0, 0x39, 0xb5, 0x4d, 0x3b, 0xa0,
0x9e, 0xeb, 0x51, 0x96, 0xb1, 0xa2, 0x2b, 0xf9, 0xdf, 0x2b, 0xe7, 0xe4, 0xdc, 0x49, 0x92, 0x2d,
0xac, 0xa8, 0x1b, 0xd3, 0x45, 0xf0, 0x66, 0xa9, 0xf8, 0x9f, 0x15, 0xf4, 0xec, 0xd9, 0xb3, 0x67,
0x99, 0xda, 0x6f, 0x0b, 0xb0, 0xb9, 0x6c, 0xcd, 0x2c, 0x5d, 0xbe, 0x97, 0xa0, 0x60, 0x4f, 0x27,
0xa7, 0xd4, 0xe3, 0x41, 0xca, 0xab, 0x61, 0x0b, 0x37, 0x20, 0x6f, 0x91, 0x53, 0x6a, 0xc9, 0xb9,
0x6d, 0x69, 0xa7, 0xba, 0xf7, 0xd6, 0x85, 0x56, 0x65, 0xfd, 0x88, 0xa9, 0xa8, 0x42, 0x13, 0x7f,
0x08, 0xb9, 0x70, 0x8b, 0x66, 0x16, 0x6e, 0x5e, 0xcc, 0x02, 0x5b, 0x4b, 0x2a, 0xd7, 0xc3, 0x2f,
0x41, 0x89, 0xfd, 0x8a, 0xdc, 0x28, 0x70, 0x9f, 0x8b, 0x0c, 0x60, 0x79, 0x81, 0xb7, 0xa0, 0xc8,
0x97, 0x89, 0x41, 0xa3, 0xa3, 0x2d, 0x6e, 0xb3, 0xc4, 0x32, 0xe8, 0x90, 0x4c, 0xad, 0x40, 0x7b,
0x4c, 0xac, 0x29, 0xe5, 0x09, 0x5f, 0x52, 0x2b, 0x21, 0xf8, 0x33, 0x86, 0xe1, 0xab, 0x50, 0x16,
0xab, 0xca, 0xb4, 0x0d, 0xfa, 0x94, 0xef, 0x9e, 0x79, 0x55, 0x2c, 0xb4, 0x36, 0x43, 0x58, 0xf7,
0x0f, 0x7d, 0xc7, 0x8e, 0x52, 0x93, 0x77, 0xc1, 0x00, 0xde, 0xfd, 0xfb, 0xf3, 0x1b, 0xf7, 0x2b,
0xcb, 0x87, 0x37, 0x9f, 0x53, 0xb5, 0x3f, 0x67, 0x20, 0xc7, 0xf7, 0x8b, 0x35, 0x28, 0x0f, 0x3e,
0xeb, 0x29, 0x5a, 0xab, 0x7b, 0x72, 0x70, 0xa4, 0x20, 0x09, 0x57, 0x01, 0x38, 0x70, 0xff, 0xa8,
0xdb, 0x18, 0xa0, 0x4c, 0xdc, 0x6e, 0x77, 0x06, 0x77, 0x6e, 0xa1, 0x6c, 0xac, 0x70, 0x22, 0x80,
0x5c, 0x92, 0xf0, 0xde, 0x1e, 0xca, 0x63, 0x04, 0x15, 0x61, 0xa0, 0xfd, 0xa9, 0xd2, 0xba, 0x73,
0x0b, 0x15, 0xd2, 0xc8, 0x7b, 0x7b, 0x68, 0x05, 0xaf, 0x42, 0x89, 0x23, 0x07, 0xdd, 0xee, 0x11,
0x2a, 0xc6, 0x36, 0xfb, 0x03, 0xb5, 0xdd, 0x39, 0x44, 0xa5, 0xd8, 0xe6, 0xa1, 0xda, 0x3d, 0xe9,
0x21, 0x88, 0x2d, 0x1c, 0x2b, 0xfd, 0x7e, 0xe3, 0x50, 0x41, 0xe5, 0x98, 0x71, 0xf0, 0xd9, 0x40,
0xe9, 0xa3, 0x4a, 0xca, 0xad, 0xf7, 0xf6, 0xd0, 0x6a, 0xdc, 0x85, 0xd2, 0x39, 0x39, 0x46, 0x55,
0xbc, 0x0e, 0xab, 0xa2, 0x8b, 0xc8, 0x89, 0xb5, 0x39, 0xe8, 0xce, 0x2d, 0x84, 0x66, 0x8e, 0x08,
0x2b, 0xeb, 0x29, 0xe0, 0xce, 0x2d, 0x84, 0x6b, 0x4d, 0xc8, 0xf3, 0xec, 0xc2, 0x18, 0xaa, 0x47,
0x8d, 0x03, 0xe5, 0x48, 0xeb, 0xf6, 0x06, 0xed, 0x6e, 0xa7, 0x71, 0x84, 0xa4, 0x19, 0xa6, 0x2a,
0x3f, 0x3d, 0x69, 0xab, 0x4a, 0x0b, 0x65, 0x92, 0x58, 0x4f, 0x69, 0x0c, 0x94, 0x16, 0xca, 0xd6,
0x74, 0xd8, 0x5c, 0xb6, 0x4f, 0x2e, 0x5d, 0x19, 0x89, 0x29, 0xce, 0x9c, 0x33, 0xc5, 0xdc, 0xd6,
0xc2, 0x14, 0xff, 0x33, 0x03, 0x1b, 0x4b, 0xce, 0x8a, 0xa5, 0x9d, 0x7c, 0x04, 0x79, 0x91, 0xa2,
0xe2, 0xf4, 0xbc, 0xb1, 0xf4, 0xd0, 0xe1, 0x09, 0xbb, 0x70, 0x82, 0x72, 0xbd, 0x64, 0x05, 0x91,
0x3d, 0xa7, 0x82, 0x60, 0x26, 0x16, 0xf6, 0xf4, 0x9f, 0x2f, 0xec, 0xe9, 0xe2, 0xd8, 0xbb, 0x73,
0x91, 0x63, 0x8f, 0x63, 0xdf, 0x6e, 0x6f, 0xcf, 0x2f, 0xd9, 0xdb, 0xef, 0xc1, 0xfa, 0x82, 0xa1,
0x0b, 0xef, 0xb1, 0xbf, 0x94, 0x40, 0x3e, 0x2f, 0x38, 0xcf, 0xd9, 0xe9, 0x32, 0xa9, 0x9d, 0xee,
0xde, 0x7c, 0x04, 0xaf, 0x9d, 0x3f, 0x09, 0x0b, 0x73, 0xfd, 0x95, 0x04, 0x97, 0x96, 0x57, 0x8a,
0x4b, 0x7d, 0xf8, 0x10, 0x0a, 0x13, 0x1a, 0x8c, 0x9d, 0xa8, 0x5a, 0x7a, 0x73, 0xc9, 0x19, 0xcc,
0xc4, 0xf3, 0x93, 0x1d, 0x6a, 0x25, 0x0f, 0xf1, 0xec, 0x79, 0xe5, 0x9e, 0xf0, 0x66, 0xc1, 0xd3,
0x5f, 0x65, 0xe0, 0xc5, 0xa5, 0xc6, 0x97, 0x3a, 0xfa, 0x0a, 0x80, 0x69, 0xbb, 0xd3, 0x40, 0x54,
0x44, 0x62, 0x83, 0x2d, 0x71, 0x84, 0x6f, 0x5e, 0x6c, 0xf3, 0x9c, 0x06, 0xb1, 0x3c, 0xcb, 0xe5,
0x20, 0x20, 0x4e, 0xb8, 0x3b, 0x73, 0x34, 0xc7, 0x1d, 0x7d, 0xf5, 0x9c, 0x91, 0x2e, 0x24, 0xe6,
0xbb, 0x80, 0x74, 0xcb, 0xa4, 0x76, 0xa0, 0xf9, 0x81, 0x47, 0xc9, 0xc4, 0xb4, 0x47, 0xfc, 0x04,
0x29, 0xee, 0xe7, 0x87, 0xc4, 0xf2, 0xa9, 0xba, 0x26, 0xc4, 0xfd, 0x48, 0xca, 0x34, 0x78, 0x02,
0x79, 0x09, 0x8d, 0x42, 0x4a, 0x43, 0x88, 0x63, 0x8d, 0xda, 0x6f, 0x4a, 0x50, 0x4e, 0xd4, 0xd5,
0xf8, 0x1a, 0x54, 0x1e, 0x92, 0xc7, 0x44, 0x8b, 0xee, 0x4a, 0x22, 0x12, 0x65, 0x86, 0xf5, 0xc2,
0xfb, 0xd2, 0xbb, 0xb0, 0xc9, 0x29, 0xce, 0x34, 0xa0, 0x9e, 0xa6, 0x5b, 0xc4, 0xf7, 0x79, 0xd0,
0x8a, 0x9c, 0x8a, 0x99, 0xac, 0xcb, 0x44, 0xcd, 0x48, 0x82, 0x6f, 0xc3, 0x06, 0xd7, 0x98, 0x4c,
0xad, 0xc0, 0x74, 0x2d, 0xaa, 0xb1, 0xdb, 0x9b, 0xcf, 0x4f, 0x92, 0xd8, 0xb3, 0x75, 0xc6, 0x38,
0x0e, 0x09, 0xcc, 0x23, 0x1f, 0xb7, 0xe0, 0x15, 0xae, 0x36, 0xa2, 0x36, 0xf5, 0x48, 0x40, 0x35,
0xfa, 0xc5, 0x94, 0x58, 0xbe, 0x46, 0x6c, 0x43, 0x1b, 0x13, 0x7f, 0x2c, 0x6f, 0x32, 0x03, 0x07,
0x19, 0x59, 0x52, 0xaf, 0x30, 0xe2, 0x61, 0xc8, 0x53, 0x38, 0xad, 0x61, 0x1b, 0x1f, 0x13, 0x7f,
0x8c, 0xf7, 0xe1, 0x12, 0xb7, 0xe2, 0x07, 0x9e, 0x69, 0x8f, 0x34, 0x7d, 0x4c, 0xf5, 0x47, 0xda,
0x34, 0x18, 0xde, 0x95, 0x5f, 0x4a, 0xf6, 0xcf, 0x3d, 0xec, 0x73, 0x4e, 0x93, 0x51, 0x4e, 0x82,
0xe1, 0x5d, 0xdc, 0x87, 0x0a, 0x9b, 0x8c, 0x89, 0xf9, 0x25, 0xd5, 0x86, 0x8e, 0xc7, 0x8f, 0xc6,
0xea, 0x92, 0xad, 0x29, 0x11, 0xc1, 0x7a, 0x37, 0x54, 0x38, 0x76, 0x0c, 0xba, 0x9f, 0xef, 0xf7,
0x14, 0xa5, 0xa5, 0x96, 0x23, 0x2b, 0xf7, 0x1d, 0x8f, 0x25, 0xd4, 0xc8, 0x89, 0x03, 0x5c, 0x16,
0x09, 0x35, 0x72, 0xa2, 0xf0, 0xde, 0x86, 0x0d, 0x5d, 0x17, 0x63, 0x36, 0x75, 0x2d, 0xbc, 0x63,
0xf9, 0x32, 0x4a, 0x05, 0x4b, 0xd7, 0x0f, 0x05, 0x21, 0xcc, 0x71, 0x1f, 0x7f, 0x00, 0x2f, 0xce,
0x82, 0x95, 0x54, 0x5c, 0x5f, 0x18, 0xe5, 0xbc, 0xea, 0x6d, 0xd8, 0x70, 0xcf, 0x16, 0x15, 0x71,
0xaa, 0x47, 0xf7, 0x6c, 0x5e, 0xed, 0x7d, 0xd8, 0x74, 0xc7, 0xee, 0xa2, 0xde, 0xcd, 0xa4, 0x1e,
0x76, 0xc7, 0xee, 0xbc, 0xe2, 0x1b, 0xfc, 0xc2, 0xed, 0x51, 0x9d, 0x04, 0xd4, 0x90, 0x2f, 0x27,
0xe9, 0x09, 0x01, 0xde, 0x05, 0xa4, 0xeb, 0x1a, 0xb5, 0xc9, 0xa9, 0x45, 0x35, 0xe2, 0x51, 0x9b,
0xf8, 0xf2, 0xd5, 0x24, 0xb9, 0xaa, 0xeb, 0x0a, 0x97, 0x36, 0xb8, 0x10, 0xdf, 0x84, 0x75, 0xe7,
0xf4, 0xa1, 0x2e, 0x52, 0x52, 0x73, 0x3d, 0x3a, 0x34, 0x9f, 0xca, 0xaf, 0xf3, 0xf8, 0xae, 0x31,
0x01, 0x4f, 0xc8, 0x1e, 0x87, 0xf1, 0x0d, 0x40, 0xba, 0x3f, 0x26, 0x9e, 0xcb, 0xf7, 0x64, 0xdf,
0x25, 0x3a, 0x95, 0xdf, 0x10, 0x54, 0x81, 0x77, 0x22, 0x98, 0x2d, 0x09, 0xff, 0x89, 0x39, 0x0c,
0x22, 0x8b, 0xd7, 0xc5, 0x92, 0xe0, 0x58, 0x68, 0x6d, 0x07, 0x10, 0x0b, 0x45, 0xaa, 0xe3, 0x1d,
0x4e, 0xab, 0xba, 0x63, 0x37, 0xd9, 0xef, 0x6b, 0xb0, 0xca, 0x98, 0xb3, 0x4e, 0x6f, 0x88, 0x82,
0xcc, 0x1d, 0x27, 0x7a, 0xbc, 0x05, 0x97, 0x18, 0x69, 0x42, 0x03, 0x62, 0x90, 0x80, 0x24, 0xd8,
0x6f, 0x73, 0x36, 0x8b, 0xfb, 0x71, 0x28, 0x4c, 0xf9, 0xe9, 0x4d, 0x4f, 0xcf, 0xe2, 0xcc, 0x7a,
0x47, 0xf8, 0xc9, 0xb0, 0x28, 0xb7, 0xbe, 0xb7, 0xa2, 0xbb, 0xb6, 0x0f, 0x95, 0x64, 0xe2, 0xe3,
0x12, 0x88, 0xd4, 0x47, 0x12, 0xab, 0x82, 0x9a, 0xdd, 0x16, 0xab, 0x5f, 0x3e, 0x57, 0x50, 0x86,
0xd5, 0x51, 0x47, 0xed, 0x81, 0xa2, 0xa9, 0x27, 0x9d, 0x41, 0xfb, 0x58, 0x41, 0xd9, 0x44, 0xc1,
0xfe, 0x20, 0x57, 0x7c, 0x13, 0x5d, 0xaf, 0x7d, 0x9d, 0x81, 0x6a, 0xfa, 0x06, 0x86, 0xff, 0x0f,
0x2e, 0x47, 0xcf, 0x25, 0x3e, 0x0d, 0xb4, 0x27, 0xa6, 0xc7, 0x57, 0xe4, 0x84, 0x88, 0xd3, 0x31,
0xce, 0x89, 0xcd, 0x90, 0xd5, 0xa7, 0xc1, 0x27, 0xa6, 0xc7, 0xd6, 0xdb, 0x84, 0x04, 0xf8, 0x08,
0xae, 0xda, 0x8e, 0xe6, 0x07, 0xc4, 0x36, 0x88, 0x67, 0x68, 0xb3, 0x87, 0x2a, 0x8d, 0xe8, 0x3a,
0xf5, 0x7d, 0x47, 0x9c, 0x84, 0xb1, 0x95, 0x97, 0x6d, 0xa7, 0x1f, 0x92, 0x67, 0x47, 0x44, 0x23,
0xa4, 0xce, 0xe5, 0x6f, 0xf6, 0xbc, 0xfc, 0x7d, 0x09, 0x4a, 0x13, 0xe2, 0x6a, 0xd4, 0x0e, 0xbc,
0x33, 0x5e, 0x77, 0x17, 0xd5, 0xe2, 0x84, 0xb8, 0x0a, 0x6b, 0xff, 0x20, 0xd7, 0x9f, 0x07, 0xb9,
0x62, 0x11, 0x95, 0x1e, 0xe4, 0x8a, 0x25, 0x04, 0xb5, 0x7f, 0x64, 0xa1, 0x92, 0xac, 0xc3, 0xd9,
0xb5, 0x46, 0xe7, 0x47, 0x96, 0xc4, 0x37, 0xb5, 0xd7, 0xbe, 0xb1, 0x6a, 0xaf, 0x37, 0xd9, 0x59,
0xb6, 0x5f, 0x10, 0xd5, 0xb1, 0x2a, 0x34, 0x59, 0x1d, 0xc1, 0x92, 0x8d, 0x8a, 0x6a, 0xa4, 0xa8,
0x86, 0x2d, 0x7c, 0x08, 0x85, 0x87, 0x3e, 0xb7, 0x5d, 0xe0, 0xb6, 0x5f, 0xff, 0x66, 0xdb, 0x0f,
0xfa, 0xdc, 0x78, 0xe9, 0x41, 0x5f, 0xeb, 0x74, 0xd5, 0xe3, 0xc6, 0x91, 0x1a, 0xaa, 0xe3, 0x2b,
0x90, 0xb3, 0xc8, 0x97, 0x67, 0xe9, 0x53, 0x8f, 0x43, 0x17, 0x9d, 0x84, 0x2b, 0x90, 0x7b, 0x42,
0xc9, 0xa3, 0xf4, 0x59, 0xc3, 0xa1, 0xef, 0x71, 0x31, 0xec, 0x42, 0x9e, 0xc7, 0x0b, 0x03, 0x84,
0x11, 0x43, 0x2f, 0xe0, 0x22, 0xe4, 0x9a, 0x5d, 0x95, 0x2d, 0x08, 0x04, 0x15, 0x81, 0x6a, 0xbd,
0xb6, 0xd2, 0x54, 0x50, 0xa6, 0x76, 0x1b, 0x0a, 0x22, 0x08, 0x6c, 0xb1, 0xc4, 0x61, 0x40, 0x2f,
0x84, 0xcd, 0xd0, 0x86, 0x14, 0x49, 0x4f, 0x8e, 0x0f, 0x14, 0x15, 0x65, 0xd2, 0x53, 0x9d, 0x43,
0xf9, 0x9a, 0x0f, 0x95, 0x64, 0x21, 0xfe, 0xc3, 0x5c, 0xb2, 0xff, 0x2a, 0x41, 0x39, 0x51, 0x58,
0xb3, 0x8a, 0x88, 0x58, 0x96, 0xf3, 0x44, 0x23, 0x96, 0x49, 0xfc, 0x30, 0x35, 0x80, 0x43, 0x0d,
0x86, 0x5c, 0x74, 0xea, 0x7e, 0xa0, 0x25, 0x92, 0x47, 0x85, 0xda, 0x1f, 0x24, 0x40, 0xf3, 0x95,
0xed, 0x9c, 0x9b, 0xd2, 0x8f, 0xe9, 0x66, 0xed, 0xf7, 0x12, 0x54, 0xd3, 0xe5, 0xec, 0x9c, 0x7b,
0xd7, 0x7e, 0x54, 0xf7, 0xfe, 0x9e, 0x81, 0xd5, 0x54, 0x11, 0x7b, 0x51, 0xef, 0xbe, 0x80, 0x75,
0xd3, 0xa0, 0x13, 0xd7, 0x09, 0xa8, 0xad, 0x9f, 0x69, 0x16, 0x7d, 0x4c, 0x2d, 0xb9, 0xc6, 0x37,
0x8d, 0xdd, 0x6f, 0x2e, 0x93, 0xeb, 0xed, 0x99, 0xde, 0x11, 0x53, 0xdb, 0xdf, 0x68, 0xb7, 0x94,
0xe3, 0x5e, 0x77, 0xa0, 0x74, 0x9a, 0x9f, 0x69, 0x27, 0x9d, 0x9f, 0x74, 0xba, 0x9f, 0x74, 0x54,
0x64, 0xce, 0xd1, 0xbe, 0xc7, 0x65, 0xdf, 0x03, 0x34, 0xef, 0x14, 0xbe, 0x0c, 0xcb, 0xdc, 0x42,
0x2f, 0xe0, 0x0d, 0x58, 0xeb, 0x74, 0xb5, 0x7e, 0xbb, 0xa5, 0x68, 0xca, 0xfd, 0xfb, 0x4a, 0x73,
0xd0, 0x17, 0x0f, 0x1f, 0x31, 0x7b, 0x90, 0x5a, 0xe0, 0xb5, 0xdf, 0x65, 0x61, 0x63, 0x89, 0x27,
0xb8, 0x11, 0x5e, 0x59, 0xc4, 0x2d, 0xea, 0x9d, 0x8b, 0x78, 0x5f, 0x67, 0x35, 0x43, 0x8f, 0x78,
0x41, 0x78, 0xc3, 0xb9, 0x01, 0x2c, 0x4a, 0x76, 0x60, 0x0e, 0x4d, 0xea, 0x85, 0xef, 0x44, 0xe2,
0x1e, 0xb3, 0x36, 0xc3, 0xc5, 0x53, 0xd1, 0xdb, 0x80, 0x5d, 0xc7, 0x37, 0x03, 0xf3, 0x31, 0xd5,
0x4c, 0x3b, 0x7a, 0x54, 0x62, 0xf7, 0x9a, 0x9c, 0x8a, 0x22, 0x49, 0xdb, 0x0e, 0x62, 0xb6, 0x4d,
0x47, 0x64, 0x8e, 0xcd, 0x36, 0xf3, 0xac, 0x8a, 0x22, 0x49, 0xcc, 0xbe, 0x06, 0x15, 0xc3, 0x99,
0xb2, 0x62, 0x4f, 0xf0, 0xd8, 0xd9, 0x21, 0xa9, 0x65, 0x81, 0xc5, 0x94, 0xb0, 0x8c, 0x9f, 0xbd,
0x66, 0x55, 0xd4, 0xb2, 0xc0, 0x04, 0xe5, 0x3a, 0xac, 0x91, 0xd1, 0xc8, 0x63, 0xc6, 0x23, 0x43,
0xe2, 0x62, 0x52, 0x8d, 0x61, 0x4e, 0xdc, 0x7a, 0x00, 0xc5, 0x28, 0x0e, 0xec, 0xa8, 0x66, 0x91,
0xd0, 0x5c, 0x71, 0xdb, 0xce, 0xec, 0x94, 0xd4, 0xa2, 0x1d, 0x09, 0xaf, 0x41, 0xc5, 0xf4, 0xb5,
0xd9, 0xe3, 0x7c, 0x66, 0x3b, 0xb3, 0x53, 0x54, 0xcb, 0xa6, 0x1f, 0x3f, 0x6c, 0xd6, 0xbe, 0xca,
0x40, 0x35, 0xfd, 0x71, 0x01, 0xb7, 0xa0, 0x68, 0x39, 0x3a, 0xe1, 0xa9, 0x25, 0xbe, 0x6c, 0xed,
0x3c, 0xe7, 0x7b, 0x44, 0xfd, 0x28, 0xe4, 0xab, 0xb1, 0xe6, 0xd6, 0xdf, 0x24, 0x28, 0x46, 0x30,
0xbe, 0x04, 0x39, 0x97, 0x04, 0x63, 0x6e, 0x2e, 0x7f, 0x90, 0x41, 0x92, 0xca, 0xdb, 0x0c, 0xf7,
0x5d, 0x62, 0xf3, 0x14, 0x08, 0x71, 0xd6, 0x66, 0xf3, 0x6a, 0x51, 0x62, 0xf0, 0x5b, 0x8f, 0x33,
0x99, 0x50, 0x3b, 0xf0, 0xa3, 0x79, 0x0d, 0xf1, 0x66, 0x08, 0xe3, 0xb7, 0x60, 0x3d, 0xf0, 0x88,
0x69, 0xa5, 0xb8, 0x39, 0xce, 0x45, 0x91, 0x20, 0x26, 0xef, 0xc3, 0x95, 0xc8, 0xae, 0x41, 0x03,
0xa2, 0x8f, 0xa9, 0x31, 0x53, 0x2a, 0xf0, 0xd7, 0x8d, 0xcb, 0x21, 0xa1, 0x15, 0xca, 0x23, 0xdd,
0xda, 0xd7, 0x12, 0xac, 0x47, 0xf7, 0x34, 0x23, 0x0e, 0xd6, 0x31, 0x00, 0xb1, 0x6d, 0x27, 0x48,
0x86, 0x6b, 0x31, 0x95, 0x17, 0xf4, 0xea, 0x8d, 0x58, 0x49, 0x4d, 0x18, 0xd8, 0x9a, 0x00, 0xcc,
0x24, 0xe7, 0x86, 0xed, 0x2a, 0x94, 0xc3, 0x2f, 0x47, 0xfc, 0xf3, 0xa3, 0xb8, 0xd9, 0x83, 0x80,
0xd8, 0x85, 0x0e, 0x6f, 0x42, 0xfe, 0x94, 0x8e, 0x4c, 0x3b, 0x7c, 0x0f, 0x16, 0x8d, 0xe8, 0xfd,
0x25, 0x17, 0xbf, 0xbf, 0x1c, 0xfc, 0x5a, 0x82, 0x0d, 0xdd, 0x99, 0xcc, 0xfb, 0x7b, 0x80, 0xe6,
0x9e, 0x17, 0xfc, 0x8f, 0xa5, 0xcf, 0x3f, 0x1a, 0x99, 0xc1, 0x78, 0x7a, 0x5a, 0xd7, 0x9d, 0xc9,
0xee, 0xc8, 0xb1, 0x88, 0x3d, 0x9a, 0x7d, 0x3f, 0x7d, 0xbc, 0xb7, 0xcb, 0xaa, 0x1e, 0x3f, 0xf1,
0x21, 0xf5, 0x5e, 0xa2, 0x54, 0xe5, 0xbc, 0xff, 0x4a, 0xd2, 0x1f, 0x33, 0xd9, 0xc3, 0xde, 0xc1,
0x9f, 0x32, 0x5b, 0x87, 0xa2, 0xbf, 0x5e, 0x14, 0x1f, 0x95, 0x0e, 0x2d, 0xaa, 0xb3, 0x31, 0xff,
0x2f, 0x00, 0x00, 0xff, 0xff, 0x9a, 0xd0, 0x4c, 0xbb, 0x9c, 0x1d, 0x00, 0x00,
}
func init() {

View File

@ -40,7 +40,7 @@
syntax = "proto2";
package google.protobuf;
option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor";
option go_package = "github.com/golang/protobuf/v2/types/descriptor;descriptor_proto";
option java_package = "com.google.protobuf";
option java_outer_classname = "DescriptorProtos";
option csharp_namespace = "Google.Protobuf.Reflection";

View File

@ -1,15 +1,29 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: google/protobuf/compiler/plugin.proto
package plugin_go
package plugin_proto
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
prototype "github.com/golang/protobuf/v2/reflect/prototype"
protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
descriptor "github.com/golang/protobuf/v2/types/descriptor"
math "math"
)
// 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.ProtoPackageIsVersion3 // please upgrade the proto package
// The version number of protocol compiler.
type Version struct {
Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"`
@ -43,12 +57,30 @@ func (m xxx_Version) Interface() protoreflect.ProtoMessage {
func (m xxx_Version) ProtoMutable() {}
func (m *Version) Reset() { *m = Version{} }
func (m *Version) String() string { return "not implemented" }
func (m *Version) String() string { return proto.CompactTextString(m) }
func (*Version) ProtoMessage() {}
func (*Version) Descriptor() ([]byte, []int) {
return fileDescriptor_3562add825dafed5, []int{0}
}
func (m *Version) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Version.Unmarshal(m, b)
}
func (m *Version) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Version.Marshal(b, m, deterministic)
}
func (m *Version) XXX_Merge(src proto.Message) {
xxx_messageInfo_Version.Merge(m, src)
}
func (m *Version) XXX_Size() int {
return xxx_messageInfo_Version.Size(m)
}
func (m *Version) XXX_DiscardUnknown() {
xxx_messageInfo_Version.DiscardUnknown(m)
}
var xxx_messageInfo_Version proto.InternalMessageInfo
func (m *Version) GetMajor() int32 {
if m != nil && m.Major != nil {
return *m.Major
@ -127,12 +159,30 @@ func (m xxx_CodeGeneratorRequest) Interface() protoreflect.ProtoMessage {
func (m xxx_CodeGeneratorRequest) ProtoMutable() {}
func (m *CodeGeneratorRequest) Reset() { *m = CodeGeneratorRequest{} }
func (m *CodeGeneratorRequest) String() string { return "not implemented" }
func (m *CodeGeneratorRequest) String() string { return proto.CompactTextString(m) }
func (*CodeGeneratorRequest) ProtoMessage() {}
func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_3562add825dafed5, []int{1}
}
func (m *CodeGeneratorRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CodeGeneratorRequest.Unmarshal(m, b)
}
func (m *CodeGeneratorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CodeGeneratorRequest.Marshal(b, m, deterministic)
}
func (m *CodeGeneratorRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_CodeGeneratorRequest.Merge(m, src)
}
func (m *CodeGeneratorRequest) XXX_Size() int {
return xxx_messageInfo_CodeGeneratorRequest.Size(m)
}
func (m *CodeGeneratorRequest) XXX_DiscardUnknown() {
xxx_messageInfo_CodeGeneratorRequest.DiscardUnknown(m)
}
var xxx_messageInfo_CodeGeneratorRequest proto.InternalMessageInfo
func (m *CodeGeneratorRequest) GetFileToGenerate() []string {
if m != nil {
return m.FileToGenerate
@ -198,12 +248,30 @@ func (m xxx_CodeGeneratorResponse) Interface() protoreflect.ProtoMessage {
func (m xxx_CodeGeneratorResponse) ProtoMutable() {}
func (m *CodeGeneratorResponse) Reset() { *m = CodeGeneratorResponse{} }
func (m *CodeGeneratorResponse) String() string { return "not implemented" }
func (m *CodeGeneratorResponse) String() string { return proto.CompactTextString(m) }
func (*CodeGeneratorResponse) ProtoMessage() {}
func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_3562add825dafed5, []int{2}
}
func (m *CodeGeneratorResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CodeGeneratorResponse.Unmarshal(m, b)
}
func (m *CodeGeneratorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CodeGeneratorResponse.Marshal(b, m, deterministic)
}
func (m *CodeGeneratorResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_CodeGeneratorResponse.Merge(m, src)
}
func (m *CodeGeneratorResponse) XXX_Size() int {
return xxx_messageInfo_CodeGeneratorResponse.Size(m)
}
func (m *CodeGeneratorResponse) XXX_DiscardUnknown() {
xxx_messageInfo_CodeGeneratorResponse.DiscardUnknown(m)
}
var xxx_messageInfo_CodeGeneratorResponse proto.InternalMessageInfo
func (m *CodeGeneratorResponse) GetError() string {
if m != nil && m.Error != nil {
return *m.Error
@ -297,12 +365,30 @@ func (m xxx_CodeGeneratorResponse_File) Interface() protoreflect.ProtoMessage {
func (m xxx_CodeGeneratorResponse_File) ProtoMutable() {}
func (m *CodeGeneratorResponse_File) Reset() { *m = CodeGeneratorResponse_File{} }
func (m *CodeGeneratorResponse_File) String() string { return "not implemented" }
func (m *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(m) }
func (*CodeGeneratorResponse_File) ProtoMessage() {}
func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) {
return fileDescriptor_3562add825dafed5, []int{2, 0}
}
func (m *CodeGeneratorResponse_File) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CodeGeneratorResponse_File.Unmarshal(m, b)
}
func (m *CodeGeneratorResponse_File) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CodeGeneratorResponse_File.Marshal(b, m, deterministic)
}
func (m *CodeGeneratorResponse_File) XXX_Merge(src proto.Message) {
xxx_messageInfo_CodeGeneratorResponse_File.Merge(m, src)
}
func (m *CodeGeneratorResponse_File) XXX_Size() int {
return xxx_messageInfo_CodeGeneratorResponse_File.Size(m)
}
func (m *CodeGeneratorResponse_File) XXX_DiscardUnknown() {
xxx_messageInfo_CodeGeneratorResponse_File.DiscardUnknown(m)
}
var xxx_messageInfo_CodeGeneratorResponse_File proto.InternalMessageInfo
func (m *CodeGeneratorResponse_File) GetName() string {
if m != nil && m.Name != nil {
return *m.Name
@ -324,35 +410,45 @@ func (m *CodeGeneratorResponse_File) GetContent() string {
return ""
}
func init() {
proto.RegisterType((*Version)(nil), "google.protobuf.compiler.Version")
proto.RegisterType((*CodeGeneratorRequest)(nil), "google.protobuf.compiler.CodeGeneratorRequest")
proto.RegisterType((*CodeGeneratorResponse)(nil), "google.protobuf.compiler.CodeGeneratorResponse")
proto.RegisterType((*CodeGeneratorResponse_File)(nil), "google.protobuf.compiler.CodeGeneratorResponse.File")
}
func init() {
proto.RegisterFile("google/protobuf/compiler/plugin.proto", fileDescriptor_3562add825dafed5)
}
var fileDescriptor_3562add825dafed5 = []byte{
// 417 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x6a, 0x14, 0x41,
0x10, 0xc6, 0x19, 0x77, 0x63, 0x98, 0x8a, 0x64, 0x43, 0x13, 0xa5, 0x09, 0x39, 0x8c, 0x8b, 0xe2,
0x5c, 0x32, 0x0b, 0xc1, 0x8b, 0x78, 0x4b, 0x44, 0x3d, 0x78, 0x58, 0x1a, 0xf1, 0x20, 0xc8, 0x30,
0x99, 0xd4, 0x74, 0x5a, 0x66, 0xba, 0xc6, 0xee, 0x1e, 0xf1, 0x49, 0x7d, 0x0f, 0xdf, 0x40, 0xfa,
0xcf, 0x24, 0xb2, 0xb8, 0xa7, 0xee, 0xef, 0x57, 0xd5, 0xd5, 0x55, 0x1f, 0x05, 0x2f, 0x25, 0x91,
0xec, 0x71, 0x33, 0x1a, 0x72, 0x74, 0x33, 0x75, 0x9b, 0x96, 0x86, 0x51, 0xf5, 0x68, 0x36, 0x63,
0x3f, 0x49, 0xa5, 0xab, 0x10, 0x60, 0x3c, 0xa6, 0x55, 0x73, 0x5a, 0x35, 0xa7, 0x9d, 0x15, 0xbb,
0x05, 0x6e, 0xd1, 0xb6, 0x46, 0x8d, 0x8e, 0x4c, 0xcc, 0x5e, 0xb7, 0x70, 0xf8, 0x05, 0x8d, 0x55,
0xa4, 0xd9, 0x29, 0x1c, 0x0c, 0xcd, 0x77, 0x32, 0x3c, 0x2b, 0xb2, 0xf2, 0x40, 0x44, 0x11, 0xa8,
0xd2, 0x64, 0xf8, 0xa3, 0x44, 0xbd, 0xf0, 0x74, 0x6c, 0x5c, 0x7b, 0xc7, 0x17, 0x91, 0x06, 0xc1,
0x9e, 0xc1, 0x63, 0x3b, 0x75, 0x9d, 0xfa, 0xc5, 0x97, 0x45, 0x56, 0xe6, 0x22, 0xa9, 0xf5, 0x9f,
0x0c, 0x4e, 0xaf, 0xe9, 0x16, 0x3f, 0xa0, 0x46, 0xd3, 0x38, 0x32, 0x02, 0x7f, 0x4c, 0x68, 0x1d,
0x2b, 0xe1, 0xa4, 0x53, 0x3d, 0xd6, 0x8e, 0x6a, 0x19, 0x63, 0xc8, 0xb3, 0x62, 0x51, 0xe6, 0xe2,
0xd8, 0xf3, 0xcf, 0x94, 0x5e, 0x20, 0x3b, 0x87, 0x7c, 0x6c, 0x4c, 0x33, 0xa0, 0xc3, 0xd8, 0x4a,
0x2e, 0x1e, 0x00, 0xbb, 0x06, 0x08, 0xe3, 0xd4, 0xfe, 0x15, 0x5f, 0x15, 0x8b, 0xf2, 0xe8, 0xf2,
0x45, 0xb5, 0x6b, 0xcb, 0x7b, 0xd5, 0xe3, 0xbb, 0x7b, 0x03, 0xb6, 0x1e, 0x8b, 0x3c, 0x44, 0x7d,
0x84, 0x7d, 0x82, 0x93, 0xd9, 0xb8, 0xfa, 0x67, 0xf4, 0x24, 0x8c, 0x77, 0x74, 0xf9, 0xbc, 0xda,
0xe7, 0x70, 0x95, 0xcc, 0x13, 0xab, 0x99, 0x24, 0xb0, 0xfe, 0x9d, 0xc1, 0xd3, 0x9d, 0x99, 0xed,
0x48, 0xda, 0xa2, 0xf7, 0x0e, 0x8d, 0x49, 0x3e, 0xe7, 0x22, 0x0a, 0xf6, 0x11, 0x96, 0xff, 0x34,
0xff, 0x7a, 0xff, 0x8f, 0xff, 0x2d, 0x1a, 0x66, 0x13, 0xa1, 0xc2, 0xd9, 0x37, 0x58, 0x86, 0x79,
0x18, 0x2c, 0x75, 0x33, 0x60, 0xfa, 0x26, 0xdc, 0xd9, 0x2b, 0x58, 0x29, 0x6d, 0xd1, 0x38, 0x45,
0xba, 0x1e, 0x49, 0x69, 0x97, 0xcc, 0x3c, 0xbe, 0xc7, 0x5b, 0x4f, 0x19, 0x87, 0xc3, 0x96, 0xb4,
0x43, 0xed, 0xf8, 0x2a, 0x24, 0xcc, 0xf2, 0x4a, 0xc2, 0x79, 0x4b, 0xc3, 0xde, 0xfe, 0xae, 0x9e,
0x6c, 0xc3, 0x6e, 0x06, 0x7b, 0xed, 0xd7, 0x37, 0x52, 0xb9, 0xbb, 0xe9, 0xc6, 0x87, 0x37, 0x92,
0xfa, 0x46, 0xcb, 0x87, 0x65, 0x0c, 0x97, 0xf6, 0x42, 0xa2, 0xbe, 0x90, 0x94, 0x56, 0xfa, 0x6d,
0x3c, 0x6a, 0x49, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x15, 0x40, 0xc5, 0xfe, 0x02, 0x00,
0x00,
// 416 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x6a, 0xd5, 0x40,
0x14, 0xc6, 0x89, 0xbd, 0xb5, 0xe4, 0x54, 0x7a, 0xcb, 0x50, 0x65, 0x28, 0x5d, 0xc4, 0x8b, 0x62,
0x56, 0x09, 0x5c, 0x04, 0x17, 0xee, 0x5a, 0x51, 0x17, 0x2e, 0x2e, 0x83, 0xb8, 0x10, 0x24, 0xa4,
0xe9, 0xb9, 0xe9, 0x48, 0x32, 0x67, 0x9c, 0x99, 0x14, 0x7d, 0x51, 0xdf, 0xc3, 0x37, 0x90, 0xf9,
0x93, 0x56, 0x2e, 0xde, 0x55, 0xf2, 0xfd, 0xbe, 0x33, 0x33, 0xe7, 0x7c, 0x1c, 0x78, 0xd9, 0x13,
0xf5, 0x03, 0xd6, 0xda, 0x90, 0xa3, 0xeb, 0x69, 0x5b, 0x77, 0x34, 0x6a, 0x39, 0xa0, 0xa9, 0xf5,
0x30, 0xf5, 0x52, 0x55, 0xc1, 0x60, 0x3c, 0x96, 0x55, 0x73, 0x59, 0x35, 0x97, 0x9d, 0x17, 0xbb,
0x17, 0xdc, 0xa0, 0xed, 0x8c, 0xd4, 0x8e, 0x4c, 0xac, 0x5e, 0x75, 0x70, 0xf4, 0x05, 0x8d, 0x95,
0xa4, 0xd8, 0x19, 0x1c, 0x8e, 0xed, 0x77, 0x32, 0x3c, 0x2b, 0xb2, 0xf2, 0x50, 0x44, 0x11, 0xa8,
0x54, 0x64, 0xf8, 0xa3, 0x44, 0xbd, 0xf0, 0x54, 0xb7, 0xae, 0xbb, 0xe5, 0x07, 0x91, 0x06, 0xc1,
0x9e, 0xc1, 0x63, 0x3b, 0x6d, 0xb7, 0xf2, 0x27, 0x5f, 0x14, 0x59, 0x99, 0x8b, 0xa4, 0x56, 0x7f,
0x32, 0x38, 0xbb, 0xa2, 0x1b, 0xfc, 0x80, 0x0a, 0x4d, 0xeb, 0xc8, 0x08, 0xfc, 0x31, 0xa1, 0x75,
0xac, 0x84, 0xd3, 0xad, 0x1c, 0xb0, 0x71, 0xd4, 0xf4, 0xd1, 0x43, 0x9e, 0x15, 0x07, 0x65, 0x2e,
0x4e, 0x3c, 0xff, 0x4c, 0xe9, 0x04, 0xb2, 0x0b, 0xc8, 0x75, 0x6b, 0xda, 0x11, 0x1d, 0xc6, 0x56,
0x72, 0xf1, 0x00, 0xd8, 0x15, 0x40, 0x18, 0xa7, 0xf1, 0xa7, 0xf8, 0xb2, 0x38, 0x28, 0x8f, 0xd7,
0x2f, 0xaa, 0xdd, 0x58, 0xde, 0xcb, 0x01, 0xdf, 0xdd, 0x07, 0xb0, 0xf1, 0x58, 0xe4, 0xc1, 0xf5,
0x0e, 0xfb, 0x04, 0xa7, 0x73, 0x70, 0xcd, 0x5d, 0xcc, 0x24, 0x8c, 0x77, 0xbc, 0x7e, 0x5e, 0xed,
0x4b, 0xb8, 0x4a, 0xe1, 0x89, 0xe5, 0x4c, 0x12, 0x58, 0xfd, 0xce, 0xe0, 0xe9, 0xce, 0xcc, 0x56,
0x93, 0xb2, 0xe8, 0xb3, 0x43, 0x63, 0x52, 0xce, 0xb9, 0x88, 0x82, 0x7d, 0x84, 0xc5, 0x3f, 0xcd,
0xbf, 0xde, 0xff, 0xe2, 0x7f, 0x2f, 0x0d, 0xb3, 0x89, 0x70, 0xc3, 0xf9, 0x37, 0x58, 0x84, 0x79,
0x18, 0x2c, 0x54, 0x3b, 0x62, 0x7a, 0x26, 0xfc, 0xb3, 0x57, 0xb0, 0x94, 0xca, 0xa2, 0x71, 0x92,
0x54, 0xa3, 0x49, 0x2a, 0x97, 0xc2, 0x3c, 0xb9, 0xc7, 0x1b, 0x4f, 0x19, 0x87, 0xa3, 0x8e, 0x94,
0x43, 0xe5, 0xf8, 0x32, 0x14, 0xcc, 0xf2, 0x12, 0xe1, 0xa2, 0xa3, 0x71, 0x6f, 0x7f, 0x97, 0x4f,
0x36, 0x61, 0x37, 0x43, 0xbc, 0xf6, 0xeb, 0x9b, 0x5e, 0xba, 0xdb, 0xe9, 0xda, 0xdb, 0x75, 0x4f,
0x43, 0xab, 0xfa, 0x87, 0x65, 0xbc, 0x5b, 0xd7, 0xee, 0x97, 0x46, 0x9b, 0xb6, 0xf9, 0x6d, 0xfc,
0x34, 0xc1, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xa3, 0xfc, 0xb6, 0x26, 0xfc, 0x02, 0x00, 0x00,
}
func init() {

View File

@ -49,7 +49,7 @@ package google.protobuf.compiler;
option java_package = "com.google.protobuf.compiler";
option java_outer_classname = "PluginProtos";
option go_package = "github.com/golang/protobuf/protoc-gen-go/plugin;plugin_go";
option go_package = "github.com/golang/protobuf/v2/types/plugin;plugin_proto";
import "google/protobuf/descriptor.proto";