// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.5 // protoc v6.30.1 // source: proto/igdbapi.proto package proto import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" unsafe "unsafe" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type AgeRatingCategoryEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingCategoryEnum_AGERATING_CATEGORY_NULL AgeRatingCategoryEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingCategoryEnum_ESRB AgeRatingCategoryEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingCategoryEnum_PEGI AgeRatingCategoryEnum = 2 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingCategoryEnum_CERO AgeRatingCategoryEnum = 3 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingCategoryEnum_USK AgeRatingCategoryEnum = 4 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingCategoryEnum_GRAC AgeRatingCategoryEnum = 5 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingCategoryEnum_CLASS_IND AgeRatingCategoryEnum = 6 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingCategoryEnum_ACB AgeRatingCategoryEnum = 7 ) // Enum value maps for AgeRatingCategoryEnum. var ( AgeRatingCategoryEnum_name = map[int32]string{ 0: "AGERATING_CATEGORY_NULL", 1: "ESRB", 2: "PEGI", 3: "CERO", 4: "USK", 5: "GRAC", 6: "CLASS_IND", 7: "ACB", } AgeRatingCategoryEnum_value = map[string]int32{ "AGERATING_CATEGORY_NULL": 0, "ESRB": 1, "PEGI": 2, "CERO": 3, "USK": 4, "GRAC": 5, "CLASS_IND": 6, "ACB": 7, } ) func (x AgeRatingCategoryEnum) Enum() *AgeRatingCategoryEnum { p := new(AgeRatingCategoryEnum) *p = x return p } func (x AgeRatingCategoryEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (AgeRatingCategoryEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[0].Descriptor() } func (AgeRatingCategoryEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[0] } func (x AgeRatingCategoryEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use AgeRatingCategoryEnum.Descriptor instead. func (AgeRatingCategoryEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{0} } type AgeRatingRatingEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_AGERATING_RATING_NULL AgeRatingRatingEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_THREE AgeRatingRatingEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_SEVEN AgeRatingRatingEnum = 2 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_TWELVE AgeRatingRatingEnum = 3 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_SIXTEEN AgeRatingRatingEnum = 4 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_EIGHTEEN AgeRatingRatingEnum = 5 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_RP AgeRatingRatingEnum = 6 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_EC AgeRatingRatingEnum = 7 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_E AgeRatingRatingEnum = 8 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_E10 AgeRatingRatingEnum = 9 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_T AgeRatingRatingEnum = 10 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_M AgeRatingRatingEnum = 11 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_AO AgeRatingRatingEnum = 12 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CERO_A AgeRatingRatingEnum = 13 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CERO_B AgeRatingRatingEnum = 14 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CERO_C AgeRatingRatingEnum = 15 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CERO_D AgeRatingRatingEnum = 16 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CERO_Z AgeRatingRatingEnum = 17 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_USK_0 AgeRatingRatingEnum = 18 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_USK_6 AgeRatingRatingEnum = 19 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_USK_12 AgeRatingRatingEnum = 20 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_USK_16 AgeRatingRatingEnum = 21 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_USK_18 AgeRatingRatingEnum = 22 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_GRAC_ALL AgeRatingRatingEnum = 23 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_GRAC_TWELVE AgeRatingRatingEnum = 24 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_GRAC_FIFTEEN AgeRatingRatingEnum = 25 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_GRAC_EIGHTEEN AgeRatingRatingEnum = 26 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_GRAC_TESTING AgeRatingRatingEnum = 27 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CLASS_IND_L AgeRatingRatingEnum = 28 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CLASS_IND_TEN AgeRatingRatingEnum = 29 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CLASS_IND_TWELVE AgeRatingRatingEnum = 30 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CLASS_IND_FOURTEEN AgeRatingRatingEnum = 31 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CLASS_IND_SIXTEEN AgeRatingRatingEnum = 32 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_CLASS_IND_EIGHTEEN AgeRatingRatingEnum = 33 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_ACB_G AgeRatingRatingEnum = 34 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_ACB_PG AgeRatingRatingEnum = 35 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_ACB_M AgeRatingRatingEnum = 36 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_ACB_MA15 AgeRatingRatingEnum = 37 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_ACB_R18 AgeRatingRatingEnum = 38 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingRatingEnum_ACB_RC AgeRatingRatingEnum = 39 ) // Enum value maps for AgeRatingRatingEnum. var ( AgeRatingRatingEnum_name = map[int32]string{ 0: "AGERATING_RATING_NULL", 1: "THREE", 2: "SEVEN", 3: "TWELVE", 4: "SIXTEEN", 5: "EIGHTEEN", 6: "RP", 7: "EC", 8: "E", 9: "E10", 10: "T", 11: "M", 12: "AO", 13: "CERO_A", 14: "CERO_B", 15: "CERO_C", 16: "CERO_D", 17: "CERO_Z", 18: "USK_0", 19: "USK_6", 20: "USK_12", 21: "USK_16", 22: "USK_18", 23: "GRAC_ALL", 24: "GRAC_TWELVE", 25: "GRAC_FIFTEEN", 26: "GRAC_EIGHTEEN", 27: "GRAC_TESTING", 28: "CLASS_IND_L", 29: "CLASS_IND_TEN", 30: "CLASS_IND_TWELVE", 31: "CLASS_IND_FOURTEEN", 32: "CLASS_IND_SIXTEEN", 33: "CLASS_IND_EIGHTEEN", 34: "ACB_G", 35: "ACB_PG", 36: "ACB_M", 37: "ACB_MA15", 38: "ACB_R18", 39: "ACB_RC", } AgeRatingRatingEnum_value = map[string]int32{ "AGERATING_RATING_NULL": 0, "THREE": 1, "SEVEN": 2, "TWELVE": 3, "SIXTEEN": 4, "EIGHTEEN": 5, "RP": 6, "EC": 7, "E": 8, "E10": 9, "T": 10, "M": 11, "AO": 12, "CERO_A": 13, "CERO_B": 14, "CERO_C": 15, "CERO_D": 16, "CERO_Z": 17, "USK_0": 18, "USK_6": 19, "USK_12": 20, "USK_16": 21, "USK_18": 22, "GRAC_ALL": 23, "GRAC_TWELVE": 24, "GRAC_FIFTEEN": 25, "GRAC_EIGHTEEN": 26, "GRAC_TESTING": 27, "CLASS_IND_L": 28, "CLASS_IND_TEN": 29, "CLASS_IND_TWELVE": 30, "CLASS_IND_FOURTEEN": 31, "CLASS_IND_SIXTEEN": 32, "CLASS_IND_EIGHTEEN": 33, "ACB_G": 34, "ACB_PG": 35, "ACB_M": 36, "ACB_MA15": 37, "ACB_R18": 38, "ACB_RC": 39, } ) func (x AgeRatingRatingEnum) Enum() *AgeRatingRatingEnum { p := new(AgeRatingRatingEnum) *p = x return p } func (x AgeRatingRatingEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (AgeRatingRatingEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[1].Descriptor() } func (AgeRatingRatingEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[1] } func (x AgeRatingRatingEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use AgeRatingRatingEnum.Descriptor instead. func (AgeRatingRatingEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{1} } type AgeRatingContentDescriptionCategoryEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL AgeRatingContentDescriptionCategoryEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_ALCOHOL_REFERENCE AgeRatingContentDescriptionCategoryEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_ANIMATED_BLOOD AgeRatingContentDescriptionCategoryEnum = 2 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_BLOOD AgeRatingContentDescriptionCategoryEnum = 3 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_BLOOD_AND_GORE AgeRatingContentDescriptionCategoryEnum = 4 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_CARTOON_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 5 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_COMIC_MISCHIEF AgeRatingContentDescriptionCategoryEnum = 6 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_CRUDE_HUMOR AgeRatingContentDescriptionCategoryEnum = 7 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_DRUG_REFERENCE AgeRatingContentDescriptionCategoryEnum = 8 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_FANTASY_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 9 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_INTENSE_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 10 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 11 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_LYRICS AgeRatingContentDescriptionCategoryEnum = 12 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MATURE_HUMOR AgeRatingContentDescriptionCategoryEnum = 13 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_NUDITY AgeRatingContentDescriptionCategoryEnum = 14 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_PARTIAL_NUDITY AgeRatingContentDescriptionCategoryEnum = 15 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_REAL_GAMBLING AgeRatingContentDescriptionCategoryEnum = 16 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_SEXUAL_CONTENT AgeRatingContentDescriptionCategoryEnum = 17 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_SEXUAL_THEMES AgeRatingContentDescriptionCategoryEnum = 18 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_SEXUAL_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 19 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_SIMULATED_GAMBLING AgeRatingContentDescriptionCategoryEnum = 20 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_STRONG_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 21 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_STRONG_LYRICS AgeRatingContentDescriptionCategoryEnum = 22 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_STRONG_SEXUAL_CONTENT AgeRatingContentDescriptionCategoryEnum = 23 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_SUGGESTIVE_THEMES AgeRatingContentDescriptionCategoryEnum = 24 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_TOBACCO_REFERENCE AgeRatingContentDescriptionCategoryEnum = 25 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_ALCOHOL AgeRatingContentDescriptionCategoryEnum = 26 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_DRUGS AgeRatingContentDescriptionCategoryEnum = 27 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_TOBACCO AgeRatingContentDescriptionCategoryEnum = 28 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 29 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_VIOLENT_REFERENCES AgeRatingContentDescriptionCategoryEnum = 30 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_ANIMATED_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 31 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 32 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 33 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_DRUGS_AND_ALCOHOL AgeRatingContentDescriptionCategoryEnum = 34 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_DRUG_AND_ALCOHOL_REFERENCE AgeRatingContentDescriptionCategoryEnum = 35 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_SUGGESTIVE_THEMES AgeRatingContentDescriptionCategoryEnum = 36 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_CARTOON_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 37 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_BLOOD AgeRatingContentDescriptionCategoryEnum = 38 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_REALISTIC_BLOOD_AND_GORE AgeRatingContentDescriptionCategoryEnum = 39 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_REALISTIC_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 40 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_ALCOHOL_AND_TOBACCO_REFERENCE AgeRatingContentDescriptionCategoryEnum = 41 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MATURE_SEXUAL_THEMES AgeRatingContentDescriptionCategoryEnum = 42 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_ANIMATED_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 43 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_SEXUAL_THEMES AgeRatingContentDescriptionCategoryEnum = 44 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_USE_OF_ALCOHOL_AND_TOBACCO AgeRatingContentDescriptionCategoryEnum = 45 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_ANIMATED_BLOOD_AND_GORE AgeRatingContentDescriptionCategoryEnum = 46 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_FANTASY_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 47 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_MILD_LYRICS AgeRatingContentDescriptionCategoryEnum = 48 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_ESRB_REALISTIC_BLOOD AgeRatingContentDescriptionCategoryEnum = 49 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_PEGI_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 50 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_PEGI_SEX AgeRatingContentDescriptionCategoryEnum = 51 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_PEGI_DRUGS AgeRatingContentDescriptionCategoryEnum = 52 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_PEGI_FEAR AgeRatingContentDescriptionCategoryEnum = 53 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_PEGI_DISCRIMINATION AgeRatingContentDescriptionCategoryEnum = 54 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_PEGI_BAD_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 55 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_PEGI_GAMBLING AgeRatingContentDescriptionCategoryEnum = 56 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_PEGI_ONLINE_GAMEPLAY AgeRatingContentDescriptionCategoryEnum = 57 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_PEGI_IN_GAME_PURCHASES AgeRatingContentDescriptionCategoryEnum = 58 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CERO_LOVE AgeRatingContentDescriptionCategoryEnum = 59 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CERO_SEXUAL_CONTENT AgeRatingContentDescriptionCategoryEnum = 60 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CERO_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 61 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CERO_HORROR AgeRatingContentDescriptionCategoryEnum = 62 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CERO_DRINKING_SMOKING AgeRatingContentDescriptionCategoryEnum = 63 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CERO_GAMBLING AgeRatingContentDescriptionCategoryEnum = 64 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CERO_CRIME AgeRatingContentDescriptionCategoryEnum = 65 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CERO_CONTROLLED_SUBSTANCES AgeRatingContentDescriptionCategoryEnum = 66 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CERO_LANGUAGES_AND_OTHERS AgeRatingContentDescriptionCategoryEnum = 67 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_GRAC_SEXUALITY AgeRatingContentDescriptionCategoryEnum = 68 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_GRAC_VIOLENCE AgeRatingContentDescriptionCategoryEnum = 69 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_GRAC_FEAR_HORROR_THREATENING AgeRatingContentDescriptionCategoryEnum = 70 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_GRAC_LANGUAGE AgeRatingContentDescriptionCategoryEnum = 71 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_GRAC_ALCOHOL_TOBACCO_DRUG AgeRatingContentDescriptionCategoryEnum = 72 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_GRAC_CRIME_ANTI_SOCIAL AgeRatingContentDescriptionCategoryEnum = 73 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_GRAC_GAMBLING AgeRatingContentDescriptionCategoryEnum = 74 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_VIOLENCIA AgeRatingContentDescriptionCategoryEnum = 75 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_VIOLENCIA_EXTREMA AgeRatingContentDescriptionCategoryEnum = 76 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_CONTEUDO_SEXUAL AgeRatingContentDescriptionCategoryEnum = 77 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_NUDEZ AgeRatingContentDescriptionCategoryEnum = 78 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_SEXO AgeRatingContentDescriptionCategoryEnum = 79 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_SEXO_EXPLICITO AgeRatingContentDescriptionCategoryEnum = 80 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_DROGAS AgeRatingContentDescriptionCategoryEnum = 81 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_DROGAS_LICITAS AgeRatingContentDescriptionCategoryEnum = 82 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_DROGAS_ILICITAS AgeRatingContentDescriptionCategoryEnum = 83 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_LINGUAGEM_IMPROPRIA AgeRatingContentDescriptionCategoryEnum = 84 // Deprecated: Marked as deprecated in proto/igdbapi.proto. AgeRatingContentDescriptionCategoryEnum_CLASS_IND_ATOS_CRIMINOSOS AgeRatingContentDescriptionCategoryEnum = 85 ) // Enum value maps for AgeRatingContentDescriptionCategoryEnum. var ( AgeRatingContentDescriptionCategoryEnum_name = map[int32]string{ 0: "AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL", 1: "ESRB_ALCOHOL_REFERENCE", 2: "ESRB_ANIMATED_BLOOD", 3: "ESRB_BLOOD", 4: "ESRB_BLOOD_AND_GORE", 5: "ESRB_CARTOON_VIOLENCE", 6: "ESRB_COMIC_MISCHIEF", 7: "ESRB_CRUDE_HUMOR", 8: "ESRB_DRUG_REFERENCE", 9: "ESRB_FANTASY_VIOLENCE", 10: "ESRB_INTENSE_VIOLENCE", 11: "ESRB_LANGUAGE", 12: "ESRB_LYRICS", 13: "ESRB_MATURE_HUMOR", 14: "ESRB_NUDITY", 15: "ESRB_PARTIAL_NUDITY", 16: "ESRB_REAL_GAMBLING", 17: "ESRB_SEXUAL_CONTENT", 18: "ESRB_SEXUAL_THEMES", 19: "ESRB_SEXUAL_VIOLENCE", 20: "ESRB_SIMULATED_GAMBLING", 21: "ESRB_STRONG_LANGUAGE", 22: "ESRB_STRONG_LYRICS", 23: "ESRB_STRONG_SEXUAL_CONTENT", 24: "ESRB_SUGGESTIVE_THEMES", 25: "ESRB_TOBACCO_REFERENCE", 26: "ESRB_USE_OF_ALCOHOL", 27: "ESRB_USE_OF_DRUGS", 28: "ESRB_USE_OF_TOBACCO", 29: "ESRB_VIOLENCE", 30: "ESRB_VIOLENT_REFERENCES", 31: "ESRB_ANIMATED_VIOLENCE", 32: "ESRB_MILD_LANGUAGE", 33: "ESRB_MILD_VIOLENCE", 34: "ESRB_USE_OF_DRUGS_AND_ALCOHOL", 35: "ESRB_DRUG_AND_ALCOHOL_REFERENCE", 36: "ESRB_MILD_SUGGESTIVE_THEMES", 37: "ESRB_MILD_CARTOON_VIOLENCE", 38: "ESRB_MILD_BLOOD", 39: "ESRB_REALISTIC_BLOOD_AND_GORE", 40: "ESRB_REALISTIC_VIOLENCE", 41: "ESRB_ALCOHOL_AND_TOBACCO_REFERENCE", 42: "ESRB_MATURE_SEXUAL_THEMES", 43: "ESRB_MILD_ANIMATED_VIOLENCE", 44: "ESRB_MILD_SEXUAL_THEMES", 45: "ESRB_USE_OF_ALCOHOL_AND_TOBACCO", 46: "ESRB_ANIMATED_BLOOD_AND_GORE", 47: "ESRB_MILD_FANTASY_VIOLENCE", 48: "ESRB_MILD_LYRICS", 49: "ESRB_REALISTIC_BLOOD", 50: "PEGI_VIOLENCE", 51: "PEGI_SEX", 52: "PEGI_DRUGS", 53: "PEGI_FEAR", 54: "PEGI_DISCRIMINATION", 55: "PEGI_BAD_LANGUAGE", 56: "PEGI_GAMBLING", 57: "PEGI_ONLINE_GAMEPLAY", 58: "PEGI_IN_GAME_PURCHASES", 59: "CERO_LOVE", 60: "CERO_SEXUAL_CONTENT", 61: "CERO_VIOLENCE", 62: "CERO_HORROR", 63: "CERO_DRINKING_SMOKING", 64: "CERO_GAMBLING", 65: "CERO_CRIME", 66: "CERO_CONTROLLED_SUBSTANCES", 67: "CERO_LANGUAGES_AND_OTHERS", 68: "GRAC_SEXUALITY", 69: "GRAC_VIOLENCE", 70: "GRAC_FEAR_HORROR_THREATENING", 71: "GRAC_LANGUAGE", 72: "GRAC_ALCOHOL_TOBACCO_DRUG", 73: "GRAC_CRIME_ANTI_SOCIAL", 74: "GRAC_GAMBLING", 75: "CLASS_IND_VIOLENCIA", 76: "CLASS_IND_VIOLENCIA_EXTREMA", 77: "CLASS_IND_CONTEUDO_SEXUAL", 78: "CLASS_IND_NUDEZ", 79: "CLASS_IND_SEXO", 80: "CLASS_IND_SEXO_EXPLICITO", 81: "CLASS_IND_DROGAS", 82: "CLASS_IND_DROGAS_LICITAS", 83: "CLASS_IND_DROGAS_ILICITAS", 84: "CLASS_IND_LINGUAGEM_IMPROPRIA", 85: "CLASS_IND_ATOS_CRIMINOSOS", } AgeRatingContentDescriptionCategoryEnum_value = map[string]int32{ "AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL": 0, "ESRB_ALCOHOL_REFERENCE": 1, "ESRB_ANIMATED_BLOOD": 2, "ESRB_BLOOD": 3, "ESRB_BLOOD_AND_GORE": 4, "ESRB_CARTOON_VIOLENCE": 5, "ESRB_COMIC_MISCHIEF": 6, "ESRB_CRUDE_HUMOR": 7, "ESRB_DRUG_REFERENCE": 8, "ESRB_FANTASY_VIOLENCE": 9, "ESRB_INTENSE_VIOLENCE": 10, "ESRB_LANGUAGE": 11, "ESRB_LYRICS": 12, "ESRB_MATURE_HUMOR": 13, "ESRB_NUDITY": 14, "ESRB_PARTIAL_NUDITY": 15, "ESRB_REAL_GAMBLING": 16, "ESRB_SEXUAL_CONTENT": 17, "ESRB_SEXUAL_THEMES": 18, "ESRB_SEXUAL_VIOLENCE": 19, "ESRB_SIMULATED_GAMBLING": 20, "ESRB_STRONG_LANGUAGE": 21, "ESRB_STRONG_LYRICS": 22, "ESRB_STRONG_SEXUAL_CONTENT": 23, "ESRB_SUGGESTIVE_THEMES": 24, "ESRB_TOBACCO_REFERENCE": 25, "ESRB_USE_OF_ALCOHOL": 26, "ESRB_USE_OF_DRUGS": 27, "ESRB_USE_OF_TOBACCO": 28, "ESRB_VIOLENCE": 29, "ESRB_VIOLENT_REFERENCES": 30, "ESRB_ANIMATED_VIOLENCE": 31, "ESRB_MILD_LANGUAGE": 32, "ESRB_MILD_VIOLENCE": 33, "ESRB_USE_OF_DRUGS_AND_ALCOHOL": 34, "ESRB_DRUG_AND_ALCOHOL_REFERENCE": 35, "ESRB_MILD_SUGGESTIVE_THEMES": 36, "ESRB_MILD_CARTOON_VIOLENCE": 37, "ESRB_MILD_BLOOD": 38, "ESRB_REALISTIC_BLOOD_AND_GORE": 39, "ESRB_REALISTIC_VIOLENCE": 40, "ESRB_ALCOHOL_AND_TOBACCO_REFERENCE": 41, "ESRB_MATURE_SEXUAL_THEMES": 42, "ESRB_MILD_ANIMATED_VIOLENCE": 43, "ESRB_MILD_SEXUAL_THEMES": 44, "ESRB_USE_OF_ALCOHOL_AND_TOBACCO": 45, "ESRB_ANIMATED_BLOOD_AND_GORE": 46, "ESRB_MILD_FANTASY_VIOLENCE": 47, "ESRB_MILD_LYRICS": 48, "ESRB_REALISTIC_BLOOD": 49, "PEGI_VIOLENCE": 50, "PEGI_SEX": 51, "PEGI_DRUGS": 52, "PEGI_FEAR": 53, "PEGI_DISCRIMINATION": 54, "PEGI_BAD_LANGUAGE": 55, "PEGI_GAMBLING": 56, "PEGI_ONLINE_GAMEPLAY": 57, "PEGI_IN_GAME_PURCHASES": 58, "CERO_LOVE": 59, "CERO_SEXUAL_CONTENT": 60, "CERO_VIOLENCE": 61, "CERO_HORROR": 62, "CERO_DRINKING_SMOKING": 63, "CERO_GAMBLING": 64, "CERO_CRIME": 65, "CERO_CONTROLLED_SUBSTANCES": 66, "CERO_LANGUAGES_AND_OTHERS": 67, "GRAC_SEXUALITY": 68, "GRAC_VIOLENCE": 69, "GRAC_FEAR_HORROR_THREATENING": 70, "GRAC_LANGUAGE": 71, "GRAC_ALCOHOL_TOBACCO_DRUG": 72, "GRAC_CRIME_ANTI_SOCIAL": 73, "GRAC_GAMBLING": 74, "CLASS_IND_VIOLENCIA": 75, "CLASS_IND_VIOLENCIA_EXTREMA": 76, "CLASS_IND_CONTEUDO_SEXUAL": 77, "CLASS_IND_NUDEZ": 78, "CLASS_IND_SEXO": 79, "CLASS_IND_SEXO_EXPLICITO": 80, "CLASS_IND_DROGAS": 81, "CLASS_IND_DROGAS_LICITAS": 82, "CLASS_IND_DROGAS_ILICITAS": 83, "CLASS_IND_LINGUAGEM_IMPROPRIA": 84, "CLASS_IND_ATOS_CRIMINOSOS": 85, } ) func (x AgeRatingContentDescriptionCategoryEnum) Enum() *AgeRatingContentDescriptionCategoryEnum { p := new(AgeRatingContentDescriptionCategoryEnum) *p = x return p } func (x AgeRatingContentDescriptionCategoryEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (AgeRatingContentDescriptionCategoryEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[2].Descriptor() } func (AgeRatingContentDescriptionCategoryEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[2] } func (x AgeRatingContentDescriptionCategoryEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use AgeRatingContentDescriptionCategoryEnum.Descriptor instead. func (AgeRatingContentDescriptionCategoryEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{2} } type GenderGenderEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. GenderGenderEnum_MALE GenderGenderEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GenderGenderEnum_FEMALE GenderGenderEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GenderGenderEnum_OTHER GenderGenderEnum = 2 ) // Enum value maps for GenderGenderEnum. var ( GenderGenderEnum_name = map[int32]string{ 0: "MALE", 1: "FEMALE", 2: "OTHER", } GenderGenderEnum_value = map[string]int32{ "MALE": 0, "FEMALE": 1, "OTHER": 2, } ) func (x GenderGenderEnum) Enum() *GenderGenderEnum { p := new(GenderGenderEnum) *p = x return p } func (x GenderGenderEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GenderGenderEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[3].Descriptor() } func (GenderGenderEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[3] } func (x GenderGenderEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GenderGenderEnum.Descriptor instead. func (GenderGenderEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{3} } type CharacterSpeciesEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. CharacterSpeciesEnum_CHARACTER_SPECIES_NULL CharacterSpeciesEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. CharacterSpeciesEnum_HUMAN CharacterSpeciesEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. CharacterSpeciesEnum_ALIEN CharacterSpeciesEnum = 2 // Deprecated: Marked as deprecated in proto/igdbapi.proto. CharacterSpeciesEnum_ANIMAL CharacterSpeciesEnum = 3 // Deprecated: Marked as deprecated in proto/igdbapi.proto. CharacterSpeciesEnum_ANDROID CharacterSpeciesEnum = 4 // Deprecated: Marked as deprecated in proto/igdbapi.proto. CharacterSpeciesEnum_UNKNOWN CharacterSpeciesEnum = 5 ) // Enum value maps for CharacterSpeciesEnum. var ( CharacterSpeciesEnum_name = map[int32]string{ 0: "CHARACTER_SPECIES_NULL", 1: "HUMAN", 2: "ALIEN", 3: "ANIMAL", 4: "ANDROID", 5: "UNKNOWN", } CharacterSpeciesEnum_value = map[string]int32{ "CHARACTER_SPECIES_NULL": 0, "HUMAN": 1, "ALIEN": 2, "ANIMAL": 3, "ANDROID": 4, "UNKNOWN": 5, } ) func (x CharacterSpeciesEnum) Enum() *CharacterSpeciesEnum { p := new(CharacterSpeciesEnum) *p = x return p } func (x CharacterSpeciesEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CharacterSpeciesEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[4].Descriptor() } func (CharacterSpeciesEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[4] } func (x CharacterSpeciesEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use CharacterSpeciesEnum.Descriptor instead. func (CharacterSpeciesEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{4} } type DateFormatChangeDateCategoryEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. DateFormatChangeDateCategoryEnum_YYYYMMMMDD DateFormatChangeDateCategoryEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. DateFormatChangeDateCategoryEnum_YYYYMMMM DateFormatChangeDateCategoryEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. DateFormatChangeDateCategoryEnum_YYYY DateFormatChangeDateCategoryEnum = 2 // Deprecated: Marked as deprecated in proto/igdbapi.proto. DateFormatChangeDateCategoryEnum_YYYYQ1 DateFormatChangeDateCategoryEnum = 3 // Deprecated: Marked as deprecated in proto/igdbapi.proto. DateFormatChangeDateCategoryEnum_YYYYQ2 DateFormatChangeDateCategoryEnum = 4 // Deprecated: Marked as deprecated in proto/igdbapi.proto. DateFormatChangeDateCategoryEnum_YYYYQ3 DateFormatChangeDateCategoryEnum = 5 // Deprecated: Marked as deprecated in proto/igdbapi.proto. DateFormatChangeDateCategoryEnum_YYYYQ4 DateFormatChangeDateCategoryEnum = 6 // Deprecated: Marked as deprecated in proto/igdbapi.proto. DateFormatChangeDateCategoryEnum_TBD DateFormatChangeDateCategoryEnum = 7 ) // Enum value maps for DateFormatChangeDateCategoryEnum. var ( DateFormatChangeDateCategoryEnum_name = map[int32]string{ 0: "YYYYMMMMDD", 1: "YYYYMMMM", 2: "YYYY", 3: "YYYYQ1", 4: "YYYYQ2", 5: "YYYYQ3", 6: "YYYYQ4", 7: "TBD", } DateFormatChangeDateCategoryEnum_value = map[string]int32{ "YYYYMMMMDD": 0, "YYYYMMMM": 1, "YYYY": 2, "YYYYQ1": 3, "YYYYQ2": 4, "YYYYQ3": 5, "YYYYQ4": 6, "TBD": 7, } ) func (x DateFormatChangeDateCategoryEnum) Enum() *DateFormatChangeDateCategoryEnum { p := new(DateFormatChangeDateCategoryEnum) *p = x return p } func (x DateFormatChangeDateCategoryEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DateFormatChangeDateCategoryEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[5].Descriptor() } func (DateFormatChangeDateCategoryEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[5] } func (x DateFormatChangeDateCategoryEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use DateFormatChangeDateCategoryEnum.Descriptor instead. func (DateFormatChangeDateCategoryEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{5} } type WebsiteCategoryEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL WebsiteCategoryEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_OFFICIAL WebsiteCategoryEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_WIKIA WebsiteCategoryEnum = 2 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_WIKIPEDIA WebsiteCategoryEnum = 3 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_FACEBOOK WebsiteCategoryEnum = 4 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_TWITTER WebsiteCategoryEnum = 5 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_TWITCH WebsiteCategoryEnum = 6 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_INSTAGRAM WebsiteCategoryEnum = 8 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_YOUTUBE WebsiteCategoryEnum = 9 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_IPHONE WebsiteCategoryEnum = 10 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_IPAD WebsiteCategoryEnum = 11 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_ANDROID WebsiteCategoryEnum = 12 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_STEAM WebsiteCategoryEnum = 13 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_REDDIT WebsiteCategoryEnum = 14 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_ITCH WebsiteCategoryEnum = 15 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_EPICGAMES WebsiteCategoryEnum = 16 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_GOG WebsiteCategoryEnum = 17 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_DISCORD WebsiteCategoryEnum = 18 // Deprecated: Marked as deprecated in proto/igdbapi.proto. WebsiteCategoryEnum_WEBSITE_BLUESKY WebsiteCategoryEnum = 19 ) // Enum value maps for WebsiteCategoryEnum. var ( WebsiteCategoryEnum_name = map[int32]string{ 0: "WEBSITE_CATEGORY_NULL", 1: "WEBSITE_OFFICIAL", 2: "WEBSITE_WIKIA", 3: "WEBSITE_WIKIPEDIA", 4: "WEBSITE_FACEBOOK", 5: "WEBSITE_TWITTER", 6: "WEBSITE_TWITCH", 8: "WEBSITE_INSTAGRAM", 9: "WEBSITE_YOUTUBE", 10: "WEBSITE_IPHONE", 11: "WEBSITE_IPAD", 12: "WEBSITE_ANDROID", 13: "WEBSITE_STEAM", 14: "WEBSITE_REDDIT", 15: "WEBSITE_ITCH", 16: "WEBSITE_EPICGAMES", 17: "WEBSITE_GOG", 18: "WEBSITE_DISCORD", 19: "WEBSITE_BLUESKY", } WebsiteCategoryEnum_value = map[string]int32{ "WEBSITE_CATEGORY_NULL": 0, "WEBSITE_OFFICIAL": 1, "WEBSITE_WIKIA": 2, "WEBSITE_WIKIPEDIA": 3, "WEBSITE_FACEBOOK": 4, "WEBSITE_TWITTER": 5, "WEBSITE_TWITCH": 6, "WEBSITE_INSTAGRAM": 8, "WEBSITE_YOUTUBE": 9, "WEBSITE_IPHONE": 10, "WEBSITE_IPAD": 11, "WEBSITE_ANDROID": 12, "WEBSITE_STEAM": 13, "WEBSITE_REDDIT": 14, "WEBSITE_ITCH": 15, "WEBSITE_EPICGAMES": 16, "WEBSITE_GOG": 17, "WEBSITE_DISCORD": 18, "WEBSITE_BLUESKY": 19, } ) func (x WebsiteCategoryEnum) Enum() *WebsiteCategoryEnum { p := new(WebsiteCategoryEnum) *p = x return p } func (x WebsiteCategoryEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (WebsiteCategoryEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[6].Descriptor() } func (WebsiteCategoryEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[6] } func (x WebsiteCategoryEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use WebsiteCategoryEnum.Descriptor instead. func (WebsiteCategoryEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{6} } type ExternalGameCategoryEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_CATEGORY_NULL ExternalGameCategoryEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_STEAM ExternalGameCategoryEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_GOG ExternalGameCategoryEnum = 5 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_YOUTUBE ExternalGameCategoryEnum = 10 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_MICROSOFT ExternalGameCategoryEnum = 11 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_APPLE ExternalGameCategoryEnum = 13 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_TWITCH ExternalGameCategoryEnum = 14 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_ANDROID ExternalGameCategoryEnum = 15 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_AMAZON_ASIN ExternalGameCategoryEnum = 20 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_AMAZON_LUNA ExternalGameCategoryEnum = 22 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_AMAZON_ADG ExternalGameCategoryEnum = 23 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_EPIC_GAME_STORE ExternalGameCategoryEnum = 26 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_OCULUS ExternalGameCategoryEnum = 28 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_UTOMIK ExternalGameCategoryEnum = 29 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_ITCH_IO ExternalGameCategoryEnum = 30 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_XBOX_MARKETPLACE ExternalGameCategoryEnum = 31 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_KARTRIDGE ExternalGameCategoryEnum = 32 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_PLAYSTATION_STORE_US ExternalGameCategoryEnum = 36 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_FOCUS_ENTERTAINMENT ExternalGameCategoryEnum = 37 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD ExternalGameCategoryEnum = 54 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameCategoryEnum_EXTERNALGAME_GAMEJOLT ExternalGameCategoryEnum = 55 ) // Enum value maps for ExternalGameCategoryEnum. var ( ExternalGameCategoryEnum_name = map[int32]string{ 0: "EXTERNALGAME_CATEGORY_NULL", 1: "EXTERNALGAME_STEAM", 5: "EXTERNALGAME_GOG", 10: "EXTERNALGAME_YOUTUBE", 11: "EXTERNALGAME_MICROSOFT", 13: "EXTERNALGAME_APPLE", 14: "EXTERNALGAME_TWITCH", 15: "EXTERNALGAME_ANDROID", 20: "EXTERNALGAME_AMAZON_ASIN", 22: "EXTERNALGAME_AMAZON_LUNA", 23: "EXTERNALGAME_AMAZON_ADG", 26: "EXTERNALGAME_EPIC_GAME_STORE", 28: "EXTERNALGAME_OCULUS", 29: "EXTERNALGAME_UTOMIK", 30: "EXTERNALGAME_ITCH_IO", 31: "EXTERNALGAME_XBOX_MARKETPLACE", 32: "EXTERNALGAME_KARTRIDGE", 36: "EXTERNALGAME_PLAYSTATION_STORE_US", 37: "EXTERNALGAME_FOCUS_ENTERTAINMENT", 54: "EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD", 55: "EXTERNALGAME_GAMEJOLT", } ExternalGameCategoryEnum_value = map[string]int32{ "EXTERNALGAME_CATEGORY_NULL": 0, "EXTERNALGAME_STEAM": 1, "EXTERNALGAME_GOG": 5, "EXTERNALGAME_YOUTUBE": 10, "EXTERNALGAME_MICROSOFT": 11, "EXTERNALGAME_APPLE": 13, "EXTERNALGAME_TWITCH": 14, "EXTERNALGAME_ANDROID": 15, "EXTERNALGAME_AMAZON_ASIN": 20, "EXTERNALGAME_AMAZON_LUNA": 22, "EXTERNALGAME_AMAZON_ADG": 23, "EXTERNALGAME_EPIC_GAME_STORE": 26, "EXTERNALGAME_OCULUS": 28, "EXTERNALGAME_UTOMIK": 29, "EXTERNALGAME_ITCH_IO": 30, "EXTERNALGAME_XBOX_MARKETPLACE": 31, "EXTERNALGAME_KARTRIDGE": 32, "EXTERNALGAME_PLAYSTATION_STORE_US": 36, "EXTERNALGAME_FOCUS_ENTERTAINMENT": 37, "EXTERNALGAME_XBOX_GAME_PASS_ULTIMATE_CLOUD": 54, "EXTERNALGAME_GAMEJOLT": 55, } ) func (x ExternalGameCategoryEnum) Enum() *ExternalGameCategoryEnum { p := new(ExternalGameCategoryEnum) *p = x return p } func (x ExternalGameCategoryEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ExternalGameCategoryEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[7].Descriptor() } func (ExternalGameCategoryEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[7] } func (x ExternalGameCategoryEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ExternalGameCategoryEnum.Descriptor instead. func (ExternalGameCategoryEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{7} } type ExternalGameMediaEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameMediaEnum_EXTERNALGAME_MEDIA_NULL ExternalGameMediaEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameMediaEnum_EXTERNALGAME_DIGITAL ExternalGameMediaEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. ExternalGameMediaEnum_EXTERNALGAME_PHYSICAL ExternalGameMediaEnum = 2 ) // Enum value maps for ExternalGameMediaEnum. var ( ExternalGameMediaEnum_name = map[int32]string{ 0: "EXTERNALGAME_MEDIA_NULL", 1: "EXTERNALGAME_DIGITAL", 2: "EXTERNALGAME_PHYSICAL", } ExternalGameMediaEnum_value = map[string]int32{ "EXTERNALGAME_MEDIA_NULL": 0, "EXTERNALGAME_DIGITAL": 1, "EXTERNALGAME_PHYSICAL": 2, } ) func (x ExternalGameMediaEnum) Enum() *ExternalGameMediaEnum { p := new(ExternalGameMediaEnum) *p = x return p } func (x ExternalGameMediaEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ExternalGameMediaEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[8].Descriptor() } func (ExternalGameMediaEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[8] } func (x ExternalGameMediaEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ExternalGameMediaEnum.Descriptor instead. func (ExternalGameMediaEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{8} } type GameCategoryEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_MAIN_GAME GameCategoryEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_DLC_ADDON GameCategoryEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_EXPANSION GameCategoryEnum = 2 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_BUNDLE GameCategoryEnum = 3 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_STANDALONE_EXPANSION GameCategoryEnum = 4 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_MOD GameCategoryEnum = 5 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_EPISODE GameCategoryEnum = 6 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_SEASON GameCategoryEnum = 7 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_REMAKE GameCategoryEnum = 8 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_REMASTER GameCategoryEnum = 9 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_EXPANDED_GAME GameCategoryEnum = 10 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_PORT GameCategoryEnum = 11 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_FORK GameCategoryEnum = 12 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_PACK GameCategoryEnum = 13 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameCategoryEnum_UPDATE GameCategoryEnum = 14 ) // Enum value maps for GameCategoryEnum. var ( GameCategoryEnum_name = map[int32]string{ 0: "MAIN_GAME", 1: "DLC_ADDON", 2: "EXPANSION", 3: "BUNDLE", 4: "STANDALONE_EXPANSION", 5: "MOD", 6: "EPISODE", 7: "SEASON", 8: "REMAKE", 9: "REMASTER", 10: "EXPANDED_GAME", 11: "PORT", 12: "FORK", 13: "PACK", 14: "UPDATE", } GameCategoryEnum_value = map[string]int32{ "MAIN_GAME": 0, "DLC_ADDON": 1, "EXPANSION": 2, "BUNDLE": 3, "STANDALONE_EXPANSION": 4, "MOD": 5, "EPISODE": 6, "SEASON": 7, "REMAKE": 8, "REMASTER": 9, "EXPANDED_GAME": 10, "PORT": 11, "FORK": 12, "PACK": 13, "UPDATE": 14, } ) func (x GameCategoryEnum) Enum() *GameCategoryEnum { p := new(GameCategoryEnum) *p = x return p } func (x GameCategoryEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GameCategoryEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[9].Descriptor() } func (GameCategoryEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[9] } func (x GameCategoryEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GameCategoryEnum.Descriptor instead. func (GameCategoryEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{9} } type GameStatusEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameStatusEnum_RELEASED GameStatusEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameStatusEnum_ALPHA GameStatusEnum = 2 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameStatusEnum_BETA GameStatusEnum = 3 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameStatusEnum_EARLY_ACCESS GameStatusEnum = 4 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameStatusEnum_OFFLINE GameStatusEnum = 5 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameStatusEnum_CANCELLED GameStatusEnum = 6 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameStatusEnum_RUMORED GameStatusEnum = 7 // Deprecated: Marked as deprecated in proto/igdbapi.proto. GameStatusEnum_DELISTED GameStatusEnum = 8 ) // Enum value maps for GameStatusEnum. var ( GameStatusEnum_name = map[int32]string{ 0: "RELEASED", 2: "ALPHA", 3: "BETA", 4: "EARLY_ACCESS", 5: "OFFLINE", 6: "CANCELLED", 7: "RUMORED", 8: "DELISTED", } GameStatusEnum_value = map[string]int32{ "RELEASED": 0, "ALPHA": 2, "BETA": 3, "EARLY_ACCESS": 4, "OFFLINE": 5, "CANCELLED": 6, "RUMORED": 7, "DELISTED": 8, } ) func (x GameStatusEnum) Enum() *GameStatusEnum { p := new(GameStatusEnum) *p = x return p } func (x GameStatusEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GameStatusEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[10].Descriptor() } func (GameStatusEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[10] } func (x GameStatusEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GameStatusEnum.Descriptor instead. func (GameStatusEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{10} } type GameVersionFeatureCategoryEnum int32 const ( GameVersionFeatureCategoryEnum_BOOLEAN GameVersionFeatureCategoryEnum = 0 GameVersionFeatureCategoryEnum_DESCRIPTION GameVersionFeatureCategoryEnum = 1 ) // Enum value maps for GameVersionFeatureCategoryEnum. var ( GameVersionFeatureCategoryEnum_name = map[int32]string{ 0: "BOOLEAN", 1: "DESCRIPTION", } GameVersionFeatureCategoryEnum_value = map[string]int32{ "BOOLEAN": 0, "DESCRIPTION": 1, } ) func (x GameVersionFeatureCategoryEnum) Enum() *GameVersionFeatureCategoryEnum { p := new(GameVersionFeatureCategoryEnum) *p = x return p } func (x GameVersionFeatureCategoryEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GameVersionFeatureCategoryEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[11].Descriptor() } func (GameVersionFeatureCategoryEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[11] } func (x GameVersionFeatureCategoryEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GameVersionFeatureCategoryEnum.Descriptor instead. func (GameVersionFeatureCategoryEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{11} } type GameVersionFeatureValueIncludedFeatureEnum int32 const ( GameVersionFeatureValueIncludedFeatureEnum_NOT_INCLUDED GameVersionFeatureValueIncludedFeatureEnum = 0 GameVersionFeatureValueIncludedFeatureEnum_INCLUDED GameVersionFeatureValueIncludedFeatureEnum = 1 GameVersionFeatureValueIncludedFeatureEnum_PRE_ORDER_ONLY GameVersionFeatureValueIncludedFeatureEnum = 2 ) // Enum value maps for GameVersionFeatureValueIncludedFeatureEnum. var ( GameVersionFeatureValueIncludedFeatureEnum_name = map[int32]string{ 0: "NOT_INCLUDED", 1: "INCLUDED", 2: "PRE_ORDER_ONLY", } GameVersionFeatureValueIncludedFeatureEnum_value = map[string]int32{ "NOT_INCLUDED": 0, "INCLUDED": 1, "PRE_ORDER_ONLY": 2, } ) func (x GameVersionFeatureValueIncludedFeatureEnum) Enum() *GameVersionFeatureValueIncludedFeatureEnum { p := new(GameVersionFeatureValueIncludedFeatureEnum) *p = x return p } func (x GameVersionFeatureValueIncludedFeatureEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (GameVersionFeatureValueIncludedFeatureEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[12].Descriptor() } func (GameVersionFeatureValueIncludedFeatureEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[12] } func (x GameVersionFeatureValueIncludedFeatureEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use GameVersionFeatureValueIncludedFeatureEnum.Descriptor instead. func (GameVersionFeatureValueIncludedFeatureEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{12} } type PlatformCategoryEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. PlatformCategoryEnum_PLATFORM_CATEGORY_NULL PlatformCategoryEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. PlatformCategoryEnum_CONSOLE PlatformCategoryEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. PlatformCategoryEnum_ARCADE PlatformCategoryEnum = 2 // Deprecated: Marked as deprecated in proto/igdbapi.proto. PlatformCategoryEnum_PLATFORM PlatformCategoryEnum = 3 // Deprecated: Marked as deprecated in proto/igdbapi.proto. PlatformCategoryEnum_OPERATING_SYSTEM PlatformCategoryEnum = 4 // Deprecated: Marked as deprecated in proto/igdbapi.proto. PlatformCategoryEnum_PORTABLE_CONSOLE PlatformCategoryEnum = 5 // Deprecated: Marked as deprecated in proto/igdbapi.proto. PlatformCategoryEnum_COMPUTER PlatformCategoryEnum = 6 ) // Enum value maps for PlatformCategoryEnum. var ( PlatformCategoryEnum_name = map[int32]string{ 0: "PLATFORM_CATEGORY_NULL", 1: "CONSOLE", 2: "ARCADE", 3: "PLATFORM", 4: "OPERATING_SYSTEM", 5: "PORTABLE_CONSOLE", 6: "COMPUTER", } PlatformCategoryEnum_value = map[string]int32{ "PLATFORM_CATEGORY_NULL": 0, "CONSOLE": 1, "ARCADE": 2, "PLATFORM": 3, "OPERATING_SYSTEM": 4, "PORTABLE_CONSOLE": 5, "COMPUTER": 6, } ) func (x PlatformCategoryEnum) Enum() *PlatformCategoryEnum { p := new(PlatformCategoryEnum) *p = x return p } func (x PlatformCategoryEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (PlatformCategoryEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[13].Descriptor() } func (PlatformCategoryEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[13] } func (x PlatformCategoryEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use PlatformCategoryEnum.Descriptor instead. func (PlatformCategoryEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{13} } type RegionRegionEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_REGION_REGION_NULL RegionRegionEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_EUROPE RegionRegionEnum = 1 // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_NORTH_AMERICA RegionRegionEnum = 2 // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_AUSTRALIA RegionRegionEnum = 3 // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_NEW_ZEALAND RegionRegionEnum = 4 // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_JAPAN RegionRegionEnum = 5 // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_CHINA RegionRegionEnum = 6 // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_ASIA RegionRegionEnum = 7 // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_WORLDWIDE RegionRegionEnum = 8 // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_KOREA RegionRegionEnum = 9 // Deprecated: Marked as deprecated in proto/igdbapi.proto. RegionRegionEnum_BRAZIL RegionRegionEnum = 10 ) // Enum value maps for RegionRegionEnum. var ( RegionRegionEnum_name = map[int32]string{ 0: "REGION_REGION_NULL", 1: "EUROPE", 2: "NORTH_AMERICA", 3: "AUSTRALIA", 4: "NEW_ZEALAND", 5: "JAPAN", 6: "CHINA", 7: "ASIA", 8: "WORLDWIDE", 9: "KOREA", 10: "BRAZIL", } RegionRegionEnum_value = map[string]int32{ "REGION_REGION_NULL": 0, "EUROPE": 1, "NORTH_AMERICA": 2, "AUSTRALIA": 3, "NEW_ZEALAND": 4, "JAPAN": 5, "CHINA": 6, "ASIA": 7, "WORLDWIDE": 8, "KOREA": 9, "BRAZIL": 10, } ) func (x RegionRegionEnum) Enum() *RegionRegionEnum { p := new(RegionRegionEnum) *p = x return p } func (x RegionRegionEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (RegionRegionEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[14].Descriptor() } func (RegionRegionEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[14] } func (x RegionRegionEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use RegionRegionEnum.Descriptor instead. func (RegionRegionEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{14} } type PopularitySourcePopularitySourceEnum int32 const ( // Deprecated: Marked as deprecated in proto/igdbapi.proto. PopularitySourcePopularitySourceEnum_POPULARITYSOURCE_POPULARITY_SOURCE_NULL PopularitySourcePopularitySourceEnum = 0 // Deprecated: Marked as deprecated in proto/igdbapi.proto. PopularitySourcePopularitySourceEnum_IGDB PopularitySourcePopularitySourceEnum = 121 ) // Enum value maps for PopularitySourcePopularitySourceEnum. var ( PopularitySourcePopularitySourceEnum_name = map[int32]string{ 0: "POPULARITYSOURCE_POPULARITY_SOURCE_NULL", 121: "IGDB", } PopularitySourcePopularitySourceEnum_value = map[string]int32{ "POPULARITYSOURCE_POPULARITY_SOURCE_NULL": 0, "IGDB": 121, } ) func (x PopularitySourcePopularitySourceEnum) Enum() *PopularitySourcePopularitySourceEnum { p := new(PopularitySourcePopularitySourceEnum) *p = x return p } func (x PopularitySourcePopularitySourceEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (PopularitySourcePopularitySourceEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[15].Descriptor() } func (PopularitySourcePopularitySourceEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[15] } func (x PopularitySourcePopularitySourceEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use PopularitySourcePopularitySourceEnum.Descriptor instead. func (PopularitySourcePopularitySourceEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{15} } type TestDummyEnumTestEnum int32 const ( TestDummyEnumTestEnum_TESTDUMMY_ENUM_TEST_NULL TestDummyEnumTestEnum = 0 TestDummyEnumTestEnum_ENUM1 TestDummyEnumTestEnum = 1 TestDummyEnumTestEnum_ENUM2 TestDummyEnumTestEnum = 2 ) // Enum value maps for TestDummyEnumTestEnum. var ( TestDummyEnumTestEnum_name = map[int32]string{ 0: "TESTDUMMY_ENUM_TEST_NULL", 1: "ENUM1", 2: "ENUM2", } TestDummyEnumTestEnum_value = map[string]int32{ "TESTDUMMY_ENUM_TEST_NULL": 0, "ENUM1": 1, "ENUM2": 2, } ) func (x TestDummyEnumTestEnum) Enum() *TestDummyEnumTestEnum { p := new(TestDummyEnumTestEnum) *p = x return p } func (x TestDummyEnumTestEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (TestDummyEnumTestEnum) Descriptor() protoreflect.EnumDescriptor { return file_proto_igdbapi_proto_enumTypes[16].Descriptor() } func (TestDummyEnumTestEnum) Type() protoreflect.EnumType { return &file_proto_igdbapi_proto_enumTypes[16] } func (x TestDummyEnumTestEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use TestDummyEnumTestEnum.Descriptor instead. func (TestDummyEnumTestEnum) EnumDescriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{16} } type Count struct { state protoimpl.MessageState `protogen:"open.v1"` Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Count) Reset() { *x = Count{} mi := &file_proto_igdbapi_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Count) String() string { return protoimpl.X.MessageStringOf(x) } func (*Count) ProtoMessage() {} func (x *Count) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Count.ProtoReflect.Descriptor instead. func (*Count) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{0} } func (x *Count) GetCount() int64 { if x != nil { return x.Count } return 0 } type MultiQueryResult struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Results [][]byte `protobuf:"bytes,2,rep,name=results,proto3" json:"results,omitempty"` Count int64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *MultiQueryResult) Reset() { *x = MultiQueryResult{} mi := &file_proto_igdbapi_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *MultiQueryResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*MultiQueryResult) ProtoMessage() {} func (x *MultiQueryResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use MultiQueryResult.ProtoReflect.Descriptor instead. func (*MultiQueryResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{1} } func (x *MultiQueryResult) GetName() string { if x != nil { return x.Name } return "" } func (x *MultiQueryResult) GetResults() [][]byte { if x != nil { return x.Results } return nil } func (x *MultiQueryResult) GetCount() int64 { if x != nil { return x.Count } return 0 } type MultiQueryResultArray struct { state protoimpl.MessageState `protogen:"open.v1"` Result []*MultiQueryResult `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *MultiQueryResultArray) Reset() { *x = MultiQueryResultArray{} mi := &file_proto_igdbapi_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *MultiQueryResultArray) String() string { return protoimpl.X.MessageStringOf(x) } func (*MultiQueryResultArray) ProtoMessage() {} func (x *MultiQueryResultArray) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use MultiQueryResultArray.ProtoReflect.Descriptor instead. func (*MultiQueryResultArray) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{2} } func (x *MultiQueryResultArray) GetResult() []*MultiQueryResult { if x != nil { return x.Result } return nil } type AgeRatingResult struct { state protoimpl.MessageState `protogen:"open.v1"` Ageratings []*AgeRating `protobuf:"bytes,1,rep,name=ageratings,proto3" json:"ageratings,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AgeRatingResult) Reset() { *x = AgeRatingResult{} mi := &file_proto_igdbapi_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AgeRatingResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgeRatingResult) ProtoMessage() {} func (x *AgeRatingResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgeRatingResult.ProtoReflect.Descriptor instead. func (*AgeRatingResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{3} } func (x *AgeRatingResult) GetAgeratings() []*AgeRating { if x != nil { return x.Ageratings } return nil } type AgeRating struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Category AgeRatingCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.AgeRatingCategoryEnum" json:"category,omitempty"` ContentDescriptions []*AgeRatingContentDescription `protobuf:"bytes,3,rep,name=content_descriptions,json=contentDescriptions,proto3" json:"content_descriptions,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Rating AgeRatingRatingEnum `protobuf:"varint,4,opt,name=rating,proto3,enum=proto.AgeRatingRatingEnum" json:"rating,omitempty"` RatingCoverUrl string `protobuf:"bytes,5,opt,name=rating_cover_url,json=ratingCoverUrl,proto3" json:"rating_cover_url,omitempty"` Synopsis string `protobuf:"bytes,6,opt,name=synopsis,proto3" json:"synopsis,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` Organization *AgeRatingOrganization `protobuf:"bytes,8,opt,name=organization,proto3" json:"organization,omitempty"` RatingCategory *AgeRatingCategory `protobuf:"bytes,9,opt,name=rating_category,json=ratingCategory,proto3" json:"rating_category,omitempty"` RatingContentDescriptions []*AgeRatingContentDescriptionV2 `protobuf:"bytes,10,rep,name=rating_content_descriptions,json=ratingContentDescriptions,proto3" json:"rating_content_descriptions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AgeRating) Reset() { *x = AgeRating{} mi := &file_proto_igdbapi_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AgeRating) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgeRating) ProtoMessage() {} func (x *AgeRating) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgeRating.ProtoReflect.Descriptor instead. func (*AgeRating) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{4} } func (x *AgeRating) GetId() uint64 { if x != nil { return x.Id } return 0 } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *AgeRating) GetCategory() AgeRatingCategoryEnum { if x != nil { return x.Category } return AgeRatingCategoryEnum_AGERATING_CATEGORY_NULL } func (x *AgeRating) GetContentDescriptions() []*AgeRatingContentDescription { if x != nil { return x.ContentDescriptions } return nil } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *AgeRating) GetRating() AgeRatingRatingEnum { if x != nil { return x.Rating } return AgeRatingRatingEnum_AGERATING_RATING_NULL } func (x *AgeRating) GetRatingCoverUrl() string { if x != nil { return x.RatingCoverUrl } return "" } func (x *AgeRating) GetSynopsis() string { if x != nil { return x.Synopsis } return "" } func (x *AgeRating) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *AgeRating) GetOrganization() *AgeRatingOrganization { if x != nil { return x.Organization } return nil } func (x *AgeRating) GetRatingCategory() *AgeRatingCategory { if x != nil { return x.RatingCategory } return nil } func (x *AgeRating) GetRatingContentDescriptions() []*AgeRatingContentDescriptionV2 { if x != nil { return x.RatingContentDescriptions } return nil } type AgeRatingCategoryResult struct { state protoimpl.MessageState `protogen:"open.v1"` Ageratingcategories []*AgeRatingCategory `protobuf:"bytes,1,rep,name=ageratingcategories,proto3" json:"ageratingcategories,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AgeRatingCategoryResult) Reset() { *x = AgeRatingCategoryResult{} mi := &file_proto_igdbapi_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AgeRatingCategoryResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgeRatingCategoryResult) ProtoMessage() {} func (x *AgeRatingCategoryResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgeRatingCategoryResult.ProtoReflect.Descriptor instead. func (*AgeRatingCategoryResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{5} } func (x *AgeRatingCategoryResult) GetAgeratingcategories() []*AgeRatingCategory { if x != nil { return x.Ageratingcategories } return nil } type AgeRatingCategory struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Rating string `protobuf:"bytes,2,opt,name=rating,proto3" json:"rating,omitempty"` Organization *AgeRatingOrganization `protobuf:"bytes,3,opt,name=organization,proto3" json:"organization,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AgeRatingCategory) Reset() { *x = AgeRatingCategory{} mi := &file_proto_igdbapi_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AgeRatingCategory) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgeRatingCategory) ProtoMessage() {} func (x *AgeRatingCategory) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgeRatingCategory.ProtoReflect.Descriptor instead. func (*AgeRatingCategory) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{6} } func (x *AgeRatingCategory) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *AgeRatingCategory) GetRating() string { if x != nil { return x.Rating } return "" } func (x *AgeRatingCategory) GetOrganization() *AgeRatingOrganization { if x != nil { return x.Organization } return nil } func (x *AgeRatingCategory) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *AgeRatingCategory) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *AgeRatingCategory) GetChecksum() string { if x != nil { return x.Checksum } return "" } type AgeRatingContentDescriptionResult struct { state protoimpl.MessageState `protogen:"open.v1"` Ageratingcontentdescriptions []*AgeRatingContentDescription `protobuf:"bytes,1,rep,name=ageratingcontentdescriptions,proto3" json:"ageratingcontentdescriptions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AgeRatingContentDescriptionResult) Reset() { *x = AgeRatingContentDescriptionResult{} mi := &file_proto_igdbapi_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AgeRatingContentDescriptionResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgeRatingContentDescriptionResult) ProtoMessage() {} func (x *AgeRatingContentDescriptionResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgeRatingContentDescriptionResult.ProtoReflect.Descriptor instead. func (*AgeRatingContentDescriptionResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{7} } func (x *AgeRatingContentDescriptionResult) GetAgeratingcontentdescriptions() []*AgeRatingContentDescription { if x != nil { return x.Ageratingcontentdescriptions } return nil } type AgeRatingContentDescription struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Category AgeRatingContentDescriptionCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.AgeRatingContentDescriptionCategoryEnum" json:"category,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` Checksum string `protobuf:"bytes,4,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AgeRatingContentDescription) Reset() { *x = AgeRatingContentDescription{} mi := &file_proto_igdbapi_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AgeRatingContentDescription) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgeRatingContentDescription) ProtoMessage() {} func (x *AgeRatingContentDescription) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgeRatingContentDescription.ProtoReflect.Descriptor instead. func (*AgeRatingContentDescription) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{8} } func (x *AgeRatingContentDescription) GetId() uint64 { if x != nil { return x.Id } return 0 } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *AgeRatingContentDescription) GetCategory() AgeRatingContentDescriptionCategoryEnum { if x != nil { return x.Category } return AgeRatingContentDescriptionCategoryEnum_AGERATINGCONTENTDESCRIPTION_CATEGORY_NULL } func (x *AgeRatingContentDescription) GetDescription() string { if x != nil { return x.Description } return "" } func (x *AgeRatingContentDescription) GetChecksum() string { if x != nil { return x.Checksum } return "" } type AgeRatingContentDescriptionV2Result struct { state protoimpl.MessageState `protogen:"open.v1"` Ageratingcontentdescriptionsv2 []*AgeRatingContentDescriptionV2 `protobuf:"bytes,1,rep,name=ageratingcontentdescriptionsv2,proto3" json:"ageratingcontentdescriptionsv2,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AgeRatingContentDescriptionV2Result) Reset() { *x = AgeRatingContentDescriptionV2Result{} mi := &file_proto_igdbapi_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AgeRatingContentDescriptionV2Result) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgeRatingContentDescriptionV2Result) ProtoMessage() {} func (x *AgeRatingContentDescriptionV2Result) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgeRatingContentDescriptionV2Result.ProtoReflect.Descriptor instead. func (*AgeRatingContentDescriptionV2Result) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{9} } func (x *AgeRatingContentDescriptionV2Result) GetAgeratingcontentdescriptionsv2() []*AgeRatingContentDescriptionV2 { if x != nil { return x.Ageratingcontentdescriptionsv2 } return nil } type AgeRatingContentDescriptionV2 struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` Organization *AgeRatingOrganization `protobuf:"bytes,3,opt,name=organization,proto3" json:"organization,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AgeRatingContentDescriptionV2) Reset() { *x = AgeRatingContentDescriptionV2{} mi := &file_proto_igdbapi_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AgeRatingContentDescriptionV2) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgeRatingContentDescriptionV2) ProtoMessage() {} func (x *AgeRatingContentDescriptionV2) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgeRatingContentDescriptionV2.ProtoReflect.Descriptor instead. func (*AgeRatingContentDescriptionV2) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{10} } func (x *AgeRatingContentDescriptionV2) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *AgeRatingContentDescriptionV2) GetDescription() string { if x != nil { return x.Description } return "" } func (x *AgeRatingContentDescriptionV2) GetOrganization() *AgeRatingOrganization { if x != nil { return x.Organization } return nil } func (x *AgeRatingContentDescriptionV2) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *AgeRatingContentDescriptionV2) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *AgeRatingContentDescriptionV2) GetChecksum() string { if x != nil { return x.Checksum } return "" } type AgeRatingOrganizationResult struct { state protoimpl.MessageState `protogen:"open.v1"` Ageratingorganizations []*AgeRatingOrganization `protobuf:"bytes,1,rep,name=ageratingorganizations,proto3" json:"ageratingorganizations,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AgeRatingOrganizationResult) Reset() { *x = AgeRatingOrganizationResult{} mi := &file_proto_igdbapi_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AgeRatingOrganizationResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgeRatingOrganizationResult) ProtoMessage() {} func (x *AgeRatingOrganizationResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgeRatingOrganizationResult.ProtoReflect.Descriptor instead. func (*AgeRatingOrganizationResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{11} } func (x *AgeRatingOrganizationResult) GetAgeratingorganizations() []*AgeRatingOrganization { if x != nil { return x.Ageratingorganizations } return nil } type AgeRatingOrganization struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AgeRatingOrganization) Reset() { *x = AgeRatingOrganization{} mi := &file_proto_igdbapi_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AgeRatingOrganization) String() string { return protoimpl.X.MessageStringOf(x) } func (*AgeRatingOrganization) ProtoMessage() {} func (x *AgeRatingOrganization) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AgeRatingOrganization.ProtoReflect.Descriptor instead. func (*AgeRatingOrganization) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{12} } func (x *AgeRatingOrganization) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *AgeRatingOrganization) GetName() string { if x != nil { return x.Name } return "" } func (x *AgeRatingOrganization) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *AgeRatingOrganization) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *AgeRatingOrganization) GetChecksum() string { if x != nil { return x.Checksum } return "" } type AlternativeNameResult struct { state protoimpl.MessageState `protogen:"open.v1"` Alternativenames []*AlternativeName `protobuf:"bytes,1,rep,name=alternativenames,proto3" json:"alternativenames,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AlternativeNameResult) Reset() { *x = AlternativeNameResult{} mi := &file_proto_igdbapi_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AlternativeNameResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*AlternativeNameResult) ProtoMessage() {} func (x *AlternativeNameResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AlternativeNameResult.ProtoReflect.Descriptor instead. func (*AlternativeNameResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{13} } func (x *AlternativeNameResult) GetAlternativenames() []*AlternativeName { if x != nil { return x.Alternativenames } return nil } type AlternativeName struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` Game *Game `protobuf:"bytes,3,opt,name=game,proto3" json:"game,omitempty"` Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *AlternativeName) Reset() { *x = AlternativeName{} mi := &file_proto_igdbapi_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *AlternativeName) String() string { return protoimpl.X.MessageStringOf(x) } func (*AlternativeName) ProtoMessage() {} func (x *AlternativeName) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AlternativeName.ProtoReflect.Descriptor instead. func (*AlternativeName) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{14} } func (x *AlternativeName) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *AlternativeName) GetComment() string { if x != nil { return x.Comment } return "" } func (x *AlternativeName) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *AlternativeName) GetName() string { if x != nil { return x.Name } return "" } func (x *AlternativeName) GetChecksum() string { if x != nil { return x.Checksum } return "" } type ArtworkResult struct { state protoimpl.MessageState `protogen:"open.v1"` Artworks []*Artwork `protobuf:"bytes,1,rep,name=artworks,proto3" json:"artworks,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ArtworkResult) Reset() { *x = ArtworkResult{} mi := &file_proto_igdbapi_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ArtworkResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ArtworkResult) ProtoMessage() {} func (x *ArtworkResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ArtworkResult.ProtoReflect.Descriptor instead. func (*ArtworkResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{15} } func (x *ArtworkResult) GetArtworks() []*Artwork { if x != nil { return x.Artworks } return nil } type Artwork struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Artwork) Reset() { *x = Artwork{} mi := &file_proto_igdbapi_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Artwork) String() string { return protoimpl.X.MessageStringOf(x) } func (*Artwork) ProtoMessage() {} func (x *Artwork) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Artwork.ProtoReflect.Descriptor instead. func (*Artwork) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{16} } func (x *Artwork) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Artwork) GetAlphaChannel() bool { if x != nil { return x.AlphaChannel } return false } func (x *Artwork) GetAnimated() bool { if x != nil { return x.Animated } return false } func (x *Artwork) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *Artwork) GetHeight() int32 { if x != nil { return x.Height } return 0 } func (x *Artwork) GetImageId() string { if x != nil { return x.ImageId } return "" } func (x *Artwork) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Artwork) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *Artwork) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CharacterResult struct { state protoimpl.MessageState `protogen:"open.v1"` Characters []*Character `protobuf:"bytes,1,rep,name=characters,proto3" json:"characters,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CharacterResult) Reset() { *x = CharacterResult{} mi := &file_proto_igdbapi_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CharacterResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CharacterResult) ProtoMessage() {} func (x *CharacterResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CharacterResult.ProtoReflect.Descriptor instead. func (*CharacterResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{17} } func (x *CharacterResult) GetCharacters() []*Character { if x != nil { return x.Characters } return nil } type Character struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Akas []string `protobuf:"bytes,2,rep,name=akas,proto3" json:"akas,omitempty"` CountryName string `protobuf:"bytes,3,opt,name=country_name,json=countryName,proto3" json:"country_name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` Games []*Game `protobuf:"bytes,6,rep,name=games,proto3" json:"games,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Gender GenderGenderEnum `protobuf:"varint,7,opt,name=gender,proto3,enum=proto.GenderGenderEnum" json:"gender,omitempty"` MugShot *CharacterMugShot `protobuf:"bytes,8,opt,name=mug_shot,json=mugShot,proto3" json:"mug_shot,omitempty"` Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` Slug string `protobuf:"bytes,10,opt,name=slug,proto3" json:"slug,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Species CharacterSpeciesEnum `protobuf:"varint,11,opt,name=species,proto3,enum=proto.CharacterSpeciesEnum" json:"species,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,13,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,14,opt,name=checksum,proto3" json:"checksum,omitempty"` CharacterGender *CharacterGender `protobuf:"bytes,15,opt,name=character_gender,json=characterGender,proto3" json:"character_gender,omitempty"` CharacterSpecies *CharacterSpecie `protobuf:"bytes,16,opt,name=character_species,json=characterSpecies,proto3" json:"character_species,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Character) Reset() { *x = Character{} mi := &file_proto_igdbapi_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Character) String() string { return protoimpl.X.MessageStringOf(x) } func (*Character) ProtoMessage() {} func (x *Character) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Character.ProtoReflect.Descriptor instead. func (*Character) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{18} } func (x *Character) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Character) GetAkas() []string { if x != nil { return x.Akas } return nil } func (x *Character) GetCountryName() string { if x != nil { return x.CountryName } return "" } func (x *Character) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Character) GetDescription() string { if x != nil { return x.Description } return "" } func (x *Character) GetGames() []*Game { if x != nil { return x.Games } return nil } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *Character) GetGender() GenderGenderEnum { if x != nil { return x.Gender } return GenderGenderEnum_MALE } func (x *Character) GetMugShot() *CharacterMugShot { if x != nil { return x.MugShot } return nil } func (x *Character) GetName() string { if x != nil { return x.Name } return "" } func (x *Character) GetSlug() string { if x != nil { return x.Slug } return "" } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *Character) GetSpecies() CharacterSpeciesEnum { if x != nil { return x.Species } return CharacterSpeciesEnum_CHARACTER_SPECIES_NULL } func (x *Character) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Character) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Character) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *Character) GetCharacterGender() *CharacterGender { if x != nil { return x.CharacterGender } return nil } func (x *Character) GetCharacterSpecies() *CharacterSpecie { if x != nil { return x.CharacterSpecies } return nil } type CharacterGenderResult struct { state protoimpl.MessageState `protogen:"open.v1"` Charactergenders []*CharacterGender `protobuf:"bytes,1,rep,name=charactergenders,proto3" json:"charactergenders,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CharacterGenderResult) Reset() { *x = CharacterGenderResult{} mi := &file_proto_igdbapi_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CharacterGenderResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CharacterGenderResult) ProtoMessage() {} func (x *CharacterGenderResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CharacterGenderResult.ProtoReflect.Descriptor instead. func (*CharacterGenderResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{19} } func (x *CharacterGenderResult) GetCharactergenders() []*CharacterGender { if x != nil { return x.Charactergenders } return nil } type CharacterGender struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CharacterGender) Reset() { *x = CharacterGender{} mi := &file_proto_igdbapi_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CharacterGender) String() string { return protoimpl.X.MessageStringOf(x) } func (*CharacterGender) ProtoMessage() {} func (x *CharacterGender) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CharacterGender.ProtoReflect.Descriptor instead. func (*CharacterGender) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{20} } func (x *CharacterGender) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *CharacterGender) GetName() string { if x != nil { return x.Name } return "" } func (x *CharacterGender) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *CharacterGender) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *CharacterGender) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CharacterMugShotResult struct { state protoimpl.MessageState `protogen:"open.v1"` Charactermugshots []*CharacterMugShot `protobuf:"bytes,1,rep,name=charactermugshots,proto3" json:"charactermugshots,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CharacterMugShotResult) Reset() { *x = CharacterMugShotResult{} mi := &file_proto_igdbapi_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CharacterMugShotResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CharacterMugShotResult) ProtoMessage() {} func (x *CharacterMugShotResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CharacterMugShotResult.ProtoReflect.Descriptor instead. func (*CharacterMugShotResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{21} } func (x *CharacterMugShotResult) GetCharactermugshots() []*CharacterMugShot { if x != nil { return x.Charactermugshots } return nil } type CharacterMugShot struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CharacterMugShot) Reset() { *x = CharacterMugShot{} mi := &file_proto_igdbapi_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CharacterMugShot) String() string { return protoimpl.X.MessageStringOf(x) } func (*CharacterMugShot) ProtoMessage() {} func (x *CharacterMugShot) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CharacterMugShot.ProtoReflect.Descriptor instead. func (*CharacterMugShot) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{22} } func (x *CharacterMugShot) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *CharacterMugShot) GetAlphaChannel() bool { if x != nil { return x.AlphaChannel } return false } func (x *CharacterMugShot) GetAnimated() bool { if x != nil { return x.Animated } return false } func (x *CharacterMugShot) GetHeight() int32 { if x != nil { return x.Height } return 0 } func (x *CharacterMugShot) GetImageId() string { if x != nil { return x.ImageId } return "" } func (x *CharacterMugShot) GetUrl() string { if x != nil { return x.Url } return "" } func (x *CharacterMugShot) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *CharacterMugShot) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CharacterSpecieResult struct { state protoimpl.MessageState `protogen:"open.v1"` Characterspecies []*CharacterSpecie `protobuf:"bytes,1,rep,name=characterspecies,proto3" json:"characterspecies,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CharacterSpecieResult) Reset() { *x = CharacterSpecieResult{} mi := &file_proto_igdbapi_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CharacterSpecieResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CharacterSpecieResult) ProtoMessage() {} func (x *CharacterSpecieResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CharacterSpecieResult.ProtoReflect.Descriptor instead. func (*CharacterSpecieResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{23} } func (x *CharacterSpecieResult) GetCharacterspecies() []*CharacterSpecie { if x != nil { return x.Characterspecies } return nil } type CharacterSpecie struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CharacterSpecie) Reset() { *x = CharacterSpecie{} mi := &file_proto_igdbapi_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CharacterSpecie) String() string { return protoimpl.X.MessageStringOf(x) } func (*CharacterSpecie) ProtoMessage() {} func (x *CharacterSpecie) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CharacterSpecie.ProtoReflect.Descriptor instead. func (*CharacterSpecie) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{24} } func (x *CharacterSpecie) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *CharacterSpecie) GetName() string { if x != nil { return x.Name } return "" } func (x *CharacterSpecie) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *CharacterSpecie) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *CharacterSpecie) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CollectionResult struct { state protoimpl.MessageState `protogen:"open.v1"` Collections []*Collection `protobuf:"bytes,1,rep,name=collections,proto3" json:"collections,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionResult) Reset() { *x = CollectionResult{} mi := &file_proto_igdbapi_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionResult) ProtoMessage() {} func (x *CollectionResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionResult.ProtoReflect.Descriptor instead. func (*CollectionResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{25} } func (x *CollectionResult) GetCollections() []*Collection { if x != nil { return x.Collections } return nil } type Collection struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Games []*Game `protobuf:"bytes,3,rep,name=games,proto3" json:"games,omitempty"` Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` Slug string `protobuf:"bytes,5,opt,name=slug,proto3" json:"slug,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` Type *CollectionType `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"` AsParentRelations []*CollectionRelation `protobuf:"bytes,10,rep,name=as_parent_relations,json=asParentRelations,proto3" json:"as_parent_relations,omitempty"` AsChildRelations []*CollectionRelation `protobuf:"bytes,11,rep,name=as_child_relations,json=asChildRelations,proto3" json:"as_child_relations,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Collection) Reset() { *x = Collection{} mi := &file_proto_igdbapi_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Collection) String() string { return protoimpl.X.MessageStringOf(x) } func (*Collection) ProtoMessage() {} func (x *Collection) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Collection.ProtoReflect.Descriptor instead. func (*Collection) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{26} } func (x *Collection) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Collection) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Collection) GetGames() []*Game { if x != nil { return x.Games } return nil } func (x *Collection) GetName() string { if x != nil { return x.Name } return "" } func (x *Collection) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Collection) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Collection) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Collection) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *Collection) GetType() *CollectionType { if x != nil { return x.Type } return nil } func (x *Collection) GetAsParentRelations() []*CollectionRelation { if x != nil { return x.AsParentRelations } return nil } func (x *Collection) GetAsChildRelations() []*CollectionRelation { if x != nil { return x.AsChildRelations } return nil } type CollectionMembershipResult struct { state protoimpl.MessageState `protogen:"open.v1"` Collectionmemberships []*CollectionMembership `protobuf:"bytes,1,rep,name=collectionmemberships,proto3" json:"collectionmemberships,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionMembershipResult) Reset() { *x = CollectionMembershipResult{} mi := &file_proto_igdbapi_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionMembershipResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionMembershipResult) ProtoMessage() {} func (x *CollectionMembershipResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionMembershipResult.ProtoReflect.Descriptor instead. func (*CollectionMembershipResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{27} } func (x *CollectionMembershipResult) GetCollectionmemberships() []*CollectionMembership { if x != nil { return x.Collectionmemberships } return nil } type CollectionMembership struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` Collection *Collection `protobuf:"bytes,3,opt,name=collection,proto3" json:"collection,omitempty"` Type *CollectionMembershipType `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionMembership) Reset() { *x = CollectionMembership{} mi := &file_proto_igdbapi_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionMembership) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionMembership) ProtoMessage() {} func (x *CollectionMembership) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionMembership.ProtoReflect.Descriptor instead. func (*CollectionMembership) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{28} } func (x *CollectionMembership) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *CollectionMembership) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *CollectionMembership) GetCollection() *Collection { if x != nil { return x.Collection } return nil } func (x *CollectionMembership) GetType() *CollectionMembershipType { if x != nil { return x.Type } return nil } func (x *CollectionMembership) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *CollectionMembership) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *CollectionMembership) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CollectionMembershipTypeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Collectionmembershiptypes []*CollectionMembershipType `protobuf:"bytes,1,rep,name=collectionmembershiptypes,proto3" json:"collectionmembershiptypes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionMembershipTypeResult) Reset() { *x = CollectionMembershipTypeResult{} mi := &file_proto_igdbapi_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionMembershipTypeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionMembershipTypeResult) ProtoMessage() {} func (x *CollectionMembershipTypeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionMembershipTypeResult.ProtoReflect.Descriptor instead. func (*CollectionMembershipTypeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{29} } func (x *CollectionMembershipTypeResult) GetCollectionmembershiptypes() []*CollectionMembershipType { if x != nil { return x.Collectionmembershiptypes } return nil } type CollectionMembershipType struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` AllowedCollectionType *CollectionType `protobuf:"bytes,4,opt,name=allowed_collection_type,json=allowedCollectionType,proto3" json:"allowed_collection_type,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionMembershipType) Reset() { *x = CollectionMembershipType{} mi := &file_proto_igdbapi_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionMembershipType) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionMembershipType) ProtoMessage() {} func (x *CollectionMembershipType) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionMembershipType.ProtoReflect.Descriptor instead. func (*CollectionMembershipType) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{30} } func (x *CollectionMembershipType) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *CollectionMembershipType) GetName() string { if x != nil { return x.Name } return "" } func (x *CollectionMembershipType) GetDescription() string { if x != nil { return x.Description } return "" } func (x *CollectionMembershipType) GetAllowedCollectionType() *CollectionType { if x != nil { return x.AllowedCollectionType } return nil } func (x *CollectionMembershipType) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *CollectionMembershipType) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *CollectionMembershipType) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CollectionRelationResult struct { state protoimpl.MessageState `protogen:"open.v1"` Collectionrelations []*CollectionRelation `protobuf:"bytes,1,rep,name=collectionrelations,proto3" json:"collectionrelations,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionRelationResult) Reset() { *x = CollectionRelationResult{} mi := &file_proto_igdbapi_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionRelationResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionRelationResult) ProtoMessage() {} func (x *CollectionRelationResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionRelationResult.ProtoReflect.Descriptor instead. func (*CollectionRelationResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{31} } func (x *CollectionRelationResult) GetCollectionrelations() []*CollectionRelation { if x != nil { return x.Collectionrelations } return nil } type CollectionRelation struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` ChildCollection *Collection `protobuf:"bytes,2,opt,name=child_collection,json=childCollection,proto3" json:"child_collection,omitempty"` ParentCollection *Collection `protobuf:"bytes,3,opt,name=parent_collection,json=parentCollection,proto3" json:"parent_collection,omitempty"` Type *CollectionRelationType `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionRelation) Reset() { *x = CollectionRelation{} mi := &file_proto_igdbapi_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionRelation) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionRelation) ProtoMessage() {} func (x *CollectionRelation) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionRelation.ProtoReflect.Descriptor instead. func (*CollectionRelation) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{32} } func (x *CollectionRelation) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *CollectionRelation) GetChildCollection() *Collection { if x != nil { return x.ChildCollection } return nil } func (x *CollectionRelation) GetParentCollection() *Collection { if x != nil { return x.ParentCollection } return nil } func (x *CollectionRelation) GetType() *CollectionRelationType { if x != nil { return x.Type } return nil } func (x *CollectionRelation) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *CollectionRelation) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *CollectionRelation) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CollectionRelationTypeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Collectionrelationtypes []*CollectionRelationType `protobuf:"bytes,1,rep,name=collectionrelationtypes,proto3" json:"collectionrelationtypes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionRelationTypeResult) Reset() { *x = CollectionRelationTypeResult{} mi := &file_proto_igdbapi_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionRelationTypeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionRelationTypeResult) ProtoMessage() {} func (x *CollectionRelationTypeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionRelationTypeResult.ProtoReflect.Descriptor instead. func (*CollectionRelationTypeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{33} } func (x *CollectionRelationTypeResult) GetCollectionrelationtypes() []*CollectionRelationType { if x != nil { return x.Collectionrelationtypes } return nil } type CollectionRelationType struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` AllowedChildType *CollectionType `protobuf:"bytes,4,opt,name=allowed_child_type,json=allowedChildType,proto3" json:"allowed_child_type,omitempty"` AllowedParentType *CollectionType `protobuf:"bytes,5,opt,name=allowed_parent_type,json=allowedParentType,proto3" json:"allowed_parent_type,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionRelationType) Reset() { *x = CollectionRelationType{} mi := &file_proto_igdbapi_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionRelationType) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionRelationType) ProtoMessage() {} func (x *CollectionRelationType) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionRelationType.ProtoReflect.Descriptor instead. func (*CollectionRelationType) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{34} } func (x *CollectionRelationType) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *CollectionRelationType) GetName() string { if x != nil { return x.Name } return "" } func (x *CollectionRelationType) GetDescription() string { if x != nil { return x.Description } return "" } func (x *CollectionRelationType) GetAllowedChildType() *CollectionType { if x != nil { return x.AllowedChildType } return nil } func (x *CollectionRelationType) GetAllowedParentType() *CollectionType { if x != nil { return x.AllowedParentType } return nil } func (x *CollectionRelationType) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *CollectionRelationType) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *CollectionRelationType) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CollectionTypeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Collectiontypes []*CollectionType `protobuf:"bytes,1,rep,name=collectiontypes,proto3" json:"collectiontypes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionTypeResult) Reset() { *x = CollectionTypeResult{} mi := &file_proto_igdbapi_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionTypeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionTypeResult) ProtoMessage() {} func (x *CollectionTypeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionTypeResult.ProtoReflect.Descriptor instead. func (*CollectionTypeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{35} } func (x *CollectionTypeResult) GetCollectiontypes() []*CollectionType { if x != nil { return x.Collectiontypes } return nil } type CollectionType struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CollectionType) Reset() { *x = CollectionType{} mi := &file_proto_igdbapi_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CollectionType) String() string { return protoimpl.X.MessageStringOf(x) } func (*CollectionType) ProtoMessage() {} func (x *CollectionType) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CollectionType.ProtoReflect.Descriptor instead. func (*CollectionType) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{36} } func (x *CollectionType) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *CollectionType) GetName() string { if x != nil { return x.Name } return "" } func (x *CollectionType) GetDescription() string { if x != nil { return x.Description } return "" } func (x *CollectionType) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *CollectionType) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *CollectionType) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CompanyResult struct { state protoimpl.MessageState `protogen:"open.v1"` Companies []*Company `protobuf:"bytes,1,rep,name=companies,proto3" json:"companies,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CompanyResult) Reset() { *x = CompanyResult{} mi := &file_proto_igdbapi_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CompanyResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CompanyResult) ProtoMessage() {} func (x *CompanyResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CompanyResult.ProtoReflect.Descriptor instead. func (*CompanyResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{37} } func (x *CompanyResult) GetCompanies() []*Company { if x != nil { return x.Companies } return nil } type Company struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` ChangeDate *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=change_date,json=changeDate,proto3" json:"change_date,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. ChangeDateCategory DateFormatChangeDateCategoryEnum `protobuf:"varint,3,opt,name=change_date_category,json=changeDateCategory,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"change_date_category,omitempty"` ChangedCompanyId *Company `protobuf:"bytes,4,opt,name=changed_company_id,json=changedCompanyId,proto3" json:"changed_company_id,omitempty"` Country int32 `protobuf:"varint,5,opt,name=country,proto3" json:"country,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Description string `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"` Developed []*Game `protobuf:"bytes,8,rep,name=developed,proto3" json:"developed,omitempty"` Logo *CompanyLogo `protobuf:"bytes,9,opt,name=logo,proto3" json:"logo,omitempty"` Name string `protobuf:"bytes,10,opt,name=name,proto3" json:"name,omitempty"` Parent *Company `protobuf:"bytes,11,opt,name=parent,proto3" json:"parent,omitempty"` Published []*Game `protobuf:"bytes,12,rep,name=published,proto3" json:"published,omitempty"` Slug string `protobuf:"bytes,13,opt,name=slug,proto3" json:"slug,omitempty"` StartDate *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. StartDateCategory DateFormatChangeDateCategoryEnum `protobuf:"varint,15,opt,name=start_date_category,json=startDateCategory,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"start_date_category,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,17,opt,name=url,proto3" json:"url,omitempty"` Websites []*CompanyWebsite `protobuf:"bytes,18,rep,name=websites,proto3" json:"websites,omitempty"` Checksum string `protobuf:"bytes,19,opt,name=checksum,proto3" json:"checksum,omitempty"` Status *CompanyStatus `protobuf:"bytes,20,opt,name=status,proto3" json:"status,omitempty"` StartDateFormat *DateFormat `protobuf:"bytes,21,opt,name=start_date_format,json=startDateFormat,proto3" json:"start_date_format,omitempty"` ChangeDateFormat *DateFormat `protobuf:"bytes,22,opt,name=change_date_format,json=changeDateFormat,proto3" json:"change_date_format,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Company) Reset() { *x = Company{} mi := &file_proto_igdbapi_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Company) String() string { return protoimpl.X.MessageStringOf(x) } func (*Company) ProtoMessage() {} func (x *Company) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Company.ProtoReflect.Descriptor instead. func (*Company) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{38} } func (x *Company) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Company) GetChangeDate() *timestamppb.Timestamp { if x != nil { return x.ChangeDate } return nil } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *Company) GetChangeDateCategory() DateFormatChangeDateCategoryEnum { if x != nil { return x.ChangeDateCategory } return DateFormatChangeDateCategoryEnum_YYYYMMMMDD } func (x *Company) GetChangedCompanyId() *Company { if x != nil { return x.ChangedCompanyId } return nil } func (x *Company) GetCountry() int32 { if x != nil { return x.Country } return 0 } func (x *Company) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Company) GetDescription() string { if x != nil { return x.Description } return "" } func (x *Company) GetDeveloped() []*Game { if x != nil { return x.Developed } return nil } func (x *Company) GetLogo() *CompanyLogo { if x != nil { return x.Logo } return nil } func (x *Company) GetName() string { if x != nil { return x.Name } return "" } func (x *Company) GetParent() *Company { if x != nil { return x.Parent } return nil } func (x *Company) GetPublished() []*Game { if x != nil { return x.Published } return nil } func (x *Company) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Company) GetStartDate() *timestamppb.Timestamp { if x != nil { return x.StartDate } return nil } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *Company) GetStartDateCategory() DateFormatChangeDateCategoryEnum { if x != nil { return x.StartDateCategory } return DateFormatChangeDateCategoryEnum_YYYYMMMMDD } func (x *Company) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Company) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Company) GetWebsites() []*CompanyWebsite { if x != nil { return x.Websites } return nil } func (x *Company) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *Company) GetStatus() *CompanyStatus { if x != nil { return x.Status } return nil } func (x *Company) GetStartDateFormat() *DateFormat { if x != nil { return x.StartDateFormat } return nil } func (x *Company) GetChangeDateFormat() *DateFormat { if x != nil { return x.ChangeDateFormat } return nil } type CompanyLogoResult struct { state protoimpl.MessageState `protogen:"open.v1"` Companylogos []*CompanyLogo `protobuf:"bytes,1,rep,name=companylogos,proto3" json:"companylogos,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CompanyLogoResult) Reset() { *x = CompanyLogoResult{} mi := &file_proto_igdbapi_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CompanyLogoResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CompanyLogoResult) ProtoMessage() {} func (x *CompanyLogoResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CompanyLogoResult.ProtoReflect.Descriptor instead. func (*CompanyLogoResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{39} } func (x *CompanyLogoResult) GetCompanylogos() []*CompanyLogo { if x != nil { return x.Companylogos } return nil } type CompanyLogo struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CompanyLogo) Reset() { *x = CompanyLogo{} mi := &file_proto_igdbapi_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CompanyLogo) String() string { return protoimpl.X.MessageStringOf(x) } func (*CompanyLogo) ProtoMessage() {} func (x *CompanyLogo) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CompanyLogo.ProtoReflect.Descriptor instead. func (*CompanyLogo) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{40} } func (x *CompanyLogo) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *CompanyLogo) GetAlphaChannel() bool { if x != nil { return x.AlphaChannel } return false } func (x *CompanyLogo) GetAnimated() bool { if x != nil { return x.Animated } return false } func (x *CompanyLogo) GetHeight() int32 { if x != nil { return x.Height } return 0 } func (x *CompanyLogo) GetImageId() string { if x != nil { return x.ImageId } return "" } func (x *CompanyLogo) GetUrl() string { if x != nil { return x.Url } return "" } func (x *CompanyLogo) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *CompanyLogo) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CompanyStatusResult struct { state protoimpl.MessageState `protogen:"open.v1"` Companystatuses []*CompanyStatus `protobuf:"bytes,1,rep,name=companystatuses,proto3" json:"companystatuses,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CompanyStatusResult) Reset() { *x = CompanyStatusResult{} mi := &file_proto_igdbapi_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CompanyStatusResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CompanyStatusResult) ProtoMessage() {} func (x *CompanyStatusResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CompanyStatusResult.ProtoReflect.Descriptor instead. func (*CompanyStatusResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{41} } func (x *CompanyStatusResult) GetCompanystatuses() []*CompanyStatus { if x != nil { return x.Companystatuses } return nil } type CompanyStatus struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CompanyStatus) Reset() { *x = CompanyStatus{} mi := &file_proto_igdbapi_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CompanyStatus) String() string { return protoimpl.X.MessageStringOf(x) } func (*CompanyStatus) ProtoMessage() {} func (x *CompanyStatus) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CompanyStatus.ProtoReflect.Descriptor instead. func (*CompanyStatus) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{42} } func (x *CompanyStatus) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *CompanyStatus) GetName() string { if x != nil { return x.Name } return "" } func (x *CompanyStatus) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *CompanyStatus) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *CompanyStatus) GetChecksum() string { if x != nil { return x.Checksum } return "" } type CompanyWebsiteResult struct { state protoimpl.MessageState `protogen:"open.v1"` Companywebsites []*CompanyWebsite `protobuf:"bytes,1,rep,name=companywebsites,proto3" json:"companywebsites,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CompanyWebsiteResult) Reset() { *x = CompanyWebsiteResult{} mi := &file_proto_igdbapi_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CompanyWebsiteResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CompanyWebsiteResult) ProtoMessage() {} func (x *CompanyWebsiteResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CompanyWebsiteResult.ProtoReflect.Descriptor instead. func (*CompanyWebsiteResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{43} } func (x *CompanyWebsiteResult) GetCompanywebsites() []*CompanyWebsite { if x != nil { return x.Companywebsites } return nil } type CompanyWebsite struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Category WebsiteCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.WebsiteCategoryEnum" json:"category,omitempty"` Trusted bool `protobuf:"varint,3,opt,name=trusted,proto3" json:"trusted,omitempty"` Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` Type *WebsiteType `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CompanyWebsite) Reset() { *x = CompanyWebsite{} mi := &file_proto_igdbapi_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CompanyWebsite) String() string { return protoimpl.X.MessageStringOf(x) } func (*CompanyWebsite) ProtoMessage() {} func (x *CompanyWebsite) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CompanyWebsite.ProtoReflect.Descriptor instead. func (*CompanyWebsite) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{44} } func (x *CompanyWebsite) GetId() uint64 { if x != nil { return x.Id } return 0 } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *CompanyWebsite) GetCategory() WebsiteCategoryEnum { if x != nil { return x.Category } return WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL } func (x *CompanyWebsite) GetTrusted() bool { if x != nil { return x.Trusted } return false } func (x *CompanyWebsite) GetUrl() string { if x != nil { return x.Url } return "" } func (x *CompanyWebsite) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *CompanyWebsite) GetType() *WebsiteType { if x != nil { return x.Type } return nil } type CoverResult struct { state protoimpl.MessageState `protogen:"open.v1"` Covers []*Cover `protobuf:"bytes,1,rep,name=covers,proto3" json:"covers,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *CoverResult) Reset() { *x = CoverResult{} mi := &file_proto_igdbapi_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *CoverResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CoverResult) ProtoMessage() {} func (x *CoverResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CoverResult.ProtoReflect.Descriptor instead. func (*CoverResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{45} } func (x *CoverResult) GetCovers() []*Cover { if x != nil { return x.Covers } return nil } type Cover struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` GameLocalization *GameLocalization `protobuf:"bytes,10,opt,name=game_localization,json=gameLocalization,proto3" json:"game_localization,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Cover) Reset() { *x = Cover{} mi := &file_proto_igdbapi_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Cover) String() string { return protoimpl.X.MessageStringOf(x) } func (*Cover) ProtoMessage() {} func (x *Cover) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Cover.ProtoReflect.Descriptor instead. func (*Cover) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{46} } func (x *Cover) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Cover) GetAlphaChannel() bool { if x != nil { return x.AlphaChannel } return false } func (x *Cover) GetAnimated() bool { if x != nil { return x.Animated } return false } func (x *Cover) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *Cover) GetHeight() int32 { if x != nil { return x.Height } return 0 } func (x *Cover) GetImageId() string { if x != nil { return x.ImageId } return "" } func (x *Cover) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Cover) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *Cover) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *Cover) GetGameLocalization() *GameLocalization { if x != nil { return x.GameLocalization } return nil } type DateFormatResult struct { state protoimpl.MessageState `protogen:"open.v1"` Dateformats []*DateFormat `protobuf:"bytes,1,rep,name=dateformats,proto3" json:"dateformats,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DateFormatResult) Reset() { *x = DateFormatResult{} mi := &file_proto_igdbapi_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DateFormatResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*DateFormatResult) ProtoMessage() {} func (x *DateFormatResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DateFormatResult.ProtoReflect.Descriptor instead. func (*DateFormatResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{47} } func (x *DateFormatResult) GetDateformats() []*DateFormat { if x != nil { return x.Dateformats } return nil } type DateFormat struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DateFormat) Reset() { *x = DateFormat{} mi := &file_proto_igdbapi_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *DateFormat) String() string { return protoimpl.X.MessageStringOf(x) } func (*DateFormat) ProtoMessage() {} func (x *DateFormat) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DateFormat.ProtoReflect.Descriptor instead. func (*DateFormat) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{48} } func (x *DateFormat) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *DateFormat) GetFormat() string { if x != nil { return x.Format } return "" } func (x *DateFormat) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *DateFormat) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *DateFormat) GetChecksum() string { if x != nil { return x.Checksum } return "" } type EventResult struct { state protoimpl.MessageState `protogen:"open.v1"` Events []*Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *EventResult) Reset() { *x = EventResult{} mi := &file_proto_igdbapi_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *EventResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*EventResult) ProtoMessage() {} func (x *EventResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use EventResult.ProtoReflect.Descriptor instead. func (*EventResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{49} } func (x *EventResult) GetEvents() []*Event { if x != nil { return x.Events } return nil } type Event struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` EventLogo *EventLogo `protobuf:"bytes,5,opt,name=event_logo,json=eventLogo,proto3" json:"event_logo,omitempty"` StartTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` TimeZone string `protobuf:"bytes,7,opt,name=time_zone,json=timeZone,proto3" json:"time_zone,omitempty"` EndTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` LiveStreamUrl string `protobuf:"bytes,9,opt,name=live_stream_url,json=liveStreamUrl,proto3" json:"live_stream_url,omitempty"` Games []*Game `protobuf:"bytes,10,rep,name=games,proto3" json:"games,omitempty"` Videos []*GameVideo `protobuf:"bytes,11,rep,name=videos,proto3" json:"videos,omitempty"` EventNetworks []*EventNetwork `protobuf:"bytes,12,rep,name=event_networks,json=eventNetworks,proto3" json:"event_networks,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,15,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Event) Reset() { *x = Event{} mi := &file_proto_igdbapi_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Event) String() string { return protoimpl.X.MessageStringOf(x) } func (*Event) ProtoMessage() {} func (x *Event) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Event.ProtoReflect.Descriptor instead. func (*Event) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{50} } func (x *Event) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Event) GetName() string { if x != nil { return x.Name } return "" } func (x *Event) GetDescription() string { if x != nil { return x.Description } return "" } func (x *Event) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Event) GetEventLogo() *EventLogo { if x != nil { return x.EventLogo } return nil } func (x *Event) GetStartTime() *timestamppb.Timestamp { if x != nil { return x.StartTime } return nil } func (x *Event) GetTimeZone() string { if x != nil { return x.TimeZone } return "" } func (x *Event) GetEndTime() *timestamppb.Timestamp { if x != nil { return x.EndTime } return nil } func (x *Event) GetLiveStreamUrl() string { if x != nil { return x.LiveStreamUrl } return "" } func (x *Event) GetGames() []*Game { if x != nil { return x.Games } return nil } func (x *Event) GetVideos() []*GameVideo { if x != nil { return x.Videos } return nil } func (x *Event) GetEventNetworks() []*EventNetwork { if x != nil { return x.EventNetworks } return nil } func (x *Event) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Event) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Event) GetChecksum() string { if x != nil { return x.Checksum } return "" } type EventLogoResult struct { state protoimpl.MessageState `protogen:"open.v1"` Eventlogos []*EventLogo `protobuf:"bytes,1,rep,name=eventlogos,proto3" json:"eventlogos,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *EventLogoResult) Reset() { *x = EventLogoResult{} mi := &file_proto_igdbapi_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *EventLogoResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*EventLogoResult) ProtoMessage() {} func (x *EventLogoResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use EventLogoResult.ProtoReflect.Descriptor instead. func (*EventLogoResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{51} } func (x *EventLogoResult) GetEventlogos() []*EventLogo { if x != nil { return x.Eventlogos } return nil } type EventLogo struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Event *Event `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` AlphaChannel bool `protobuf:"varint,3,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` Animated bool `protobuf:"varint,4,opt,name=animated,proto3" json:"animated,omitempty"` Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,11,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *EventLogo) Reset() { *x = EventLogo{} mi := &file_proto_igdbapi_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *EventLogo) String() string { return protoimpl.X.MessageStringOf(x) } func (*EventLogo) ProtoMessage() {} func (x *EventLogo) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use EventLogo.ProtoReflect.Descriptor instead. func (*EventLogo) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{52} } func (x *EventLogo) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *EventLogo) GetEvent() *Event { if x != nil { return x.Event } return nil } func (x *EventLogo) GetAlphaChannel() bool { if x != nil { return x.AlphaChannel } return false } func (x *EventLogo) GetAnimated() bool { if x != nil { return x.Animated } return false } func (x *EventLogo) GetHeight() int32 { if x != nil { return x.Height } return 0 } func (x *EventLogo) GetImageId() string { if x != nil { return x.ImageId } return "" } func (x *EventLogo) GetUrl() string { if x != nil { return x.Url } return "" } func (x *EventLogo) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *EventLogo) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *EventLogo) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *EventLogo) GetChecksum() string { if x != nil { return x.Checksum } return "" } type EventNetworkResult struct { state protoimpl.MessageState `protogen:"open.v1"` Eventnetworks []*EventNetwork `protobuf:"bytes,1,rep,name=eventnetworks,proto3" json:"eventnetworks,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *EventNetworkResult) Reset() { *x = EventNetworkResult{} mi := &file_proto_igdbapi_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *EventNetworkResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*EventNetworkResult) ProtoMessage() {} func (x *EventNetworkResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use EventNetworkResult.ProtoReflect.Descriptor instead. func (*EventNetworkResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{53} } func (x *EventNetworkResult) GetEventnetworks() []*EventNetwork { if x != nil { return x.Eventnetworks } return nil } type EventNetwork struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Event *Event `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` NetworkType *NetworkType `protobuf:"bytes,4,opt,name=network_type,json=networkType,proto3" json:"network_type,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *EventNetwork) Reset() { *x = EventNetwork{} mi := &file_proto_igdbapi_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *EventNetwork) String() string { return protoimpl.X.MessageStringOf(x) } func (*EventNetwork) ProtoMessage() {} func (x *EventNetwork) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use EventNetwork.ProtoReflect.Descriptor instead. func (*EventNetwork) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{54} } func (x *EventNetwork) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *EventNetwork) GetEvent() *Event { if x != nil { return x.Event } return nil } func (x *EventNetwork) GetUrl() string { if x != nil { return x.Url } return "" } func (x *EventNetwork) GetNetworkType() *NetworkType { if x != nil { return x.NetworkType } return nil } func (x *EventNetwork) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *EventNetwork) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *EventNetwork) GetChecksum() string { if x != nil { return x.Checksum } return "" } type ExternalGameResult struct { state protoimpl.MessageState `protogen:"open.v1"` Externalgames []*ExternalGame `protobuf:"bytes,1,rep,name=externalgames,proto3" json:"externalgames,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ExternalGameResult) Reset() { *x = ExternalGameResult{} mi := &file_proto_igdbapi_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ExternalGameResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExternalGameResult) ProtoMessage() {} func (x *ExternalGameResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ExternalGameResult.ProtoReflect.Descriptor instead. func (*ExternalGameResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{55} } func (x *ExternalGameResult) GetExternalgames() []*ExternalGame { if x != nil { return x.Externalgames } return nil } type ExternalGame struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Category ExternalGameCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.ExternalGameCategoryEnum" json:"category,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` Uid string `protobuf:"bytes,6,opt,name=uid,proto3" json:"uid,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,8,opt,name=url,proto3" json:"url,omitempty"` Year int32 `protobuf:"varint,9,opt,name=year,proto3" json:"year,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Media ExternalGameMediaEnum `protobuf:"varint,10,opt,name=media,proto3,enum=proto.ExternalGameMediaEnum" json:"media,omitempty"` Platform *Platform `protobuf:"bytes,11,opt,name=platform,proto3" json:"platform,omitempty"` Countries []int32 `protobuf:"varint,12,rep,packed,name=countries,proto3" json:"countries,omitempty"` Checksum string `protobuf:"bytes,13,opt,name=checksum,proto3" json:"checksum,omitempty"` ExternalGameSource *ExternalGameSource `protobuf:"bytes,14,opt,name=external_game_source,json=externalGameSource,proto3" json:"external_game_source,omitempty"` GameReleaseFormat *GameReleaseFormat `protobuf:"bytes,15,opt,name=game_release_format,json=gameReleaseFormat,proto3" json:"game_release_format,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ExternalGame) Reset() { *x = ExternalGame{} mi := &file_proto_igdbapi_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ExternalGame) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExternalGame) ProtoMessage() {} func (x *ExternalGame) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ExternalGame.ProtoReflect.Descriptor instead. func (*ExternalGame) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{56} } func (x *ExternalGame) GetId() uint64 { if x != nil { return x.Id } return 0 } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *ExternalGame) GetCategory() ExternalGameCategoryEnum { if x != nil { return x.Category } return ExternalGameCategoryEnum_EXTERNALGAME_CATEGORY_NULL } func (x *ExternalGame) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *ExternalGame) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *ExternalGame) GetName() string { if x != nil { return x.Name } return "" } func (x *ExternalGame) GetUid() string { if x != nil { return x.Uid } return "" } func (x *ExternalGame) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *ExternalGame) GetUrl() string { if x != nil { return x.Url } return "" } func (x *ExternalGame) GetYear() int32 { if x != nil { return x.Year } return 0 } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *ExternalGame) GetMedia() ExternalGameMediaEnum { if x != nil { return x.Media } return ExternalGameMediaEnum_EXTERNALGAME_MEDIA_NULL } func (x *ExternalGame) GetPlatform() *Platform { if x != nil { return x.Platform } return nil } func (x *ExternalGame) GetCountries() []int32 { if x != nil { return x.Countries } return nil } func (x *ExternalGame) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *ExternalGame) GetExternalGameSource() *ExternalGameSource { if x != nil { return x.ExternalGameSource } return nil } func (x *ExternalGame) GetGameReleaseFormat() *GameReleaseFormat { if x != nil { return x.GameReleaseFormat } return nil } type ExternalGameSourceResult struct { state protoimpl.MessageState `protogen:"open.v1"` Externalgamesources []*ExternalGameSource `protobuf:"bytes,1,rep,name=externalgamesources,proto3" json:"externalgamesources,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ExternalGameSourceResult) Reset() { *x = ExternalGameSourceResult{} mi := &file_proto_igdbapi_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ExternalGameSourceResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExternalGameSourceResult) ProtoMessage() {} func (x *ExternalGameSourceResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ExternalGameSourceResult.ProtoReflect.Descriptor instead. func (*ExternalGameSourceResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{57} } func (x *ExternalGameSourceResult) GetExternalgamesources() []*ExternalGameSource { if x != nil { return x.Externalgamesources } return nil } type ExternalGameSource struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ExternalGameSource) Reset() { *x = ExternalGameSource{} mi := &file_proto_igdbapi_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ExternalGameSource) String() string { return protoimpl.X.MessageStringOf(x) } func (*ExternalGameSource) ProtoMessage() {} func (x *ExternalGameSource) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ExternalGameSource.ProtoReflect.Descriptor instead. func (*ExternalGameSource) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{58} } func (x *ExternalGameSource) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *ExternalGameSource) GetName() string { if x != nil { return x.Name } return "" } func (x *ExternalGameSource) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *ExternalGameSource) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *ExternalGameSource) GetChecksum() string { if x != nil { return x.Checksum } return "" } type FranchiseResult struct { state protoimpl.MessageState `protogen:"open.v1"` Franchises []*Franchise `protobuf:"bytes,1,rep,name=franchises,proto3" json:"franchises,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *FranchiseResult) Reset() { *x = FranchiseResult{} mi := &file_proto_igdbapi_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *FranchiseResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*FranchiseResult) ProtoMessage() {} func (x *FranchiseResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use FranchiseResult.ProtoReflect.Descriptor instead. func (*FranchiseResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{59} } func (x *FranchiseResult) GetFranchises() []*Franchise { if x != nil { return x.Franchises } return nil } type Franchise struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Games []*Game `protobuf:"bytes,3,rep,name=games,proto3" json:"games,omitempty"` Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` Slug string `protobuf:"bytes,5,opt,name=slug,proto3" json:"slug,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Franchise) Reset() { *x = Franchise{} mi := &file_proto_igdbapi_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Franchise) String() string { return protoimpl.X.MessageStringOf(x) } func (*Franchise) ProtoMessage() {} func (x *Franchise) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Franchise.ProtoReflect.Descriptor instead. func (*Franchise) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{60} } func (x *Franchise) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Franchise) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Franchise) GetGames() []*Game { if x != nil { return x.Games } return nil } func (x *Franchise) GetName() string { if x != nil { return x.Name } return "" } func (x *Franchise) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Franchise) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Franchise) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Franchise) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameResult struct { state protoimpl.MessageState `protogen:"open.v1"` Games []*Game `protobuf:"bytes,1,rep,name=games,proto3" json:"games,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameResult) Reset() { *x = GameResult{} mi := &file_proto_igdbapi_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameResult) ProtoMessage() {} func (x *GameResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameResult.ProtoReflect.Descriptor instead. func (*GameResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{61} } func (x *GameResult) GetGames() []*Game { if x != nil { return x.Games } return nil } type Game struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` AgeRatings []*AgeRating `protobuf:"bytes,2,rep,name=age_ratings,json=ageRatings,proto3" json:"age_ratings,omitempty"` AggregatedRating float64 `protobuf:"fixed64,3,opt,name=aggregated_rating,json=aggregatedRating,proto3" json:"aggregated_rating,omitempty"` AggregatedRatingCount int32 `protobuf:"varint,4,opt,name=aggregated_rating_count,json=aggregatedRatingCount,proto3" json:"aggregated_rating_count,omitempty"` AlternativeNames []*AlternativeName `protobuf:"bytes,5,rep,name=alternative_names,json=alternativeNames,proto3" json:"alternative_names,omitempty"` Artworks []*Artwork `protobuf:"bytes,6,rep,name=artworks,proto3" json:"artworks,omitempty"` Bundles []*Game `protobuf:"bytes,7,rep,name=bundles,proto3" json:"bundles,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Category GameCategoryEnum `protobuf:"varint,8,opt,name=category,proto3,enum=proto.GameCategoryEnum" json:"category,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Collection *Collection `protobuf:"bytes,9,opt,name=collection,proto3" json:"collection,omitempty"` Cover *Cover `protobuf:"bytes,10,opt,name=cover,proto3" json:"cover,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Dlcs []*Game `protobuf:"bytes,12,rep,name=dlcs,proto3" json:"dlcs,omitempty"` Expansions []*Game `protobuf:"bytes,13,rep,name=expansions,proto3" json:"expansions,omitempty"` ExternalGames []*ExternalGame `protobuf:"bytes,14,rep,name=external_games,json=externalGames,proto3" json:"external_games,omitempty"` FirstReleaseDate *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=first_release_date,json=firstReleaseDate,proto3" json:"first_release_date,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Follows int32 `protobuf:"varint,16,opt,name=follows,proto3" json:"follows,omitempty"` Franchise *Franchise `protobuf:"bytes,17,opt,name=franchise,proto3" json:"franchise,omitempty"` Franchises []*Franchise `protobuf:"bytes,18,rep,name=franchises,proto3" json:"franchises,omitempty"` GameEngines []*GameEngine `protobuf:"bytes,19,rep,name=game_engines,json=gameEngines,proto3" json:"game_engines,omitempty"` GameModes []*GameMode `protobuf:"bytes,20,rep,name=game_modes,json=gameModes,proto3" json:"game_modes,omitempty"` Genres []*Genre `protobuf:"bytes,21,rep,name=genres,proto3" json:"genres,omitempty"` Hypes int32 `protobuf:"varint,22,opt,name=hypes,proto3" json:"hypes,omitempty"` InvolvedCompanies []*InvolvedCompany `protobuf:"bytes,23,rep,name=involved_companies,json=involvedCompanies,proto3" json:"involved_companies,omitempty"` Keywords []*Keyword `protobuf:"bytes,24,rep,name=keywords,proto3" json:"keywords,omitempty"` MultiplayerModes []*MultiplayerMode `protobuf:"bytes,25,rep,name=multiplayer_modes,json=multiplayerModes,proto3" json:"multiplayer_modes,omitempty"` Name string `protobuf:"bytes,26,opt,name=name,proto3" json:"name,omitempty"` ParentGame *Game `protobuf:"bytes,27,opt,name=parent_game,json=parentGame,proto3" json:"parent_game,omitempty"` Platforms []*Platform `protobuf:"bytes,28,rep,name=platforms,proto3" json:"platforms,omitempty"` PlayerPerspectives []*PlayerPerspective `protobuf:"bytes,29,rep,name=player_perspectives,json=playerPerspectives,proto3" json:"player_perspectives,omitempty"` Rating float64 `protobuf:"fixed64,30,opt,name=rating,proto3" json:"rating,omitempty"` RatingCount int32 `protobuf:"varint,31,opt,name=rating_count,json=ratingCount,proto3" json:"rating_count,omitempty"` ReleaseDates []*ReleaseDate `protobuf:"bytes,32,rep,name=release_dates,json=releaseDates,proto3" json:"release_dates,omitempty"` Screenshots []*Screenshot `protobuf:"bytes,33,rep,name=screenshots,proto3" json:"screenshots,omitempty"` SimilarGames []*Game `protobuf:"bytes,34,rep,name=similar_games,json=similarGames,proto3" json:"similar_games,omitempty"` Slug string `protobuf:"bytes,35,opt,name=slug,proto3" json:"slug,omitempty"` StandaloneExpansions []*Game `protobuf:"bytes,36,rep,name=standalone_expansions,json=standaloneExpansions,proto3" json:"standalone_expansions,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Status GameStatusEnum `protobuf:"varint,37,opt,name=status,proto3,enum=proto.GameStatusEnum" json:"status,omitempty"` Storyline string `protobuf:"bytes,38,opt,name=storyline,proto3" json:"storyline,omitempty"` Summary string `protobuf:"bytes,39,opt,name=summary,proto3" json:"summary,omitempty"` Tags []int32 `protobuf:"varint,40,rep,packed,name=tags,proto3" json:"tags,omitempty"` Themes []*Theme `protobuf:"bytes,41,rep,name=themes,proto3" json:"themes,omitempty"` TotalRating float64 `protobuf:"fixed64,42,opt,name=total_rating,json=totalRating,proto3" json:"total_rating,omitempty"` TotalRatingCount int32 `protobuf:"varint,43,opt,name=total_rating_count,json=totalRatingCount,proto3" json:"total_rating_count,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,44,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,45,opt,name=url,proto3" json:"url,omitempty"` VersionParent *Game `protobuf:"bytes,46,opt,name=version_parent,json=versionParent,proto3" json:"version_parent,omitempty"` VersionTitle string `protobuf:"bytes,47,opt,name=version_title,json=versionTitle,proto3" json:"version_title,omitempty"` Videos []*GameVideo `protobuf:"bytes,48,rep,name=videos,proto3" json:"videos,omitempty"` Websites []*Website `protobuf:"bytes,49,rep,name=websites,proto3" json:"websites,omitempty"` Checksum string `protobuf:"bytes,50,opt,name=checksum,proto3" json:"checksum,omitempty"` Remakes []*Game `protobuf:"bytes,51,rep,name=remakes,proto3" json:"remakes,omitempty"` Remasters []*Game `protobuf:"bytes,52,rep,name=remasters,proto3" json:"remasters,omitempty"` ExpandedGames []*Game `protobuf:"bytes,53,rep,name=expanded_games,json=expandedGames,proto3" json:"expanded_games,omitempty"` Ports []*Game `protobuf:"bytes,54,rep,name=ports,proto3" json:"ports,omitempty"` Forks []*Game `protobuf:"bytes,55,rep,name=forks,proto3" json:"forks,omitempty"` LanguageSupports []*LanguageSupport `protobuf:"bytes,56,rep,name=language_supports,json=languageSupports,proto3" json:"language_supports,omitempty"` GameLocalizations []*GameLocalization `protobuf:"bytes,57,rep,name=game_localizations,json=gameLocalizations,proto3" json:"game_localizations,omitempty"` Collections []*Collection `protobuf:"bytes,58,rep,name=collections,proto3" json:"collections,omitempty"` GameStatus *GameStatus `protobuf:"bytes,59,opt,name=game_status,json=gameStatus,proto3" json:"game_status,omitempty"` GameType *GameType `protobuf:"bytes,60,opt,name=game_type,json=gameType,proto3" json:"game_type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Game) Reset() { *x = Game{} mi := &file_proto_igdbapi_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Game) String() string { return protoimpl.X.MessageStringOf(x) } func (*Game) ProtoMessage() {} func (x *Game) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Game.ProtoReflect.Descriptor instead. func (*Game) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{62} } func (x *Game) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Game) GetAgeRatings() []*AgeRating { if x != nil { return x.AgeRatings } return nil } func (x *Game) GetAggregatedRating() float64 { if x != nil { return x.AggregatedRating } return 0 } func (x *Game) GetAggregatedRatingCount() int32 { if x != nil { return x.AggregatedRatingCount } return 0 } func (x *Game) GetAlternativeNames() []*AlternativeName { if x != nil { return x.AlternativeNames } return nil } func (x *Game) GetArtworks() []*Artwork { if x != nil { return x.Artworks } return nil } func (x *Game) GetBundles() []*Game { if x != nil { return x.Bundles } return nil } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *Game) GetCategory() GameCategoryEnum { if x != nil { return x.Category } return GameCategoryEnum_MAIN_GAME } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *Game) GetCollection() *Collection { if x != nil { return x.Collection } return nil } func (x *Game) GetCover() *Cover { if x != nil { return x.Cover } return nil } func (x *Game) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Game) GetDlcs() []*Game { if x != nil { return x.Dlcs } return nil } func (x *Game) GetExpansions() []*Game { if x != nil { return x.Expansions } return nil } func (x *Game) GetExternalGames() []*ExternalGame { if x != nil { return x.ExternalGames } return nil } func (x *Game) GetFirstReleaseDate() *timestamppb.Timestamp { if x != nil { return x.FirstReleaseDate } return nil } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *Game) GetFollows() int32 { if x != nil { return x.Follows } return 0 } func (x *Game) GetFranchise() *Franchise { if x != nil { return x.Franchise } return nil } func (x *Game) GetFranchises() []*Franchise { if x != nil { return x.Franchises } return nil } func (x *Game) GetGameEngines() []*GameEngine { if x != nil { return x.GameEngines } return nil } func (x *Game) GetGameModes() []*GameMode { if x != nil { return x.GameModes } return nil } func (x *Game) GetGenres() []*Genre { if x != nil { return x.Genres } return nil } func (x *Game) GetHypes() int32 { if x != nil { return x.Hypes } return 0 } func (x *Game) GetInvolvedCompanies() []*InvolvedCompany { if x != nil { return x.InvolvedCompanies } return nil } func (x *Game) GetKeywords() []*Keyword { if x != nil { return x.Keywords } return nil } func (x *Game) GetMultiplayerModes() []*MultiplayerMode { if x != nil { return x.MultiplayerModes } return nil } func (x *Game) GetName() string { if x != nil { return x.Name } return "" } func (x *Game) GetParentGame() *Game { if x != nil { return x.ParentGame } return nil } func (x *Game) GetPlatforms() []*Platform { if x != nil { return x.Platforms } return nil } func (x *Game) GetPlayerPerspectives() []*PlayerPerspective { if x != nil { return x.PlayerPerspectives } return nil } func (x *Game) GetRating() float64 { if x != nil { return x.Rating } return 0 } func (x *Game) GetRatingCount() int32 { if x != nil { return x.RatingCount } return 0 } func (x *Game) GetReleaseDates() []*ReleaseDate { if x != nil { return x.ReleaseDates } return nil } func (x *Game) GetScreenshots() []*Screenshot { if x != nil { return x.Screenshots } return nil } func (x *Game) GetSimilarGames() []*Game { if x != nil { return x.SimilarGames } return nil } func (x *Game) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Game) GetStandaloneExpansions() []*Game { if x != nil { return x.StandaloneExpansions } return nil } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *Game) GetStatus() GameStatusEnum { if x != nil { return x.Status } return GameStatusEnum_RELEASED } func (x *Game) GetStoryline() string { if x != nil { return x.Storyline } return "" } func (x *Game) GetSummary() string { if x != nil { return x.Summary } return "" } func (x *Game) GetTags() []int32 { if x != nil { return x.Tags } return nil } func (x *Game) GetThemes() []*Theme { if x != nil { return x.Themes } return nil } func (x *Game) GetTotalRating() float64 { if x != nil { return x.TotalRating } return 0 } func (x *Game) GetTotalRatingCount() int32 { if x != nil { return x.TotalRatingCount } return 0 } func (x *Game) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Game) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Game) GetVersionParent() *Game { if x != nil { return x.VersionParent } return nil } func (x *Game) GetVersionTitle() string { if x != nil { return x.VersionTitle } return "" } func (x *Game) GetVideos() []*GameVideo { if x != nil { return x.Videos } return nil } func (x *Game) GetWebsites() []*Website { if x != nil { return x.Websites } return nil } func (x *Game) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *Game) GetRemakes() []*Game { if x != nil { return x.Remakes } return nil } func (x *Game) GetRemasters() []*Game { if x != nil { return x.Remasters } return nil } func (x *Game) GetExpandedGames() []*Game { if x != nil { return x.ExpandedGames } return nil } func (x *Game) GetPorts() []*Game { if x != nil { return x.Ports } return nil } func (x *Game) GetForks() []*Game { if x != nil { return x.Forks } return nil } func (x *Game) GetLanguageSupports() []*LanguageSupport { if x != nil { return x.LanguageSupports } return nil } func (x *Game) GetGameLocalizations() []*GameLocalization { if x != nil { return x.GameLocalizations } return nil } func (x *Game) GetCollections() []*Collection { if x != nil { return x.Collections } return nil } func (x *Game) GetGameStatus() *GameStatus { if x != nil { return x.GameStatus } return nil } func (x *Game) GetGameType() *GameType { if x != nil { return x.GameType } return nil } type GameEngineResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gameengines []*GameEngine `protobuf:"bytes,1,rep,name=gameengines,proto3" json:"gameengines,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameEngineResult) Reset() { *x = GameEngineResult{} mi := &file_proto_igdbapi_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameEngineResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameEngineResult) ProtoMessage() {} func (x *GameEngineResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameEngineResult.ProtoReflect.Descriptor instead. func (*GameEngineResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{63} } func (x *GameEngineResult) GetGameengines() []*GameEngine { if x != nil { return x.Gameengines } return nil } type GameEngine struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Companies []*Company `protobuf:"bytes,2,rep,name=companies,proto3" json:"companies,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` Logo *GameEngineLogo `protobuf:"bytes,5,opt,name=logo,proto3" json:"logo,omitempty"` Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` Platforms []*Platform `protobuf:"bytes,7,rep,name=platforms,proto3" json:"platforms,omitempty"` Slug string `protobuf:"bytes,8,opt,name=slug,proto3" json:"slug,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,10,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,11,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameEngine) Reset() { *x = GameEngine{} mi := &file_proto_igdbapi_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameEngine) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameEngine) ProtoMessage() {} func (x *GameEngine) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameEngine.ProtoReflect.Descriptor instead. func (*GameEngine) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{64} } func (x *GameEngine) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameEngine) GetCompanies() []*Company { if x != nil { return x.Companies } return nil } func (x *GameEngine) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *GameEngine) GetDescription() string { if x != nil { return x.Description } return "" } func (x *GameEngine) GetLogo() *GameEngineLogo { if x != nil { return x.Logo } return nil } func (x *GameEngine) GetName() string { if x != nil { return x.Name } return "" } func (x *GameEngine) GetPlatforms() []*Platform { if x != nil { return x.Platforms } return nil } func (x *GameEngine) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *GameEngine) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *GameEngine) GetUrl() string { if x != nil { return x.Url } return "" } func (x *GameEngine) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameEngineLogoResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gameenginelogos []*GameEngineLogo `protobuf:"bytes,1,rep,name=gameenginelogos,proto3" json:"gameenginelogos,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameEngineLogoResult) Reset() { *x = GameEngineLogoResult{} mi := &file_proto_igdbapi_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameEngineLogoResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameEngineLogoResult) ProtoMessage() {} func (x *GameEngineLogoResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameEngineLogoResult.ProtoReflect.Descriptor instead. func (*GameEngineLogoResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{65} } func (x *GameEngineLogoResult) GetGameenginelogos() []*GameEngineLogo { if x != nil { return x.Gameenginelogos } return nil } type GameEngineLogo struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameEngineLogo) Reset() { *x = GameEngineLogo{} mi := &file_proto_igdbapi_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameEngineLogo) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameEngineLogo) ProtoMessage() {} func (x *GameEngineLogo) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameEngineLogo.ProtoReflect.Descriptor instead. func (*GameEngineLogo) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{66} } func (x *GameEngineLogo) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameEngineLogo) GetAlphaChannel() bool { if x != nil { return x.AlphaChannel } return false } func (x *GameEngineLogo) GetAnimated() bool { if x != nil { return x.Animated } return false } func (x *GameEngineLogo) GetHeight() int32 { if x != nil { return x.Height } return 0 } func (x *GameEngineLogo) GetImageId() string { if x != nil { return x.ImageId } return "" } func (x *GameEngineLogo) GetUrl() string { if x != nil { return x.Url } return "" } func (x *GameEngineLogo) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *GameEngineLogo) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameLocalizationResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gamelocalizations []*GameLocalization `protobuf:"bytes,1,rep,name=gamelocalizations,proto3" json:"gamelocalizations,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameLocalizationResult) Reset() { *x = GameLocalizationResult{} mi := &file_proto_igdbapi_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameLocalizationResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameLocalizationResult) ProtoMessage() {} func (x *GameLocalizationResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameLocalizationResult.ProtoReflect.Descriptor instead. func (*GameLocalizationResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{67} } func (x *GameLocalizationResult) GetGamelocalizations() []*GameLocalization { if x != nil { return x.Gamelocalizations } return nil } type GameLocalization struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Cover *Cover `protobuf:"bytes,3,opt,name=cover,proto3" json:"cover,omitempty"` Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` Region *Region `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameLocalization) Reset() { *x = GameLocalization{} mi := &file_proto_igdbapi_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameLocalization) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameLocalization) ProtoMessage() {} func (x *GameLocalization) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameLocalization.ProtoReflect.Descriptor instead. func (*GameLocalization) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{68} } func (x *GameLocalization) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameLocalization) GetName() string { if x != nil { return x.Name } return "" } func (x *GameLocalization) GetCover() *Cover { if x != nil { return x.Cover } return nil } func (x *GameLocalization) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *GameLocalization) GetRegion() *Region { if x != nil { return x.Region } return nil } func (x *GameLocalization) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *GameLocalization) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *GameLocalization) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameModeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gamemodes []*GameMode `protobuf:"bytes,1,rep,name=gamemodes,proto3" json:"gamemodes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameModeResult) Reset() { *x = GameModeResult{} mi := &file_proto_igdbapi_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameModeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameModeResult) ProtoMessage() {} func (x *GameModeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameModeResult.ProtoReflect.Descriptor instead. func (*GameModeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{69} } func (x *GameModeResult) GetGamemodes() []*GameMode { if x != nil { return x.Gamemodes } return nil } type GameMode struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameMode) Reset() { *x = GameMode{} mi := &file_proto_igdbapi_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameMode) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameMode) ProtoMessage() {} func (x *GameMode) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameMode.ProtoReflect.Descriptor instead. func (*GameMode) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{70} } func (x *GameMode) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameMode) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *GameMode) GetName() string { if x != nil { return x.Name } return "" } func (x *GameMode) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *GameMode) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *GameMode) GetUrl() string { if x != nil { return x.Url } return "" } func (x *GameMode) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameReleaseFormatResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gamereleaseformats []*GameReleaseFormat `protobuf:"bytes,1,rep,name=gamereleaseformats,proto3" json:"gamereleaseformats,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameReleaseFormatResult) Reset() { *x = GameReleaseFormatResult{} mi := &file_proto_igdbapi_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameReleaseFormatResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameReleaseFormatResult) ProtoMessage() {} func (x *GameReleaseFormatResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameReleaseFormatResult.ProtoReflect.Descriptor instead. func (*GameReleaseFormatResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{71} } func (x *GameReleaseFormatResult) GetGamereleaseformats() []*GameReleaseFormat { if x != nil { return x.Gamereleaseformats } return nil } type GameReleaseFormat struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameReleaseFormat) Reset() { *x = GameReleaseFormat{} mi := &file_proto_igdbapi_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameReleaseFormat) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameReleaseFormat) ProtoMessage() {} func (x *GameReleaseFormat) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameReleaseFormat.ProtoReflect.Descriptor instead. func (*GameReleaseFormat) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{72} } func (x *GameReleaseFormat) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameReleaseFormat) GetFormat() string { if x != nil { return x.Format } return "" } func (x *GameReleaseFormat) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *GameReleaseFormat) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *GameReleaseFormat) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameStatusResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gamestatuses []*GameStatus `protobuf:"bytes,1,rep,name=gamestatuses,proto3" json:"gamestatuses,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameStatusResult) Reset() { *x = GameStatusResult{} mi := &file_proto_igdbapi_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameStatusResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameStatusResult) ProtoMessage() {} func (x *GameStatusResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameStatusResult.ProtoReflect.Descriptor instead. func (*GameStatusResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{73} } func (x *GameStatusResult) GetGamestatuses() []*GameStatus { if x != nil { return x.Gamestatuses } return nil } type GameStatus struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameStatus) Reset() { *x = GameStatus{} mi := &file_proto_igdbapi_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameStatus) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameStatus) ProtoMessage() {} func (x *GameStatus) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameStatus.ProtoReflect.Descriptor instead. func (*GameStatus) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{74} } func (x *GameStatus) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameStatus) GetStatus() string { if x != nil { return x.Status } return "" } func (x *GameStatus) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *GameStatus) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *GameStatus) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameTimeToBeatResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gametimetobeats []*GameTimeToBeat `protobuf:"bytes,1,rep,name=gametimetobeats,proto3" json:"gametimetobeats,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameTimeToBeatResult) Reset() { *x = GameTimeToBeatResult{} mi := &file_proto_igdbapi_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameTimeToBeatResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameTimeToBeatResult) ProtoMessage() {} func (x *GameTimeToBeatResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameTimeToBeatResult.ProtoReflect.Descriptor instead. func (*GameTimeToBeatResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{75} } func (x *GameTimeToBeatResult) GetGametimetobeats() []*GameTimeToBeat { if x != nil { return x.Gametimetobeats } return nil } type GameTimeToBeat struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` GameId int32 `protobuf:"varint,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` Hastily int32 `protobuf:"varint,3,opt,name=hastily,proto3" json:"hastily,omitempty"` Normally int32 `protobuf:"varint,4,opt,name=normally,proto3" json:"normally,omitempty"` Completely int32 `protobuf:"varint,5,opt,name=completely,proto3" json:"completely,omitempty"` Count int32 `protobuf:"varint,6,opt,name=count,proto3" json:"count,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameTimeToBeat) Reset() { *x = GameTimeToBeat{} mi := &file_proto_igdbapi_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameTimeToBeat) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameTimeToBeat) ProtoMessage() {} func (x *GameTimeToBeat) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameTimeToBeat.ProtoReflect.Descriptor instead. func (*GameTimeToBeat) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{76} } func (x *GameTimeToBeat) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameTimeToBeat) GetGameId() int32 { if x != nil { return x.GameId } return 0 } func (x *GameTimeToBeat) GetHastily() int32 { if x != nil { return x.Hastily } return 0 } func (x *GameTimeToBeat) GetNormally() int32 { if x != nil { return x.Normally } return 0 } func (x *GameTimeToBeat) GetCompletely() int32 { if x != nil { return x.Completely } return 0 } func (x *GameTimeToBeat) GetCount() int32 { if x != nil { return x.Count } return 0 } func (x *GameTimeToBeat) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *GameTimeToBeat) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *GameTimeToBeat) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameTypeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gametypes []*GameType `protobuf:"bytes,1,rep,name=gametypes,proto3" json:"gametypes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameTypeResult) Reset() { *x = GameTypeResult{} mi := &file_proto_igdbapi_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameTypeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameTypeResult) ProtoMessage() {} func (x *GameTypeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameTypeResult.ProtoReflect.Descriptor instead. func (*GameTypeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{77} } func (x *GameTypeResult) GetGametypes() []*GameType { if x != nil { return x.Gametypes } return nil } type GameType struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameType) Reset() { *x = GameType{} mi := &file_proto_igdbapi_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameType) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameType) ProtoMessage() {} func (x *GameType) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameType.ProtoReflect.Descriptor instead. func (*GameType) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{78} } func (x *GameType) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameType) GetType() string { if x != nil { return x.Type } return "" } func (x *GameType) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *GameType) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *GameType) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameVersionResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gameversions []*GameVersion `protobuf:"bytes,1,rep,name=gameversions,proto3" json:"gameversions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameVersionResult) Reset() { *x = GameVersionResult{} mi := &file_proto_igdbapi_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameVersionResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameVersionResult) ProtoMessage() {} func (x *GameVersionResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameVersionResult.ProtoReflect.Descriptor instead. func (*GameVersionResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{79} } func (x *GameVersionResult) GetGameversions() []*GameVersion { if x != nil { return x.Gameversions } return nil } type GameVersion struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Features []*GameVersionFeature `protobuf:"bytes,3,rep,name=features,proto3" json:"features,omitempty"` Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` Games []*Game `protobuf:"bytes,5,rep,name=games,proto3" json:"games,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameVersion) Reset() { *x = GameVersion{} mi := &file_proto_igdbapi_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameVersion) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameVersion) ProtoMessage() {} func (x *GameVersion) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameVersion.ProtoReflect.Descriptor instead. func (*GameVersion) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{80} } func (x *GameVersion) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameVersion) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *GameVersion) GetFeatures() []*GameVersionFeature { if x != nil { return x.Features } return nil } func (x *GameVersion) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *GameVersion) GetGames() []*Game { if x != nil { return x.Games } return nil } func (x *GameVersion) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *GameVersion) GetUrl() string { if x != nil { return x.Url } return "" } func (x *GameVersion) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameVersionFeatureResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gameversionfeatures []*GameVersionFeature `protobuf:"bytes,1,rep,name=gameversionfeatures,proto3" json:"gameversionfeatures,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameVersionFeatureResult) Reset() { *x = GameVersionFeatureResult{} mi := &file_proto_igdbapi_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameVersionFeatureResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameVersionFeatureResult) ProtoMessage() {} func (x *GameVersionFeatureResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameVersionFeatureResult.ProtoReflect.Descriptor instead. func (*GameVersionFeatureResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{81} } func (x *GameVersionFeatureResult) GetGameversionfeatures() []*GameVersionFeature { if x != nil { return x.Gameversionfeatures } return nil } type GameVersionFeature struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Category GameVersionFeatureCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.GameVersionFeatureCategoryEnum" json:"category,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` Position int32 `protobuf:"varint,4,opt,name=position,proto3" json:"position,omitempty"` Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` Values []*GameVersionFeatureValue `protobuf:"bytes,6,rep,name=values,proto3" json:"values,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameVersionFeature) Reset() { *x = GameVersionFeature{} mi := &file_proto_igdbapi_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameVersionFeature) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameVersionFeature) ProtoMessage() {} func (x *GameVersionFeature) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameVersionFeature.ProtoReflect.Descriptor instead. func (*GameVersionFeature) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{82} } func (x *GameVersionFeature) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameVersionFeature) GetCategory() GameVersionFeatureCategoryEnum { if x != nil { return x.Category } return GameVersionFeatureCategoryEnum_BOOLEAN } func (x *GameVersionFeature) GetDescription() string { if x != nil { return x.Description } return "" } func (x *GameVersionFeature) GetPosition() int32 { if x != nil { return x.Position } return 0 } func (x *GameVersionFeature) GetTitle() string { if x != nil { return x.Title } return "" } func (x *GameVersionFeature) GetValues() []*GameVersionFeatureValue { if x != nil { return x.Values } return nil } func (x *GameVersionFeature) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameVersionFeatureValueResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gameversionfeaturevalues []*GameVersionFeatureValue `protobuf:"bytes,1,rep,name=gameversionfeaturevalues,proto3" json:"gameversionfeaturevalues,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameVersionFeatureValueResult) Reset() { *x = GameVersionFeatureValueResult{} mi := &file_proto_igdbapi_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameVersionFeatureValueResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameVersionFeatureValueResult) ProtoMessage() {} func (x *GameVersionFeatureValueResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameVersionFeatureValueResult.ProtoReflect.Descriptor instead. func (*GameVersionFeatureValueResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{83} } func (x *GameVersionFeatureValueResult) GetGameversionfeaturevalues() []*GameVersionFeatureValue { if x != nil { return x.Gameversionfeaturevalues } return nil } type GameVersionFeatureValue struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` GameFeature *GameVersionFeature `protobuf:"bytes,3,opt,name=game_feature,json=gameFeature,proto3" json:"game_feature,omitempty"` IncludedFeature GameVersionFeatureValueIncludedFeatureEnum `protobuf:"varint,4,opt,name=included_feature,json=includedFeature,proto3,enum=proto.GameVersionFeatureValueIncludedFeatureEnum" json:"included_feature,omitempty"` Note string `protobuf:"bytes,5,opt,name=note,proto3" json:"note,omitempty"` Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameVersionFeatureValue) Reset() { *x = GameVersionFeatureValue{} mi := &file_proto_igdbapi_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameVersionFeatureValue) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameVersionFeatureValue) ProtoMessage() {} func (x *GameVersionFeatureValue) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameVersionFeatureValue.ProtoReflect.Descriptor instead. func (*GameVersionFeatureValue) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{84} } func (x *GameVersionFeatureValue) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameVersionFeatureValue) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *GameVersionFeatureValue) GetGameFeature() *GameVersionFeature { if x != nil { return x.GameFeature } return nil } func (x *GameVersionFeatureValue) GetIncludedFeature() GameVersionFeatureValueIncludedFeatureEnum { if x != nil { return x.IncludedFeature } return GameVersionFeatureValueIncludedFeatureEnum_NOT_INCLUDED } func (x *GameVersionFeatureValue) GetNote() string { if x != nil { return x.Note } return "" } func (x *GameVersionFeatureValue) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GameVideoResult struct { state protoimpl.MessageState `protogen:"open.v1"` Gamevideos []*GameVideo `protobuf:"bytes,1,rep,name=gamevideos,proto3" json:"gamevideos,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameVideoResult) Reset() { *x = GameVideoResult{} mi := &file_proto_igdbapi_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameVideoResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameVideoResult) ProtoMessage() {} func (x *GameVideoResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameVideoResult.ProtoReflect.Descriptor instead. func (*GameVideoResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{85} } func (x *GameVideoResult) GetGamevideos() []*GameVideo { if x != nil { return x.Gamevideos } return nil } type GameVideo struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` VideoId string `protobuf:"bytes,4,opt,name=video_id,json=videoId,proto3" json:"video_id,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GameVideo) Reset() { *x = GameVideo{} mi := &file_proto_igdbapi_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GameVideo) String() string { return protoimpl.X.MessageStringOf(x) } func (*GameVideo) ProtoMessage() {} func (x *GameVideo) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GameVideo.ProtoReflect.Descriptor instead. func (*GameVideo) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{86} } func (x *GameVideo) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *GameVideo) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *GameVideo) GetName() string { if x != nil { return x.Name } return "" } func (x *GameVideo) GetVideoId() string { if x != nil { return x.VideoId } return "" } func (x *GameVideo) GetChecksum() string { if x != nil { return x.Checksum } return "" } type GenreResult struct { state protoimpl.MessageState `protogen:"open.v1"` Genres []*Genre `protobuf:"bytes,1,rep,name=genres,proto3" json:"genres,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *GenreResult) Reset() { *x = GenreResult{} mi := &file_proto_igdbapi_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *GenreResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*GenreResult) ProtoMessage() {} func (x *GenreResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GenreResult.ProtoReflect.Descriptor instead. func (*GenreResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{87} } func (x *GenreResult) GetGenres() []*Genre { if x != nil { return x.Genres } return nil } type Genre struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Genre) Reset() { *x = Genre{} mi := &file_proto_igdbapi_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Genre) String() string { return protoimpl.X.MessageStringOf(x) } func (*Genre) ProtoMessage() {} func (x *Genre) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Genre.ProtoReflect.Descriptor instead. func (*Genre) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{88} } func (x *Genre) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Genre) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Genre) GetName() string { if x != nil { return x.Name } return "" } func (x *Genre) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Genre) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Genre) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Genre) GetChecksum() string { if x != nil { return x.Checksum } return "" } type InvolvedCompanyResult struct { state protoimpl.MessageState `protogen:"open.v1"` Involvedcompanies []*InvolvedCompany `protobuf:"bytes,1,rep,name=involvedcompanies,proto3" json:"involvedcompanies,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *InvolvedCompanyResult) Reset() { *x = InvolvedCompanyResult{} mi := &file_proto_igdbapi_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *InvolvedCompanyResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*InvolvedCompanyResult) ProtoMessage() {} func (x *InvolvedCompanyResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use InvolvedCompanyResult.ProtoReflect.Descriptor instead. func (*InvolvedCompanyResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{89} } func (x *InvolvedCompanyResult) GetInvolvedcompanies() []*InvolvedCompany { if x != nil { return x.Involvedcompanies } return nil } type InvolvedCompany struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Company *Company `protobuf:"bytes,2,opt,name=company,proto3" json:"company,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Developer bool `protobuf:"varint,4,opt,name=developer,proto3" json:"developer,omitempty"` Game *Game `protobuf:"bytes,5,opt,name=game,proto3" json:"game,omitempty"` Porting bool `protobuf:"varint,6,opt,name=porting,proto3" json:"porting,omitempty"` Publisher bool `protobuf:"varint,7,opt,name=publisher,proto3" json:"publisher,omitempty"` Supporting bool `protobuf:"varint,8,opt,name=supporting,proto3" json:"supporting,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,10,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *InvolvedCompany) Reset() { *x = InvolvedCompany{} mi := &file_proto_igdbapi_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *InvolvedCompany) String() string { return protoimpl.X.MessageStringOf(x) } func (*InvolvedCompany) ProtoMessage() {} func (x *InvolvedCompany) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use InvolvedCompany.ProtoReflect.Descriptor instead. func (*InvolvedCompany) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{90} } func (x *InvolvedCompany) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *InvolvedCompany) GetCompany() *Company { if x != nil { return x.Company } return nil } func (x *InvolvedCompany) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *InvolvedCompany) GetDeveloper() bool { if x != nil { return x.Developer } return false } func (x *InvolvedCompany) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *InvolvedCompany) GetPorting() bool { if x != nil { return x.Porting } return false } func (x *InvolvedCompany) GetPublisher() bool { if x != nil { return x.Publisher } return false } func (x *InvolvedCompany) GetSupporting() bool { if x != nil { return x.Supporting } return false } func (x *InvolvedCompany) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *InvolvedCompany) GetChecksum() string { if x != nil { return x.Checksum } return "" } type KeywordResult struct { state protoimpl.MessageState `protogen:"open.v1"` Keywords []*Keyword `protobuf:"bytes,1,rep,name=keywords,proto3" json:"keywords,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *KeywordResult) Reset() { *x = KeywordResult{} mi := &file_proto_igdbapi_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *KeywordResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*KeywordResult) ProtoMessage() {} func (x *KeywordResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use KeywordResult.ProtoReflect.Descriptor instead. func (*KeywordResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{91} } func (x *KeywordResult) GetKeywords() []*Keyword { if x != nil { return x.Keywords } return nil } type Keyword struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Keyword) Reset() { *x = Keyword{} mi := &file_proto_igdbapi_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Keyword) String() string { return protoimpl.X.MessageStringOf(x) } func (*Keyword) ProtoMessage() {} func (x *Keyword) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Keyword.ProtoReflect.Descriptor instead. func (*Keyword) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{92} } func (x *Keyword) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Keyword) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Keyword) GetName() string { if x != nil { return x.Name } return "" } func (x *Keyword) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Keyword) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Keyword) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Keyword) GetChecksum() string { if x != nil { return x.Checksum } return "" } type LanguageResult struct { state protoimpl.MessageState `protogen:"open.v1"` Languages []*Language `protobuf:"bytes,1,rep,name=languages,proto3" json:"languages,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *LanguageResult) Reset() { *x = LanguageResult{} mi := &file_proto_igdbapi_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *LanguageResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*LanguageResult) ProtoMessage() {} func (x *LanguageResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LanguageResult.ProtoReflect.Descriptor instead. func (*LanguageResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{93} } func (x *LanguageResult) GetLanguages() []*Language { if x != nil { return x.Languages } return nil } type Language struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` NativeName string `protobuf:"bytes,3,opt,name=native_name,json=nativeName,proto3" json:"native_name,omitempty"` Locale string `protobuf:"bytes,4,opt,name=locale,proto3" json:"locale,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Language) Reset() { *x = Language{} mi := &file_proto_igdbapi_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Language) String() string { return protoimpl.X.MessageStringOf(x) } func (*Language) ProtoMessage() {} func (x *Language) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Language.ProtoReflect.Descriptor instead. func (*Language) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{94} } func (x *Language) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Language) GetName() string { if x != nil { return x.Name } return "" } func (x *Language) GetNativeName() string { if x != nil { return x.NativeName } return "" } func (x *Language) GetLocale() string { if x != nil { return x.Locale } return "" } func (x *Language) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Language) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Language) GetChecksum() string { if x != nil { return x.Checksum } return "" } type LanguageSupportResult struct { state protoimpl.MessageState `protogen:"open.v1"` Languagesupports []*LanguageSupport `protobuf:"bytes,1,rep,name=languagesupports,proto3" json:"languagesupports,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *LanguageSupportResult) Reset() { *x = LanguageSupportResult{} mi := &file_proto_igdbapi_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *LanguageSupportResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*LanguageSupportResult) ProtoMessage() {} func (x *LanguageSupportResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LanguageSupportResult.ProtoReflect.Descriptor instead. func (*LanguageSupportResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{95} } func (x *LanguageSupportResult) GetLanguagesupports() []*LanguageSupport { if x != nil { return x.Languagesupports } return nil } type LanguageSupport struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Game *Game `protobuf:"bytes,2,opt,name=game,proto3" json:"game,omitempty"` Language *Language `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"` LanguageSupportType *LanguageSupportType `protobuf:"bytes,4,opt,name=language_support_type,json=languageSupportType,proto3" json:"language_support_type,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *LanguageSupport) Reset() { *x = LanguageSupport{} mi := &file_proto_igdbapi_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *LanguageSupport) String() string { return protoimpl.X.MessageStringOf(x) } func (*LanguageSupport) ProtoMessage() {} func (x *LanguageSupport) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LanguageSupport.ProtoReflect.Descriptor instead. func (*LanguageSupport) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{96} } func (x *LanguageSupport) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *LanguageSupport) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *LanguageSupport) GetLanguage() *Language { if x != nil { return x.Language } return nil } func (x *LanguageSupport) GetLanguageSupportType() *LanguageSupportType { if x != nil { return x.LanguageSupportType } return nil } func (x *LanguageSupport) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *LanguageSupport) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *LanguageSupport) GetChecksum() string { if x != nil { return x.Checksum } return "" } type LanguageSupportTypeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Languagesupporttypes []*LanguageSupportType `protobuf:"bytes,1,rep,name=languagesupporttypes,proto3" json:"languagesupporttypes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *LanguageSupportTypeResult) Reset() { *x = LanguageSupportTypeResult{} mi := &file_proto_igdbapi_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *LanguageSupportTypeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*LanguageSupportTypeResult) ProtoMessage() {} func (x *LanguageSupportTypeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LanguageSupportTypeResult.ProtoReflect.Descriptor instead. func (*LanguageSupportTypeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{97} } func (x *LanguageSupportTypeResult) GetLanguagesupporttypes() []*LanguageSupportType { if x != nil { return x.Languagesupporttypes } return nil } type LanguageSupportType struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *LanguageSupportType) Reset() { *x = LanguageSupportType{} mi := &file_proto_igdbapi_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *LanguageSupportType) String() string { return protoimpl.X.MessageStringOf(x) } func (*LanguageSupportType) ProtoMessage() {} func (x *LanguageSupportType) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use LanguageSupportType.ProtoReflect.Descriptor instead. func (*LanguageSupportType) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{98} } func (x *LanguageSupportType) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *LanguageSupportType) GetName() string { if x != nil { return x.Name } return "" } func (x *LanguageSupportType) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *LanguageSupportType) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *LanguageSupportType) GetChecksum() string { if x != nil { return x.Checksum } return "" } type MultiplayerModeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Multiplayermodes []*MultiplayerMode `protobuf:"bytes,1,rep,name=multiplayermodes,proto3" json:"multiplayermodes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *MultiplayerModeResult) Reset() { *x = MultiplayerModeResult{} mi := &file_proto_igdbapi_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *MultiplayerModeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*MultiplayerModeResult) ProtoMessage() {} func (x *MultiplayerModeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use MultiplayerModeResult.ProtoReflect.Descriptor instead. func (*MultiplayerModeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{99} } func (x *MultiplayerModeResult) GetMultiplayermodes() []*MultiplayerMode { if x != nil { return x.Multiplayermodes } return nil } type MultiplayerMode struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Campaigncoop bool `protobuf:"varint,2,opt,name=campaigncoop,proto3" json:"campaigncoop,omitempty"` Dropin bool `protobuf:"varint,3,opt,name=dropin,proto3" json:"dropin,omitempty"` Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` Lancoop bool `protobuf:"varint,5,opt,name=lancoop,proto3" json:"lancoop,omitempty"` Offlinecoop bool `protobuf:"varint,6,opt,name=offlinecoop,proto3" json:"offlinecoop,omitempty"` Offlinecoopmax int32 `protobuf:"varint,7,opt,name=offlinecoopmax,proto3" json:"offlinecoopmax,omitempty"` Offlinemax int32 `protobuf:"varint,8,opt,name=offlinemax,proto3" json:"offlinemax,omitempty"` Onlinecoop bool `protobuf:"varint,9,opt,name=onlinecoop,proto3" json:"onlinecoop,omitempty"` Onlinecoopmax int32 `protobuf:"varint,10,opt,name=onlinecoopmax,proto3" json:"onlinecoopmax,omitempty"` Onlinemax int32 `protobuf:"varint,11,opt,name=onlinemax,proto3" json:"onlinemax,omitempty"` Platform *Platform `protobuf:"bytes,12,opt,name=platform,proto3" json:"platform,omitempty"` Splitscreen bool `protobuf:"varint,13,opt,name=splitscreen,proto3" json:"splitscreen,omitempty"` Splitscreenonline bool `protobuf:"varint,14,opt,name=splitscreenonline,proto3" json:"splitscreenonline,omitempty"` Checksum string `protobuf:"bytes,15,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *MultiplayerMode) Reset() { *x = MultiplayerMode{} mi := &file_proto_igdbapi_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *MultiplayerMode) String() string { return protoimpl.X.MessageStringOf(x) } func (*MultiplayerMode) ProtoMessage() {} func (x *MultiplayerMode) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use MultiplayerMode.ProtoReflect.Descriptor instead. func (*MultiplayerMode) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{100} } func (x *MultiplayerMode) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *MultiplayerMode) GetCampaigncoop() bool { if x != nil { return x.Campaigncoop } return false } func (x *MultiplayerMode) GetDropin() bool { if x != nil { return x.Dropin } return false } func (x *MultiplayerMode) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *MultiplayerMode) GetLancoop() bool { if x != nil { return x.Lancoop } return false } func (x *MultiplayerMode) GetOfflinecoop() bool { if x != nil { return x.Offlinecoop } return false } func (x *MultiplayerMode) GetOfflinecoopmax() int32 { if x != nil { return x.Offlinecoopmax } return 0 } func (x *MultiplayerMode) GetOfflinemax() int32 { if x != nil { return x.Offlinemax } return 0 } func (x *MultiplayerMode) GetOnlinecoop() bool { if x != nil { return x.Onlinecoop } return false } func (x *MultiplayerMode) GetOnlinecoopmax() int32 { if x != nil { return x.Onlinecoopmax } return 0 } func (x *MultiplayerMode) GetOnlinemax() int32 { if x != nil { return x.Onlinemax } return 0 } func (x *MultiplayerMode) GetPlatform() *Platform { if x != nil { return x.Platform } return nil } func (x *MultiplayerMode) GetSplitscreen() bool { if x != nil { return x.Splitscreen } return false } func (x *MultiplayerMode) GetSplitscreenonline() bool { if x != nil { return x.Splitscreenonline } return false } func (x *MultiplayerMode) GetChecksum() string { if x != nil { return x.Checksum } return "" } type NetworkTypeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Networktypes []*NetworkType `protobuf:"bytes,1,rep,name=networktypes,proto3" json:"networktypes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *NetworkTypeResult) Reset() { *x = NetworkTypeResult{} mi := &file_proto_igdbapi_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *NetworkTypeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*NetworkTypeResult) ProtoMessage() {} func (x *NetworkTypeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use NetworkTypeResult.ProtoReflect.Descriptor instead. func (*NetworkTypeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{101} } func (x *NetworkTypeResult) GetNetworktypes() []*NetworkType { if x != nil { return x.Networktypes } return nil } type NetworkType struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` EventNetworks []*EventNetwork `protobuf:"bytes,3,rep,name=event_networks,json=eventNetworks,proto3" json:"event_networks,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *NetworkType) Reset() { *x = NetworkType{} mi := &file_proto_igdbapi_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *NetworkType) String() string { return protoimpl.X.MessageStringOf(x) } func (*NetworkType) ProtoMessage() {} func (x *NetworkType) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use NetworkType.ProtoReflect.Descriptor instead. func (*NetworkType) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{102} } func (x *NetworkType) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *NetworkType) GetName() string { if x != nil { return x.Name } return "" } func (x *NetworkType) GetEventNetworks() []*EventNetwork { if x != nil { return x.EventNetworks } return nil } func (x *NetworkType) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *NetworkType) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *NetworkType) GetChecksum() string { if x != nil { return x.Checksum } return "" } type PlatformResult struct { state protoimpl.MessageState `protogen:"open.v1"` Platforms []*Platform `protobuf:"bytes,1,rep,name=platforms,proto3" json:"platforms,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformResult) Reset() { *x = PlatformResult{} mi := &file_proto_igdbapi_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformResult) ProtoMessage() {} func (x *PlatformResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformResult.ProtoReflect.Descriptor instead. func (*PlatformResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{103} } func (x *PlatformResult) GetPlatforms() []*Platform { if x != nil { return x.Platforms } return nil } type Platform struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Abbreviation string `protobuf:"bytes,2,opt,name=abbreviation,proto3" json:"abbreviation,omitempty"` AlternativeName string `protobuf:"bytes,3,opt,name=alternative_name,json=alternativeName,proto3" json:"alternative_name,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Category PlatformCategoryEnum `protobuf:"varint,4,opt,name=category,proto3,enum=proto.PlatformCategoryEnum" json:"category,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Generation int32 `protobuf:"varint,6,opt,name=generation,proto3" json:"generation,omitempty"` Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` PlatformLogo *PlatformLogo `protobuf:"bytes,8,opt,name=platform_logo,json=platformLogo,proto3" json:"platform_logo,omitempty"` PlatformFamily *PlatformFamily `protobuf:"bytes,9,opt,name=platform_family,json=platformFamily,proto3" json:"platform_family,omitempty"` Slug string `protobuf:"bytes,10,opt,name=slug,proto3" json:"slug,omitempty"` Summary string `protobuf:"bytes,11,opt,name=summary,proto3" json:"summary,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,13,opt,name=url,proto3" json:"url,omitempty"` Versions []*PlatformVersion `protobuf:"bytes,14,rep,name=versions,proto3" json:"versions,omitempty"` Websites []*PlatformWebsite `protobuf:"bytes,15,rep,name=websites,proto3" json:"websites,omitempty"` Checksum string `protobuf:"bytes,16,opt,name=checksum,proto3" json:"checksum,omitempty"` PlatformType *PlatformType `protobuf:"bytes,17,opt,name=platform_type,json=platformType,proto3" json:"platform_type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Platform) Reset() { *x = Platform{} mi := &file_proto_igdbapi_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Platform) String() string { return protoimpl.X.MessageStringOf(x) } func (*Platform) ProtoMessage() {} func (x *Platform) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Platform.ProtoReflect.Descriptor instead. func (*Platform) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{104} } func (x *Platform) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Platform) GetAbbreviation() string { if x != nil { return x.Abbreviation } return "" } func (x *Platform) GetAlternativeName() string { if x != nil { return x.AlternativeName } return "" } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *Platform) GetCategory() PlatformCategoryEnum { if x != nil { return x.Category } return PlatformCategoryEnum_PLATFORM_CATEGORY_NULL } func (x *Platform) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Platform) GetGeneration() int32 { if x != nil { return x.Generation } return 0 } func (x *Platform) GetName() string { if x != nil { return x.Name } return "" } func (x *Platform) GetPlatformLogo() *PlatformLogo { if x != nil { return x.PlatformLogo } return nil } func (x *Platform) GetPlatformFamily() *PlatformFamily { if x != nil { return x.PlatformFamily } return nil } func (x *Platform) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Platform) GetSummary() string { if x != nil { return x.Summary } return "" } func (x *Platform) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Platform) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Platform) GetVersions() []*PlatformVersion { if x != nil { return x.Versions } return nil } func (x *Platform) GetWebsites() []*PlatformWebsite { if x != nil { return x.Websites } return nil } func (x *Platform) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *Platform) GetPlatformType() *PlatformType { if x != nil { return x.PlatformType } return nil } type PlatformFamilyResult struct { state protoimpl.MessageState `protogen:"open.v1"` Platformfamilies []*PlatformFamily `protobuf:"bytes,1,rep,name=platformfamilies,proto3" json:"platformfamilies,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformFamilyResult) Reset() { *x = PlatformFamilyResult{} mi := &file_proto_igdbapi_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformFamilyResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformFamilyResult) ProtoMessage() {} func (x *PlatformFamilyResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[105] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformFamilyResult.ProtoReflect.Descriptor instead. func (*PlatformFamilyResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{105} } func (x *PlatformFamilyResult) GetPlatformfamilies() []*PlatformFamily { if x != nil { return x.Platformfamilies } return nil } type PlatformFamily struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Slug string `protobuf:"bytes,3,opt,name=slug,proto3" json:"slug,omitempty"` Checksum string `protobuf:"bytes,4,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformFamily) Reset() { *x = PlatformFamily{} mi := &file_proto_igdbapi_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformFamily) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformFamily) ProtoMessage() {} func (x *PlatformFamily) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[106] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformFamily.ProtoReflect.Descriptor instead. func (*PlatformFamily) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{106} } func (x *PlatformFamily) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *PlatformFamily) GetName() string { if x != nil { return x.Name } return "" } func (x *PlatformFamily) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *PlatformFamily) GetChecksum() string { if x != nil { return x.Checksum } return "" } type PlatformLogoResult struct { state protoimpl.MessageState `protogen:"open.v1"` Platformlogos []*PlatformLogo `protobuf:"bytes,1,rep,name=platformlogos,proto3" json:"platformlogos,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformLogoResult) Reset() { *x = PlatformLogoResult{} mi := &file_proto_igdbapi_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformLogoResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformLogoResult) ProtoMessage() {} func (x *PlatformLogoResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[107] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformLogoResult.ProtoReflect.Descriptor instead. func (*PlatformLogoResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{107} } func (x *PlatformLogoResult) GetPlatformlogos() []*PlatformLogo { if x != nil { return x.Platformlogos } return nil } type PlatformLogo struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` Height int32 `protobuf:"varint,4,opt,name=height,proto3" json:"height,omitempty"` ImageId string `protobuf:"bytes,5,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` Width int32 `protobuf:"varint,7,opt,name=width,proto3" json:"width,omitempty"` Checksum string `protobuf:"bytes,8,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformLogo) Reset() { *x = PlatformLogo{} mi := &file_proto_igdbapi_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformLogo) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformLogo) ProtoMessage() {} func (x *PlatformLogo) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformLogo.ProtoReflect.Descriptor instead. func (*PlatformLogo) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{108} } func (x *PlatformLogo) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *PlatformLogo) GetAlphaChannel() bool { if x != nil { return x.AlphaChannel } return false } func (x *PlatformLogo) GetAnimated() bool { if x != nil { return x.Animated } return false } func (x *PlatformLogo) GetHeight() int32 { if x != nil { return x.Height } return 0 } func (x *PlatformLogo) GetImageId() string { if x != nil { return x.ImageId } return "" } func (x *PlatformLogo) GetUrl() string { if x != nil { return x.Url } return "" } func (x *PlatformLogo) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *PlatformLogo) GetChecksum() string { if x != nil { return x.Checksum } return "" } type PlatformTypeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Platformtypes []*PlatformType `protobuf:"bytes,1,rep,name=platformtypes,proto3" json:"platformtypes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformTypeResult) Reset() { *x = PlatformTypeResult{} mi := &file_proto_igdbapi_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformTypeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformTypeResult) ProtoMessage() {} func (x *PlatformTypeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformTypeResult.ProtoReflect.Descriptor instead. func (*PlatformTypeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{109} } func (x *PlatformTypeResult) GetPlatformtypes() []*PlatformType { if x != nil { return x.Platformtypes } return nil } type PlatformType struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformType) Reset() { *x = PlatformType{} mi := &file_proto_igdbapi_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformType) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformType) ProtoMessage() {} func (x *PlatformType) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[110] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformType.ProtoReflect.Descriptor instead. func (*PlatformType) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{110} } func (x *PlatformType) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *PlatformType) GetName() string { if x != nil { return x.Name } return "" } func (x *PlatformType) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *PlatformType) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *PlatformType) GetChecksum() string { if x != nil { return x.Checksum } return "" } type PlatformVersionResult struct { state protoimpl.MessageState `protogen:"open.v1"` Platformversions []*PlatformVersion `protobuf:"bytes,1,rep,name=platformversions,proto3" json:"platformversions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformVersionResult) Reset() { *x = PlatformVersionResult{} mi := &file_proto_igdbapi_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformVersionResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformVersionResult) ProtoMessage() {} func (x *PlatformVersionResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[111] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformVersionResult.ProtoReflect.Descriptor instead. func (*PlatformVersionResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{111} } func (x *PlatformVersionResult) GetPlatformversions() []*PlatformVersion { if x != nil { return x.Platformversions } return nil } type PlatformVersion struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Companies []*PlatformVersionCompany `protobuf:"bytes,2,rep,name=companies,proto3" json:"companies,omitempty"` Connectivity string `protobuf:"bytes,3,opt,name=connectivity,proto3" json:"connectivity,omitempty"` Cpu string `protobuf:"bytes,4,opt,name=cpu,proto3" json:"cpu,omitempty"` Graphics string `protobuf:"bytes,5,opt,name=graphics,proto3" json:"graphics,omitempty"` MainManufacturer *PlatformVersionCompany `protobuf:"bytes,6,opt,name=main_manufacturer,json=mainManufacturer,proto3" json:"main_manufacturer,omitempty"` Media string `protobuf:"bytes,7,opt,name=media,proto3" json:"media,omitempty"` Memory string `protobuf:"bytes,8,opt,name=memory,proto3" json:"memory,omitempty"` Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` Os string `protobuf:"bytes,11,opt,name=os,proto3" json:"os,omitempty"` Output string `protobuf:"bytes,12,opt,name=output,proto3" json:"output,omitempty"` PlatformLogo *PlatformLogo `protobuf:"bytes,13,opt,name=platform_logo,json=platformLogo,proto3" json:"platform_logo,omitempty"` PlatformVersionReleaseDates []*PlatformVersionReleaseDate `protobuf:"bytes,14,rep,name=platform_version_release_dates,json=platformVersionReleaseDates,proto3" json:"platform_version_release_dates,omitempty"` Resolutions string `protobuf:"bytes,15,opt,name=resolutions,proto3" json:"resolutions,omitempty"` Slug string `protobuf:"bytes,16,opt,name=slug,proto3" json:"slug,omitempty"` Sound string `protobuf:"bytes,17,opt,name=sound,proto3" json:"sound,omitempty"` Storage string `protobuf:"bytes,18,opt,name=storage,proto3" json:"storage,omitempty"` Summary string `protobuf:"bytes,19,opt,name=summary,proto3" json:"summary,omitempty"` Url string `protobuf:"bytes,20,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,21,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformVersion) Reset() { *x = PlatformVersion{} mi := &file_proto_igdbapi_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformVersion) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformVersion) ProtoMessage() {} func (x *PlatformVersion) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[112] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformVersion.ProtoReflect.Descriptor instead. func (*PlatformVersion) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{112} } func (x *PlatformVersion) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *PlatformVersion) GetCompanies() []*PlatformVersionCompany { if x != nil { return x.Companies } return nil } func (x *PlatformVersion) GetConnectivity() string { if x != nil { return x.Connectivity } return "" } func (x *PlatformVersion) GetCpu() string { if x != nil { return x.Cpu } return "" } func (x *PlatformVersion) GetGraphics() string { if x != nil { return x.Graphics } return "" } func (x *PlatformVersion) GetMainManufacturer() *PlatformVersionCompany { if x != nil { return x.MainManufacturer } return nil } func (x *PlatformVersion) GetMedia() string { if x != nil { return x.Media } return "" } func (x *PlatformVersion) GetMemory() string { if x != nil { return x.Memory } return "" } func (x *PlatformVersion) GetName() string { if x != nil { return x.Name } return "" } func (x *PlatformVersion) GetOs() string { if x != nil { return x.Os } return "" } func (x *PlatformVersion) GetOutput() string { if x != nil { return x.Output } return "" } func (x *PlatformVersion) GetPlatformLogo() *PlatformLogo { if x != nil { return x.PlatformLogo } return nil } func (x *PlatformVersion) GetPlatformVersionReleaseDates() []*PlatformVersionReleaseDate { if x != nil { return x.PlatformVersionReleaseDates } return nil } func (x *PlatformVersion) GetResolutions() string { if x != nil { return x.Resolutions } return "" } func (x *PlatformVersion) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *PlatformVersion) GetSound() string { if x != nil { return x.Sound } return "" } func (x *PlatformVersion) GetStorage() string { if x != nil { return x.Storage } return "" } func (x *PlatformVersion) GetSummary() string { if x != nil { return x.Summary } return "" } func (x *PlatformVersion) GetUrl() string { if x != nil { return x.Url } return "" } func (x *PlatformVersion) GetChecksum() string { if x != nil { return x.Checksum } return "" } type PlatformVersionCompanyResult struct { state protoimpl.MessageState `protogen:"open.v1"` Platformversioncompanies []*PlatformVersionCompany `protobuf:"bytes,1,rep,name=platformversioncompanies,proto3" json:"platformversioncompanies,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformVersionCompanyResult) Reset() { *x = PlatformVersionCompanyResult{} mi := &file_proto_igdbapi_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformVersionCompanyResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformVersionCompanyResult) ProtoMessage() {} func (x *PlatformVersionCompanyResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[113] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformVersionCompanyResult.ProtoReflect.Descriptor instead. func (*PlatformVersionCompanyResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{113} } func (x *PlatformVersionCompanyResult) GetPlatformversioncompanies() []*PlatformVersionCompany { if x != nil { return x.Platformversioncompanies } return nil } type PlatformVersionCompany struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` Company *Company `protobuf:"bytes,3,opt,name=company,proto3" json:"company,omitempty"` Developer bool `protobuf:"varint,4,opt,name=developer,proto3" json:"developer,omitempty"` Manufacturer bool `protobuf:"varint,5,opt,name=manufacturer,proto3" json:"manufacturer,omitempty"` Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformVersionCompany) Reset() { *x = PlatformVersionCompany{} mi := &file_proto_igdbapi_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformVersionCompany) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformVersionCompany) ProtoMessage() {} func (x *PlatformVersionCompany) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[114] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformVersionCompany.ProtoReflect.Descriptor instead. func (*PlatformVersionCompany) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{114} } func (x *PlatformVersionCompany) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *PlatformVersionCompany) GetComment() string { if x != nil { return x.Comment } return "" } func (x *PlatformVersionCompany) GetCompany() *Company { if x != nil { return x.Company } return nil } func (x *PlatformVersionCompany) GetDeveloper() bool { if x != nil { return x.Developer } return false } func (x *PlatformVersionCompany) GetManufacturer() bool { if x != nil { return x.Manufacturer } return false } func (x *PlatformVersionCompany) GetChecksum() string { if x != nil { return x.Checksum } return "" } type PlatformVersionReleaseDateResult struct { state protoimpl.MessageState `protogen:"open.v1"` Platformversionreleasedates []*PlatformVersionReleaseDate `protobuf:"bytes,1,rep,name=platformversionreleasedates,proto3" json:"platformversionreleasedates,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformVersionReleaseDateResult) Reset() { *x = PlatformVersionReleaseDateResult{} mi := &file_proto_igdbapi_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformVersionReleaseDateResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformVersionReleaseDateResult) ProtoMessage() {} func (x *PlatformVersionReleaseDateResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[115] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformVersionReleaseDateResult.ProtoReflect.Descriptor instead. func (*PlatformVersionReleaseDateResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{115} } func (x *PlatformVersionReleaseDateResult) GetPlatformversionreleasedates() []*PlatformVersionReleaseDate { if x != nil { return x.Platformversionreleasedates } return nil } type PlatformVersionReleaseDate struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Category DateFormatChangeDateCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"category,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Date *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=date,proto3" json:"date,omitempty"` Human string `protobuf:"bytes,5,opt,name=human,proto3" json:"human,omitempty"` M int32 `protobuf:"varint,6,opt,name=m,proto3" json:"m,omitempty"` PlatformVersion *PlatformVersion `protobuf:"bytes,7,opt,name=platform_version,json=platformVersion,proto3" json:"platform_version,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Region RegionRegionEnum `protobuf:"varint,8,opt,name=region,proto3,enum=proto.RegionRegionEnum" json:"region,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Y int32 `protobuf:"varint,10,opt,name=y,proto3" json:"y,omitempty"` Checksum string `protobuf:"bytes,11,opt,name=checksum,proto3" json:"checksum,omitempty"` DateFormat *DateFormat `protobuf:"bytes,12,opt,name=date_format,json=dateFormat,proto3" json:"date_format,omitempty"` ReleaseRegion *ReleaseDateRegion `protobuf:"bytes,13,opt,name=release_region,json=releaseRegion,proto3" json:"release_region,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformVersionReleaseDate) Reset() { *x = PlatformVersionReleaseDate{} mi := &file_proto_igdbapi_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformVersionReleaseDate) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformVersionReleaseDate) ProtoMessage() {} func (x *PlatformVersionReleaseDate) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[116] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformVersionReleaseDate.ProtoReflect.Descriptor instead. func (*PlatformVersionReleaseDate) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{116} } func (x *PlatformVersionReleaseDate) GetId() uint64 { if x != nil { return x.Id } return 0 } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *PlatformVersionReleaseDate) GetCategory() DateFormatChangeDateCategoryEnum { if x != nil { return x.Category } return DateFormatChangeDateCategoryEnum_YYYYMMMMDD } func (x *PlatformVersionReleaseDate) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *PlatformVersionReleaseDate) GetDate() *timestamppb.Timestamp { if x != nil { return x.Date } return nil } func (x *PlatformVersionReleaseDate) GetHuman() string { if x != nil { return x.Human } return "" } func (x *PlatformVersionReleaseDate) GetM() int32 { if x != nil { return x.M } return 0 } func (x *PlatformVersionReleaseDate) GetPlatformVersion() *PlatformVersion { if x != nil { return x.PlatformVersion } return nil } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *PlatformVersionReleaseDate) GetRegion() RegionRegionEnum { if x != nil { return x.Region } return RegionRegionEnum_REGION_REGION_NULL } func (x *PlatformVersionReleaseDate) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *PlatformVersionReleaseDate) GetY() int32 { if x != nil { return x.Y } return 0 } func (x *PlatformVersionReleaseDate) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *PlatformVersionReleaseDate) GetDateFormat() *DateFormat { if x != nil { return x.DateFormat } return nil } func (x *PlatformVersionReleaseDate) GetReleaseRegion() *ReleaseDateRegion { if x != nil { return x.ReleaseRegion } return nil } type PlatformWebsiteResult struct { state protoimpl.MessageState `protogen:"open.v1"` Platformwebsites []*PlatformWebsite `protobuf:"bytes,1,rep,name=platformwebsites,proto3" json:"platformwebsites,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformWebsiteResult) Reset() { *x = PlatformWebsiteResult{} mi := &file_proto_igdbapi_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformWebsiteResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformWebsiteResult) ProtoMessage() {} func (x *PlatformWebsiteResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[117] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformWebsiteResult.ProtoReflect.Descriptor instead. func (*PlatformWebsiteResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{117} } func (x *PlatformWebsiteResult) GetPlatformwebsites() []*PlatformWebsite { if x != nil { return x.Platformwebsites } return nil } type PlatformWebsite struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Category WebsiteCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.WebsiteCategoryEnum" json:"category,omitempty"` Trusted bool `protobuf:"varint,3,opt,name=trusted,proto3" json:"trusted,omitempty"` Url string `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` Type *WebsiteType `protobuf:"bytes,6,opt,name=type,proto3" json:"type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlatformWebsite) Reset() { *x = PlatformWebsite{} mi := &file_proto_igdbapi_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlatformWebsite) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlatformWebsite) ProtoMessage() {} func (x *PlatformWebsite) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[118] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlatformWebsite.ProtoReflect.Descriptor instead. func (*PlatformWebsite) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{118} } func (x *PlatformWebsite) GetId() uint64 { if x != nil { return x.Id } return 0 } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *PlatformWebsite) GetCategory() WebsiteCategoryEnum { if x != nil { return x.Category } return WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL } func (x *PlatformWebsite) GetTrusted() bool { if x != nil { return x.Trusted } return false } func (x *PlatformWebsite) GetUrl() string { if x != nil { return x.Url } return "" } func (x *PlatformWebsite) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *PlatformWebsite) GetType() *WebsiteType { if x != nil { return x.Type } return nil } type PlayerPerspectiveResult struct { state protoimpl.MessageState `protogen:"open.v1"` Playerperspectives []*PlayerPerspective `protobuf:"bytes,1,rep,name=playerperspectives,proto3" json:"playerperspectives,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlayerPerspectiveResult) Reset() { *x = PlayerPerspectiveResult{} mi := &file_proto_igdbapi_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlayerPerspectiveResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlayerPerspectiveResult) ProtoMessage() {} func (x *PlayerPerspectiveResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[119] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlayerPerspectiveResult.ProtoReflect.Descriptor instead. func (*PlayerPerspectiveResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{119} } func (x *PlayerPerspectiveResult) GetPlayerperspectives() []*PlayerPerspective { if x != nil { return x.Playerperspectives } return nil } type PlayerPerspective struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PlayerPerspective) Reset() { *x = PlayerPerspective{} mi := &file_proto_igdbapi_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PlayerPerspective) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlayerPerspective) ProtoMessage() {} func (x *PlayerPerspective) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[120] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlayerPerspective.ProtoReflect.Descriptor instead. func (*PlayerPerspective) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{120} } func (x *PlayerPerspective) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *PlayerPerspective) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *PlayerPerspective) GetName() string { if x != nil { return x.Name } return "" } func (x *PlayerPerspective) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *PlayerPerspective) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *PlayerPerspective) GetUrl() string { if x != nil { return x.Url } return "" } func (x *PlayerPerspective) GetChecksum() string { if x != nil { return x.Checksum } return "" } type PopularityPrimitiveResult struct { state protoimpl.MessageState `protogen:"open.v1"` Popularityprimitives []*PopularityPrimitive `protobuf:"bytes,1,rep,name=popularityprimitives,proto3" json:"popularityprimitives,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PopularityPrimitiveResult) Reset() { *x = PopularityPrimitiveResult{} mi := &file_proto_igdbapi_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PopularityPrimitiveResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PopularityPrimitiveResult) ProtoMessage() {} func (x *PopularityPrimitiveResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[121] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PopularityPrimitiveResult.ProtoReflect.Descriptor instead. func (*PopularityPrimitiveResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{121} } func (x *PopularityPrimitiveResult) GetPopularityprimitives() []*PopularityPrimitive { if x != nil { return x.Popularityprimitives } return nil } type PopularityPrimitive struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` GameId int32 `protobuf:"varint,2,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` PopularityType *PopularityType `protobuf:"bytes,3,opt,name=popularity_type,json=popularityType,proto3" json:"popularity_type,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. PopularitySource PopularitySourcePopularitySourceEnum `protobuf:"varint,4,opt,name=popularity_source,json=popularitySource,proto3,enum=proto.PopularitySourcePopularitySourceEnum" json:"popularity_source,omitempty"` Value float64 `protobuf:"fixed64,5,opt,name=value,proto3" json:"value,omitempty"` CalculatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=calculated_at,json=calculatedAt,proto3" json:"calculated_at,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` ExternalPopularitySource *ExternalGameSource `protobuf:"bytes,10,opt,name=external_popularity_source,json=externalPopularitySource,proto3" json:"external_popularity_source,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PopularityPrimitive) Reset() { *x = PopularityPrimitive{} mi := &file_proto_igdbapi_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PopularityPrimitive) String() string { return protoimpl.X.MessageStringOf(x) } func (*PopularityPrimitive) ProtoMessage() {} func (x *PopularityPrimitive) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[122] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PopularityPrimitive.ProtoReflect.Descriptor instead. func (*PopularityPrimitive) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{122} } func (x *PopularityPrimitive) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *PopularityPrimitive) GetGameId() int32 { if x != nil { return x.GameId } return 0 } func (x *PopularityPrimitive) GetPopularityType() *PopularityType { if x != nil { return x.PopularityType } return nil } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *PopularityPrimitive) GetPopularitySource() PopularitySourcePopularitySourceEnum { if x != nil { return x.PopularitySource } return PopularitySourcePopularitySourceEnum_POPULARITYSOURCE_POPULARITY_SOURCE_NULL } func (x *PopularityPrimitive) GetValue() float64 { if x != nil { return x.Value } return 0 } func (x *PopularityPrimitive) GetCalculatedAt() *timestamppb.Timestamp { if x != nil { return x.CalculatedAt } return nil } func (x *PopularityPrimitive) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *PopularityPrimitive) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *PopularityPrimitive) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *PopularityPrimitive) GetExternalPopularitySource() *ExternalGameSource { if x != nil { return x.ExternalPopularitySource } return nil } type PopularityTypeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Popularitytypes []*PopularityType `protobuf:"bytes,1,rep,name=popularitytypes,proto3" json:"popularitytypes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PopularityTypeResult) Reset() { *x = PopularityTypeResult{} mi := &file_proto_igdbapi_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PopularityTypeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*PopularityTypeResult) ProtoMessage() {} func (x *PopularityTypeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[123] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PopularityTypeResult.ProtoReflect.Descriptor instead. func (*PopularityTypeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{123} } func (x *PopularityTypeResult) GetPopularitytypes() []*PopularityType { if x != nil { return x.Popularitytypes } return nil } type PopularityType struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. PopularitySource PopularitySourcePopularitySourceEnum `protobuf:"varint,2,opt,name=popularity_source,json=popularitySource,proto3,enum=proto.PopularitySourcePopularitySourceEnum" json:"popularity_source,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` ExternalPopularitySource *ExternalGameSource `protobuf:"bytes,7,opt,name=external_popularity_source,json=externalPopularitySource,proto3" json:"external_popularity_source,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PopularityType) Reset() { *x = PopularityType{} mi := &file_proto_igdbapi_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *PopularityType) String() string { return protoimpl.X.MessageStringOf(x) } func (*PopularityType) ProtoMessage() {} func (x *PopularityType) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[124] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PopularityType.ProtoReflect.Descriptor instead. func (*PopularityType) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{124} } func (x *PopularityType) GetId() uint64 { if x != nil { return x.Id } return 0 } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *PopularityType) GetPopularitySource() PopularitySourcePopularitySourceEnum { if x != nil { return x.PopularitySource } return PopularitySourcePopularitySourceEnum_POPULARITYSOURCE_POPULARITY_SOURCE_NULL } func (x *PopularityType) GetName() string { if x != nil { return x.Name } return "" } func (x *PopularityType) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *PopularityType) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *PopularityType) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *PopularityType) GetExternalPopularitySource() *ExternalGameSource { if x != nil { return x.ExternalPopularitySource } return nil } type RegionResult struct { state protoimpl.MessageState `protogen:"open.v1"` Regions []*Region `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RegionResult) Reset() { *x = RegionResult{} mi := &file_proto_igdbapi_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *RegionResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*RegionResult) ProtoMessage() {} func (x *RegionResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[125] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RegionResult.ProtoReflect.Descriptor instead. func (*RegionResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{125} } func (x *RegionResult) GetRegions() []*Region { if x != nil { return x.Regions } return nil } type Region struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Category string `protobuf:"bytes,3,opt,name=category,proto3" json:"category,omitempty"` Identifier string `protobuf:"bytes,4,opt,name=identifier,proto3" json:"identifier,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Region) Reset() { *x = Region{} mi := &file_proto_igdbapi_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Region) String() string { return protoimpl.X.MessageStringOf(x) } func (*Region) ProtoMessage() {} func (x *Region) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[126] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Region.ProtoReflect.Descriptor instead. func (*Region) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{126} } func (x *Region) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Region) GetName() string { if x != nil { return x.Name } return "" } func (x *Region) GetCategory() string { if x != nil { return x.Category } return "" } func (x *Region) GetIdentifier() string { if x != nil { return x.Identifier } return "" } func (x *Region) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Region) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Region) GetChecksum() string { if x != nil { return x.Checksum } return "" } type ReleaseDateResult struct { state protoimpl.MessageState `protogen:"open.v1"` Releasedates []*ReleaseDate `protobuf:"bytes,1,rep,name=releasedates,proto3" json:"releasedates,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReleaseDateResult) Reset() { *x = ReleaseDateResult{} mi := &file_proto_igdbapi_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ReleaseDateResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReleaseDateResult) ProtoMessage() {} func (x *ReleaseDateResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[127] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReleaseDateResult.ProtoReflect.Descriptor instead. func (*ReleaseDateResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{127} } func (x *ReleaseDateResult) GetReleasedates() []*ReleaseDate { if x != nil { return x.Releasedates } return nil } type ReleaseDate struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Category DateFormatChangeDateCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.DateFormatChangeDateCategoryEnum" json:"category,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Date *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=date,proto3" json:"date,omitempty"` Game *Game `protobuf:"bytes,5,opt,name=game,proto3" json:"game,omitempty"` Human string `protobuf:"bytes,6,opt,name=human,proto3" json:"human,omitempty"` M int32 `protobuf:"varint,7,opt,name=m,proto3" json:"m,omitempty"` Platform *Platform `protobuf:"bytes,8,opt,name=platform,proto3" json:"platform,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Region RegionRegionEnum `protobuf:"varint,9,opt,name=region,proto3,enum=proto.RegionRegionEnum" json:"region,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Y int32 `protobuf:"varint,11,opt,name=y,proto3" json:"y,omitempty"` Checksum string `protobuf:"bytes,12,opt,name=checksum,proto3" json:"checksum,omitempty"` Status *ReleaseDateStatus `protobuf:"bytes,13,opt,name=status,proto3" json:"status,omitempty"` DateFormat *DateFormat `protobuf:"bytes,14,opt,name=date_format,json=dateFormat,proto3" json:"date_format,omitempty"` ReleaseRegion *ReleaseDateRegion `protobuf:"bytes,15,opt,name=release_region,json=releaseRegion,proto3" json:"release_region,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReleaseDate) Reset() { *x = ReleaseDate{} mi := &file_proto_igdbapi_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ReleaseDate) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReleaseDate) ProtoMessage() {} func (x *ReleaseDate) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[128] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReleaseDate.ProtoReflect.Descriptor instead. func (*ReleaseDate) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{128} } func (x *ReleaseDate) GetId() uint64 { if x != nil { return x.Id } return 0 } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *ReleaseDate) GetCategory() DateFormatChangeDateCategoryEnum { if x != nil { return x.Category } return DateFormatChangeDateCategoryEnum_YYYYMMMMDD } func (x *ReleaseDate) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *ReleaseDate) GetDate() *timestamppb.Timestamp { if x != nil { return x.Date } return nil } func (x *ReleaseDate) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *ReleaseDate) GetHuman() string { if x != nil { return x.Human } return "" } func (x *ReleaseDate) GetM() int32 { if x != nil { return x.M } return 0 } func (x *ReleaseDate) GetPlatform() *Platform { if x != nil { return x.Platform } return nil } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *ReleaseDate) GetRegion() RegionRegionEnum { if x != nil { return x.Region } return RegionRegionEnum_REGION_REGION_NULL } func (x *ReleaseDate) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *ReleaseDate) GetY() int32 { if x != nil { return x.Y } return 0 } func (x *ReleaseDate) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *ReleaseDate) GetStatus() *ReleaseDateStatus { if x != nil { return x.Status } return nil } func (x *ReleaseDate) GetDateFormat() *DateFormat { if x != nil { return x.DateFormat } return nil } func (x *ReleaseDate) GetReleaseRegion() *ReleaseDateRegion { if x != nil { return x.ReleaseRegion } return nil } type ReleaseDateRegionResult struct { state protoimpl.MessageState `protogen:"open.v1"` Releasedateregions []*ReleaseDateRegion `protobuf:"bytes,1,rep,name=releasedateregions,proto3" json:"releasedateregions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReleaseDateRegionResult) Reset() { *x = ReleaseDateRegionResult{} mi := &file_proto_igdbapi_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ReleaseDateRegionResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReleaseDateRegionResult) ProtoMessage() {} func (x *ReleaseDateRegionResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[129] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReleaseDateRegionResult.ProtoReflect.Descriptor instead. func (*ReleaseDateRegionResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{129} } func (x *ReleaseDateRegionResult) GetReleasedateregions() []*ReleaseDateRegion { if x != nil { return x.Releasedateregions } return nil } type ReleaseDateRegion struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Region string `protobuf:"bytes,2,opt,name=region,proto3" json:"region,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReleaseDateRegion) Reset() { *x = ReleaseDateRegion{} mi := &file_proto_igdbapi_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ReleaseDateRegion) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReleaseDateRegion) ProtoMessage() {} func (x *ReleaseDateRegion) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[130] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReleaseDateRegion.ProtoReflect.Descriptor instead. func (*ReleaseDateRegion) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{130} } func (x *ReleaseDateRegion) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *ReleaseDateRegion) GetRegion() string { if x != nil { return x.Region } return "" } func (x *ReleaseDateRegion) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *ReleaseDateRegion) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *ReleaseDateRegion) GetChecksum() string { if x != nil { return x.Checksum } return "" } type ReleaseDateStatusResult struct { state protoimpl.MessageState `protogen:"open.v1"` Releasedatestatuses []*ReleaseDateStatus `protobuf:"bytes,1,rep,name=releasedatestatuses,proto3" json:"releasedatestatuses,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReleaseDateStatusResult) Reset() { *x = ReleaseDateStatusResult{} mi := &file_proto_igdbapi_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ReleaseDateStatusResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReleaseDateStatusResult) ProtoMessage() {} func (x *ReleaseDateStatusResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[131] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReleaseDateStatusResult.ProtoReflect.Descriptor instead. func (*ReleaseDateStatusResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{131} } func (x *ReleaseDateStatusResult) GetReleasedatestatuses() []*ReleaseDateStatus { if x != nil { return x.Releasedatestatuses } return nil } type ReleaseDateStatus struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ReleaseDateStatus) Reset() { *x = ReleaseDateStatus{} mi := &file_proto_igdbapi_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ReleaseDateStatus) String() string { return protoimpl.X.MessageStringOf(x) } func (*ReleaseDateStatus) ProtoMessage() {} func (x *ReleaseDateStatus) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[132] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ReleaseDateStatus.ProtoReflect.Descriptor instead. func (*ReleaseDateStatus) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{132} } func (x *ReleaseDateStatus) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *ReleaseDateStatus) GetName() string { if x != nil { return x.Name } return "" } func (x *ReleaseDateStatus) GetDescription() string { if x != nil { return x.Description } return "" } func (x *ReleaseDateStatus) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *ReleaseDateStatus) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *ReleaseDateStatus) GetChecksum() string { if x != nil { return x.Checksum } return "" } type ScreenshotResult struct { state protoimpl.MessageState `protogen:"open.v1"` Screenshots []*Screenshot `protobuf:"bytes,1,rep,name=screenshots,proto3" json:"screenshots,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ScreenshotResult) Reset() { *x = ScreenshotResult{} mi := &file_proto_igdbapi_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ScreenshotResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ScreenshotResult) ProtoMessage() {} func (x *ScreenshotResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[133] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ScreenshotResult.ProtoReflect.Descriptor instead. func (*ScreenshotResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{133} } func (x *ScreenshotResult) GetScreenshots() []*Screenshot { if x != nil { return x.Screenshots } return nil } type Screenshot struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` AlphaChannel bool `protobuf:"varint,2,opt,name=alpha_channel,json=alphaChannel,proto3" json:"alpha_channel,omitempty"` Animated bool `protobuf:"varint,3,opt,name=animated,proto3" json:"animated,omitempty"` Game *Game `protobuf:"bytes,4,opt,name=game,proto3" json:"game,omitempty"` Height int32 `protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"` ImageId string `protobuf:"bytes,6,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` Width int32 `protobuf:"varint,8,opt,name=width,proto3" json:"width,omitempty"` Checksum string `protobuf:"bytes,9,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Screenshot) Reset() { *x = Screenshot{} mi := &file_proto_igdbapi_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Screenshot) String() string { return protoimpl.X.MessageStringOf(x) } func (*Screenshot) ProtoMessage() {} func (x *Screenshot) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[134] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Screenshot.ProtoReflect.Descriptor instead. func (*Screenshot) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{134} } func (x *Screenshot) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Screenshot) GetAlphaChannel() bool { if x != nil { return x.AlphaChannel } return false } func (x *Screenshot) GetAnimated() bool { if x != nil { return x.Animated } return false } func (x *Screenshot) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *Screenshot) GetHeight() int32 { if x != nil { return x.Height } return 0 } func (x *Screenshot) GetImageId() string { if x != nil { return x.ImageId } return "" } func (x *Screenshot) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Screenshot) GetWidth() int32 { if x != nil { return x.Width } return 0 } func (x *Screenshot) GetChecksum() string { if x != nil { return x.Checksum } return "" } type SearchResult struct { state protoimpl.MessageState `protogen:"open.v1"` Searches []*Search `protobuf:"bytes,1,rep,name=searches,proto3" json:"searches,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SearchResult) Reset() { *x = SearchResult{} mi := &file_proto_igdbapi_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *SearchResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchResult) ProtoMessage() {} func (x *SearchResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[135] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchResult.ProtoReflect.Descriptor instead. func (*SearchResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{135} } func (x *SearchResult) GetSearches() []*Search { if x != nil { return x.Searches } return nil } type Search struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` AlternativeName string `protobuf:"bytes,2,opt,name=alternative_name,json=alternativeName,proto3" json:"alternative_name,omitempty"` Character *Character `protobuf:"bytes,3,opt,name=character,proto3" json:"character,omitempty"` Collection *Collection `protobuf:"bytes,4,opt,name=collection,proto3" json:"collection,omitempty"` Company *Company `protobuf:"bytes,5,opt,name=company,proto3" json:"company,omitempty"` Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` Game *Game `protobuf:"bytes,7,opt,name=game,proto3" json:"game,omitempty"` Name string `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"` Platform *Platform `protobuf:"bytes,9,opt,name=platform,proto3" json:"platform,omitempty"` PublishedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=published_at,json=publishedAt,proto3" json:"published_at,omitempty"` TestDummy *TestDummy `protobuf:"bytes,11,opt,name=test_dummy,json=testDummy,proto3" json:"test_dummy,omitempty"` Theme *Theme `protobuf:"bytes,12,opt,name=theme,proto3" json:"theme,omitempty"` Checksum string `protobuf:"bytes,13,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Search) Reset() { *x = Search{} mi := &file_proto_igdbapi_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Search) String() string { return protoimpl.X.MessageStringOf(x) } func (*Search) ProtoMessage() {} func (x *Search) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[136] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Search.ProtoReflect.Descriptor instead. func (*Search) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{136} } func (x *Search) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Search) GetAlternativeName() string { if x != nil { return x.AlternativeName } return "" } func (x *Search) GetCharacter() *Character { if x != nil { return x.Character } return nil } func (x *Search) GetCollection() *Collection { if x != nil { return x.Collection } return nil } func (x *Search) GetCompany() *Company { if x != nil { return x.Company } return nil } func (x *Search) GetDescription() string { if x != nil { return x.Description } return "" } func (x *Search) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *Search) GetName() string { if x != nil { return x.Name } return "" } func (x *Search) GetPlatform() *Platform { if x != nil { return x.Platform } return nil } func (x *Search) GetPublishedAt() *timestamppb.Timestamp { if x != nil { return x.PublishedAt } return nil } func (x *Search) GetTestDummy() *TestDummy { if x != nil { return x.TestDummy } return nil } func (x *Search) GetTheme() *Theme { if x != nil { return x.Theme } return nil } func (x *Search) GetChecksum() string { if x != nil { return x.Checksum } return "" } type TestDummyResult struct { state protoimpl.MessageState `protogen:"open.v1"` Testdummies []*TestDummy `protobuf:"bytes,1,rep,name=testdummies,proto3" json:"testdummies,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *TestDummyResult) Reset() { *x = TestDummyResult{} mi := &file_proto_igdbapi_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *TestDummyResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*TestDummyResult) ProtoMessage() {} func (x *TestDummyResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[137] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TestDummyResult.ProtoReflect.Descriptor instead. func (*TestDummyResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{137} } func (x *TestDummyResult) GetTestdummies() []*TestDummy { if x != nil { return x.Testdummies } return nil } type TestDummy struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` BoolValue bool `protobuf:"varint,2,opt,name=bool_value,json=boolValue,proto3" json:"bool_value,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` EnumTest TestDummyEnumTestEnum `protobuf:"varint,4,opt,name=enum_test,json=enumTest,proto3,enum=proto.TestDummyEnumTestEnum" json:"enum_test,omitempty"` FloatValue float64 `protobuf:"fixed64,5,opt,name=float_value,json=floatValue,proto3" json:"float_value,omitempty"` Game *Game `protobuf:"bytes,6,opt,name=game,proto3" json:"game,omitempty"` IntegerArray []int32 `protobuf:"varint,7,rep,packed,name=integer_array,json=integerArray,proto3" json:"integer_array,omitempty"` IntegerValue int32 `protobuf:"varint,8,opt,name=integer_value,json=integerValue,proto3" json:"integer_value,omitempty"` Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` NewIntegerValue int32 `protobuf:"varint,10,opt,name=new_integer_value,json=newIntegerValue,proto3" json:"new_integer_value,omitempty"` Private bool `protobuf:"varint,11,opt,name=private,proto3" json:"private,omitempty"` Slug string `protobuf:"bytes,12,opt,name=slug,proto3" json:"slug,omitempty"` StringArray []string `protobuf:"bytes,13,rep,name=string_array,json=stringArray,proto3" json:"string_array,omitempty"` TestDummies []*TestDummy `protobuf:"bytes,14,rep,name=test_dummies,json=testDummies,proto3" json:"test_dummies,omitempty"` TestDummy *TestDummy `protobuf:"bytes,15,opt,name=test_dummy,json=testDummy,proto3" json:"test_dummy,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,17,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,18,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *TestDummy) Reset() { *x = TestDummy{} mi := &file_proto_igdbapi_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *TestDummy) String() string { return protoimpl.X.MessageStringOf(x) } func (*TestDummy) ProtoMessage() {} func (x *TestDummy) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[138] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TestDummy.ProtoReflect.Descriptor instead. func (*TestDummy) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{138} } func (x *TestDummy) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *TestDummy) GetBoolValue() bool { if x != nil { return x.BoolValue } return false } func (x *TestDummy) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *TestDummy) GetEnumTest() TestDummyEnumTestEnum { if x != nil { return x.EnumTest } return TestDummyEnumTestEnum_TESTDUMMY_ENUM_TEST_NULL } func (x *TestDummy) GetFloatValue() float64 { if x != nil { return x.FloatValue } return 0 } func (x *TestDummy) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *TestDummy) GetIntegerArray() []int32 { if x != nil { return x.IntegerArray } return nil } func (x *TestDummy) GetIntegerValue() int32 { if x != nil { return x.IntegerValue } return 0 } func (x *TestDummy) GetName() string { if x != nil { return x.Name } return "" } func (x *TestDummy) GetNewIntegerValue() int32 { if x != nil { return x.NewIntegerValue } return 0 } func (x *TestDummy) GetPrivate() bool { if x != nil { return x.Private } return false } func (x *TestDummy) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *TestDummy) GetStringArray() []string { if x != nil { return x.StringArray } return nil } func (x *TestDummy) GetTestDummies() []*TestDummy { if x != nil { return x.TestDummies } return nil } func (x *TestDummy) GetTestDummy() *TestDummy { if x != nil { return x.TestDummy } return nil } func (x *TestDummy) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *TestDummy) GetUrl() string { if x != nil { return x.Url } return "" } func (x *TestDummy) GetChecksum() string { if x != nil { return x.Checksum } return "" } type ThemeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Themes []*Theme `protobuf:"bytes,1,rep,name=themes,proto3" json:"themes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ThemeResult) Reset() { *x = ThemeResult{} mi := &file_proto_igdbapi_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *ThemeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*ThemeResult) ProtoMessage() {} func (x *ThemeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[139] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ThemeResult.ProtoReflect.Descriptor instead. func (*ThemeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{139} } func (x *ThemeResult) GetThemes() []*Theme { if x != nil { return x.Themes } return nil } type Theme struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Url string `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,7,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Theme) Reset() { *x = Theme{} mi := &file_proto_igdbapi_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Theme) String() string { return protoimpl.X.MessageStringOf(x) } func (*Theme) ProtoMessage() {} func (x *Theme) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[140] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Theme.ProtoReflect.Descriptor instead. func (*Theme) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{140} } func (x *Theme) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *Theme) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Theme) GetName() string { if x != nil { return x.Name } return "" } func (x *Theme) GetSlug() string { if x != nil { return x.Slug } return "" } func (x *Theme) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *Theme) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Theme) GetChecksum() string { if x != nil { return x.Checksum } return "" } type WebsiteResult struct { state protoimpl.MessageState `protogen:"open.v1"` Websites []*Website `protobuf:"bytes,1,rep,name=websites,proto3" json:"websites,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *WebsiteResult) Reset() { *x = WebsiteResult{} mi := &file_proto_igdbapi_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *WebsiteResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*WebsiteResult) ProtoMessage() {} func (x *WebsiteResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[141] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WebsiteResult.ProtoReflect.Descriptor instead. func (*WebsiteResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{141} } func (x *WebsiteResult) GetWebsites() []*Website { if x != nil { return x.Websites } return nil } type Website struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // Deprecated: Marked as deprecated in proto/igdbapi.proto. Category WebsiteCategoryEnum `protobuf:"varint,2,opt,name=category,proto3,enum=proto.WebsiteCategoryEnum" json:"category,omitempty"` Game *Game `protobuf:"bytes,3,opt,name=game,proto3" json:"game,omitempty"` Trusted bool `protobuf:"varint,4,opt,name=trusted,proto3" json:"trusted,omitempty"` Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` Checksum string `protobuf:"bytes,6,opt,name=checksum,proto3" json:"checksum,omitempty"` Type *WebsiteType `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Website) Reset() { *x = Website{} mi := &file_proto_igdbapi_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *Website) String() string { return protoimpl.X.MessageStringOf(x) } func (*Website) ProtoMessage() {} func (x *Website) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[142] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Website.ProtoReflect.Descriptor instead. func (*Website) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{142} } func (x *Website) GetId() uint64 { if x != nil { return x.Id } return 0 } // Deprecated: Marked as deprecated in proto/igdbapi.proto. func (x *Website) GetCategory() WebsiteCategoryEnum { if x != nil { return x.Category } return WebsiteCategoryEnum_WEBSITE_CATEGORY_NULL } func (x *Website) GetGame() *Game { if x != nil { return x.Game } return nil } func (x *Website) GetTrusted() bool { if x != nil { return x.Trusted } return false } func (x *Website) GetUrl() string { if x != nil { return x.Url } return "" } func (x *Website) GetChecksum() string { if x != nil { return x.Checksum } return "" } func (x *Website) GetType() *WebsiteType { if x != nil { return x.Type } return nil } type WebsiteTypeResult struct { state protoimpl.MessageState `protogen:"open.v1"` Websitetypes []*WebsiteType `protobuf:"bytes,1,rep,name=websitetypes,proto3" json:"websitetypes,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *WebsiteTypeResult) Reset() { *x = WebsiteTypeResult{} mi := &file_proto_igdbapi_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *WebsiteTypeResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*WebsiteTypeResult) ProtoMessage() {} func (x *WebsiteTypeResult) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[143] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WebsiteTypeResult.ProtoReflect.Descriptor instead. func (*WebsiteTypeResult) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{143} } func (x *WebsiteTypeResult) GetWebsitetypes() []*WebsiteType { if x != nil { return x.Websitetypes } return nil } type WebsiteType struct { state protoimpl.MessageState `protogen:"open.v1"` Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` Checksum string `protobuf:"bytes,5,opt,name=checksum,proto3" json:"checksum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *WebsiteType) Reset() { *x = WebsiteType{} mi := &file_proto_igdbapi_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } func (x *WebsiteType) String() string { return protoimpl.X.MessageStringOf(x) } func (*WebsiteType) ProtoMessage() {} func (x *WebsiteType) ProtoReflect() protoreflect.Message { mi := &file_proto_igdbapi_proto_msgTypes[144] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WebsiteType.ProtoReflect.Descriptor instead. func (*WebsiteType) Descriptor() ([]byte, []int) { return file_proto_igdbapi_proto_rawDescGZIP(), []int{144} } func (x *WebsiteType) GetId() uint64 { if x != nil { return x.Id } return 0 } func (x *WebsiteType) GetType() string { if x != nil { return x.Type } return "" } func (x *WebsiteType) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *WebsiteType) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } return nil } func (x *WebsiteType) GetChecksum() string { if x != nil { return x.Checksum } return "" } var File_proto_igdbapi_proto protoreflect.FileDescriptor var file_proto_igdbapi_proto_rawDesc = string([]byte{ 0x0a, 0x13, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x69, 0x67, 0x64, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1d, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x56, 0x0a, 0x10, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x48, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x43, 0x0a, 0x0f, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb5, 0x04, 0x0a, 0x09, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x55, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x79, 0x6e, 0x6f, 0x70, 0x73, 0x69, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x79, 0x6e, 0x6f, 0x70, 0x73, 0x69, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x40, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x64, 0x0a, 0x1b, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x19, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x65, 0x0a, 0x17, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4a, 0x0a, 0x13, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x13, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x11, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x40, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x8b, 0x01, 0x0a, 0x21, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x66, 0x0a, 0x1c, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbb, 0x01, 0x0a, 0x1b, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4e, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x93, 0x01, 0x0a, 0x23, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6c, 0x0a, 0x1e, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x76, 0x32, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x52, 0x1e, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x76, 0x32, 0x22, 0xa5, 0x02, 0x0a, 0x1d, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x73, 0x0a, 0x1b, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x54, 0x0a, 0x16, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x61, 0x67, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x15, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x0f, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3b, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0xf2, 0x01, 0x0a, 0x07, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x43, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x22, 0x8f, 0x05, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x6b, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x6b, 0x61, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x6d, 0x75, 0x67, 0x5f, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x67, 0x53, 0x68, 0x6f, 0x74, 0x52, 0x07, 0x6d, 0x75, 0x67, 0x53, 0x68, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x41, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x5f, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x0f, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x52, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x22, 0x5b, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5f, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x67, 0x53, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x6d, 0x75, 0x67, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x67, 0x53, 0x68, 0x6f, 0x74, 0x52, 0x11, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x6d, 0x75, 0x67, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x22, 0xda, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4d, 0x75, 0x67, 0x53, 0x68, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x52, 0x10, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x22, 0xc7, 0x01, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x47, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xca, 0x03, 0x0a, 0x0a, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x61, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x61, 0x73, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x0a, 0x12, 0x61, 0x73, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x61, 0x73, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x6f, 0x0a, 0x1a, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x51, 0x0a, 0x15, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x15, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x14, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x7f, 0x0a, 0x1e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5d, 0x0a, 0x19, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x19, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x18, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x15, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x67, 0x0a, 0x18, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4b, 0x0a, 0x13, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe7, 0x02, 0x0a, 0x12, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x10, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x77, 0x0a, 0x1c, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x57, 0x0a, 0x17, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x17, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x16, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x57, 0x0a, 0x14, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x22, 0x9a, 0x08, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x5d, 0x0a, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x10, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x31, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3d, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3f, 0x0a, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x10, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x4b, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x55, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x57, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x33, 0x0a, 0x0b, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x06, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x22, 0xb6, 0x02, 0x0a, 0x05, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x44, 0x0a, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x67, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x47, 0x0a, 0x10, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x33, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xe4, 0x04, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x2f, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5a, 0x6f, 0x6e, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x69, 0x76, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0x3a, 0x0a, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x43, 0x0a, 0x0f, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xed, 0x02, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, 0x12, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x22, 0x9d, 0x02, 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x35, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, 0x12, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xf8, 0x04, 0x0a, 0x0c, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x65, 0x61, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x79, 0x65, 0x61, 0x72, 0x12, 0x36, 0x0a, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x4b, 0x0a, 0x14, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x67, 0x0a, 0x18, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4b, 0x0a, 0x13, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x13, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xca, 0x01, 0x0a, 0x12, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x43, 0x0a, 0x0f, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x73, 0x22, 0x8a, 0x02, 0x0a, 0x09, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x2f, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xae, 0x15, 0x0a, 0x04, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x0b, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x61, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x11, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x61, 0x72, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x25, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x64, 0x6c, 0x63, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x64, 0x6c, 0x63, 0x73, 0x12, 0x2b, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x2e, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x52, 0x0a, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x73, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x6e, 0x72, 0x65, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x79, 0x70, 0x65, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x79, 0x70, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x12, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x11, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x11, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x49, 0x0a, 0x13, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x0d, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x40, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x24, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x14, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x6c, 0x6f, 0x6e, 0x65, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x18, 0x29, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, 0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x06, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x07, 0x72, 0x65, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x36, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x37, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x43, 0x0a, 0x11, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x38, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x10, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x12, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x73, 0x22, 0x92, 0x03, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x57, 0x0a, 0x14, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x67, 0x61, 0x6d, 0x65, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0f, 0x67, 0x61, 0x6d, 0x65, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5f, 0x0a, 0x16, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x45, 0x0a, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x67, 0x61, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb4, 0x02, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x05, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x63, 0x0a, 0x17, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x67, 0x61, 0x6d, 0x65, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x12, 0x67, 0x61, 0x6d, 0x65, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x49, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x35, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x57, 0x0a, 0x14, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x42, 0x65, 0x61, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x74, 0x6f, 0x62, 0x65, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x42, 0x65, 0x61, 0x74, 0x52, 0x0f, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x74, 0x6f, 0x62, 0x65, 0x61, 0x74, 0x73, 0x22, 0xb7, 0x02, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x42, 0x65, 0x61, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x74, 0x69, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x68, 0x61, 0x73, 0x74, 0x69, 0x6c, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x6c, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4b, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xbc, 0x02, 0x0a, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x67, 0x0a, 0x18, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4b, 0x0a, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x13, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x7b, 0x0a, 0x1d, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5a, 0x0a, 0x18, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x96, 0x02, 0x0a, 0x17, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x5c, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x43, 0x0a, 0x0f, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x33, 0x0a, 0x0b, 0x47, 0x65, 0x6e, 0x72, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x6e, 0x72, 0x65, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x22, 0xe3, 0x01, 0x0a, 0x05, 0x47, 0x65, 0x6e, 0x72, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5d, 0x0a, 0x15, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x44, 0x0a, 0x11, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x11, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x22, 0xf4, 0x02, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3b, 0x0a, 0x0d, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x0e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x09, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x22, 0xf9, 0x01, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x10, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x0f, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x4e, 0x0a, 0x15, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x13, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x6b, 0x0a, 0x19, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4e, 0x0a, 0x14, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x14, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xcb, 0x01, 0x0a, 0x13, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x22, 0xff, 0x03, 0x0a, 0x0f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x63, 0x61, 0x6d, 0x70, 0x61, 0x69, 0x67, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x6f, 0x70, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x6f, 0x70, 0x69, 0x6e, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x61, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, 0x61, 0x6e, 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x6d, 0x61, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x6d, 0x61, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x6d, 0x61, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x63, 0x6f, 0x6f, 0x70, 0x6d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x6d, 0x61, 0x78, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4b, 0x0a, 0x11, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xff, 0x01, 0x0a, 0x0b, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x22, 0xc8, 0x05, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x62, 0x62, 0x72, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x62, 0x62, 0x72, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x3e, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x32, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x59, 0x0a, 0x14, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x41, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x22, 0x64, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x6c, 0x6f, 0x67, 0x6f, 0x73, 0x22, 0xd6, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4f, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x39, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x5b, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb6, 0x05, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x12, 0x4a, 0x0a, 0x11, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x10, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x38, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4c, 0x6f, 0x67, 0x6f, 0x12, 0x66, 0x0a, 0x1e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x1b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x79, 0x0a, 0x1c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x59, 0x0a, 0x18, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x18, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x22, 0xca, 0x01, 0x0a, 0x16, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x87, 0x01, 0x0a, 0x20, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x63, 0x0a, 0x1b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x1b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0xd6, 0x04, 0x0a, 0x1a, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x12, 0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x6d, 0x12, 0x41, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3f, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x15, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x63, 0x0a, 0x17, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x12, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x70, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x22, 0xef, 0x01, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x65, 0x72, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x6b, 0x0a, 0x19, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4e, 0x0a, 0x14, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x52, 0x14, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x70, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x73, 0x22, 0x9e, 0x04, 0x0a, 0x13, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5c, 0x0a, 0x11, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x57, 0x0a, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x18, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x57, 0x0a, 0x14, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3f, 0x0a, 0x0f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xfd, 0x02, 0x0a, 0x0e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x5c, 0x0a, 0x11, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x10, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x57, 0x0a, 0x1a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x18, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x37, 0x0a, 0x0c, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x27, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x4b, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0x84, 0x05, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x12, 0x0c, 0x0a, 0x01, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x6d, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x33, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x30, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3f, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x17, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x65, 0x0a, 0x17, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4a, 0x0a, 0x13, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x13, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x61, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x47, 0x0a, 0x10, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x0b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x22, 0xf5, 0x01, 0x0a, 0x0a, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x39, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x29, 0x0a, 0x08, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x08, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x22, 0x84, 0x04, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x3d, 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x09, 0x74, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x05, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x45, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x64, 0x75, 0x6d, 0x6d, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x64, 0x75, 0x6d, 0x6d, 0x69, 0x65, 0x73, 0x22, 0x9c, 0x05, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x65, 0x77, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6e, 0x65, 0x77, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x6d, 0x6d, 0x69, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x69, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x52, 0x09, 0x74, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x33, 0x0a, 0x0b, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x06, 0x74, 0x68, 0x65, 0x6d, 0x65, 0x73, 0x22, 0xe3, 0x01, 0x0a, 0x05, 0x54, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x22, 0x3b, 0x0a, 0x0d, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x52, 0x08, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x73, 0x22, 0xe6, 0x01, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x11, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x36, 0x0a, 0x0c, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x0b, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x2a, 0x9d, 0x01, 0x0a, 0x15, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x17, 0x41, 0x47, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x45, 0x53, 0x52, 0x42, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x50, 0x45, 0x47, 0x49, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x43, 0x45, 0x52, 0x4f, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x55, 0x53, 0x4b, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x47, 0x52, 0x41, 0x43, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x41, 0x43, 0x42, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xd9, 0x05, 0x0a, 0x13, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x15, 0x41, 0x47, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x54, 0x48, 0x52, 0x45, 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x54, 0x57, 0x45, 0x4c, 0x56, 0x45, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x53, 0x49, 0x58, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x45, 0x49, 0x47, 0x48, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0a, 0x0a, 0x02, 0x52, 0x50, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0a, 0x0a, 0x02, 0x45, 0x43, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x09, 0x0a, 0x01, 0x45, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x45, 0x31, 0x30, 0x10, 0x09, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x09, 0x0a, 0x01, 0x54, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x09, 0x0a, 0x01, 0x4d, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0a, 0x0a, 0x02, 0x41, 0x4f, 0x10, 0x0c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x41, 0x10, 0x0d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x42, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x43, 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x44, 0x10, 0x10, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x5a, 0x10, 0x11, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x55, 0x53, 0x4b, 0x5f, 0x30, 0x10, 0x12, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x55, 0x53, 0x4b, 0x5f, 0x36, 0x10, 0x13, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x53, 0x4b, 0x5f, 0x31, 0x32, 0x10, 0x14, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x53, 0x4b, 0x5f, 0x31, 0x36, 0x10, 0x15, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x53, 0x4b, 0x5f, 0x31, 0x38, 0x10, 0x16, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x17, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x54, 0x57, 0x45, 0x4c, 0x56, 0x45, 0x10, 0x18, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x46, 0x49, 0x46, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x19, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x45, 0x49, 0x47, 0x48, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x1b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x10, 0x1c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x54, 0x45, 0x4e, 0x10, 0x1d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x54, 0x57, 0x45, 0x4c, 0x56, 0x45, 0x10, 0x1e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x46, 0x4f, 0x55, 0x52, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x1f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x49, 0x58, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x20, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x45, 0x49, 0x47, 0x48, 0x54, 0x45, 0x45, 0x4e, 0x10, 0x21, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x43, 0x42, 0x5f, 0x47, 0x10, 0x22, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x41, 0x43, 0x42, 0x5f, 0x50, 0x47, 0x10, 0x23, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x43, 0x42, 0x5f, 0x4d, 0x10, 0x24, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x41, 0x43, 0x42, 0x5f, 0x4d, 0x41, 0x31, 0x35, 0x10, 0x25, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x41, 0x43, 0x42, 0x5f, 0x52, 0x31, 0x38, 0x10, 0x26, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x41, 0x43, 0x42, 0x5f, 0x52, 0x43, 0x10, 0x27, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xb6, 0x14, 0x0a, 0x27, 0x41, 0x67, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x31, 0x0a, 0x29, 0x41, 0x47, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x12, 0x0a, 0x0a, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x47, 0x4f, 0x52, 0x45, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x43, 0x41, 0x52, 0x54, 0x4f, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x43, 0x4f, 0x4d, 0x49, 0x43, 0x5f, 0x4d, 0x49, 0x53, 0x43, 0x48, 0x49, 0x45, 0x46, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x43, 0x52, 0x55, 0x44, 0x45, 0x5f, 0x48, 0x55, 0x4d, 0x4f, 0x52, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x46, 0x41, 0x4e, 0x54, 0x41, 0x53, 0x59, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x09, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4c, 0x59, 0x52, 0x49, 0x43, 0x53, 0x10, 0x0c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x48, 0x55, 0x4d, 0x4f, 0x52, 0x10, 0x0d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4e, 0x55, 0x44, 0x49, 0x54, 0x59, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x5f, 0x4e, 0x55, 0x44, 0x49, 0x54, 0x59, 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x10, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x11, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x12, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x13, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x49, 0x4d, 0x55, 0x4c, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x14, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x54, 0x52, 0x4f, 0x4e, 0x47, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0x15, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x54, 0x52, 0x4f, 0x4e, 0x47, 0x5f, 0x4c, 0x59, 0x52, 0x49, 0x43, 0x53, 0x10, 0x16, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, 0x1a, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x54, 0x52, 0x4f, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x17, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x18, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x19, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x53, 0x10, 0x1b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x10, 0x1c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x1d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x1e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x1f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0x20, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x21, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x53, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x10, 0x22, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x27, 0x0a, 0x1f, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x23, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x23, 0x0a, 0x1b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x24, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, 0x1a, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x43, 0x41, 0x52, 0x54, 0x4f, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x25, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x26, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x47, 0x4f, 0x52, 0x45, 0x10, 0x27, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x28, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x2a, 0x0a, 0x22, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x29, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x2a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x23, 0x0a, 0x1b, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x2b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x48, 0x45, 0x4d, 0x45, 0x53, 0x10, 0x2c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x27, 0x0a, 0x1f, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x46, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x10, 0x2d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x24, 0x0a, 0x1c, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x47, 0x4f, 0x52, 0x45, 0x10, 0x2e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, 0x1a, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x46, 0x41, 0x4e, 0x54, 0x41, 0x53, 0x59, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x2f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x4d, 0x49, 0x4c, 0x44, 0x5f, 0x4c, 0x59, 0x52, 0x49, 0x43, 0x53, 0x10, 0x30, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x53, 0x52, 0x42, 0x5f, 0x52, 0x45, 0x41, 0x4c, 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x31, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x32, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x53, 0x45, 0x58, 0x10, 0x33, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x12, 0x0a, 0x0a, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x53, 0x10, 0x34, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x46, 0x45, 0x41, 0x52, 0x10, 0x35, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x52, 0x49, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x36, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x42, 0x41, 0x44, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0x37, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x38, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x10, 0x39, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x50, 0x45, 0x47, 0x49, 0x5f, 0x49, 0x4e, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x55, 0x52, 0x43, 0x48, 0x41, 0x53, 0x45, 0x53, 0x10, 0x3a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x4c, 0x4f, 0x56, 0x45, 0x10, 0x3b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x3c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x3d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x48, 0x4f, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x3e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x44, 0x52, 0x49, 0x4e, 0x4b, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x4d, 0x4f, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x3f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x40, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x12, 0x0a, 0x0a, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x43, 0x52, 0x49, 0x4d, 0x45, 0x10, 0x41, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x22, 0x0a, 0x1a, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x42, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x43, 0x45, 0x52, 0x4f, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x53, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x53, 0x10, 0x43, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x44, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x45, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x24, 0x0a, 0x1c, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x46, 0x45, 0x41, 0x52, 0x5f, 0x48, 0x4f, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x41, 0x54, 0x45, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x46, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x4c, 0x41, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x10, 0x47, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x41, 0x4c, 0x43, 0x4f, 0x48, 0x4f, 0x4c, 0x5f, 0x54, 0x4f, 0x42, 0x41, 0x43, 0x43, 0x4f, 0x5f, 0x44, 0x52, 0x55, 0x47, 0x10, 0x48, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x43, 0x52, 0x49, 0x4d, 0x45, 0x5f, 0x41, 0x4e, 0x54, 0x49, 0x5f, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x4c, 0x10, 0x49, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x47, 0x52, 0x41, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x42, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x4a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x49, 0x41, 0x10, 0x4b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x23, 0x0a, 0x1b, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x45, 0x4e, 0x43, 0x49, 0x41, 0x5f, 0x45, 0x58, 0x54, 0x52, 0x45, 0x4d, 0x41, 0x10, 0x4c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x55, 0x44, 0x4f, 0x5f, 0x53, 0x45, 0x58, 0x55, 0x41, 0x4c, 0x10, 0x4d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x4e, 0x55, 0x44, 0x45, 0x5a, 0x10, 0x4e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x58, 0x4f, 0x10, 0x4f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x20, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x45, 0x58, 0x4f, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x4f, 0x10, 0x50, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x47, 0x41, 0x53, 0x10, 0x51, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x20, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x47, 0x41, 0x53, 0x5f, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x41, 0x53, 0x10, 0x52, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x47, 0x41, 0x53, 0x5f, 0x49, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x41, 0x53, 0x10, 0x53, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x47, 0x55, 0x41, 0x47, 0x45, 0x4d, 0x5f, 0x49, 0x4d, 0x50, 0x52, 0x4f, 0x50, 0x52, 0x49, 0x41, 0x10, 0x54, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x21, 0x0a, 0x19, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x49, 0x4e, 0x44, 0x5f, 0x41, 0x54, 0x4f, 0x53, 0x5f, 0x43, 0x52, 0x49, 0x4d, 0x49, 0x4e, 0x4f, 0x53, 0x4f, 0x53, 0x10, 0x55, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x3f, 0x0a, 0x10, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x47, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0c, 0x0a, 0x04, 0x4d, 0x41, 0x4c, 0x45, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x46, 0x45, 0x4d, 0x41, 0x4c, 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x86, 0x01, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x52, 0x41, 0x43, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x45, 0x53, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x48, 0x55, 0x4d, 0x41, 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x4c, 0x49, 0x45, 0x4e, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x41, 0x4e, 0x49, 0x4d, 0x41, 0x4c, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xa3, 0x01, 0x0a, 0x20, 0x44, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x0a, 0x59, 0x59, 0x59, 0x59, 0x4d, 0x4d, 0x4d, 0x4d, 0x44, 0x44, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x59, 0x59, 0x59, 0x59, 0x4d, 0x4d, 0x4d, 0x4d, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x59, 0x59, 0x59, 0x59, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x31, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x32, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x33, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x59, 0x59, 0x59, 0x59, 0x51, 0x34, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x54, 0x42, 0x44, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xed, 0x03, 0x0a, 0x13, 0x57, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x15, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x49, 0x43, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x57, 0x49, 0x4b, 0x49, 0x41, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x57, 0x49, 0x4b, 0x49, 0x50, 0x45, 0x44, 0x49, 0x41, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x54, 0x57, 0x49, 0x54, 0x54, 0x45, 0x52, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x54, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x47, 0x52, 0x41, 0x4d, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x59, 0x4f, 0x55, 0x54, 0x55, 0x42, 0x45, 0x10, 0x09, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, 0x50, 0x41, 0x44, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x0c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x0d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x0e, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x44, 0x44, 0x49, 0x54, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x49, 0x54, 0x43, 0x48, 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x19, 0x0a, 0x11, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x45, 0x50, 0x49, 0x43, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x10, 0x10, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x47, 0x4f, 0x47, 0x10, 0x11, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x52, 0x44, 0x10, 0x12, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x17, 0x0a, 0x0f, 0x57, 0x45, 0x42, 0x53, 0x49, 0x54, 0x45, 0x5f, 0x42, 0x4c, 0x55, 0x45, 0x53, 0x4b, 0x59, 0x10, 0x13, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xdb, 0x05, 0x0a, 0x18, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x1a, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x47, 0x4f, 0x47, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x59, 0x4f, 0x55, 0x54, 0x55, 0x42, 0x45, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x53, 0x4f, 0x46, 0x54, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1a, 0x0a, 0x12, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x45, 0x10, 0x0d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x54, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x0f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x20, 0x0a, 0x18, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x4d, 0x41, 0x5a, 0x4f, 0x4e, 0x5f, 0x41, 0x53, 0x49, 0x4e, 0x10, 0x14, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x20, 0x0a, 0x18, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x4d, 0x41, 0x5a, 0x4f, 0x4e, 0x5f, 0x4c, 0x55, 0x4e, 0x41, 0x10, 0x16, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x4d, 0x41, 0x5a, 0x4f, 0x4e, 0x5f, 0x41, 0x44, 0x47, 0x10, 0x17, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x24, 0x0a, 0x1c, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x45, 0x50, 0x49, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x10, 0x1a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4f, 0x43, 0x55, 0x4c, 0x55, 0x53, 0x10, 0x1c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1b, 0x0a, 0x13, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x55, 0x54, 0x4f, 0x4d, 0x49, 0x4b, 0x10, 0x1d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x4f, 0x10, 0x1e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x25, 0x0a, 0x1d, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x58, 0x42, 0x4f, 0x58, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x1f, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4b, 0x41, 0x52, 0x54, 0x52, 0x49, 0x44, 0x47, 0x45, 0x10, 0x20, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x29, 0x0a, 0x21, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x53, 0x10, 0x24, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x28, 0x0a, 0x20, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x46, 0x4f, 0x43, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x54, 0x41, 0x49, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x25, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x32, 0x0a, 0x2a, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x58, 0x42, 0x4f, 0x58, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x5f, 0x55, 0x4c, 0x54, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x10, 0x36, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x4f, 0x4c, 0x54, 0x10, 0x37, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x75, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x17, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x47, 0x49, 0x54, 0x41, 0x4c, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1d, 0x0a, 0x15, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x9a, 0x02, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x11, 0x0a, 0x09, 0x4d, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, 0x44, 0x4c, 0x43, 0x5f, 0x41, 0x44, 0x44, 0x4f, 0x4e, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x42, 0x55, 0x4e, 0x44, 0x4c, 0x45, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x1c, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0b, 0x0a, 0x03, 0x4d, 0x4f, 0x44, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x45, 0x50, 0x49, 0x53, 0x4f, 0x44, 0x45, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x53, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x41, 0x4b, 0x45, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x52, 0x45, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, 0x10, 0x09, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x45, 0x58, 0x50, 0x41, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x0b, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x46, 0x4f, 0x52, 0x4b, 0x10, 0x0c, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x50, 0x41, 0x43, 0x4b, 0x10, 0x0d, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x9c, 0x01, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x08, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x41, 0x4c, 0x50, 0x48, 0x41, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x42, 0x45, 0x54, 0x41, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x14, 0x0a, 0x0c, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x4f, 0x46, 0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x52, 0x55, 0x4d, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x45, 0x44, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x3e, 0x0a, 0x1e, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x2a, 0x60, 0x0a, 0x2a, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x43, 0x4c, 0x55, 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x2a, 0xaf, 0x01, 0x0a, 0x14, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x16, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x43, 0x4f, 0x4e, 0x53, 0x4f, 0x4c, 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x41, 0x52, 0x43, 0x41, 0x44, 0x45, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x18, 0x0a, 0x10, 0x50, 0x4f, 0x52, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x4f, 0x4c, 0x45, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x10, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x55, 0x54, 0x45, 0x52, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0xdb, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x12, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x45, 0x55, 0x52, 0x4f, 0x50, 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x15, 0x0a, 0x0d, 0x4e, 0x4f, 0x52, 0x54, 0x48, 0x5f, 0x41, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x41, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, 0x41, 0x55, 0x53, 0x54, 0x52, 0x41, 0x4c, 0x49, 0x41, 0x10, 0x03, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x4e, 0x45, 0x57, 0x5f, 0x5a, 0x45, 0x41, 0x4c, 0x41, 0x4e, 0x44, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x4a, 0x41, 0x50, 0x41, 0x4e, 0x10, 0x05, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x43, 0x48, 0x49, 0x4e, 0x41, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x41, 0x53, 0x49, 0x41, 0x10, 0x07, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x09, 0x57, 0x4f, 0x52, 0x4c, 0x44, 0x57, 0x49, 0x44, 0x45, 0x10, 0x08, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0d, 0x0a, 0x05, 0x4b, 0x4f, 0x52, 0x45, 0x41, 0x10, 0x09, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0e, 0x0a, 0x06, 0x42, 0x52, 0x41, 0x5a, 0x49, 0x4c, 0x10, 0x0a, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x65, 0x0a, 0x24, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x70, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x27, 0x50, 0x4f, 0x50, 0x55, 0x4c, 0x41, 0x52, 0x49, 0x54, 0x59, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x50, 0x4f, 0x50, 0x55, 0x4c, 0x41, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0c, 0x0a, 0x04, 0x49, 0x47, 0x44, 0x42, 0x10, 0x79, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x4b, 0x0a, 0x15, 0x54, 0x65, 0x73, 0x74, 0x44, 0x75, 0x6d, 0x6d, 0x79, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x45, 0x53, 0x54, 0x44, 0x55, 0x4d, 0x4d, 0x59, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, 0x55, 0x4d, 0x31, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4e, 0x55, 0x4d, 0x32, 0x10, 0x02, 0x42, 0x04, 0x48, 0x02, 0x50, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( file_proto_igdbapi_proto_rawDescOnce sync.Once file_proto_igdbapi_proto_rawDescData []byte ) func file_proto_igdbapi_proto_rawDescGZIP() []byte { file_proto_igdbapi_proto_rawDescOnce.Do(func() { file_proto_igdbapi_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_igdbapi_proto_rawDesc), len(file_proto_igdbapi_proto_rawDesc))) }) return file_proto_igdbapi_proto_rawDescData } var file_proto_igdbapi_proto_enumTypes = make([]protoimpl.EnumInfo, 17) var file_proto_igdbapi_proto_msgTypes = make([]protoimpl.MessageInfo, 145) var file_proto_igdbapi_proto_goTypes = []any{ (AgeRatingCategoryEnum)(0), // 0: proto.AgeRatingCategoryEnum (AgeRatingRatingEnum)(0), // 1: proto.AgeRatingRatingEnum (AgeRatingContentDescriptionCategoryEnum)(0), // 2: proto.AgeRatingContentDescriptionCategoryEnum (GenderGenderEnum)(0), // 3: proto.GenderGenderEnum (CharacterSpeciesEnum)(0), // 4: proto.CharacterSpeciesEnum (DateFormatChangeDateCategoryEnum)(0), // 5: proto.DateFormatChangeDateCategoryEnum (WebsiteCategoryEnum)(0), // 6: proto.WebsiteCategoryEnum (ExternalGameCategoryEnum)(0), // 7: proto.ExternalGameCategoryEnum (ExternalGameMediaEnum)(0), // 8: proto.ExternalGameMediaEnum (GameCategoryEnum)(0), // 9: proto.GameCategoryEnum (GameStatusEnum)(0), // 10: proto.GameStatusEnum (GameVersionFeatureCategoryEnum)(0), // 11: proto.GameVersionFeatureCategoryEnum (GameVersionFeatureValueIncludedFeatureEnum)(0), // 12: proto.GameVersionFeatureValueIncludedFeatureEnum (PlatformCategoryEnum)(0), // 13: proto.PlatformCategoryEnum (RegionRegionEnum)(0), // 14: proto.RegionRegionEnum (PopularitySourcePopularitySourceEnum)(0), // 15: proto.PopularitySourcePopularitySourceEnum (TestDummyEnumTestEnum)(0), // 16: proto.TestDummyEnumTestEnum (*Count)(nil), // 17: proto.Count (*MultiQueryResult)(nil), // 18: proto.MultiQueryResult (*MultiQueryResultArray)(nil), // 19: proto.MultiQueryResultArray (*AgeRatingResult)(nil), // 20: proto.AgeRatingResult (*AgeRating)(nil), // 21: proto.AgeRating (*AgeRatingCategoryResult)(nil), // 22: proto.AgeRatingCategoryResult (*AgeRatingCategory)(nil), // 23: proto.AgeRatingCategory (*AgeRatingContentDescriptionResult)(nil), // 24: proto.AgeRatingContentDescriptionResult (*AgeRatingContentDescription)(nil), // 25: proto.AgeRatingContentDescription (*AgeRatingContentDescriptionV2Result)(nil), // 26: proto.AgeRatingContentDescriptionV2Result (*AgeRatingContentDescriptionV2)(nil), // 27: proto.AgeRatingContentDescriptionV2 (*AgeRatingOrganizationResult)(nil), // 28: proto.AgeRatingOrganizationResult (*AgeRatingOrganization)(nil), // 29: proto.AgeRatingOrganization (*AlternativeNameResult)(nil), // 30: proto.AlternativeNameResult (*AlternativeName)(nil), // 31: proto.AlternativeName (*ArtworkResult)(nil), // 32: proto.ArtworkResult (*Artwork)(nil), // 33: proto.Artwork (*CharacterResult)(nil), // 34: proto.CharacterResult (*Character)(nil), // 35: proto.Character (*CharacterGenderResult)(nil), // 36: proto.CharacterGenderResult (*CharacterGender)(nil), // 37: proto.CharacterGender (*CharacterMugShotResult)(nil), // 38: proto.CharacterMugShotResult (*CharacterMugShot)(nil), // 39: proto.CharacterMugShot (*CharacterSpecieResult)(nil), // 40: proto.CharacterSpecieResult (*CharacterSpecie)(nil), // 41: proto.CharacterSpecie (*CollectionResult)(nil), // 42: proto.CollectionResult (*Collection)(nil), // 43: proto.Collection (*CollectionMembershipResult)(nil), // 44: proto.CollectionMembershipResult (*CollectionMembership)(nil), // 45: proto.CollectionMembership (*CollectionMembershipTypeResult)(nil), // 46: proto.CollectionMembershipTypeResult (*CollectionMembershipType)(nil), // 47: proto.CollectionMembershipType (*CollectionRelationResult)(nil), // 48: proto.CollectionRelationResult (*CollectionRelation)(nil), // 49: proto.CollectionRelation (*CollectionRelationTypeResult)(nil), // 50: proto.CollectionRelationTypeResult (*CollectionRelationType)(nil), // 51: proto.CollectionRelationType (*CollectionTypeResult)(nil), // 52: proto.CollectionTypeResult (*CollectionType)(nil), // 53: proto.CollectionType (*CompanyResult)(nil), // 54: proto.CompanyResult (*Company)(nil), // 55: proto.Company (*CompanyLogoResult)(nil), // 56: proto.CompanyLogoResult (*CompanyLogo)(nil), // 57: proto.CompanyLogo (*CompanyStatusResult)(nil), // 58: proto.CompanyStatusResult (*CompanyStatus)(nil), // 59: proto.CompanyStatus (*CompanyWebsiteResult)(nil), // 60: proto.CompanyWebsiteResult (*CompanyWebsite)(nil), // 61: proto.CompanyWebsite (*CoverResult)(nil), // 62: proto.CoverResult (*Cover)(nil), // 63: proto.Cover (*DateFormatResult)(nil), // 64: proto.DateFormatResult (*DateFormat)(nil), // 65: proto.DateFormat (*EventResult)(nil), // 66: proto.EventResult (*Event)(nil), // 67: proto.Event (*EventLogoResult)(nil), // 68: proto.EventLogoResult (*EventLogo)(nil), // 69: proto.EventLogo (*EventNetworkResult)(nil), // 70: proto.EventNetworkResult (*EventNetwork)(nil), // 71: proto.EventNetwork (*ExternalGameResult)(nil), // 72: proto.ExternalGameResult (*ExternalGame)(nil), // 73: proto.ExternalGame (*ExternalGameSourceResult)(nil), // 74: proto.ExternalGameSourceResult (*ExternalGameSource)(nil), // 75: proto.ExternalGameSource (*FranchiseResult)(nil), // 76: proto.FranchiseResult (*Franchise)(nil), // 77: proto.Franchise (*GameResult)(nil), // 78: proto.GameResult (*Game)(nil), // 79: proto.Game (*GameEngineResult)(nil), // 80: proto.GameEngineResult (*GameEngine)(nil), // 81: proto.GameEngine (*GameEngineLogoResult)(nil), // 82: proto.GameEngineLogoResult (*GameEngineLogo)(nil), // 83: proto.GameEngineLogo (*GameLocalizationResult)(nil), // 84: proto.GameLocalizationResult (*GameLocalization)(nil), // 85: proto.GameLocalization (*GameModeResult)(nil), // 86: proto.GameModeResult (*GameMode)(nil), // 87: proto.GameMode (*GameReleaseFormatResult)(nil), // 88: proto.GameReleaseFormatResult (*GameReleaseFormat)(nil), // 89: proto.GameReleaseFormat (*GameStatusResult)(nil), // 90: proto.GameStatusResult (*GameStatus)(nil), // 91: proto.GameStatus (*GameTimeToBeatResult)(nil), // 92: proto.GameTimeToBeatResult (*GameTimeToBeat)(nil), // 93: proto.GameTimeToBeat (*GameTypeResult)(nil), // 94: proto.GameTypeResult (*GameType)(nil), // 95: proto.GameType (*GameVersionResult)(nil), // 96: proto.GameVersionResult (*GameVersion)(nil), // 97: proto.GameVersion (*GameVersionFeatureResult)(nil), // 98: proto.GameVersionFeatureResult (*GameVersionFeature)(nil), // 99: proto.GameVersionFeature (*GameVersionFeatureValueResult)(nil), // 100: proto.GameVersionFeatureValueResult (*GameVersionFeatureValue)(nil), // 101: proto.GameVersionFeatureValue (*GameVideoResult)(nil), // 102: proto.GameVideoResult (*GameVideo)(nil), // 103: proto.GameVideo (*GenreResult)(nil), // 104: proto.GenreResult (*Genre)(nil), // 105: proto.Genre (*InvolvedCompanyResult)(nil), // 106: proto.InvolvedCompanyResult (*InvolvedCompany)(nil), // 107: proto.InvolvedCompany (*KeywordResult)(nil), // 108: proto.KeywordResult (*Keyword)(nil), // 109: proto.Keyword (*LanguageResult)(nil), // 110: proto.LanguageResult (*Language)(nil), // 111: proto.Language (*LanguageSupportResult)(nil), // 112: proto.LanguageSupportResult (*LanguageSupport)(nil), // 113: proto.LanguageSupport (*LanguageSupportTypeResult)(nil), // 114: proto.LanguageSupportTypeResult (*LanguageSupportType)(nil), // 115: proto.LanguageSupportType (*MultiplayerModeResult)(nil), // 116: proto.MultiplayerModeResult (*MultiplayerMode)(nil), // 117: proto.MultiplayerMode (*NetworkTypeResult)(nil), // 118: proto.NetworkTypeResult (*NetworkType)(nil), // 119: proto.NetworkType (*PlatformResult)(nil), // 120: proto.PlatformResult (*Platform)(nil), // 121: proto.Platform (*PlatformFamilyResult)(nil), // 122: proto.PlatformFamilyResult (*PlatformFamily)(nil), // 123: proto.PlatformFamily (*PlatformLogoResult)(nil), // 124: proto.PlatformLogoResult (*PlatformLogo)(nil), // 125: proto.PlatformLogo (*PlatformTypeResult)(nil), // 126: proto.PlatformTypeResult (*PlatformType)(nil), // 127: proto.PlatformType (*PlatformVersionResult)(nil), // 128: proto.PlatformVersionResult (*PlatformVersion)(nil), // 129: proto.PlatformVersion (*PlatformVersionCompanyResult)(nil), // 130: proto.PlatformVersionCompanyResult (*PlatformVersionCompany)(nil), // 131: proto.PlatformVersionCompany (*PlatformVersionReleaseDateResult)(nil), // 132: proto.PlatformVersionReleaseDateResult (*PlatformVersionReleaseDate)(nil), // 133: proto.PlatformVersionReleaseDate (*PlatformWebsiteResult)(nil), // 134: proto.PlatformWebsiteResult (*PlatformWebsite)(nil), // 135: proto.PlatformWebsite (*PlayerPerspectiveResult)(nil), // 136: proto.PlayerPerspectiveResult (*PlayerPerspective)(nil), // 137: proto.PlayerPerspective (*PopularityPrimitiveResult)(nil), // 138: proto.PopularityPrimitiveResult (*PopularityPrimitive)(nil), // 139: proto.PopularityPrimitive (*PopularityTypeResult)(nil), // 140: proto.PopularityTypeResult (*PopularityType)(nil), // 141: proto.PopularityType (*RegionResult)(nil), // 142: proto.RegionResult (*Region)(nil), // 143: proto.Region (*ReleaseDateResult)(nil), // 144: proto.ReleaseDateResult (*ReleaseDate)(nil), // 145: proto.ReleaseDate (*ReleaseDateRegionResult)(nil), // 146: proto.ReleaseDateRegionResult (*ReleaseDateRegion)(nil), // 147: proto.ReleaseDateRegion (*ReleaseDateStatusResult)(nil), // 148: proto.ReleaseDateStatusResult (*ReleaseDateStatus)(nil), // 149: proto.ReleaseDateStatus (*ScreenshotResult)(nil), // 150: proto.ScreenshotResult (*Screenshot)(nil), // 151: proto.Screenshot (*SearchResult)(nil), // 152: proto.SearchResult (*Search)(nil), // 153: proto.Search (*TestDummyResult)(nil), // 154: proto.TestDummyResult (*TestDummy)(nil), // 155: proto.TestDummy (*ThemeResult)(nil), // 156: proto.ThemeResult (*Theme)(nil), // 157: proto.Theme (*WebsiteResult)(nil), // 158: proto.WebsiteResult (*Website)(nil), // 159: proto.Website (*WebsiteTypeResult)(nil), // 160: proto.WebsiteTypeResult (*WebsiteType)(nil), // 161: proto.WebsiteType (*timestamppb.Timestamp)(nil), // 162: google.protobuf.Timestamp } var file_proto_igdbapi_proto_depIdxs = []int32{ 18, // 0: proto.MultiQueryResultArray.result:type_name -> proto.MultiQueryResult 21, // 1: proto.AgeRatingResult.ageratings:type_name -> proto.AgeRating 0, // 2: proto.AgeRating.category:type_name -> proto.AgeRatingCategoryEnum 25, // 3: proto.AgeRating.content_descriptions:type_name -> proto.AgeRatingContentDescription 1, // 4: proto.AgeRating.rating:type_name -> proto.AgeRatingRatingEnum 29, // 5: proto.AgeRating.organization:type_name -> proto.AgeRatingOrganization 23, // 6: proto.AgeRating.rating_category:type_name -> proto.AgeRatingCategory 27, // 7: proto.AgeRating.rating_content_descriptions:type_name -> proto.AgeRatingContentDescriptionV2 23, // 8: proto.AgeRatingCategoryResult.ageratingcategories:type_name -> proto.AgeRatingCategory 29, // 9: proto.AgeRatingCategory.organization:type_name -> proto.AgeRatingOrganization 162, // 10: proto.AgeRatingCategory.created_at:type_name -> google.protobuf.Timestamp 162, // 11: proto.AgeRatingCategory.updated_at:type_name -> google.protobuf.Timestamp 25, // 12: proto.AgeRatingContentDescriptionResult.ageratingcontentdescriptions:type_name -> proto.AgeRatingContentDescription 2, // 13: proto.AgeRatingContentDescription.category:type_name -> proto.AgeRatingContentDescriptionCategoryEnum 27, // 14: proto.AgeRatingContentDescriptionV2Result.ageratingcontentdescriptionsv2:type_name -> proto.AgeRatingContentDescriptionV2 29, // 15: proto.AgeRatingContentDescriptionV2.organization:type_name -> proto.AgeRatingOrganization 162, // 16: proto.AgeRatingContentDescriptionV2.created_at:type_name -> google.protobuf.Timestamp 162, // 17: proto.AgeRatingContentDescriptionV2.updated_at:type_name -> google.protobuf.Timestamp 29, // 18: proto.AgeRatingOrganizationResult.ageratingorganizations:type_name -> proto.AgeRatingOrganization 162, // 19: proto.AgeRatingOrganization.created_at:type_name -> google.protobuf.Timestamp 162, // 20: proto.AgeRatingOrganization.updated_at:type_name -> google.protobuf.Timestamp 31, // 21: proto.AlternativeNameResult.alternativenames:type_name -> proto.AlternativeName 79, // 22: proto.AlternativeName.game:type_name -> proto.Game 33, // 23: proto.ArtworkResult.artworks:type_name -> proto.Artwork 79, // 24: proto.Artwork.game:type_name -> proto.Game 35, // 25: proto.CharacterResult.characters:type_name -> proto.Character 162, // 26: proto.Character.created_at:type_name -> google.protobuf.Timestamp 79, // 27: proto.Character.games:type_name -> proto.Game 3, // 28: proto.Character.gender:type_name -> proto.GenderGenderEnum 39, // 29: proto.Character.mug_shot:type_name -> proto.CharacterMugShot 4, // 30: proto.Character.species:type_name -> proto.CharacterSpeciesEnum 162, // 31: proto.Character.updated_at:type_name -> google.protobuf.Timestamp 37, // 32: proto.Character.character_gender:type_name -> proto.CharacterGender 41, // 33: proto.Character.character_species:type_name -> proto.CharacterSpecie 37, // 34: proto.CharacterGenderResult.charactergenders:type_name -> proto.CharacterGender 162, // 35: proto.CharacterGender.created_at:type_name -> google.protobuf.Timestamp 162, // 36: proto.CharacterGender.updated_at:type_name -> google.protobuf.Timestamp 39, // 37: proto.CharacterMugShotResult.charactermugshots:type_name -> proto.CharacterMugShot 41, // 38: proto.CharacterSpecieResult.characterspecies:type_name -> proto.CharacterSpecie 162, // 39: proto.CharacterSpecie.created_at:type_name -> google.protobuf.Timestamp 162, // 40: proto.CharacterSpecie.updated_at:type_name -> google.protobuf.Timestamp 43, // 41: proto.CollectionResult.collections:type_name -> proto.Collection 162, // 42: proto.Collection.created_at:type_name -> google.protobuf.Timestamp 79, // 43: proto.Collection.games:type_name -> proto.Game 162, // 44: proto.Collection.updated_at:type_name -> google.protobuf.Timestamp 53, // 45: proto.Collection.type:type_name -> proto.CollectionType 49, // 46: proto.Collection.as_parent_relations:type_name -> proto.CollectionRelation 49, // 47: proto.Collection.as_child_relations:type_name -> proto.CollectionRelation 45, // 48: proto.CollectionMembershipResult.collectionmemberships:type_name -> proto.CollectionMembership 79, // 49: proto.CollectionMembership.game:type_name -> proto.Game 43, // 50: proto.CollectionMembership.collection:type_name -> proto.Collection 47, // 51: proto.CollectionMembership.type:type_name -> proto.CollectionMembershipType 162, // 52: proto.CollectionMembership.updated_at:type_name -> google.protobuf.Timestamp 162, // 53: proto.CollectionMembership.created_at:type_name -> google.protobuf.Timestamp 47, // 54: proto.CollectionMembershipTypeResult.collectionmembershiptypes:type_name -> proto.CollectionMembershipType 53, // 55: proto.CollectionMembershipType.allowed_collection_type:type_name -> proto.CollectionType 162, // 56: proto.CollectionMembershipType.updated_at:type_name -> google.protobuf.Timestamp 162, // 57: proto.CollectionMembershipType.created_at:type_name -> google.protobuf.Timestamp 49, // 58: proto.CollectionRelationResult.collectionrelations:type_name -> proto.CollectionRelation 43, // 59: proto.CollectionRelation.child_collection:type_name -> proto.Collection 43, // 60: proto.CollectionRelation.parent_collection:type_name -> proto.Collection 51, // 61: proto.CollectionRelation.type:type_name -> proto.CollectionRelationType 162, // 62: proto.CollectionRelation.updated_at:type_name -> google.protobuf.Timestamp 162, // 63: proto.CollectionRelation.created_at:type_name -> google.protobuf.Timestamp 51, // 64: proto.CollectionRelationTypeResult.collectionrelationtypes:type_name -> proto.CollectionRelationType 53, // 65: proto.CollectionRelationType.allowed_child_type:type_name -> proto.CollectionType 53, // 66: proto.CollectionRelationType.allowed_parent_type:type_name -> proto.CollectionType 162, // 67: proto.CollectionRelationType.updated_at:type_name -> google.protobuf.Timestamp 162, // 68: proto.CollectionRelationType.created_at:type_name -> google.protobuf.Timestamp 53, // 69: proto.CollectionTypeResult.collectiontypes:type_name -> proto.CollectionType 162, // 70: proto.CollectionType.updated_at:type_name -> google.protobuf.Timestamp 162, // 71: proto.CollectionType.created_at:type_name -> google.protobuf.Timestamp 55, // 72: proto.CompanyResult.companies:type_name -> proto.Company 162, // 73: proto.Company.change_date:type_name -> google.protobuf.Timestamp 5, // 74: proto.Company.change_date_category:type_name -> proto.DateFormatChangeDateCategoryEnum 55, // 75: proto.Company.changed_company_id:type_name -> proto.Company 162, // 76: proto.Company.created_at:type_name -> google.protobuf.Timestamp 79, // 77: proto.Company.developed:type_name -> proto.Game 57, // 78: proto.Company.logo:type_name -> proto.CompanyLogo 55, // 79: proto.Company.parent:type_name -> proto.Company 79, // 80: proto.Company.published:type_name -> proto.Game 162, // 81: proto.Company.start_date:type_name -> google.protobuf.Timestamp 5, // 82: proto.Company.start_date_category:type_name -> proto.DateFormatChangeDateCategoryEnum 162, // 83: proto.Company.updated_at:type_name -> google.protobuf.Timestamp 61, // 84: proto.Company.websites:type_name -> proto.CompanyWebsite 59, // 85: proto.Company.status:type_name -> proto.CompanyStatus 65, // 86: proto.Company.start_date_format:type_name -> proto.DateFormat 65, // 87: proto.Company.change_date_format:type_name -> proto.DateFormat 57, // 88: proto.CompanyLogoResult.companylogos:type_name -> proto.CompanyLogo 59, // 89: proto.CompanyStatusResult.companystatuses:type_name -> proto.CompanyStatus 162, // 90: proto.CompanyStatus.created_at:type_name -> google.protobuf.Timestamp 162, // 91: proto.CompanyStatus.updated_at:type_name -> google.protobuf.Timestamp 61, // 92: proto.CompanyWebsiteResult.companywebsites:type_name -> proto.CompanyWebsite 6, // 93: proto.CompanyWebsite.category:type_name -> proto.WebsiteCategoryEnum 161, // 94: proto.CompanyWebsite.type:type_name -> proto.WebsiteType 63, // 95: proto.CoverResult.covers:type_name -> proto.Cover 79, // 96: proto.Cover.game:type_name -> proto.Game 85, // 97: proto.Cover.game_localization:type_name -> proto.GameLocalization 65, // 98: proto.DateFormatResult.dateformats:type_name -> proto.DateFormat 162, // 99: proto.DateFormat.created_at:type_name -> google.protobuf.Timestamp 162, // 100: proto.DateFormat.updated_at:type_name -> google.protobuf.Timestamp 67, // 101: proto.EventResult.events:type_name -> proto.Event 69, // 102: proto.Event.event_logo:type_name -> proto.EventLogo 162, // 103: proto.Event.start_time:type_name -> google.protobuf.Timestamp 162, // 104: proto.Event.end_time:type_name -> google.protobuf.Timestamp 79, // 105: proto.Event.games:type_name -> proto.Game 103, // 106: proto.Event.videos:type_name -> proto.GameVideo 71, // 107: proto.Event.event_networks:type_name -> proto.EventNetwork 162, // 108: proto.Event.created_at:type_name -> google.protobuf.Timestamp 162, // 109: proto.Event.updated_at:type_name -> google.protobuf.Timestamp 69, // 110: proto.EventLogoResult.eventlogos:type_name -> proto.EventLogo 67, // 111: proto.EventLogo.event:type_name -> proto.Event 162, // 112: proto.EventLogo.created_at:type_name -> google.protobuf.Timestamp 162, // 113: proto.EventLogo.updated_at:type_name -> google.protobuf.Timestamp 71, // 114: proto.EventNetworkResult.eventnetworks:type_name -> proto.EventNetwork 67, // 115: proto.EventNetwork.event:type_name -> proto.Event 119, // 116: proto.EventNetwork.network_type:type_name -> proto.NetworkType 162, // 117: proto.EventNetwork.created_at:type_name -> google.protobuf.Timestamp 162, // 118: proto.EventNetwork.updated_at:type_name -> google.protobuf.Timestamp 73, // 119: proto.ExternalGameResult.externalgames:type_name -> proto.ExternalGame 7, // 120: proto.ExternalGame.category:type_name -> proto.ExternalGameCategoryEnum 162, // 121: proto.ExternalGame.created_at:type_name -> google.protobuf.Timestamp 79, // 122: proto.ExternalGame.game:type_name -> proto.Game 162, // 123: proto.ExternalGame.updated_at:type_name -> google.protobuf.Timestamp 8, // 124: proto.ExternalGame.media:type_name -> proto.ExternalGameMediaEnum 121, // 125: proto.ExternalGame.platform:type_name -> proto.Platform 75, // 126: proto.ExternalGame.external_game_source:type_name -> proto.ExternalGameSource 89, // 127: proto.ExternalGame.game_release_format:type_name -> proto.GameReleaseFormat 75, // 128: proto.ExternalGameSourceResult.externalgamesources:type_name -> proto.ExternalGameSource 162, // 129: proto.ExternalGameSource.created_at:type_name -> google.protobuf.Timestamp 162, // 130: proto.ExternalGameSource.updated_at:type_name -> google.protobuf.Timestamp 77, // 131: proto.FranchiseResult.franchises:type_name -> proto.Franchise 162, // 132: proto.Franchise.created_at:type_name -> google.protobuf.Timestamp 79, // 133: proto.Franchise.games:type_name -> proto.Game 162, // 134: proto.Franchise.updated_at:type_name -> google.protobuf.Timestamp 79, // 135: proto.GameResult.games:type_name -> proto.Game 21, // 136: proto.Game.age_ratings:type_name -> proto.AgeRating 31, // 137: proto.Game.alternative_names:type_name -> proto.AlternativeName 33, // 138: proto.Game.artworks:type_name -> proto.Artwork 79, // 139: proto.Game.bundles:type_name -> proto.Game 9, // 140: proto.Game.category:type_name -> proto.GameCategoryEnum 43, // 141: proto.Game.collection:type_name -> proto.Collection 63, // 142: proto.Game.cover:type_name -> proto.Cover 162, // 143: proto.Game.created_at:type_name -> google.protobuf.Timestamp 79, // 144: proto.Game.dlcs:type_name -> proto.Game 79, // 145: proto.Game.expansions:type_name -> proto.Game 73, // 146: proto.Game.external_games:type_name -> proto.ExternalGame 162, // 147: proto.Game.first_release_date:type_name -> google.protobuf.Timestamp 77, // 148: proto.Game.franchise:type_name -> proto.Franchise 77, // 149: proto.Game.franchises:type_name -> proto.Franchise 81, // 150: proto.Game.game_engines:type_name -> proto.GameEngine 87, // 151: proto.Game.game_modes:type_name -> proto.GameMode 105, // 152: proto.Game.genres:type_name -> proto.Genre 107, // 153: proto.Game.involved_companies:type_name -> proto.InvolvedCompany 109, // 154: proto.Game.keywords:type_name -> proto.Keyword 117, // 155: proto.Game.multiplayer_modes:type_name -> proto.MultiplayerMode 79, // 156: proto.Game.parent_game:type_name -> proto.Game 121, // 157: proto.Game.platforms:type_name -> proto.Platform 137, // 158: proto.Game.player_perspectives:type_name -> proto.PlayerPerspective 145, // 159: proto.Game.release_dates:type_name -> proto.ReleaseDate 151, // 160: proto.Game.screenshots:type_name -> proto.Screenshot 79, // 161: proto.Game.similar_games:type_name -> proto.Game 79, // 162: proto.Game.standalone_expansions:type_name -> proto.Game 10, // 163: proto.Game.status:type_name -> proto.GameStatusEnum 157, // 164: proto.Game.themes:type_name -> proto.Theme 162, // 165: proto.Game.updated_at:type_name -> google.protobuf.Timestamp 79, // 166: proto.Game.version_parent:type_name -> proto.Game 103, // 167: proto.Game.videos:type_name -> proto.GameVideo 159, // 168: proto.Game.websites:type_name -> proto.Website 79, // 169: proto.Game.remakes:type_name -> proto.Game 79, // 170: proto.Game.remasters:type_name -> proto.Game 79, // 171: proto.Game.expanded_games:type_name -> proto.Game 79, // 172: proto.Game.ports:type_name -> proto.Game 79, // 173: proto.Game.forks:type_name -> proto.Game 113, // 174: proto.Game.language_supports:type_name -> proto.LanguageSupport 85, // 175: proto.Game.game_localizations:type_name -> proto.GameLocalization 43, // 176: proto.Game.collections:type_name -> proto.Collection 91, // 177: proto.Game.game_status:type_name -> proto.GameStatus 95, // 178: proto.Game.game_type:type_name -> proto.GameType 81, // 179: proto.GameEngineResult.gameengines:type_name -> proto.GameEngine 55, // 180: proto.GameEngine.companies:type_name -> proto.Company 162, // 181: proto.GameEngine.created_at:type_name -> google.protobuf.Timestamp 83, // 182: proto.GameEngine.logo:type_name -> proto.GameEngineLogo 121, // 183: proto.GameEngine.platforms:type_name -> proto.Platform 162, // 184: proto.GameEngine.updated_at:type_name -> google.protobuf.Timestamp 83, // 185: proto.GameEngineLogoResult.gameenginelogos:type_name -> proto.GameEngineLogo 85, // 186: proto.GameLocalizationResult.gamelocalizations:type_name -> proto.GameLocalization 63, // 187: proto.GameLocalization.cover:type_name -> proto.Cover 79, // 188: proto.GameLocalization.game:type_name -> proto.Game 143, // 189: proto.GameLocalization.region:type_name -> proto.Region 162, // 190: proto.GameLocalization.created_at:type_name -> google.protobuf.Timestamp 162, // 191: proto.GameLocalization.updated_at:type_name -> google.protobuf.Timestamp 87, // 192: proto.GameModeResult.gamemodes:type_name -> proto.GameMode 162, // 193: proto.GameMode.created_at:type_name -> google.protobuf.Timestamp 162, // 194: proto.GameMode.updated_at:type_name -> google.protobuf.Timestamp 89, // 195: proto.GameReleaseFormatResult.gamereleaseformats:type_name -> proto.GameReleaseFormat 162, // 196: proto.GameReleaseFormat.created_at:type_name -> google.protobuf.Timestamp 162, // 197: proto.GameReleaseFormat.updated_at:type_name -> google.protobuf.Timestamp 91, // 198: proto.GameStatusResult.gamestatuses:type_name -> proto.GameStatus 162, // 199: proto.GameStatus.created_at:type_name -> google.protobuf.Timestamp 162, // 200: proto.GameStatus.updated_at:type_name -> google.protobuf.Timestamp 93, // 201: proto.GameTimeToBeatResult.gametimetobeats:type_name -> proto.GameTimeToBeat 162, // 202: proto.GameTimeToBeat.created_at:type_name -> google.protobuf.Timestamp 162, // 203: proto.GameTimeToBeat.updated_at:type_name -> google.protobuf.Timestamp 95, // 204: proto.GameTypeResult.gametypes:type_name -> proto.GameType 162, // 205: proto.GameType.created_at:type_name -> google.protobuf.Timestamp 162, // 206: proto.GameType.updated_at:type_name -> google.protobuf.Timestamp 97, // 207: proto.GameVersionResult.gameversions:type_name -> proto.GameVersion 162, // 208: proto.GameVersion.created_at:type_name -> google.protobuf.Timestamp 99, // 209: proto.GameVersion.features:type_name -> proto.GameVersionFeature 79, // 210: proto.GameVersion.game:type_name -> proto.Game 79, // 211: proto.GameVersion.games:type_name -> proto.Game 162, // 212: proto.GameVersion.updated_at:type_name -> google.protobuf.Timestamp 99, // 213: proto.GameVersionFeatureResult.gameversionfeatures:type_name -> proto.GameVersionFeature 11, // 214: proto.GameVersionFeature.category:type_name -> proto.GameVersionFeatureCategoryEnum 101, // 215: proto.GameVersionFeature.values:type_name -> proto.GameVersionFeatureValue 101, // 216: proto.GameVersionFeatureValueResult.gameversionfeaturevalues:type_name -> proto.GameVersionFeatureValue 79, // 217: proto.GameVersionFeatureValue.game:type_name -> proto.Game 99, // 218: proto.GameVersionFeatureValue.game_feature:type_name -> proto.GameVersionFeature 12, // 219: proto.GameVersionFeatureValue.included_feature:type_name -> proto.GameVersionFeatureValueIncludedFeatureEnum 103, // 220: proto.GameVideoResult.gamevideos:type_name -> proto.GameVideo 79, // 221: proto.GameVideo.game:type_name -> proto.Game 105, // 222: proto.GenreResult.genres:type_name -> proto.Genre 162, // 223: proto.Genre.created_at:type_name -> google.protobuf.Timestamp 162, // 224: proto.Genre.updated_at:type_name -> google.protobuf.Timestamp 107, // 225: proto.InvolvedCompanyResult.involvedcompanies:type_name -> proto.InvolvedCompany 55, // 226: proto.InvolvedCompany.company:type_name -> proto.Company 162, // 227: proto.InvolvedCompany.created_at:type_name -> google.protobuf.Timestamp 79, // 228: proto.InvolvedCompany.game:type_name -> proto.Game 162, // 229: proto.InvolvedCompany.updated_at:type_name -> google.protobuf.Timestamp 109, // 230: proto.KeywordResult.keywords:type_name -> proto.Keyword 162, // 231: proto.Keyword.created_at:type_name -> google.protobuf.Timestamp 162, // 232: proto.Keyword.updated_at:type_name -> google.protobuf.Timestamp 111, // 233: proto.LanguageResult.languages:type_name -> proto.Language 162, // 234: proto.Language.created_at:type_name -> google.protobuf.Timestamp 162, // 235: proto.Language.updated_at:type_name -> google.protobuf.Timestamp 113, // 236: proto.LanguageSupportResult.languagesupports:type_name -> proto.LanguageSupport 79, // 237: proto.LanguageSupport.game:type_name -> proto.Game 111, // 238: proto.LanguageSupport.language:type_name -> proto.Language 115, // 239: proto.LanguageSupport.language_support_type:type_name -> proto.LanguageSupportType 162, // 240: proto.LanguageSupport.created_at:type_name -> google.protobuf.Timestamp 162, // 241: proto.LanguageSupport.updated_at:type_name -> google.protobuf.Timestamp 115, // 242: proto.LanguageSupportTypeResult.languagesupporttypes:type_name -> proto.LanguageSupportType 162, // 243: proto.LanguageSupportType.created_at:type_name -> google.protobuf.Timestamp 162, // 244: proto.LanguageSupportType.updated_at:type_name -> google.protobuf.Timestamp 117, // 245: proto.MultiplayerModeResult.multiplayermodes:type_name -> proto.MultiplayerMode 79, // 246: proto.MultiplayerMode.game:type_name -> proto.Game 121, // 247: proto.MultiplayerMode.platform:type_name -> proto.Platform 119, // 248: proto.NetworkTypeResult.networktypes:type_name -> proto.NetworkType 71, // 249: proto.NetworkType.event_networks:type_name -> proto.EventNetwork 162, // 250: proto.NetworkType.created_at:type_name -> google.protobuf.Timestamp 162, // 251: proto.NetworkType.updated_at:type_name -> google.protobuf.Timestamp 121, // 252: proto.PlatformResult.platforms:type_name -> proto.Platform 13, // 253: proto.Platform.category:type_name -> proto.PlatformCategoryEnum 162, // 254: proto.Platform.created_at:type_name -> google.protobuf.Timestamp 125, // 255: proto.Platform.platform_logo:type_name -> proto.PlatformLogo 123, // 256: proto.Platform.platform_family:type_name -> proto.PlatformFamily 162, // 257: proto.Platform.updated_at:type_name -> google.protobuf.Timestamp 129, // 258: proto.Platform.versions:type_name -> proto.PlatformVersion 135, // 259: proto.Platform.websites:type_name -> proto.PlatformWebsite 127, // 260: proto.Platform.platform_type:type_name -> proto.PlatformType 123, // 261: proto.PlatformFamilyResult.platformfamilies:type_name -> proto.PlatformFamily 125, // 262: proto.PlatformLogoResult.platformlogos:type_name -> proto.PlatformLogo 127, // 263: proto.PlatformTypeResult.platformtypes:type_name -> proto.PlatformType 162, // 264: proto.PlatformType.created_at:type_name -> google.protobuf.Timestamp 162, // 265: proto.PlatformType.updated_at:type_name -> google.protobuf.Timestamp 129, // 266: proto.PlatformVersionResult.platformversions:type_name -> proto.PlatformVersion 131, // 267: proto.PlatformVersion.companies:type_name -> proto.PlatformVersionCompany 131, // 268: proto.PlatformVersion.main_manufacturer:type_name -> proto.PlatformVersionCompany 125, // 269: proto.PlatformVersion.platform_logo:type_name -> proto.PlatformLogo 133, // 270: proto.PlatformVersion.platform_version_release_dates:type_name -> proto.PlatformVersionReleaseDate 131, // 271: proto.PlatformVersionCompanyResult.platformversioncompanies:type_name -> proto.PlatformVersionCompany 55, // 272: proto.PlatformVersionCompany.company:type_name -> proto.Company 133, // 273: proto.PlatformVersionReleaseDateResult.platformversionreleasedates:type_name -> proto.PlatformVersionReleaseDate 5, // 274: proto.PlatformVersionReleaseDate.category:type_name -> proto.DateFormatChangeDateCategoryEnum 162, // 275: proto.PlatformVersionReleaseDate.created_at:type_name -> google.protobuf.Timestamp 162, // 276: proto.PlatformVersionReleaseDate.date:type_name -> google.protobuf.Timestamp 129, // 277: proto.PlatformVersionReleaseDate.platform_version:type_name -> proto.PlatformVersion 14, // 278: proto.PlatformVersionReleaseDate.region:type_name -> proto.RegionRegionEnum 162, // 279: proto.PlatformVersionReleaseDate.updated_at:type_name -> google.protobuf.Timestamp 65, // 280: proto.PlatformVersionReleaseDate.date_format:type_name -> proto.DateFormat 147, // 281: proto.PlatformVersionReleaseDate.release_region:type_name -> proto.ReleaseDateRegion 135, // 282: proto.PlatformWebsiteResult.platformwebsites:type_name -> proto.PlatformWebsite 6, // 283: proto.PlatformWebsite.category:type_name -> proto.WebsiteCategoryEnum 161, // 284: proto.PlatformWebsite.type:type_name -> proto.WebsiteType 137, // 285: proto.PlayerPerspectiveResult.playerperspectives:type_name -> proto.PlayerPerspective 162, // 286: proto.PlayerPerspective.created_at:type_name -> google.protobuf.Timestamp 162, // 287: proto.PlayerPerspective.updated_at:type_name -> google.protobuf.Timestamp 139, // 288: proto.PopularityPrimitiveResult.popularityprimitives:type_name -> proto.PopularityPrimitive 141, // 289: proto.PopularityPrimitive.popularity_type:type_name -> proto.PopularityType 15, // 290: proto.PopularityPrimitive.popularity_source:type_name -> proto.PopularitySourcePopularitySourceEnum 162, // 291: proto.PopularityPrimitive.calculated_at:type_name -> google.protobuf.Timestamp 162, // 292: proto.PopularityPrimitive.created_at:type_name -> google.protobuf.Timestamp 162, // 293: proto.PopularityPrimitive.updated_at:type_name -> google.protobuf.Timestamp 75, // 294: proto.PopularityPrimitive.external_popularity_source:type_name -> proto.ExternalGameSource 141, // 295: proto.PopularityTypeResult.popularitytypes:type_name -> proto.PopularityType 15, // 296: proto.PopularityType.popularity_source:type_name -> proto.PopularitySourcePopularitySourceEnum 162, // 297: proto.PopularityType.created_at:type_name -> google.protobuf.Timestamp 162, // 298: proto.PopularityType.updated_at:type_name -> google.protobuf.Timestamp 75, // 299: proto.PopularityType.external_popularity_source:type_name -> proto.ExternalGameSource 143, // 300: proto.RegionResult.regions:type_name -> proto.Region 162, // 301: proto.Region.created_at:type_name -> google.protobuf.Timestamp 162, // 302: proto.Region.updated_at:type_name -> google.protobuf.Timestamp 145, // 303: proto.ReleaseDateResult.releasedates:type_name -> proto.ReleaseDate 5, // 304: proto.ReleaseDate.category:type_name -> proto.DateFormatChangeDateCategoryEnum 162, // 305: proto.ReleaseDate.created_at:type_name -> google.protobuf.Timestamp 162, // 306: proto.ReleaseDate.date:type_name -> google.protobuf.Timestamp 79, // 307: proto.ReleaseDate.game:type_name -> proto.Game 121, // 308: proto.ReleaseDate.platform:type_name -> proto.Platform 14, // 309: proto.ReleaseDate.region:type_name -> proto.RegionRegionEnum 162, // 310: proto.ReleaseDate.updated_at:type_name -> google.protobuf.Timestamp 149, // 311: proto.ReleaseDate.status:type_name -> proto.ReleaseDateStatus 65, // 312: proto.ReleaseDate.date_format:type_name -> proto.DateFormat 147, // 313: proto.ReleaseDate.release_region:type_name -> proto.ReleaseDateRegion 147, // 314: proto.ReleaseDateRegionResult.releasedateregions:type_name -> proto.ReleaseDateRegion 162, // 315: proto.ReleaseDateRegion.created_at:type_name -> google.protobuf.Timestamp 162, // 316: proto.ReleaseDateRegion.updated_at:type_name -> google.protobuf.Timestamp 149, // 317: proto.ReleaseDateStatusResult.releasedatestatuses:type_name -> proto.ReleaseDateStatus 162, // 318: proto.ReleaseDateStatus.created_at:type_name -> google.protobuf.Timestamp 162, // 319: proto.ReleaseDateStatus.updated_at:type_name -> google.protobuf.Timestamp 151, // 320: proto.ScreenshotResult.screenshots:type_name -> proto.Screenshot 79, // 321: proto.Screenshot.game:type_name -> proto.Game 153, // 322: proto.SearchResult.searches:type_name -> proto.Search 35, // 323: proto.Search.character:type_name -> proto.Character 43, // 324: proto.Search.collection:type_name -> proto.Collection 55, // 325: proto.Search.company:type_name -> proto.Company 79, // 326: proto.Search.game:type_name -> proto.Game 121, // 327: proto.Search.platform:type_name -> proto.Platform 162, // 328: proto.Search.published_at:type_name -> google.protobuf.Timestamp 155, // 329: proto.Search.test_dummy:type_name -> proto.TestDummy 157, // 330: proto.Search.theme:type_name -> proto.Theme 155, // 331: proto.TestDummyResult.testdummies:type_name -> proto.TestDummy 162, // 332: proto.TestDummy.created_at:type_name -> google.protobuf.Timestamp 16, // 333: proto.TestDummy.enum_test:type_name -> proto.TestDummyEnumTestEnum 79, // 334: proto.TestDummy.game:type_name -> proto.Game 155, // 335: proto.TestDummy.test_dummies:type_name -> proto.TestDummy 155, // 336: proto.TestDummy.test_dummy:type_name -> proto.TestDummy 162, // 337: proto.TestDummy.updated_at:type_name -> google.protobuf.Timestamp 157, // 338: proto.ThemeResult.themes:type_name -> proto.Theme 162, // 339: proto.Theme.created_at:type_name -> google.protobuf.Timestamp 162, // 340: proto.Theme.updated_at:type_name -> google.protobuf.Timestamp 159, // 341: proto.WebsiteResult.websites:type_name -> proto.Website 6, // 342: proto.Website.category:type_name -> proto.WebsiteCategoryEnum 79, // 343: proto.Website.game:type_name -> proto.Game 161, // 344: proto.Website.type:type_name -> proto.WebsiteType 161, // 345: proto.WebsiteTypeResult.websitetypes:type_name -> proto.WebsiteType 162, // 346: proto.WebsiteType.created_at:type_name -> google.protobuf.Timestamp 162, // 347: proto.WebsiteType.updated_at:type_name -> google.protobuf.Timestamp 348, // [348:348] is the sub-list for method output_type 348, // [348:348] is the sub-list for method input_type 348, // [348:348] is the sub-list for extension type_name 348, // [348:348] is the sub-list for extension extendee 0, // [0:348] is the sub-list for field type_name } func init() { file_proto_igdbapi_proto_init() } func file_proto_igdbapi_proto_init() { if File_proto_igdbapi_proto != nil { return } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_igdbapi_proto_rawDesc), len(file_proto_igdbapi_proto_rawDesc)), NumEnums: 17, NumMessages: 145, NumExtensions: 0, NumServices: 0, }, GoTypes: file_proto_igdbapi_proto_goTypes, DependencyIndexes: file_proto_igdbapi_proto_depIdxs, EnumInfos: file_proto_igdbapi_proto_enumTypes, MessageInfos: file_proto_igdbapi_proto_msgTypes, }.Build() File_proto_igdbapi_proto = out.File file_proto_igdbapi_proto_goTypes = nil file_proto_igdbapi_proto_depIdxs = nil }