1// Code generated by protoc-gen-go. DO NOT EDIT. 2// source: google/api/auth.proto 3 4package serviceconfig 5 6import ( 7 fmt "fmt" 8 math "math" 9 10 proto "github.com/golang/protobuf/proto" 11) 12 13// Reference imports to suppress errors if they are not otherwise used. 14var _ = proto.Marshal 15var _ = fmt.Errorf 16var _ = math.Inf 17 18// This is a compile-time assertion to ensure that this generated file 19// is compatible with the proto package it is being compiled against. 20// A compilation error at this line likely means your copy of the 21// proto package needs to be updated. 22const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package 23 24// `Authentication` defines the authentication configuration for an API. 25// 26// Example for an API targeted for external use: 27// 28// name: calendar.googleapis.com 29// authentication: 30// providers: 31// - id: google_calendar_auth 32// jwks_uri: https://www.googleapis.com/oauth2/v1/certs 33// issuer: https://securetoken.google.com 34// rules: 35// - selector: "*" 36// requirements: 37// provider_id: google_calendar_auth 38type Authentication struct { 39 // A list of authentication rules that apply to individual API methods. 40 // 41 // **NOTE:** All service configuration rules follow "last one wins" order. 42 Rules []*AuthenticationRule `protobuf:"bytes,3,rep,name=rules,proto3" json:"rules,omitempty"` 43 // Defines a set of authentication providers that a service supports. 44 Providers []*AuthProvider `protobuf:"bytes,4,rep,name=providers,proto3" json:"providers,omitempty"` 45 XXX_NoUnkeyedLiteral struct{} `json:"-"` 46 XXX_unrecognized []byte `json:"-"` 47 XXX_sizecache int32 `json:"-"` 48} 49 50func (m *Authentication) Reset() { *m = Authentication{} } 51func (m *Authentication) String() string { return proto.CompactTextString(m) } 52func (*Authentication) ProtoMessage() {} 53func (*Authentication) Descriptor() ([]byte, []int) { 54 return fileDescriptor_d6570d3c90e2b8ac, []int{0} 55} 56 57func (m *Authentication) XXX_Unmarshal(b []byte) error { 58 return xxx_messageInfo_Authentication.Unmarshal(m, b) 59} 60func (m *Authentication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 61 return xxx_messageInfo_Authentication.Marshal(b, m, deterministic) 62} 63func (m *Authentication) XXX_Merge(src proto.Message) { 64 xxx_messageInfo_Authentication.Merge(m, src) 65} 66func (m *Authentication) XXX_Size() int { 67 return xxx_messageInfo_Authentication.Size(m) 68} 69func (m *Authentication) XXX_DiscardUnknown() { 70 xxx_messageInfo_Authentication.DiscardUnknown(m) 71} 72 73var xxx_messageInfo_Authentication proto.InternalMessageInfo 74 75func (m *Authentication) GetRules() []*AuthenticationRule { 76 if m != nil { 77 return m.Rules 78 } 79 return nil 80} 81 82func (m *Authentication) GetProviders() []*AuthProvider { 83 if m != nil { 84 return m.Providers 85 } 86 return nil 87} 88 89// Authentication rules for the service. 90// 91// By default, if a method has any authentication requirements, every request 92// must include a valid credential matching one of the requirements. 93// It's an error to include more than one kind of credential in a single 94// request. 95// 96// If a method doesn't have any auth requirements, request credentials will be 97// ignored. 98type AuthenticationRule struct { 99 // Selects the methods to which this rule applies. 100 // 101 // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. 102 Selector string `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` 103 // The requirements for OAuth credentials. 104 Oauth *OAuthRequirements `protobuf:"bytes,2,opt,name=oauth,proto3" json:"oauth,omitempty"` 105 // If true, the service accepts API keys without any other credential. 106 AllowWithoutCredential bool `protobuf:"varint,5,opt,name=allow_without_credential,json=allowWithoutCredential,proto3" json:"allow_without_credential,omitempty"` 107 // Requirements for additional authentication providers. 108 Requirements []*AuthRequirement `protobuf:"bytes,7,rep,name=requirements,proto3" json:"requirements,omitempty"` 109 XXX_NoUnkeyedLiteral struct{} `json:"-"` 110 XXX_unrecognized []byte `json:"-"` 111 XXX_sizecache int32 `json:"-"` 112} 113 114func (m *AuthenticationRule) Reset() { *m = AuthenticationRule{} } 115func (m *AuthenticationRule) String() string { return proto.CompactTextString(m) } 116func (*AuthenticationRule) ProtoMessage() {} 117func (*AuthenticationRule) Descriptor() ([]byte, []int) { 118 return fileDescriptor_d6570d3c90e2b8ac, []int{1} 119} 120 121func (m *AuthenticationRule) XXX_Unmarshal(b []byte) error { 122 return xxx_messageInfo_AuthenticationRule.Unmarshal(m, b) 123} 124func (m *AuthenticationRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 125 return xxx_messageInfo_AuthenticationRule.Marshal(b, m, deterministic) 126} 127func (m *AuthenticationRule) XXX_Merge(src proto.Message) { 128 xxx_messageInfo_AuthenticationRule.Merge(m, src) 129} 130func (m *AuthenticationRule) XXX_Size() int { 131 return xxx_messageInfo_AuthenticationRule.Size(m) 132} 133func (m *AuthenticationRule) XXX_DiscardUnknown() { 134 xxx_messageInfo_AuthenticationRule.DiscardUnknown(m) 135} 136 137var xxx_messageInfo_AuthenticationRule proto.InternalMessageInfo 138 139func (m *AuthenticationRule) GetSelector() string { 140 if m != nil { 141 return m.Selector 142 } 143 return "" 144} 145 146func (m *AuthenticationRule) GetOauth() *OAuthRequirements { 147 if m != nil { 148 return m.Oauth 149 } 150 return nil 151} 152 153func (m *AuthenticationRule) GetAllowWithoutCredential() bool { 154 if m != nil { 155 return m.AllowWithoutCredential 156 } 157 return false 158} 159 160func (m *AuthenticationRule) GetRequirements() []*AuthRequirement { 161 if m != nil { 162 return m.Requirements 163 } 164 return nil 165} 166 167// Specifies a location to extract JWT from an API request. 168type JwtLocation struct { 169 // Types that are valid to be assigned to In: 170 // *JwtLocation_Header 171 // *JwtLocation_Query 172 In isJwtLocation_In `protobuf_oneof:"in"` 173 // The value prefix. The value format is "value_prefix{token}" 174 // Only applies to "in" header type. Must be empty for "in" query type. 175 // If not empty, the header value has to match (case sensitive) this prefix. 176 // If not matched, JWT will not be extracted. If matched, JWT will be 177 // extracted after the prefix is removed. 178 // 179 // For example, for "Authorization: Bearer {JWT}", 180 // value_prefix="Bearer " with a space at the end. 181 ValuePrefix string `protobuf:"bytes,3,opt,name=value_prefix,json=valuePrefix,proto3" json:"value_prefix,omitempty"` 182 XXX_NoUnkeyedLiteral struct{} `json:"-"` 183 XXX_unrecognized []byte `json:"-"` 184 XXX_sizecache int32 `json:"-"` 185} 186 187func (m *JwtLocation) Reset() { *m = JwtLocation{} } 188func (m *JwtLocation) String() string { return proto.CompactTextString(m) } 189func (*JwtLocation) ProtoMessage() {} 190func (*JwtLocation) Descriptor() ([]byte, []int) { 191 return fileDescriptor_d6570d3c90e2b8ac, []int{2} 192} 193 194func (m *JwtLocation) XXX_Unmarshal(b []byte) error { 195 return xxx_messageInfo_JwtLocation.Unmarshal(m, b) 196} 197func (m *JwtLocation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 198 return xxx_messageInfo_JwtLocation.Marshal(b, m, deterministic) 199} 200func (m *JwtLocation) XXX_Merge(src proto.Message) { 201 xxx_messageInfo_JwtLocation.Merge(m, src) 202} 203func (m *JwtLocation) XXX_Size() int { 204 return xxx_messageInfo_JwtLocation.Size(m) 205} 206func (m *JwtLocation) XXX_DiscardUnknown() { 207 xxx_messageInfo_JwtLocation.DiscardUnknown(m) 208} 209 210var xxx_messageInfo_JwtLocation proto.InternalMessageInfo 211 212type isJwtLocation_In interface { 213 isJwtLocation_In() 214} 215 216type JwtLocation_Header struct { 217 Header string `protobuf:"bytes,1,opt,name=header,proto3,oneof"` 218} 219 220type JwtLocation_Query struct { 221 Query string `protobuf:"bytes,2,opt,name=query,proto3,oneof"` 222} 223 224func (*JwtLocation_Header) isJwtLocation_In() {} 225 226func (*JwtLocation_Query) isJwtLocation_In() {} 227 228func (m *JwtLocation) GetIn() isJwtLocation_In { 229 if m != nil { 230 return m.In 231 } 232 return nil 233} 234 235func (m *JwtLocation) GetHeader() string { 236 if x, ok := m.GetIn().(*JwtLocation_Header); ok { 237 return x.Header 238 } 239 return "" 240} 241 242func (m *JwtLocation) GetQuery() string { 243 if x, ok := m.GetIn().(*JwtLocation_Query); ok { 244 return x.Query 245 } 246 return "" 247} 248 249func (m *JwtLocation) GetValuePrefix() string { 250 if m != nil { 251 return m.ValuePrefix 252 } 253 return "" 254} 255 256// XXX_OneofWrappers is for the internal use of the proto package. 257func (*JwtLocation) XXX_OneofWrappers() []interface{} { 258 return []interface{}{ 259 (*JwtLocation_Header)(nil), 260 (*JwtLocation_Query)(nil), 261 } 262} 263 264// Configuration for an authentication provider, including support for 265// [JSON Web Token 266// (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). 267type AuthProvider struct { 268 // The unique identifier of the auth provider. It will be referred to by 269 // `AuthRequirement.provider_id`. 270 // 271 // Example: "bookstore_auth". 272 Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` 273 // Identifies the principal that issued the JWT. See 274 // https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1 275 // Usually a URL or an email address. 276 // 277 // Example: https://securetoken.google.com 278 // Example: 1234567-compute@developer.gserviceaccount.com 279 Issuer string `protobuf:"bytes,2,opt,name=issuer,proto3" json:"issuer,omitempty"` 280 // URL of the provider's public key set to validate signature of the JWT. See 281 // [OpenID 282 // Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata). 283 // Optional if the key set document: 284 // - can be retrieved from 285 // [OpenID 286 // Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html of 287 // the issuer. 288 // - can be inferred from the email domain of the issuer (e.g. a Google 289 // service account). 290 // 291 // Example: https://www.googleapis.com/oauth2/v1/certs 292 JwksUri string `protobuf:"bytes,3,opt,name=jwks_uri,json=jwksUri,proto3" json:"jwks_uri,omitempty"` 293 // The list of JWT 294 // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). 295 // that are allowed to access. A JWT containing any of these audiences will 296 // be accepted. When this setting is absent, only JWTs with audience 297 // "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]" 298 // will be accepted. For example, if no audiences are in the setting, 299 // LibraryService API will only accept JWTs with the following audience 300 // "https://library-example.googleapis.com/google.example.library.v1.LibraryService". 301 // 302 // Example: 303 // 304 // audiences: bookstore_android.apps.googleusercontent.com, 305 // bookstore_web.apps.googleusercontent.com 306 Audiences string `protobuf:"bytes,4,opt,name=audiences,proto3" json:"audiences,omitempty"` 307 // Redirect URL if JWT token is required but not present or is expired. 308 // Implement authorizationUrl of securityDefinitions in OpenAPI spec. 309 AuthorizationUrl string `protobuf:"bytes,5,opt,name=authorization_url,json=authorizationUrl,proto3" json:"authorization_url,omitempty"` 310 // Defines the locations to extract the JWT. 311 // 312 // JWT locations can be either from HTTP headers or URL query parameters. 313 // The rule is that the first match wins. The checking order is: checking 314 // all headers first, then URL query parameters. 315 // 316 // If not specified, default to use following 3 locations: 317 // 1) Authorization: Bearer 318 // 2) x-goog-iap-jwt-assertion 319 // 3) access_token query parameter 320 // 321 // Default locations can be specified as followings: 322 // jwt_locations: 323 // - header: Authorization 324 // value_prefix: "Bearer " 325 // - header: x-goog-iap-jwt-assertion 326 // - query: access_token 327 JwtLocations []*JwtLocation `protobuf:"bytes,6,rep,name=jwt_locations,json=jwtLocations,proto3" json:"jwt_locations,omitempty"` 328 XXX_NoUnkeyedLiteral struct{} `json:"-"` 329 XXX_unrecognized []byte `json:"-"` 330 XXX_sizecache int32 `json:"-"` 331} 332 333func (m *AuthProvider) Reset() { *m = AuthProvider{} } 334func (m *AuthProvider) String() string { return proto.CompactTextString(m) } 335func (*AuthProvider) ProtoMessage() {} 336func (*AuthProvider) Descriptor() ([]byte, []int) { 337 return fileDescriptor_d6570d3c90e2b8ac, []int{3} 338} 339 340func (m *AuthProvider) XXX_Unmarshal(b []byte) error { 341 return xxx_messageInfo_AuthProvider.Unmarshal(m, b) 342} 343func (m *AuthProvider) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 344 return xxx_messageInfo_AuthProvider.Marshal(b, m, deterministic) 345} 346func (m *AuthProvider) XXX_Merge(src proto.Message) { 347 xxx_messageInfo_AuthProvider.Merge(m, src) 348} 349func (m *AuthProvider) XXX_Size() int { 350 return xxx_messageInfo_AuthProvider.Size(m) 351} 352func (m *AuthProvider) XXX_DiscardUnknown() { 353 xxx_messageInfo_AuthProvider.DiscardUnknown(m) 354} 355 356var xxx_messageInfo_AuthProvider proto.InternalMessageInfo 357 358func (m *AuthProvider) GetId() string { 359 if m != nil { 360 return m.Id 361 } 362 return "" 363} 364 365func (m *AuthProvider) GetIssuer() string { 366 if m != nil { 367 return m.Issuer 368 } 369 return "" 370} 371 372func (m *AuthProvider) GetJwksUri() string { 373 if m != nil { 374 return m.JwksUri 375 } 376 return "" 377} 378 379func (m *AuthProvider) GetAudiences() string { 380 if m != nil { 381 return m.Audiences 382 } 383 return "" 384} 385 386func (m *AuthProvider) GetAuthorizationUrl() string { 387 if m != nil { 388 return m.AuthorizationUrl 389 } 390 return "" 391} 392 393func (m *AuthProvider) GetJwtLocations() []*JwtLocation { 394 if m != nil { 395 return m.JwtLocations 396 } 397 return nil 398} 399 400// OAuth scopes are a way to define data and permissions on data. For example, 401// there are scopes defined for "Read-only access to Google Calendar" and 402// "Access to Cloud Platform". Users can consent to a scope for an application, 403// giving it permission to access that data on their behalf. 404// 405// OAuth scope specifications should be fairly coarse grained; a user will need 406// to see and understand the text description of what your scope means. 407// 408// In most cases: use one or at most two OAuth scopes for an entire family of 409// products. If your product has multiple APIs, you should probably be sharing 410// the OAuth scope across all of those APIs. 411// 412// When you need finer grained OAuth consent screens: talk with your product 413// management about how developers will use them in practice. 414// 415// Please note that even though each of the canonical scopes is enough for a 416// request to be accepted and passed to the backend, a request can still fail 417// due to the backend requiring additional scopes or permissions. 418type OAuthRequirements struct { 419 // The list of publicly documented OAuth scopes that are allowed access. An 420 // OAuth token containing any of these scopes will be accepted. 421 // 422 // Example: 423 // 424 // canonical_scopes: https://www.googleapis.com/auth/calendar, 425 // https://www.googleapis.com/auth/calendar.read 426 CanonicalScopes string `protobuf:"bytes,1,opt,name=canonical_scopes,json=canonicalScopes,proto3" json:"canonical_scopes,omitempty"` 427 XXX_NoUnkeyedLiteral struct{} `json:"-"` 428 XXX_unrecognized []byte `json:"-"` 429 XXX_sizecache int32 `json:"-"` 430} 431 432func (m *OAuthRequirements) Reset() { *m = OAuthRequirements{} } 433func (m *OAuthRequirements) String() string { return proto.CompactTextString(m) } 434func (*OAuthRequirements) ProtoMessage() {} 435func (*OAuthRequirements) Descriptor() ([]byte, []int) { 436 return fileDescriptor_d6570d3c90e2b8ac, []int{4} 437} 438 439func (m *OAuthRequirements) XXX_Unmarshal(b []byte) error { 440 return xxx_messageInfo_OAuthRequirements.Unmarshal(m, b) 441} 442func (m *OAuthRequirements) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 443 return xxx_messageInfo_OAuthRequirements.Marshal(b, m, deterministic) 444} 445func (m *OAuthRequirements) XXX_Merge(src proto.Message) { 446 xxx_messageInfo_OAuthRequirements.Merge(m, src) 447} 448func (m *OAuthRequirements) XXX_Size() int { 449 return xxx_messageInfo_OAuthRequirements.Size(m) 450} 451func (m *OAuthRequirements) XXX_DiscardUnknown() { 452 xxx_messageInfo_OAuthRequirements.DiscardUnknown(m) 453} 454 455var xxx_messageInfo_OAuthRequirements proto.InternalMessageInfo 456 457func (m *OAuthRequirements) GetCanonicalScopes() string { 458 if m != nil { 459 return m.CanonicalScopes 460 } 461 return "" 462} 463 464// User-defined authentication requirements, including support for 465// [JSON Web Token 466// (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32). 467type AuthRequirement struct { 468 // [id][google.api.AuthProvider.id] from authentication provider. 469 // 470 // Example: 471 // 472 // provider_id: bookstore_auth 473 ProviderId string `protobuf:"bytes,1,opt,name=provider_id,json=providerId,proto3" json:"provider_id,omitempty"` 474 // NOTE: This will be deprecated soon, once AuthProvider.audiences is 475 // implemented and accepted in all the runtime components. 476 // 477 // The list of JWT 478 // [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). 479 // that are allowed to access. A JWT containing any of these audiences will 480 // be accepted. When this setting is absent, only JWTs with audience 481 // "https://[Service_name][google.api.Service.name]/[API_name][google.protobuf.Api.name]" 482 // will be accepted. For example, if no audiences are in the setting, 483 // LibraryService API will only accept JWTs with the following audience 484 // "https://library-example.googleapis.com/google.example.library.v1.LibraryService". 485 // 486 // Example: 487 // 488 // audiences: bookstore_android.apps.googleusercontent.com, 489 // bookstore_web.apps.googleusercontent.com 490 Audiences string `protobuf:"bytes,2,opt,name=audiences,proto3" json:"audiences,omitempty"` 491 XXX_NoUnkeyedLiteral struct{} `json:"-"` 492 XXX_unrecognized []byte `json:"-"` 493 XXX_sizecache int32 `json:"-"` 494} 495 496func (m *AuthRequirement) Reset() { *m = AuthRequirement{} } 497func (m *AuthRequirement) String() string { return proto.CompactTextString(m) } 498func (*AuthRequirement) ProtoMessage() {} 499func (*AuthRequirement) Descriptor() ([]byte, []int) { 500 return fileDescriptor_d6570d3c90e2b8ac, []int{5} 501} 502 503func (m *AuthRequirement) XXX_Unmarshal(b []byte) error { 504 return xxx_messageInfo_AuthRequirement.Unmarshal(m, b) 505} 506func (m *AuthRequirement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 507 return xxx_messageInfo_AuthRequirement.Marshal(b, m, deterministic) 508} 509func (m *AuthRequirement) XXX_Merge(src proto.Message) { 510 xxx_messageInfo_AuthRequirement.Merge(m, src) 511} 512func (m *AuthRequirement) XXX_Size() int { 513 return xxx_messageInfo_AuthRequirement.Size(m) 514} 515func (m *AuthRequirement) XXX_DiscardUnknown() { 516 xxx_messageInfo_AuthRequirement.DiscardUnknown(m) 517} 518 519var xxx_messageInfo_AuthRequirement proto.InternalMessageInfo 520 521func (m *AuthRequirement) GetProviderId() string { 522 if m != nil { 523 return m.ProviderId 524 } 525 return "" 526} 527 528func (m *AuthRequirement) GetAudiences() string { 529 if m != nil { 530 return m.Audiences 531 } 532 return "" 533} 534 535func init() { 536 proto.RegisterType((*Authentication)(nil), "google.api.Authentication") 537 proto.RegisterType((*AuthenticationRule)(nil), "google.api.AuthenticationRule") 538 proto.RegisterType((*JwtLocation)(nil), "google.api.JwtLocation") 539 proto.RegisterType((*AuthProvider)(nil), "google.api.AuthProvider") 540 proto.RegisterType((*OAuthRequirements)(nil), "google.api.OAuthRequirements") 541 proto.RegisterType((*AuthRequirement)(nil), "google.api.AuthRequirement") 542} 543 544func init() { 545 proto.RegisterFile("google/api/auth.proto", fileDescriptor_d6570d3c90e2b8ac) 546} 547 548var fileDescriptor_d6570d3c90e2b8ac = []byte{ 549 // 533 bytes of a gzipped FileDescriptorProto 550 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x53, 0xcb, 0x6e, 0xd3, 0x40, 551 0x14, 0xc5, 0x6e, 0x93, 0x36, 0x37, 0x21, 0x6d, 0x47, 0x22, 0x98, 0x77, 0xf0, 0x2a, 0x08, 0x29, 552 0x91, 0x5a, 0x84, 0x90, 0x40, 0xa0, 0x06, 0x21, 0x28, 0x42, 0x22, 0x1a, 0x54, 0x21, 0xb1, 0xb1, 553 0x06, 0xfb, 0xd6, 0x99, 0x74, 0xea, 0x71, 0xe7, 0x91, 0x00, 0x0b, 0x3e, 0x86, 0xcf, 0x62, 0xc5, 554 0xa7, 0x20, 0x8f, 0xdd, 0xc4, 0x49, 0x97, 0xe7, 0x71, 0xef, 0xcd, 0x39, 0xce, 0xc0, 0xad, 0x54, 555 0xca, 0x54, 0xe0, 0x88, 0xe5, 0x7c, 0xc4, 0xac, 0x99, 0x0e, 0x73, 0x25, 0x8d, 0x24, 0x50, 0xd2, 556 0x43, 0x96, 0xf3, 0xf0, 0x37, 0x74, 0x8f, 0xad, 0x99, 0x62, 0x66, 0x78, 0xcc, 0x0c, 0x97, 0x19, 557 0x79, 0x06, 0x0d, 0x65, 0x05, 0xea, 0x60, 0xab, 0xbf, 0x35, 0x68, 0x1f, 0x3e, 0x1c, 0xae, 0xdc, 558 0xc3, 0x75, 0x2b, 0xb5, 0x02, 0x69, 0x69, 0x26, 0xcf, 0xa1, 0x95, 0x2b, 0x39, 0xe7, 0x09, 0x2a, 559 0x1d, 0x6c, 0xbb, 0xc9, 0x60, 0x73, 0x72, 0x52, 0x19, 0xe8, 0xca, 0x1a, 0xfe, 0xf3, 0x80, 0x5c, 560 0xdf, 0x4a, 0xee, 0xc2, 0xae, 0x46, 0x81, 0xb1, 0x91, 0x2a, 0xf0, 0xfa, 0xde, 0xa0, 0x45, 0x97, 561 0x98, 0x1c, 0x41, 0x43, 0x16, 0x69, 0x02, 0xbf, 0xef, 0x0d, 0xda, 0x87, 0x0f, 0xea, 0x67, 0x3e, 562 0x17, 0xbb, 0x28, 0x5e, 0x5a, 0xae, 0xf0, 0x02, 0x33, 0xa3, 0x69, 0xe9, 0x25, 0x2f, 0x20, 0x60, 563 0x42, 0xc8, 0x45, 0xb4, 0xe0, 0x66, 0x2a, 0xad, 0x89, 0x62, 0x85, 0x49, 0x71, 0x94, 0x89, 0xa0, 564 0xd1, 0xf7, 0x06, 0xbb, 0xb4, 0xe7, 0xf4, 0xaf, 0xa5, 0xfc, 0x76, 0xa9, 0x92, 0x37, 0xd0, 0x51, 565 0xb5, 0x85, 0xc1, 0x8e, 0x0b, 0x77, 0x6f, 0x33, 0x5c, 0xed, 0x28, 0x5d, 0x1b, 0x08, 0xa7, 0xd0, 566 0xfe, 0xb8, 0x30, 0x9f, 0x64, 0xd5, 0x6f, 0x00, 0xcd, 0x29, 0xb2, 0x04, 0xab, 0x60, 0x1f, 0x6e, 567 0xd0, 0x0a, 0x93, 0x1e, 0x34, 0x2e, 0x2d, 0xaa, 0x9f, 0x2e, 0x58, 0x21, 0x94, 0x90, 0x3c, 0x86, 568 0xce, 0x9c, 0x09, 0x8b, 0x51, 0xae, 0xf0, 0x8c, 0xff, 0x08, 0xb6, 0x5c, 0x21, 0x6d, 0xc7, 0x4d, 569 0x1c, 0x35, 0xde, 0x06, 0x9f, 0x67, 0xe1, 0x5f, 0x0f, 0x3a, 0xf5, 0xa2, 0x49, 0x17, 0x7c, 0x9e, 570 0x54, 0x05, 0xfa, 0x3c, 0x21, 0x3d, 0x68, 0x72, 0xad, 0x2d, 0xaa, 0xf2, 0x04, 0xad, 0x10, 0xb9, 571 0x03, 0xbb, 0xb3, 0xc5, 0xb9, 0x8e, 0xac, 0xe2, 0xd5, 0xf6, 0x9d, 0x02, 0x9f, 0x2a, 0x4e, 0xee, 572 0x43, 0x8b, 0xd9, 0x84, 0x63, 0x16, 0x63, 0xf1, 0x61, 0x0b, 0x6d, 0x45, 0x90, 0xa7, 0x70, 0x50, 573 0xd4, 0x2b, 0x15, 0xff, 0xe5, 0xd2, 0x45, 0x56, 0x95, 0x7d, 0xb6, 0xe8, 0xfe, 0x9a, 0x70, 0xaa, 574 0x04, 0x79, 0x05, 0x37, 0x67, 0x0b, 0x13, 0x89, 0xaa, 0x09, 0x1d, 0x34, 0x5d, 0x95, 0xb7, 0xeb, 575 0x55, 0xd6, 0x9a, 0xa2, 0x9d, 0xd9, 0x0a, 0xe8, 0xf0, 0x35, 0x1c, 0x5c, 0xfb, 0xba, 0xe4, 0x09, 576 0xec, 0xc7, 0x2c, 0x93, 0x19, 0x8f, 0x99, 0x88, 0x74, 0x2c, 0x73, 0xd4, 0x55, 0xdc, 0xbd, 0x25, 577 0xff, 0xc5, 0xd1, 0xe1, 0x04, 0xf6, 0x36, 0xc6, 0xc9, 0x23, 0x68, 0x5f, 0xfd, 0x13, 0xa3, 0x65, 578 0x4f, 0x70, 0x45, 0x9d, 0x24, 0xeb, 0xe1, 0xfd, 0x8d, 0xf0, 0xe3, 0x73, 0xe8, 0xc6, 0xf2, 0xa2, 579 0xf6, 0xeb, 0xc7, 0xad, 0xaa, 0x7d, 0x23, 0x27, 0xde, 0xb7, 0x77, 0x95, 0x90, 0x4a, 0xc1, 0xb2, 580 0x74, 0x28, 0x55, 0x3a, 0x4a, 0x31, 0x73, 0x4f, 0x70, 0x54, 0x4a, 0x2c, 0xe7, 0xda, 0x3d, 0x4e, 581 0x8d, 0x6a, 0xce, 0x63, 0x8c, 0x65, 0x76, 0xc6, 0xd3, 0x97, 0x6b, 0xe8, 0x8f, 0xbf, 0xfd, 0xfe, 582 0x78, 0x72, 0xf2, 0xbd, 0xe9, 0x06, 0x8f, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x4f, 0x04, 583 0x6e, 0xd4, 0x03, 0x00, 0x00, 584} 585