Answer from a local model by default, and export the conversation Two things, both about a session not asking for what it can work out. `--model` is no longer needed to reach Ollama. With no model named, a machine already running one answers from it. That is the cheaper and more private default, and it is the one a reader who installed Ollama meant: naming the model every time to get the model they already chose is a flag carrying no decision. The most recently modified model wins, which with one installed is no choice at all and with several is the one last pulled. The hosted backends stay one `--model` away and `--offline` asks for neither. The probe runs before the first prompt of every session, so it has a short deadline and treats a refusal, a timeout, and an empty library as the same answer: nothing to answer from. A machine with no Ollama pays 15ms for the question, and one behind a black hole pays the 300ms deadline. `/export` writes the conversation as an ATIF trajectory under `~/.openagents/exports` and puts the path on the clipboard. ATIF is what the rest of this system already speaks -- `OpenAgents.DataRights.AtifExport` writes an account's conversation as ATIF v1.7, and the trajectories other agents ship carry the same envelope -- so a coder session should not be the one thing in the workspace its own tools cannot read. The output validates against the reference Pydantic models in the ATIF implementation the format's own docs point at, not merely against this reading of the spec. The mapping is narrow and says what it leaves out. A `you` entry is a user step, an assistant entry an agent step, reasoning attaches to the step it preceded, and a tool entry becomes that step's `tool_calls` and `observation`. Notices are the interface talking to the reader and never reached a model, so they are not steps -- they are kept under `extra`, where they still explain the steps either side of them. `/export`, `/system` and `/skills` are left out for the same reason: a trajectory recording `/export` as a turn is describing the act of exporting rather than the work. Arguments that will not parse are kept under a key that says so, because a trajectory that silently loses what a model asked for is worse than one admitting it could not read it. Entries now carry the time they opened. A trajectory is a sequence of timed steps, and reconstructing that from the order alone would be inventing it. Written under the home directory rather than the repository: a record of what happened is not a change to the work and should not turn up in anyone's `git status`. The clipboard is best effort -- pbcopy, clip, or one of the Wayland and X tools -- and the path is printed either way. 324 tests pass, 15 new: ten on the mapping, four on the probe's failure modes, and one that `/export` never reaches the model.
Answer from a local model by default, and export the conversation
Deploy story
What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.
Not deployed through the forge lane
No push, promotion, build, or deploy receipt references this commit (receipts are scanned over a bounded recent window). Changes shipped by full node replacement carry their proof in the release gate receipt instead.
Changed files
-
modified
docs/assure-repo/false-green-candidates.v1.json -
modified
docs/assure-repo/surface-inventory.v1.json -
modified
packages/openagents-cli/src/cli.ts -
added
packages/openagents-cli/src/coder-export.ts -
modified
packages/openagents-cli/src/coder-ollama.ts -
modified
packages/openagents-cli/src/coder-session.ts -
modified
packages/openagents-cli/src/coder-thread.ts -
modified
packages/openagents-cli/src/coder-ui.ts -
added
packages/openagents-cli/test/coder-export.test.ts -
modified
packages/openagents-cli/test/coder-ollama.test.ts -
modified
packages/openagents-cli/test/coder-session.test.ts
Diff
11 files changed, +631 -18
docs/assure-repo/false-green-candidates.v1.json modified +1 -1
@@ -4,7 +4,7 @@
| 4 | 4 |
|
| 5 | 5 |
|
| 6 | 6 |
|
| 7 |
|
|
| 7 |
|
|
| 8 | 8 |
|
| 9 | 9 |
|
| 10 | 10 |
|
docs/assure-repo/surface-inventory.v1.json modified +2 -2
@@ -1,7 +1,7 @@
| 1 | 1 |
|
| 2 | 2 |
|
| 3 | 3 |
|
| 4 |
|
|
| 4 |
|
|
| 5 | 5 |
|
| 6 | 6 |
|
| 7 | 7 |
|
packages/openagents-cli/src/cli.ts modified +21 -5
@@ -28,7 +28,12 @@ import { CoderSession, DummyReplySource } from "./coder-session.js";
| 28 | 28 |
|
| 29 | 29 |
|
| 30 | 30 |
|
| 31 |
|
|
| 31 |
|
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 32 | 37 |
|
| 33 | 38 |
|
| 34 | 39 |
|
@@ -1648,17 +1653,28 @@ const coderCommand = Command.make(
| 1648 | 1653 |
|
| 1649 | 1654 |
|
| 1650 | 1655 |
|
| 1651 |
|
|
| 1656 |
|
|
| 1657 |
|
|
| 1658 |
|
|
| 1659 |
|
|
| 1660 |
|
|
| 1661 |
|
|
| 1662 |
|
|
| 1663 |
|
|
| 1664 |
|
|
| 1665 |
|
|
| 1666 |
|
|
| 1667 |
|
|
| 1652 | 1668 |
|
| 1653 |
|
|
| 1669 |
|
|
| 1654 | 1670 |
|
| 1655 | 1671 |
|
| 1656 | 1672 |
|
| 1657 | 1673 |
|
| 1658 | 1674 |
|
| 1659 |
|
|
| 1675 |
|
|
| 1660 | 1676 |
|
| 1661 |
|
|
| 1677 |
|
|
| 1662 | 1678 |
|
| 1663 | 1679 |
|
| 1664 | 1680 |
|
packages/openagents-cli/src/coder-export.ts added +235
@@ -0,0 +1,235 @@
| 1 |
|
|
| 2 |
|
|
| 3 |
|
|
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
|
| 8 |
|
|
| 9 |
|
|
| 10 |
|
|
| 11 |
|
|
| 12 |
|
|
| 13 |
|
|
| 14 |
|
|
| 15 |
|
|
| 16 |
|
|
| 17 |
|
|
| 18 |
|
|
| 19 |
|
|
| 20 |
|
|
| 21 |
|
|
| 22 |
|
|
| 23 |
|
|
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
| 28 |
|
|
| 29 |
|
|
| 30 |
|
|
| 31 |
|
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
|
| 43 |
|
|
| 44 |
|
|
| 45 |
|
|
| 46 |
|
|
| 47 |
|
|
| 48 |
|
|
| 49 |
|
|
| 50 |
|
|
| 51 |
|
|
| 52 |
|
|
| 53 |
|
|
| 54 |
|
|
| 55 |
|
|
| 56 |
|
|
| 57 |
|
|
| 58 |
|
|
| 59 |
|
|
| 60 |
|
|
| 61 |
|
|
| 62 |
|
|
| 63 |
|
|
| 64 |
|
|
| 65 |
|
|
| 66 |
|
|
| 67 |
|
|
| 68 |
|
|
| 69 |
|
|
| 70 |
|
|
| 71 |
|
|
| 72 |
|
|
| 73 |
|
|
| 74 |
|
|
| 75 |
|
|
| 76 |
|
|
| 77 |
|
|
| 78 |
|
|
| 79 |
|
|
| 80 |
|
|
| 81 |
|
|
| 82 |
|
|
| 83 |
|
|
| 84 |
|
|
| 85 |
|
|
| 86 |
|
|
| 87 |
|
|
| 88 |
|
|
| 89 |
|
|
| 90 |
|
|
| 91 |
|
|
| 92 |
|
|
| 93 |
|
|
| 94 |
|
|
| 95 |
|
|
| 96 |
|
|
| 97 |
|
|
| 98 |
|
|
| 99 |
|
|
| 100 |
|
|
| 101 |
|
|
| 102 |
|
|
| 103 |
|
|
| 104 |
|
|
| 105 |
|
|
| 106 |
|
|
| 107 |
|
|
| 108 |
|
|
| 109 |
|
|
| 110 |
|
|
| 111 |
|
|
| 112 |
|
|
| 113 |
|
|
| 114 |
|
|
| 115 |
|
|
| 116 |
|
|
| 117 |
|
|
| 118 |
|
|
| 119 |
|
|
| 120 |
|
|
| 121 |
|
|
| 122 |
|
|
| 123 |
|
|
| 124 |
|
|
| 125 |
|
|
| 126 |
|
|
| 127 |
|
|
| 128 |
|
|
| 129 |
|
|
| 130 |
|
|
| 131 |
|
|
| 132 |
|
|
| 133 |
|
|
| 134 |
|
|
| 135 |
|
|
| 136 |
|
|
| 137 |
|
|
| 138 |
|
|
| 139 |
|
|
| 140 |
|
|
| 141 |
|
|
| 142 |
|
|
| 143 |
|
|
| 144 |
|
|
| 145 |
|
|
| 146 |
|
|
| 147 |
|
|
| 148 |
|
|
| 149 |
|
|
| 150 |
|
|
| 151 |
|
|
| 152 |
|
|
| 153 |
|
|
| 154 |
|
|
| 155 |
|
|
| 156 |
|
|
| 157 |
|
|
| 158 |
|
|
| 159 |
|
|
| 160 |
|
|
| 161 |
|
|
| 162 |
|
|
| 163 |
|
|
| 164 |
|
|
| 165 |
|
|
| 166 |
|
|
| 167 |
|
|
| 168 |
|
|
| 169 |
|
|
| 170 |
|
|
| 171 |
|
|
| 172 |
|
|
| 173 |
|
|
| 174 |
|
|
| 175 |
|
|
| 176 |
|
|
| 177 |
|
|
| 178 |
|
|
| 179 |
|
|
| 180 |
|
|
| 181 |
|
|
| 182 |
|
|
| 183 |
|
|
| 184 |
|
|
| 185 |
|
|
| 186 |
|
|
| 187 |
|
|
| 188 |
|
|
| 189 |
|
|
| 190 |
|
|
| 191 |
|
|
| 192 |
|
|
| 193 |
|
|
| 194 |
|
|
| 195 |
|
|
| 196 |
|
|
| 197 |
|
|
| 198 |
|
|
| 199 |
|
|
| 200 |
|
|
| 201 |
|
|
| 202 |
|
|
| 203 |
|
|
| 204 |
|
|
| 205 |
|
|
| 206 |
|
|
| 207 |
|
|
| 208 |
|
|
| 209 |
|
|
| 210 |
|
|
| 211 |
|
|
| 212 |
|
|
| 213 |
|
|
| 214 |
|
|
| 215 |
|
|
| 216 |
|
|
| 217 |
|
|
| 218 |
|
|
| 219 |
|
|
| 220 |
|
|
| 221 |
|
|
| 222 |
|
|
| 223 |
|
|
| 224 |
|
|
| 225 |
|
|
| 226 |
|
|
| 227 |
|
|
| 228 |
|
|
| 229 |
|
|
| 230 |
|
|
| 231 |
|
|
| 232 |
|
|
| 233 |
|
|
| 234 |
|
|
| 235 |
|
packages/openagents-cli/src/coder-ollama.ts modified +46
@@ -35,6 +35,44 @@ export interface OllamaOptions {
| 35 | 35 |
|
| 36 | 36 |
|
| 37 | 37 |
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
|
| 43 |
|
|
| 44 |
|
|
| 45 |
|
|
| 46 |
|
|
| 47 |
|
|
| 48 |
|
|
| 49 |
|
|
| 50 |
|
|
| 51 |
|
|
| 52 |
|
|
| 53 |
|
|
| 54 |
|
|
| 55 |
|
|
| 56 |
|
|
| 57 |
|
|
| 58 |
|
|
| 59 |
|
|
| 60 |
|
|
| 61 |
|
|
| 62 |
|
|
| 63 |
|
|
| 64 |
|
|
| 65 |
|
|
| 66 |
|
|
| 67 |
|
|
| 68 |
|
|
| 69 |
|
|
| 70 |
|
|
| 71 |
|
|
| 72 |
|
|
| 73 |
|
|
| 74 |
|
|
| 75 |
|
|
| 38 | 76 |
|
| 39 | 77 |
|
| 40 | 78 |
|
@@ -142,6 +180,14 @@ export class OllamaReplySource implements ReplySource {
| 142 | 180 |
|
| 143 | 181 |
|
| 144 | 182 |
|
| 183 |
|
|
| 184 |
|
|
| 185 |
|
|
| 186 |
|
|
| 187 |
|
|
| 188 |
|
|
| 189 |
|
|
| 190 |
|
|
| 145 | 191 |
|
| 146 | 192 |
|
| 147 | 193 |
|
packages/openagents-cli/src/coder-session.ts modified +49 -8
@@ -21,6 +21,8 @@
| 21 | 21 |
|
| 22 | 22 |
|
| 23 | 23 |
|
| 24 |
|
|
| 25 |
|
|
| 24 | 26 |
|
| 25 | 27 |
|
| 26 | 28 |
|
@@ -55,6 +57,14 @@ export interface CoderToolCall {
| 55 | 57 |
|
| 56 | 58 |
|
| 57 | 59 |
|
| 60 |
|
|
| 61 |
|
|
| 62 |
|
|
| 63 |
|
|
| 64 |
|
|
| 65 |
|
|
| 66 |
|
|
| 67 |
|
|
| 58 | 68 |
|
| 59 | 69 |
|
| 60 | 70 |
|
@@ -141,6 +151,14 @@ export interface ReplySource {
| 141 | 151 |
|
| 142 | 152 |
|
| 143 | 153 |
|
| 154 |
|
|
| 155 |
|
|
| 156 |
|
|
| 157 |
|
|
| 158 |
|
|
| 159 |
|
|
| 160 |
|
|
| 161 |
|
|
| 144 | 162 |
|
| 145 | 163 |
|
| 146 | 164 |
|
@@ -346,7 +364,7 @@ export class CoderSession {
| 346 | 364 |
|
| 347 | 365 |
|
| 348 | 366 |
|
| 349 |
|
|
| 367 |
|
|
| 350 | 368 |
|
| 351 | 369 |
|
| 352 | 370 |
|
@@ -371,7 +389,7 @@ export class CoderSession {
| 371 | 389 |
|
| 372 | 390 |
|
| 373 | 391 |
|
| 374 |
|
|
| 392 |
|
|
| 375 | 393 |
|
| 376 | 394 |
|
| 377 | 395 |
|
@@ -382,9 +400,31 @@ export class CoderSession {
| 382 | 400 |
|
| 383 | 401 |
|
| 384 | 402 |
|
| 403 |
|
|
| 404 |
|
|
| 405 |
|
|
| 406 |
|
|
| 407 |
|
|
| 408 |
|
|
| 409 |
|
|
| 410 |
|
|
| 411 |
|
|
| 412 |
|
|
| 413 |
|
|
| 414 |
|
|
| 415 |
|
|
| 416 |
|
|
| 417 |
|
|
| 418 |
|
|
| 419 |
|
|
| 420 |
|
|
| 421 |
|
|
| 422 |
|
|
| 423 |
|
|
| 424 |
|
|
| 385 | 425 |
|
| 386 | 426 |
|
| 387 |
|
|
| 427 |
|
|
| 388 | 428 |
|
| 389 | 429 |
|
| 390 | 430 |
|
@@ -392,11 +432,11 @@ export class CoderSession {
| 392 | 432 |
|
| 393 | 433 |
|
| 394 | 434 |
|
| 395 |
|
|
| 435 |
|
|
| 396 | 436 |
|
| 397 | 437 |
|
| 398 | 438 |
|
| 399 |
|
|
| 439 |
|
|
| 400 | 440 |
|
| 401 | 441 |
|
| 402 | 442 |
|
@@ -427,7 +467,7 @@ export class CoderSession {
| 427 | 467 |
|
| 428 | 468 |
|
| 429 | 469 |
|
| 430 |
|
|
| 470 |
|
|
| 431 | 471 |
|
| 432 | 472 |
|
| 433 | 473 |
|
@@ -436,7 +476,7 @@ export class CoderSession {
| 436 | 476 |
|
| 437 | 477 |
|
| 438 | 478 |
|
| 439 |
|
|
| 479 |
|
|
| 440 | 480 |
|
| 441 | 481 |
|
| 442 | 482 |
|
@@ -450,6 +490,7 @@ export class CoderSession {
| 450 | 490 |
|
| 451 | 491 |
|
| 452 | 492 |
|
| 493 |
|
|
| 453 | 494 |
|
| 454 | 495 |
|
| 455 | 496 |
|
@@ -481,7 +522,7 @@ export class CoderSession {
| 481 | 522 |
|
| 482 | 523 |
|
| 483 | 524 |
|
| 484 |
|
|
| 525 |
|
|
| 485 | 526 |
|
| 486 | 527 |
|
| 487 | 528 |
|
packages/openagents-cli/src/coder-thread.ts modified +8
@@ -266,6 +266,14 @@ export class ThreadReplySource implements ReplySource {
| 266 | 266 |
|
| 267 | 267 |
|
| 268 | 268 |
|
| 269 |
|
|
| 270 |
|
|
| 271 |
|
|
| 272 |
|
|
| 273 |
|
|
| 274 |
|
|
| 275 |
|
|
| 276 |
|
|
| 269 | 277 |
|
| 270 | 278 |
|
| 271 | 279 |
|
packages/openagents-cli/src/coder-ui.ts modified +2 -1
@@ -918,7 +918,8 @@ export function runCoderUi(session: CoderSession, options: CoderUiOptions): Prom
| 918 | 918 |
|
| 919 | 919 |
|
| 920 | 920 |
|
| 921 |
|
|
| 921 |
|
|
| 922 |
|
|
| 922 | 923 |
|
| 923 | 924 |
|
| 924 | 925 |
|
packages/openagents-cli/test/coder-export.test.ts added +192
@@ -0,0 +1,192 @@
| 1 |
|
|
| 2 |
|
|
| 3 |
|
|
| 4 |
|
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
|
| 8 |
|
|
| 9 |
|
|
| 10 |
|
|
| 11 |
|
|
| 12 |
|
|
| 13 |
|
|
| 14 |
|
|
| 15 |
|
|
| 16 |
|
|
| 17 |
|
|
| 18 |
|
|
| 19 |
|
|
| 20 |
|
|
| 21 |
|
|
| 22 |
|
|
| 23 |
|
|
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
| 28 |
|
|
| 29 |
|
|
| 30 |
|
|
| 31 |
|
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
|
| 43 |
|
|
| 44 |
|
|
| 45 |
|
|
| 46 |
|
|
| 47 |
|
|
| 48 |
|
|
| 49 |
|
|
| 50 |
|
|
| 51 |
|
|
| 52 |
|
|
| 53 |
|
|
| 54 |
|
|
| 55 |
|
|
| 56 |
|
|
| 57 |
|
|
| 58 |
|
|
| 59 |
|
|
| 60 |
|
|
| 61 |
|
|
| 62 |
|
|
| 63 |
|
|
| 64 |
|
|
| 65 |
|
|
| 66 |
|
|
| 67 |
|
|
| 68 |
|
|
| 69 |
|
|
| 70 |
|
|
| 71 |
|
|
| 72 |
|
|
| 73 |
|
|
| 74 |
|
|
| 75 |
|
|
| 76 |
|
|
| 77 |
|
|
| 78 |
|
|
| 79 |
|
|
| 80 |
|
|
| 81 |
|
|
| 82 |
|
|
| 83 |
|
|
| 84 |
|
|
| 85 |
|
|
| 86 |
|
|
| 87 |
|
|
| 88 |
|
|
| 89 |
|
|
| 90 |
|
|
| 91 |
|
|
| 92 |
|
|
| 93 |
|
|
| 94 |
|
|
| 95 |
|
|
| 96 |
|
|
| 97 |
|
|
| 98 |
|
|
| 99 |
|
|
| 100 |
|
|
| 101 |
|
|
| 102 |
|
|
| 103 |
|
|
| 104 |
|
|
| 105 |
|
|
| 106 |
|
|
| 107 |
|
|
| 108 |
|
|
| 109 |
|
|
| 110 |
|
|
| 111 |
|
|
| 112 |
|
|
| 113 |
|
|
| 114 |
|
|
| 115 |
|
|
| 116 |
|
|
| 117 |
|
|
| 118 |
|
|
| 119 |
|
|
| 120 |
|
|
| 121 |
|
|
| 122 |
|
|
| 123 |
|
|
| 124 |
|
|
| 125 |
|
|
| 126 |
|
|
| 127 |
|
|
| 128 |
|
|
| 129 |
|
|
| 130 |
|
|
| 131 |
|
|
| 132 |
|
|
| 133 |
|
|
| 134 |
|
|
| 135 |
|
|
| 136 |
|
|
| 137 |
|
|
| 138 |
|
|
| 139 |
|
|
| 140 |
|
|
| 141 |
|
|
| 142 |
|
|
| 143 |
|
|
| 144 |
|
|
| 145 |
|
|
| 146 |
|
|
| 147 |
|
|
| 148 |
|
|
| 149 |
|
|
| 150 |
|
|
| 151 |
|
|
| 152 |
|
|
| 153 |
|
|
| 154 |
|
|
| 155 |
|
|
| 156 |
|
|
| 157 |
|
|
| 158 |
|
|
| 159 |
|
|
| 160 |
|
|
| 161 |
|
|
| 162 |
|
|
| 163 |
|
|
| 164 |
|
|
| 165 |
|
|
| 166 |
|
|
| 167 |
|
|
| 168 |
|
|
| 169 |
|
|
| 170 |
|
|
| 171 |
|
|
| 172 |
|
|
| 173 |
|
|
| 174 |
|
|
| 175 |
|
|
| 176 |
|
|
| 177 |
|
|
| 178 |
|
|
| 179 |
|
|
| 180 |
|
|
| 181 |
|
|
| 182 |
|
|
| 183 |
|
|
| 184 |
|
|
| 185 |
|
|
| 186 |
|
|
| 187 |
|
|
| 188 |
|
|
| 189 |
|
|
| 190 |
|
|
| 191 |
|
|
| 192 |
|
packages/openagents-cli/test/coder-ollama.test.ts modified +47 -1
@@ -1,8 +1,9 @@
| 1 |
|
|
| 1 |
|
|
| 2 | 2 |
|
| 3 | 3 |
|
| 4 | 4 |
|
| 5 | 5 |
|
| 6 |
|
|
| 6 | 7 |
|
| 7 | 8 |
|
| 8 | 9 |
|
@@ -246,3 +247,48 @@ describe("what a local session tells the model about itself", () => {
| 246 | 247 |
|
| 247 | 248 |
|
| 248 | 249 |
|
| 250 |
|
|
| 251 |
|
|
| 252 |
|
|
| 253 |
|
|
| 254 |
|
|
| 255 |
|
|
| 256 |
|
|
| 257 |
|
|
| 258 |
|
|
| 259 |
|
|
| 260 |
|
|
| 261 |
|
|
| 262 |
|
|
| 263 |
|
|
| 264 |
|
|
| 265 |
|
|
| 266 |
|
|
| 267 |
|
|
| 268 |
|
|
| 269 |
|
|
| 270 |
|
|
| 271 |
|
|
| 272 |
|
|
| 273 |
|
|
| 274 |
|
|
| 275 |
|
|
| 276 |
|
|
| 277 |
|
|
| 278 |
|
|
| 279 |
|
|
| 280 |
|
|
| 281 |
|
|
| 282 |
|
|
| 283 |
|
|
| 284 |
|
|
| 285 |
|
|
| 286 |
|
|
| 287 |
|
|
| 288 |
|
|
| 289 |
|
|
| 290 |
|
|
| 291 |
|
|
| 292 |
|
|
| 293 |
|
|
| 294 |
|
packages/openagents-cli/test/coder-session.test.ts modified +28
@@ -1,3 +1,4 @@
| 1 |
|
|
| 1 | 2 |
|
| 2 | 3 |
|
| 3 | 4 |
|
@@ -364,3 +365,30 @@ describe("the /system command", () => {
| 364 | 365 |
|
| 365 | 366 |
|
| 366 | 367 |
|
| 368 |
|
|
| 369 |
|
|
| 370 |
|
|
| 371 |
|
|
| 372 |
|
|
| 373 |
|
|
| 374 |
|
|
| 375 |
|
|
| 376 |
|
|
| 377 |
|
|
| 378 |
|
|
| 379 |
|
|
| 380 |
|
|
| 381 |
|
|
| 382 |
|
|
| 383 |
|
|
| 384 |
|
|
| 385 |
|
|
| 386 |
|
|
| 387 |
|
|
| 388 |
|
|
| 389 |
|
|
| 390 |
|
|
| 391 |
|
|
| 392 |
|
|
| 393 |
|
|
| 394 |
|