ominfra 0.0.0.dev445__py3-none-any.whl → 0.0.0.dev483__py3-none-any.whl

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.

Potentially problematic release.


This version of ominfra might be problematic. Click here for more details.

@@ -298,6 +298,7 @@ class InstanceLifecycleType(_enum.Enum):
298
298
  SPOT = 'spot'
299
299
  SCHEDULED = 'scheduled'
300
300
  CAPACITY_BLOCK = 'capacity-block'
301
+ INTERRUPTIBLE_CAPACITY_RESERVATION = 'interruptible-capacity-reservation'
301
302
 
302
303
 
303
304
  class InstanceMetadataEndpointState(_enum.Enum):
@@ -1361,6 +1362,73 @@ class InstanceType(_enum.Enum):
1361
1362
  I8GE_METAL_48XL = 'i8ge.metal-48xl'
1362
1363
  MAC_M4_METAL = 'mac-m4.metal'
1363
1364
  MAC_M4PRO_METAL = 'mac-m4pro.metal'
1365
+ R8GN_MEDIUM = 'r8gn.medium'
1366
+ R8GN_LARGE = 'r8gn.large'
1367
+ R8GN_XLARGE = 'r8gn.xlarge'
1368
+ R8GN_2XLARGE = 'r8gn.2xlarge'
1369
+ R8GN_4XLARGE = 'r8gn.4xlarge'
1370
+ R8GN_8XLARGE = 'r8gn.8xlarge'
1371
+ R8GN_12XLARGE = 'r8gn.12xlarge'
1372
+ R8GN_16XLARGE = 'r8gn.16xlarge'
1373
+ R8GN_24XLARGE = 'r8gn.24xlarge'
1374
+ R8GN_48XLARGE = 'r8gn.48xlarge'
1375
+ R8GN_METAL_24XL = 'r8gn.metal-24xl'
1376
+ R8GN_METAL_48XL = 'r8gn.metal-48xl'
1377
+ C8I_LARGE = 'c8i.large'
1378
+ C8I_XLARGE = 'c8i.xlarge'
1379
+ C8I_2XLARGE = 'c8i.2xlarge'
1380
+ C8I_4XLARGE = 'c8i.4xlarge'
1381
+ C8I_8XLARGE = 'c8i.8xlarge'
1382
+ C8I_12XLARGE = 'c8i.12xlarge'
1383
+ C8I_16XLARGE = 'c8i.16xlarge'
1384
+ C8I_24XLARGE = 'c8i.24xlarge'
1385
+ C8I_32XLARGE = 'c8i.32xlarge'
1386
+ C8I_48XLARGE = 'c8i.48xlarge'
1387
+ C8I_96XLARGE = 'c8i.96xlarge'
1388
+ C8I_METAL_48XL = 'c8i.metal-48xl'
1389
+ C8I_METAL_96XL = 'c8i.metal-96xl'
1390
+ C8I_FLEX_LARGE = 'c8i-flex.large'
1391
+ C8I_FLEX_XLARGE = 'c8i-flex.xlarge'
1392
+ C8I_FLEX_2XLARGE = 'c8i-flex.2xlarge'
1393
+ C8I_FLEX_4XLARGE = 'c8i-flex.4xlarge'
1394
+ C8I_FLEX_8XLARGE = 'c8i-flex.8xlarge'
1395
+ C8I_FLEX_12XLARGE = 'c8i-flex.12xlarge'
1396
+ C8I_FLEX_16XLARGE = 'c8i-flex.16xlarge'
1397
+ R8GB_MEDIUM = 'r8gb.medium'
1398
+ R8GB_LARGE = 'r8gb.large'
1399
+ R8GB_XLARGE = 'r8gb.xlarge'
1400
+ R8GB_2XLARGE = 'r8gb.2xlarge'
1401
+ R8GB_4XLARGE = 'r8gb.4xlarge'
1402
+ R8GB_8XLARGE = 'r8gb.8xlarge'
1403
+ R8GB_12XLARGE = 'r8gb.12xlarge'
1404
+ R8GB_16XLARGE = 'r8gb.16xlarge'
1405
+ R8GB_24XLARGE = 'r8gb.24xlarge'
1406
+ R8GB_METAL_24XL = 'r8gb.metal-24xl'
1407
+ M8A_MEDIUM = 'm8a.medium'
1408
+ M8A_LARGE = 'm8a.large'
1409
+ M8A_XLARGE = 'm8a.xlarge'
1410
+ M8A_2XLARGE = 'm8a.2xlarge'
1411
+ M8A_4XLARGE = 'm8a.4xlarge'
1412
+ M8A_8XLARGE = 'm8a.8xlarge'
1413
+ M8A_12XLARGE = 'm8a.12xlarge'
1414
+ M8A_16XLARGE = 'm8a.16xlarge'
1415
+ M8A_24XLARGE = 'm8a.24xlarge'
1416
+ M8A_48XLARGE = 'm8a.48xlarge'
1417
+ M8A_METAL_24XL = 'm8a.metal-24xl'
1418
+ M8A_METAL_48XL = 'm8a.metal-48xl'
1419
+ TRN2_3XLARGE = 'trn2.3xlarge'
1420
+ R8A_MEDIUM = 'r8a.medium'
1421
+ R8A_LARGE = 'r8a.large'
1422
+ R8A_XLARGE = 'r8a.xlarge'
1423
+ R8A_2XLARGE = 'r8a.2xlarge'
1424
+ R8A_4XLARGE = 'r8a.4xlarge'
1425
+ R8A_8XLARGE = 'r8a.8xlarge'
1426
+ R8A_12XLARGE = 'r8a.12xlarge'
1427
+ R8A_16XLARGE = 'r8a.16xlarge'
1428
+ R8A_24XLARGE = 'r8a.24xlarge'
1429
+ R8A_48XLARGE = 'r8a.48xlarge'
1430
+ R8A_METAL_24XL = 'r8a.metal-24xl'
1431
+ R8A_METAL_48XL = 'r8a.metal-48xl'
1364
1432
 
1365
1433
 
1366
1434
  class InstanceTypeHypervisor(_enum.Enum):
@@ -1404,6 +1472,7 @@ LocalGatewayId = _ta.NewType('LocalGatewayId', str)
1404
1472
  class MarketType(_enum.Enum):
1405
1473
  SPOT = 'spot'
1406
1474
  CAPACITY_BLOCK = 'capacity-block'
1475
+ INTERRUPTIBLE_CAPACITY_RESERVATION = 'interruptible-capacity-reservation'
1407
1476
 
1408
1477
 
1409
1478
  MaxIpv4AddrPerInterface = _ta.NewType('MaxIpv4AddrPerInterface', int)
@@ -1618,6 +1687,7 @@ class ResourceType(_enum.Enum):
1618
1687
  TRANSIT_GATEWAY_CONNECT_PEER = 'transit-gateway-connect-peer'
1619
1688
  TRANSIT_GATEWAY_MULTICAST_DOMAIN = 'transit-gateway-multicast-domain'
1620
1689
  TRANSIT_GATEWAY_POLICY_TABLE = 'transit-gateway-policy-table'
1690
+ TRANSIT_GATEWAY_METERING_POLICY = 'transit-gateway-metering-policy'
1621
1691
  TRANSIT_GATEWAY_ROUTE_TABLE = 'transit-gateway-route-table'
1622
1692
  TRANSIT_GATEWAY_ROUTE_TABLE_ANNOUNCEMENT = 'transit-gateway-route-table-announcement'
1623
1693
  VOLUME = 'volume'
@@ -1640,6 +1710,7 @@ class ResourceType(_enum.Enum):
1640
1710
  VERIFIED_ACCESS_TRUST_PROVIDER = 'verified-access-trust-provider'
1641
1711
  VPN_CONNECTION_DEVICE_TYPE = 'vpn-connection-device-type'
1642
1712
  VPC_BLOCK_PUBLIC_ACCESS_EXCLUSION = 'vpc-block-public-access-exclusion'
1713
+ VPC_ENCRYPTION_CONTROL = 'vpc-encryption-control'
1643
1714
  ROUTE_SERVER = 'route-server'
1644
1715
  ROUTE_SERVER_ENDPOINT = 'route-server-endpoint'
1645
1716
  ROUTE_SERVER_PEER = 'route-server-peer'
@@ -1650,6 +1721,11 @@ class ResourceType(_enum.Enum):
1650
1721
  IPAM_EXTERNAL_RESOURCE_VERIFICATION_TOKEN = 'ipam-external-resource-verification-token'
1651
1722
  CAPACITY_BLOCK = 'capacity-block'
1652
1723
  MAC_MODIFICATION_TASK = 'mac-modification-task'
1724
+ IPAM_PREFIX_LIST_RESOLVER = 'ipam-prefix-list-resolver'
1725
+ IPAM_POLICY = 'ipam-policy'
1726
+ IPAM_PREFIX_LIST_RESOLVER_TARGET = 'ipam-prefix-list-resolver-target'
1727
+ CAPACITY_MANAGER_DATA_EXPORT = 'capacity-manager-data-export'
1728
+ VPN_CONCENTRATOR = 'vpn-concentrator'
1653
1729
 
1654
1730
 
1655
1731
  class RootDeviceType(_enum.Enum):
@@ -1694,6 +1770,7 @@ class ServiceManaged(_enum.Enum):
1694
1770
  ALB = 'alb'
1695
1771
  NLB = 'nlb'
1696
1772
  RNAT = 'rnat'
1773
+ RDS = 'rds'
1697
1774
 
1698
1775
 
1699
1776
  class ShutdownBehavior(_enum.Enum):
@@ -4906,6 +4983,24 @@ class VpcEncryptionControlExclusions(
4906
4983
  shape_name='VpcEncryptionControlExclusion',
4907
4984
  ))
4908
4985
 
4986
+ lambda_: VpcEncryptionControlExclusion | None = _dc.field(default=None, metadata=_base.field_metadata(
4987
+ member_name='Lambda',
4988
+ serialization_name='lambda',
4989
+ shape_name='VpcEncryptionControlExclusion',
4990
+ ))
4991
+
4992
+ vpc_lattice: VpcEncryptionControlExclusion | None = _dc.field(default=None, metadata=_base.field_metadata(
4993
+ member_name='VpcLattice',
4994
+ serialization_name='vpcLattice',
4995
+ shape_name='VpcEncryptionControlExclusion',
4996
+ ))
4997
+
4998
+ elastic_file_system: VpcEncryptionControlExclusion | None = _dc.field(default=None, metadata=_base.field_metadata(
4999
+ member_name='ElasticFileSystem',
5000
+ serialization_name='elasticFileSystem',
5001
+ shape_name='VpcEncryptionControlExclusion',
5002
+ ))
5003
+
4909
5004
 
4910
5005
  @_dc.dataclass(frozen=True, kw_only=True)
4911
5006
  class VpcIpv6CidrBlockAssociation(
@@ -6695,6 +6790,12 @@ class NetworkInterface(
6695
6790
  shape_name='AssociatedSubnetList',
6696
6791
  ))
6697
6792
 
6793
+ availability_zone_id: str | None = _dc.field(default=None, metadata=_base.field_metadata(
6794
+ member_name='AvailabilityZoneId',
6795
+ serialization_name='availabilityZoneId',
6796
+ shape_name='String',
6797
+ ))
6798
+
6698
6799
 
6699
6800
  @_dc.dataclass(frozen=True, kw_only=True)
6700
6801
  class NeuronInfo(
@@ -29,6 +29,8 @@ class Architecture(_enum.Enum):
29
29
 
30
30
  Arn = _ta.NewType('Arn', str)
31
31
 
32
+ CapacityProviderArn = _ta.NewType('CapacityProviderArn', str)
33
+
32
34
  Description = _ta.NewType('Description', str)
33
35
 
34
36
  EnvironmentVariableName = _ta.NewType('EnvironmentVariableName', str)
@@ -37,6 +39,10 @@ EnvironmentVariableValue = _ta.NewType('EnvironmentVariableValue', str)
37
39
 
38
40
  EphemeralStorageSize = _ta.NewType('EphemeralStorageSize', int)
39
41
 
42
+ ExecutionEnvironmentMemoryGiBPerVCpu = _ta.NewType('ExecutionEnvironmentMemoryGiBPerVCpu', float)
43
+
44
+ ExecutionTimeout = _ta.NewType('ExecutionTimeout', int)
45
+
40
46
  FileSystemArn = _ta.NewType('FileSystemArn', str)
41
47
 
42
48
  FunctionArn = _ta.NewType('FunctionArn', str)
@@ -82,6 +88,18 @@ class LastUpdateStatusReasonCode(_enum.Enum):
82
88
  INVALID_RUNTIME = 'InvalidRuntime'
83
89
  INVALID_ZIP_FILE_EXCEPTION = 'InvalidZipFileException'
84
90
  FUNCTION_ERROR = 'FunctionError'
91
+ VCPU_LIMIT_EXCEEDED = 'VcpuLimitExceeded'
92
+ CAPACITY_PROVIDER_SCALING_LIMIT_EXCEEDED = 'CapacityProviderScalingLimitExceeded'
93
+ INSUFFICIENT_CAPACITY = 'InsufficientCapacity'
94
+ E_C2_REQUEST_LIMIT_EXCEEDED = 'EC2RequestLimitExceeded'
95
+ FUNCTION_ERROR__INIT_TIMEOUT = 'FunctionError.InitTimeout'
96
+ FUNCTION_ERROR__RUNTIME_INIT_ERROR = 'FunctionError.RuntimeInitError'
97
+ FUNCTION_ERROR__EXTENSION_INIT_ERROR = 'FunctionError.ExtensionInitError'
98
+ FUNCTION_ERROR__INVALID_ENTRY_POINT = 'FunctionError.InvalidEntryPoint'
99
+ FUNCTION_ERROR__INVALID_WORKING_DIRECTORY = 'FunctionError.InvalidWorkingDirectory'
100
+ FUNCTION_ERROR__PERMISSION_DENIED = 'FunctionError.PermissionDenied'
101
+ FUNCTION_ERROR__TOO_MANY_EXTENSIONS = 'FunctionError.TooManyExtensions'
102
+ FUNCTION_ERROR__INIT_RESOURCE_EXHAUSTED = 'FunctionError.InitResourceExhausted'
85
103
 
86
104
 
87
105
  LayerVersionArn = _ta.NewType('LayerVersionArn', str)
@@ -114,8 +132,12 @@ class PackageType(_enum.Enum):
114
132
  IMAGE = 'Image'
115
133
 
116
134
 
135
+ PerExecutionEnvironmentMaxConcurrency = _ta.NewType('PerExecutionEnvironmentMaxConcurrency', int)
136
+
117
137
  ResourceArn = _ta.NewType('ResourceArn', str)
118
138
 
139
+ RetentionPeriodInDays = _ta.NewType('RetentionPeriodInDays', int)
140
+
119
141
  RoleArn = _ta.NewType('RoleArn', str)
120
142
 
121
143
 
@@ -161,6 +183,9 @@ class Runtime(_enum.Enum):
161
183
  JAVA21 = 'java21'
162
184
  PYTHON3_13 = 'python3.13'
163
185
  NODEJS22_X = 'nodejs22.x'
186
+ NODEJS24_X = 'nodejs24.x'
187
+ PYTHON3_14 = 'python3.14'
188
+ JAVA25 = 'java25'
164
189
 
165
190
 
166
191
  RuntimeVersionArn = _ta.NewType('RuntimeVersionArn', str)
@@ -185,6 +210,10 @@ class State(_enum.Enum):
185
210
  ACTIVE = 'Active'
186
211
  INACTIVE = 'Inactive'
187
212
  FAILED = 'Failed'
213
+ DEACTIVATING = 'Deactivating'
214
+ DEACTIVATED = 'Deactivated'
215
+ ACTIVE_NON_INVOCABLE = 'ActiveNonInvocable'
216
+ DELETING = 'Deleting'
188
217
 
189
218
 
190
219
  StateReason = _ta.NewType('StateReason', str)
@@ -215,6 +244,19 @@ class StateReasonCode(_enum.Enum):
215
244
  INVALID_RUNTIME = 'InvalidRuntime'
216
245
  INVALID_ZIP_FILE_EXCEPTION = 'InvalidZipFileException'
217
246
  FUNCTION_ERROR = 'FunctionError'
247
+ DRAINING_DURABLE_EXECUTIONS = 'DrainingDurableExecutions'
248
+ VCPU_LIMIT_EXCEEDED = 'VcpuLimitExceeded'
249
+ CAPACITY_PROVIDER_SCALING_LIMIT_EXCEEDED = 'CapacityProviderScalingLimitExceeded'
250
+ INSUFFICIENT_CAPACITY = 'InsufficientCapacity'
251
+ E_C2_REQUEST_LIMIT_EXCEEDED = 'EC2RequestLimitExceeded'
252
+ FUNCTION_ERROR__INIT_TIMEOUT = 'FunctionError.InitTimeout'
253
+ FUNCTION_ERROR__RUNTIME_INIT_ERROR = 'FunctionError.RuntimeInitError'
254
+ FUNCTION_ERROR__EXTENSION_INIT_ERROR = 'FunctionError.ExtensionInitError'
255
+ FUNCTION_ERROR__INVALID_ENTRY_POINT = 'FunctionError.InvalidEntryPoint'
256
+ FUNCTION_ERROR__INVALID_WORKING_DIRECTORY = 'FunctionError.InvalidWorkingDirectory'
257
+ FUNCTION_ERROR__PERMISSION_DENIED = 'FunctionError.PermissionDenied'
258
+ FUNCTION_ERROR__TOO_MANY_EXTENSIONS = 'FunctionError.TooManyExtensions'
259
+ FUNCTION_ERROR__INIT_RESOURCE_EXHAUSTED = 'FunctionError.InitResourceExhausted'
218
260
 
219
261
 
220
262
  SubnetId = _ta.NewType('SubnetId', str)
@@ -226,6 +268,10 @@ class SystemLogLevel(_enum.Enum):
226
268
  WARN = 'WARN'
227
269
 
228
270
 
271
+ class TenantIsolationMode(_enum.Enum):
272
+ PER_TENANT = 'PER_TENANT'
273
+
274
+
229
275
  class ThrottleReason(_enum.Enum):
230
276
  CONCURRENT_INVOCATION_LIMIT_EXCEEDED = 'ConcurrentInvocationLimitExceeded'
231
277
  FUNCTION_INVOCATION_RATE_LIMIT_EXCEEDED = 'FunctionInvocationRateLimitExceeded'
@@ -265,6 +311,22 @@ class DeadLetterConfig(
265
311
  ))
266
312
 
267
313
 
314
+ @_dc.dataclass(frozen=True, kw_only=True)
315
+ class DurableConfig(
316
+ _base.Shape,
317
+ shape_name='DurableConfig',
318
+ ):
319
+ retention_period_in_days: RetentionPeriodInDays | None = _dc.field(default=None, metadata=_base.field_metadata(
320
+ member_name='RetentionPeriodInDays',
321
+ shape_name='RetentionPeriodInDays',
322
+ ))
323
+
324
+ execution_timeout: ExecutionTimeout | None = _dc.field(default=None, metadata=_base.field_metadata(
325
+ member_name='ExecutionTimeout',
326
+ shape_name='ExecutionTimeout',
327
+ ))
328
+
329
+
268
330
  @_dc.dataclass(frozen=True, kw_only=True)
269
331
  class EnvironmentError_(
270
332
  _base.Shape,
@@ -343,6 +405,27 @@ class InvalidParameterValueException(
343
405
  ))
344
406
 
345
407
 
408
+ @_dc.dataclass(frozen=True, kw_only=True)
409
+ class LambdaManagedInstancesCapacityProviderConfig(
410
+ _base.Shape,
411
+ shape_name='LambdaManagedInstancesCapacityProviderConfig',
412
+ ):
413
+ capacity_provider_arn: CapacityProviderArn = _dc.field(metadata=_base.field_metadata(
414
+ member_name='CapacityProviderArn',
415
+ shape_name='CapacityProviderArn',
416
+ ))
417
+
418
+ per_execution_environment_max_concurrency: PerExecutionEnvironmentMaxConcurrency | None = _dc.field(default=None, metadata=_base.field_metadata(
419
+ member_name='PerExecutionEnvironmentMaxConcurrency',
420
+ shape_name='PerExecutionEnvironmentMaxConcurrency',
421
+ ))
422
+
423
+ execution_environment_memory_gi_b_per_v_cpu: ExecutionEnvironmentMemoryGiBPerVCpu | None = _dc.field(default=None, metadata=_base.field_metadata(
424
+ member_name='ExecutionEnvironmentMemoryGiBPerVCpu',
425
+ shape_name='ExecutionEnvironmentMemoryGiBPerVCpu',
426
+ ))
427
+
428
+
346
429
  @_dc.dataclass(frozen=True, kw_only=True)
347
430
  class Layer(
348
431
  _base.Shape,
@@ -481,6 +564,17 @@ StringList: _ta.TypeAlias = _ta.Sequence[str]
481
564
  SubnetIds: _ta.TypeAlias = _ta.Sequence[SubnetId]
482
565
 
483
566
 
567
+ @_dc.dataclass(frozen=True, kw_only=True)
568
+ class TenancyConfig(
569
+ _base.Shape,
570
+ shape_name='TenancyConfig',
571
+ ):
572
+ tenant_isolation_mode: TenantIsolationMode = _dc.field(metadata=_base.field_metadata(
573
+ member_name='TenantIsolationMode',
574
+ shape_name='TenantIsolationMode',
575
+ ))
576
+
577
+
484
578
  @_dc.dataclass(frozen=True, kw_only=True)
485
579
  class TooManyRequestsException(
486
580
  _base.Shape,
@@ -519,6 +613,17 @@ class TracingConfigResponse(
519
613
  ))
520
614
 
521
615
 
616
+ @_dc.dataclass(frozen=True, kw_only=True)
617
+ class CapacityProviderConfig(
618
+ _base.Shape,
619
+ shape_name='CapacityProviderConfig',
620
+ ):
621
+ lambda_managed_instances_capacity_provider_config: LambdaManagedInstancesCapacityProviderConfig = _dc.field(metadata=_base.field_metadata(
622
+ member_name='LambdaManagedInstancesCapacityProviderConfig',
623
+ shape_name='LambdaManagedInstancesCapacityProviderConfig',
624
+ ))
625
+
626
+
522
627
  @_dc.dataclass(frozen=True, kw_only=True)
523
628
  class EnvironmentResponse(
524
629
  _base.Shape,
@@ -813,6 +918,26 @@ class FunctionConfiguration(
813
918
  shape_name='LoggingConfig',
814
919
  ))
815
920
 
921
+ capacity_provider_config: CapacityProviderConfig | None = _dc.field(default=None, metadata=_base.field_metadata(
922
+ member_name='CapacityProviderConfig',
923
+ shape_name='CapacityProviderConfig',
924
+ ))
925
+
926
+ config_sha256: str | None = _dc.field(default=None, metadata=_base.field_metadata(
927
+ member_name='ConfigSha256',
928
+ shape_name='String',
929
+ ))
930
+
931
+ durable_config: DurableConfig | None = _dc.field(default=None, metadata=_base.field_metadata(
932
+ member_name='DurableConfig',
933
+ shape_name='DurableConfig',
934
+ ))
935
+
936
+ tenancy_config: TenancyConfig | None = _dc.field(default=None, metadata=_base.field_metadata(
937
+ member_name='TenancyConfig',
938
+ shape_name='TenancyConfig',
939
+ ))
940
+
816
941
 
817
942
  FunctionList: _ta.TypeAlias = _ta.Sequence[FunctionConfiguration]
818
943
 
@@ -835,7 +960,9 @@ class ListFunctionsResponse(
835
960
 
836
961
 
837
962
  ALL_SHAPES: frozenset[type[_base.Shape]] = frozenset([
963
+ CapacityProviderConfig,
838
964
  DeadLetterConfig,
965
+ DurableConfig,
839
966
  EnvironmentError_,
840
967
  EnvironmentResponse,
841
968
  EphemeralStorage,
@@ -845,6 +972,7 @@ ALL_SHAPES: frozenset[type[_base.Shape]] = frozenset([
845
972
  ImageConfigError,
846
973
  ImageConfigResponse,
847
974
  InvalidParameterValueException,
975
+ LambdaManagedInstancesCapacityProviderConfig,
848
976
  Layer,
849
977
  ListFunctionsRequest,
850
978
  ListFunctionsResponse,
@@ -853,6 +981,7 @@ ALL_SHAPES: frozenset[type[_base.Shape]] = frozenset([
853
981
  RuntimeVersionError,
854
982
  ServiceException,
855
983
  SnapStartResponse,
984
+ TenancyConfig,
856
985
  TooManyRequestsException,
857
986
  TracingConfigResponse,
858
987
  VpcConfigResponse,