| OLD | NEW |
| 1 // Code generated by protoc-gen-go. DO NOT EDIT. | 1 // Code generated by protoc-gen-go. DO NOT EDIT. |
| 2 // source: github.com/luci/luci-go/tokenserver/api/admin/v1/config.proto | 2 // source: github.com/luci/luci-go/tokenserver/api/admin/v1/config.proto |
| 3 | 3 |
| 4 package admin | 4 package admin |
| 5 | 5 |
| 6 import proto "github.com/golang/protobuf/proto" | 6 import proto "github.com/golang/protobuf/proto" |
| 7 import fmt "fmt" | 7 import fmt "fmt" |
| 8 import math "math" | 8 import math "math" |
| 9 | 9 |
| 10 // Reference imports to suppress errors if they are not otherwise used. | 10 // Reference imports to suppress errors if they are not otherwise used. |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 // * 'delegated_identity' is in 'allowed_to_impersonate' set. | 177 // * 'delegated_identity' is in 'allowed_to_impersonate' set. |
| 178 // * 'audience' is a subset of 'allowed_audience' set. | 178 // * 'audience' is a subset of 'allowed_audience' set. |
| 179 // * 'services' is a subset of 'target_service' set. | 179 // * 'services' is a subset of 'target_service' set. |
| 180 // | 180 // |
| 181 // The presence of a matching rule permits to mint the token. The rule also | 181 // The presence of a matching rule permits to mint the token. The rule also |
| 182 // provides an upper bound on allowed validity_duration, and the rule's name | 182 // provides an upper bound on allowed validity_duration, and the rule's name |
| 183 // is logged in the audit trail. | 183 // is logged in the audit trail. |
| 184 type DelegationRule struct { | 184 type DelegationRule struct { |
| 185 // A descriptive name of this rule, for the audit log. | 185 // A descriptive name of this rule, for the audit log. |
| 186 Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` | 186 Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` |
| 187 » // Email of developers that added this rule, to know who to contact. | 187 » // Email of developers that own this rule, to know who to contact. |
| 188 Owner []string `protobuf:"bytes,2,rep,name=owner" json:"owner,omitempty"
` | 188 Owner []string `protobuf:"bytes,2,rep,name=owner" json:"owner,omitempty"
` |
| 189 // A set of callers to which this rule applies. | 189 // A set of callers to which this rule applies. |
| 190 // | 190 // |
| 191 // Matched against verified credentials of a caller of MintDelegationTok
en. | 191 // Matched against verified credentials of a caller of MintDelegationTok
en. |
| 192 // | 192 // |
| 193 // Each element is either: | 193 // Each element is either: |
| 194 // * An identity string ("user:<email>"). | 194 // * An identity string ("user:<email>"). |
| 195 // * A group reference ("group:<name>"). | 195 // * A group reference ("group:<name>"). |
| 196 // | 196 // |
| 197 // The groups specified here are expanded when MintDelegationTokenReques
t is | 197 // The groups specified here are expanded when MintDelegationTokenReques
t is |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 if m != nil { | 299 if m != nil { |
| 300 return m.MaxValidityDuration | 300 return m.MaxValidityDuration |
| 301 } | 301 } |
| 302 return 0 | 302 return 0 |
| 303 } | 303 } |
| 304 | 304 |
| 305 // ServiceAccountsPermissions is read from service_accounts.cfg in luci-config. | 305 // ServiceAccountsPermissions is read from service_accounts.cfg in luci-config. |
| 306 type ServiceAccountsPermissions struct { | 306 type ServiceAccountsPermissions struct { |
| 307 // Rules specify how MintOAuthTokenViaGrant can be used. | 307 // Rules specify how MintOAuthTokenViaGrant can be used. |
| 308 // | 308 // |
| 309 » // Rules are evaluated independently. One and only one rule should match
the | 309 » // Rules define a mapping {service account email -> authorization config
}, |
| 310 » // request to allow the operation. If none rules or more than one rule m
atch, | 310 » // where 'service account email' is matched to 'service_account' field o
f |
| 311 » // the request will be denied. | 311 » // ServiceAccountRule, and 'authorization config' is the rest of fields
in |
| 312 » // ServiceAccountRule that define how exactly the given service account
is |
| 313 » // allowed to be used. |
| 312 // | 314 // |
| 313 // See ServiceAccountRule comments for more details. | 315 // See ServiceAccountRule comments for more details. |
| 314 Rules []*ServiceAccountRule `protobuf:"bytes,1,rep,name=rules" json:"rul
es,omitempty"` | 316 Rules []*ServiceAccountRule `protobuf:"bytes,1,rep,name=rules" json:"rul
es,omitempty"` |
| 315 } | 317 } |
| 316 | 318 |
| 317 func (m *ServiceAccountsPermissions) Reset() { *m = ServiceAc
countsPermissions{} } | 319 func (m *ServiceAccountsPermissions) Reset() { *m = ServiceAc
countsPermissions{} } |
| 318 func (m *ServiceAccountsPermissions) String() string { return proto.C
ompactTextString(m) } | 320 func (m *ServiceAccountsPermissions) String() string { return proto.C
ompactTextString(m) } |
| 319 func (*ServiceAccountsPermissions) ProtoMessage() {} | 321 func (*ServiceAccountsPermissions) ProtoMessage() {} |
| 320 func (*ServiceAccountsPermissions) Descriptor() ([]byte, []int) { return fileDes
criptor2, []int{5} } | 322 func (*ServiceAccountsPermissions) Descriptor() ([]byte, []int) { return fileDes
criptor2, []int{5} } |
| 321 | 323 |
| 322 func (m *ServiceAccountsPermissions) GetRules() []*ServiceAccountRule { | 324 func (m *ServiceAccountsPermissions) GetRules() []*ServiceAccountRule { |
| 323 if m != nil { | 325 if m != nil { |
| 324 return m.Rules | 326 return m.Rules |
| 325 } | 327 } |
| 326 return nil | 328 return nil |
| 327 } | 329 } |
| 328 | 330 |
| 329 // ServiceAccountRule describes a single allowed case of using service accounts. | 331 // ServiceAccountRule describes a single allowed case of using service accounts. |
| 330 // | 332 // |
| 331 // TODO(vadimsh): Implement. | 333 // The usage of a service account is initiated by an end user, through some |
| 334 // "proxy" service. For example, when a user posts a Swarming task that uses |
| 335 // a service account, the end user is whoever posts the task, and the proxy is |
| 336 // Swarming service itself. |
| 337 // |
| 338 // This rule specifies which end users are allowed to act as an account, and |
| 339 // through which proxies. |
| 332 type ServiceAccountRule struct { | 340 type ServiceAccountRule struct { |
| 333 // A descriptive name of this rule, for the audit log. | 341 // A descriptive name of this rule, for the audit log. |
| 334 Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` | 342 Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` |
| 335 » // Email of developers that owns this rule, to know who to contact. | 343 » // Email of developers that own this rule, to know who to contact. |
| 336 Owner []string `protobuf:"bytes,2,rep,name=owner" json:"owner,omitempty"
` | 344 Owner []string `protobuf:"bytes,2,rep,name=owner" json:"owner,omitempty"
` |
| 345 // Email of service accounts that this rule applies to. |
| 346 // |
| 347 // This is the "primary key" in the rules table: there can be only one r
ule |
| 348 // that applies to a given service account. |
| 349 ServiceAccount []string `protobuf:"bytes,3,rep,name=service_account,json
=serviceAccount" json:"service_account,omitempty"` |
| 350 // OAuth scopes we allow to be granted to the OAuth token. |
| 351 // |
| 352 // Any subset of given scopes is allowed. This field is evaluated in |
| 353 // MintOAuthTokenViaGrant RPC handler, right before generating the OAuth |
| 354 // token. |
| 355 AllowedScope []string `protobuf:"bytes,4,rep,name=allowed_scope,json=all
owedScope" json:"allowed_scope,omitempty"` |
| 356 // A set of identities that are allowed to act as the service account (p
erhaps |
| 357 // indirectly through some other intermediary "proxy" service like Swarm
ing). |
| 358 // |
| 359 // Users listed here are ultimately able to grab an OAuth token belongin
g to |
| 360 // the service account. |
| 361 // |
| 362 // Each element is either: |
| 363 // * An identity string ("user:<email>"). |
| 364 // * A group reference ("group:<name>"). |
| 365 EndUser []string `protobuf:"bytes,5,rep,name=end_user,json=endUser" json
:"end_user,omitempty"` |
| 366 // A set of identities that are allowed to act on behalf of end users wh
en |
| 367 // grabbing an OAuth token for the service account. |
| 368 // |
| 369 // These identities represent "proxy" services that do something with se
rvice |
| 370 // accounts on behalf of end users. Only identities in this set are allo
wed |
| 371 // to perform MintOAuthTokenGrant RPC. |
| 372 // |
| 373 // Each element is either: |
| 374 // * An identity string ("user:<email>"). |
| 375 // * A group reference ("group:<name>"). |
| 376 Proxy []string `protobuf:"bytes,6,rep,name=proxy" json:"proxy,omitempty"
` |
| 377 // Maximum allowed validity duration (sec) of OAuth token grants. |
| 378 // |
| 379 // The grant is minted by MintOAuthTokenGrant RPC (called, for example,
when |
| 380 // Swarming task is posted), and checked by MintOAuthTokenViaGrant RPC (
called |
| 381 // when the task actually runs). So the allowed validity duration should |
| 382 // account for possible queuing delays. |
| 383 // |
| 384 // This duration has no relation to the OAuth token lifetime. The OAuth
token |
| 385 // produced by MintOAuthTokenViaGrant can always live up to 1h regardles
s of |
| 386 // validity duration of the grant. |
| 387 // |
| 388 // Default is 24 hours. |
| 389 MaxGrantValidityDuration int64 `protobuf:"varint,7,opt,name=max_grant_va
lidity_duration,json=maxGrantValidityDuration" json:"max_grant_validity_duration
,omitempty"` |
| 337 } | 390 } |
| 338 | 391 |
| 339 func (m *ServiceAccountRule) Reset() { *m = ServiceAccountRul
e{} } | 392 func (m *ServiceAccountRule) Reset() { *m = ServiceAccountRul
e{} } |
| 340 func (m *ServiceAccountRule) String() string { return proto.CompactTe
xtString(m) } | 393 func (m *ServiceAccountRule) String() string { return proto.CompactTe
xtString(m) } |
| 341 func (*ServiceAccountRule) ProtoMessage() {} | 394 func (*ServiceAccountRule) ProtoMessage() {} |
| 342 func (*ServiceAccountRule) Descriptor() ([]byte, []int) { return fileDescriptor2
, []int{6} } | 395 func (*ServiceAccountRule) Descriptor() ([]byte, []int) { return fileDescriptor2
, []int{6} } |
| 343 | 396 |
| 344 func (m *ServiceAccountRule) GetName() string { | 397 func (m *ServiceAccountRule) GetName() string { |
| 345 if m != nil { | 398 if m != nil { |
| 346 return m.Name | 399 return m.Name |
| 347 } | 400 } |
| 348 return "" | 401 return "" |
| 349 } | 402 } |
| 350 | 403 |
| 351 func (m *ServiceAccountRule) GetOwner() []string { | 404 func (m *ServiceAccountRule) GetOwner() []string { |
| 352 if m != nil { | 405 if m != nil { |
| 353 return m.Owner | 406 return m.Owner |
| 354 } | 407 } |
| 355 return nil | 408 return nil |
| 356 } | 409 } |
| 357 | 410 |
| 411 func (m *ServiceAccountRule) GetServiceAccount() []string { |
| 412 if m != nil { |
| 413 return m.ServiceAccount |
| 414 } |
| 415 return nil |
| 416 } |
| 417 |
| 418 func (m *ServiceAccountRule) GetAllowedScope() []string { |
| 419 if m != nil { |
| 420 return m.AllowedScope |
| 421 } |
| 422 return nil |
| 423 } |
| 424 |
| 425 func (m *ServiceAccountRule) GetEndUser() []string { |
| 426 if m != nil { |
| 427 return m.EndUser |
| 428 } |
| 429 return nil |
| 430 } |
| 431 |
| 432 func (m *ServiceAccountRule) GetProxy() []string { |
| 433 if m != nil { |
| 434 return m.Proxy |
| 435 } |
| 436 return nil |
| 437 } |
| 438 |
| 439 func (m *ServiceAccountRule) GetMaxGrantValidityDuration() int64 { |
| 440 if m != nil { |
| 441 return m.MaxGrantValidityDuration |
| 442 } |
| 443 return 0 |
| 444 } |
| 445 |
| 358 func init() { | 446 func init() { |
| 359 proto.RegisterType((*TokenServerConfig)(nil), "tokenserver.admin.TokenSe
rverConfig") | 447 proto.RegisterType((*TokenServerConfig)(nil), "tokenserver.admin.TokenSe
rverConfig") |
| 360 proto.RegisterType((*CertificateAuthorityConfig)(nil), "tokenserver.admi
n.CertificateAuthorityConfig") | 448 proto.RegisterType((*CertificateAuthorityConfig)(nil), "tokenserver.admi
n.CertificateAuthorityConfig") |
| 361 proto.RegisterType((*DomainConfig)(nil), "tokenserver.admin.DomainConfig
") | 449 proto.RegisterType((*DomainConfig)(nil), "tokenserver.admin.DomainConfig
") |
| 362 proto.RegisterType((*DelegationPermissions)(nil), "tokenserver.admin.Del
egationPermissions") | 450 proto.RegisterType((*DelegationPermissions)(nil), "tokenserver.admin.Del
egationPermissions") |
| 363 proto.RegisterType((*DelegationRule)(nil), "tokenserver.admin.Delegation
Rule") | 451 proto.RegisterType((*DelegationRule)(nil), "tokenserver.admin.Delegation
Rule") |
| 364 proto.RegisterType((*ServiceAccountsPermissions)(nil), "tokenserver.admi
n.ServiceAccountsPermissions") | 452 proto.RegisterType((*ServiceAccountsPermissions)(nil), "tokenserver.admi
n.ServiceAccountsPermissions") |
| 365 proto.RegisterType((*ServiceAccountRule)(nil), "tokenserver.admin.Servic
eAccountRule") | 453 proto.RegisterType((*ServiceAccountRule)(nil), "tokenserver.admin.Servic
eAccountRule") |
| 366 } | 454 } |
| 367 | 455 |
| 368 func init() { | 456 func init() { |
| 369 proto.RegisterFile("github.com/luci/luci-go/tokenserver/api/admin/v1/con
fig.proto", fileDescriptor2) | 457 proto.RegisterFile("github.com/luci/luci-go/tokenserver/api/admin/v1/con
fig.proto", fileDescriptor2) |
| 370 } | 458 } |
| 371 | 459 |
| 372 var fileDescriptor2 = []byte{ | 460 var fileDescriptor2 = []byte{ |
| 373 » // 597 bytes of a gzipped FileDescriptorProto | 461 » // 673 bytes of a gzipped FileDescriptorProto |
| 374 » 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94,
0xdf, 0x6a, 0xdb, 0x4a, | 462 » 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94,
0x41, 0x4f, 0x1b, 0x39, |
| 375 » 0x10, 0xc6, 0xb1, 0x24, 0xdb, 0xf2, 0xe6, 0xcf, 0x71, 0xf6, 0x38, 0x39,
0x4b, 0xce, 0x81, 0xe3, | 463 » 0x14, 0xc7, 0x95, 0x64, 0x92, 0x4c, 0x4c, 0x08, 0xc1, 0x1b, 0x58, 0x2f,
0xac, 0xb4, 0x21, 0x2b, |
| 376 » 0x18, 0x02, 0xee, 0x45, 0x6c, 0x9a, 0x16, 0x7a, 0x51, 0x5a, 0x08, 0xf1,
0x4d, 0x4c, 0xa1, 0x41, | 464 » 0xb4, 0xd9, 0x03, 0x89, 0x96, 0xad, 0xd4, 0x43, 0xc5, 0x01, 0x11, 0xa9,
0x22, 0xaa, 0x54, 0x34, |
| 377 » 0x49, 0x0b, 0xbd, 0x5a, 0x36, 0xab, 0x89, 0xbd, 0x44, 0xda, 0x75, 0x76,
0x57, 0x71, 0xf2, 0x00, | 465 » 0x40, 0xa5, 0x9e, 0x2c, 0xe3, 0x79, 0x24, 0x16, 0x33, 0x76, 0xb0, 0x3d,
0x24, 0x7c, 0x80, 0x7e, |
| 378 » 0x7d, 0x83, 0x3e, 0x70, 0xd1, 0x48, 0x69, 0x1c, 0xe2, 0x42, 0x6f, 0x8c,
0xe7, 0xfb, 0x7d, 0x33, | 466 » 0x83, 0x7e, 0xdc, 0x1e, 0xaa, 0xf1, 0x98, 0x92, 0x94, 0x70, 0xe8, 0x25,
0x8a, 0xff, 0xff, 0xff, |
| 379 » 0xcb, 0x7c, 0x03, 0x22, 0x1f, 0x66, 0xca, 0xcf, 0x8b, 0xab, 0x91, 0x34,
0xf9, 0x38, 0x2b, 0xa4, | 467 » 0x7b, 0xd6, 0xfb, 0x3d, 0x79, 0xd0, 0xc9, 0x44, 0xd8, 0x69, 0x76, 0x33,
0xe0, 0x2a, 0x1d, 0x26, |
| 380 » 0xc2, 0x9f, 0xa3, 0x99, 0x19, 0x7b, 0x73, 0x03, 0xda, 0x81, 0xbd, 0x03,
0x3b, 0x16, 0x0b, 0x35, | 468 » 0x19, 0x17, 0xee, 0xe7, 0x68, 0xa2, 0x86, 0x56, 0xdd, 0x81, 0x34, 0xa0,
0x1f, 0x40, 0x0f, 0xd9, |
| 381 » 0x16, 0x69, 0xae, 0xf4, 0xf8, 0xee, 0xf5, 0x58, 0x1a, 0x7d, 0xad, 0x66,
0xa3, 0x85, 0x35, 0xde, | 469 » 0x4c, 0x0c, 0x59, 0x9c, 0x0a, 0x39, 0x7c, 0xf8, 0x6f, 0xc8, 0x95, 0xbc,
0x15, 0x93, 0xc1, 0x4c, |
| 382 » 0xd0, 0x9d, 0x15, 0xdb, 0x08, 0x2d, 0x83, 0x25, 0xd9, 0xb9, 0x2c, 0xc5,
0x0b, 0x14, 0x4f, 0xd1, | 470 » 0x2b, 0xab, 0xf0, 0xf6, 0x52, 0x6c, 0xe0, 0x22, 0xbd, 0x39, 0xda, 0xbe,
0xca, 0xc5, 0x4b, 0x27, |
| 383 » 0x4d, 0xaf, 0xc8, 0xae, 0x04, 0xeb, 0xd5, 0xb5, 0x92, 0xc2, 0x03, 0x17,
0x85, 0x9f, 0x1b, 0xab, | 471 » 0x9e, 0xb9, 0x34, 0xbe, 0x41, 0x3b, 0x1c, 0xb4, 0x15, 0xb7, 0x82, 0x33,
0x0b, 0x94, 0x65, 0x76, |
| 384 » 0xfc, 0x03, 0x6b, 0xf4, 0xc3, 0xe1, 0xc6, 0xf1, 0xd1, 0xe8, 0xc5, 0x9c,
0xd1, 0xe9, 0x93, 0xff, | 472 » 0xaa, 0xb4, 0xb0, 0x8f, 0xa4, 0xd4, 0xad, 0xf4, 0x37, 0x8e, 0x8f, 0x06,
0x2f, 0xfa, 0x0c, 0xce, |
| 385 » 0xe4, 0xd1, 0x5e, 0x4d, 0x4b, 0x7a, 0x72, 0x0d, 0x1b, 0x7c, 0x0f, 0xc8,
0xfe, 0xef, 0x9b, 0xe8, | 473 » 0x9e, 0xf3, 0xa7, 0x4f, 0xf1, 0xa2, 0x5b, 0xd4, 0xe1, 0x6b, 0xbc, 0xde,
0x97, 0x32, 0xda, 0x7b, |
| 386 » 0xbf, 0xa4, 0x53, 0x68, 0x75, 0x5b, 0x00, 0x57, 0x29, 0x6b, 0xf5, 0x1b,
0xc3, 0x30, 0x89, 0x2b, | 474 » 0xbd, 0x08, 0xef, 0xa3, 0x46, 0x26, 0xc5, 0x7d, 0x06, 0x54, 0xc4, 0xa4,
0xd6, 0x2d, 0xf5, 0x2b, |
| 387 » 0xe1, 0x2c, 0xa5, 0xdb, 0x24, 0x90, 0x9a, 0x35, 0xfa, 0x8d, 0x61, 0x27,
0x09, 0xa4, 0x2e, 0xcd, | 475 » 0x51, 0x58, 0x08, 0xe7, 0x31, 0x6e, 0xa1, 0x32, 0x97, 0xa4, 0xd4, 0x2d,
0xf5, 0x1b, 0x51, 0x99, |
| 388 » 0xe5, 0x1b, 0x7c, 0x21, 0xfc, 0x9c, 0x05, 0x28, 0xc7, 0xa5, 0x70, 0x2e,
0xfc, 0x9c, 0xfe, 0x43, | 476 » 0xcb, 0x3c, 0x9c, 0xdf, 0x41, 0x67, 0xcc, 0x4e, 0x49, 0xd9, 0xc9, 0x61,
0x2e, 0x5c, 0x30, 0x3b, |
| 389 » 0xda, 0xd2, 0x66, 0xbc, 0xb0, 0x19, 0x0b, 0x11, 0xb5, 0xa4, 0xcd, 0xbe,
0xd8, 0x0c, 0x9f, 0x70, | 477 » 0xc5, 0xbf, 0xa3, 0x3a, 0xd7, 0x09, 0xcd, 0x74, 0x42, 0x2a, 0xce, 0xaa,
0x71, 0x9d, 0x5c, 0xeb, |
| 390 » 0xc0, 0x4d, 0xb9, 0x1e, 0x8b, 0xfa, 0x8d, 0x61, 0x9c, 0xc4, 0x85, 0x83,
0xcf, 0x65, 0x4d, 0x0f, | 478 » 0xc4, 0x5d, 0x61, 0x80, 0xaa, 0x7c, 0x3c, 0x12, 0x74, 0x4b, 0xfd, 0x30,
0x0a, 0x33, 0x03, 0x1f, |
| 391 » 0xc8, 0x26, 0x02, 0xee, 0xa4, 0x59, 0x80, 0x63, 0xed, 0x7e, 0x38, 0xec,
0x24, 0x1b, 0xa8, 0x5d, | 479 » 0xf3, 0x33, 0x3e, 0x40, 0x4d, 0x67, 0x50, 0xc3, 0xd5, 0x0c, 0x0c, 0xa9,
0x77, 0x2b, 0xfd, 0x46, |
| 392 » 0xa0, 0x44, 0x27, 0x64, 0xeb, 0x46, 0x9b, 0xa5, 0xe6, 0xa9, 0xc9, 0x85,
0xd2, 0x8e, 0x35, 0x31, | 480 » 0xb4, 0xe1, 0xb4, 0x4b, 0x27, 0xe1, 0x11, 0xda, 0xbc, 0x93, 0x6a, 0x2e,
0x69, 0xac, 0x52, 0x26, |
| 393 » 0x9d, 0xff, 0xd7, 0xa4, 0x33, 0x41, 0x47, 0x9d, 0xc7, 0x26, 0x76, 0x55,
0x92, 0x1b, 0x78, 0xb2, | 481 » 0xa4, 0x21, 0x55, 0x47, 0xe7, 0xaf, 0x35, 0x74, 0x46, 0x2e, 0xe1, 0x79,
0x34, 0x5d, 0x55, 0x21, |
| 394 » 0xb9, 0x4a, 0xe9, 0x1e, 0x69, 0x55, 0xf3, 0x30, 0xec, 0x4e, 0x52, 0x57,
0xf4, 0x2d, 0xd9, 0xcb, | 482 » 0x99, 0x9e, 0x45, 0xcd, 0x65, 0x17, 0xef, 0xa2, 0x5a, 0xd1, 0xcf, 0xc1,
0x6e, 0x44, 0xfe, 0x84, |
| 395 » 0x85, 0x9c, 0x2b, 0x0d, 0x1c, 0xe7, 0xf3, 0x4c, 0x5d, 0x83, 0x57, 0x39,
0xb0, 0x26, 0xa6, 0xd3, | 483 » 0xdf, 0xa0, 0xdd, 0x94, 0xf1, 0xa9, 0x90, 0x40, 0x5d, 0x7f, 0x9a, 0x88,
0x5b, 0xb0, 0x22, 0x05, |
| 396 » 0xab, 0x29, 0x5e, 0xf3, 0x53, 0xcd, 0xa6, 0x51, 0x1c, 0x74, 0xc3, 0x69,
0x14, 0x87, 0xdd, 0x68, | 484 » 0x52, 0x75, 0x74, 0x3a, 0xde, 0x75, 0xdb, 0xfc, 0xe0, 0xbd, 0x71, 0x10,
0x96, 0xdb, 0x95, 0x71, |
| 397 » 0x1a, 0xc5, 0x51, 0xb7, 0x39, 0x8d, 0xe2, 0x56, 0xb7, 0x3d, 0x38, 0x27,
0xbb, 0x13, 0xc8, 0x60, | 485 » 0x10, 0x56, 0xda, 0xc1, 0x38, 0x08, 0x83, 0x76, 0x75, 0x1c, 0x84, 0xb5,
0x76, 0xbd, 0x77, 0x81, |
| 398 » 0x26, 0xbc, 0x32, 0xfa, 0x1c, 0x6c, 0xae, 0x9c, 0x53, 0x46, 0x3b, 0xfa,
0x8e, 0x34, 0x6d, 0x91, | 486 » 0x76, 0x46, 0x90, 0xc0, 0x84, 0x59, 0xa1, 0xe4, 0x05, 0xe8, 0x54, 0x18,
0x23, 0x94, 0x34, 0xf8, |
| 399 » 0x81, 0xab, 0x4f, 0x7d, 0xb0, 0x6e, 0x99, 0x5f, 0x8d, 0x49, 0x91, 0x41,
0x52, 0xf9, 0x07, 0x3f, | 487 » 0x2d, 0xaa, 0xea, 0x2c, 0x01, 0xe3, 0x57, 0x7d, 0xb0, 0x6e, 0x98, 0x1f,
0x85, 0x51, 0x96, 0x40, |
| 400 » 0x02, 0xb2, 0xfd, 0x9c, 0x50, 0x4a, 0x22, 0x2d, 0x72, 0xa8, 0x0f, 0x85,
0xff, 0x69, 0x8f, 0x34, | 488 » 0x54, 0xe4, 0x7b, 0x5f, 0xcb, 0xa8, 0xb5, 0xea, 0x60, 0x8c, 0x02, 0xc9,
0x52, 0xf0, 0x8b, 0x72, |
| 401 » 0xcd, 0x52, 0x83, 0x65, 0x01, 0x6e, 0x57, 0x15, 0xf4, 0x3f, 0xd2, 0xb1,
0x70, 0x5b, 0x80, 0xf3, | 489 » 0xff, 0x71, 0x07, 0x55, 0xd5, 0x5c, 0x82, 0x26, 0x65, 0x37, 0x5d, 0x71,
0xc0, 0x7f, 0xa2, 0x86, |
| 402 » 0xc6, 0xb2, 0x10, 0xc9, 0x93, 0x50, 0xae, 0x2e, 0xb2, 0xcc, 0x2c, 0x21,
0xe5, 0xde, 0x70, 0x95, | 490 » 0x86, 0xfb, 0x0c, 0x8c, 0x55, 0x9a, 0x54, 0x9c, 0xf3, 0x2c, 0xe4, 0xa3,
0xb3, 0x24, 0x51, 0x73, |
| 403 » 0x2f, 0xc0, 0x3a, 0xa3, 0x85, 0x07, 0x16, 0xa1, 0xb5, 0x57, 0xd3, 0x4b,
0x73, 0xf6, 0xc4, 0xe8, | 491 » 0x88, 0xa9, 0x55, 0x54, 0xa4, 0x33, 0xd0, 0x46, 0x49, 0x66, 0x81, 0x04,
0x2e, 0xda, 0xf1, 0xee, |
| 404 » 0x2b, 0xd2, 0x7d, 0xec, 0x12, 0x45, 0xaa, 0x40, 0x4b, 0xc0, 0x0b, 0x75,
0x92, 0xbf, 0x6a, 0xfd, | 492 » 0x95, 0x3a, 0x7f, 0xf6, 0xf0, 0xbf, 0xa8, 0xfd, 0x54, 0xc5, 0xb2, 0x58,
0x80, 0xe4, 0xe0, 0x36, |
| 405 » 0xa4, 0x96, 0xe9, 0x21, 0xd9, 0xf6, 0xc2, 0xce, 0xc0, 0xf3, 0x72, 0x51,
0x25, 0x81, 0xb5, 0xd0, | 493 » 0xd4, 0x88, 0xb6, 0xbc, 0x7e, 0xea, 0x65, 0x7c, 0x88, 0x5a, 0x96, 0xe9,
0x09, 0x58, 0x9a, 0x0f, |
| 406 » 0xb8, 0x55, 0xa9, 0x17, 0x95, 0x48, 0x8f, 0xc9, 0x6e, 0x2e, 0xee, 0xf9,
0x9d, 0xc8, 0x54, 0xaa, | 494 » 0x2a, 0x38, 0x90, 0x9a, 0x0b, 0x6e, 0x16, 0xea, 0x65, 0x21, 0xe2, 0x63,
0xb4, 0x93, 0xb2, 0x05, |
| 407 » 0xfc, 0x03, 0x4f, 0x0b, 0x8b, 0xcb, 0xb2, 0x36, 0x5e, 0xe0, 0xef, 0x5c,
0xdc, 0x7f, 0xad, 0xd9, | 495 » 0x7d, 0x60, 0x89, 0x88, 0x85, 0x7d, 0xa4, 0x71, 0xa6, 0xdd, 0xb0, 0xa4,
0xee, 0x36, 0xf0, 0x5b, |
| 408 » 0xa4, 0x46, 0x83, 0x6f, 0x64, 0xbf, 0x6e, 0x3f, 0x91, 0xd2, 0x14, 0xda,
0xbb, 0xd5, 0xb4, 0xdf, | 496 » 0xca, 0x16, 0x9f, 0xbc, 0x37, 0xf2, 0x56, 0xef, 0x33, 0xda, 0xf3, 0xe5,
0xa7, 0x9c, 0xab, 0x4c, |
| 409 » 0x3f, 0x4f, 0xfb, 0x70, 0x4d, 0xda, 0xcf, 0xbb, 0x57, 0x13, 0xff, 0x48,
0xe8, 0x4b, 0xf8, 0xe7, | 497 » 0x5a, 0xb3, 0x4c, 0xfb, 0xdd, 0x2a, 0xed, 0xc3, 0x35, 0xb4, 0x57, 0xab,
0x97, 0x89, 0x7f, 0x2b, |
| 410 » 0xa1, 0x5f, 0xb5, 0xf0, 0xa3, 0xf0, 0xe6, 0x67, 0x00, 0x00, 0x00, 0xff,
0xff, 0xf6, 0xd6, 0xfd, | 498 » 0x21, 0xfc, 0xd2, 0xfd, 0x05, 0xea, 0xff, 0xa0, 0x2d, 0x3f, 0x2f, 0x65,
0x45, 0x03, 0xcf, 0xbe, |
| 411 » 0x81, 0x55, 0x04, 0x00, 0x00, | 499 » 0x65, 0x56, 0xda, 0xe2, 0xbf, 0xd1, 0xe6, 0x13, 0x4a, 0xf7, 0x1c, 0x3c,
0xf7, 0xa6, 0x17, 0xdd, |
| 500 » 0x7b, 0xc0, 0x7f, 0xa0, 0x10, 0x64, 0x4c, 0x33, 0x03, 0xda, 0x73, 0xae,
0x83, 0x8c, 0xaf, 0x0d, |
| 501 » 0xe8, 0xfc, 0xfa, 0x99, 0x56, 0x8b, 0x47, 0x8f, 0xb5, 0x38, 0xe0, 0x13,
0xb4, 0x9f, 0xe3, 0x9c, |
| 502 » 0x68, 0x26, 0xed, 0xab, 0x50, 0x49, 0xca, 0x16, 0xef, 0xf3, 0xc4, 0xcf,
0x64, 0x6f, 0x6a, 0xee, |
| 503 » 0x9b, 0xf6, 0xff, 0xf7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9e, 0x73, 0xb8,
0x2e, 0x14, 0x05, 0x00, |
| 504 » 0x00, |
| 412 } | 505 } |
| OLD | NEW |