@elizaos/prompts 2.0.0-alpha.41 → 2.0.0-alpha.44
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.
package/dist/python/prompts.py
CHANGED
|
@@ -143,7 +143,7 @@ MESSAGE_HANDLER_TEMPLATE = """<task>Generate dialog and actions for the characte
|
|
|
143
143
|
</providers>
|
|
144
144
|
|
|
145
145
|
<instructions>
|
|
146
|
-
Write a thought and plan for {{agentName}} and decide what actions to take.
|
|
146
|
+
Write a thought and plan for {{agentName}} and decide what actions to take. Also include the providers that {{agentName}} will use to have the right context for responding and acting, if any.
|
|
147
147
|
|
|
148
148
|
IMPORTANT ACTION ORDERING RULES:
|
|
149
149
|
- Actions are executed in the ORDER you list them - the order MATTERS!
|
|
@@ -164,6 +164,28 @@ IMPORTANT ACTION PARAMETERS:
|
|
|
164
164
|
- Required parameters MUST be provided; optional parameters can be omitted if not mentioned
|
|
165
165
|
- If you cannot determine a required parameter value, ask the user for clarification in your <text>
|
|
166
166
|
|
|
167
|
+
EXAMPLE (action parameters):
|
|
168
|
+
User message: "Send a message to @dev_guru on telegram saying Hello!"
|
|
169
|
+
Actions: REPLY,SEND_MESSAGE
|
|
170
|
+
Params:
|
|
171
|
+
<params>
|
|
172
|
+
<SEND_MESSAGE>
|
|
173
|
+
<targetType>user</targetType>
|
|
174
|
+
<source>telegram</source>
|
|
175
|
+
<target>dev_guru</target>
|
|
176
|
+
<text>Hello!</text>
|
|
177
|
+
</SEND_MESSAGE>
|
|
178
|
+
</params>
|
|
179
|
+
|
|
180
|
+
IMPORTANT PROVIDER SELECTION RULES:
|
|
181
|
+
- Only include providers if they are needed to respond accurately.
|
|
182
|
+
- If the message mentions images, photos, pictures, attachments, or visual content, OR if you see "(Attachments:" in the conversation, you MUST include "ATTACHMENTS" in your providers list
|
|
183
|
+
- If the message asks about or references specific people, include "ENTITIES" in your providers list
|
|
184
|
+
- If the message asks about relationships or connections between people, include "RELATIONSHIPS" in your providers list
|
|
185
|
+
- If the message asks about facts or specific information, include "FACTS" in your providers list
|
|
186
|
+
- If the message asks about the environment or world context, include "WORLD" in your providers list
|
|
187
|
+
- If no additional context is needed, you may leave the providers list empty.
|
|
188
|
+
|
|
167
189
|
IMPORTANT CODE BLOCK FORMATTING RULES:
|
|
168
190
|
- If {{agentName}} includes code examples, snippets, or multi-line code in the response, ALWAYS wrap the code with ``` fenced code blocks (specify the language if known, e.g., ```python).
|
|
169
191
|
- ONLY use fenced code blocks for actual code. Do NOT wrap non-code text, instructions, or single words in fenced code blocks.
|
|
@@ -176,6 +198,7 @@ First, think about what you want to do next and plan your actions. Then, write t
|
|
|
176
198
|
<keys>
|
|
177
199
|
"thought" should be a short description of what the agent is thinking about and planning.
|
|
178
200
|
"actions" should be a comma-separated list of the actions {{agentName}} plans to take based on the thought, IN THE ORDER THEY SHOULD BE EXECUTED (if none, use IGNORE, if simply responding with text, use REPLY)
|
|
201
|
+
"providers" should be a comma-separated list of the providers that {{agentName}} will use to have the right context for responding and acting (NEVER use "IGNORE" as a provider - use specific provider names like ATTACHMENTS, ENTITIES, FACTS, KNOWLEDGE, etc.)
|
|
179
202
|
"text" should be the text of the next message for {{agentName}} which they will send to the conversation.
|
|
180
203
|
"params" (optional) should contain action parameters when actions require input. Format as nested XML with action name as wrapper.
|
|
181
204
|
</keys>
|
|
@@ -188,6 +211,7 @@ Respond using XML format like this:
|
|
|
188
211
|
<response>
|
|
189
212
|
<thought>Your thought here</thought>
|
|
190
213
|
<actions>ACTION1,ACTION2</actions>
|
|
214
|
+
<providers>PROVIDER1,PROVIDER2</providers>
|
|
191
215
|
<text>Your response text here</text>
|
|
192
216
|
<params>
|
|
193
217
|
<ACTION1>
|
|
@@ -238,7 +262,6 @@ These are the actions or data provider calls that have already been used in this
|
|
|
238
262
|
"thought" Clearly explain your reasoning for the selected providers and/or action, and how this step contributes to resolving the user's request.
|
|
239
263
|
"action" Name of the action to execute after providers return (can be empty if no action is needed).
|
|
240
264
|
"providers" List of provider names to call in this step (can be empty if none are needed).
|
|
241
|
-
"params" Optional XML parameters for the selected action. Use nested XML only when the action needs input.
|
|
242
265
|
"isFinish" Set to true only if the task is fully complete.
|
|
243
266
|
</keys>
|
|
244
267
|
|
|
@@ -249,11 +272,6 @@ These are the actions or data provider calls that have already been used in this
|
|
|
249
272
|
<thought>Your thought here</thought>
|
|
250
273
|
<action>ACTION</action>
|
|
251
274
|
<providers>PROVIDER1,PROVIDER2</providers>
|
|
252
|
-
<params>
|
|
253
|
-
<ACTION>
|
|
254
|
-
<paramName>value</paramName>
|
|
255
|
-
</ACTION>
|
|
256
|
-
</params>
|
|
257
275
|
<isFinish>true | false</isFinish>
|
|
258
276
|
</response>
|
|
259
277
|
</output>"""
|
package/dist/rust/prompts.rs
CHANGED
|
@@ -139,7 +139,7 @@ pub const MESSAGE_HANDLER_TEMPLATE: &str = r#"<task>Generate dialog and actions
|
|
|
139
139
|
</providers>
|
|
140
140
|
|
|
141
141
|
<instructions>
|
|
142
|
-
Write a thought and plan for {{agentName}} and decide what actions to take.
|
|
142
|
+
Write a thought and plan for {{agentName}} and decide what actions to take. Also include the providers that {{agentName}} will use to have the right context for responding and acting, if any.
|
|
143
143
|
|
|
144
144
|
IMPORTANT ACTION ORDERING RULES:
|
|
145
145
|
- Actions are executed in the ORDER you list them - the order MATTERS!
|
|
@@ -160,6 +160,28 @@ IMPORTANT ACTION PARAMETERS:
|
|
|
160
160
|
- Required parameters MUST be provided; optional parameters can be omitted if not mentioned
|
|
161
161
|
- If you cannot determine a required parameter value, ask the user for clarification in your <text>
|
|
162
162
|
|
|
163
|
+
EXAMPLE (action parameters):
|
|
164
|
+
User message: "Send a message to @dev_guru on telegram saying Hello!"
|
|
165
|
+
Actions: REPLY,SEND_MESSAGE
|
|
166
|
+
Params:
|
|
167
|
+
<params>
|
|
168
|
+
<SEND_MESSAGE>
|
|
169
|
+
<targetType>user</targetType>
|
|
170
|
+
<source>telegram</source>
|
|
171
|
+
<target>dev_guru</target>
|
|
172
|
+
<text>Hello!</text>
|
|
173
|
+
</SEND_MESSAGE>
|
|
174
|
+
</params>
|
|
175
|
+
|
|
176
|
+
IMPORTANT PROVIDER SELECTION RULES:
|
|
177
|
+
- Only include providers if they are needed to respond accurately.
|
|
178
|
+
- If the message mentions images, photos, pictures, attachments, or visual content, OR if you see "(Attachments:" in the conversation, you MUST include "ATTACHMENTS" in your providers list
|
|
179
|
+
- If the message asks about or references specific people, include "ENTITIES" in your providers list
|
|
180
|
+
- If the message asks about relationships or connections between people, include "RELATIONSHIPS" in your providers list
|
|
181
|
+
- If the message asks about facts or specific information, include "FACTS" in your providers list
|
|
182
|
+
- If the message asks about the environment or world context, include "WORLD" in your providers list
|
|
183
|
+
- If no additional context is needed, you may leave the providers list empty.
|
|
184
|
+
|
|
163
185
|
IMPORTANT CODE BLOCK FORMATTING RULES:
|
|
164
186
|
- If {{agentName}} includes code examples, snippets, or multi-line code in the response, ALWAYS wrap the code with ``` fenced code blocks (specify the language if known, e.g., ```python).
|
|
165
187
|
- ONLY use fenced code blocks for actual code. Do NOT wrap non-code text, instructions, or single words in fenced code blocks.
|
|
@@ -172,6 +194,7 @@ First, think about what you want to do next and plan your actions. Then, write t
|
|
|
172
194
|
<keys>
|
|
173
195
|
"thought" should be a short description of what the agent is thinking about and planning.
|
|
174
196
|
"actions" should be a comma-separated list of the actions {{agentName}} plans to take based on the thought, IN THE ORDER THEY SHOULD BE EXECUTED (if none, use IGNORE, if simply responding with text, use REPLY)
|
|
197
|
+
"providers" should be a comma-separated list of the providers that {{agentName}} will use to have the right context for responding and acting (NEVER use "IGNORE" as a provider - use specific provider names like ATTACHMENTS, ENTITIES, FACTS, KNOWLEDGE, etc.)
|
|
175
198
|
"text" should be the text of the next message for {{agentName}} which they will send to the conversation.
|
|
176
199
|
"params" (optional) should contain action parameters when actions require input. Format as nested XML with action name as wrapper.
|
|
177
200
|
</keys>
|
|
@@ -184,6 +207,7 @@ Respond using XML format like this:
|
|
|
184
207
|
<response>
|
|
185
208
|
<thought>Your thought here</thought>
|
|
186
209
|
<actions>ACTION1,ACTION2</actions>
|
|
210
|
+
<providers>PROVIDER1,PROVIDER2</providers>
|
|
187
211
|
<text>Your response text here</text>
|
|
188
212
|
<params>
|
|
189
213
|
<ACTION1>
|
|
@@ -234,7 +258,6 @@ These are the actions or data provider calls that have already been used in this
|
|
|
234
258
|
"thought" Clearly explain your reasoning for the selected providers and/or action, and how this step contributes to resolving the user's request.
|
|
235
259
|
"action" Name of the action to execute after providers return (can be empty if no action is needed).
|
|
236
260
|
"providers" List of provider names to call in this step (can be empty if none are needed).
|
|
237
|
-
"params" Optional XML parameters for the selected action. Use nested XML only when the action needs input.
|
|
238
261
|
"isFinish" Set to true only if the task is fully complete.
|
|
239
262
|
</keys>
|
|
240
263
|
|
|
@@ -245,11 +268,6 @@ These are the actions or data provider calls that have already been used in this
|
|
|
245
268
|
<thought>Your thought here</thought>
|
|
246
269
|
<action>ACTION</action>
|
|
247
270
|
<providers>PROVIDER1,PROVIDER2</providers>
|
|
248
|
-
<params>
|
|
249
|
-
<ACTION>
|
|
250
|
-
<paramName>value</paramName>
|
|
251
|
-
</ACTION>
|
|
252
|
-
</params>
|
|
253
271
|
<isFinish>true | false</isFinish>
|
|
254
272
|
</response>
|
|
255
273
|
</output>"#;
|
package/dist/typescript/index.ts
CHANGED
|
@@ -155,7 +155,7 @@ export const messageHandlerTemplate = `<task>Generate dialog and actions for the
|
|
|
155
155
|
</providers>
|
|
156
156
|
|
|
157
157
|
<instructions>
|
|
158
|
-
Write a thought and plan for {{agentName}} and decide what actions to take.
|
|
158
|
+
Write a thought and plan for {{agentName}} and decide what actions to take. Also include the providers that {{agentName}} will use to have the right context for responding and acting, if any.
|
|
159
159
|
|
|
160
160
|
IMPORTANT ACTION ORDERING RULES:
|
|
161
161
|
- Actions are executed in the ORDER you list them - the order MATTERS!
|
|
@@ -176,6 +176,28 @@ IMPORTANT ACTION PARAMETERS:
|
|
|
176
176
|
- Required parameters MUST be provided; optional parameters can be omitted if not mentioned
|
|
177
177
|
- If you cannot determine a required parameter value, ask the user for clarification in your <text>
|
|
178
178
|
|
|
179
|
+
EXAMPLE (action parameters):
|
|
180
|
+
User message: "Send a message to @dev_guru on telegram saying Hello!"
|
|
181
|
+
Actions: REPLY,SEND_MESSAGE
|
|
182
|
+
Params:
|
|
183
|
+
<params>
|
|
184
|
+
<SEND_MESSAGE>
|
|
185
|
+
<targetType>user</targetType>
|
|
186
|
+
<source>telegram</source>
|
|
187
|
+
<target>dev_guru</target>
|
|
188
|
+
<text>Hello!</text>
|
|
189
|
+
</SEND_MESSAGE>
|
|
190
|
+
</params>
|
|
191
|
+
|
|
192
|
+
IMPORTANT PROVIDER SELECTION RULES:
|
|
193
|
+
- Only include providers if they are needed to respond accurately.
|
|
194
|
+
- If the message mentions images, photos, pictures, attachments, or visual content, OR if you see "(Attachments:" in the conversation, you MUST include "ATTACHMENTS" in your providers list
|
|
195
|
+
- If the message asks about or references specific people, include "ENTITIES" in your providers list
|
|
196
|
+
- If the message asks about relationships or connections between people, include "RELATIONSHIPS" in your providers list
|
|
197
|
+
- If the message asks about facts or specific information, include "FACTS" in your providers list
|
|
198
|
+
- If the message asks about the environment or world context, include "WORLD" in your providers list
|
|
199
|
+
- If no additional context is needed, you may leave the providers list empty.
|
|
200
|
+
|
|
179
201
|
IMPORTANT CODE BLOCK FORMATTING RULES:
|
|
180
202
|
- If {{agentName}} includes code examples, snippets, or multi-line code in the response, ALWAYS wrap the code with \`\`\` fenced code blocks (specify the language if known, e.g., \`\`\`python).
|
|
181
203
|
- ONLY use fenced code blocks for actual code. Do NOT wrap non-code text, instructions, or single words in fenced code blocks.
|
|
@@ -188,6 +210,7 @@ First, think about what you want to do next and plan your actions. Then, write t
|
|
|
188
210
|
<keys>
|
|
189
211
|
"thought" should be a short description of what the agent is thinking about and planning.
|
|
190
212
|
"actions" should be a comma-separated list of the actions {{agentName}} plans to take based on the thought, IN THE ORDER THEY SHOULD BE EXECUTED (if none, use IGNORE, if simply responding with text, use REPLY)
|
|
213
|
+
"providers" should be a comma-separated list of the providers that {{agentName}} will use to have the right context for responding and acting (NEVER use "IGNORE" as a provider - use specific provider names like ATTACHMENTS, ENTITIES, FACTS, KNOWLEDGE, etc.)
|
|
191
214
|
"text" should be the text of the next message for {{agentName}} which they will send to the conversation.
|
|
192
215
|
"params" (optional) should contain action parameters when actions require input. Format as nested XML with action name as wrapper.
|
|
193
216
|
</keys>
|
|
@@ -200,6 +223,7 @@ Respond using XML format like this:
|
|
|
200
223
|
<response>
|
|
201
224
|
<thought>Your thought here</thought>
|
|
202
225
|
<actions>ACTION1,ACTION2</actions>
|
|
226
|
+
<providers>PROVIDER1,PROVIDER2</providers>
|
|
203
227
|
<text>Your response text here</text>
|
|
204
228
|
<params>
|
|
205
229
|
<ACTION1>
|
|
@@ -252,7 +276,6 @@ These are the actions or data provider calls that have already been used in this
|
|
|
252
276
|
"thought" Clearly explain your reasoning for the selected providers and/or action, and how this step contributes to resolving the user's request.
|
|
253
277
|
"action" Name of the action to execute after providers return (can be empty if no action is needed).
|
|
254
278
|
"providers" List of provider names to call in this step (can be empty if none are needed).
|
|
255
|
-
"params" Optional XML parameters for the selected action. Use nested XML only when the action needs input.
|
|
256
279
|
"isFinish" Set to true only if the task is fully complete.
|
|
257
280
|
</keys>
|
|
258
281
|
|
|
@@ -263,11 +286,6 @@ These are the actions or data provider calls that have already been used in this
|
|
|
263
286
|
<thought>Your thought here</thought>
|
|
264
287
|
<action>ACTION</action>
|
|
265
288
|
<providers>PROVIDER1,PROVIDER2</providers>
|
|
266
|
-
<params>
|
|
267
|
-
<ACTION>
|
|
268
|
-
<paramName>value</paramName>
|
|
269
|
-
</ACTION>
|
|
270
|
-
</params>
|
|
271
289
|
<isFinish>true | false</isFinish>
|
|
272
290
|
</response>
|
|
273
291
|
</output>`;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/prompts",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.0.0-alpha.
|
|
4
|
+
"version": "2.0.0-alpha.44",
|
|
5
5
|
"description": "Shared prompt templates for elizaOS across TypeScript, Python, and Rust",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/typescript/index.ts",
|
|
@@ -23,10 +23,9 @@
|
|
|
23
23
|
"build:plugin-action-spec": "node scripts/generate-plugin-action-spec.js",
|
|
24
24
|
"check:secrets": "node scripts/check-secrets.js",
|
|
25
25
|
"clean": "rm -rf dist",
|
|
26
|
-
"lint": "bunx @biomejs/biome check --write
|
|
26
|
+
"lint": "bunx @biomejs/biome check --write .",
|
|
27
27
|
"lint:check": "bunx @biomejs/biome check .",
|
|
28
|
-
"typecheck": "echo 'No TypeScript source files to check'"
|
|
29
|
-
"test": "node --test test/*.test.js"
|
|
28
|
+
"typecheck": "echo 'No TypeScript source files to check'"
|
|
30
29
|
},
|
|
31
30
|
"files": [
|
|
32
31
|
"prompts/",
|
|
@@ -44,5 +43,5 @@
|
|
|
44
43
|
"publishConfig": {
|
|
45
44
|
"access": "public"
|
|
46
45
|
},
|
|
47
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "2b27a4e70ebdf054b117b87ed9e8f9f709fe006b"
|
|
48
47
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
</providers>
|
|
6
6
|
|
|
7
7
|
<instructions>
|
|
8
|
-
Write a thought and plan for {{agentName}} and decide what actions to take.
|
|
8
|
+
Write a thought and plan for {{agentName}} and decide what actions to take. Also include the providers that {{agentName}} will use to have the right context for responding and acting, if any.
|
|
9
9
|
|
|
10
10
|
IMPORTANT ACTION ORDERING RULES:
|
|
11
11
|
- Actions are executed in the ORDER you list them - the order MATTERS!
|
|
@@ -26,6 +26,28 @@ IMPORTANT ACTION PARAMETERS:
|
|
|
26
26
|
- Required parameters MUST be provided; optional parameters can be omitted if not mentioned
|
|
27
27
|
- If you cannot determine a required parameter value, ask the user for clarification in your <text>
|
|
28
28
|
|
|
29
|
+
EXAMPLE (action parameters):
|
|
30
|
+
User message: "Send a message to @dev_guru on telegram saying Hello!"
|
|
31
|
+
Actions: REPLY,SEND_MESSAGE
|
|
32
|
+
Params:
|
|
33
|
+
<params>
|
|
34
|
+
<SEND_MESSAGE>
|
|
35
|
+
<targetType>user</targetType>
|
|
36
|
+
<source>telegram</source>
|
|
37
|
+
<target>dev_guru</target>
|
|
38
|
+
<text>Hello!</text>
|
|
39
|
+
</SEND_MESSAGE>
|
|
40
|
+
</params>
|
|
41
|
+
|
|
42
|
+
IMPORTANT PROVIDER SELECTION RULES:
|
|
43
|
+
- Only include providers if they are needed to respond accurately.
|
|
44
|
+
- If the message mentions images, photos, pictures, attachments, or visual content, OR if you see "(Attachments:" in the conversation, you MUST include "ATTACHMENTS" in your providers list
|
|
45
|
+
- If the message asks about or references specific people, include "ENTITIES" in your providers list
|
|
46
|
+
- If the message asks about relationships or connections between people, include "RELATIONSHIPS" in your providers list
|
|
47
|
+
- If the message asks about facts or specific information, include "FACTS" in your providers list
|
|
48
|
+
- If the message asks about the environment or world context, include "WORLD" in your providers list
|
|
49
|
+
- If no additional context is needed, you may leave the providers list empty.
|
|
50
|
+
|
|
29
51
|
IMPORTANT CODE BLOCK FORMATTING RULES:
|
|
30
52
|
- If {{agentName}} includes code examples, snippets, or multi-line code in the response, ALWAYS wrap the code with ``` fenced code blocks (specify the language if known, e.g., ```python).
|
|
31
53
|
- ONLY use fenced code blocks for actual code. Do NOT wrap non-code text, instructions, or single words in fenced code blocks.
|
|
@@ -38,6 +60,7 @@ First, think about what you want to do next and plan your actions. Then, write t
|
|
|
38
60
|
<keys>
|
|
39
61
|
"thought" should be a short description of what the agent is thinking about and planning.
|
|
40
62
|
"actions" should be a comma-separated list of the actions {{agentName}} plans to take based on the thought, IN THE ORDER THEY SHOULD BE EXECUTED (if none, use IGNORE, if simply responding with text, use REPLY)
|
|
63
|
+
"providers" should be a comma-separated list of the providers that {{agentName}} will use to have the right context for responding and acting (NEVER use "IGNORE" as a provider - use specific provider names like ATTACHMENTS, ENTITIES, FACTS, KNOWLEDGE, etc.)
|
|
41
64
|
"text" should be the text of the next message for {{agentName}} which they will send to the conversation.
|
|
42
65
|
"params" (optional) should contain action parameters when actions require input. Format as nested XML with action name as wrapper.
|
|
43
66
|
</keys>
|
|
@@ -50,6 +73,7 @@ Respond using XML format like this:
|
|
|
50
73
|
<response>
|
|
51
74
|
<thought>Your thought here</thought>
|
|
52
75
|
<actions>ACTION1,ACTION2</actions>
|
|
76
|
+
<providers>PROVIDER1,PROVIDER2</providers>
|
|
53
77
|
<text>Your response text here</text>
|
|
54
78
|
<params>
|
|
55
79
|
<ACTION1>
|
|
@@ -73,3 +97,4 @@ IMPORTANT: Your response must ONLY contain the <response></response> XML block a
|
|
|
73
97
|
|
|
74
98
|
|
|
75
99
|
|
|
100
|
+
|
|
@@ -30,7 +30,6 @@ These are the actions or data provider calls that have already been used in this
|
|
|
30
30
|
"thought" Clearly explain your reasoning for the selected providers and/or action, and how this step contributes to resolving the user's request.
|
|
31
31
|
"action" Name of the action to execute after providers return (can be empty if no action is needed).
|
|
32
32
|
"providers" List of provider names to call in this step (can be empty if none are needed).
|
|
33
|
-
"params" Optional XML parameters for the selected action. Use nested XML only when the action needs input.
|
|
34
33
|
"isFinish" Set to true only if the task is fully complete.
|
|
35
34
|
</keys>
|
|
36
35
|
|
|
@@ -41,11 +40,6 @@ These are the actions or data provider calls that have already been used in this
|
|
|
41
40
|
<thought>Your thought here</thought>
|
|
42
41
|
<action>ACTION</action>
|
|
43
42
|
<providers>PROVIDER1,PROVIDER2</providers>
|
|
44
|
-
<params>
|
|
45
|
-
<ACTION>
|
|
46
|
-
<paramName>value</paramName>
|
|
47
|
-
</ACTION>
|
|
48
|
-
</params>
|
|
49
43
|
<isFinish>true | false</isFinish>
|
|
50
44
|
</response>
|
|
51
45
|
</output>
|
|
@@ -55,3 +49,4 @@ These are the actions or data provider calls that have already been used in this
|
|
|
55
49
|
|
|
56
50
|
|
|
57
51
|
|
|
52
|
+
|