aws-sdk-shield 1.49.0 → 1.51.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.
@@ -0,0 +1,519 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+
11
+ module Aws::Shield
12
+ module Endpoints
13
+
14
+ class AssociateDRTLogBucket
15
+ def self.build(context)
16
+ unless context.config.regional_endpoint
17
+ endpoint = context.config.endpoint.to_s
18
+ end
19
+ Aws::Shield::EndpointParameters.new(
20
+ region: context.config.region,
21
+ use_dual_stack: context.config.use_dualstack_endpoint,
22
+ use_fips: context.config.use_fips_endpoint,
23
+ endpoint: endpoint,
24
+ )
25
+ end
26
+ end
27
+
28
+ class AssociateDRTRole
29
+ def self.build(context)
30
+ unless context.config.regional_endpoint
31
+ endpoint = context.config.endpoint.to_s
32
+ end
33
+ Aws::Shield::EndpointParameters.new(
34
+ region: context.config.region,
35
+ use_dual_stack: context.config.use_dualstack_endpoint,
36
+ use_fips: context.config.use_fips_endpoint,
37
+ endpoint: endpoint,
38
+ )
39
+ end
40
+ end
41
+
42
+ class AssociateHealthCheck
43
+ def self.build(context)
44
+ unless context.config.regional_endpoint
45
+ endpoint = context.config.endpoint.to_s
46
+ end
47
+ Aws::Shield::EndpointParameters.new(
48
+ region: context.config.region,
49
+ use_dual_stack: context.config.use_dualstack_endpoint,
50
+ use_fips: context.config.use_fips_endpoint,
51
+ endpoint: endpoint,
52
+ )
53
+ end
54
+ end
55
+
56
+ class AssociateProactiveEngagementDetails
57
+ def self.build(context)
58
+ unless context.config.regional_endpoint
59
+ endpoint = context.config.endpoint.to_s
60
+ end
61
+ Aws::Shield::EndpointParameters.new(
62
+ region: context.config.region,
63
+ use_dual_stack: context.config.use_dualstack_endpoint,
64
+ use_fips: context.config.use_fips_endpoint,
65
+ endpoint: endpoint,
66
+ )
67
+ end
68
+ end
69
+
70
+ class CreateProtection
71
+ def self.build(context)
72
+ unless context.config.regional_endpoint
73
+ endpoint = context.config.endpoint.to_s
74
+ end
75
+ Aws::Shield::EndpointParameters.new(
76
+ region: context.config.region,
77
+ use_dual_stack: context.config.use_dualstack_endpoint,
78
+ use_fips: context.config.use_fips_endpoint,
79
+ endpoint: endpoint,
80
+ )
81
+ end
82
+ end
83
+
84
+ class CreateProtectionGroup
85
+ def self.build(context)
86
+ unless context.config.regional_endpoint
87
+ endpoint = context.config.endpoint.to_s
88
+ end
89
+ Aws::Shield::EndpointParameters.new(
90
+ region: context.config.region,
91
+ use_dual_stack: context.config.use_dualstack_endpoint,
92
+ use_fips: context.config.use_fips_endpoint,
93
+ endpoint: endpoint,
94
+ )
95
+ end
96
+ end
97
+
98
+ class CreateSubscription
99
+ def self.build(context)
100
+ unless context.config.regional_endpoint
101
+ endpoint = context.config.endpoint.to_s
102
+ end
103
+ Aws::Shield::EndpointParameters.new(
104
+ region: context.config.region,
105
+ use_dual_stack: context.config.use_dualstack_endpoint,
106
+ use_fips: context.config.use_fips_endpoint,
107
+ endpoint: endpoint,
108
+ )
109
+ end
110
+ end
111
+
112
+ class DeleteProtection
113
+ def self.build(context)
114
+ unless context.config.regional_endpoint
115
+ endpoint = context.config.endpoint.to_s
116
+ end
117
+ Aws::Shield::EndpointParameters.new(
118
+ region: context.config.region,
119
+ use_dual_stack: context.config.use_dualstack_endpoint,
120
+ use_fips: context.config.use_fips_endpoint,
121
+ endpoint: endpoint,
122
+ )
123
+ end
124
+ end
125
+
126
+ class DeleteProtectionGroup
127
+ def self.build(context)
128
+ unless context.config.regional_endpoint
129
+ endpoint = context.config.endpoint.to_s
130
+ end
131
+ Aws::Shield::EndpointParameters.new(
132
+ region: context.config.region,
133
+ use_dual_stack: context.config.use_dualstack_endpoint,
134
+ use_fips: context.config.use_fips_endpoint,
135
+ endpoint: endpoint,
136
+ )
137
+ end
138
+ end
139
+
140
+ class DeleteSubscription
141
+ def self.build(context)
142
+ unless context.config.regional_endpoint
143
+ endpoint = context.config.endpoint.to_s
144
+ end
145
+ Aws::Shield::EndpointParameters.new(
146
+ region: context.config.region,
147
+ use_dual_stack: context.config.use_dualstack_endpoint,
148
+ use_fips: context.config.use_fips_endpoint,
149
+ endpoint: endpoint,
150
+ )
151
+ end
152
+ end
153
+
154
+ class DescribeAttack
155
+ def self.build(context)
156
+ unless context.config.regional_endpoint
157
+ endpoint = context.config.endpoint.to_s
158
+ end
159
+ Aws::Shield::EndpointParameters.new(
160
+ region: context.config.region,
161
+ use_dual_stack: context.config.use_dualstack_endpoint,
162
+ use_fips: context.config.use_fips_endpoint,
163
+ endpoint: endpoint,
164
+ )
165
+ end
166
+ end
167
+
168
+ class DescribeAttackStatistics
169
+ def self.build(context)
170
+ unless context.config.regional_endpoint
171
+ endpoint = context.config.endpoint.to_s
172
+ end
173
+ Aws::Shield::EndpointParameters.new(
174
+ region: context.config.region,
175
+ use_dual_stack: context.config.use_dualstack_endpoint,
176
+ use_fips: context.config.use_fips_endpoint,
177
+ endpoint: endpoint,
178
+ )
179
+ end
180
+ end
181
+
182
+ class DescribeDRTAccess
183
+ def self.build(context)
184
+ unless context.config.regional_endpoint
185
+ endpoint = context.config.endpoint.to_s
186
+ end
187
+ Aws::Shield::EndpointParameters.new(
188
+ region: context.config.region,
189
+ use_dual_stack: context.config.use_dualstack_endpoint,
190
+ use_fips: context.config.use_fips_endpoint,
191
+ endpoint: endpoint,
192
+ )
193
+ end
194
+ end
195
+
196
+ class DescribeEmergencyContactSettings
197
+ def self.build(context)
198
+ unless context.config.regional_endpoint
199
+ endpoint = context.config.endpoint.to_s
200
+ end
201
+ Aws::Shield::EndpointParameters.new(
202
+ region: context.config.region,
203
+ use_dual_stack: context.config.use_dualstack_endpoint,
204
+ use_fips: context.config.use_fips_endpoint,
205
+ endpoint: endpoint,
206
+ )
207
+ end
208
+ end
209
+
210
+ class DescribeProtection
211
+ def self.build(context)
212
+ unless context.config.regional_endpoint
213
+ endpoint = context.config.endpoint.to_s
214
+ end
215
+ Aws::Shield::EndpointParameters.new(
216
+ region: context.config.region,
217
+ use_dual_stack: context.config.use_dualstack_endpoint,
218
+ use_fips: context.config.use_fips_endpoint,
219
+ endpoint: endpoint,
220
+ )
221
+ end
222
+ end
223
+
224
+ class DescribeProtectionGroup
225
+ def self.build(context)
226
+ unless context.config.regional_endpoint
227
+ endpoint = context.config.endpoint.to_s
228
+ end
229
+ Aws::Shield::EndpointParameters.new(
230
+ region: context.config.region,
231
+ use_dual_stack: context.config.use_dualstack_endpoint,
232
+ use_fips: context.config.use_fips_endpoint,
233
+ endpoint: endpoint,
234
+ )
235
+ end
236
+ end
237
+
238
+ class DescribeSubscription
239
+ def self.build(context)
240
+ unless context.config.regional_endpoint
241
+ endpoint = context.config.endpoint.to_s
242
+ end
243
+ Aws::Shield::EndpointParameters.new(
244
+ region: context.config.region,
245
+ use_dual_stack: context.config.use_dualstack_endpoint,
246
+ use_fips: context.config.use_fips_endpoint,
247
+ endpoint: endpoint,
248
+ )
249
+ end
250
+ end
251
+
252
+ class DisableApplicationLayerAutomaticResponse
253
+ def self.build(context)
254
+ unless context.config.regional_endpoint
255
+ endpoint = context.config.endpoint.to_s
256
+ end
257
+ Aws::Shield::EndpointParameters.new(
258
+ region: context.config.region,
259
+ use_dual_stack: context.config.use_dualstack_endpoint,
260
+ use_fips: context.config.use_fips_endpoint,
261
+ endpoint: endpoint,
262
+ )
263
+ end
264
+ end
265
+
266
+ class DisableProactiveEngagement
267
+ def self.build(context)
268
+ unless context.config.regional_endpoint
269
+ endpoint = context.config.endpoint.to_s
270
+ end
271
+ Aws::Shield::EndpointParameters.new(
272
+ region: context.config.region,
273
+ use_dual_stack: context.config.use_dualstack_endpoint,
274
+ use_fips: context.config.use_fips_endpoint,
275
+ endpoint: endpoint,
276
+ )
277
+ end
278
+ end
279
+
280
+ class DisassociateDRTLogBucket
281
+ def self.build(context)
282
+ unless context.config.regional_endpoint
283
+ endpoint = context.config.endpoint.to_s
284
+ end
285
+ Aws::Shield::EndpointParameters.new(
286
+ region: context.config.region,
287
+ use_dual_stack: context.config.use_dualstack_endpoint,
288
+ use_fips: context.config.use_fips_endpoint,
289
+ endpoint: endpoint,
290
+ )
291
+ end
292
+ end
293
+
294
+ class DisassociateDRTRole
295
+ def self.build(context)
296
+ unless context.config.regional_endpoint
297
+ endpoint = context.config.endpoint.to_s
298
+ end
299
+ Aws::Shield::EndpointParameters.new(
300
+ region: context.config.region,
301
+ use_dual_stack: context.config.use_dualstack_endpoint,
302
+ use_fips: context.config.use_fips_endpoint,
303
+ endpoint: endpoint,
304
+ )
305
+ end
306
+ end
307
+
308
+ class DisassociateHealthCheck
309
+ def self.build(context)
310
+ unless context.config.regional_endpoint
311
+ endpoint = context.config.endpoint.to_s
312
+ end
313
+ Aws::Shield::EndpointParameters.new(
314
+ region: context.config.region,
315
+ use_dual_stack: context.config.use_dualstack_endpoint,
316
+ use_fips: context.config.use_fips_endpoint,
317
+ endpoint: endpoint,
318
+ )
319
+ end
320
+ end
321
+
322
+ class EnableApplicationLayerAutomaticResponse
323
+ def self.build(context)
324
+ unless context.config.regional_endpoint
325
+ endpoint = context.config.endpoint.to_s
326
+ end
327
+ Aws::Shield::EndpointParameters.new(
328
+ region: context.config.region,
329
+ use_dual_stack: context.config.use_dualstack_endpoint,
330
+ use_fips: context.config.use_fips_endpoint,
331
+ endpoint: endpoint,
332
+ )
333
+ end
334
+ end
335
+
336
+ class EnableProactiveEngagement
337
+ def self.build(context)
338
+ unless context.config.regional_endpoint
339
+ endpoint = context.config.endpoint.to_s
340
+ end
341
+ Aws::Shield::EndpointParameters.new(
342
+ region: context.config.region,
343
+ use_dual_stack: context.config.use_dualstack_endpoint,
344
+ use_fips: context.config.use_fips_endpoint,
345
+ endpoint: endpoint,
346
+ )
347
+ end
348
+ end
349
+
350
+ class GetSubscriptionState
351
+ def self.build(context)
352
+ unless context.config.regional_endpoint
353
+ endpoint = context.config.endpoint.to_s
354
+ end
355
+ Aws::Shield::EndpointParameters.new(
356
+ region: context.config.region,
357
+ use_dual_stack: context.config.use_dualstack_endpoint,
358
+ use_fips: context.config.use_fips_endpoint,
359
+ endpoint: endpoint,
360
+ )
361
+ end
362
+ end
363
+
364
+ class ListAttacks
365
+ def self.build(context)
366
+ unless context.config.regional_endpoint
367
+ endpoint = context.config.endpoint.to_s
368
+ end
369
+ Aws::Shield::EndpointParameters.new(
370
+ region: context.config.region,
371
+ use_dual_stack: context.config.use_dualstack_endpoint,
372
+ use_fips: context.config.use_fips_endpoint,
373
+ endpoint: endpoint,
374
+ )
375
+ end
376
+ end
377
+
378
+ class ListProtectionGroups
379
+ def self.build(context)
380
+ unless context.config.regional_endpoint
381
+ endpoint = context.config.endpoint.to_s
382
+ end
383
+ Aws::Shield::EndpointParameters.new(
384
+ region: context.config.region,
385
+ use_dual_stack: context.config.use_dualstack_endpoint,
386
+ use_fips: context.config.use_fips_endpoint,
387
+ endpoint: endpoint,
388
+ )
389
+ end
390
+ end
391
+
392
+ class ListProtections
393
+ def self.build(context)
394
+ unless context.config.regional_endpoint
395
+ endpoint = context.config.endpoint.to_s
396
+ end
397
+ Aws::Shield::EndpointParameters.new(
398
+ region: context.config.region,
399
+ use_dual_stack: context.config.use_dualstack_endpoint,
400
+ use_fips: context.config.use_fips_endpoint,
401
+ endpoint: endpoint,
402
+ )
403
+ end
404
+ end
405
+
406
+ class ListResourcesInProtectionGroup
407
+ def self.build(context)
408
+ unless context.config.regional_endpoint
409
+ endpoint = context.config.endpoint.to_s
410
+ end
411
+ Aws::Shield::EndpointParameters.new(
412
+ region: context.config.region,
413
+ use_dual_stack: context.config.use_dualstack_endpoint,
414
+ use_fips: context.config.use_fips_endpoint,
415
+ endpoint: endpoint,
416
+ )
417
+ end
418
+ end
419
+
420
+ class ListTagsForResource
421
+ def self.build(context)
422
+ unless context.config.regional_endpoint
423
+ endpoint = context.config.endpoint.to_s
424
+ end
425
+ Aws::Shield::EndpointParameters.new(
426
+ region: context.config.region,
427
+ use_dual_stack: context.config.use_dualstack_endpoint,
428
+ use_fips: context.config.use_fips_endpoint,
429
+ endpoint: endpoint,
430
+ )
431
+ end
432
+ end
433
+
434
+ class TagResource
435
+ def self.build(context)
436
+ unless context.config.regional_endpoint
437
+ endpoint = context.config.endpoint.to_s
438
+ end
439
+ Aws::Shield::EndpointParameters.new(
440
+ region: context.config.region,
441
+ use_dual_stack: context.config.use_dualstack_endpoint,
442
+ use_fips: context.config.use_fips_endpoint,
443
+ endpoint: endpoint,
444
+ )
445
+ end
446
+ end
447
+
448
+ class UntagResource
449
+ def self.build(context)
450
+ unless context.config.regional_endpoint
451
+ endpoint = context.config.endpoint.to_s
452
+ end
453
+ Aws::Shield::EndpointParameters.new(
454
+ region: context.config.region,
455
+ use_dual_stack: context.config.use_dualstack_endpoint,
456
+ use_fips: context.config.use_fips_endpoint,
457
+ endpoint: endpoint,
458
+ )
459
+ end
460
+ end
461
+
462
+ class UpdateApplicationLayerAutomaticResponse
463
+ def self.build(context)
464
+ unless context.config.regional_endpoint
465
+ endpoint = context.config.endpoint.to_s
466
+ end
467
+ Aws::Shield::EndpointParameters.new(
468
+ region: context.config.region,
469
+ use_dual_stack: context.config.use_dualstack_endpoint,
470
+ use_fips: context.config.use_fips_endpoint,
471
+ endpoint: endpoint,
472
+ )
473
+ end
474
+ end
475
+
476
+ class UpdateEmergencyContactSettings
477
+ def self.build(context)
478
+ unless context.config.regional_endpoint
479
+ endpoint = context.config.endpoint.to_s
480
+ end
481
+ Aws::Shield::EndpointParameters.new(
482
+ region: context.config.region,
483
+ use_dual_stack: context.config.use_dualstack_endpoint,
484
+ use_fips: context.config.use_fips_endpoint,
485
+ endpoint: endpoint,
486
+ )
487
+ end
488
+ end
489
+
490
+ class UpdateProtectionGroup
491
+ def self.build(context)
492
+ unless context.config.regional_endpoint
493
+ endpoint = context.config.endpoint.to_s
494
+ end
495
+ Aws::Shield::EndpointParameters.new(
496
+ region: context.config.region,
497
+ use_dual_stack: context.config.use_dualstack_endpoint,
498
+ use_fips: context.config.use_fips_endpoint,
499
+ endpoint: endpoint,
500
+ )
501
+ end
502
+ end
503
+
504
+ class UpdateSubscription
505
+ def self.build(context)
506
+ unless context.config.regional_endpoint
507
+ endpoint = context.config.endpoint.to_s
508
+ end
509
+ Aws::Shield::EndpointParameters.new(
510
+ region: context.config.region,
511
+ use_dual_stack: context.config.use_dualstack_endpoint,
512
+ use_fips: context.config.use_fips_endpoint,
513
+ endpoint: endpoint,
514
+ )
515
+ end
516
+ end
517
+
518
+ end
519
+ end
@@ -0,0 +1,140 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+
11
+ module Aws::Shield
12
+ module Plugins
13
+ class Endpoints < Seahorse::Client::Plugin
14
+ option(
15
+ :endpoint_provider,
16
+ doc_type: 'Aws::Shield::EndpointProvider',
17
+ docstring: 'The endpoint provider used to resolve endpoints. Any '\
18
+ 'object that responds to `#resolve_endpoint(parameters)` '\
19
+ 'where `parameters` is a Struct similar to '\
20
+ '`Aws::Shield::EndpointParameters`'
21
+ ) do |cfg|
22
+ Aws::Shield::EndpointProvider.new
23
+ end
24
+
25
+ # @api private
26
+ class Handler < Seahorse::Client::Handler
27
+ def call(context)
28
+ # If endpoint was discovered, do not resolve or apply the endpoint.
29
+ unless context[:discovered_endpoint]
30
+ params = parameters_for_operation(context)
31
+ endpoint = context.config.endpoint_provider.resolve_endpoint(params)
32
+
33
+ context.http_request.endpoint = endpoint.url
34
+ apply_endpoint_headers(context, endpoint.headers)
35
+ end
36
+
37
+ context[:endpoint_params] = params
38
+ context[:auth_scheme] =
39
+ Aws::Endpoints.resolve_auth_scheme(context, endpoint)
40
+
41
+ @handler.call(context)
42
+ end
43
+
44
+ private
45
+
46
+ def apply_endpoint_headers(context, headers)
47
+ headers.each do |key, values|
48
+ value = values
49
+ .compact
50
+ .map { |s| Seahorse::Util.escape_header_list_string(s.to_s) }
51
+ .join(',')
52
+
53
+ context.http_request.headers[key] = value
54
+ end
55
+ end
56
+
57
+ def parameters_for_operation(context)
58
+ case context.operation_name
59
+ when :associate_drt_log_bucket
60
+ Aws::Shield::Endpoints::AssociateDRTLogBucket.build(context)
61
+ when :associate_drt_role
62
+ Aws::Shield::Endpoints::AssociateDRTRole.build(context)
63
+ when :associate_health_check
64
+ Aws::Shield::Endpoints::AssociateHealthCheck.build(context)
65
+ when :associate_proactive_engagement_details
66
+ Aws::Shield::Endpoints::AssociateProactiveEngagementDetails.build(context)
67
+ when :create_protection
68
+ Aws::Shield::Endpoints::CreateProtection.build(context)
69
+ when :create_protection_group
70
+ Aws::Shield::Endpoints::CreateProtectionGroup.build(context)
71
+ when :create_subscription
72
+ Aws::Shield::Endpoints::CreateSubscription.build(context)
73
+ when :delete_protection
74
+ Aws::Shield::Endpoints::DeleteProtection.build(context)
75
+ when :delete_protection_group
76
+ Aws::Shield::Endpoints::DeleteProtectionGroup.build(context)
77
+ when :delete_subscription
78
+ Aws::Shield::Endpoints::DeleteSubscription.build(context)
79
+ when :describe_attack
80
+ Aws::Shield::Endpoints::DescribeAttack.build(context)
81
+ when :describe_attack_statistics
82
+ Aws::Shield::Endpoints::DescribeAttackStatistics.build(context)
83
+ when :describe_drt_access
84
+ Aws::Shield::Endpoints::DescribeDRTAccess.build(context)
85
+ when :describe_emergency_contact_settings
86
+ Aws::Shield::Endpoints::DescribeEmergencyContactSettings.build(context)
87
+ when :describe_protection
88
+ Aws::Shield::Endpoints::DescribeProtection.build(context)
89
+ when :describe_protection_group
90
+ Aws::Shield::Endpoints::DescribeProtectionGroup.build(context)
91
+ when :describe_subscription
92
+ Aws::Shield::Endpoints::DescribeSubscription.build(context)
93
+ when :disable_application_layer_automatic_response
94
+ Aws::Shield::Endpoints::DisableApplicationLayerAutomaticResponse.build(context)
95
+ when :disable_proactive_engagement
96
+ Aws::Shield::Endpoints::DisableProactiveEngagement.build(context)
97
+ when :disassociate_drt_log_bucket
98
+ Aws::Shield::Endpoints::DisassociateDRTLogBucket.build(context)
99
+ when :disassociate_drt_role
100
+ Aws::Shield::Endpoints::DisassociateDRTRole.build(context)
101
+ when :disassociate_health_check
102
+ Aws::Shield::Endpoints::DisassociateHealthCheck.build(context)
103
+ when :enable_application_layer_automatic_response
104
+ Aws::Shield::Endpoints::EnableApplicationLayerAutomaticResponse.build(context)
105
+ when :enable_proactive_engagement
106
+ Aws::Shield::Endpoints::EnableProactiveEngagement.build(context)
107
+ when :get_subscription_state
108
+ Aws::Shield::Endpoints::GetSubscriptionState.build(context)
109
+ when :list_attacks
110
+ Aws::Shield::Endpoints::ListAttacks.build(context)
111
+ when :list_protection_groups
112
+ Aws::Shield::Endpoints::ListProtectionGroups.build(context)
113
+ when :list_protections
114
+ Aws::Shield::Endpoints::ListProtections.build(context)
115
+ when :list_resources_in_protection_group
116
+ Aws::Shield::Endpoints::ListResourcesInProtectionGroup.build(context)
117
+ when :list_tags_for_resource
118
+ Aws::Shield::Endpoints::ListTagsForResource.build(context)
119
+ when :tag_resource
120
+ Aws::Shield::Endpoints::TagResource.build(context)
121
+ when :untag_resource
122
+ Aws::Shield::Endpoints::UntagResource.build(context)
123
+ when :update_application_layer_automatic_response
124
+ Aws::Shield::Endpoints::UpdateApplicationLayerAutomaticResponse.build(context)
125
+ when :update_emergency_contact_settings
126
+ Aws::Shield::Endpoints::UpdateEmergencyContactSettings.build(context)
127
+ when :update_protection_group
128
+ Aws::Shield::Endpoints::UpdateProtectionGroup.build(context)
129
+ when :update_subscription
130
+ Aws::Shield::Endpoints::UpdateSubscription.build(context)
131
+ end
132
+ end
133
+ end
134
+
135
+ def add_handlers(handlers, _config)
136
+ handlers.add(Handler, step: :build, priority: 75)
137
+ end
138
+ end
139
+ end
140
+ end