tccli 3.0.1047.1__py2.py3-none-any.whl → 3.0.1049.1__py2.py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- tccli/__init__.py +1 -1
- tccli/examples/antiddos/v20200309/DescribeBGPIPL7Rules.md +87 -0
- tccli/examples/billing/v20180709/DescribeSavingPlanResourceInfo.md +24 -0
- tccli/examples/ckafka/v20190819/DescribeGroup.md +6 -5
- tccli/examples/csip/v20221121/ModifyOrganizationAccountStatus.md +21 -0
- tccli/examples/cynosdb/v20190107/AddInstances.md +2 -2
- tccli/examples/cynosdb/v20190107/DescribeClusterInstanceGrps.md +235 -79
- tccli/examples/cynosdb/v20190107/DescribeClusterParams.md +3 -1
- tccli/examples/cynosdb/v20190107/DescribeClusterPasswordComplexity.md +18 -6
- tccli/examples/cynosdb/v20190107/DescribeInstances.md +63 -55
- tccli/examples/cynosdb/v20190107/DescribeParamTemplateDetail.md +3 -1
- tccli/examples/cynosdb/v20190107/ModifyVipVport.md +3 -3
- tccli/examples/emr/v20190103/DescribeInsightList.md +41 -0
- tccli/examples/ess/v20201111/CreateFlowByFiles.md +155 -0
- tccli/examples/ess/v20201111/CreateOrganizationBatchSignUrl.md +9 -9
- tccli/examples/essbasic/v20210526/ChannelCreatePrepareFlow.md +44 -2
- tccli/examples/iotvideo/v20211125/DeleteCloudStorageEvent.md +2 -1
- tccli/examples/iotvideo/v20211125/DescribeCloudStorageOrder.md +2 -1
- tccli/examples/oceanus/v20190422/CopyJobs.md +11 -20
- tccli/examples/teo/v20220901/DescribeDefaultCertificates.md +2 -1
- tccli/examples/trocket/v20230308/CreateMQTTInstance.md +31 -0
- tccli/examples/trocket/v20230308/DescribeMQTTInstanceList.md +176 -0
- tccli/examples/trocket/v20230308/DescribeMQTTProductSKUList.md +94 -0
- tccli/examples/wedata/v20210820/DeleteCustomFunction.md +11 -8
- tccli/services/antiddos/antiddos_client.py +53 -0
- tccli/services/antiddos/v20200309/api.json +439 -0
- tccli/services/antiddos/v20200309/examples.json +8 -0
- tccli/services/billing/billing_client.py +53 -0
- tccli/services/billing/v20180709/api.json +71 -0
- tccli/services/billing/v20180709/examples.json +8 -0
- tccli/services/cfg/v20210820/api.json +21 -10
- tccli/services/ckafka/v20190819/api.json +6 -5
- tccli/services/ckafka/v20190819/examples.json +1 -1
- tccli/services/cls/v20201016/api.json +52 -23
- tccli/services/csip/csip_client.py +53 -0
- tccli/services/csip/v20221121/api.json +43 -0
- tccli/services/csip/v20221121/examples.json +8 -0
- tccli/services/cvm/v20170312/api.json +20 -20
- tccli/services/cynosdb/v20190107/api.json +415 -87
- tccli/services/cynosdb/v20190107/examples.json +12 -12
- tccli/services/emr/emr_client.py +53 -0
- tccli/services/emr/v20190103/api.json +228 -0
- tccli/services/emr/v20190103/examples.json +8 -0
- tccli/services/ess/v20201111/api.json +10 -10
- tccli/services/ess/v20201111/examples.json +15 -3
- tccli/services/essbasic/v20210526/api.json +5 -5
- tccli/services/essbasic/v20210526/examples.json +8 -2
- tccli/services/iotvideo/v20211125/api.json +28 -0
- tccli/services/iotvideo/v20211125/examples.json +2 -2
- tccli/services/live/v20180801/api.json +3 -3
- tccli/services/monitor/v20180724/api.json +1 -1
- tccli/services/oceanus/v20190422/api.json +32 -3
- tccli/services/oceanus/v20190422/examples.json +1 -1
- tccli/services/privatedns/v20201028/api.json +29 -19
- tccli/services/ssl/ssl_client.py +0 -53
- tccli/services/ssl/v20191205/api.json +0 -99
- tccli/services/ssl/v20191205/examples.json +0 -8
- tccli/services/teo/v20220901/api.json +14 -3
- tccli/services/teo/v20220901/examples.json +1 -1
- tccli/services/trocket/trocket_client.py +171 -12
- tccli/services/trocket/v20230308/api.json +492 -0
- tccli/services/trocket/v20230308/examples.json +30 -0
- tccli/services/wedata/v20210820/api.json +403 -49
- tccli/services/wedata/v20210820/examples.json +4 -4
- {tccli-3.0.1047.1.dist-info → tccli-3.0.1049.1.dist-info}/METADATA +2 -2
- {tccli-3.0.1047.1.dist-info → tccli-3.0.1049.1.dist-info}/RECORD +69 -62
- {tccli-3.0.1047.1.dist-info → tccli-3.0.1049.1.dist-info}/WHEEL +0 -0
- {tccli-3.0.1047.1.dist-info → tccli-3.0.1049.1.dist-info}/entry_points.txt +0 -0
- {tccli-3.0.1047.1.dist-info → tccli-3.0.1049.1.dist-info}/license_files/LICENSE +0 -0
@@ -0,0 +1,176 @@
|
|
1
|
+
**Example 1: 示例**
|
2
|
+
|
3
|
+
示例
|
4
|
+
|
5
|
+
Input:
|
6
|
+
|
7
|
+
```
|
8
|
+
tccli trocket DescribeMQTTInstanceList --cli-unfold-argument \
|
9
|
+
--Offset 0 \
|
10
|
+
--Limit 10
|
11
|
+
```
|
12
|
+
|
13
|
+
Output:
|
14
|
+
```
|
15
|
+
{
|
16
|
+
"Error": null,
|
17
|
+
"RequestId": null,
|
18
|
+
"Response": {
|
19
|
+
"Data": [
|
20
|
+
{
|
21
|
+
"ClientNumLimit": 1,
|
22
|
+
"CreateTime": 1705565760,
|
23
|
+
"InstanceId": "mqtt-wjgxr8jg",
|
24
|
+
"InstanceName": "sunjianxiong-0118-no-pub",
|
25
|
+
"InstanceStatus": "CREATE_FAILURE",
|
26
|
+
"InstanceType": "BASIC",
|
27
|
+
"Remark": "",
|
28
|
+
"SkuCode": "mqtt_1k",
|
29
|
+
"SubscriptionNumLimit": 1,
|
30
|
+
"TopicNum": 0,
|
31
|
+
"TopicNumLimit": 1,
|
32
|
+
"TpsLimit": 1,
|
33
|
+
"Version": "1"
|
34
|
+
},
|
35
|
+
{
|
36
|
+
"ClientNumLimit": 1000,
|
37
|
+
"CreateTime": 1705562417,
|
38
|
+
"InstanceId": "mqtt-7pnqmkrx",
|
39
|
+
"InstanceName": "sunjianxiong-1",
|
40
|
+
"InstanceStatus": "RUNNING",
|
41
|
+
"InstanceType": "BASIC",
|
42
|
+
"Remark": "this is remark",
|
43
|
+
"SkuCode": "basic_1k",
|
44
|
+
"SubscriptionNumLimit": 1000,
|
45
|
+
"TopicNum": 0,
|
46
|
+
"TopicNumLimit": 25,
|
47
|
+
"TpsLimit": 1000,
|
48
|
+
"Version": "1"
|
49
|
+
},
|
50
|
+
{
|
51
|
+
"ClientNumLimit": 1000,
|
52
|
+
"CreateTime": 1705562390,
|
53
|
+
"InstanceId": "mqtt-92vrwg7q",
|
54
|
+
"InstanceName": "sunjianxiong-1",
|
55
|
+
"InstanceStatus": "RUNNING",
|
56
|
+
"InstanceType": "BASIC",
|
57
|
+
"Remark": "this is remark",
|
58
|
+
"SkuCode": "basic_1k",
|
59
|
+
"SubscriptionNumLimit": 1000,
|
60
|
+
"TopicNum": 0,
|
61
|
+
"TopicNumLimit": 25,
|
62
|
+
"TpsLimit": 1000,
|
63
|
+
"Version": "1"
|
64
|
+
},
|
65
|
+
{
|
66
|
+
"ClientNumLimit": 1000,
|
67
|
+
"CreateTime": 1705562343,
|
68
|
+
"InstanceId": "mqtt-mzjj8pwq",
|
69
|
+
"InstanceName": "sunjianxiong-1",
|
70
|
+
"InstanceStatus": "RUNNING",
|
71
|
+
"InstanceType": "BASIC",
|
72
|
+
"Remark": "this is remark",
|
73
|
+
"SkuCode": "basic_1k",
|
74
|
+
"SubscriptionNumLimit": 1000,
|
75
|
+
"TopicNum": 0,
|
76
|
+
"TopicNumLimit": 25,
|
77
|
+
"TpsLimit": 1000,
|
78
|
+
"Version": "1"
|
79
|
+
},
|
80
|
+
{
|
81
|
+
"ClientNumLimit": 1000,
|
82
|
+
"CreateTime": 1705562309,
|
83
|
+
"InstanceId": "mqtt-r8wq2qbr",
|
84
|
+
"InstanceName": "sunjianxiong",
|
85
|
+
"InstanceStatus": "RUNNING",
|
86
|
+
"InstanceType": "BASIC",
|
87
|
+
"Remark": "this is remark",
|
88
|
+
"SkuCode": "basic_1k",
|
89
|
+
"SubscriptionNumLimit": 1000,
|
90
|
+
"TopicNum": 0,
|
91
|
+
"TopicNumLimit": 25,
|
92
|
+
"TpsLimit": 1000,
|
93
|
+
"Version": "1"
|
94
|
+
},
|
95
|
+
{
|
96
|
+
"ClientNumLimit": 1000,
|
97
|
+
"CreateTime": 1705481574,
|
98
|
+
"InstanceId": "mqtt-o98e9db4",
|
99
|
+
"InstanceName": "sunjianxiong-0117",
|
100
|
+
"InstanceStatus": "RUNNING",
|
101
|
+
"InstanceType": "BASIC",
|
102
|
+
"Remark": "",
|
103
|
+
"SkuCode": "basic_1k",
|
104
|
+
"SubscriptionNumLimit": 1000,
|
105
|
+
"TopicNum": 1,
|
106
|
+
"TopicNumLimit": 25,
|
107
|
+
"TpsLimit": 1000,
|
108
|
+
"Version": "1"
|
109
|
+
},
|
110
|
+
{
|
111
|
+
"ClientNumLimit": 1000,
|
112
|
+
"CreateTime": 1705391046,
|
113
|
+
"InstanceId": "mqtt-47ka4rdr",
|
114
|
+
"InstanceName": "sun-0116",
|
115
|
+
"InstanceStatus": "RUNNING",
|
116
|
+
"InstanceType": "BASIC",
|
117
|
+
"Remark": "",
|
118
|
+
"SkuCode": "basic_1k",
|
119
|
+
"SubscriptionNumLimit": 1000,
|
120
|
+
"TopicNum": 25,
|
121
|
+
"TopicNumLimit": 25,
|
122
|
+
"TpsLimit": 1000,
|
123
|
+
"Version": "1"
|
124
|
+
},
|
125
|
+
{
|
126
|
+
"ClientNumLimit": 1000,
|
127
|
+
"CreateTime": 1705386756,
|
128
|
+
"InstanceId": "mqtt-3jaepn74",
|
129
|
+
"InstanceName": "sunjianxiong",
|
130
|
+
"InstanceStatus": "RUNNING",
|
131
|
+
"InstanceType": "BASIC",
|
132
|
+
"Remark": "this is remark",
|
133
|
+
"SkuCode": "basic_1k",
|
134
|
+
"SubscriptionNumLimit": 1000,
|
135
|
+
"TopicNum": 0,
|
136
|
+
"TopicNumLimit": 25,
|
137
|
+
"TpsLimit": 1000,
|
138
|
+
"Version": "1"
|
139
|
+
},
|
140
|
+
{
|
141
|
+
"ClientNumLimit": 1000,
|
142
|
+
"CreateTime": 1705305132,
|
143
|
+
"InstanceId": "mqtt-x4r9v2xq",
|
144
|
+
"InstanceName": "sunjianxiong-0115",
|
145
|
+
"InstanceStatus": "RUNNING",
|
146
|
+
"InstanceType": "BASIC",
|
147
|
+
"Remark": "",
|
148
|
+
"SkuCode": "basic_1k",
|
149
|
+
"SubscriptionNumLimit": 1000,
|
150
|
+
"TopicNum": 1,
|
151
|
+
"TopicNumLimit": 25,
|
152
|
+
"TpsLimit": 1000,
|
153
|
+
"Version": "1"
|
154
|
+
},
|
155
|
+
{
|
156
|
+
"ClientNumLimit": 1000,
|
157
|
+
"CreateTime": 1704962679,
|
158
|
+
"InstanceId": "mqtt-o47zowaz",
|
159
|
+
"InstanceName": "sjx-0111",
|
160
|
+
"InstanceStatus": "RUNNING",
|
161
|
+
"InstanceType": "BASIC",
|
162
|
+
"Remark": "",
|
163
|
+
"SkuCode": "basic_1k",
|
164
|
+
"SubscriptionNumLimit": 1000,
|
165
|
+
"TopicNum": 0,
|
166
|
+
"TopicNumLimit": 1000,
|
167
|
+
"TpsLimit": 1000,
|
168
|
+
"Version": "1"
|
169
|
+
}
|
170
|
+
],
|
171
|
+
"RequestId": "9424369d-904f-4fa2-b407-0bd5e536e989",
|
172
|
+
"TotalCount": 10
|
173
|
+
}
|
174
|
+
}
|
175
|
+
```
|
176
|
+
|
@@ -0,0 +1,94 @@
|
|
1
|
+
**Example 1: 标志示例**
|
2
|
+
|
3
|
+
标志示例
|
4
|
+
|
5
|
+
Input:
|
6
|
+
|
7
|
+
```
|
8
|
+
tccli trocket DescribeMQTTProductSKUList --cli-unfold-argument ```
|
9
|
+
|
10
|
+
Output:
|
11
|
+
```
|
12
|
+
{
|
13
|
+
"Error": null,
|
14
|
+
"RequestId": null,
|
15
|
+
"Response": {
|
16
|
+
"MQTTProductSkuList": [
|
17
|
+
{
|
18
|
+
"ClientNumLimit": 1,
|
19
|
+
"InstanceType": "BASIC",
|
20
|
+
"OnSale": true,
|
21
|
+
"ProxySpecCore": 2,
|
22
|
+
"ProxySpecCount": 1,
|
23
|
+
"ProxySpecMemory": 4,
|
24
|
+
"SkuCode": "mqtt_1k",
|
25
|
+
"SubscriptionNumLimit": 1,
|
26
|
+
"TopicNumLimit": 1,
|
27
|
+
"TpsLimit": 1
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"ClientNumLimit": 1000,
|
31
|
+
"InstanceType": "BASIC",
|
32
|
+
"OnSale": true,
|
33
|
+
"ProxySpecCore": 1,
|
34
|
+
"ProxySpecCount": 2,
|
35
|
+
"ProxySpecMemory": 2,
|
36
|
+
"SkuCode": "basic_1k",
|
37
|
+
"SubscriptionNumLimit": 1000,
|
38
|
+
"TopicNumLimit": 25,
|
39
|
+
"TpsLimit": 1000
|
40
|
+
}
|
41
|
+
],
|
42
|
+
"RequestId": "2be05982-b125-4259-b965-c487949cd896",
|
43
|
+
"TotalCount": 2
|
44
|
+
}
|
45
|
+
}
|
46
|
+
```
|
47
|
+
|
48
|
+
**Example 2: 示例**
|
49
|
+
|
50
|
+
示例
|
51
|
+
|
52
|
+
Input:
|
53
|
+
|
54
|
+
```
|
55
|
+
tccli trocket DescribeMQTTProductSKUList --cli-unfold-argument ```
|
56
|
+
|
57
|
+
Output:
|
58
|
+
```
|
59
|
+
{
|
60
|
+
"Error": null,
|
61
|
+
"RequestId": null,
|
62
|
+
"Response": {
|
63
|
+
"MQTTProductSkuList": [
|
64
|
+
{
|
65
|
+
"ClientNumLimit": 1,
|
66
|
+
"InstanceType": "BASIC",
|
67
|
+
"OnSale": true,
|
68
|
+
"ProxySpecCore": 2,
|
69
|
+
"ProxySpecCount": 1,
|
70
|
+
"ProxySpecMemory": 4,
|
71
|
+
"SkuCode": "mqtt_1k",
|
72
|
+
"SubscriptionNumLimit": 1,
|
73
|
+
"TopicNumLimit": 1,
|
74
|
+
"TpsLimit": 1
|
75
|
+
},
|
76
|
+
{
|
77
|
+
"ClientNumLimit": 1000,
|
78
|
+
"InstanceType": "BASIC",
|
79
|
+
"OnSale": true,
|
80
|
+
"ProxySpecCore": 1,
|
81
|
+
"ProxySpecCount": 2,
|
82
|
+
"ProxySpecMemory": 2,
|
83
|
+
"SkuCode": "basic_1k",
|
84
|
+
"SubscriptionNumLimit": 1000,
|
85
|
+
"TopicNumLimit": 25,
|
86
|
+
"TpsLimit": 1000
|
87
|
+
}
|
88
|
+
],
|
89
|
+
"RequestId": "73a1275e-26ce-494c-90d0-d7f9d0510730",
|
90
|
+
"TotalCount": 2
|
91
|
+
}
|
92
|
+
}
|
93
|
+
```
|
94
|
+
|
@@ -1,23 +1,26 @@
|
|
1
|
-
**Example 1:
|
2
|
-
|
1
|
+
**Example 1: f**
|
3
2
|
|
3
|
+
w
|
4
4
|
|
5
5
|
Input:
|
6
6
|
|
7
7
|
```
|
8
8
|
tccli wedata DeleteCustomFunction --cli-unfold-argument \
|
9
|
-
--ClusterIdentifier
|
10
|
-
--FunctionId
|
11
|
-
--ProjectId
|
9
|
+
--ClusterIdentifier sdf \
|
10
|
+
--FunctionId sdfsdf \
|
11
|
+
--ProjectId sdfsdf \
|
12
|
+
--FunctionName sdfsdf
|
12
13
|
```
|
13
14
|
|
14
15
|
Output:
|
15
16
|
```
|
16
17
|
{
|
17
18
|
"Response": {
|
18
|
-
"
|
19
|
-
|
20
|
-
|
19
|
+
"Error": {
|
20
|
+
"Code": "FailedOperation",
|
21
|
+
"Message": "系统内部异常:NumberFormatException: For input string: \"sdfsdf\""
|
22
|
+
},
|
23
|
+
"RequestId": "fde6b682-e482-44d9-b774-9d97b30446f5"
|
21
24
|
}
|
22
25
|
}
|
23
26
|
```
|
@@ -225,6 +225,58 @@ def doDescribeL7RulesBySSLCertId(args, parsed_globals):
|
|
225
225
|
FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
|
226
226
|
|
227
227
|
|
228
|
+
def doDescribeBGPIPL7Rules(args, parsed_globals):
|
229
|
+
g_param = parse_global_arg(parsed_globals)
|
230
|
+
|
231
|
+
if g_param[OptionsDefine.UseCVMRole.replace('-', '_')]:
|
232
|
+
cred = credential.CVMRoleCredential()
|
233
|
+
elif g_param[OptionsDefine.RoleArn.replace('-', '_')] and g_param[OptionsDefine.RoleSessionName.replace('-', '_')]:
|
234
|
+
cred = credential.STSAssumeRoleCredential(
|
235
|
+
g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.RoleArn.replace('-', '_')],
|
236
|
+
g_param[OptionsDefine.RoleSessionName.replace('-', '_')], endpoint=g_param["sts_cred_endpoint"]
|
237
|
+
)
|
238
|
+
elif os.getenv(OptionsDefine.ENV_TKE_REGION) and os.getenv(OptionsDefine.ENV_TKE_PROVIDER_ID) and os.getenv(OptionsDefine.ENV_TKE_WEB_IDENTITY_TOKEN_FILE) and os.getenv(OptionsDefine.ENV_TKE_ROLE_ARN):
|
239
|
+
cred = credential.DefaultTkeOIDCRoleArnProvider().get_credentials()
|
240
|
+
else:
|
241
|
+
cred = credential.Credential(
|
242
|
+
g_param[OptionsDefine.SecretId], g_param[OptionsDefine.SecretKey], g_param[OptionsDefine.Token]
|
243
|
+
)
|
244
|
+
http_profile = HttpProfile(
|
245
|
+
reqTimeout=60 if g_param[OptionsDefine.Timeout] is None else int(g_param[OptionsDefine.Timeout]),
|
246
|
+
reqMethod="POST",
|
247
|
+
endpoint=g_param[OptionsDefine.Endpoint],
|
248
|
+
proxy=g_param[OptionsDefine.HttpsProxy.replace('-', '_')]
|
249
|
+
)
|
250
|
+
profile = ClientProfile(httpProfile=http_profile, signMethod="HmacSHA256")
|
251
|
+
if g_param[OptionsDefine.Language]:
|
252
|
+
profile.language = g_param[OptionsDefine.Language]
|
253
|
+
mod = CLIENT_MAP[g_param[OptionsDefine.Version]]
|
254
|
+
client = mod.AntiddosClient(cred, g_param[OptionsDefine.Region], profile)
|
255
|
+
client._sdkVersion += ("_CLI_" + __version__)
|
256
|
+
models = MODELS_MAP[g_param[OptionsDefine.Version]]
|
257
|
+
model = models.DescribeBGPIPL7RulesRequest()
|
258
|
+
model.from_json_string(json.dumps(args))
|
259
|
+
start_time = time.time()
|
260
|
+
while True:
|
261
|
+
rsp = client.DescribeBGPIPL7Rules(model)
|
262
|
+
result = rsp.to_json_string()
|
263
|
+
try:
|
264
|
+
json_obj = json.loads(result)
|
265
|
+
except TypeError as e:
|
266
|
+
json_obj = json.loads(result.decode('utf-8')) # python3.3
|
267
|
+
if not g_param[OptionsDefine.Waiter] or search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj) == g_param['OptionsDefine.WaiterInfo']['to']:
|
268
|
+
break
|
269
|
+
cur_time = time.time()
|
270
|
+
if cur_time - start_time >= g_param['OptionsDefine.WaiterInfo']['timeout']:
|
271
|
+
raise ClientError('Request timeout, wait `%s` to `%s` timeout, last request is %s' %
|
272
|
+
(g_param['OptionsDefine.WaiterInfo']['expr'], g_param['OptionsDefine.WaiterInfo']['to'],
|
273
|
+
search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj)))
|
274
|
+
else:
|
275
|
+
print('Inquiry result is %s.' % search(g_param['OptionsDefine.WaiterInfo']['expr'], json_obj))
|
276
|
+
time.sleep(g_param['OptionsDefine.WaiterInfo']['interval'])
|
277
|
+
FormatOutput.output("action", json_obj, g_param[OptionsDefine.Output], g_param[OptionsDefine.Filter])
|
278
|
+
|
279
|
+
|
228
280
|
def doDescribeListIPAlarmConfig(args, parsed_globals):
|
229
281
|
g_param = parse_global_arg(parsed_globals)
|
230
282
|
|
@@ -4972,6 +5024,7 @@ ACTION_MAP = {
|
|
4972
5024
|
"ModifyDDoSBlackWhiteIpList": doModifyDDoSBlackWhiteIpList,
|
4973
5025
|
"DescribePendingRiskInfo": doDescribePendingRiskInfo,
|
4974
5026
|
"DescribeL7RulesBySSLCertId": doDescribeL7RulesBySSLCertId,
|
5027
|
+
"DescribeBGPIPL7Rules": doDescribeBGPIPL7Rules,
|
4975
5028
|
"DescribeListIPAlarmConfig": doDescribeListIPAlarmConfig,
|
4976
5029
|
"DescribeDefaultAlarmThreshold": doDescribeDefaultAlarmThreshold,
|
4977
5030
|
"DescribeDDoSConnectLimitList": doDescribeDDoSConnectLimitList,
|