aws-sdk-workspaces 1.100.0 → 1.102.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f269827e09883e48f7577a099a9e951deab489fbc7f22d1c997e09a034d0ba5
4
- data.tar.gz: 8df459540ffd7fe76e47926606e994b576533808f1c6137b95cc227d1e8f79bc
3
+ metadata.gz: 217c14f57492f2970911324b1c505712716305a0e5b235bb305461f66bda7a0e
4
+ data.tar.gz: 351bd15e7288ac26f789a67523846c7c14efa7304a7122b59af086eee3f41363
5
5
  SHA512:
6
- metadata.gz: 6ce0757d8f4171e884a0d21db44a0f4c723a71cd8fcf952e5352fa666c20875103fc535ae62dcc1499608024574a859e9a206ad650d3fbcd5a0905e91956ffd7
7
- data.tar.gz: f9acffb759e37d2c8e4ae6c79c0a0644e5244cf3fef074e93f195b7420f4aa26ffcf4b97454ff0af5c5d512032c92941a4274273da5090dbe8a3e69cd6ca9f88
6
+ metadata.gz: 9146ba85a9f5b7965118cdf47b16ddb6871424c8bf9c4b757ca12d0404c7607ba22cdd8643e6a205e7dbf95e80f1f1c91bbf8ac6245d07b382d7acc4d1a86724
7
+ data.tar.gz: 75512116e8926fa31f1d8962bb9cb7d269600ff381a5993e56c0eb13a43ea151205ea6c7d98210e0fd73a1db37d141637f83da599f2e864331f5108db44b7955
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.102.0 (2024-04-25)
5
+ ------------------
6
+
7
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
8
+
9
+ 1.101.0 (2024-04-18)
10
+ ------------------
11
+
12
+ * Feature - Adds new APIs for managing and sharing WorkSpaces BYOL configuration across accounts.
13
+
4
14
  1.100.0 (2024-03-07)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.100.0
1
+ 1.102.0
@@ -22,6 +22,7 @@ require 'aws-sdk-core/plugins/endpoint_pattern.rb'
22
22
  require 'aws-sdk-core/plugins/response_paging.rb'
23
23
  require 'aws-sdk-core/plugins/stub_responses.rb'
24
24
  require 'aws-sdk-core/plugins/idempotency_token.rb'
25
+ require 'aws-sdk-core/plugins/invocation_id.rb'
25
26
  require 'aws-sdk-core/plugins/jsonvalue_converter.rb'
26
27
  require 'aws-sdk-core/plugins/client_metrics_plugin.rb'
27
28
  require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb'
@@ -72,6 +73,7 @@ module Aws::WorkSpaces
72
73
  add_plugin(Aws::Plugins::ResponsePaging)
73
74
  add_plugin(Aws::Plugins::StubResponses)
74
75
  add_plugin(Aws::Plugins::IdempotencyToken)
76
+ add_plugin(Aws::Plugins::InvocationId)
75
77
  add_plugin(Aws::Plugins::JsonvalueConverter)
76
78
  add_plugin(Aws::Plugins::ClientMetricsPlugin)
77
79
  add_plugin(Aws::Plugins::ClientMetricsSendPlugin)
@@ -196,10 +198,17 @@ module Aws::WorkSpaces
196
198
  # When set to 'true' the request body will not be compressed
197
199
  # for supported operations.
198
200
  #
199
- # @option options [String] :endpoint
200
- # The client endpoint is normally constructed from the `:region`
201
- # option. You should only configure an `:endpoint` when connecting
202
- # to test or custom endpoints. This should be a valid HTTP(S) URI.
201
+ # @option options [String, URI::HTTPS, URI::HTTP] :endpoint
202
+ # Normally you should not configure the `:endpoint` option
203
+ # directly. This is normally constructed from the `:region`
204
+ # option. Configuring `:endpoint` is normally reserved for
205
+ # connecting to test or custom endpoints. The endpoint should
206
+ # be a URI formatted like:
207
+ #
208
+ # 'http://example.com'
209
+ # 'https://example.com'
210
+ # 'http://example.com:123'
211
+ #
203
212
  #
204
213
  # @option options [Integer] :endpoint_cache_max_entries (1000)
205
214
  # Used for the maximum size limit of the LRU cache storing endpoints data
@@ -347,57 +356,111 @@ module Aws::WorkSpaces
347
356
  # @option options [Aws::WorkSpaces::EndpointProvider] :endpoint_provider
348
357
  # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::WorkSpaces::EndpointParameters`
349
358
  #
350
- # @option options [URI::HTTP,String] :http_proxy A proxy to send
351
- # requests through. Formatted like 'http://proxy.com:123'.
359
+ # @option options [Float] :http_continue_timeout (1)
360
+ # The number of seconds to wait for a 100-continue response before sending the
361
+ # request body. This option has no effect unless the request has "Expect"
362
+ # header set to "100-continue". Defaults to `nil` which disables this
363
+ # behaviour. This value can safely be set per request on the session.
364
+ #
365
+ # @option options [Float] :http_idle_timeout (5)
366
+ # The number of seconds a connection is allowed to sit idle before it
367
+ # is considered stale. Stale connections are closed and removed from the
368
+ # pool before making a request.
369
+ #
370
+ # @option options [Float] :http_open_timeout (15)
371
+ # The default number of seconds to wait for response data.
372
+ # This value can safely be set per-request on the session.
373
+ #
374
+ # @option options [URI::HTTP,String] :http_proxy
375
+ # A proxy to send requests through. Formatted like 'http://proxy.com:123'.
376
+ #
377
+ # @option options [Float] :http_read_timeout (60)
378
+ # The default number of seconds to wait for response data.
379
+ # This value can safely be set per-request on the session.
380
+ #
381
+ # @option options [Boolean] :http_wire_trace (false)
382
+ # When `true`, HTTP debug output will be sent to the `:logger`.
383
+ #
384
+ # @option options [Proc] :on_chunk_received
385
+ # When a Proc object is provided, it will be used as callback when each chunk
386
+ # of the response body is received. It provides three arguments: the chunk,
387
+ # the number of bytes received, and the total number of
388
+ # bytes in the response (or nil if the server did not send a `content-length`).
389
+ #
390
+ # @option options [Proc] :on_chunk_sent
391
+ # When a Proc object is provided, it will be used as callback when each chunk
392
+ # of the request body is sent. It provides three arguments: the chunk,
393
+ # the number of bytes read from the body, and the total number of
394
+ # bytes in the body.
395
+ #
396
+ # @option options [Boolean] :raise_response_errors (true)
397
+ # When `true`, response errors are raised.
398
+ #
399
+ # @option options [String] :ssl_ca_bundle
400
+ # Full path to the SSL certificate authority bundle file that should be used when
401
+ # verifying peer certificates. If you do not pass `:ssl_ca_bundle` or
402
+ # `:ssl_ca_directory` the the system default will be used if available.
403
+ #
404
+ # @option options [String] :ssl_ca_directory
405
+ # Full path of the directory that contains the unbundled SSL certificate
406
+ # authority files for verifying peer certificates. If you do
407
+ # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the system
408
+ # default will be used if available.
352
409
  #
353
- # @option options [Float] :http_open_timeout (15) The number of
354
- # seconds to wait when opening a HTTP session before raising a
355
- # `Timeout::Error`.
410
+ # @option options [String] :ssl_ca_store
411
+ # Sets the X509::Store to verify peer certificate.
356
412
  #
357
- # @option options [Float] :http_read_timeout (60) The default
358
- # number of seconds to wait for response data. This value can
359
- # safely be set per-request on the session.
413
+ # @option options [Float] :ssl_timeout
414
+ # Sets the SSL timeout in seconds
360
415
  #
361
- # @option options [Float] :http_idle_timeout (5) The number of
362
- # seconds a connection is allowed to sit idle before it is
363
- # considered stale. Stale connections are closed and removed
364
- # from the pool before making a request.
416
+ # @option options [Boolean] :ssl_verify_peer (true)
417
+ # When `true`, SSL peer certificates are verified when establishing a connection.
365
418
  #
366
- # @option options [Float] :http_continue_timeout (1) The number of
367
- # seconds to wait for a 100-continue response before sending the
368
- # request body. This option has no effect unless the request has
369
- # "Expect" header set to "100-continue". Defaults to `nil` which
370
- # disables this behaviour. This value can safely be set per
371
- # request on the session.
419
+ def initialize(*args)
420
+ super
421
+ end
422
+
423
+ # @!group API Operations
424
+
425
+ # Accepts the account link invitation.
372
426
  #
373
- # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout
374
- # in seconds.
427
+ # There's currently no unlinking capability after you accept the
428
+ # account linking invitation.
375
429
  #
376
- # @option options [Boolean] :http_wire_trace (false) When `true`,
377
- # HTTP debug output will be sent to the `:logger`.
430
+ # @option params [required, String] :link_id
431
+ # The identifier of the account link.
378
432
  #
379
- # @option options [Boolean] :ssl_verify_peer (true) When `true`,
380
- # SSL peer certificates are verified when establishing a
381
- # connection.
433
+ # @option params [String] :client_token
434
+ # A string of up to 64 ASCII characters that Amazon EFS uses to ensure
435
+ # idempotent creation.
382
436
  #
383
- # @option options [String] :ssl_ca_bundle Full path to the SSL
384
- # certificate authority bundle file that should be used when
385
- # verifying peer certificates. If you do not pass
386
- # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default
387
- # will be used if available.
437
+ # @return [Types::AcceptAccountLinkInvitationResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
388
438
  #
389
- # @option options [String] :ssl_ca_directory Full path of the
390
- # directory that contains the unbundled SSL certificate
391
- # authority files for verifying peer certificates. If you do
392
- # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the
393
- # system default will be used if available.
439
+ # * {Types::AcceptAccountLinkInvitationResult#account_link #account_link} => Types::AccountLink
394
440
  #
395
- def initialize(*args)
396
- super
441
+ # @example Request syntax with placeholder values
442
+ #
443
+ # resp = client.accept_account_link_invitation({
444
+ # link_id: "LinkId", # required
445
+ # client_token: "ClientToken",
446
+ # })
447
+ #
448
+ # @example Response structure
449
+ #
450
+ # resp.account_link.account_link_id #=> String
451
+ # resp.account_link.account_link_status #=> String, one of "LINKED", "LINKING_FAILED", "LINK_NOT_FOUND", "PENDING_ACCEPTANCE_BY_TARGET_ACCOUNT", "REJECTED"
452
+ # resp.account_link.source_account_id #=> String
453
+ # resp.account_link.target_account_id #=> String
454
+ #
455
+ # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/AcceptAccountLinkInvitation AWS API Documentation
456
+ #
457
+ # @overload accept_account_link_invitation(params = {})
458
+ # @param [Hash] params ({})
459
+ def accept_account_link_invitation(params = {}, options = {})
460
+ req = build_request(:accept_account_link_invitation, params)
461
+ req.send_request(options)
397
462
  end
398
463
 
399
- # @!group API Operations
400
-
401
464
  # Associates the specified connection alias with the specified directory
402
465
  # to enable cross-Region redirection. For more information, see [
403
466
  # Cross-Region Redirection for Amazon WorkSpaces][1].
@@ -613,6 +676,42 @@ module Aws::WorkSpaces
613
676
  req.send_request(options)
614
677
  end
615
678
 
679
+ # Creates the account link invitation.
680
+ #
681
+ # @option params [required, String] :target_account_id
682
+ # The identifier of the target account.
683
+ #
684
+ # @option params [String] :client_token
685
+ # A string of up to 64 ASCII characters that Amazon EFS uses to ensure
686
+ # idempotent creation.
687
+ #
688
+ # @return [Types::CreateAccountLinkInvitationResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
689
+ #
690
+ # * {Types::CreateAccountLinkInvitationResult#account_link #account_link} => Types::AccountLink
691
+ #
692
+ # @example Request syntax with placeholder values
693
+ #
694
+ # resp = client.create_account_link_invitation({
695
+ # target_account_id: "AwsAccount", # required
696
+ # client_token: "ClientToken",
697
+ # })
698
+ #
699
+ # @example Response structure
700
+ #
701
+ # resp.account_link.account_link_id #=> String
702
+ # resp.account_link.account_link_status #=> String, one of "LINKED", "LINKING_FAILED", "LINK_NOT_FOUND", "PENDING_ACCEPTANCE_BY_TARGET_ACCOUNT", "REJECTED"
703
+ # resp.account_link.source_account_id #=> String
704
+ # resp.account_link.target_account_id #=> String
705
+ #
706
+ # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/CreateAccountLinkInvitation AWS API Documentation
707
+ #
708
+ # @overload create_account_link_invitation(params = {})
709
+ # @param [Hash] params ({})
710
+ def create_account_link_invitation(params = {}, options = {})
711
+ req = build_request(:create_account_link_invitation, params)
712
+ req.send_request(options)
713
+ end
714
+
616
715
  # Creates a client-add-in for Amazon Connect within a directory. You can
617
716
  # create only one Amazon Connect client add-in within a directory.
618
717
  #
@@ -1210,6 +1309,42 @@ module Aws::WorkSpaces
1210
1309
  req.send_request(options)
1211
1310
  end
1212
1311
 
1312
+ # Deletes the account link invitation.
1313
+ #
1314
+ # @option params [required, String] :link_id
1315
+ # The identifier of the account link.
1316
+ #
1317
+ # @option params [String] :client_token
1318
+ # A string of up to 64 ASCII characters that Amazon EFS uses to ensure
1319
+ # idempotent creation.
1320
+ #
1321
+ # @return [Types::DeleteAccountLinkInvitationResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1322
+ #
1323
+ # * {Types::DeleteAccountLinkInvitationResult#account_link #account_link} => Types::AccountLink
1324
+ #
1325
+ # @example Request syntax with placeholder values
1326
+ #
1327
+ # resp = client.delete_account_link_invitation({
1328
+ # link_id: "LinkId", # required
1329
+ # client_token: "ClientToken",
1330
+ # })
1331
+ #
1332
+ # @example Response structure
1333
+ #
1334
+ # resp.account_link.account_link_id #=> String
1335
+ # resp.account_link.account_link_status #=> String, one of "LINKED", "LINKING_FAILED", "LINK_NOT_FOUND", "PENDING_ACCEPTANCE_BY_TARGET_ACCOUNT", "REJECTED"
1336
+ # resp.account_link.source_account_id #=> String
1337
+ # resp.account_link.target_account_id #=> String
1338
+ #
1339
+ # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DeleteAccountLinkInvitation AWS API Documentation
1340
+ #
1341
+ # @overload delete_account_link_invitation(params = {})
1342
+ # @param [Hash] params ({})
1343
+ def delete_account_link_invitation(params = {}, options = {})
1344
+ req = build_request(:delete_account_link_invitation, params)
1345
+ req.send_request(options)
1346
+ end
1347
+
1213
1348
  # Deletes customized client branding. Client branding allows you to
1214
1349
  # customize your WorkSpace's client login portal. You can tailor your
1215
1350
  # login portal company logo, the support email address, support link,
@@ -1515,11 +1650,13 @@ module Aws::WorkSpaces
1515
1650
  #
1516
1651
  # * {Types::DescribeAccountResult#dedicated_tenancy_support #dedicated_tenancy_support} => String
1517
1652
  # * {Types::DescribeAccountResult#dedicated_tenancy_management_cidr_range #dedicated_tenancy_management_cidr_range} => String
1653
+ # * {Types::DescribeAccountResult#dedicated_tenancy_account_type #dedicated_tenancy_account_type} => String
1518
1654
  #
1519
1655
  # @example Response structure
1520
1656
  #
1521
1657
  # resp.dedicated_tenancy_support #=> String, one of "ENABLED", "DISABLED"
1522
1658
  # resp.dedicated_tenancy_management_cidr_range #=> String
1659
+ # resp.dedicated_tenancy_account_type #=> String, one of "SOURCE_ACCOUNT", "TARGET_ACCOUNT"
1523
1660
  #
1524
1661
  # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/DescribeAccount AWS API Documentation
1525
1662
  #
@@ -2683,6 +2820,41 @@ module Aws::WorkSpaces
2683
2820
  req.send_request(options)
2684
2821
  end
2685
2822
 
2823
+ # Retrieves account link information.
2824
+ #
2825
+ # @option params [String] :link_id
2826
+ # The identifier of the account to link.
2827
+ #
2828
+ # @option params [String] :linked_account_id
2829
+ # The identifier of the account link
2830
+ #
2831
+ # @return [Types::GetAccountLinkResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2832
+ #
2833
+ # * {Types::GetAccountLinkResult#account_link #account_link} => Types::AccountLink
2834
+ #
2835
+ # @example Request syntax with placeholder values
2836
+ #
2837
+ # resp = client.get_account_link({
2838
+ # link_id: "LinkId",
2839
+ # linked_account_id: "AwsAccount",
2840
+ # })
2841
+ #
2842
+ # @example Response structure
2843
+ #
2844
+ # resp.account_link.account_link_id #=> String
2845
+ # resp.account_link.account_link_status #=> String, one of "LINKED", "LINKING_FAILED", "LINK_NOT_FOUND", "PENDING_ACCEPTANCE_BY_TARGET_ACCOUNT", "REJECTED"
2846
+ # resp.account_link.source_account_id #=> String
2847
+ # resp.account_link.target_account_id #=> String
2848
+ #
2849
+ # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/GetAccountLink AWS API Documentation
2850
+ #
2851
+ # @overload get_account_link(params = {})
2852
+ # @param [Hash] params ({})
2853
+ def get_account_link(params = {}, options = {})
2854
+ req = build_request(:get_account_link, params)
2855
+ req.send_request(options)
2856
+ end
2857
+
2686
2858
  # Imports client branding. Client branding allows you to customize your
2687
2859
  # WorkSpace's client login portal. You can tailor your login portal
2688
2860
  # company logo, the support email address, support link, link to reset
@@ -2945,6 +3117,51 @@ module Aws::WorkSpaces
2945
3117
  req.send_request(options)
2946
3118
  end
2947
3119
 
3120
+ # Lists all account links.
3121
+ #
3122
+ # @option params [Array<String>] :link_status_filter
3123
+ # Filters the account based on their link status.
3124
+ #
3125
+ # @option params [String] :next_token
3126
+ # The token to use to retrieve the next page of results. This value is
3127
+ # null when there are no more results to return.
3128
+ #
3129
+ # @option params [Integer] :max_results
3130
+ # The maximum number of accounts to return.
3131
+ #
3132
+ # @return [Types::ListAccountLinksResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3133
+ #
3134
+ # * {Types::ListAccountLinksResult#account_links #account_links} => Array&lt;Types::AccountLink&gt;
3135
+ # * {Types::ListAccountLinksResult#next_token #next_token} => String
3136
+ #
3137
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
3138
+ #
3139
+ # @example Request syntax with placeholder values
3140
+ #
3141
+ # resp = client.list_account_links({
3142
+ # link_status_filter: ["LINKED"], # accepts LINKED, LINKING_FAILED, LINK_NOT_FOUND, PENDING_ACCEPTANCE_BY_TARGET_ACCOUNT, REJECTED
3143
+ # next_token: "PaginationToken",
3144
+ # max_results: 1,
3145
+ # })
3146
+ #
3147
+ # @example Response structure
3148
+ #
3149
+ # resp.account_links #=> Array
3150
+ # resp.account_links[0].account_link_id #=> String
3151
+ # resp.account_links[0].account_link_status #=> String, one of "LINKED", "LINKING_FAILED", "LINK_NOT_FOUND", "PENDING_ACCEPTANCE_BY_TARGET_ACCOUNT", "REJECTED"
3152
+ # resp.account_links[0].source_account_id #=> String
3153
+ # resp.account_links[0].target_account_id #=> String
3154
+ # resp.next_token #=> String
3155
+ #
3156
+ # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/ListAccountLinks AWS API Documentation
3157
+ #
3158
+ # @overload list_account_links(params = {})
3159
+ # @param [Hash] params ({})
3160
+ def list_account_links(params = {}, options = {})
3161
+ req = build_request(:list_account_links, params)
3162
+ req.send_request(options)
3163
+ end
3164
+
2948
3165
  # Retrieves a list of IP address ranges, specified as IPv4 CIDR blocks,
2949
3166
  # that you can use for the network management interface when you enable
2950
3167
  # Bring Your Own License (BYOL).
@@ -3555,6 +3772,41 @@ module Aws::WorkSpaces
3555
3772
  req.send_request(options)
3556
3773
  end
3557
3774
 
3775
+ # Rejects the account link invitation.
3776
+ #
3777
+ # @option params [required, String] :link_id
3778
+ # The identifier of the account link
3779
+ #
3780
+ # @option params [String] :client_token
3781
+ # The client token of the account link invitation to reject.
3782
+ #
3783
+ # @return [Types::RejectAccountLinkInvitationResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3784
+ #
3785
+ # * {Types::RejectAccountLinkInvitationResult#account_link #account_link} => Types::AccountLink
3786
+ #
3787
+ # @example Request syntax with placeholder values
3788
+ #
3789
+ # resp = client.reject_account_link_invitation({
3790
+ # link_id: "LinkId", # required
3791
+ # client_token: "ClientToken",
3792
+ # })
3793
+ #
3794
+ # @example Response structure
3795
+ #
3796
+ # resp.account_link.account_link_id #=> String
3797
+ # resp.account_link.account_link_status #=> String, one of "LINKED", "LINKING_FAILED", "LINK_NOT_FOUND", "PENDING_ACCEPTANCE_BY_TARGET_ACCOUNT", "REJECTED"
3798
+ # resp.account_link.source_account_id #=> String
3799
+ # resp.account_link.target_account_id #=> String
3800
+ #
3801
+ # @see http://docs.aws.amazon.com/goto/WebAPI/workspaces-2015-04-08/RejectAccountLinkInvitation AWS API Documentation
3802
+ #
3803
+ # @overload reject_account_link_invitation(params = {})
3804
+ # @param [Hash] params ({})
3805
+ def reject_account_link_invitation(params = {}, options = {})
3806
+ req = build_request(:reject_account_link_invitation, params)
3807
+ req.send_request(options)
3808
+ end
3809
+
3558
3810
  # Restores the specified WorkSpace to its last known healthy state.
3559
3811
  #
3560
3812
  # You cannot restore a WorkSpace unless its state is ` AVAILABLE`,
@@ -4000,7 +4252,7 @@ module Aws::WorkSpaces
4000
4252
  params: params,
4001
4253
  config: config)
4002
4254
  context[:gem_name] = 'aws-sdk-workspaces'
4003
- context[:gem_version] = '1.100.0'
4255
+ context[:gem_version] = '1.102.0'
4004
4256
  Seahorse::Client::Request.new(handlers, context)
4005
4257
  end
4006
4258