1// Code generated by protoc-gen-go. DO NOT EDIT. 2// source: google/cloud/billing/budgets/v1beta1/budget_model.proto 3 4package budgets 5 6import ( 7 fmt "fmt" 8 math "math" 9 10 proto "github.com/golang/protobuf/proto" 11 _ "google.golang.org/genproto/googleapis/api/annotations" 12 money "google.golang.org/genproto/googleapis/type/money" 13) 14 15// Reference imports to suppress errors if they are not otherwise used. 16var _ = proto.Marshal 17var _ = fmt.Errorf 18var _ = math.Inf 19 20// This is a compile-time assertion to ensure that this generated file 21// is compatible with the proto package it is being compiled against. 22// A compilation error at this line likely means your copy of the 23// proto package needs to be updated. 24const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package 25 26// The type of basis used to determine if spend has passed the threshold. 27type ThresholdRule_Basis int32 28 29const ( 30 // Unspecified threshold basis. 31 ThresholdRule_BASIS_UNSPECIFIED ThresholdRule_Basis = 0 32 // Use current spend as the basis for comparison against the threshold. 33 ThresholdRule_CURRENT_SPEND ThresholdRule_Basis = 1 34 // Use forecasted spend for the period as the basis for comparison against 35 // the threshold. 36 ThresholdRule_FORECASTED_SPEND ThresholdRule_Basis = 2 37) 38 39var ThresholdRule_Basis_name = map[int32]string{ 40 0: "BASIS_UNSPECIFIED", 41 1: "CURRENT_SPEND", 42 2: "FORECASTED_SPEND", 43} 44 45var ThresholdRule_Basis_value = map[string]int32{ 46 "BASIS_UNSPECIFIED": 0, 47 "CURRENT_SPEND": 1, 48 "FORECASTED_SPEND": 2, 49} 50 51func (x ThresholdRule_Basis) String() string { 52 return proto.EnumName(ThresholdRule_Basis_name, int32(x)) 53} 54 55func (ThresholdRule_Basis) EnumDescriptor() ([]byte, []int) { 56 return fileDescriptor_1b88e381b47dbc69, []int{3, 0} 57} 58 59// Specifies how credits should be treated when determining spend for 60// threshold calculations. 61type Filter_CreditTypesTreatment int32 62 63const ( 64 Filter_CREDIT_TYPES_TREATMENT_UNSPECIFIED Filter_CreditTypesTreatment = 0 65 // All types of credit are subtracted from the gross cost to determine the 66 // spend for threshold calculations. 67 Filter_INCLUDE_ALL_CREDITS Filter_CreditTypesTreatment = 1 68 // All types of credit are added to the net cost to determine the spend for 69 // threshold calculations. 70 Filter_EXCLUDE_ALL_CREDITS Filter_CreditTypesTreatment = 2 71) 72 73var Filter_CreditTypesTreatment_name = map[int32]string{ 74 0: "CREDIT_TYPES_TREATMENT_UNSPECIFIED", 75 1: "INCLUDE_ALL_CREDITS", 76 2: "EXCLUDE_ALL_CREDITS", 77} 78 79var Filter_CreditTypesTreatment_value = map[string]int32{ 80 "CREDIT_TYPES_TREATMENT_UNSPECIFIED": 0, 81 "INCLUDE_ALL_CREDITS": 1, 82 "EXCLUDE_ALL_CREDITS": 2, 83} 84 85func (x Filter_CreditTypesTreatment) String() string { 86 return proto.EnumName(Filter_CreditTypesTreatment_name, int32(x)) 87} 88 89func (Filter_CreditTypesTreatment) EnumDescriptor() ([]byte, []int) { 90 return fileDescriptor_1b88e381b47dbc69, []int{5, 0} 91} 92 93// A budget is a plan that describes what you expect to spend on Cloud 94// projects, plus the rules to execute as spend is tracked against that plan, 95// (for example, send an alert when 90% of the target spend is met). 96// Currently all plans are monthly budgets so the usage period(s) tracked are 97// implied (calendar months of usage back-to-back). 98type Budget struct { 99 // Output only. Resource name of the budget. 100 // The resource name implies the scope of a budget. Values are of the form 101 // `billingAccounts/{billingAccountId}/budgets/{budgetId}`. 102 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 103 // User data for display name in UI. 104 // Validation: <= 60 chars. 105 DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` 106 // Optional. Filters that define which resources are used to compute 107 // the actual spend against the budget. 108 BudgetFilter *Filter `protobuf:"bytes,3,opt,name=budget_filter,json=budgetFilter,proto3" json:"budget_filter,omitempty"` 109 // Required. Budgeted amount. 110 Amount *BudgetAmount `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` 111 // Optional. Rules that trigger alerts (notifications of thresholds 112 // being crossed) when spend exceeds the specified percentages of the budget. 113 ThresholdRules []*ThresholdRule `protobuf:"bytes,5,rep,name=threshold_rules,json=thresholdRules,proto3" json:"threshold_rules,omitempty"` 114 // Optional. Rules to apply to all updates to the actual spend, regardless 115 // of the thresholds set in `threshold_rules`. 116 AllUpdatesRule *AllUpdatesRule `protobuf:"bytes,6,opt,name=all_updates_rule,json=allUpdatesRule,proto3" json:"all_updates_rule,omitempty"` 117 // Optional. Etag to validate that the object is unchanged for a 118 // read-modify-write operation. 119 // An empty etag will cause an update to overwrite other changes. 120 Etag string `protobuf:"bytes,7,opt,name=etag,proto3" json:"etag,omitempty"` 121 XXX_NoUnkeyedLiteral struct{} `json:"-"` 122 XXX_unrecognized []byte `json:"-"` 123 XXX_sizecache int32 `json:"-"` 124} 125 126func (m *Budget) Reset() { *m = Budget{} } 127func (m *Budget) String() string { return proto.CompactTextString(m) } 128func (*Budget) ProtoMessage() {} 129func (*Budget) Descriptor() ([]byte, []int) { 130 return fileDescriptor_1b88e381b47dbc69, []int{0} 131} 132 133func (m *Budget) XXX_Unmarshal(b []byte) error { 134 return xxx_messageInfo_Budget.Unmarshal(m, b) 135} 136func (m *Budget) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 137 return xxx_messageInfo_Budget.Marshal(b, m, deterministic) 138} 139func (m *Budget) XXX_Merge(src proto.Message) { 140 xxx_messageInfo_Budget.Merge(m, src) 141} 142func (m *Budget) XXX_Size() int { 143 return xxx_messageInfo_Budget.Size(m) 144} 145func (m *Budget) XXX_DiscardUnknown() { 146 xxx_messageInfo_Budget.DiscardUnknown(m) 147} 148 149var xxx_messageInfo_Budget proto.InternalMessageInfo 150 151func (m *Budget) GetName() string { 152 if m != nil { 153 return m.Name 154 } 155 return "" 156} 157 158func (m *Budget) GetDisplayName() string { 159 if m != nil { 160 return m.DisplayName 161 } 162 return "" 163} 164 165func (m *Budget) GetBudgetFilter() *Filter { 166 if m != nil { 167 return m.BudgetFilter 168 } 169 return nil 170} 171 172func (m *Budget) GetAmount() *BudgetAmount { 173 if m != nil { 174 return m.Amount 175 } 176 return nil 177} 178 179func (m *Budget) GetThresholdRules() []*ThresholdRule { 180 if m != nil { 181 return m.ThresholdRules 182 } 183 return nil 184} 185 186func (m *Budget) GetAllUpdatesRule() *AllUpdatesRule { 187 if m != nil { 188 return m.AllUpdatesRule 189 } 190 return nil 191} 192 193func (m *Budget) GetEtag() string { 194 if m != nil { 195 return m.Etag 196 } 197 return "" 198} 199 200// The budgeted amount for each usage period. 201type BudgetAmount struct { 202 // Specification for what amount to use as the budget. 203 // 204 // Types that are valid to be assigned to BudgetAmount: 205 // *BudgetAmount_SpecifiedAmount 206 // *BudgetAmount_LastPeriodAmount 207 BudgetAmount isBudgetAmount_BudgetAmount `protobuf_oneof:"budget_amount"` 208 XXX_NoUnkeyedLiteral struct{} `json:"-"` 209 XXX_unrecognized []byte `json:"-"` 210 XXX_sizecache int32 `json:"-"` 211} 212 213func (m *BudgetAmount) Reset() { *m = BudgetAmount{} } 214func (m *BudgetAmount) String() string { return proto.CompactTextString(m) } 215func (*BudgetAmount) ProtoMessage() {} 216func (*BudgetAmount) Descriptor() ([]byte, []int) { 217 return fileDescriptor_1b88e381b47dbc69, []int{1} 218} 219 220func (m *BudgetAmount) XXX_Unmarshal(b []byte) error { 221 return xxx_messageInfo_BudgetAmount.Unmarshal(m, b) 222} 223func (m *BudgetAmount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 224 return xxx_messageInfo_BudgetAmount.Marshal(b, m, deterministic) 225} 226func (m *BudgetAmount) XXX_Merge(src proto.Message) { 227 xxx_messageInfo_BudgetAmount.Merge(m, src) 228} 229func (m *BudgetAmount) XXX_Size() int { 230 return xxx_messageInfo_BudgetAmount.Size(m) 231} 232func (m *BudgetAmount) XXX_DiscardUnknown() { 233 xxx_messageInfo_BudgetAmount.DiscardUnknown(m) 234} 235 236var xxx_messageInfo_BudgetAmount proto.InternalMessageInfo 237 238type isBudgetAmount_BudgetAmount interface { 239 isBudgetAmount_BudgetAmount() 240} 241 242type BudgetAmount_SpecifiedAmount struct { 243 SpecifiedAmount *money.Money `protobuf:"bytes,1,opt,name=specified_amount,json=specifiedAmount,proto3,oneof"` 244} 245 246type BudgetAmount_LastPeriodAmount struct { 247 LastPeriodAmount *LastPeriodAmount `protobuf:"bytes,2,opt,name=last_period_amount,json=lastPeriodAmount,proto3,oneof"` 248} 249 250func (*BudgetAmount_SpecifiedAmount) isBudgetAmount_BudgetAmount() {} 251 252func (*BudgetAmount_LastPeriodAmount) isBudgetAmount_BudgetAmount() {} 253 254func (m *BudgetAmount) GetBudgetAmount() isBudgetAmount_BudgetAmount { 255 if m != nil { 256 return m.BudgetAmount 257 } 258 return nil 259} 260 261func (m *BudgetAmount) GetSpecifiedAmount() *money.Money { 262 if x, ok := m.GetBudgetAmount().(*BudgetAmount_SpecifiedAmount); ok { 263 return x.SpecifiedAmount 264 } 265 return nil 266} 267 268func (m *BudgetAmount) GetLastPeriodAmount() *LastPeriodAmount { 269 if x, ok := m.GetBudgetAmount().(*BudgetAmount_LastPeriodAmount); ok { 270 return x.LastPeriodAmount 271 } 272 return nil 273} 274 275// XXX_OneofWrappers is for the internal use of the proto package. 276func (*BudgetAmount) XXX_OneofWrappers() []interface{} { 277 return []interface{}{ 278 (*BudgetAmount_SpecifiedAmount)(nil), 279 (*BudgetAmount_LastPeriodAmount)(nil), 280 } 281} 282 283// Describes a budget amount targeted to last period's spend. 284// At this time, the amount is automatically 100% of last period's spend; 285// that is, there are no other options yet. 286// Future configuration will be described here (for example, configuring a 287// percentage of last period's spend). 288type LastPeriodAmount struct { 289 XXX_NoUnkeyedLiteral struct{} `json:"-"` 290 XXX_unrecognized []byte `json:"-"` 291 XXX_sizecache int32 `json:"-"` 292} 293 294func (m *LastPeriodAmount) Reset() { *m = LastPeriodAmount{} } 295func (m *LastPeriodAmount) String() string { return proto.CompactTextString(m) } 296func (*LastPeriodAmount) ProtoMessage() {} 297func (*LastPeriodAmount) Descriptor() ([]byte, []int) { 298 return fileDescriptor_1b88e381b47dbc69, []int{2} 299} 300 301func (m *LastPeriodAmount) XXX_Unmarshal(b []byte) error { 302 return xxx_messageInfo_LastPeriodAmount.Unmarshal(m, b) 303} 304func (m *LastPeriodAmount) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 305 return xxx_messageInfo_LastPeriodAmount.Marshal(b, m, deterministic) 306} 307func (m *LastPeriodAmount) XXX_Merge(src proto.Message) { 308 xxx_messageInfo_LastPeriodAmount.Merge(m, src) 309} 310func (m *LastPeriodAmount) XXX_Size() int { 311 return xxx_messageInfo_LastPeriodAmount.Size(m) 312} 313func (m *LastPeriodAmount) XXX_DiscardUnknown() { 314 xxx_messageInfo_LastPeriodAmount.DiscardUnknown(m) 315} 316 317var xxx_messageInfo_LastPeriodAmount proto.InternalMessageInfo 318 319// ThresholdRule contains a definition of a threshold which triggers 320// an alert (a notification of a threshold being crossed) to be sent when 321// spend goes above the specified amount. 322// Alerts are automatically e-mailed to users with the Billing Account 323// Administrator role or the Billing Account User role. 324// The thresholds here have no effect on notifications sent to anything 325// configured under `Budget.all_updates_rule`. 326type ThresholdRule struct { 327 // Required. Send an alert when this threshold is exceeded. 328 // This is a 1.0-based percentage, so 0.5 = 50%. 329 // Validation: non-negative number. 330 ThresholdPercent float64 `protobuf:"fixed64,1,opt,name=threshold_percent,json=thresholdPercent,proto3" json:"threshold_percent,omitempty"` 331 // Optional. The type of basis used to determine if spend has passed the 332 // threshold. Behavior defaults to CURRENT_SPEND if not set. 333 SpendBasis ThresholdRule_Basis `protobuf:"varint,2,opt,name=spend_basis,json=spendBasis,proto3,enum=google.cloud.billing.budgets.v1beta1.ThresholdRule_Basis" json:"spend_basis,omitempty"` 334 XXX_NoUnkeyedLiteral struct{} `json:"-"` 335 XXX_unrecognized []byte `json:"-"` 336 XXX_sizecache int32 `json:"-"` 337} 338 339func (m *ThresholdRule) Reset() { *m = ThresholdRule{} } 340func (m *ThresholdRule) String() string { return proto.CompactTextString(m) } 341func (*ThresholdRule) ProtoMessage() {} 342func (*ThresholdRule) Descriptor() ([]byte, []int) { 343 return fileDescriptor_1b88e381b47dbc69, []int{3} 344} 345 346func (m *ThresholdRule) XXX_Unmarshal(b []byte) error { 347 return xxx_messageInfo_ThresholdRule.Unmarshal(m, b) 348} 349func (m *ThresholdRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 350 return xxx_messageInfo_ThresholdRule.Marshal(b, m, deterministic) 351} 352func (m *ThresholdRule) XXX_Merge(src proto.Message) { 353 xxx_messageInfo_ThresholdRule.Merge(m, src) 354} 355func (m *ThresholdRule) XXX_Size() int { 356 return xxx_messageInfo_ThresholdRule.Size(m) 357} 358func (m *ThresholdRule) XXX_DiscardUnknown() { 359 xxx_messageInfo_ThresholdRule.DiscardUnknown(m) 360} 361 362var xxx_messageInfo_ThresholdRule proto.InternalMessageInfo 363 364func (m *ThresholdRule) GetThresholdPercent() float64 { 365 if m != nil { 366 return m.ThresholdPercent 367 } 368 return 0 369} 370 371func (m *ThresholdRule) GetSpendBasis() ThresholdRule_Basis { 372 if m != nil { 373 return m.SpendBasis 374 } 375 return ThresholdRule_BASIS_UNSPECIFIED 376} 377 378// AllUpdatesRule defines notifications that are sent on every update to the 379// billing account's spend, regardless of the thresholds defined using 380// threshold rules. 381type AllUpdatesRule struct { 382 // Required. The name of the Cloud Pub/Sub topic where budget related messages will be 383 // published, in the form `projects/{project_id}/topics/{topic_id}`. Updates 384 // are sent at regular intervals to the topic. 385 // The topic needs to be created before the budget is created; see 386 // https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications 387 // for more details. 388 // Caller is expected to have 389 // `pubsub.topics.setIamPolicy` permission on the topic when it's set for a 390 // budget, otherwise, the API call will fail with PERMISSION_DENIED. See 391 // https://cloud.google.com/pubsub/docs/access-control for more details on 392 // Pub/Sub roles and permissions. 393 PubsubTopic string `protobuf:"bytes,1,opt,name=pubsub_topic,json=pubsubTopic,proto3" json:"pubsub_topic,omitempty"` 394 // Required. The schema version of the notification. 395 // Only "1.0" is accepted. It represents the JSON schema as defined in 396 // https://cloud.google.com/billing/docs/how-to/budgets#notification_format 397 SchemaVersion string `protobuf:"bytes,2,opt,name=schema_version,json=schemaVersion,proto3" json:"schema_version,omitempty"` 398 XXX_NoUnkeyedLiteral struct{} `json:"-"` 399 XXX_unrecognized []byte `json:"-"` 400 XXX_sizecache int32 `json:"-"` 401} 402 403func (m *AllUpdatesRule) Reset() { *m = AllUpdatesRule{} } 404func (m *AllUpdatesRule) String() string { return proto.CompactTextString(m) } 405func (*AllUpdatesRule) ProtoMessage() {} 406func (*AllUpdatesRule) Descriptor() ([]byte, []int) { 407 return fileDescriptor_1b88e381b47dbc69, []int{4} 408} 409 410func (m *AllUpdatesRule) XXX_Unmarshal(b []byte) error { 411 return xxx_messageInfo_AllUpdatesRule.Unmarshal(m, b) 412} 413func (m *AllUpdatesRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 414 return xxx_messageInfo_AllUpdatesRule.Marshal(b, m, deterministic) 415} 416func (m *AllUpdatesRule) XXX_Merge(src proto.Message) { 417 xxx_messageInfo_AllUpdatesRule.Merge(m, src) 418} 419func (m *AllUpdatesRule) XXX_Size() int { 420 return xxx_messageInfo_AllUpdatesRule.Size(m) 421} 422func (m *AllUpdatesRule) XXX_DiscardUnknown() { 423 xxx_messageInfo_AllUpdatesRule.DiscardUnknown(m) 424} 425 426var xxx_messageInfo_AllUpdatesRule proto.InternalMessageInfo 427 428func (m *AllUpdatesRule) GetPubsubTopic() string { 429 if m != nil { 430 return m.PubsubTopic 431 } 432 return "" 433} 434 435func (m *AllUpdatesRule) GetSchemaVersion() string { 436 if m != nil { 437 return m.SchemaVersion 438 } 439 return "" 440} 441 442// A filter for a budget, limiting the scope of the cost to calculate. 443type Filter struct { 444 // Optional. A set of projects of the form `projects/{project}`, 445 // specifying that usage from only this set of projects should be 446 // included in the budget. If omitted, the report will include all usage for 447 // the billing account, regardless of which project the usage occurred on. 448 // Only zero or one project can be specified currently. 449 Projects []string `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"` 450 // Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`. 451 CreditTypesTreatment Filter_CreditTypesTreatment `protobuf:"varint,4,opt,name=credit_types_treatment,json=creditTypesTreatment,proto3,enum=google.cloud.billing.budgets.v1beta1.Filter_CreditTypesTreatment" json:"credit_types_treatment,omitempty"` 452 // Optional. A set of services of the form `services/{service_id}`, 453 // specifying that usage from only this set of services should be 454 // included in the budget. If omitted, the report will include usage for 455 // all the services. 456 // The service names are available through the Catalog API: 457 // https://cloud.google.com/billing/v1/how-tos/catalog-api. 458 Services []string `protobuf:"bytes,3,rep,name=services,proto3" json:"services,omitempty"` 459 XXX_NoUnkeyedLiteral struct{} `json:"-"` 460 XXX_unrecognized []byte `json:"-"` 461 XXX_sizecache int32 `json:"-"` 462} 463 464func (m *Filter) Reset() { *m = Filter{} } 465func (m *Filter) String() string { return proto.CompactTextString(m) } 466func (*Filter) ProtoMessage() {} 467func (*Filter) Descriptor() ([]byte, []int) { 468 return fileDescriptor_1b88e381b47dbc69, []int{5} 469} 470 471func (m *Filter) XXX_Unmarshal(b []byte) error { 472 return xxx_messageInfo_Filter.Unmarshal(m, b) 473} 474func (m *Filter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { 475 return xxx_messageInfo_Filter.Marshal(b, m, deterministic) 476} 477func (m *Filter) XXX_Merge(src proto.Message) { 478 xxx_messageInfo_Filter.Merge(m, src) 479} 480func (m *Filter) XXX_Size() int { 481 return xxx_messageInfo_Filter.Size(m) 482} 483func (m *Filter) XXX_DiscardUnknown() { 484 xxx_messageInfo_Filter.DiscardUnknown(m) 485} 486 487var xxx_messageInfo_Filter proto.InternalMessageInfo 488 489func (m *Filter) GetProjects() []string { 490 if m != nil { 491 return m.Projects 492 } 493 return nil 494} 495 496func (m *Filter) GetCreditTypesTreatment() Filter_CreditTypesTreatment { 497 if m != nil { 498 return m.CreditTypesTreatment 499 } 500 return Filter_CREDIT_TYPES_TREATMENT_UNSPECIFIED 501} 502 503func (m *Filter) GetServices() []string { 504 if m != nil { 505 return m.Services 506 } 507 return nil 508} 509 510func init() { 511 proto.RegisterEnum("google.cloud.billing.budgets.v1beta1.ThresholdRule_Basis", ThresholdRule_Basis_name, ThresholdRule_Basis_value) 512 proto.RegisterEnum("google.cloud.billing.budgets.v1beta1.Filter_CreditTypesTreatment", Filter_CreditTypesTreatment_name, Filter_CreditTypesTreatment_value) 513 proto.RegisterType((*Budget)(nil), "google.cloud.billing.budgets.v1beta1.Budget") 514 proto.RegisterType((*BudgetAmount)(nil), "google.cloud.billing.budgets.v1beta1.BudgetAmount") 515 proto.RegisterType((*LastPeriodAmount)(nil), "google.cloud.billing.budgets.v1beta1.LastPeriodAmount") 516 proto.RegisterType((*ThresholdRule)(nil), "google.cloud.billing.budgets.v1beta1.ThresholdRule") 517 proto.RegisterType((*AllUpdatesRule)(nil), "google.cloud.billing.budgets.v1beta1.AllUpdatesRule") 518 proto.RegisterType((*Filter)(nil), "google.cloud.billing.budgets.v1beta1.Filter") 519} 520 521func init() { 522 proto.RegisterFile("google/cloud/billing/budgets/v1beta1/budget_model.proto", fileDescriptor_1b88e381b47dbc69) 523} 524 525var fileDescriptor_1b88e381b47dbc69 = []byte{ 526 // 811 bytes of a gzipped FileDescriptorProto 527 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xd1, 0x6e, 0xe3, 0x44, 528 0x14, 0xad, 0x93, 0x6e, 0x80, 0x49, 0x9b, 0xba, 0x43, 0xa1, 0x61, 0x5f, 0xb6, 0x58, 0xab, 0x55, 529 0x85, 0x90, 0xcd, 0x66, 0x11, 0x08, 0x78, 0x40, 0x4e, 0xe2, 0xb2, 0x11, 0xdd, 0x6c, 0xe4, 0xb8, 530 0x2b, 0x58, 0x09, 0x8d, 0x26, 0xf6, 0xad, 0x3b, 0x68, 0xe2, 0xb1, 0x3c, 0xe3, 0x4a, 0xd5, 0xb2, 531 0x9f, 0xc4, 0x0f, 0xf0, 0x05, 0x7c, 0x06, 0xcf, 0xf0, 0x13, 0xc8, 0x33, 0x93, 0x34, 0x5d, 0x56, 532 0x28, 0xf0, 0x66, 0x9f, 0x73, 0xcf, 0xb9, 0x73, 0xe7, 0x5e, 0x5f, 0xa3, 0x2f, 0x73, 0x21, 0x72, 533 0x0e, 0x41, 0xca, 0x45, 0x9d, 0x05, 0x0b, 0xc6, 0x39, 0x2b, 0xf2, 0x60, 0x51, 0x67, 0x39, 0x28, 534 0x19, 0x5c, 0x3f, 0x5e, 0x80, 0xa2, 0x8f, 0xed, 0x3b, 0x59, 0x8a, 0x0c, 0xb8, 0x5f, 0x56, 0x42, 535 0x09, 0xfc, 0xd0, 0x08, 0x7d, 0x2d, 0xf4, 0xad, 0xd0, 0xb7, 0x42, 0xdf, 0x0a, 0xef, 0x3f, 0xb0, 536 0xf6, 0xb4, 0x64, 0xc1, 0x25, 0x03, 0x9e, 0x91, 0x05, 0x5c, 0xd1, 0x6b, 0x26, 0x2a, 0x63, 0x73, 537 0xff, 0xa3, 0x8d, 0x80, 0x0a, 0xa4, 0xa8, 0xab, 0x14, 0x2c, 0x75, 0x6c, 0x29, 0x75, 0x53, 0x42, 538 0xb0, 0x14, 0x05, 0xdc, 0x18, 0xc2, 0xfb, 0x75, 0x17, 0x75, 0x86, 0x3a, 0x11, 0x3e, 0x46, 0xbb, 539 0x05, 0x5d, 0x42, 0xdf, 0x39, 0x71, 0x4e, 0xdf, 0x1b, 0xb6, 0xff, 0x08, 0xdb, 0xb1, 0x06, 0xf0, 540 0xc7, 0x68, 0x2f, 0x63, 0xb2, 0xe4, 0xf4, 0x86, 0xe8, 0x80, 0x56, 0x13, 0x10, 0x77, 0x2d, 0x36, 541 0x6d, 0x42, 0x5e, 0xa0, 0x7d, 0x5b, 0xd7, 0x25, 0xe3, 0x0a, 0xaa, 0x7e, 0xfb, 0xc4, 0x39, 0xed, 542 0x0e, 0x3e, 0xf5, 0xb7, 0xa9, 0xcc, 0x3f, 0xd3, 0x9a, 0x26, 0xa5, 0x13, 0xef, 0x19, 0xd2, 0x40, 543 0xf8, 0x39, 0xea, 0xd0, 0xa5, 0xa8, 0x0b, 0xd5, 0xdf, 0xd5, 0x86, 0x83, 0xed, 0x0c, 0x4d, 0x45, 544 0xa1, 0x56, 0x36, 0xb6, 0xad, 0xd8, 0xda, 0x60, 0x8a, 0x0e, 0xd4, 0x55, 0x05, 0xf2, 0x4a, 0xf0, 545 0x8c, 0x54, 0x35, 0x07, 0xd9, 0xbf, 0x77, 0xd2, 0x3e, 0xed, 0x0e, 0x9e, 0x6c, 0xe7, 0x9c, 0xac, 546 0xc4, 0x71, 0xcd, 0xc1, 0x9c, 0xb8, 0xa7, 0x36, 0x31, 0x89, 0x53, 0xe4, 0x52, 0xce, 0x49, 0x5d, 547 0x66, 0x54, 0x81, 0xd4, 0x49, 0xfa, 0x1d, 0x7d, 0xfa, 0xcf, 0xb7, 0xcb, 0x11, 0x72, 0x7e, 0x61, 548 0xc4, 0x1b, 0x49, 0xe8, 0x1d, 0xb0, 0x69, 0x16, 0x28, 0x9a, 0xf7, 0xdf, 0x59, 0x35, 0xcb, 0x89, 549 0x35, 0xf0, 0xf5, 0x4f, 0x7f, 0x86, 0x2f, 0xd1, 0x43, 0x6b, 0xbd, 0x72, 0x36, 0x69, 0x69, 0xc9, 550 0xa4, 0x9f, 0x8a, 0x65, 0x60, 0x1b, 0x3e, 0xb0, 0x51, 0x61, 0x9a, 0x36, 0x77, 0x23, 0x83, 0x57, 551 0x16, 0x20, 0xd4, 0x20, 0xaf, 0xd7, 0xc3, 0xfb, 0xca, 0x3c, 0xbc, 0xf6, 0x7e, 0x77, 0xd0, 0xde, 552 0xe6, 0xed, 0xe2, 0x6f, 0x91, 0x2b, 0x4b, 0x48, 0xd9, 0x25, 0x83, 0x8c, 0xd8, 0x5e, 0x39, 0xba, 553 0x5a, 0xbc, 0xaa, 0xb6, 0x19, 0x3a, 0xff, 0x59, 0x33, 0x74, 0x4f, 0x77, 0xe2, 0x83, 0x75, 0xb4, 554 0x35, 0xb8, 0x44, 0x98, 0x53, 0xa9, 0x48, 0x09, 0x15, 0x13, 0x6b, 0x8b, 0x96, 0xb6, 0xf8, 0x62, 555 0xbb, 0x0b, 0x3b, 0xa7, 0x52, 0xcd, 0xb4, 0xdc, 0x78, 0x3e, 0xdd, 0x89, 0x5d, 0xfe, 0x06, 0x36, 556 0x3c, 0x58, 0x8f, 0xa8, 0x49, 0xe1, 0x61, 0xe4, 0xbe, 0x29, 0xf4, 0xfe, 0x72, 0xd0, 0xfe, 0x9d, 557 0x16, 0xe3, 0xcf, 0xd0, 0xe1, 0xed, 0xc0, 0x94, 0x50, 0xa5, 0x60, 0x0b, 0x74, 0xcc, 0x60, 0xb9, 558 0x6b, 0x76, 0x66, 0x48, 0x4c, 0x50, 0x57, 0x96, 0x50, 0x64, 0x64, 0x41, 0x25, 0x93, 0xba, 0x92, 559 0xde, 0xe0, 0xab, 0xff, 0x31, 0x5e, 0xfe, 0xb0, 0x31, 0x30, 0xcd, 0x45, 0xda, 0x52, 0x03, 0xde, 560 0x77, 0xe8, 0x9e, 0x7e, 0xc0, 0x1f, 0xa0, 0xc3, 0x61, 0x38, 0x9f, 0xcc, 0xc9, 0xc5, 0x74, 0x3e, 561 0x8b, 0x46, 0x93, 0xb3, 0x49, 0x34, 0x76, 0x77, 0xf0, 0x21, 0xda, 0x1f, 0x5d, 0xc4, 0x71, 0x34, 562 0x4d, 0xc8, 0x7c, 0x16, 0x4d, 0xc7, 0xae, 0x83, 0x8f, 0x90, 0x7b, 0xf6, 0x3c, 0x8e, 0x46, 0xe1, 563 0x3c, 0x89, 0xc6, 0x16, 0x6d, 0x79, 0x19, 0xea, 0xdd, 0x9d, 0x35, 0xfc, 0x08, 0xed, 0x95, 0xf5, 564 0x42, 0xd6, 0x0b, 0xa2, 0x44, 0xc9, 0xd2, 0xdb, 0x5d, 0xd0, 0x8a, 0xbb, 0x86, 0x48, 0x1a, 0x1c, 565 0x7f, 0x82, 0x7a, 0x32, 0xbd, 0x82, 0x25, 0x25, 0xd7, 0x50, 0x49, 0x26, 0x0a, 0xb3, 0x14, 0x4c, 566 0xe4, 0xbe, 0xa1, 0x5e, 0x18, 0xc6, 0xfb, 0xad, 0x85, 0x3a, 0xf6, 0x73, 0x7e, 0x80, 0xde, 0x2d, 567 0x2b, 0xf1, 0x33, 0xa4, 0x4a, 0xf6, 0x9d, 0x93, 0xf6, 0x6a, 0x72, 0xd7, 0x20, 0xfe, 0x05, 0x7d, 568 0x98, 0x56, 0x90, 0x31, 0x45, 0x9a, 0xa1, 0x91, 0x44, 0x55, 0x40, 0xd5, 0x12, 0xec, 0xf7, 0xdf, 569 0x1b, 0x84, 0xff, 0x65, 0xa1, 0xf8, 0x23, 0x6d, 0x95, 0x34, 0x4e, 0xc9, 0xca, 0xc8, 0x64, 0x3c, 570 0x4a, 0xdf, 0x42, 0x35, 0xc7, 0x93, 0x50, 0x5d, 0xb3, 0x14, 0x64, 0xbf, 0xbd, 0x71, 0xbc, 0x15, 571 0xe8, 0x95, 0xe8, 0xe8, 0x6d, 0x9e, 0xf8, 0x11, 0xf2, 0x46, 0x71, 0x34, 0x9e, 0x24, 0x24, 0xf9, 572 0x71, 0x16, 0xcd, 0x49, 0x12, 0x47, 0x61, 0xf2, 0xac, 0x69, 0xc0, 0xdd, 0xce, 0x1c, 0xa3, 0xf7, 573 0x27, 0xd3, 0xd1, 0xf9, 0xc5, 0x38, 0x22, 0xe1, 0xf9, 0x39, 0x31, 0x9a, 0xb9, 0xeb, 0x34, 0x44, 574 0xf4, 0xc3, 0x3f, 0x89, 0xd6, 0xf0, 0x06, 0x9d, 0xa6, 0x62, 0xb9, 0x55, 0xd5, 0x33, 0xe7, 0xe5, 575 0xf7, 0x36, 0x2e, 0x17, 0x9c, 0x16, 0xb9, 0x2f, 0xaa, 0x3c, 0xc8, 0xa1, 0xd0, 0x9b, 0x3e, 0xb8, 576 0xdd, 0x01, 0xff, 0xfe, 0x83, 0xfa, 0xc6, 0xbe, 0x2f, 0x3a, 0x5a, 0xf7, 0xe4, 0xef, 0x00, 0x00, 577 0x00, 0xff, 0xff, 0x43, 0x42, 0x54, 0x09, 0xd7, 0x06, 0x00, 0x00, 578} 579