@auto-engineer/pipeline 0.20.0 → 0.21.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.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +4 -4
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +12 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/builder/define.ts.html +0 -2224
- package/coverage/builder/index.html +0 -116
- package/coverage/config/index.html +0 -116
- package/coverage/config/pipeline-config.ts.html +0 -181
- package/coverage/core/descriptors.ts.html +0 -397
- package/coverage/core/index.html +0 -131
- package/coverage/core/types.ts.html +0 -133
- package/coverage/coverage-final.json +0 -33
- package/coverage/favicon.png +0 -0
- package/coverage/graph/filter-graph.ts.html +0 -418
- package/coverage/graph/index.html +0 -131
- package/coverage/graph/types.ts.html +0 -172
- package/coverage/index.html +0 -266
- package/coverage/logging/event-logger.ts.html +0 -235
- package/coverage/logging/index.html +0 -116
- package/coverage/plugins/handler-adapter.ts.html +0 -148
- package/coverage/plugins/index.html +0 -131
- package/coverage/plugins/plugin-loader.ts.html +0 -691
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/projections/await-tracker-projection.ts.html +0 -289
- package/coverage/projections/index.html +0 -221
- package/coverage/projections/item-status-projection.ts.html +0 -181
- package/coverage/projections/latest-run-projection.ts.html +0 -145
- package/coverage/projections/message-log-projection.ts.html +0 -424
- package/coverage/projections/node-status-projection.ts.html +0 -184
- package/coverage/projections/phased-execution-projection.ts.html +0 -523
- package/coverage/projections/settled-instance-projection.ts.html +0 -565
- package/coverage/projections/stats-projection.ts.html +0 -163
- package/coverage/runtime/await-tracker.ts.html +0 -271
- package/coverage/runtime/context.ts.html +0 -124
- package/coverage/runtime/event-command-map.ts.html +0 -220
- package/coverage/runtime/index.html +0 -191
- package/coverage/runtime/phased-executor.ts.html +0 -775
- package/coverage/runtime/pipeline-runtime.ts.html +0 -448
- package/coverage/runtime/settled-tracker.ts.html +0 -790
- package/coverage/server/index.html +0 -131
- package/coverage/server/pipeline-server.ts.html +0 -3253
- package/coverage/server/sse-manager.ts.html +0 -310
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/store/index.html +0 -146
- package/coverage/store/pipeline-event-store.ts.html +0 -553
- package/coverage/store/pipeline-read-model.ts.html +0 -754
- package/coverage/store/sqlite-pipeline-event-store.ts.html +0 -193
- package/coverage/testing/event-capture.ts.html +0 -280
- package/coverage/testing/index.html +0 -161
- package/coverage/testing/mock-handlers.ts.html +0 -259
- package/coverage/testing/snapshot-compare.ts.html +0 -403
- package/coverage/testing/snapshot-sanitize.ts.html +0 -136
- package/dist/src/builder/define.specs.d.ts +0 -2
- package/dist/src/builder/define.specs.d.ts.map +0 -1
- package/dist/src/builder/define.specs.js +0 -435
- package/dist/src/builder/define.specs.js.map +0 -1
- package/dist/src/core/descriptors.specs.d.ts +0 -2
- package/dist/src/core/descriptors.specs.d.ts.map +0 -1
- package/dist/src/core/descriptors.specs.js +0 -24
- package/dist/src/core/descriptors.specs.js.map +0 -1
- package/dist/src/core/types.specs.d.ts +0 -2
- package/dist/src/core/types.specs.d.ts.map +0 -1
- package/dist/src/core/types.specs.js +0 -40
- package/dist/src/core/types.specs.js.map +0 -1
- package/dist/src/graph/filter-graph.specs.d.ts +0 -2
- package/dist/src/graph/filter-graph.specs.d.ts.map +0 -1
- package/dist/src/graph/filter-graph.specs.js +0 -204
- package/dist/src/graph/filter-graph.specs.js.map +0 -1
- package/dist/src/graph/types.specs.d.ts +0 -2
- package/dist/src/graph/types.specs.d.ts.map +0 -1
- package/dist/src/graph/types.specs.js +0 -148
- package/dist/src/graph/types.specs.js.map +0 -1
- package/dist/src/logging/event-logger.specs.d.ts +0 -2
- package/dist/src/logging/event-logger.specs.d.ts.map +0 -1
- package/dist/src/logging/event-logger.specs.js +0 -81
- package/dist/src/logging/event-logger.specs.js.map +0 -1
- package/dist/src/plugins/handler-adapter.specs.d.ts +0 -2
- package/dist/src/plugins/handler-adapter.specs.d.ts.map +0 -1
- package/dist/src/plugins/handler-adapter.specs.js +0 -129
- package/dist/src/plugins/handler-adapter.specs.js.map +0 -1
- package/dist/src/plugins/plugin-loader.specs.d.ts +0 -2
- package/dist/src/plugins/plugin-loader.specs.d.ts.map +0 -1
- package/dist/src/plugins/plugin-loader.specs.js +0 -246
- package/dist/src/plugins/plugin-loader.specs.js.map +0 -1
- package/dist/src/projections/item-status-projection.specs.d.ts +0 -2
- package/dist/src/projections/item-status-projection.specs.d.ts.map +0 -1
- package/dist/src/projections/item-status-projection.specs.js +0 -119
- package/dist/src/projections/item-status-projection.specs.js.map +0 -1
- package/dist/src/projections/latest-run-projection.specs.d.ts +0 -2
- package/dist/src/projections/latest-run-projection.specs.d.ts.map +0 -1
- package/dist/src/projections/latest-run-projection.specs.js +0 -33
- package/dist/src/projections/latest-run-projection.specs.js.map +0 -1
- package/dist/src/projections/message-log-projection.specs.d.ts +0 -2
- package/dist/src/projections/message-log-projection.specs.d.ts.map +0 -1
- package/dist/src/projections/message-log-projection.specs.js +0 -101
- package/dist/src/projections/message-log-projection.specs.js.map +0 -1
- package/dist/src/projections/node-status-projection.specs.d.ts +0 -2
- package/dist/src/projections/node-status-projection.specs.d.ts.map +0 -1
- package/dist/src/projections/node-status-projection.specs.js +0 -116
- package/dist/src/projections/node-status-projection.specs.js.map +0 -1
- package/dist/src/projections/phased-execution-projection.specs.d.ts +0 -2
- package/dist/src/projections/phased-execution-projection.specs.d.ts.map +0 -1
- package/dist/src/projections/phased-execution-projection.specs.js +0 -171
- package/dist/src/projections/phased-execution-projection.specs.js.map +0 -1
- package/dist/src/projections/settled-instance-projection.specs.d.ts +0 -2
- package/dist/src/projections/settled-instance-projection.specs.d.ts.map +0 -1
- package/dist/src/projections/settled-instance-projection.specs.js +0 -217
- package/dist/src/projections/settled-instance-projection.specs.js.map +0 -1
- package/dist/src/projections/stats-projection.specs.d.ts +0 -2
- package/dist/src/projections/stats-projection.specs.d.ts.map +0 -1
- package/dist/src/projections/stats-projection.specs.js +0 -91
- package/dist/src/projections/stats-projection.specs.js.map +0 -1
- package/dist/src/runtime/await-tracker.specs.d.ts +0 -2
- package/dist/src/runtime/await-tracker.specs.d.ts.map +0 -1
- package/dist/src/runtime/await-tracker.specs.js +0 -64
- package/dist/src/runtime/await-tracker.specs.js.map +0 -1
- package/dist/src/runtime/context.specs.d.ts +0 -2
- package/dist/src/runtime/context.specs.d.ts.map +0 -1
- package/dist/src/runtime/context.specs.js +0 -26
- package/dist/src/runtime/context.specs.js.map +0 -1
- package/dist/src/runtime/event-command-map.specs.d.ts +0 -2
- package/dist/src/runtime/event-command-map.specs.d.ts.map +0 -1
- package/dist/src/runtime/event-command-map.specs.js +0 -108
- package/dist/src/runtime/event-command-map.specs.js.map +0 -1
- package/dist/src/runtime/phased-executor.specs.d.ts +0 -2
- package/dist/src/runtime/phased-executor.specs.d.ts.map +0 -1
- package/dist/src/runtime/phased-executor.specs.js +0 -418
- package/dist/src/runtime/phased-executor.specs.js.map +0 -1
- package/dist/src/runtime/pipeline-runtime.specs.d.ts +0 -2
- package/dist/src/runtime/pipeline-runtime.specs.d.ts.map +0 -1
- package/dist/src/runtime/pipeline-runtime.specs.js +0 -227
- package/dist/src/runtime/pipeline-runtime.specs.js.map +0 -1
- package/dist/src/runtime/settled-tracker.specs.d.ts +0 -2
- package/dist/src/runtime/settled-tracker.specs.d.ts.map +0 -1
- package/dist/src/runtime/settled-tracker.specs.js +0 -811
- package/dist/src/runtime/settled-tracker.specs.js.map +0 -1
- package/dist/src/server/full-orchestration.e2e.specs.d.ts +0 -2
- package/dist/src/server/full-orchestration.e2e.specs.d.ts.map +0 -1
- package/dist/src/server/full-orchestration.e2e.specs.js +0 -561
- package/dist/src/server/full-orchestration.e2e.specs.js.map +0 -1
- package/dist/src/server/pipeline-server.e2e.specs.d.ts +0 -2
- package/dist/src/server/pipeline-server.e2e.specs.d.ts.map +0 -1
- package/dist/src/server/pipeline-server.e2e.specs.js +0 -373
- package/dist/src/server/pipeline-server.e2e.specs.js.map +0 -1
- package/dist/src/server/pipeline-server.specs.d.ts +0 -2
- package/dist/src/server/pipeline-server.specs.d.ts.map +0 -1
- package/dist/src/server/pipeline-server.specs.js +0 -1407
- package/dist/src/server/pipeline-server.specs.js.map +0 -1
- package/dist/src/server/sse-manager.specs.d.ts +0 -2
- package/dist/src/server/sse-manager.specs.d.ts.map +0 -1
- package/dist/src/server/sse-manager.specs.js +0 -178
- package/dist/src/server/sse-manager.specs.js.map +0 -1
- package/dist/src/store/pipeline-event-store.specs.d.ts +0 -2
- package/dist/src/store/pipeline-event-store.specs.d.ts.map +0 -1
- package/dist/src/store/pipeline-event-store.specs.js +0 -287
- package/dist/src/store/pipeline-event-store.specs.js.map +0 -1
- package/dist/src/store/pipeline-read-model.specs.d.ts +0 -2
- package/dist/src/store/pipeline-read-model.specs.d.ts.map +0 -1
- package/dist/src/store/pipeline-read-model.specs.js +0 -830
- package/dist/src/store/pipeline-read-model.specs.js.map +0 -1
- package/dist/src/testing/event-capture.specs.d.ts +0 -2
- package/dist/src/testing/event-capture.specs.d.ts.map +0 -1
- package/dist/src/testing/event-capture.specs.js +0 -114
- package/dist/src/testing/event-capture.specs.js.map +0 -1
- package/dist/src/testing/fixtures/kanban-full.pipeline.specs.d.ts +0 -2
- package/dist/src/testing/fixtures/kanban-full.pipeline.specs.d.ts.map +0 -1
- package/dist/src/testing/fixtures/kanban-full.pipeline.specs.js +0 -263
- package/dist/src/testing/fixtures/kanban-full.pipeline.specs.js.map +0 -1
- package/dist/src/testing/fixtures/kanban.pipeline.specs.d.ts +0 -2
- package/dist/src/testing/fixtures/kanban.pipeline.specs.d.ts.map +0 -1
- package/dist/src/testing/fixtures/kanban.pipeline.specs.js +0 -29
- package/dist/src/testing/fixtures/kanban.pipeline.specs.js.map +0 -1
- package/dist/src/testing/kanban-todo.e2e.specs.d.ts +0 -2
- package/dist/src/testing/kanban-todo.e2e.specs.d.ts.map +0 -1
- package/dist/src/testing/kanban-todo.e2e.specs.js +0 -160
- package/dist/src/testing/kanban-todo.e2e.specs.js.map +0 -1
- package/dist/src/testing/mock-handlers.specs.d.ts +0 -2
- package/dist/src/testing/mock-handlers.specs.d.ts.map +0 -1
- package/dist/src/testing/mock-handlers.specs.js +0 -193
- package/dist/src/testing/mock-handlers.specs.js.map +0 -1
- package/dist/src/testing/real-execution.e2e.specs.d.ts +0 -2
- package/dist/src/testing/real-execution.e2e.specs.d.ts.map +0 -1
- package/dist/src/testing/real-execution.e2e.specs.js +0 -140
- package/dist/src/testing/real-execution.e2e.specs.js.map +0 -1
- package/dist/src/testing/real-plugin.e2e.specs.d.ts +0 -2
- package/dist/src/testing/real-plugin.e2e.specs.d.ts.map +0 -1
- package/dist/src/testing/real-plugin.e2e.specs.js +0 -65
- package/dist/src/testing/real-plugin.e2e.specs.js.map +0 -1
- package/dist/src/testing/server-startup.e2e.specs.d.ts +0 -2
- package/dist/src/testing/server-startup.e2e.specs.d.ts.map +0 -1
- package/dist/src/testing/server-startup.e2e.specs.js +0 -104
- package/dist/src/testing/server-startup.e2e.specs.js.map +0 -1
- package/dist/src/testing/snapshot-compare.specs.d.ts +0 -2
- package/dist/src/testing/snapshot-compare.specs.d.ts.map +0 -1
- package/dist/src/testing/snapshot-compare.specs.js +0 -112
- package/dist/src/testing/snapshot-compare.specs.js.map +0 -1
- package/dist/src/testing/snapshot-sanitize.specs.d.ts +0 -2
- package/dist/src/testing/snapshot-sanitize.specs.d.ts.map +0 -1
- package/dist/src/testing/snapshot-sanitize.specs.js +0 -104
- package/dist/src/testing/snapshot-sanitize.specs.js.map +0 -1
|
@@ -1,3253 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for server/pipeline-server.ts</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../index.html">All files</a> / <a href="index.html">server</a> pipeline-server.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">100% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>792/792</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">100% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>220/220</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">100% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>58/58</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">100% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>792/792</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line high'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
-
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
-
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
-
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
-
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
-
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
-
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
-
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
-
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
-
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
-
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
-
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
-
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
-
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
-
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
-
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
-
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
-
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
-
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
-
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
-
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
-
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
-
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
-
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
-
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
-
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
-
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
-
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
-
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
-
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
-
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
-
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
-
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
-
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
-
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
-
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
-
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
-
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
-
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
-
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
-
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
-
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
-
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
-
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
-
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
-
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
-
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
-
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
-
<a name='L569'></a><a href='#L569'>569</a>
|
|
635
|
-
<a name='L570'></a><a href='#L570'>570</a>
|
|
636
|
-
<a name='L571'></a><a href='#L571'>571</a>
|
|
637
|
-
<a name='L572'></a><a href='#L572'>572</a>
|
|
638
|
-
<a name='L573'></a><a href='#L573'>573</a>
|
|
639
|
-
<a name='L574'></a><a href='#L574'>574</a>
|
|
640
|
-
<a name='L575'></a><a href='#L575'>575</a>
|
|
641
|
-
<a name='L576'></a><a href='#L576'>576</a>
|
|
642
|
-
<a name='L577'></a><a href='#L577'>577</a>
|
|
643
|
-
<a name='L578'></a><a href='#L578'>578</a>
|
|
644
|
-
<a name='L579'></a><a href='#L579'>579</a>
|
|
645
|
-
<a name='L580'></a><a href='#L580'>580</a>
|
|
646
|
-
<a name='L581'></a><a href='#L581'>581</a>
|
|
647
|
-
<a name='L582'></a><a href='#L582'>582</a>
|
|
648
|
-
<a name='L583'></a><a href='#L583'>583</a>
|
|
649
|
-
<a name='L584'></a><a href='#L584'>584</a>
|
|
650
|
-
<a name='L585'></a><a href='#L585'>585</a>
|
|
651
|
-
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
|
-
<a name='L587'></a><a href='#L587'>587</a>
|
|
653
|
-
<a name='L588'></a><a href='#L588'>588</a>
|
|
654
|
-
<a name='L589'></a><a href='#L589'>589</a>
|
|
655
|
-
<a name='L590'></a><a href='#L590'>590</a>
|
|
656
|
-
<a name='L591'></a><a href='#L591'>591</a>
|
|
657
|
-
<a name='L592'></a><a href='#L592'>592</a>
|
|
658
|
-
<a name='L593'></a><a href='#L593'>593</a>
|
|
659
|
-
<a name='L594'></a><a href='#L594'>594</a>
|
|
660
|
-
<a name='L595'></a><a href='#L595'>595</a>
|
|
661
|
-
<a name='L596'></a><a href='#L596'>596</a>
|
|
662
|
-
<a name='L597'></a><a href='#L597'>597</a>
|
|
663
|
-
<a name='L598'></a><a href='#L598'>598</a>
|
|
664
|
-
<a name='L599'></a><a href='#L599'>599</a>
|
|
665
|
-
<a name='L600'></a><a href='#L600'>600</a>
|
|
666
|
-
<a name='L601'></a><a href='#L601'>601</a>
|
|
667
|
-
<a name='L602'></a><a href='#L602'>602</a>
|
|
668
|
-
<a name='L603'></a><a href='#L603'>603</a>
|
|
669
|
-
<a name='L604'></a><a href='#L604'>604</a>
|
|
670
|
-
<a name='L605'></a><a href='#L605'>605</a>
|
|
671
|
-
<a name='L606'></a><a href='#L606'>606</a>
|
|
672
|
-
<a name='L607'></a><a href='#L607'>607</a>
|
|
673
|
-
<a name='L608'></a><a href='#L608'>608</a>
|
|
674
|
-
<a name='L609'></a><a href='#L609'>609</a>
|
|
675
|
-
<a name='L610'></a><a href='#L610'>610</a>
|
|
676
|
-
<a name='L611'></a><a href='#L611'>611</a>
|
|
677
|
-
<a name='L612'></a><a href='#L612'>612</a>
|
|
678
|
-
<a name='L613'></a><a href='#L613'>613</a>
|
|
679
|
-
<a name='L614'></a><a href='#L614'>614</a>
|
|
680
|
-
<a name='L615'></a><a href='#L615'>615</a>
|
|
681
|
-
<a name='L616'></a><a href='#L616'>616</a>
|
|
682
|
-
<a name='L617'></a><a href='#L617'>617</a>
|
|
683
|
-
<a name='L618'></a><a href='#L618'>618</a>
|
|
684
|
-
<a name='L619'></a><a href='#L619'>619</a>
|
|
685
|
-
<a name='L620'></a><a href='#L620'>620</a>
|
|
686
|
-
<a name='L621'></a><a href='#L621'>621</a>
|
|
687
|
-
<a name='L622'></a><a href='#L622'>622</a>
|
|
688
|
-
<a name='L623'></a><a href='#L623'>623</a>
|
|
689
|
-
<a name='L624'></a><a href='#L624'>624</a>
|
|
690
|
-
<a name='L625'></a><a href='#L625'>625</a>
|
|
691
|
-
<a name='L626'></a><a href='#L626'>626</a>
|
|
692
|
-
<a name='L627'></a><a href='#L627'>627</a>
|
|
693
|
-
<a name='L628'></a><a href='#L628'>628</a>
|
|
694
|
-
<a name='L629'></a><a href='#L629'>629</a>
|
|
695
|
-
<a name='L630'></a><a href='#L630'>630</a>
|
|
696
|
-
<a name='L631'></a><a href='#L631'>631</a>
|
|
697
|
-
<a name='L632'></a><a href='#L632'>632</a>
|
|
698
|
-
<a name='L633'></a><a href='#L633'>633</a>
|
|
699
|
-
<a name='L634'></a><a href='#L634'>634</a>
|
|
700
|
-
<a name='L635'></a><a href='#L635'>635</a>
|
|
701
|
-
<a name='L636'></a><a href='#L636'>636</a>
|
|
702
|
-
<a name='L637'></a><a href='#L637'>637</a>
|
|
703
|
-
<a name='L638'></a><a href='#L638'>638</a>
|
|
704
|
-
<a name='L639'></a><a href='#L639'>639</a>
|
|
705
|
-
<a name='L640'></a><a href='#L640'>640</a>
|
|
706
|
-
<a name='L641'></a><a href='#L641'>641</a>
|
|
707
|
-
<a name='L642'></a><a href='#L642'>642</a>
|
|
708
|
-
<a name='L643'></a><a href='#L643'>643</a>
|
|
709
|
-
<a name='L644'></a><a href='#L644'>644</a>
|
|
710
|
-
<a name='L645'></a><a href='#L645'>645</a>
|
|
711
|
-
<a name='L646'></a><a href='#L646'>646</a>
|
|
712
|
-
<a name='L647'></a><a href='#L647'>647</a>
|
|
713
|
-
<a name='L648'></a><a href='#L648'>648</a>
|
|
714
|
-
<a name='L649'></a><a href='#L649'>649</a>
|
|
715
|
-
<a name='L650'></a><a href='#L650'>650</a>
|
|
716
|
-
<a name='L651'></a><a href='#L651'>651</a>
|
|
717
|
-
<a name='L652'></a><a href='#L652'>652</a>
|
|
718
|
-
<a name='L653'></a><a href='#L653'>653</a>
|
|
719
|
-
<a name='L654'></a><a href='#L654'>654</a>
|
|
720
|
-
<a name='L655'></a><a href='#L655'>655</a>
|
|
721
|
-
<a name='L656'></a><a href='#L656'>656</a>
|
|
722
|
-
<a name='L657'></a><a href='#L657'>657</a>
|
|
723
|
-
<a name='L658'></a><a href='#L658'>658</a>
|
|
724
|
-
<a name='L659'></a><a href='#L659'>659</a>
|
|
725
|
-
<a name='L660'></a><a href='#L660'>660</a>
|
|
726
|
-
<a name='L661'></a><a href='#L661'>661</a>
|
|
727
|
-
<a name='L662'></a><a href='#L662'>662</a>
|
|
728
|
-
<a name='L663'></a><a href='#L663'>663</a>
|
|
729
|
-
<a name='L664'></a><a href='#L664'>664</a>
|
|
730
|
-
<a name='L665'></a><a href='#L665'>665</a>
|
|
731
|
-
<a name='L666'></a><a href='#L666'>666</a>
|
|
732
|
-
<a name='L667'></a><a href='#L667'>667</a>
|
|
733
|
-
<a name='L668'></a><a href='#L668'>668</a>
|
|
734
|
-
<a name='L669'></a><a href='#L669'>669</a>
|
|
735
|
-
<a name='L670'></a><a href='#L670'>670</a>
|
|
736
|
-
<a name='L671'></a><a href='#L671'>671</a>
|
|
737
|
-
<a name='L672'></a><a href='#L672'>672</a>
|
|
738
|
-
<a name='L673'></a><a href='#L673'>673</a>
|
|
739
|
-
<a name='L674'></a><a href='#L674'>674</a>
|
|
740
|
-
<a name='L675'></a><a href='#L675'>675</a>
|
|
741
|
-
<a name='L676'></a><a href='#L676'>676</a>
|
|
742
|
-
<a name='L677'></a><a href='#L677'>677</a>
|
|
743
|
-
<a name='L678'></a><a href='#L678'>678</a>
|
|
744
|
-
<a name='L679'></a><a href='#L679'>679</a>
|
|
745
|
-
<a name='L680'></a><a href='#L680'>680</a>
|
|
746
|
-
<a name='L681'></a><a href='#L681'>681</a>
|
|
747
|
-
<a name='L682'></a><a href='#L682'>682</a>
|
|
748
|
-
<a name='L683'></a><a href='#L683'>683</a>
|
|
749
|
-
<a name='L684'></a><a href='#L684'>684</a>
|
|
750
|
-
<a name='L685'></a><a href='#L685'>685</a>
|
|
751
|
-
<a name='L686'></a><a href='#L686'>686</a>
|
|
752
|
-
<a name='L687'></a><a href='#L687'>687</a>
|
|
753
|
-
<a name='L688'></a><a href='#L688'>688</a>
|
|
754
|
-
<a name='L689'></a><a href='#L689'>689</a>
|
|
755
|
-
<a name='L690'></a><a href='#L690'>690</a>
|
|
756
|
-
<a name='L691'></a><a href='#L691'>691</a>
|
|
757
|
-
<a name='L692'></a><a href='#L692'>692</a>
|
|
758
|
-
<a name='L693'></a><a href='#L693'>693</a>
|
|
759
|
-
<a name='L694'></a><a href='#L694'>694</a>
|
|
760
|
-
<a name='L695'></a><a href='#L695'>695</a>
|
|
761
|
-
<a name='L696'></a><a href='#L696'>696</a>
|
|
762
|
-
<a name='L697'></a><a href='#L697'>697</a>
|
|
763
|
-
<a name='L698'></a><a href='#L698'>698</a>
|
|
764
|
-
<a name='L699'></a><a href='#L699'>699</a>
|
|
765
|
-
<a name='L700'></a><a href='#L700'>700</a>
|
|
766
|
-
<a name='L701'></a><a href='#L701'>701</a>
|
|
767
|
-
<a name='L702'></a><a href='#L702'>702</a>
|
|
768
|
-
<a name='L703'></a><a href='#L703'>703</a>
|
|
769
|
-
<a name='L704'></a><a href='#L704'>704</a>
|
|
770
|
-
<a name='L705'></a><a href='#L705'>705</a>
|
|
771
|
-
<a name='L706'></a><a href='#L706'>706</a>
|
|
772
|
-
<a name='L707'></a><a href='#L707'>707</a>
|
|
773
|
-
<a name='L708'></a><a href='#L708'>708</a>
|
|
774
|
-
<a name='L709'></a><a href='#L709'>709</a>
|
|
775
|
-
<a name='L710'></a><a href='#L710'>710</a>
|
|
776
|
-
<a name='L711'></a><a href='#L711'>711</a>
|
|
777
|
-
<a name='L712'></a><a href='#L712'>712</a>
|
|
778
|
-
<a name='L713'></a><a href='#L713'>713</a>
|
|
779
|
-
<a name='L714'></a><a href='#L714'>714</a>
|
|
780
|
-
<a name='L715'></a><a href='#L715'>715</a>
|
|
781
|
-
<a name='L716'></a><a href='#L716'>716</a>
|
|
782
|
-
<a name='L717'></a><a href='#L717'>717</a>
|
|
783
|
-
<a name='L718'></a><a href='#L718'>718</a>
|
|
784
|
-
<a name='L719'></a><a href='#L719'>719</a>
|
|
785
|
-
<a name='L720'></a><a href='#L720'>720</a>
|
|
786
|
-
<a name='L721'></a><a href='#L721'>721</a>
|
|
787
|
-
<a name='L722'></a><a href='#L722'>722</a>
|
|
788
|
-
<a name='L723'></a><a href='#L723'>723</a>
|
|
789
|
-
<a name='L724'></a><a href='#L724'>724</a>
|
|
790
|
-
<a name='L725'></a><a href='#L725'>725</a>
|
|
791
|
-
<a name='L726'></a><a href='#L726'>726</a>
|
|
792
|
-
<a name='L727'></a><a href='#L727'>727</a>
|
|
793
|
-
<a name='L728'></a><a href='#L728'>728</a>
|
|
794
|
-
<a name='L729'></a><a href='#L729'>729</a>
|
|
795
|
-
<a name='L730'></a><a href='#L730'>730</a>
|
|
796
|
-
<a name='L731'></a><a href='#L731'>731</a>
|
|
797
|
-
<a name='L732'></a><a href='#L732'>732</a>
|
|
798
|
-
<a name='L733'></a><a href='#L733'>733</a>
|
|
799
|
-
<a name='L734'></a><a href='#L734'>734</a>
|
|
800
|
-
<a name='L735'></a><a href='#L735'>735</a>
|
|
801
|
-
<a name='L736'></a><a href='#L736'>736</a>
|
|
802
|
-
<a name='L737'></a><a href='#L737'>737</a>
|
|
803
|
-
<a name='L738'></a><a href='#L738'>738</a>
|
|
804
|
-
<a name='L739'></a><a href='#L739'>739</a>
|
|
805
|
-
<a name='L740'></a><a href='#L740'>740</a>
|
|
806
|
-
<a name='L741'></a><a href='#L741'>741</a>
|
|
807
|
-
<a name='L742'></a><a href='#L742'>742</a>
|
|
808
|
-
<a name='L743'></a><a href='#L743'>743</a>
|
|
809
|
-
<a name='L744'></a><a href='#L744'>744</a>
|
|
810
|
-
<a name='L745'></a><a href='#L745'>745</a>
|
|
811
|
-
<a name='L746'></a><a href='#L746'>746</a>
|
|
812
|
-
<a name='L747'></a><a href='#L747'>747</a>
|
|
813
|
-
<a name='L748'></a><a href='#L748'>748</a>
|
|
814
|
-
<a name='L749'></a><a href='#L749'>749</a>
|
|
815
|
-
<a name='L750'></a><a href='#L750'>750</a>
|
|
816
|
-
<a name='L751'></a><a href='#L751'>751</a>
|
|
817
|
-
<a name='L752'></a><a href='#L752'>752</a>
|
|
818
|
-
<a name='L753'></a><a href='#L753'>753</a>
|
|
819
|
-
<a name='L754'></a><a href='#L754'>754</a>
|
|
820
|
-
<a name='L755'></a><a href='#L755'>755</a>
|
|
821
|
-
<a name='L756'></a><a href='#L756'>756</a>
|
|
822
|
-
<a name='L757'></a><a href='#L757'>757</a>
|
|
823
|
-
<a name='L758'></a><a href='#L758'>758</a>
|
|
824
|
-
<a name='L759'></a><a href='#L759'>759</a>
|
|
825
|
-
<a name='L760'></a><a href='#L760'>760</a>
|
|
826
|
-
<a name='L761'></a><a href='#L761'>761</a>
|
|
827
|
-
<a name='L762'></a><a href='#L762'>762</a>
|
|
828
|
-
<a name='L763'></a><a href='#L763'>763</a>
|
|
829
|
-
<a name='L764'></a><a href='#L764'>764</a>
|
|
830
|
-
<a name='L765'></a><a href='#L765'>765</a>
|
|
831
|
-
<a name='L766'></a><a href='#L766'>766</a>
|
|
832
|
-
<a name='L767'></a><a href='#L767'>767</a>
|
|
833
|
-
<a name='L768'></a><a href='#L768'>768</a>
|
|
834
|
-
<a name='L769'></a><a href='#L769'>769</a>
|
|
835
|
-
<a name='L770'></a><a href='#L770'>770</a>
|
|
836
|
-
<a name='L771'></a><a href='#L771'>771</a>
|
|
837
|
-
<a name='L772'></a><a href='#L772'>772</a>
|
|
838
|
-
<a name='L773'></a><a href='#L773'>773</a>
|
|
839
|
-
<a name='L774'></a><a href='#L774'>774</a>
|
|
840
|
-
<a name='L775'></a><a href='#L775'>775</a>
|
|
841
|
-
<a name='L776'></a><a href='#L776'>776</a>
|
|
842
|
-
<a name='L777'></a><a href='#L777'>777</a>
|
|
843
|
-
<a name='L778'></a><a href='#L778'>778</a>
|
|
844
|
-
<a name='L779'></a><a href='#L779'>779</a>
|
|
845
|
-
<a name='L780'></a><a href='#L780'>780</a>
|
|
846
|
-
<a name='L781'></a><a href='#L781'>781</a>
|
|
847
|
-
<a name='L782'></a><a href='#L782'>782</a>
|
|
848
|
-
<a name='L783'></a><a href='#L783'>783</a>
|
|
849
|
-
<a name='L784'></a><a href='#L784'>784</a>
|
|
850
|
-
<a name='L785'></a><a href='#L785'>785</a>
|
|
851
|
-
<a name='L786'></a><a href='#L786'>786</a>
|
|
852
|
-
<a name='L787'></a><a href='#L787'>787</a>
|
|
853
|
-
<a name='L788'></a><a href='#L788'>788</a>
|
|
854
|
-
<a name='L789'></a><a href='#L789'>789</a>
|
|
855
|
-
<a name='L790'></a><a href='#L790'>790</a>
|
|
856
|
-
<a name='L791'></a><a href='#L791'>791</a>
|
|
857
|
-
<a name='L792'></a><a href='#L792'>792</a>
|
|
858
|
-
<a name='L793'></a><a href='#L793'>793</a>
|
|
859
|
-
<a name='L794'></a><a href='#L794'>794</a>
|
|
860
|
-
<a name='L795'></a><a href='#L795'>795</a>
|
|
861
|
-
<a name='L796'></a><a href='#L796'>796</a>
|
|
862
|
-
<a name='L797'></a><a href='#L797'>797</a>
|
|
863
|
-
<a name='L798'></a><a href='#L798'>798</a>
|
|
864
|
-
<a name='L799'></a><a href='#L799'>799</a>
|
|
865
|
-
<a name='L800'></a><a href='#L800'>800</a>
|
|
866
|
-
<a name='L801'></a><a href='#L801'>801</a>
|
|
867
|
-
<a name='L802'></a><a href='#L802'>802</a>
|
|
868
|
-
<a name='L803'></a><a href='#L803'>803</a>
|
|
869
|
-
<a name='L804'></a><a href='#L804'>804</a>
|
|
870
|
-
<a name='L805'></a><a href='#L805'>805</a>
|
|
871
|
-
<a name='L806'></a><a href='#L806'>806</a>
|
|
872
|
-
<a name='L807'></a><a href='#L807'>807</a>
|
|
873
|
-
<a name='L808'></a><a href='#L808'>808</a>
|
|
874
|
-
<a name='L809'></a><a href='#L809'>809</a>
|
|
875
|
-
<a name='L810'></a><a href='#L810'>810</a>
|
|
876
|
-
<a name='L811'></a><a href='#L811'>811</a>
|
|
877
|
-
<a name='L812'></a><a href='#L812'>812</a>
|
|
878
|
-
<a name='L813'></a><a href='#L813'>813</a>
|
|
879
|
-
<a name='L814'></a><a href='#L814'>814</a>
|
|
880
|
-
<a name='L815'></a><a href='#L815'>815</a>
|
|
881
|
-
<a name='L816'></a><a href='#L816'>816</a>
|
|
882
|
-
<a name='L817'></a><a href='#L817'>817</a>
|
|
883
|
-
<a name='L818'></a><a href='#L818'>818</a>
|
|
884
|
-
<a name='L819'></a><a href='#L819'>819</a>
|
|
885
|
-
<a name='L820'></a><a href='#L820'>820</a>
|
|
886
|
-
<a name='L821'></a><a href='#L821'>821</a>
|
|
887
|
-
<a name='L822'></a><a href='#L822'>822</a>
|
|
888
|
-
<a name='L823'></a><a href='#L823'>823</a>
|
|
889
|
-
<a name='L824'></a><a href='#L824'>824</a>
|
|
890
|
-
<a name='L825'></a><a href='#L825'>825</a>
|
|
891
|
-
<a name='L826'></a><a href='#L826'>826</a>
|
|
892
|
-
<a name='L827'></a><a href='#L827'>827</a>
|
|
893
|
-
<a name='L828'></a><a href='#L828'>828</a>
|
|
894
|
-
<a name='L829'></a><a href='#L829'>829</a>
|
|
895
|
-
<a name='L830'></a><a href='#L830'>830</a>
|
|
896
|
-
<a name='L831'></a><a href='#L831'>831</a>
|
|
897
|
-
<a name='L832'></a><a href='#L832'>832</a>
|
|
898
|
-
<a name='L833'></a><a href='#L833'>833</a>
|
|
899
|
-
<a name='L834'></a><a href='#L834'>834</a>
|
|
900
|
-
<a name='L835'></a><a href='#L835'>835</a>
|
|
901
|
-
<a name='L836'></a><a href='#L836'>836</a>
|
|
902
|
-
<a name='L837'></a><a href='#L837'>837</a>
|
|
903
|
-
<a name='L838'></a><a href='#L838'>838</a>
|
|
904
|
-
<a name='L839'></a><a href='#L839'>839</a>
|
|
905
|
-
<a name='L840'></a><a href='#L840'>840</a>
|
|
906
|
-
<a name='L841'></a><a href='#L841'>841</a>
|
|
907
|
-
<a name='L842'></a><a href='#L842'>842</a>
|
|
908
|
-
<a name='L843'></a><a href='#L843'>843</a>
|
|
909
|
-
<a name='L844'></a><a href='#L844'>844</a>
|
|
910
|
-
<a name='L845'></a><a href='#L845'>845</a>
|
|
911
|
-
<a name='L846'></a><a href='#L846'>846</a>
|
|
912
|
-
<a name='L847'></a><a href='#L847'>847</a>
|
|
913
|
-
<a name='L848'></a><a href='#L848'>848</a>
|
|
914
|
-
<a name='L849'></a><a href='#L849'>849</a>
|
|
915
|
-
<a name='L850'></a><a href='#L850'>850</a>
|
|
916
|
-
<a name='L851'></a><a href='#L851'>851</a>
|
|
917
|
-
<a name='L852'></a><a href='#L852'>852</a>
|
|
918
|
-
<a name='L853'></a><a href='#L853'>853</a>
|
|
919
|
-
<a name='L854'></a><a href='#L854'>854</a>
|
|
920
|
-
<a name='L855'></a><a href='#L855'>855</a>
|
|
921
|
-
<a name='L856'></a><a href='#L856'>856</a>
|
|
922
|
-
<a name='L857'></a><a href='#L857'>857</a>
|
|
923
|
-
<a name='L858'></a><a href='#L858'>858</a>
|
|
924
|
-
<a name='L859'></a><a href='#L859'>859</a>
|
|
925
|
-
<a name='L860'></a><a href='#L860'>860</a>
|
|
926
|
-
<a name='L861'></a><a href='#L861'>861</a>
|
|
927
|
-
<a name='L862'></a><a href='#L862'>862</a>
|
|
928
|
-
<a name='L863'></a><a href='#L863'>863</a>
|
|
929
|
-
<a name='L864'></a><a href='#L864'>864</a>
|
|
930
|
-
<a name='L865'></a><a href='#L865'>865</a>
|
|
931
|
-
<a name='L866'></a><a href='#L866'>866</a>
|
|
932
|
-
<a name='L867'></a><a href='#L867'>867</a>
|
|
933
|
-
<a name='L868'></a><a href='#L868'>868</a>
|
|
934
|
-
<a name='L869'></a><a href='#L869'>869</a>
|
|
935
|
-
<a name='L870'></a><a href='#L870'>870</a>
|
|
936
|
-
<a name='L871'></a><a href='#L871'>871</a>
|
|
937
|
-
<a name='L872'></a><a href='#L872'>872</a>
|
|
938
|
-
<a name='L873'></a><a href='#L873'>873</a>
|
|
939
|
-
<a name='L874'></a><a href='#L874'>874</a>
|
|
940
|
-
<a name='L875'></a><a href='#L875'>875</a>
|
|
941
|
-
<a name='L876'></a><a href='#L876'>876</a>
|
|
942
|
-
<a name='L877'></a><a href='#L877'>877</a>
|
|
943
|
-
<a name='L878'></a><a href='#L878'>878</a>
|
|
944
|
-
<a name='L879'></a><a href='#L879'>879</a>
|
|
945
|
-
<a name='L880'></a><a href='#L880'>880</a>
|
|
946
|
-
<a name='L881'></a><a href='#L881'>881</a>
|
|
947
|
-
<a name='L882'></a><a href='#L882'>882</a>
|
|
948
|
-
<a name='L883'></a><a href='#L883'>883</a>
|
|
949
|
-
<a name='L884'></a><a href='#L884'>884</a>
|
|
950
|
-
<a name='L885'></a><a href='#L885'>885</a>
|
|
951
|
-
<a name='L886'></a><a href='#L886'>886</a>
|
|
952
|
-
<a name='L887'></a><a href='#L887'>887</a>
|
|
953
|
-
<a name='L888'></a><a href='#L888'>888</a>
|
|
954
|
-
<a name='L889'></a><a href='#L889'>889</a>
|
|
955
|
-
<a name='L890'></a><a href='#L890'>890</a>
|
|
956
|
-
<a name='L891'></a><a href='#L891'>891</a>
|
|
957
|
-
<a name='L892'></a><a href='#L892'>892</a>
|
|
958
|
-
<a name='L893'></a><a href='#L893'>893</a>
|
|
959
|
-
<a name='L894'></a><a href='#L894'>894</a>
|
|
960
|
-
<a name='L895'></a><a href='#L895'>895</a>
|
|
961
|
-
<a name='L896'></a><a href='#L896'>896</a>
|
|
962
|
-
<a name='L897'></a><a href='#L897'>897</a>
|
|
963
|
-
<a name='L898'></a><a href='#L898'>898</a>
|
|
964
|
-
<a name='L899'></a><a href='#L899'>899</a>
|
|
965
|
-
<a name='L900'></a><a href='#L900'>900</a>
|
|
966
|
-
<a name='L901'></a><a href='#L901'>901</a>
|
|
967
|
-
<a name='L902'></a><a href='#L902'>902</a>
|
|
968
|
-
<a name='L903'></a><a href='#L903'>903</a>
|
|
969
|
-
<a name='L904'></a><a href='#L904'>904</a>
|
|
970
|
-
<a name='L905'></a><a href='#L905'>905</a>
|
|
971
|
-
<a name='L906'></a><a href='#L906'>906</a>
|
|
972
|
-
<a name='L907'></a><a href='#L907'>907</a>
|
|
973
|
-
<a name='L908'></a><a href='#L908'>908</a>
|
|
974
|
-
<a name='L909'></a><a href='#L909'>909</a>
|
|
975
|
-
<a name='L910'></a><a href='#L910'>910</a>
|
|
976
|
-
<a name='L911'></a><a href='#L911'>911</a>
|
|
977
|
-
<a name='L912'></a><a href='#L912'>912</a>
|
|
978
|
-
<a name='L913'></a><a href='#L913'>913</a>
|
|
979
|
-
<a name='L914'></a><a href='#L914'>914</a>
|
|
980
|
-
<a name='L915'></a><a href='#L915'>915</a>
|
|
981
|
-
<a name='L916'></a><a href='#L916'>916</a>
|
|
982
|
-
<a name='L917'></a><a href='#L917'>917</a>
|
|
983
|
-
<a name='L918'></a><a href='#L918'>918</a>
|
|
984
|
-
<a name='L919'></a><a href='#L919'>919</a>
|
|
985
|
-
<a name='L920'></a><a href='#L920'>920</a>
|
|
986
|
-
<a name='L921'></a><a href='#L921'>921</a>
|
|
987
|
-
<a name='L922'></a><a href='#L922'>922</a>
|
|
988
|
-
<a name='L923'></a><a href='#L923'>923</a>
|
|
989
|
-
<a name='L924'></a><a href='#L924'>924</a>
|
|
990
|
-
<a name='L925'></a><a href='#L925'>925</a>
|
|
991
|
-
<a name='L926'></a><a href='#L926'>926</a>
|
|
992
|
-
<a name='L927'></a><a href='#L927'>927</a>
|
|
993
|
-
<a name='L928'></a><a href='#L928'>928</a>
|
|
994
|
-
<a name='L929'></a><a href='#L929'>929</a>
|
|
995
|
-
<a name='L930'></a><a href='#L930'>930</a>
|
|
996
|
-
<a name='L931'></a><a href='#L931'>931</a>
|
|
997
|
-
<a name='L932'></a><a href='#L932'>932</a>
|
|
998
|
-
<a name='L933'></a><a href='#L933'>933</a>
|
|
999
|
-
<a name='L934'></a><a href='#L934'>934</a>
|
|
1000
|
-
<a name='L935'></a><a href='#L935'>935</a>
|
|
1001
|
-
<a name='L936'></a><a href='#L936'>936</a>
|
|
1002
|
-
<a name='L937'></a><a href='#L937'>937</a>
|
|
1003
|
-
<a name='L938'></a><a href='#L938'>938</a>
|
|
1004
|
-
<a name='L939'></a><a href='#L939'>939</a>
|
|
1005
|
-
<a name='L940'></a><a href='#L940'>940</a>
|
|
1006
|
-
<a name='L941'></a><a href='#L941'>941</a>
|
|
1007
|
-
<a name='L942'></a><a href='#L942'>942</a>
|
|
1008
|
-
<a name='L943'></a><a href='#L943'>943</a>
|
|
1009
|
-
<a name='L944'></a><a href='#L944'>944</a>
|
|
1010
|
-
<a name='L945'></a><a href='#L945'>945</a>
|
|
1011
|
-
<a name='L946'></a><a href='#L946'>946</a>
|
|
1012
|
-
<a name='L947'></a><a href='#L947'>947</a>
|
|
1013
|
-
<a name='L948'></a><a href='#L948'>948</a>
|
|
1014
|
-
<a name='L949'></a><a href='#L949'>949</a>
|
|
1015
|
-
<a name='L950'></a><a href='#L950'>950</a>
|
|
1016
|
-
<a name='L951'></a><a href='#L951'>951</a>
|
|
1017
|
-
<a name='L952'></a><a href='#L952'>952</a>
|
|
1018
|
-
<a name='L953'></a><a href='#L953'>953</a>
|
|
1019
|
-
<a name='L954'></a><a href='#L954'>954</a>
|
|
1020
|
-
<a name='L955'></a><a href='#L955'>955</a>
|
|
1021
|
-
<a name='L956'></a><a href='#L956'>956</a>
|
|
1022
|
-
<a name='L957'></a><a href='#L957'>957</a>
|
|
1023
|
-
<a name='L958'></a><a href='#L958'>958</a>
|
|
1024
|
-
<a name='L959'></a><a href='#L959'>959</a>
|
|
1025
|
-
<a name='L960'></a><a href='#L960'>960</a>
|
|
1026
|
-
<a name='L961'></a><a href='#L961'>961</a>
|
|
1027
|
-
<a name='L962'></a><a href='#L962'>962</a>
|
|
1028
|
-
<a name='L963'></a><a href='#L963'>963</a>
|
|
1029
|
-
<a name='L964'></a><a href='#L964'>964</a>
|
|
1030
|
-
<a name='L965'></a><a href='#L965'>965</a>
|
|
1031
|
-
<a name='L966'></a><a href='#L966'>966</a>
|
|
1032
|
-
<a name='L967'></a><a href='#L967'>967</a>
|
|
1033
|
-
<a name='L968'></a><a href='#L968'>968</a>
|
|
1034
|
-
<a name='L969'></a><a href='#L969'>969</a>
|
|
1035
|
-
<a name='L970'></a><a href='#L970'>970</a>
|
|
1036
|
-
<a name='L971'></a><a href='#L971'>971</a>
|
|
1037
|
-
<a name='L972'></a><a href='#L972'>972</a>
|
|
1038
|
-
<a name='L973'></a><a href='#L973'>973</a>
|
|
1039
|
-
<a name='L974'></a><a href='#L974'>974</a>
|
|
1040
|
-
<a name='L975'></a><a href='#L975'>975</a>
|
|
1041
|
-
<a name='L976'></a><a href='#L976'>976</a>
|
|
1042
|
-
<a name='L977'></a><a href='#L977'>977</a>
|
|
1043
|
-
<a name='L978'></a><a href='#L978'>978</a>
|
|
1044
|
-
<a name='L979'></a><a href='#L979'>979</a>
|
|
1045
|
-
<a name='L980'></a><a href='#L980'>980</a>
|
|
1046
|
-
<a name='L981'></a><a href='#L981'>981</a>
|
|
1047
|
-
<a name='L982'></a><a href='#L982'>982</a>
|
|
1048
|
-
<a name='L983'></a><a href='#L983'>983</a>
|
|
1049
|
-
<a name='L984'></a><a href='#L984'>984</a>
|
|
1050
|
-
<a name='L985'></a><a href='#L985'>985</a>
|
|
1051
|
-
<a name='L986'></a><a href='#L986'>986</a>
|
|
1052
|
-
<a name='L987'></a><a href='#L987'>987</a>
|
|
1053
|
-
<a name='L988'></a><a href='#L988'>988</a>
|
|
1054
|
-
<a name='L989'></a><a href='#L989'>989</a>
|
|
1055
|
-
<a name='L990'></a><a href='#L990'>990</a>
|
|
1056
|
-
<a name='L991'></a><a href='#L991'>991</a>
|
|
1057
|
-
<a name='L992'></a><a href='#L992'>992</a>
|
|
1058
|
-
<a name='L993'></a><a href='#L993'>993</a>
|
|
1059
|
-
<a name='L994'></a><a href='#L994'>994</a>
|
|
1060
|
-
<a name='L995'></a><a href='#L995'>995</a>
|
|
1061
|
-
<a name='L996'></a><a href='#L996'>996</a>
|
|
1062
|
-
<a name='L997'></a><a href='#L997'>997</a>
|
|
1063
|
-
<a name='L998'></a><a href='#L998'>998</a>
|
|
1064
|
-
<a name='L999'></a><a href='#L999'>999</a>
|
|
1065
|
-
<a name='L1000'></a><a href='#L1000'>1000</a>
|
|
1066
|
-
<a name='L1001'></a><a href='#L1001'>1001</a>
|
|
1067
|
-
<a name='L1002'></a><a href='#L1002'>1002</a>
|
|
1068
|
-
<a name='L1003'></a><a href='#L1003'>1003</a>
|
|
1069
|
-
<a name='L1004'></a><a href='#L1004'>1004</a>
|
|
1070
|
-
<a name='L1005'></a><a href='#L1005'>1005</a>
|
|
1071
|
-
<a name='L1006'></a><a href='#L1006'>1006</a>
|
|
1072
|
-
<a name='L1007'></a><a href='#L1007'>1007</a>
|
|
1073
|
-
<a name='L1008'></a><a href='#L1008'>1008</a>
|
|
1074
|
-
<a name='L1009'></a><a href='#L1009'>1009</a>
|
|
1075
|
-
<a name='L1010'></a><a href='#L1010'>1010</a>
|
|
1076
|
-
<a name='L1011'></a><a href='#L1011'>1011</a>
|
|
1077
|
-
<a name='L1012'></a><a href='#L1012'>1012</a>
|
|
1078
|
-
<a name='L1013'></a><a href='#L1013'>1013</a>
|
|
1079
|
-
<a name='L1014'></a><a href='#L1014'>1014</a>
|
|
1080
|
-
<a name='L1015'></a><a href='#L1015'>1015</a>
|
|
1081
|
-
<a name='L1016'></a><a href='#L1016'>1016</a>
|
|
1082
|
-
<a name='L1017'></a><a href='#L1017'>1017</a>
|
|
1083
|
-
<a name='L1018'></a><a href='#L1018'>1018</a>
|
|
1084
|
-
<a name='L1019'></a><a href='#L1019'>1019</a>
|
|
1085
|
-
<a name='L1020'></a><a href='#L1020'>1020</a>
|
|
1086
|
-
<a name='L1021'></a><a href='#L1021'>1021</a>
|
|
1087
|
-
<a name='L1022'></a><a href='#L1022'>1022</a>
|
|
1088
|
-
<a name='L1023'></a><a href='#L1023'>1023</a>
|
|
1089
|
-
<a name='L1024'></a><a href='#L1024'>1024</a>
|
|
1090
|
-
<a name='L1025'></a><a href='#L1025'>1025</a>
|
|
1091
|
-
<a name='L1026'></a><a href='#L1026'>1026</a>
|
|
1092
|
-
<a name='L1027'></a><a href='#L1027'>1027</a>
|
|
1093
|
-
<a name='L1028'></a><a href='#L1028'>1028</a>
|
|
1094
|
-
<a name='L1029'></a><a href='#L1029'>1029</a>
|
|
1095
|
-
<a name='L1030'></a><a href='#L1030'>1030</a>
|
|
1096
|
-
<a name='L1031'></a><a href='#L1031'>1031</a>
|
|
1097
|
-
<a name='L1032'></a><a href='#L1032'>1032</a>
|
|
1098
|
-
<a name='L1033'></a><a href='#L1033'>1033</a>
|
|
1099
|
-
<a name='L1034'></a><a href='#L1034'>1034</a>
|
|
1100
|
-
<a name='L1035'></a><a href='#L1035'>1035</a>
|
|
1101
|
-
<a name='L1036'></a><a href='#L1036'>1036</a>
|
|
1102
|
-
<a name='L1037'></a><a href='#L1037'>1037</a>
|
|
1103
|
-
<a name='L1038'></a><a href='#L1038'>1038</a>
|
|
1104
|
-
<a name='L1039'></a><a href='#L1039'>1039</a>
|
|
1105
|
-
<a name='L1040'></a><a href='#L1040'>1040</a>
|
|
1106
|
-
<a name='L1041'></a><a href='#L1041'>1041</a>
|
|
1107
|
-
<a name='L1042'></a><a href='#L1042'>1042</a>
|
|
1108
|
-
<a name='L1043'></a><a href='#L1043'>1043</a>
|
|
1109
|
-
<a name='L1044'></a><a href='#L1044'>1044</a>
|
|
1110
|
-
<a name='L1045'></a><a href='#L1045'>1045</a>
|
|
1111
|
-
<a name='L1046'></a><a href='#L1046'>1046</a>
|
|
1112
|
-
<a name='L1047'></a><a href='#L1047'>1047</a>
|
|
1113
|
-
<a name='L1048'></a><a href='#L1048'>1048</a>
|
|
1114
|
-
<a name='L1049'></a><a href='#L1049'>1049</a>
|
|
1115
|
-
<a name='L1050'></a><a href='#L1050'>1050</a>
|
|
1116
|
-
<a name='L1051'></a><a href='#L1051'>1051</a>
|
|
1117
|
-
<a name='L1052'></a><a href='#L1052'>1052</a>
|
|
1118
|
-
<a name='L1053'></a><a href='#L1053'>1053</a>
|
|
1119
|
-
<a name='L1054'></a><a href='#L1054'>1054</a>
|
|
1120
|
-
<a name='L1055'></a><a href='#L1055'>1055</a>
|
|
1121
|
-
<a name='L1056'></a><a href='#L1056'>1056</a>
|
|
1122
|
-
<a name='L1057'></a><a href='#L1057'>1057</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
1123
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1126
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1128
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1130
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1131
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1132
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1135
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1140
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1141
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1142
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1149
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1157
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1165
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1167
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1169
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1170
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1171
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1177
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1178
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1179
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1180
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1182
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1183
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1184
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1185
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1186
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1187
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1188
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1189
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1190
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1191
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1192
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1193
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1195
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1197
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1198
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1199
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1202
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1203
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1204
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1205
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1206
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1208
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1210
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1214
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1215
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1218
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1220
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1221
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1222
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1223
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1224
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1225
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1226
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1227
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1229
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1230
|
-
<span class="cline-any cline-yes">53x</span>
|
|
1231
|
-
<span class="cline-any cline-yes">70x</span>
|
|
1232
|
-
<span class="cline-any cline-yes">70x</span>
|
|
1233
|
-
<span class="cline-any cline-yes">70x</span>
|
|
1234
|
-
<span class="cline-any cline-yes">70x</span>
|
|
1235
|
-
<span class="cline-any cline-yes">53x</span>
|
|
1236
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1237
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1238
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1239
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1240
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1241
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1242
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1243
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1245
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1246
|
-
<span class="cline-any cline-yes">63x</span>
|
|
1247
|
-
<span class="cline-any cline-yes">63x</span>
|
|
1248
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1249
|
-
<span class="cline-any cline-yes">63x</span>
|
|
1250
|
-
<span class="cline-any cline-yes">88x</span>
|
|
1251
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1252
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1253
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1254
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1255
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1256
|
-
<span class="cline-any cline-yes">88x</span>
|
|
1257
|
-
<span class="cline-any cline-yes">63x</span>
|
|
1258
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1259
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1260
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1261
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1262
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1263
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1264
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1265
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1266
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1267
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1268
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1269
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1270
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1271
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1273
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1274
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1275
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1276
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1277
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1278
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1279
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1280
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1281
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1282
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1283
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1284
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1285
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1286
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1287
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1288
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1289
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1290
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1291
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1292
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1293
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1294
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1295
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1296
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1297
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1298
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1299
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1300
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1301
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1302
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1303
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1304
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1305
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1306
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1307
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1308
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1309
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1310
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1311
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1312
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1313
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1315
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1316
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1317
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1318
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1319
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1320
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1321
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1323
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1324
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1325
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1326
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1327
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1328
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1329
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1331
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1332
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1333
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1334
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1335
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1336
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1337
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1338
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1339
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1340
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1341
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1342
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1344
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1345
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1346
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1347
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1348
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1349
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1350
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1351
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1352
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1353
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1354
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1355
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1356
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1357
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1358
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1359
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1360
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1361
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1362
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1363
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1364
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1366
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1367
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1368
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1370
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1371
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1372
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1373
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1374
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1375
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1376
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1378
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1379
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1380
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1381
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1382
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1383
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1384
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1385
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1386
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1387
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1388
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1389
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1390
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1391
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1392
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1393
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1394
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1395
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1396
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1397
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1398
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1399
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1400
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1401
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1402
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1403
|
-
<span class="cline-any cline-yes">44x</span>
|
|
1404
|
-
<span class="cline-any cline-yes">44x</span>
|
|
1405
|
-
<span class="cline-any cline-yes">44x</span>
|
|
1406
|
-
<span class="cline-any cline-yes">44x</span>
|
|
1407
|
-
<span class="cline-any cline-yes">44x</span>
|
|
1408
|
-
<span class="cline-any cline-yes">44x</span>
|
|
1409
|
-
<span class="cline-any cline-yes">44x</span>
|
|
1410
|
-
<span class="cline-any cline-yes">44x</span>
|
|
1411
|
-
<span class="cline-any cline-yes">44x</span>
|
|
1412
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1413
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1414
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1415
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1417
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1418
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1419
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1420
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1421
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1422
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1423
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1424
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1425
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1426
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1427
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1428
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1430
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1431
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1432
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1433
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1434
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1435
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1437
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1438
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1439
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1440
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1441
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1443
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1444
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1445
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1447
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1448
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1449
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1450
|
-
<span class="cline-any cline-yes">78x</span>
|
|
1451
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1452
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1453
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1454
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1456
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1457
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1458
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1459
|
-
<span class="cline-any cline-yes">154x</span>
|
|
1460
|
-
<span class="cline-any cline-yes">154x</span>
|
|
1461
|
-
<span class="cline-any cline-yes">154x</span>
|
|
1462
|
-
<span class="cline-any cline-yes">154x</span>
|
|
1463
|
-
<span class="cline-any cline-yes">154x</span>
|
|
1464
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1465
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1467
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1468
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1469
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1470
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1471
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1472
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1473
|
-
<span class="cline-any cline-yes">154x</span>
|
|
1474
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1475
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1476
|
-
<span class="cline-any cline-yes">74x</span>
|
|
1477
|
-
<span class="cline-any cline-yes">154x</span>
|
|
1478
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1479
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1480
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1481
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1482
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1483
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1484
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1485
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1486
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1487
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1488
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1489
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1490
|
-
<span class="cline-any cline-yes">172x</span>
|
|
1491
|
-
<span class="cline-any cline-yes">83x</span>
|
|
1492
|
-
<span class="cline-any cline-yes">83x</span>
|
|
1493
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1494
|
-
<span class="cline-any cline-yes">172x</span>
|
|
1495
|
-
<span class="cline-any cline-yes">88x</span>
|
|
1496
|
-
<span class="cline-any cline-yes">88x</span>
|
|
1497
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1498
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1499
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1500
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1501
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1502
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1503
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1504
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1505
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1506
|
-
<span class="cline-any cline-yes">83x</span>
|
|
1507
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1508
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1509
|
-
<span class="cline-any cline-yes">83x</span>
|
|
1510
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1511
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1512
|
-
<span class="cline-any cline-yes">41x</span>
|
|
1513
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1514
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1515
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1516
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1517
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1518
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1519
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1521
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1522
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1523
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1524
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1525
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1526
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1527
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1528
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1529
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1530
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1531
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1532
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1533
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1535
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1536
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1537
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1538
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1539
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1540
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1541
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1542
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1543
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1544
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1545
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1546
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1547
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1548
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1550
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1551
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1552
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1553
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1554
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1555
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1556
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1557
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1558
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1559
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1560
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1561
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1562
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1563
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1564
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1565
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1566
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1567
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1568
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1569
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1570
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1571
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1572
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1573
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1574
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1575
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1576
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1577
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1578
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1579
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1580
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1581
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1582
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1583
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1584
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1585
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1586
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1587
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1588
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1589
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1590
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1591
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1592
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1593
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1594
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1596
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1597
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1598
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1599
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1600
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1601
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1602
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1603
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1604
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1605
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1606
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1607
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1608
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1609
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1610
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1611
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1612
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1613
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1614
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1616
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1617
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1618
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1619
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1620
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1621
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1622
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1623
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1624
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1625
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1626
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1627
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1628
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1629
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1630
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1631
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1632
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1633
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1634
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1636
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1637
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1638
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1639
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1640
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1641
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1642
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1643
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1644
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1645
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1646
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1647
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1648
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1649
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1650
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1651
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1652
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1653
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1655
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1656
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1657
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1658
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1659
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1660
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1661
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1662
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1663
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1664
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1665
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1666
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1667
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1668
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1669
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1670
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1671
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1672
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1673
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1674
|
-
<span class="cline-any cline-yes">72x</span>
|
|
1675
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1676
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1677
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1678
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1679
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1680
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1681
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1682
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1683
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1684
|
-
<span class="cline-any cline-yes">27x</span>
|
|
1685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1686
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1687
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1688
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1689
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1690
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1691
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1692
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1693
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1695
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1696
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1697
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1698
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1699
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1700
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1701
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1702
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1704
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1706
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1707
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1709
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1710
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1711
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1712
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1713
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1714
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1715
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1716
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1717
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1718
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1719
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1720
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1721
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1722
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1723
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1724
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1725
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1726
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1728
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1729
|
-
<span class="cline-any cline-yes">162x</span>
|
|
1730
|
-
<span class="cline-any cline-yes">162x</span>
|
|
1731
|
-
<span class="cline-any cline-yes">162x</span>
|
|
1732
|
-
<span class="cline-any cline-yes">162x</span>
|
|
1733
|
-
<span class="cline-any cline-yes">162x</span>
|
|
1734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1735
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1736
|
-
<span class="cline-any cline-yes">73x</span>
|
|
1737
|
-
<span class="cline-any cline-yes">73x</span>
|
|
1738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1739
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1740
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1741
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1742
|
-
<span class="cline-any cline-yes">58x</span>
|
|
1743
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1744
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1745
|
-
<span class="cline-any cline-yes">58x</span>
|
|
1746
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1747
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1749
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1750
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1751
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1752
|
-
<span class="cline-any cline-yes">58x</span>
|
|
1753
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1754
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1755
|
-
<span class="cline-any cline-yes">58x</span>
|
|
1756
|
-
<span class="cline-any cline-yes">73x</span>
|
|
1757
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1758
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1759
|
-
<span class="cline-any cline-yes">73x</span>
|
|
1760
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1761
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1762
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1764
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1765
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1766
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1767
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1768
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1769
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1770
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1771
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1772
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1773
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1774
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1775
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1776
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1778
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1780
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1781
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1782
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1783
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1784
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1785
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1786
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1787
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1788
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1789
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1790
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1791
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1793
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1794
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1795
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1796
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1797
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1798
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1799
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1800
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1802
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1803
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1805
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1806
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1807
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1808
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1809
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1810
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1811
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1812
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1813
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1814
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1815
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1816
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1817
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1818
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1819
|
-
<span class="cline-any cline-yes">54x</span>
|
|
1820
|
-
<span class="cline-any cline-yes">71x</span>
|
|
1821
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1822
|
-
<span class="cline-any cline-yes">39x</span>
|
|
1823
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1824
|
-
<span class="cline-any cline-yes">71x</span>
|
|
1825
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1826
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1827
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1828
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1829
|
-
<span class="cline-any cline-yes">32x</span>
|
|
1830
|
-
<span class="cline-any cline-yes">53x</span>
|
|
1831
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1832
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1833
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1835
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1836
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1837
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1838
|
-
<span class="cline-any cline-yes">122x</span>
|
|
1839
|
-
<span class="cline-any cline-yes">122x</span>
|
|
1840
|
-
<span class="cline-any cline-yes">122x</span>
|
|
1841
|
-
<span class="cline-any cline-yes">122x</span>
|
|
1842
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1843
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1844
|
-
<span class="cline-any cline-yes">122x</span>
|
|
1845
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1846
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1847
|
-
<span class="cline-any cline-yes">122x</span>
|
|
1848
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1849
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1850
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1851
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1852
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1853
|
-
<span class="cline-any cline-yes">113x</span>
|
|
1854
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1856
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1857
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1858
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1859
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1860
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1861
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1862
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1863
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1864
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1865
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1866
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1867
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1868
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1869
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1870
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1871
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1872
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1873
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1874
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1875
|
-
<span class="cline-any cline-yes">159x</span>
|
|
1876
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1877
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1878
|
-
<span class="cline-any cline-yes">167x</span>
|
|
1879
|
-
<span class="cline-any cline-yes">100x</span>
|
|
1880
|
-
<span class="cline-any cline-yes">93x</span>
|
|
1881
|
-
<span class="cline-any cline-yes">93x</span>
|
|
1882
|
-
<span class="cline-any cline-yes">100x</span>
|
|
1883
|
-
<span class="cline-any cline-yes">159x</span>
|
|
1884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1885
|
-
<span class="cline-any cline-yes">69x</span>
|
|
1886
|
-
<span class="cline-any cline-yes">75x</span>
|
|
1887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1888
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1889
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1890
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1891
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1892
|
-
<span class="cline-any cline-yes">154x</span>
|
|
1893
|
-
<span class="cline-any cline-yes">71x</span>
|
|
1894
|
-
<span class="cline-any cline-yes">71x</span>
|
|
1895
|
-
<span class="cline-any cline-yes">154x</span>
|
|
1896
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1897
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1898
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1899
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1900
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1901
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1902
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1903
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1904
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1905
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1906
|
-
<span class="cline-any cline-yes">154x</span>
|
|
1907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1908
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1909
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1910
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1911
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1912
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1913
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1914
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1915
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1916
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1917
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1918
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1919
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1920
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1921
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1922
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1923
|
-
<span class="cline-any cline-yes">42x</span>
|
|
1924
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1925
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1926
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1927
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1928
|
-
<span class="cline-any cline-yes">38x</span>
|
|
1929
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1930
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1931
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1932
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1933
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1934
|
-
<span class="cline-any cline-yes">80x</span>
|
|
1935
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1936
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1937
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1938
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1939
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1940
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1941
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1942
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1943
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1944
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1945
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1946
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1947
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1948
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1949
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1950
|
-
<span class="cline-any cline-yes">57x</span>
|
|
1951
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1952
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1953
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1954
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1955
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1956
|
-
<span class="cline-any cline-yes">118x</span>
|
|
1957
|
-
<span class="cline-any cline-yes">51x</span>
|
|
1958
|
-
<span class="cline-any cline-yes">51x</span>
|
|
1959
|
-
<span class="cline-any cline-yes">118x</span>
|
|
1960
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1961
|
-
<span class="cline-any cline-yes">59x</span>
|
|
1962
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1963
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1964
|
-
<span class="cline-any cline-yes">118x</span>
|
|
1965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1966
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1967
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1968
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1969
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1970
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1971
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1972
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1973
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1974
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1976
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1977
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1978
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1979
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1980
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1981
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1982
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1983
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1984
|
-
<span class="cline-any cline-yes">21x</span>
|
|
1985
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1986
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1987
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1988
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1989
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1990
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1991
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1992
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1993
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1994
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1995
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1996
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1997
|
-
<span class="cline-any cline-yes">23x</span>
|
|
1998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1999
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2000
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2001
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2003
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2004
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2005
|
-
<span class="cline-any cline-yes">27x</span>
|
|
2006
|
-
<span class="cline-any cline-yes">27x</span>
|
|
2007
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2008
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2009
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2010
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2011
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2012
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2013
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2014
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2015
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2017
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2018
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2019
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2021
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2022
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2023
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2024
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2025
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2026
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2027
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2028
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2029
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2030
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2031
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2032
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2033
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2034
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2036
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2037
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2038
|
-
<span class="cline-any cline-yes">32x</span>
|
|
2039
|
-
<span class="cline-any cline-yes">32x</span>
|
|
2040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2041
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2042
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2044
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2045
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2047
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2048
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2049
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2050
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2051
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2052
|
-
<span class="cline-any cline-yes">37x</span>
|
|
2053
|
-
<span class="cline-any cline-yes">32x</span>
|
|
2054
|
-
<span class="cline-any cline-yes">36x</span>
|
|
2055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2056
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2057
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2060
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2061
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2062
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2063
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2064
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2065
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2066
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2067
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2072
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2074
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2078
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2080
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2081
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2082
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2083
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2084
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2085
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2086
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2087
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2088
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2089
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2090
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2091
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2092
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2093
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2094
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2095
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2096
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2097
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2098
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2099
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2100
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2101
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2102
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2103
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2104
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2105
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2106
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2107
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2108
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2109
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2110
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2111
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2112
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2116
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2117
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2118
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2123
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2126
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2128
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2130
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2131
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2132
|
-
<span class="cline-any cline-yes">5x</span>
|
|
2133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2135
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2140
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2141
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2142
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2149
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2157
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2165
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2167
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2170
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2171
|
-
<span class="cline-any cline-yes">5x</span>
|
|
2172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2176
|
-
<span class="cline-any cline-yes">5x</span>
|
|
2177
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2178
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { createServer, type Server as HttpServer } from 'node:http';
|
|
2179
|
-
import {
|
|
2180
|
-
type Command,
|
|
2181
|
-
type CommandHandler,
|
|
2182
|
-
createMessageBus,
|
|
2183
|
-
type Event,
|
|
2184
|
-
type MessageBus,
|
|
2185
|
-
} from '@auto-engineer/message-bus';
|
|
2186
|
-
import cors from 'cors';
|
|
2187
|
-
import express from 'express';
|
|
2188
|
-
import getPort from 'get-port';
|
|
2189
|
-
import { nanoid } from 'nanoid';
|
|
2190
|
-
import type { Pipeline } from '../builder/define';
|
|
2191
|
-
import { filterGraph } from '../graph/filter-graph';
|
|
2192
|
-
import type { FilterOptions, GraphIR, GraphNode, NodeStatus, NodeType } from '../graph/types';
|
|
2193
|
-
import type { PipelineContext } from '../runtime/context';
|
|
2194
|
-
import type { EventDefinition } from '../runtime/event-command-map';
|
|
2195
|
-
import { EventCommandMapper } from '../runtime/event-command-map';
|
|
2196
|
-
import { PhasedExecutor } from '../runtime/phased-executor';
|
|
2197
|
-
import { PipelineRuntime } from '../runtime/pipeline-runtime';
|
|
2198
|
-
import { SettledTracker } from '../runtime/settled-tracker';
|
|
2199
|
-
import { createPipelineEventStore, type PipelineEventStoreContext } from '../store/pipeline-event-store';
|
|
2200
|
-
import { SSEManager } from './sse-manager';
|
|
2201
|
-
|
|
2202
|
-
export type { EventDefinition };
|
|
2203
|
-
|
|
2204
|
-
export interface CommandHandlerWithMetadata extends CommandHandler {
|
|
2205
|
-
alias?: string;
|
|
2206
|
-
description?: string;
|
|
2207
|
-
displayName?: string;
|
|
2208
|
-
fields?: Record<string, unknown>;
|
|
2209
|
-
examples?: unknown[];
|
|
2210
|
-
events?: EventDefinition[];
|
|
2211
|
-
}
|
|
2212
|
-
|
|
2213
|
-
export interface PipelineServerConfig {
|
|
2214
|
-
port: number;
|
|
2215
|
-
}
|
|
2216
|
-
|
|
2217
|
-
interface EventWithCorrelation extends Event {
|
|
2218
|
-
correlationId: string;
|
|
2219
|
-
}
|
|
2220
|
-
|
|
2221
|
-
export class PipelineServer {
|
|
2222
|
-
private app: express.Application;
|
|
2223
|
-
private httpServer: HttpServer;
|
|
2224
|
-
private messageBus: MessageBus;
|
|
2225
|
-
private readonly commandHandlers: Map<string, CommandHandlerWithMetadata> = new Map();
|
|
2226
|
-
private readonly pipelines: Map<string, Pipeline> = new Map();
|
|
2227
|
-
private readonly runtimes: Map<string, PipelineRuntime> = new Map();
|
|
2228
|
-
private actualPort: number;
|
|
2229
|
-
private readonly requestedPort: number;
|
|
2230
|
-
private readonly settledTracker: SettledTracker;
|
|
2231
|
-
private readonly eventCommandMapper: EventCommandMapper;
|
|
2232
|
-
private readonly phasedExecutor: PhasedExecutor;
|
|
2233
|
-
private readonly sseManager: SSEManager;
|
|
2234
|
-
private readonly eventStoreContext: PipelineEventStoreContext;
|
|
2235
|
-
private readonly itemKeyExtractors = new Map<string, (data: unknown) => string | undefined>();
|
|
2236
|
-
private readonly middleware: express.RequestHandler[] = [];
|
|
2237
|
-
|
|
2238
|
-
constructor(config: PipelineServerConfig) {
|
|
2239
|
-
this.requestedPort = config.port;
|
|
2240
|
-
this.actualPort = config.port;
|
|
2241
|
-
this.app = express();
|
|
2242
|
-
this.app.use(cors());
|
|
2243
|
-
this.app.use(express.json());
|
|
2244
|
-
this.httpServer = createServer(this.app);
|
|
2245
|
-
this.messageBus = createMessageBus();
|
|
2246
|
-
this.eventStoreContext = createPipelineEventStore();
|
|
2247
|
-
this.eventCommandMapper = new EventCommandMapper([]);
|
|
2248
|
-
this.settledTracker = new SettledTracker({
|
|
2249
|
-
readModel: this.eventStoreContext.readModel,
|
|
2250
|
-
/* v8 ignore next 3 - integration callback tested via settled-tracker.specs.ts */
|
|
2251
|
-
onDispatch: (commandType, data, correlationId) => {
|
|
2252
|
-
void this.dispatchFromSettled(commandType, data, correlationId);
|
|
2253
|
-
},
|
|
2254
|
-
/* v8 ignore next 4 - integration callback tested via settled-tracker.specs.ts */
|
|
2255
|
-
onEventEmit: async (event) => {
|
|
2256
|
-
const correlationId = event.data.correlationId;
|
|
2257
|
-
await this.eventStoreContext.eventStore.appendToStream(`pipeline-${correlationId}`, [event]);
|
|
2258
|
-
},
|
|
2259
|
-
});
|
|
2260
|
-
this.phasedExecutor = new PhasedExecutor({
|
|
2261
|
-
readModel: this.eventStoreContext.readModel,
|
|
2262
|
-
/* v8 ignore next 3 - integration callback tested via phased-executor.specs.ts */
|
|
2263
|
-
onDispatch: (commandType, data, correlationId) => {
|
|
2264
|
-
void this.dispatchFromSettled(commandType, data, correlationId);
|
|
2265
|
-
},
|
|
2266
|
-
/* v8 ignore next 3 - integration callback tested via phased-executor.specs.ts */
|
|
2267
|
-
onComplete: (event, correlationId) => {
|
|
2268
|
-
void this.handlePhasedComplete(event, correlationId);
|
|
2269
|
-
},
|
|
2270
|
-
/* v8 ignore next 5 - integration callback tested via phased-executor.specs.ts */
|
|
2271
|
-
onEventEmit: async (event) => {
|
|
2272
|
-
const data = event.data as Record<string, unknown>;
|
|
2273
|
-
const correlationId =
|
|
2274
|
-
(data.correlationId as string) ?? (data.executionId as string)?.split('-')[1] ?? 'default';
|
|
2275
|
-
await this.eventStoreContext.eventStore.appendToStream(`pipeline-${correlationId}`, [event]);
|
|
2276
|
-
},
|
|
2277
|
-
});
|
|
2278
|
-
this.sseManager = new SSEManager();
|
|
2279
|
-
}
|
|
2280
|
-
|
|
2281
|
-
get port(): number {
|
|
2282
|
-
return this.actualPort;
|
|
2283
|
-
}
|
|
2284
|
-
|
|
2285
|
-
registerCommandHandlers(handlers: CommandHandlerWithMetadata[]): void {
|
|
2286
|
-
for (const handler of handlers) {
|
|
2287
|
-
this.commandHandlers.set(handler.name, handler);
|
|
2288
|
-
this.messageBus.registerCommandHandler(handler);
|
|
2289
|
-
this.eventCommandMapper.addHandler(handler);
|
|
2290
|
-
}
|
|
2291
|
-
}
|
|
2292
|
-
|
|
2293
|
-
getRegisteredCommands(): string[] {
|
|
2294
|
-
return Array.from(this.commandHandlers.keys());
|
|
2295
|
-
}
|
|
2296
|
-
|
|
2297
|
-
registerItemKeyExtractor(commandType: string, extractor: (data: unknown) => string | undefined): void {
|
|
2298
|
-
this.itemKeyExtractors.set(commandType, extractor);
|
|
2299
|
-
}
|
|
2300
|
-
|
|
2301
|
-
registerPipeline(pipeline: Pipeline): void {
|
|
2302
|
-
this.pipelines.set(pipeline.descriptor.name, pipeline);
|
|
2303
|
-
this.runtimes.set(pipeline.descriptor.name, new PipelineRuntime(pipeline.descriptor));
|
|
2304
|
-
|
|
2305
|
-
for (const handler of pipeline.descriptor.handlers) {
|
|
2306
|
-
if (handler.type === 'settled') {
|
|
2307
|
-
this.settledTracker.registerHandler({
|
|
2308
|
-
commandTypes: handler.commandTypes,
|
|
2309
|
-
handler: handler.handler,
|
|
2310
|
-
});
|
|
2311
|
-
}
|
|
2312
|
-
}
|
|
2313
|
-
}
|
|
2314
|
-
|
|
2315
|
-
getPipelineNames(): string[] {
|
|
2316
|
-
return Array.from(this.pipelines.keys());
|
|
2317
|
-
}
|
|
2318
|
-
|
|
2319
|
-
use(handler: express.RequestHandler): this {
|
|
2320
|
-
this.middleware.push(handler);
|
|
2321
|
-
return this;
|
|
2322
|
-
}
|
|
2323
|
-
|
|
2324
|
-
async start(): Promise<void> {
|
|
2325
|
-
if (this.requestedPort === 0) {
|
|
2326
|
-
this.actualPort = await getPort();
|
|
2327
|
-
}
|
|
2328
|
-
|
|
2329
|
-
for (const handler of this.middleware) {
|
|
2330
|
-
this.app.use(handler);
|
|
2331
|
-
}
|
|
2332
|
-
|
|
2333
|
-
this.setupRoutes();
|
|
2334
|
-
|
|
2335
|
-
await new Promise<void>((resolve) => {
|
|
2336
|
-
this.httpServer.listen(this.actualPort, () => {
|
|
2337
|
-
resolve();
|
|
2338
|
-
});
|
|
2339
|
-
});
|
|
2340
|
-
}
|
|
2341
|
-
|
|
2342
|
-
async stop(): Promise<void> {
|
|
2343
|
-
this.sseManager.closeAll();
|
|
2344
|
-
await new Promise<void>((resolve) => {
|
|
2345
|
-
this.httpServer.close(() => resolve());
|
|
2346
|
-
});
|
|
2347
|
-
}
|
|
2348
|
-
|
|
2349
|
-
private setupRoutes(): void {
|
|
2350
|
-
this.app.get('/health', (_req, res) => {
|
|
2351
|
-
res.json({
|
|
2352
|
-
status: 'healthy',
|
|
2353
|
-
uptime: process.uptime(),
|
|
2354
|
-
timestamp: new Date().toISOString(),
|
|
2355
|
-
});
|
|
2356
|
-
});
|
|
2357
|
-
|
|
2358
|
-
this.app.get('/registry', (_req, res) => {
|
|
2359
|
-
const eventHandlers: string[] = [];
|
|
2360
|
-
for (const pipeline of this.pipelines.values()) {
|
|
2361
|
-
for (const handler of pipeline.descriptor.handlers) {
|
|
2362
|
-
if (handler.type === 'settled') {
|
|
2363
|
-
continue;
|
|
2364
|
-
}
|
|
2365
|
-
if (!eventHandlers.includes(handler.eventType)) {
|
|
2366
|
-
eventHandlers.push(handler.eventType);
|
|
2367
|
-
}
|
|
2368
|
-
}
|
|
2369
|
-
}
|
|
2370
|
-
|
|
2371
|
-
const commandsWithMetadata = Array.from(this.commandHandlers.entries()).map(([name, handler]) => {
|
|
2372
|
-
const alias = handler.alias ?? name;
|
|
2373
|
-
const description = handler.description ?? '';
|
|
2374
|
-
const fields = handler.fields ?? {};
|
|
2375
|
-
const examples = handler.examples ?? [];
|
|
2376
|
-
return { id: alias, name, alias, description, fields, examples };
|
|
2377
|
-
});
|
|
2378
|
-
|
|
2379
|
-
res.json({
|
|
2380
|
-
eventHandlers,
|
|
2381
|
-
commandHandlers: Array.from(this.commandHandlers.keys()),
|
|
2382
|
-
commandsWithMetadata,
|
|
2383
|
-
folds: [],
|
|
2384
|
-
});
|
|
2385
|
-
});
|
|
2386
|
-
|
|
2387
|
-
this.app.get('/pipeline', (req, res) => {
|
|
2388
|
-
void (async () => {
|
|
2389
|
-
const commandToEvents = this.buildCommandToEvents();
|
|
2390
|
-
const rawGraph = this.buildCombinedGraph();
|
|
2391
|
-
const pipelineEvents = this.extractPipelineEvents(rawGraph, commandToEvents);
|
|
2392
|
-
const graphWithEvents = this.addCommandEventEdgesToGraph(rawGraph, commandToEvents, pipelineEvents);
|
|
2393
|
-
const graphWithEnrichedEvents = this.enrichEventLabels(graphWithEvents);
|
|
2394
|
-
const completeGraph = this.markBackLinks(graphWithEnrichedEvents);
|
|
2395
|
-
const filterOptions = this.parseFilterOptions(req.query);
|
|
2396
|
-
const filteredGraph = filterGraph(completeGraph, filterOptions);
|
|
2397
|
-
const correlationId = req.query.correlationId as string | undefined;
|
|
2398
|
-
const graphWithStatus = await this.addStatusToCommandNodes(filteredGraph, correlationId);
|
|
2399
|
-
|
|
2400
|
-
const latestRun = await this.eventStoreContext.readModel.getLatestCorrelationId();
|
|
2401
|
-
res.json({
|
|
2402
|
-
nodes: graphWithStatus.nodes,
|
|
2403
|
-
edges: graphWithStatus.edges,
|
|
2404
|
-
latestRun,
|
|
2405
|
-
});
|
|
2406
|
-
})();
|
|
2407
|
-
});
|
|
2408
|
-
|
|
2409
|
-
this.app.get('/pipeline/mermaid', (req, res) => {
|
|
2410
|
-
const filterOptions = this.parseFilterOptions(req.query);
|
|
2411
|
-
const mermaid = this.buildMermaidDiagram(filterOptions);
|
|
2412
|
-
res.type('text/plain').send(mermaid);
|
|
2413
|
-
});
|
|
2414
|
-
|
|
2415
|
-
this.app.get('/pipeline/diagram', (req, res) => {
|
|
2416
|
-
const filterOptions = this.parseFilterOptions(req.query);
|
|
2417
|
-
const mermaidDefinition = this.buildMermaidDiagram(filterOptions);
|
|
2418
|
-
const html = this.buildDiagramHtml(mermaidDefinition);
|
|
2419
|
-
res.type('text/html').send(html);
|
|
2420
|
-
});
|
|
2421
|
-
|
|
2422
|
-
this.app.post('/command', (req, res) => {
|
|
2423
|
-
void (async () => {
|
|
2424
|
-
const command = req.body as Command;
|
|
2425
|
-
|
|
2426
|
-
if (!this.commandHandlers.has(command.type)) {
|
|
2427
|
-
res.status(404).json({
|
|
2428
|
-
status: 'nack',
|
|
2429
|
-
error: `Command handler not found: ${command.type}`,
|
|
2430
|
-
});
|
|
2431
|
-
return;
|
|
2432
|
-
}
|
|
2433
|
-
|
|
2434
|
-
const requestId = command.requestId ?? `req-${nanoid()}`;
|
|
2435
|
-
const correlationId = command.correlationId ?? `corr-${nanoid()}`;
|
|
2436
|
-
const commandWithIds: Command & { correlationId: string; requestId: string } = {
|
|
2437
|
-
...command,
|
|
2438
|
-
requestId,
|
|
2439
|
-
correlationId,
|
|
2440
|
-
};
|
|
2441
|
-
|
|
2442
|
-
await this.emitCommandDispatched(correlationId, requestId, commandWithIds.type, commandWithIds.data);
|
|
2443
|
-
|
|
2444
|
-
void this.processCommand(commandWithIds);
|
|
2445
|
-
|
|
2446
|
-
res.json({
|
|
2447
|
-
status: 'ack',
|
|
2448
|
-
commandId: commandWithIds.requestId,
|
|
2449
|
-
correlationId: commandWithIds.correlationId,
|
|
2450
|
-
timestamp: new Date().toISOString(),
|
|
2451
|
-
});
|
|
2452
|
-
})();
|
|
2453
|
-
});
|
|
2454
|
-
|
|
2455
|
-
this.app.get('/messages', (_req, res) => {
|
|
2456
|
-
void (async () => {
|
|
2457
|
-
const messages = await this.eventStoreContext.readModel.getMessages();
|
|
2458
|
-
const serialized = messages.map((m, index) => ({
|
|
2459
|
-
message: {
|
|
2460
|
-
type: m.messageName,
|
|
2461
|
-
data: m.messageData,
|
|
2462
|
-
correlationId: m.correlationId,
|
|
2463
|
-
requestId: m.requestId,
|
|
2464
|
-
},
|
|
2465
|
-
messageType: m.messageType,
|
|
2466
|
-
revision: String(index),
|
|
2467
|
-
position: String(index),
|
|
2468
|
-
}));
|
|
2469
|
-
res.json(serialized);
|
|
2470
|
-
})();
|
|
2471
|
-
});
|
|
2472
|
-
|
|
2473
|
-
this.app.get('/stats', (_req, res) => {
|
|
2474
|
-
void (async () => {
|
|
2475
|
-
const stats = await this.eventStoreContext.readModel.getStats();
|
|
2476
|
-
res.json(stats);
|
|
2477
|
-
})();
|
|
2478
|
-
});
|
|
2479
|
-
|
|
2480
|
-
this.app.get('/events', (req, res) => {
|
|
2481
|
-
const clientId = `sse-${nanoid()}`;
|
|
2482
|
-
const correlationIdFilter = req.query.correlationId as string | undefined;
|
|
2483
|
-
this.sseManager.addClient(clientId, res, correlationIdFilter);
|
|
2484
|
-
});
|
|
2485
|
-
|
|
2486
|
-
this.app.post('/execute', (req, res) => {
|
|
2487
|
-
void (async () => {
|
|
2488
|
-
const { command, payload } = req.body as {
|
|
2489
|
-
command: string;
|
|
2490
|
-
payload: Record<string, unknown>;
|
|
2491
|
-
};
|
|
2492
|
-
|
|
2493
|
-
const handler = this.commandHandlers.get(command);
|
|
2494
|
-
if (!handler) {
|
|
2495
|
-
res.status(400).json({ error: `Unknown command: ${command}` });
|
|
2496
|
-
return;
|
|
2497
|
-
}
|
|
2498
|
-
|
|
2499
|
-
const resultEvent = await handler.handle({ type: command, data: payload });
|
|
2500
|
-
const events = Array.isArray(resultEvent) ? resultEvent : [resultEvent];
|
|
2501
|
-
const firstEvent = events[0];
|
|
2502
|
-
|
|
2503
|
-
res.json({ event: firstEvent.type, data: firstEvent.data });
|
|
2504
|
-
})();
|
|
2505
|
-
});
|
|
2506
|
-
}
|
|
2507
|
-
|
|
2508
|
-
private buildCombinedGraph(): GraphIR {
|
|
2509
|
-
const combinedGraph: GraphIR = { nodes: [], edges: [] };
|
|
2510
|
-
const nodeSet = new Set<string>();
|
|
2511
|
-
|
|
2512
|
-
for (const pipeline of this.pipelines.values()) {
|
|
2513
|
-
const graph = pipeline.toGraph();
|
|
2514
|
-
for (const node of graph.nodes) {
|
|
2515
|
-
if (!nodeSet.has(node.id)) {
|
|
2516
|
-
nodeSet.add(node.id);
|
|
2517
|
-
combinedGraph.nodes.push(node);
|
|
2518
|
-
}
|
|
2519
|
-
}
|
|
2520
|
-
combinedGraph.edges.push(...graph.edges);
|
|
2521
|
-
}
|
|
2522
|
-
|
|
2523
|
-
return this.enrichCommandLabels(combinedGraph);
|
|
2524
|
-
}
|
|
2525
|
-
|
|
2526
|
-
private enrichCommandLabels(graph: GraphIR): GraphIR {
|
|
2527
|
-
return {
|
|
2528
|
-
nodes: graph.nodes.map((node) => {
|
|
2529
|
-
if (node.type !== 'command') {
|
|
2530
|
-
return node;
|
|
2531
|
-
}
|
|
2532
|
-
const handler = this.commandHandlers.get(node.label);
|
|
2533
|
-
if (handler?.displayName === undefined) {
|
|
2534
|
-
return node;
|
|
2535
|
-
}
|
|
2536
|
-
return { ...node, label: handler.displayName };
|
|
2537
|
-
}),
|
|
2538
|
-
edges: graph.edges,
|
|
2539
|
-
};
|
|
2540
|
-
}
|
|
2541
|
-
|
|
2542
|
-
private enrichEventLabels(graph: GraphIR): GraphIR {
|
|
2543
|
-
const eventDisplayNames = this.buildEventDisplayNames();
|
|
2544
|
-
return {
|
|
2545
|
-
nodes: graph.nodes.map((node) => {
|
|
2546
|
-
if (node.type !== 'event') {
|
|
2547
|
-
return node;
|
|
2548
|
-
}
|
|
2549
|
-
const displayName = eventDisplayNames.get(node.label);
|
|
2550
|
-
if (displayName === undefined) {
|
|
2551
|
-
return node;
|
|
2552
|
-
}
|
|
2553
|
-
return { ...node, label: displayName };
|
|
2554
|
-
}),
|
|
2555
|
-
edges: graph.edges,
|
|
2556
|
-
};
|
|
2557
|
-
}
|
|
2558
|
-
|
|
2559
|
-
private async addStatusToCommandNodes(graph: GraphIR, correlationId?: string): Promise<GraphIR> {
|
|
2560
|
-
const nodesWithStatus = await Promise.all(
|
|
2561
|
-
graph.nodes.map(async (node) => {
|
|
2562
|
-
if (node.type === 'command') {
|
|
2563
|
-
return this.addStatusToCommandNode(node, correlationId);
|
|
2564
|
-
}
|
|
2565
|
-
if (node.type === 'settled') {
|
|
2566
|
-
return this.addStatusToSettledNode(node, correlationId);
|
|
2567
|
-
}
|
|
2568
|
-
return node;
|
|
2569
|
-
}),
|
|
2570
|
-
);
|
|
2571
|
-
return {
|
|
2572
|
-
nodes: nodesWithStatus,
|
|
2573
|
-
edges: graph.edges,
|
|
2574
|
-
};
|
|
2575
|
-
}
|
|
2576
|
-
|
|
2577
|
-
private async addStatusToCommandNode(node: GraphNode, correlationId?: string): Promise<GraphNode> {
|
|
2578
|
-
const commandName = node.id.replace(/^cmd:/, '');
|
|
2579
|
-
if (correlationId === undefined) {
|
|
2580
|
-
return { ...node, status: 'idle' as NodeStatus, pendingCount: 0, endedCount: 0 };
|
|
2581
|
-
}
|
|
2582
|
-
const stats = await this.computeCommandStats(correlationId, commandName);
|
|
2583
|
-
return {
|
|
2584
|
-
...node,
|
|
2585
|
-
status: stats.aggregateStatus,
|
|
2586
|
-
pendingCount: stats.pendingCount,
|
|
2587
|
-
endedCount: stats.endedCount,
|
|
2588
|
-
};
|
|
2589
|
-
}
|
|
2590
|
-
|
|
2591
|
-
private async addStatusToSettledNode(node: GraphNode, correlationId?: string): Promise<GraphNode> {
|
|
2592
|
-
if (correlationId === undefined) {
|
|
2593
|
-
return { ...node, status: 'idle' as NodeStatus, pendingCount: 0, endedCount: 0 };
|
|
2594
|
-
}
|
|
2595
|
-
const commandTypes = node.id.replace(/^settled:/, '');
|
|
2596
|
-
const templateId = `template-${commandTypes}`;
|
|
2597
|
-
const stats = await this.eventStoreContext.readModel.computeSettledStats(correlationId, templateId);
|
|
2598
|
-
return {
|
|
2599
|
-
...node,
|
|
2600
|
-
status: stats.status,
|
|
2601
|
-
pendingCount: stats.pendingCount,
|
|
2602
|
-
endedCount: stats.endedCount,
|
|
2603
|
-
};
|
|
2604
|
-
}
|
|
2605
|
-
|
|
2606
|
-
private async emitItemStatusChanged(
|
|
2607
|
-
correlationId: string,
|
|
2608
|
-
commandType: string,
|
|
2609
|
-
itemKey: string,
|
|
2610
|
-
requestId: string,
|
|
2611
|
-
status: 'running' | 'success' | 'error',
|
|
2612
|
-
attemptCount: number,
|
|
2613
|
-
): Promise<void> {
|
|
2614
|
-
await this.eventStoreContext.eventStore.appendToStream(`pipeline-${correlationId}`, [
|
|
2615
|
-
{
|
|
2616
|
-
type: 'ItemStatusChanged',
|
|
2617
|
-
data: {
|
|
2618
|
-
correlationId,
|
|
2619
|
-
commandType,
|
|
2620
|
-
itemKey,
|
|
2621
|
-
requestId,
|
|
2622
|
-
status,
|
|
2623
|
-
attemptCount,
|
|
2624
|
-
},
|
|
2625
|
-
},
|
|
2626
|
-
]);
|
|
2627
|
-
}
|
|
2628
|
-
|
|
2629
|
-
private async emitNodeStatusChanged(
|
|
2630
|
-
correlationId: string,
|
|
2631
|
-
commandName: string,
|
|
2632
|
-
status: NodeStatus,
|
|
2633
|
-
previousStatus: NodeStatus,
|
|
2634
|
-
): Promise<void> {
|
|
2635
|
-
const stats = await this.computeCommandStats(correlationId, commandName);
|
|
2636
|
-
await this.eventStoreContext.eventStore.appendToStream(`pipeline-${correlationId}`, [
|
|
2637
|
-
{
|
|
2638
|
-
type: 'NodeStatusChanged',
|
|
2639
|
-
data: {
|
|
2640
|
-
correlationId,
|
|
2641
|
-
commandName,
|
|
2642
|
-
nodeId: `cmd:${commandName}`,
|
|
2643
|
-
status,
|
|
2644
|
-
previousStatus,
|
|
2645
|
-
pendingCount: stats.pendingCount,
|
|
2646
|
-
endedCount: stats.endedCount,
|
|
2647
|
-
},
|
|
2648
|
-
},
|
|
2649
|
-
]);
|
|
2650
|
-
}
|
|
2651
|
-
|
|
2652
|
-
private async emitCommandDispatched(
|
|
2653
|
-
correlationId: string,
|
|
2654
|
-
requestId: string,
|
|
2655
|
-
commandType: string,
|
|
2656
|
-
commandData: Record<string, unknown>,
|
|
2657
|
-
): Promise<void> {
|
|
2658
|
-
await this.eventStoreContext.eventStore.appendToStream(`pipeline-${correlationId}`, [
|
|
2659
|
-
{
|
|
2660
|
-
type: 'CommandDispatched',
|
|
2661
|
-
data: {
|
|
2662
|
-
correlationId,
|
|
2663
|
-
requestId,
|
|
2664
|
-
commandType,
|
|
2665
|
-
commandData,
|
|
2666
|
-
timestamp: new Date(),
|
|
2667
|
-
},
|
|
2668
|
-
},
|
|
2669
|
-
]);
|
|
2670
|
-
}
|
|
2671
|
-
|
|
2672
|
-
private async emitDomainEventEmitted(
|
|
2673
|
-
correlationId: string,
|
|
2674
|
-
requestId: string,
|
|
2675
|
-
eventType: string,
|
|
2676
|
-
eventData: Record<string, unknown>,
|
|
2677
|
-
): Promise<void> {
|
|
2678
|
-
await this.eventStoreContext.eventStore.appendToStream(`pipeline-${correlationId}`, [
|
|
2679
|
-
{
|
|
2680
|
-
type: 'DomainEventEmitted',
|
|
2681
|
-
data: {
|
|
2682
|
-
correlationId,
|
|
2683
|
-
requestId,
|
|
2684
|
-
eventType,
|
|
2685
|
-
eventData,
|
|
2686
|
-
timestamp: new Date(),
|
|
2687
|
-
},
|
|
2688
|
-
},
|
|
2689
|
-
]);
|
|
2690
|
-
}
|
|
2691
|
-
|
|
2692
|
-
private async emitPipelineRunStarted(correlationId: string, triggerCommand: string): Promise<void> {
|
|
2693
|
-
await this.eventStoreContext.eventStore.appendToStream(`pipeline-${correlationId}`, [
|
|
2694
|
-
{
|
|
2695
|
-
type: 'PipelineRunStarted',
|
|
2696
|
-
data: {
|
|
2697
|
-
correlationId,
|
|
2698
|
-
triggerCommand,
|
|
2699
|
-
},
|
|
2700
|
-
},
|
|
2701
|
-
]);
|
|
2702
|
-
}
|
|
2703
|
-
|
|
2704
|
-
private async updateNodeStatus(correlationId: string, commandName: string, status: NodeStatus): Promise<void> {
|
|
2705
|
-
const existing = await this.eventStoreContext.readModel.getNodeStatus(correlationId, commandName);
|
|
2706
|
-
const previousStatus: NodeStatus = existing?.status ?? 'idle';
|
|
2707
|
-
await this.emitNodeStatusChanged(correlationId, commandName, status, previousStatus);
|
|
2708
|
-
await this.broadcastNodeStatusChanged(correlationId, commandName, status, previousStatus);
|
|
2709
|
-
}
|
|
2710
|
-
|
|
2711
|
-
private async broadcastNodeStatusChanged(
|
|
2712
|
-
correlationId: string,
|
|
2713
|
-
commandName: string,
|
|
2714
|
-
status: NodeStatus,
|
|
2715
|
-
previousStatus: NodeStatus,
|
|
2716
|
-
): Promise<void> {
|
|
2717
|
-
const stats = await this.computeCommandStats(correlationId, commandName);
|
|
2718
|
-
const event: Event & { correlationId: string } = {
|
|
2719
|
-
type: 'NodeStatusChanged',
|
|
2720
|
-
data: {
|
|
2721
|
-
nodeId: `cmd:${commandName}`,
|
|
2722
|
-
status,
|
|
2723
|
-
previousStatus,
|
|
2724
|
-
pendingCount: stats.pendingCount,
|
|
2725
|
-
endedCount: stats.endedCount,
|
|
2726
|
-
},
|
|
2727
|
-
correlationId,
|
|
2728
|
-
};
|
|
2729
|
-
this.sseManager.broadcast(event);
|
|
2730
|
-
}
|
|
2731
|
-
|
|
2732
|
-
private async broadcastPipelineRunStarted(correlationId: string, triggerCommand: string): Promise<void> {
|
|
2733
|
-
const event: Event & { correlationId: string } = {
|
|
2734
|
-
type: 'PipelineRunStarted',
|
|
2735
|
-
data: { correlationId, triggerCommand },
|
|
2736
|
-
correlationId,
|
|
2737
|
-
};
|
|
2738
|
-
this.sseManager.broadcast(event);
|
|
2739
|
-
await this.emitPipelineRunStarted(correlationId, triggerCommand);
|
|
2740
|
-
}
|
|
2741
|
-
|
|
2742
|
-
private extractItemKey(commandType: string, data: unknown, requestId: string): string {
|
|
2743
|
-
const extractor = this.itemKeyExtractors.get(commandType);
|
|
2744
|
-
if (extractor !== undefined) {
|
|
2745
|
-
const key = extractor(data);
|
|
2746
|
-
if (key !== undefined) return key;
|
|
2747
|
-
}
|
|
2748
|
-
return requestId;
|
|
2749
|
-
}
|
|
2750
|
-
|
|
2751
|
-
private async getOrCreateItemStatus(
|
|
2752
|
-
correlationId: string,
|
|
2753
|
-
commandType: string,
|
|
2754
|
-
itemKey: string,
|
|
2755
|
-
requestId: string,
|
|
2756
|
-
): Promise<{ attemptCount: number }> {
|
|
2757
|
-
const existing = await this.eventStoreContext.readModel.getItemStatus(correlationId, commandType, itemKey);
|
|
2758
|
-
const attemptCount = (existing?.attemptCount ?? 0) + 1;
|
|
2759
|
-
|
|
2760
|
-
await this.emitItemStatusChanged(correlationId, commandType, itemKey, requestId, 'running', attemptCount);
|
|
2761
|
-
|
|
2762
|
-
return { attemptCount };
|
|
2763
|
-
}
|
|
2764
|
-
|
|
2765
|
-
private async updateItemStatus(
|
|
2766
|
-
correlationId: string,
|
|
2767
|
-
commandType: string,
|
|
2768
|
-
itemKey: string,
|
|
2769
|
-
status: 'running' | 'success' | 'error',
|
|
2770
|
-
): Promise<void> {
|
|
2771
|
-
const existing = await this.eventStoreContext.readModel.getItemStatus(correlationId, commandType, itemKey);
|
|
2772
|
-
if (existing !== null) {
|
|
2773
|
-
await this.emitItemStatusChanged(
|
|
2774
|
-
correlationId,
|
|
2775
|
-
commandType,
|
|
2776
|
-
itemKey,
|
|
2777
|
-
existing.currentRequestId,
|
|
2778
|
-
status,
|
|
2779
|
-
existing.attemptCount,
|
|
2780
|
-
);
|
|
2781
|
-
}
|
|
2782
|
-
}
|
|
2783
|
-
|
|
2784
|
-
private async computeCommandStats(
|
|
2785
|
-
correlationId: string,
|
|
2786
|
-
commandType: string,
|
|
2787
|
-
): Promise<{ pendingCount: number; endedCount: number; aggregateStatus: NodeStatus }> {
|
|
2788
|
-
return this.eventStoreContext.readModel.computeCommandStats(correlationId, commandType);
|
|
2789
|
-
}
|
|
2790
|
-
|
|
2791
|
-
private getEventName(event: EventDefinition): string {
|
|
2792
|
-
return typeof event === 'string' ? event : event.name;
|
|
2793
|
-
}
|
|
2794
|
-
|
|
2795
|
-
private buildCommandToEvents(): Record<string, string[]> {
|
|
2796
|
-
const commandToEvents: Record<string, string[]> = {};
|
|
2797
|
-
for (const [name, handler] of this.commandHandlers.entries()) {
|
|
2798
|
-
if (handler.events !== undefined && Array.isArray(handler.events)) {
|
|
2799
|
-
commandToEvents[name] = handler.events.map((e) => this.getEventName(e));
|
|
2800
|
-
}
|
|
2801
|
-
}
|
|
2802
|
-
return commandToEvents;
|
|
2803
|
-
}
|
|
2804
|
-
|
|
2805
|
-
private buildEventDisplayNames(): Map<string, string> {
|
|
2806
|
-
const eventDisplayNames = new Map<string, string>();
|
|
2807
|
-
for (const handler of this.commandHandlers.values()) {
|
|
2808
|
-
if (handler.events === undefined) {
|
|
2809
|
-
continue;
|
|
2810
|
-
}
|
|
2811
|
-
for (const event of handler.events) {
|
|
2812
|
-
if (typeof event !== 'string' && event.displayName !== undefined) {
|
|
2813
|
-
eventDisplayNames.set(event.name, event.displayName);
|
|
2814
|
-
}
|
|
2815
|
-
}
|
|
2816
|
-
}
|
|
2817
|
-
return eventDisplayNames;
|
|
2818
|
-
}
|
|
2819
|
-
|
|
2820
|
-
private parseFilterOptions(query: Record<string, unknown>): FilterOptions {
|
|
2821
|
-
const excludeTypesParam = query.excludeTypes;
|
|
2822
|
-
const maintainEdgesParam = query.maintainEdges;
|
|
2823
|
-
|
|
2824
|
-
const excludeTypes: NodeType[] = [];
|
|
2825
|
-
if (typeof excludeTypesParam === 'string' && excludeTypesParam.length > 0) {
|
|
2826
|
-
const types = excludeTypesParam.split(',');
|
|
2827
|
-
for (const t of types) {
|
|
2828
|
-
if (t === 'event' || t === 'command' || t === 'settled') {
|
|
2829
|
-
excludeTypes.push(t);
|
|
2830
|
-
}
|
|
2831
|
-
}
|
|
2832
|
-
}
|
|
2833
|
-
|
|
2834
|
-
const maintainEdges = maintainEdgesParam === 'true';
|
|
2835
|
-
|
|
2836
|
-
return { excludeTypes, maintainEdges };
|
|
2837
|
-
}
|
|
2838
|
-
|
|
2839
|
-
private buildMermaidDiagram(filterOptions: FilterOptions): string {
|
|
2840
|
-
const commandToEvents = this.buildCommandToEvents();
|
|
2841
|
-
const rawGraph = this.buildCombinedGraph();
|
|
2842
|
-
const pipelineEvents = this.extractPipelineEvents(rawGraph, commandToEvents);
|
|
2843
|
-
const graphWithEvents = this.addCommandEventEdgesToGraph(rawGraph, commandToEvents, pipelineEvents);
|
|
2844
|
-
const graphWithEnrichedEvents = this.enrichEventLabels(graphWithEvents);
|
|
2845
|
-
const completeGraph = this.markBackLinks(graphWithEnrichedEvents);
|
|
2846
|
-
const graph = filterGraph(completeGraph, filterOptions);
|
|
2847
|
-
const lines: string[] = ['flowchart LR'];
|
|
2848
|
-
|
|
2849
|
-
const eventNodes = new Set<string>();
|
|
2850
|
-
const commandNodes = new Set<string>();
|
|
2851
|
-
const settledNodes = new Set<string>();
|
|
2852
|
-
const edgeContext = { index: 0, backLinkIndices: [] as number[] };
|
|
2853
|
-
|
|
2854
|
-
this.addGraphNodesToMermaid(graph, lines, eventNodes, commandNodes, settledNodes);
|
|
2855
|
-
this.addGraphEdgesToMermaid(graph, lines, edgeContext);
|
|
2856
|
-
this.addMermaidStyles(lines, eventNodes, commandNodes, settledNodes, edgeContext.backLinkIndices);
|
|
2857
|
-
|
|
2858
|
-
return lines.join('\n');
|
|
2859
|
-
}
|
|
2860
|
-
|
|
2861
|
-
private addCommandEventEdgesToGraph(
|
|
2862
|
-
graph: GraphIR,
|
|
2863
|
-
commandToEvents: Record<string, string[]>,
|
|
2864
|
-
pipelineEvents: Set<string>,
|
|
2865
|
-
): GraphIR {
|
|
2866
|
-
const commandNodes = new Set(graph.nodes.filter((n) => n.type === 'command').map((n) => n.id.replace('cmd:', '')));
|
|
2867
|
-
const existingEventIds = new Set(graph.nodes.filter((n) => n.type === 'event').map((n) => n.id));
|
|
2868
|
-
const newNodes = [...graph.nodes];
|
|
2869
|
-
const newEdges = [...graph.edges];
|
|
2870
|
-
|
|
2871
|
-
for (const [commandName, events] of Object.entries(commandToEvents)) {
|
|
2872
|
-
if (!commandNodes.has(commandName)) {
|
|
2873
|
-
continue;
|
|
2874
|
-
}
|
|
2875
|
-
for (const eventName of events) {
|
|
2876
|
-
if (!pipelineEvents.has(eventName)) {
|
|
2877
|
-
continue;
|
|
2878
|
-
}
|
|
2879
|
-
const eventId = `evt:${eventName}`;
|
|
2880
|
-
if (!existingEventIds.has(eventId)) {
|
|
2881
|
-
newNodes.push({ id: eventId, type: 'event', label: eventName });
|
|
2882
|
-
existingEventIds.add(eventId);
|
|
2883
|
-
}
|
|
2884
|
-
newEdges.push({ from: `cmd:${commandName}`, to: eventId });
|
|
2885
|
-
}
|
|
2886
|
-
}
|
|
2887
|
-
|
|
2888
|
-
return { nodes: newNodes, edges: newEdges };
|
|
2889
|
-
}
|
|
2890
|
-
|
|
2891
|
-
private markBackLinks(graph: GraphIR): GraphIR {
|
|
2892
|
-
const outgoingEdgesWithBackLink = new Map<string, Array<{ to: string; isBackLink: boolean }>>();
|
|
2893
|
-
for (const edge of graph.edges) {
|
|
2894
|
-
const existing = outgoingEdgesWithBackLink.get(edge.from) ?? [];
|
|
2895
|
-
existing.push({ to: edge.to, isBackLink: edge.backLink === true });
|
|
2896
|
-
outgoingEdgesWithBackLink.set(edge.from, existing);
|
|
2897
|
-
}
|
|
2898
|
-
|
|
2899
|
-
const markedEdges = graph.edges.map((edge) => {
|
|
2900
|
-
if (edge.backLink === true) {
|
|
2901
|
-
return edge;
|
|
2902
|
-
}
|
|
2903
|
-
if (edge.from.startsWith('evt:') && edge.to.startsWith('cmd:')) {
|
|
2904
|
-
const createsBackLink = this.hasPathToExcludingBackLinks(edge.to, edge.from, outgoingEdgesWithBackLink);
|
|
2905
|
-
if (createsBackLink) {
|
|
2906
|
-
return { ...edge, backLink: true };
|
|
2907
|
-
}
|
|
2908
|
-
}
|
|
2909
|
-
return edge;
|
|
2910
|
-
});
|
|
2911
|
-
|
|
2912
|
-
return { nodes: graph.nodes, edges: markedEdges };
|
|
2913
|
-
}
|
|
2914
|
-
|
|
2915
|
-
private hasPathToExcludingBackLinks(
|
|
2916
|
-
from: string,
|
|
2917
|
-
target: string,
|
|
2918
|
-
outgoingEdges: Map<string, Array<{ to: string; isBackLink: boolean }>>,
|
|
2919
|
-
): boolean {
|
|
2920
|
-
const visited = new Set<string>();
|
|
2921
|
-
const queue = [from];
|
|
2922
|
-
|
|
2923
|
-
while (queue.length > 0) {
|
|
2924
|
-
const current = queue.shift()!;
|
|
2925
|
-
if (current === target) {
|
|
2926
|
-
return true;
|
|
2927
|
-
}
|
|
2928
|
-
if (visited.has(current)) {
|
|
2929
|
-
continue;
|
|
2930
|
-
}
|
|
2931
|
-
visited.add(current);
|
|
2932
|
-
|
|
2933
|
-
const neighbors = outgoingEdges.get(current) ?? [];
|
|
2934
|
-
for (const neighbor of neighbors) {
|
|
2935
|
-
if (!neighbor.isBackLink && !visited.has(neighbor.to)) {
|
|
2936
|
-
queue.push(neighbor.to);
|
|
2937
|
-
}
|
|
2938
|
-
}
|
|
2939
|
-
}
|
|
2940
|
-
|
|
2941
|
-
return false;
|
|
2942
|
-
}
|
|
2943
|
-
|
|
2944
|
-
private extractPipelineEvents(graph: GraphIR, commandToEvents: Record<string, string[]>): Set<string> {
|
|
2945
|
-
const pipelineEvents = new Set<string>();
|
|
2946
|
-
|
|
2947
|
-
for (const node of graph.nodes) {
|
|
2948
|
-
if (node.id.startsWith('evt:')) {
|
|
2949
|
-
pipelineEvents.add(node.id.replace('evt:', ''));
|
|
2950
|
-
}
|
|
2951
|
-
if (node.id.startsWith('settled:')) {
|
|
2952
|
-
const commandTypes = node.id.replace('settled:', '').split(',');
|
|
2953
|
-
for (const commandType of commandTypes) {
|
|
2954
|
-
const events = commandToEvents[commandType];
|
|
2955
|
-
if (events !== undefined) {
|
|
2956
|
-
for (const eventName of events) {
|
|
2957
|
-
pipelineEvents.add(eventName);
|
|
2958
|
-
}
|
|
2959
|
-
}
|
|
2960
|
-
}
|
|
2961
|
-
}
|
|
2962
|
-
}
|
|
2963
|
-
|
|
2964
|
-
return pipelineEvents;
|
|
2965
|
-
}
|
|
2966
|
-
|
|
2967
|
-
private addGraphNodesToMermaid(
|
|
2968
|
-
graph: GraphIR,
|
|
2969
|
-
lines: string[],
|
|
2970
|
-
eventNodes: Set<string>,
|
|
2971
|
-
commandNodes: Set<string>,
|
|
2972
|
-
settledNodes: Set<string>,
|
|
2973
|
-
): void {
|
|
2974
|
-
for (const node of graph.nodes) {
|
|
2975
|
-
if (node.id.startsWith('evt:')) {
|
|
2976
|
-
const eventName = node.id.replace('evt:', '');
|
|
2977
|
-
const safeId = `evt_${eventName}`;
|
|
2978
|
-
eventNodes.add(safeId);
|
|
2979
|
-
lines.push(` ${safeId}([${node.label}])`);
|
|
2980
|
-
} else if (node.id.startsWith('cmd:')) {
|
|
2981
|
-
const commandName = node.id.replace('cmd:', '');
|
|
2982
|
-
commandNodes.add(commandName);
|
|
2983
|
-
lines.push(` ${commandName}[${node.label}]`);
|
|
2984
|
-
} else if (node.id.startsWith('settled:')) {
|
|
2985
|
-
const commandTypes = node.id.replace('settled:', '').split(',');
|
|
2986
|
-
const safeId = `settled_${commandTypes.join('_')}`;
|
|
2987
|
-
settledNodes.add(safeId);
|
|
2988
|
-
lines.push(` ${safeId}{{${commandTypes.join(', ')}}}`);
|
|
2989
|
-
}
|
|
2990
|
-
}
|
|
2991
|
-
}
|
|
2992
|
-
|
|
2993
|
-
private addGraphEdgesToMermaid(
|
|
2994
|
-
graph: GraphIR,
|
|
2995
|
-
lines: string[],
|
|
2996
|
-
edgeContext: { index: number; backLinkIndices: number[] },
|
|
2997
|
-
): void {
|
|
2998
|
-
for (const edge of graph.edges) {
|
|
2999
|
-
const from = this.normalizeNodeId(edge.from);
|
|
3000
|
-
const to = this.normalizeNodeId(edge.to);
|
|
3001
|
-
if (edge.backLink === true) {
|
|
3002
|
-
lines.push(` ${from} -.->|retry| ${to}`);
|
|
3003
|
-
edgeContext.backLinkIndices.push(edgeContext.index);
|
|
3004
|
-
} else {
|
|
3005
|
-
lines.push(` ${from} --> ${to}`);
|
|
3006
|
-
}
|
|
3007
|
-
edgeContext.index++;
|
|
3008
|
-
}
|
|
3009
|
-
}
|
|
3010
|
-
|
|
3011
|
-
private normalizeNodeId(nodeId: string): string {
|
|
3012
|
-
if (nodeId.startsWith('evt:')) {
|
|
3013
|
-
return `evt_${nodeId.replace('evt:', '')}`;
|
|
3014
|
-
}
|
|
3015
|
-
if (nodeId.startsWith('cmd:')) {
|
|
3016
|
-
return nodeId.replace('cmd:', '');
|
|
3017
|
-
}
|
|
3018
|
-
const commandTypes = nodeId.replace('settled:', '').split(',');
|
|
3019
|
-
return `settled_${commandTypes.join('_')}`;
|
|
3020
|
-
}
|
|
3021
|
-
|
|
3022
|
-
private addMermaidStyles(
|
|
3023
|
-
lines: string[],
|
|
3024
|
-
eventNodes: Set<string>,
|
|
3025
|
-
commandNodes: Set<string>,
|
|
3026
|
-
settledNodes: Set<string>,
|
|
3027
|
-
backLinkIndices: number[],
|
|
3028
|
-
): void {
|
|
3029
|
-
const failedEvents = [...eventNodes].filter((id) => id.toLowerCase().includes('failed'));
|
|
3030
|
-
const normalEvents = [...eventNodes].filter((id) => !id.toLowerCase().includes('failed'));
|
|
3031
|
-
|
|
3032
|
-
lines.push('');
|
|
3033
|
-
lines.push(' classDef event fill:#fff3e0,stroke:#e65100');
|
|
3034
|
-
lines.push(' classDef eventFailed fill:#fff3e0,stroke:#e65100,color:#d32f2f');
|
|
3035
|
-
lines.push(' classDef command fill:#e3f2fd,stroke:#1565c0');
|
|
3036
|
-
lines.push(' classDef settled fill:#f3e5f5,stroke:#7b1fa2');
|
|
3037
|
-
|
|
3038
|
-
if (normalEvents.length > 0) {
|
|
3039
|
-
lines.push(` class ${normalEvents.join(',')} event`);
|
|
3040
|
-
}
|
|
3041
|
-
if (failedEvents.length > 0) {
|
|
3042
|
-
lines.push(` class ${failedEvents.join(',')} eventFailed`);
|
|
3043
|
-
}
|
|
3044
|
-
if (commandNodes.size > 0) {
|
|
3045
|
-
lines.push(` class ${[...commandNodes].join(',')} command`);
|
|
3046
|
-
}
|
|
3047
|
-
if (settledNodes.size > 0) {
|
|
3048
|
-
lines.push(` class ${[...settledNodes].join(',')} settled`);
|
|
3049
|
-
}
|
|
3050
|
-
if (backLinkIndices.length > 0) {
|
|
3051
|
-
lines.push(` linkStyle ${backLinkIndices.join(',')} stroke:#d32f2f,stroke-width:2px`);
|
|
3052
|
-
}
|
|
3053
|
-
}
|
|
3054
|
-
|
|
3055
|
-
private async processCommand(command: Command & { correlationId: string; requestId: string }): Promise<void> {
|
|
3056
|
-
const handler = this.commandHandlers.get(command.type);
|
|
3057
|
-
if (!handler) return;
|
|
3058
|
-
|
|
3059
|
-
const isNewCorrelationId = !(await this.eventStoreContext.readModel.hasCorrelation(command.correlationId));
|
|
3060
|
-
if (isNewCorrelationId) {
|
|
3061
|
-
await this.broadcastPipelineRunStarted(command.correlationId, command.type);
|
|
3062
|
-
}
|
|
3063
|
-
|
|
3064
|
-
const itemKey = this.extractItemKey(command.type, command.data, command.requestId);
|
|
3065
|
-
await this.getOrCreateItemStatus(command.correlationId, command.type, itemKey, command.requestId);
|
|
3066
|
-
|
|
3067
|
-
await this.updateNodeStatus(command.correlationId, command.type, 'running');
|
|
3068
|
-
await this.settledTracker.onCommandStarted(command);
|
|
3069
|
-
|
|
3070
|
-
const resultEvent = await handler.handle(command);
|
|
3071
|
-
const events = Array.isArray(resultEvent) ? resultEvent : [resultEvent];
|
|
3072
|
-
|
|
3073
|
-
const finalStatus = this.getStatusFromEvents(events);
|
|
3074
|
-
await this.updateItemStatus(command.correlationId, command.type, itemKey, finalStatus);
|
|
3075
|
-
await this.updateNodeStatus(command.correlationId, command.type, finalStatus);
|
|
3076
|
-
|
|
3077
|
-
const eventsWithIds: EventWithCorrelation[] = events.map((event) => ({
|
|
3078
|
-
...event,
|
|
3079
|
-
correlationId: command.correlationId,
|
|
3080
|
-
requestId: command.requestId,
|
|
3081
|
-
}));
|
|
3082
|
-
|
|
3083
|
-
await Promise.all(
|
|
3084
|
-
eventsWithIds.map((e) =>
|
|
3085
|
-
this.emitDomainEventEmitted(e.correlationId, command.requestId, e.type, e.data as Record<string, unknown>),
|
|
3086
|
-
),
|
|
3087
|
-
);
|
|
3088
|
-
|
|
3089
|
-
for (const eventWithIds of eventsWithIds) {
|
|
3090
|
-
this.sseManager.broadcast(eventWithIds);
|
|
3091
|
-
|
|
3092
|
-
const sourceCommand = this.eventCommandMapper.getSourceCommand(eventWithIds.type);
|
|
3093
|
-
if (sourceCommand !== undefined) {
|
|
3094
|
-
await this.settledTracker.onEventReceived(eventWithIds, sourceCommand);
|
|
3095
|
-
}
|
|
3096
|
-
|
|
3097
|
-
await this.routeEventToPhasedExecutor(eventWithIds);
|
|
3098
|
-
}
|
|
3099
|
-
|
|
3100
|
-
await Promise.all(eventsWithIds.map((e) => this.routeEventToPipelines(e)));
|
|
3101
|
-
}
|
|
3102
|
-
|
|
3103
|
-
private getStatusFromEvents(events: Event[]): 'success' | 'error' {
|
|
3104
|
-
for (const event of events) {
|
|
3105
|
-
if (event.type.includes('Failed')) {
|
|
3106
|
-
return 'error';
|
|
3107
|
-
}
|
|
3108
|
-
}
|
|
3109
|
-
return 'success';
|
|
3110
|
-
}
|
|
3111
|
-
|
|
3112
|
-
/* v8 ignore next 11 - integration path tested via settled-tracker.specs.ts */
|
|
3113
|
-
private async dispatchFromSettled(commandType: string, data: unknown, correlationId: string): Promise<void> {
|
|
3114
|
-
const requestId = `req-${nanoid()}`;
|
|
3115
|
-
const command: Command & { correlationId: string; requestId: string } = {
|
|
3116
|
-
type: commandType,
|
|
3117
|
-
data: data as Record<string, unknown>,
|
|
3118
|
-
correlationId,
|
|
3119
|
-
requestId,
|
|
3120
|
-
};
|
|
3121
|
-
await this.emitCommandDispatched(correlationId, requestId, commandType, data as Record<string, unknown>);
|
|
3122
|
-
await this.processCommand(command);
|
|
3123
|
-
}
|
|
3124
|
-
|
|
3125
|
-
/* v8 ignore next 10 - integration path tested via phased-executor.specs.ts */
|
|
3126
|
-
private async handlePhasedComplete(event: Event, correlationId: string): Promise<void> {
|
|
3127
|
-
const requestId = `req-${nanoid()}`;
|
|
3128
|
-
const eventWithIds: EventWithCorrelation = {
|
|
3129
|
-
...event,
|
|
3130
|
-
correlationId,
|
|
3131
|
-
};
|
|
3132
|
-
await this.emitDomainEventEmitted(correlationId, requestId, event.type, event.data as Record<string, unknown>);
|
|
3133
|
-
this.sseManager.broadcast(eventWithIds);
|
|
3134
|
-
await this.routeEventToPipelines(eventWithIds);
|
|
3135
|
-
}
|
|
3136
|
-
|
|
3137
|
-
private async routeEventToPipelines(event: EventWithCorrelation): Promise<void> {
|
|
3138
|
-
const ctx = this.createContext(event.correlationId);
|
|
3139
|
-
const runtimes = Array.from(this.runtimes.values());
|
|
3140
|
-
await Promise.all(runtimes.map((runtime) => runtime.handleEvent(event, ctx)));
|
|
3141
|
-
}
|
|
3142
|
-
|
|
3143
|
-
private createContext(correlationId: string): PipelineContext {
|
|
3144
|
-
return {
|
|
3145
|
-
correlationId,
|
|
3146
|
-
emit: async (type: string, data: unknown) => {
|
|
3147
|
-
const requestId = `req-${nanoid()}`;
|
|
3148
|
-
const event: EventWithCorrelation = {
|
|
3149
|
-
type,
|
|
3150
|
-
data: data as Record<string, unknown>,
|
|
3151
|
-
correlationId,
|
|
3152
|
-
};
|
|
3153
|
-
await this.emitDomainEventEmitted(correlationId, requestId, type, data as Record<string, unknown>);
|
|
3154
|
-
this.sseManager.broadcast(event);
|
|
3155
|
-
await this.routeEventToPipelines(event);
|
|
3156
|
-
},
|
|
3157
|
-
sendCommand: async (type: string, data: unknown) => {
|
|
3158
|
-
const requestId = `req-${nanoid()}`;
|
|
3159
|
-
const command: Command & { correlationId: string; requestId: string } = {
|
|
3160
|
-
type,
|
|
3161
|
-
data: data as Record<string, unknown>,
|
|
3162
|
-
correlationId,
|
|
3163
|
-
requestId,
|
|
3164
|
-
};
|
|
3165
|
-
await this.emitCommandDispatched(correlationId, requestId, type, data as Record<string, unknown>);
|
|
3166
|
-
await this.processCommand(command);
|
|
3167
|
-
},
|
|
3168
|
-
/* v8 ignore next 3 - integration path tested via pipeline-runtime.specs.ts */
|
|
3169
|
-
startPhased: async (handler, event) => {
|
|
3170
|
-
await this.phasedExecutor.startPhased(handler, event, correlationId);
|
|
3171
|
-
},
|
|
3172
|
-
};
|
|
3173
|
-
}
|
|
3174
|
-
|
|
3175
|
-
/* v8 ignore next 10 - integration path tested via phased-executor.specs.ts */
|
|
3176
|
-
private async routeEventToPhasedExecutor(event: EventWithCorrelation): Promise<void> {
|
|
3177
|
-
for (const pipeline of this.pipelines.values()) {
|
|
3178
|
-
for (const handler of pipeline.descriptor.handlers) {
|
|
3179
|
-
if (handler.type === 'foreach-phased') {
|
|
3180
|
-
const itemKey = handler.completion.itemKey(event);
|
|
3181
|
-
await this.phasedExecutor.onEventReceived(event, itemKey);
|
|
3182
|
-
}
|
|
3183
|
-
}
|
|
3184
|
-
}
|
|
3185
|
-
}
|
|
3186
|
-
|
|
3187
|
-
private buildDiagramHtml(mermaidDefinition: string): string {
|
|
3188
|
-
return `<!DOCTYPE html>
|
|
3189
|
-
<html lang="en">
|
|
3190
|
-
<head>
|
|
3191
|
-
<meta charset="UTF-8">
|
|
3192
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
3193
|
-
<title>Pipeline Diagram</title>
|
|
3194
|
-
<script type="module">
|
|
3195
|
-
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
|
|
3196
|
-
mermaid.initialize({ startOnLoad: true, theme: 'default' });
|
|
3197
|
-
</script>
|
|
3198
|
-
<style>
|
|
3199
|
-
body {
|
|
3200
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
3201
|
-
margin: 0;
|
|
3202
|
-
padding: 20px;
|
|
3203
|
-
background: #f5f5f5;
|
|
3204
|
-
}
|
|
3205
|
-
.container {
|
|
3206
|
-
max-width: 1200px;
|
|
3207
|
-
margin: 0 auto;
|
|
3208
|
-
background: white;
|
|
3209
|
-
padding: 20px;
|
|
3210
|
-
border-radius: 8px;
|
|
3211
|
-
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
|
3212
|
-
}
|
|
3213
|
-
h1 {
|
|
3214
|
-
margin-top: 0;
|
|
3215
|
-
color: #333;
|
|
3216
|
-
}
|
|
3217
|
-
.mermaid {
|
|
3218
|
-
display: flex;
|
|
3219
|
-
justify-content: center;
|
|
3220
|
-
}
|
|
3221
|
-
</style>
|
|
3222
|
-
</head>
|
|
3223
|
-
<body>
|
|
3224
|
-
<div class="container">
|
|
3225
|
-
<h1>Pipeline Diagram</h1>
|
|
3226
|
-
<div class="mermaid">
|
|
3227
|
-
${mermaidDefinition}
|
|
3228
|
-
</div>
|
|
3229
|
-
</div>
|
|
3230
|
-
</body>
|
|
3231
|
-
</html>`;
|
|
3232
|
-
}
|
|
3233
|
-
}
|
|
3234
|
-
</pre></td></tr></table></pre>
|
|
3235
|
-
|
|
3236
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
3237
|
-
</div><!-- /wrapper -->
|
|
3238
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
3239
|
-
Code coverage generated by
|
|
3240
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
3241
|
-
at 2026-01-06T00:27:41.742Z
|
|
3242
|
-
</div>
|
|
3243
|
-
<script src="../prettify.js"></script>
|
|
3244
|
-
<script>
|
|
3245
|
-
window.onload = function () {
|
|
3246
|
-
prettyPrint();
|
|
3247
|
-
};
|
|
3248
|
-
</script>
|
|
3249
|
-
<script src="../sorter.js"></script>
|
|
3250
|
-
<script src="../block-navigation.js"></script>
|
|
3251
|
-
</body>
|
|
3252
|
-
</html>
|
|
3253
|
-
|