1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package mq 4 5import ( 6 "context" 7 "fmt" 8 "github.com/aws/aws-sdk-go-v2/service/mq/types" 9 smithy "github.com/aws/smithy-go" 10 "github.com/aws/smithy-go/middleware" 11) 12 13type validateOpCreateBroker struct { 14} 15 16func (*validateOpCreateBroker) ID() string { 17 return "OperationInputValidation" 18} 19 20func (m *validateOpCreateBroker) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 21 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 22) { 23 input, ok := in.Parameters.(*CreateBrokerInput) 24 if !ok { 25 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 26 } 27 if err := validateOpCreateBrokerInput(input); err != nil { 28 return out, metadata, err 29 } 30 return next.HandleInitialize(ctx, in) 31} 32 33type validateOpCreateTags struct { 34} 35 36func (*validateOpCreateTags) ID() string { 37 return "OperationInputValidation" 38} 39 40func (m *validateOpCreateTags) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 41 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 42) { 43 input, ok := in.Parameters.(*CreateTagsInput) 44 if !ok { 45 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 46 } 47 if err := validateOpCreateTagsInput(input); err != nil { 48 return out, metadata, err 49 } 50 return next.HandleInitialize(ctx, in) 51} 52 53type validateOpCreateUser struct { 54} 55 56func (*validateOpCreateUser) ID() string { 57 return "OperationInputValidation" 58} 59 60func (m *validateOpCreateUser) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 61 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 62) { 63 input, ok := in.Parameters.(*CreateUserInput) 64 if !ok { 65 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 66 } 67 if err := validateOpCreateUserInput(input); err != nil { 68 return out, metadata, err 69 } 70 return next.HandleInitialize(ctx, in) 71} 72 73type validateOpDeleteBroker struct { 74} 75 76func (*validateOpDeleteBroker) ID() string { 77 return "OperationInputValidation" 78} 79 80func (m *validateOpDeleteBroker) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 81 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 82) { 83 input, ok := in.Parameters.(*DeleteBrokerInput) 84 if !ok { 85 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 86 } 87 if err := validateOpDeleteBrokerInput(input); err != nil { 88 return out, metadata, err 89 } 90 return next.HandleInitialize(ctx, in) 91} 92 93type validateOpDeleteTags struct { 94} 95 96func (*validateOpDeleteTags) ID() string { 97 return "OperationInputValidation" 98} 99 100func (m *validateOpDeleteTags) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 101 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 102) { 103 input, ok := in.Parameters.(*DeleteTagsInput) 104 if !ok { 105 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 106 } 107 if err := validateOpDeleteTagsInput(input); err != nil { 108 return out, metadata, err 109 } 110 return next.HandleInitialize(ctx, in) 111} 112 113type validateOpDeleteUser struct { 114} 115 116func (*validateOpDeleteUser) ID() string { 117 return "OperationInputValidation" 118} 119 120func (m *validateOpDeleteUser) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 121 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 122) { 123 input, ok := in.Parameters.(*DeleteUserInput) 124 if !ok { 125 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 126 } 127 if err := validateOpDeleteUserInput(input); err != nil { 128 return out, metadata, err 129 } 130 return next.HandleInitialize(ctx, in) 131} 132 133type validateOpDescribeBroker struct { 134} 135 136func (*validateOpDescribeBroker) ID() string { 137 return "OperationInputValidation" 138} 139 140func (m *validateOpDescribeBroker) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 141 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 142) { 143 input, ok := in.Parameters.(*DescribeBrokerInput) 144 if !ok { 145 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 146 } 147 if err := validateOpDescribeBrokerInput(input); err != nil { 148 return out, metadata, err 149 } 150 return next.HandleInitialize(ctx, in) 151} 152 153type validateOpDescribeConfiguration struct { 154} 155 156func (*validateOpDescribeConfiguration) ID() string { 157 return "OperationInputValidation" 158} 159 160func (m *validateOpDescribeConfiguration) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 161 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 162) { 163 input, ok := in.Parameters.(*DescribeConfigurationInput) 164 if !ok { 165 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 166 } 167 if err := validateOpDescribeConfigurationInput(input); err != nil { 168 return out, metadata, err 169 } 170 return next.HandleInitialize(ctx, in) 171} 172 173type validateOpDescribeConfigurationRevision struct { 174} 175 176func (*validateOpDescribeConfigurationRevision) ID() string { 177 return "OperationInputValidation" 178} 179 180func (m *validateOpDescribeConfigurationRevision) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 181 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 182) { 183 input, ok := in.Parameters.(*DescribeConfigurationRevisionInput) 184 if !ok { 185 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 186 } 187 if err := validateOpDescribeConfigurationRevisionInput(input); err != nil { 188 return out, metadata, err 189 } 190 return next.HandleInitialize(ctx, in) 191} 192 193type validateOpDescribeUser struct { 194} 195 196func (*validateOpDescribeUser) ID() string { 197 return "OperationInputValidation" 198} 199 200func (m *validateOpDescribeUser) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 201 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 202) { 203 input, ok := in.Parameters.(*DescribeUserInput) 204 if !ok { 205 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 206 } 207 if err := validateOpDescribeUserInput(input); err != nil { 208 return out, metadata, err 209 } 210 return next.HandleInitialize(ctx, in) 211} 212 213type validateOpListConfigurationRevisions struct { 214} 215 216func (*validateOpListConfigurationRevisions) ID() string { 217 return "OperationInputValidation" 218} 219 220func (m *validateOpListConfigurationRevisions) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 221 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 222) { 223 input, ok := in.Parameters.(*ListConfigurationRevisionsInput) 224 if !ok { 225 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 226 } 227 if err := validateOpListConfigurationRevisionsInput(input); err != nil { 228 return out, metadata, err 229 } 230 return next.HandleInitialize(ctx, in) 231} 232 233type validateOpListTags struct { 234} 235 236func (*validateOpListTags) ID() string { 237 return "OperationInputValidation" 238} 239 240func (m *validateOpListTags) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 241 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 242) { 243 input, ok := in.Parameters.(*ListTagsInput) 244 if !ok { 245 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 246 } 247 if err := validateOpListTagsInput(input); err != nil { 248 return out, metadata, err 249 } 250 return next.HandleInitialize(ctx, in) 251} 252 253type validateOpListUsers struct { 254} 255 256func (*validateOpListUsers) ID() string { 257 return "OperationInputValidation" 258} 259 260func (m *validateOpListUsers) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 261 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 262) { 263 input, ok := in.Parameters.(*ListUsersInput) 264 if !ok { 265 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 266 } 267 if err := validateOpListUsersInput(input); err != nil { 268 return out, metadata, err 269 } 270 return next.HandleInitialize(ctx, in) 271} 272 273type validateOpRebootBroker struct { 274} 275 276func (*validateOpRebootBroker) ID() string { 277 return "OperationInputValidation" 278} 279 280func (m *validateOpRebootBroker) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 281 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 282) { 283 input, ok := in.Parameters.(*RebootBrokerInput) 284 if !ok { 285 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 286 } 287 if err := validateOpRebootBrokerInput(input); err != nil { 288 return out, metadata, err 289 } 290 return next.HandleInitialize(ctx, in) 291} 292 293type validateOpUpdateBroker struct { 294} 295 296func (*validateOpUpdateBroker) ID() string { 297 return "OperationInputValidation" 298} 299 300func (m *validateOpUpdateBroker) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 301 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 302) { 303 input, ok := in.Parameters.(*UpdateBrokerInput) 304 if !ok { 305 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 306 } 307 if err := validateOpUpdateBrokerInput(input); err != nil { 308 return out, metadata, err 309 } 310 return next.HandleInitialize(ctx, in) 311} 312 313type validateOpUpdateConfiguration struct { 314} 315 316func (*validateOpUpdateConfiguration) ID() string { 317 return "OperationInputValidation" 318} 319 320func (m *validateOpUpdateConfiguration) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 321 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 322) { 323 input, ok := in.Parameters.(*UpdateConfigurationInput) 324 if !ok { 325 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 326 } 327 if err := validateOpUpdateConfigurationInput(input); err != nil { 328 return out, metadata, err 329 } 330 return next.HandleInitialize(ctx, in) 331} 332 333type validateOpUpdateUser struct { 334} 335 336func (*validateOpUpdateUser) ID() string { 337 return "OperationInputValidation" 338} 339 340func (m *validateOpUpdateUser) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( 341 out middleware.InitializeOutput, metadata middleware.Metadata, err error, 342) { 343 input, ok := in.Parameters.(*UpdateUserInput) 344 if !ok { 345 return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) 346 } 347 if err := validateOpUpdateUserInput(input); err != nil { 348 return out, metadata, err 349 } 350 return next.HandleInitialize(ctx, in) 351} 352 353func addOpCreateBrokerValidationMiddleware(stack *middleware.Stack) error { 354 return stack.Initialize.Add(&validateOpCreateBroker{}, middleware.After) 355} 356 357func addOpCreateTagsValidationMiddleware(stack *middleware.Stack) error { 358 return stack.Initialize.Add(&validateOpCreateTags{}, middleware.After) 359} 360 361func addOpCreateUserValidationMiddleware(stack *middleware.Stack) error { 362 return stack.Initialize.Add(&validateOpCreateUser{}, middleware.After) 363} 364 365func addOpDeleteBrokerValidationMiddleware(stack *middleware.Stack) error { 366 return stack.Initialize.Add(&validateOpDeleteBroker{}, middleware.After) 367} 368 369func addOpDeleteTagsValidationMiddleware(stack *middleware.Stack) error { 370 return stack.Initialize.Add(&validateOpDeleteTags{}, middleware.After) 371} 372 373func addOpDeleteUserValidationMiddleware(stack *middleware.Stack) error { 374 return stack.Initialize.Add(&validateOpDeleteUser{}, middleware.After) 375} 376 377func addOpDescribeBrokerValidationMiddleware(stack *middleware.Stack) error { 378 return stack.Initialize.Add(&validateOpDescribeBroker{}, middleware.After) 379} 380 381func addOpDescribeConfigurationValidationMiddleware(stack *middleware.Stack) error { 382 return stack.Initialize.Add(&validateOpDescribeConfiguration{}, middleware.After) 383} 384 385func addOpDescribeConfigurationRevisionValidationMiddleware(stack *middleware.Stack) error { 386 return stack.Initialize.Add(&validateOpDescribeConfigurationRevision{}, middleware.After) 387} 388 389func addOpDescribeUserValidationMiddleware(stack *middleware.Stack) error { 390 return stack.Initialize.Add(&validateOpDescribeUser{}, middleware.After) 391} 392 393func addOpListConfigurationRevisionsValidationMiddleware(stack *middleware.Stack) error { 394 return stack.Initialize.Add(&validateOpListConfigurationRevisions{}, middleware.After) 395} 396 397func addOpListTagsValidationMiddleware(stack *middleware.Stack) error { 398 return stack.Initialize.Add(&validateOpListTags{}, middleware.After) 399} 400 401func addOpListUsersValidationMiddleware(stack *middleware.Stack) error { 402 return stack.Initialize.Add(&validateOpListUsers{}, middleware.After) 403} 404 405func addOpRebootBrokerValidationMiddleware(stack *middleware.Stack) error { 406 return stack.Initialize.Add(&validateOpRebootBroker{}, middleware.After) 407} 408 409func addOpUpdateBrokerValidationMiddleware(stack *middleware.Stack) error { 410 return stack.Initialize.Add(&validateOpUpdateBroker{}, middleware.After) 411} 412 413func addOpUpdateConfigurationValidationMiddleware(stack *middleware.Stack) error { 414 return stack.Initialize.Add(&validateOpUpdateConfiguration{}, middleware.After) 415} 416 417func addOpUpdateUserValidationMiddleware(stack *middleware.Stack) error { 418 return stack.Initialize.Add(&validateOpUpdateUser{}, middleware.After) 419} 420 421func validateEncryptionOptions(v *types.EncryptionOptions) error { 422 if v == nil { 423 return nil 424 } 425 invalidParams := smithy.InvalidParamsError{Context: "EncryptionOptions"} 426 if invalidParams.Len() > 0 { 427 return invalidParams 428 } else { 429 return nil 430 } 431} 432 433func validateOpCreateBrokerInput(v *CreateBrokerInput) error { 434 if v == nil { 435 return nil 436 } 437 invalidParams := smithy.InvalidParamsError{Context: "CreateBrokerInput"} 438 if v.EncryptionOptions != nil { 439 if err := validateEncryptionOptions(v.EncryptionOptions); err != nil { 440 invalidParams.AddNested("EncryptionOptions", err.(smithy.InvalidParamsError)) 441 } 442 } 443 if invalidParams.Len() > 0 { 444 return invalidParams 445 } else { 446 return nil 447 } 448} 449 450func validateOpCreateTagsInput(v *CreateTagsInput) error { 451 if v == nil { 452 return nil 453 } 454 invalidParams := smithy.InvalidParamsError{Context: "CreateTagsInput"} 455 if v.ResourceArn == nil { 456 invalidParams.Add(smithy.NewErrParamRequired("ResourceArn")) 457 } 458 if invalidParams.Len() > 0 { 459 return invalidParams 460 } else { 461 return nil 462 } 463} 464 465func validateOpCreateUserInput(v *CreateUserInput) error { 466 if v == nil { 467 return nil 468 } 469 invalidParams := smithy.InvalidParamsError{Context: "CreateUserInput"} 470 if v.BrokerId == nil { 471 invalidParams.Add(smithy.NewErrParamRequired("BrokerId")) 472 } 473 if v.Username == nil { 474 invalidParams.Add(smithy.NewErrParamRequired("Username")) 475 } 476 if invalidParams.Len() > 0 { 477 return invalidParams 478 } else { 479 return nil 480 } 481} 482 483func validateOpDeleteBrokerInput(v *DeleteBrokerInput) error { 484 if v == nil { 485 return nil 486 } 487 invalidParams := smithy.InvalidParamsError{Context: "DeleteBrokerInput"} 488 if v.BrokerId == nil { 489 invalidParams.Add(smithy.NewErrParamRequired("BrokerId")) 490 } 491 if invalidParams.Len() > 0 { 492 return invalidParams 493 } else { 494 return nil 495 } 496} 497 498func validateOpDeleteTagsInput(v *DeleteTagsInput) error { 499 if v == nil { 500 return nil 501 } 502 invalidParams := smithy.InvalidParamsError{Context: "DeleteTagsInput"} 503 if v.ResourceArn == nil { 504 invalidParams.Add(smithy.NewErrParamRequired("ResourceArn")) 505 } 506 if v.TagKeys == nil { 507 invalidParams.Add(smithy.NewErrParamRequired("TagKeys")) 508 } 509 if invalidParams.Len() > 0 { 510 return invalidParams 511 } else { 512 return nil 513 } 514} 515 516func validateOpDeleteUserInput(v *DeleteUserInput) error { 517 if v == nil { 518 return nil 519 } 520 invalidParams := smithy.InvalidParamsError{Context: "DeleteUserInput"} 521 if v.BrokerId == nil { 522 invalidParams.Add(smithy.NewErrParamRequired("BrokerId")) 523 } 524 if v.Username == nil { 525 invalidParams.Add(smithy.NewErrParamRequired("Username")) 526 } 527 if invalidParams.Len() > 0 { 528 return invalidParams 529 } else { 530 return nil 531 } 532} 533 534func validateOpDescribeBrokerInput(v *DescribeBrokerInput) error { 535 if v == nil { 536 return nil 537 } 538 invalidParams := smithy.InvalidParamsError{Context: "DescribeBrokerInput"} 539 if v.BrokerId == nil { 540 invalidParams.Add(smithy.NewErrParamRequired("BrokerId")) 541 } 542 if invalidParams.Len() > 0 { 543 return invalidParams 544 } else { 545 return nil 546 } 547} 548 549func validateOpDescribeConfigurationInput(v *DescribeConfigurationInput) error { 550 if v == nil { 551 return nil 552 } 553 invalidParams := smithy.InvalidParamsError{Context: "DescribeConfigurationInput"} 554 if v.ConfigurationId == nil { 555 invalidParams.Add(smithy.NewErrParamRequired("ConfigurationId")) 556 } 557 if invalidParams.Len() > 0 { 558 return invalidParams 559 } else { 560 return nil 561 } 562} 563 564func validateOpDescribeConfigurationRevisionInput(v *DescribeConfigurationRevisionInput) error { 565 if v == nil { 566 return nil 567 } 568 invalidParams := smithy.InvalidParamsError{Context: "DescribeConfigurationRevisionInput"} 569 if v.ConfigurationId == nil { 570 invalidParams.Add(smithy.NewErrParamRequired("ConfigurationId")) 571 } 572 if v.ConfigurationRevision == nil { 573 invalidParams.Add(smithy.NewErrParamRequired("ConfigurationRevision")) 574 } 575 if invalidParams.Len() > 0 { 576 return invalidParams 577 } else { 578 return nil 579 } 580} 581 582func validateOpDescribeUserInput(v *DescribeUserInput) error { 583 if v == nil { 584 return nil 585 } 586 invalidParams := smithy.InvalidParamsError{Context: "DescribeUserInput"} 587 if v.BrokerId == nil { 588 invalidParams.Add(smithy.NewErrParamRequired("BrokerId")) 589 } 590 if v.Username == nil { 591 invalidParams.Add(smithy.NewErrParamRequired("Username")) 592 } 593 if invalidParams.Len() > 0 { 594 return invalidParams 595 } else { 596 return nil 597 } 598} 599 600func validateOpListConfigurationRevisionsInput(v *ListConfigurationRevisionsInput) error { 601 if v == nil { 602 return nil 603 } 604 invalidParams := smithy.InvalidParamsError{Context: "ListConfigurationRevisionsInput"} 605 if v.ConfigurationId == nil { 606 invalidParams.Add(smithy.NewErrParamRequired("ConfigurationId")) 607 } 608 if invalidParams.Len() > 0 { 609 return invalidParams 610 } else { 611 return nil 612 } 613} 614 615func validateOpListTagsInput(v *ListTagsInput) error { 616 if v == nil { 617 return nil 618 } 619 invalidParams := smithy.InvalidParamsError{Context: "ListTagsInput"} 620 if v.ResourceArn == nil { 621 invalidParams.Add(smithy.NewErrParamRequired("ResourceArn")) 622 } 623 if invalidParams.Len() > 0 { 624 return invalidParams 625 } else { 626 return nil 627 } 628} 629 630func validateOpListUsersInput(v *ListUsersInput) error { 631 if v == nil { 632 return nil 633 } 634 invalidParams := smithy.InvalidParamsError{Context: "ListUsersInput"} 635 if v.BrokerId == nil { 636 invalidParams.Add(smithy.NewErrParamRequired("BrokerId")) 637 } 638 if invalidParams.Len() > 0 { 639 return invalidParams 640 } else { 641 return nil 642 } 643} 644 645func validateOpRebootBrokerInput(v *RebootBrokerInput) error { 646 if v == nil { 647 return nil 648 } 649 invalidParams := smithy.InvalidParamsError{Context: "RebootBrokerInput"} 650 if v.BrokerId == nil { 651 invalidParams.Add(smithy.NewErrParamRequired("BrokerId")) 652 } 653 if invalidParams.Len() > 0 { 654 return invalidParams 655 } else { 656 return nil 657 } 658} 659 660func validateOpUpdateBrokerInput(v *UpdateBrokerInput) error { 661 if v == nil { 662 return nil 663 } 664 invalidParams := smithy.InvalidParamsError{Context: "UpdateBrokerInput"} 665 if v.BrokerId == nil { 666 invalidParams.Add(smithy.NewErrParamRequired("BrokerId")) 667 } 668 if invalidParams.Len() > 0 { 669 return invalidParams 670 } else { 671 return nil 672 } 673} 674 675func validateOpUpdateConfigurationInput(v *UpdateConfigurationInput) error { 676 if v == nil { 677 return nil 678 } 679 invalidParams := smithy.InvalidParamsError{Context: "UpdateConfigurationInput"} 680 if v.ConfigurationId == nil { 681 invalidParams.Add(smithy.NewErrParamRequired("ConfigurationId")) 682 } 683 if invalidParams.Len() > 0 { 684 return invalidParams 685 } else { 686 return nil 687 } 688} 689 690func validateOpUpdateUserInput(v *UpdateUserInput) error { 691 if v == nil { 692 return nil 693 } 694 invalidParams := smithy.InvalidParamsError{Context: "UpdateUserInput"} 695 if v.BrokerId == nil { 696 invalidParams.Add(smithy.NewErrParamRequired("BrokerId")) 697 } 698 if v.Username == nil { 699 invalidParams.Add(smithy.NewErrParamRequired("Username")) 700 } 701 if invalidParams.Len() > 0 { 702 return invalidParams 703 } else { 704 return nil 705 } 706} 707