@copilotkitnext/angular 0.0.31 → 0.0.32
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/package.json +5 -5
- package/coverage/clover.xml +0 -2008
- package/coverage/coverage-final.json +0 -44
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -251
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov-report/src/components/chat/copilot-chat-assistant-message-buttons.ts.html +0 -1039
- package/coverage/lcov-report/src/components/chat/copilot-chat-assistant-message-renderer.ts.html +0 -1411
- package/coverage/lcov-report/src/components/chat/copilot-chat-assistant-message-toolbar.ts.html +0 -145
- package/coverage/lcov-report/src/components/chat/copilot-chat-assistant-message.ts.html +0 -1486
- package/coverage/lcov-report/src/components/chat/copilot-chat-audio-recorder.ts.html +0 -811
- package/coverage/lcov-report/src/components/chat/copilot-chat-buttons.ts.html +0 -1009
- package/coverage/lcov-report/src/components/chat/copilot-chat-input.ts.html +0 -1519
- package/coverage/lcov-report/src/components/chat/copilot-chat-input.types.ts.html +0 -529
- package/coverage/lcov-report/src/components/chat/copilot-chat-message-view-cursor.ts.html +0 -196
- package/coverage/lcov-report/src/components/chat/copilot-chat-message-view.ts.html +0 -715
- package/coverage/lcov-report/src/components/chat/copilot-chat-textarea.ts.html +0 -634
- package/coverage/lcov-report/src/components/chat/copilot-chat-tool-calls-view.ts.html +0 -889
- package/coverage/lcov-report/src/components/chat/copilot-chat-toolbar.ts.html +0 -175
- package/coverage/lcov-report/src/components/chat/copilot-chat-tools-menu.ts.html +0 -625
- package/coverage/lcov-report/src/components/chat/copilot-chat-user-message-branch-navigation.ts.html +0 -403
- package/coverage/lcov-report/src/components/chat/copilot-chat-user-message-buttons.ts.html +0 -580
- package/coverage/lcov-report/src/components/chat/copilot-chat-user-message-renderer.ts.html +0 -181
- package/coverage/lcov-report/src/components/chat/copilot-chat-user-message-toolbar.ts.html +0 -184
- package/coverage/lcov-report/src/components/chat/copilot-chat-user-message.ts.html +0 -784
- package/coverage/lcov-report/src/components/chat/copilot-chat-view-handlers.ts.html +0 -127
- package/coverage/lcov-report/src/components/chat/index.html +0 -401
- package/coverage/lcov-report/src/core/chat-configuration/chat-configuration.providers.ts.html +0 -304
- package/coverage/lcov-report/src/core/chat-configuration/chat-configuration.ts.html +0 -580
- package/coverage/lcov-report/src/core/chat-configuration/chat-configuration.types.ts.html +0 -256
- package/coverage/lcov-report/src/core/chat-configuration/index.html +0 -146
- package/coverage/lcov-report/src/core/copilotkit.providers.ts.html +0 -262
- package/coverage/lcov-report/src/core/copilotkit.ts.html +0 -1612
- package/coverage/lcov-report/src/core/copilotkit.types.ts.html +0 -478
- package/coverage/lcov-report/src/core/index.html +0 -146
- package/coverage/lcov-report/src/directives/copilotkit-agent-context.ts.html +0 -499
- package/coverage/lcov-report/src/directives/copilotkit-agent.ts.html +0 -742
- package/coverage/lcov-report/src/directives/copilotkit-chat-config.ts.html +0 -781
- package/coverage/lcov-report/src/directives/copilotkit-config.ts.html +0 -328
- package/coverage/lcov-report/src/directives/copilotkit-frontend-tool.ts.html +0 -517
- package/coverage/lcov-report/src/directives/copilotkit-human-in-the-loop.ts.html +0 -925
- package/coverage/lcov-report/src/directives/index.html +0 -191
- package/coverage/lcov-report/src/lib/directives/index.html +0 -116
- package/coverage/lcov-report/src/lib/directives/tooltip.ts.html +0 -958
- package/coverage/lcov-report/src/lib/index.html +0 -116
- package/coverage/lcov-report/src/lib/slots/copilot-slot.ts.html +0 -526
- package/coverage/lcov-report/src/lib/slots/index.html +0 -146
- package/coverage/lcov-report/src/lib/slots/slot.types.ts.html +0 -274
- package/coverage/lcov-report/src/lib/slots/slot.utils.ts.html +0 -985
- package/coverage/lcov-report/src/lib/utils.ts.html +0 -112
- package/coverage/lcov-report/src/testing/index.html +0 -116
- package/coverage/lcov-report/src/testing/testing.utils.ts.html +0 -835
- package/coverage/lcov-report/src/utils/agent.utils.ts.html +0 -850
- package/coverage/lcov-report/src/utils/chat-config.utils.ts.html +0 -745
- package/coverage/lcov-report/src/utils/frontend-tool.utils.ts.html +0 -871
- package/coverage/lcov-report/src/utils/human-in-the-loop.utils.ts.html +0 -1150
- package/coverage/lcov-report/src/utils/index.html +0 -161
- package/coverage/lcov-report/test-mocks/index.html +0 -116
- package/coverage/lcov-report/test-mocks/marked.ts.html +0 -127
- package/coverage/lcov.info +0 -4216
package/coverage/lcov-report/src/components/chat/copilot-chat-assistant-message-renderer.ts.html
DELETED
|
@@ -1,1411 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/components/chat/copilot-chat-assistant-message-renderer.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">src/components/chat</a> copilot-chat-assistant-message-renderer.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">47.58% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>59/124</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">17.85% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>5/28</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">36% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>9/25</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">47.89% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>57/119</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 low'></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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
509
|
-
<span class="cline-any cline-neutral"> </span>
|
|
510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
511
|
-
<span class="cline-any cline-neutral"> </span>
|
|
512
|
-
<span class="cline-any cline-neutral"> </span>
|
|
513
|
-
<span class="cline-any cline-neutral"> </span>
|
|
514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
516
|
-
<span class="cline-any cline-neutral"> </span>
|
|
517
|
-
<span class="cline-any cline-neutral"> </span>
|
|
518
|
-
<span class="cline-any cline-neutral"> </span>
|
|
519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
521
|
-
<span class="cline-any cline-yes">2x</span>
|
|
522
|
-
<span class="cline-any cline-yes">2x</span>
|
|
523
|
-
<span class="cline-any cline-yes">2x</span>
|
|
524
|
-
<span class="cline-any cline-yes">2x</span>
|
|
525
|
-
<span class="cline-any cline-yes">2x</span>
|
|
526
|
-
<span class="cline-any cline-yes">2x</span>
|
|
527
|
-
<span class="cline-any cline-yes">2x</span>
|
|
528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
530
|
-
<span class="cline-any cline-neutral"> </span>
|
|
531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
533
|
-
<span class="cline-any cline-neutral"> </span>
|
|
534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
536
|
-
<span class="cline-any cline-neutral"> </span>
|
|
537
|
-
<span class="cline-any cline-neutral"> </span>
|
|
538
|
-
<span class="cline-any cline-neutral"> </span>
|
|
539
|
-
<span class="cline-any cline-neutral"> </span>
|
|
540
|
-
<span class="cline-any cline-neutral"> </span>
|
|
541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
543
|
-
<span class="cline-any cline-neutral"> </span>
|
|
544
|
-
<span class="cline-any cline-neutral"> </span>
|
|
545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-neutral"> </span>
|
|
547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
548
|
-
<span class="cline-any cline-neutral"> </span>
|
|
549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
552
|
-
<span class="cline-any cline-neutral"> </span>
|
|
553
|
-
<span class="cline-any cline-neutral"> </span>
|
|
554
|
-
<span class="cline-any cline-neutral"> </span>
|
|
555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
556
|
-
<span class="cline-any cline-neutral"> </span>
|
|
557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-neutral"> </span>
|
|
559
|
-
<span class="cline-any cline-neutral"> </span>
|
|
560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
563
|
-
<span class="cline-any cline-neutral"> </span>
|
|
564
|
-
<span class="cline-any cline-neutral"> </span>
|
|
565
|
-
<span class="cline-any cline-neutral"> </span>
|
|
566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-neutral"> </span>
|
|
568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
571
|
-
<span class="cline-any cline-neutral"> </span>
|
|
572
|
-
<span class="cline-any cline-neutral"> </span>
|
|
573
|
-
<span class="cline-any cline-neutral"> </span>
|
|
574
|
-
<span class="cline-any cline-neutral"> </span>
|
|
575
|
-
<span class="cline-any cline-neutral"> </span>
|
|
576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
581
|
-
<span class="cline-any cline-neutral"> </span>
|
|
582
|
-
<span class="cline-any cline-neutral"> </span>
|
|
583
|
-
<span class="cline-any cline-neutral"> </span>
|
|
584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
586
|
-
<span class="cline-any cline-neutral"> </span>
|
|
587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-neutral"> </span>
|
|
590
|
-
<span class="cline-any cline-neutral"> </span>
|
|
591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
601
|
-
<span class="cline-any cline-neutral"> </span>
|
|
602
|
-
<span class="cline-any cline-neutral"> </span>
|
|
603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
604
|
-
<span class="cline-any cline-neutral"> </span>
|
|
605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
607
|
-
<span class="cline-any cline-neutral"> </span>
|
|
608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
611
|
-
<span class="cline-any cline-neutral"> </span>
|
|
612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
618
|
-
<span class="cline-any cline-neutral"> </span>
|
|
619
|
-
<span class="cline-any cline-neutral"> </span>
|
|
620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
638
|
-
<span class="cline-any cline-neutral"> </span>
|
|
639
|
-
<span class="cline-any cline-neutral"> </span>
|
|
640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
641
|
-
<span class="cline-any cline-neutral"> </span>
|
|
642
|
-
<span class="cline-any cline-neutral"> </span>
|
|
643
|
-
<span class="cline-any cline-neutral"> </span>
|
|
644
|
-
<span class="cline-any cline-neutral"> </span>
|
|
645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
646
|
-
<span class="cline-any cline-neutral"> </span>
|
|
647
|
-
<span class="cline-any cline-neutral"> </span>
|
|
648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
649
|
-
<span class="cline-any cline-neutral"> </span>
|
|
650
|
-
<span class="cline-any cline-neutral"> </span>
|
|
651
|
-
<span class="cline-any cline-neutral"> </span>
|
|
652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
657
|
-
<span class="cline-any cline-neutral"> </span>
|
|
658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
659
|
-
<span class="cline-any cline-neutral"> </span>
|
|
660
|
-
<span class="cline-any cline-neutral"> </span>
|
|
661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
662
|
-
<span class="cline-any cline-neutral"> </span>
|
|
663
|
-
<span class="cline-any cline-neutral"> </span>
|
|
664
|
-
<span class="cline-any cline-neutral"> </span>
|
|
665
|
-
<span class="cline-any cline-neutral"> </span>
|
|
666
|
-
<span class="cline-any cline-neutral"> </span>
|
|
667
|
-
<span class="cline-any cline-neutral"> </span>
|
|
668
|
-
<span class="cline-any cline-yes">2x</span>
|
|
669
|
-
<span class="cline-any cline-yes">70x</span>
|
|
670
|
-
<span class="cline-any cline-yes">70x</span>
|
|
671
|
-
<span class="cline-any cline-neutral"> </span>
|
|
672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
673
|
-
<span class="cline-any cline-neutral"> </span>
|
|
674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
675
|
-
<span class="cline-any cline-yes">70x</span>
|
|
676
|
-
<span class="cline-any cline-yes">70x</span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-yes">70x</span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-yes">70x</span>
|
|
682
|
-
<span class="cline-any cline-yes">71x</span>
|
|
683
|
-
<span class="cline-any cline-yes">71x</span>
|
|
684
|
-
<span class="cline-any cline-yes">71x</span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-neutral"> </span>
|
|
687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
688
|
-
<span class="cline-any cline-no"> </span>
|
|
689
|
-
<span class="cline-any cline-neutral"> </span>
|
|
690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
691
|
-
<span class="cline-any cline-neutral"> </span>
|
|
692
|
-
<span class="cline-any cline-yes">70x</span>
|
|
693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-yes">71x</span>
|
|
695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-yes">71x</span>
|
|
697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-yes">71x</span>
|
|
699
|
-
<span class="cline-any cline-yes">71x</span>
|
|
700
|
-
<span class="cline-any cline-yes">71x</span>
|
|
701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-yes">70x</span>
|
|
706
|
-
<span class="cline-any cline-yes">70x</span>
|
|
707
|
-
<span class="cline-any cline-neutral"> </span>
|
|
708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-yes">141x</span>
|
|
711
|
-
<span class="cline-any cline-yes">141x</span>
|
|
712
|
-
<span class="cline-any cline-yes">141x</span>
|
|
713
|
-
<span class="cline-any cline-yes">141x</span>
|
|
714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-yes">70x</span>
|
|
717
|
-
<span class="cline-any cline-yes">70x</span>
|
|
718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-yes">71x</span>
|
|
721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-yes">70x</span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-yes">70x</span>
|
|
727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-neutral"> </span>
|
|
729
|
-
<span class="cline-any cline-yes">70x</span>
|
|
730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
732
|
-
<span class="cline-any cline-neutral"> </span>
|
|
733
|
-
<span class="cline-any cline-neutral"> </span>
|
|
734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
735
|
-
<span class="cline-any cline-yes">70x</span>
|
|
736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-no"> </span>
|
|
738
|
-
<span class="cline-any cline-no"> </span>
|
|
739
|
-
<span class="cline-any cline-no"> </span>
|
|
740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
741
|
-
<span class="cline-any cline-no"> </span>
|
|
742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
743
|
-
<span class="cline-any cline-no"> </span>
|
|
744
|
-
<span class="cline-any cline-neutral"> </span>
|
|
745
|
-
<span class="cline-any cline-no"> </span>
|
|
746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-no"> </span>
|
|
749
|
-
<span class="cline-any cline-no"> </span>
|
|
750
|
-
<span class="cline-any cline-no"> </span>
|
|
751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
753
|
-
<span class="cline-any cline-no"> </span>
|
|
754
|
-
<span class="cline-any cline-neutral"> </span>
|
|
755
|
-
<span class="cline-any cline-neutral"> </span>
|
|
756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-neutral"> </span>
|
|
760
|
-
<span class="cline-any cline-neutral"> </span>
|
|
761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
762
|
-
<span class="cline-any cline-neutral"> </span>
|
|
763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-neutral"> </span>
|
|
766
|
-
<span class="cline-any cline-neutral"> </span>
|
|
767
|
-
<span class="cline-any cline-neutral"> </span>
|
|
768
|
-
<span class="cline-any cline-neutral"> </span>
|
|
769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
770
|
-
<span class="cline-any cline-no"> </span>
|
|
771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-neutral"> </span>
|
|
773
|
-
<span class="cline-any cline-no"> </span>
|
|
774
|
-
<span class="cline-any cline-no"> </span>
|
|
775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
776
|
-
<span class="cline-any cline-neutral"> </span>
|
|
777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
779
|
-
<span class="cline-any cline-neutral"> </span>
|
|
780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
781
|
-
<span class="cline-any cline-neutral"> </span>
|
|
782
|
-
<span class="cline-any cline-yes">71x</span>
|
|
783
|
-
<span class="cline-any cline-neutral"> </span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-yes">71x</span>
|
|
786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-yes">71x</span>
|
|
789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
791
|
-
<span class="cline-any cline-yes">71x</span>
|
|
792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
793
|
-
<span class="cline-any cline-yes">71x</span>
|
|
794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
796
|
-
<span class="cline-any cline-neutral"> </span>
|
|
797
|
-
<span class="cline-any cline-neutral"> </span>
|
|
798
|
-
<span class="cline-any cline-yes">71x</span>
|
|
799
|
-
<span class="cline-any cline-yes">71x</span>
|
|
800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
802
|
-
<span class="cline-any cline-yes">71x</span>
|
|
803
|
-
<span class="cline-any cline-no"> </span>
|
|
804
|
-
<span class="cline-any cline-no"> </span>
|
|
805
|
-
<span class="cline-any cline-no"> </span>
|
|
806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
809
|
-
<span class="cline-any cline-yes">71x</span>
|
|
810
|
-
<span class="cline-any cline-yes">71x</span>
|
|
811
|
-
<span class="cline-any cline-yes">71x</span>
|
|
812
|
-
<span class="cline-any cline-no"> </span>
|
|
813
|
-
<span class="cline-any cline-no"> </span>
|
|
814
|
-
<span class="cline-any cline-no"> </span>
|
|
815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
817
|
-
<span class="cline-any cline-neutral"> </span>
|
|
818
|
-
<span class="cline-any cline-yes">71x</span>
|
|
819
|
-
<span class="cline-any cline-no"> </span>
|
|
820
|
-
<span class="cline-any cline-no"> </span>
|
|
821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
822
|
-
<span class="cline-any cline-neutral"> </span>
|
|
823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
825
|
-
<span class="cline-any cline-no"> </span>
|
|
826
|
-
<span class="cline-any cline-neutral"> </span>
|
|
827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-neutral"> </span>
|
|
830
|
-
<span class="cline-any cline-yes">71x</span>
|
|
831
|
-
<span class="cline-any cline-no"> </span>
|
|
832
|
-
<span class="cline-any cline-no"> </span>
|
|
833
|
-
<span class="cline-any cline-neutral"> </span>
|
|
834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
837
|
-
<span class="cline-any cline-no"> </span>
|
|
838
|
-
<span class="cline-any cline-neutral"> </span>
|
|
839
|
-
<span class="cline-any cline-neutral"> </span>
|
|
840
|
-
<span class="cline-any cline-neutral"> </span>
|
|
841
|
-
<span class="cline-any cline-neutral"> </span>
|
|
842
|
-
<span class="cline-any cline-yes">71x</span>
|
|
843
|
-
<span class="cline-any cline-no"> </span>
|
|
844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-yes">71x</span>
|
|
848
|
-
<span class="cline-any cline-no"> </span>
|
|
849
|
-
<span class="cline-any cline-neutral"> </span>
|
|
850
|
-
<span class="cline-any cline-neutral"> </span>
|
|
851
|
-
<span class="cline-any cline-yes">71x</span>
|
|
852
|
-
<span class="cline-any cline-neutral"> </span>
|
|
853
|
-
<span class="cline-any cline-neutral"> </span>
|
|
854
|
-
<span class="cline-any cline-neutral"> </span>
|
|
855
|
-
<span class="cline-any cline-yes">141x</span>
|
|
856
|
-
<span class="cline-any cline-neutral"> </span>
|
|
857
|
-
<span class="cline-any cline-yes">141x</span>
|
|
858
|
-
<span class="cline-any cline-neutral"> </span>
|
|
859
|
-
<span class="cline-any cline-neutral"> </span>
|
|
860
|
-
<span class="cline-any cline-yes">141x</span>
|
|
861
|
-
<span class="cline-any cline-yes">141x</span>
|
|
862
|
-
<span class="cline-any cline-no"> </span>
|
|
863
|
-
<span class="cline-any cline-no"> </span>
|
|
864
|
-
<span class="cline-any cline-neutral"> </span>
|
|
865
|
-
<span class="cline-any cline-no"> </span>
|
|
866
|
-
<span class="cline-any cline-no"> </span>
|
|
867
|
-
<span class="cline-any cline-no"> </span>
|
|
868
|
-
<span class="cline-any cline-neutral"> </span>
|
|
869
|
-
<span class="cline-any cline-neutral"> </span>
|
|
870
|
-
<span class="cline-any cline-neutral"> </span>
|
|
871
|
-
<span class="cline-any cline-neutral"> </span>
|
|
872
|
-
<span class="cline-any cline-no"> </span>
|
|
873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
874
|
-
<span class="cline-any cline-neutral"> </span>
|
|
875
|
-
<span class="cline-any cline-neutral"> </span>
|
|
876
|
-
<span class="cline-any cline-neutral"> </span>
|
|
877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
878
|
-
<span class="cline-any cline-neutral"> </span>
|
|
879
|
-
<span class="cline-any cline-no"> </span>
|
|
880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
882
|
-
<span class="cline-any cline-no"> </span>
|
|
883
|
-
<span class="cline-any cline-neutral"> </span>
|
|
884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
885
|
-
<span class="cline-any cline-no"> </span>
|
|
886
|
-
<span class="cline-any cline-no"> </span>
|
|
887
|
-
<span class="cline-any cline-no"> </span>
|
|
888
|
-
<span class="cline-any cline-neutral"> </span>
|
|
889
|
-
<span class="cline-any cline-no"> </span>
|
|
890
|
-
<span class="cline-any cline-neutral"> </span>
|
|
891
|
-
<span class="cline-any cline-no"> </span>
|
|
892
|
-
<span class="cline-any cline-no"> </span>
|
|
893
|
-
<span class="cline-any cline-no"> </span>
|
|
894
|
-
<span class="cline-any cline-neutral"> </span>
|
|
895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
897
|
-
<span class="cline-any cline-neutral"> </span>
|
|
898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
900
|
-
<span class="cline-any cline-no"> </span>
|
|
901
|
-
<span class="cline-any cline-neutral"> </span>
|
|
902
|
-
<span class="cline-any cline-neutral"> </span>
|
|
903
|
-
<span class="cline-any cline-no"> </span>
|
|
904
|
-
<span class="cline-any cline-neutral"> </span>
|
|
905
|
-
<span class="cline-any cline-neutral"> </span>
|
|
906
|
-
<span class="cline-any cline-no"> </span>
|
|
907
|
-
<span class="cline-any cline-no"> </span>
|
|
908
|
-
<span class="cline-any cline-no"> </span>
|
|
909
|
-
<span class="cline-any cline-neutral"> </span>
|
|
910
|
-
<span class="cline-any cline-neutral"> </span>
|
|
911
|
-
<span class="cline-any cline-neutral"> </span>
|
|
912
|
-
<span class="cline-any cline-no"> </span>
|
|
913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
914
|
-
<span class="cline-any cline-neutral"> </span>
|
|
915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
916
|
-
<span class="cline-any cline-neutral"> </span>
|
|
917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
918
|
-
<span class="cline-any cline-no"> </span>
|
|
919
|
-
<span class="cline-any cline-no"> </span>
|
|
920
|
-
<span class="cline-any cline-no"> </span>
|
|
921
|
-
<span class="cline-any cline-neutral"> </span>
|
|
922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
923
|
-
<span class="cline-any cline-neutral"> </span>
|
|
924
|
-
<span class="cline-any cline-neutral"> </span>
|
|
925
|
-
<span class="cline-any cline-neutral"> </span>
|
|
926
|
-
<span class="cline-any cline-neutral"> </span>
|
|
927
|
-
<span class="cline-any cline-neutral"> </span>
|
|
928
|
-
<span class="cline-any cline-no"> </span>
|
|
929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
930
|
-
<span class="cline-any cline-neutral"> </span>
|
|
931
|
-
<span class="cline-any cline-neutral"> </span>
|
|
932
|
-
<span class="cline-any cline-neutral"> </span>
|
|
933
|
-
<span class="cline-any cline-neutral"> </span>
|
|
934
|
-
<span class="cline-any cline-neutral"> </span>
|
|
935
|
-
<span class="cline-any cline-no"> </span>
|
|
936
|
-
<span class="cline-any cline-no"> </span>
|
|
937
|
-
<span class="cline-any cline-no"> </span>
|
|
938
|
-
<span class="cline-any cline-no"> </span>
|
|
939
|
-
<span class="cline-any cline-no"> </span>
|
|
940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
941
|
-
<span class="cline-any cline-no"> </span>
|
|
942
|
-
<span class="cline-any cline-neutral"> </span>
|
|
943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
945
|
-
<span class="cline-any cline-no"> </span>
|
|
946
|
-
<span class="cline-any cline-no"> </span>
|
|
947
|
-
<span class="cline-any cline-no"> </span>
|
|
948
|
-
<span class="cline-any cline-neutral"> </span>
|
|
949
|
-
<span class="cline-any cline-neutral"> </span>
|
|
950
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
951
|
-
Component,
|
|
952
|
-
input,
|
|
953
|
-
ChangeDetectionStrategy,
|
|
954
|
-
ViewEncapsulation,
|
|
955
|
-
signal,
|
|
956
|
-
computed,
|
|
957
|
-
effect,
|
|
958
|
-
inject,
|
|
959
|
-
ElementRef,
|
|
960
|
-
AfterViewInit,
|
|
961
|
-
ViewChild,
|
|
962
|
-
} from "@angular/core";
|
|
963
|
-
import { CommonModule } from "@angular/common";
|
|
964
|
-
import { Marked } from "marked";
|
|
965
|
-
import hljs from "highlight.js";
|
|
966
|
-
import * as katex from "katex";
|
|
967
|
-
import { completePartialMarkdown } from "@copilotkitnext/core";
|
|
968
|
-
import { LucideAngularModule, Copy, Check } from "lucide-angular";
|
|
969
|
-
import { CopilotChatConfigurationService } from "../../core/chat-configuration/chat-configuration";
|
|
970
|
-
|
|
971
|
-
@Component({
|
|
972
|
-
standalone: true,
|
|
973
|
-
selector: "copilot-chat-assistant-message-renderer",
|
|
974
|
-
imports: [CommonModule, LucideAngularModule],
|
|
975
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
976
|
-
encapsulation: ViewEncapsulation.None,
|
|
977
|
-
template: `
|
|
978
|
-
<div
|
|
979
|
-
#markdownContainer
|
|
980
|
-
[class]="inputClass()"
|
|
981
|
-
(click)="handleClick($event)"
|
|
982
|
-
></div>
|
|
983
|
-
`,
|
|
984
|
-
styles: [
|
|
985
|
-
`
|
|
986
|
-
copilot-chat-assistant-message-renderer {
|
|
987
|
-
display: block;
|
|
988
|
-
width: 100%;
|
|
989
|
-
}
|
|
990
|
-
|
|
991
|
-
/* Inline code styling */
|
|
992
|
-
copilot-chat-assistant-message-renderer code:not(pre code) {
|
|
993
|
-
padding: 2.5px 4.8px;
|
|
994
|
-
background-color: rgb(236, 236, 236);
|
|
995
|
-
border-radius: 0.25rem;
|
|
996
|
-
font-size: 0.875rem;
|
|
997
|
-
font-family:
|
|
998
|
-
ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono",
|
|
999
|
-
Menlo, monospace;
|
|
1000
|
-
font-weight: 500;
|
|
1001
|
-
color: #000000;
|
|
1002
|
-
}
|
|
1003
|
-
|
|
1004
|
-
.dark copilot-chat-assistant-message-renderer code:not(pre code) {
|
|
1005
|
-
background-color: #171717; /* same as code blocks */
|
|
1006
|
-
color: rgb(248, 250, 252); /* text-foreground in dark mode */
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
/* Code block container */
|
|
1010
|
-
copilot-chat-assistant-message-renderer .code-block-container {
|
|
1011
|
-
position: relative;
|
|
1012
|
-
margin: 0.25rem 0;
|
|
1013
|
-
background-color: rgb(249, 249, 249);
|
|
1014
|
-
border-radius: 1rem;
|
|
1015
|
-
}
|
|
1016
|
-
|
|
1017
|
-
.dark copilot-chat-assistant-message-renderer .code-block-container {
|
|
1018
|
-
background-color: #171717;
|
|
1019
|
-
}
|
|
1020
|
-
|
|
1021
|
-
copilot-chat-assistant-message-renderer .code-block-header {
|
|
1022
|
-
display: flex;
|
|
1023
|
-
align-items: center;
|
|
1024
|
-
justify-content: space-between;
|
|
1025
|
-
padding: 0.75rem 1rem 0.75rem 1rem;
|
|
1026
|
-
font-size: 0.75rem;
|
|
1027
|
-
background-color: transparent;
|
|
1028
|
-
}
|
|
1029
|
-
|
|
1030
|
-
copilot-chat-assistant-message-renderer .code-block-language {
|
|
1031
|
-
font-weight: 400;
|
|
1032
|
-
color: rgba(115, 115, 115, 1);
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
|
-
.dark copilot-chat-assistant-message-renderer .code-block-language {
|
|
1036
|
-
color: white;
|
|
1037
|
-
}
|
|
1038
|
-
|
|
1039
|
-
copilot-chat-assistant-message-renderer .code-block-copy-button {
|
|
1040
|
-
display: flex;
|
|
1041
|
-
align-items: center;
|
|
1042
|
-
gap: 0.125rem;
|
|
1043
|
-
padding: 0 0.5rem;
|
|
1044
|
-
font-size: 0.75rem;
|
|
1045
|
-
color: rgba(115, 115, 115, 1);
|
|
1046
|
-
cursor: pointer;
|
|
1047
|
-
background: none;
|
|
1048
|
-
border: none;
|
|
1049
|
-
transition: opacity 0.2s;
|
|
1050
|
-
}
|
|
1051
|
-
|
|
1052
|
-
.dark copilot-chat-assistant-message-renderer .code-block-copy-button {
|
|
1053
|
-
color: white;
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1056
|
-
copilot-chat-assistant-message-renderer .code-block-copy-button:hover {
|
|
1057
|
-
opacity: 0.8;
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
copilot-chat-assistant-message-renderer .code-block-copy-button svg {
|
|
1061
|
-
width: 10px;
|
|
1062
|
-
height: 10px;
|
|
1063
|
-
}
|
|
1064
|
-
|
|
1065
|
-
copilot-chat-assistant-message-renderer .code-block-copy-button span {
|
|
1066
|
-
font-size: 11px;
|
|
1067
|
-
}
|
|
1068
|
-
|
|
1069
|
-
copilot-chat-assistant-message-renderer pre {
|
|
1070
|
-
margin: 0;
|
|
1071
|
-
padding: 0 1rem 1rem 1rem;
|
|
1072
|
-
overflow-x: auto;
|
|
1073
|
-
background-color: transparent;
|
|
1074
|
-
border-radius: 1rem;
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
|
-
.dark copilot-chat-assistant-message-renderer pre {
|
|
1078
|
-
background-color: transparent;
|
|
1079
|
-
}
|
|
1080
|
-
|
|
1081
|
-
copilot-chat-assistant-message-renderer pre code {
|
|
1082
|
-
background-color: transparent;
|
|
1083
|
-
padding: 0;
|
|
1084
|
-
font-size: 0.875rem;
|
|
1085
|
-
font-family:
|
|
1086
|
-
ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono",
|
|
1087
|
-
Menlo, monospace;
|
|
1088
|
-
}
|
|
1089
|
-
|
|
1090
|
-
/* Highlight.js theme adjustments */
|
|
1091
|
-
copilot-chat-assistant-message-renderer .hljs {
|
|
1092
|
-
background: transparent;
|
|
1093
|
-
color: rgb(56, 58, 66);
|
|
1094
|
-
}
|
|
1095
|
-
|
|
1096
|
-
.dark copilot-chat-assistant-message-renderer .hljs {
|
|
1097
|
-
background: transparent;
|
|
1098
|
-
color: #abb2bf;
|
|
1099
|
-
}
|
|
1100
|
-
|
|
1101
|
-
/* Math equations */
|
|
1102
|
-
copilot-chat-assistant-message-renderer .katex-display {
|
|
1103
|
-
overflow-x: auto;
|
|
1104
|
-
overflow-y: hidden;
|
|
1105
|
-
padding: 1rem 0;
|
|
1106
|
-
}
|
|
1107
|
-
`,
|
|
1108
|
-
],
|
|
1109
|
-
})
|
|
1110
|
-
export class CopilotChatAssistantMessageRenderer implements AfterViewInit {
|
|
1111
|
-
content = input<string>("");
|
|
1112
|
-
inputClass = input<string | undefined>();
|
|
1113
|
-
|
|
1114
|
-
@ViewChild("markdownContainer", { static: false })
|
|
1115
|
-
markdownContainer?: ElementRef<HTMLDivElement>;
|
|
1116
|
-
|
|
1117
|
-
private chatConfig = inject(CopilotChatConfigurationService);
|
|
1118
|
-
private elementRef = inject(ElementRef);
|
|
1119
|
-
|
|
1120
|
-
// Track copy states for code blocks (DOM-updated; no signal needed)
|
|
1121
|
-
private copyStates = new Map<string, boolean>();
|
|
1122
|
-
|
|
1123
|
-
renderedHtml = computed(() => {
|
|
1124
|
-
const currentContent = this.content();
|
|
1125
|
-
const completedMarkdown = completePartialMarkdown(currentContent);
|
|
1126
|
-
return this.renderMarkdown(completedMarkdown);
|
|
1127
|
-
});
|
|
1128
|
-
|
|
1129
|
-
<span class="fstat-no" title="function not covered" > get l</span>abels() {
|
|
1130
|
-
<span class="cstat-no" title="statement not covered" > return this.chatConfig.labels();</span>
|
|
1131
|
-
}
|
|
1132
|
-
|
|
1133
|
-
// React to content changes using signals
|
|
1134
|
-
private contentEffect = effect(() => {
|
|
1135
|
-
// Read content to establish dependency
|
|
1136
|
-
this.content();
|
|
1137
|
-
// Reset copy states when content changes
|
|
1138
|
-
this.copyStates.clear();
|
|
1139
|
-
// If view is ready, update DOM
|
|
1140
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (this.markdownContainer) {
|
|
1141
|
-
this.updateContent();
|
|
1142
|
-
this.renderMathEquations();
|
|
1143
|
-
}
|
|
1144
|
-
});
|
|
1145
|
-
|
|
1146
|
-
ngAfterViewInit(): void {
|
|
1147
|
-
this.updateContent();
|
|
1148
|
-
this.renderMathEquations();
|
|
1149
|
-
}
|
|
1150
|
-
|
|
1151
|
-
private updateContent(): void {
|
|
1152
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.markdownContainer) <span class="cstat-no" title="statement not covered" >return;</span>
|
|
1153
|
-
const container = this.markdownContainer.nativeElement;
|
|
1154
|
-
const html = this.renderedHtml();
|
|
1155
|
-
container.innerHTML = html;
|
|
1156
|
-
}
|
|
1157
|
-
|
|
1158
|
-
private codeBlocksMap = new Map<string, string>();
|
|
1159
|
-
private markedInstance: Marked | null = null;
|
|
1160
|
-
|
|
1161
|
-
private initializeMarked(): void {
|
|
1162
|
-
if (this.markedInstance) return;
|
|
1163
|
-
|
|
1164
|
-
// Store highlighted code blocks temporarily
|
|
1165
|
-
const highlightedBlocks = new Map<string, string>();
|
|
1166
|
-
|
|
1167
|
-
// Create a new Marked instance
|
|
1168
|
-
this.markedInstance = new Marked();
|
|
1169
|
-
|
|
1170
|
-
// Configure marked options
|
|
1171
|
-
this.markedInstance.setOptions({
|
|
1172
|
-
gfm: true,
|
|
1173
|
-
breaks: true,
|
|
1174
|
-
});
|
|
1175
|
-
|
|
1176
|
-
// Add a walkTokens function to process code tokens before rendering
|
|
1177
|
-
this.markedInstance.use({
|
|
1178
|
-
walkTokens: <span class="fstat-no" title="function not covered" >(t</span>oken: any) => {
|
|
1179
|
-
<span class="cstat-no" title="statement not covered" > if (token.type === "code") {</span>
|
|
1180
|
-
const rawCode = <span class="cstat-no" title="statement not covered" >token.text;</span>
|
|
1181
|
-
const lang = <span class="cstat-no" title="statement not covered" >token.lang || "";</span>
|
|
1182
|
-
|
|
1183
|
-
const blockId = <span class="cstat-no" title="statement not covered" >this.generateBlockId(rawCode);</span>
|
|
1184
|
-
// Store the raw code in our map for copying
|
|
1185
|
-
<span class="cstat-no" title="statement not covered" > this.codeBlocksMap.set(blockId, rawCode);</span>
|
|
1186
|
-
|
|
1187
|
-
const copyLabel = <span class="cstat-no" title="statement not covered" >this.labels.assistantMessageToolbarCopyCodeLabel;</span>
|
|
1188
|
-
|
|
1189
|
-
// Manually highlight the code
|
|
1190
|
-
const language = <span class="cstat-no" title="statement not covered" >hljs.getLanguage(lang) ? lang : "plaintext";</span>
|
|
1191
|
-
const highlighted = <span class="cstat-no" title="statement not covered" >hljs.highlight(rawCode, { language }).value;</span>
|
|
1192
|
-
const codeClass = <span class="cstat-no" title="statement not covered" >lang ? `hljs language-${lang}` : "hljs";</span>
|
|
1193
|
-
|
|
1194
|
-
// Create the full HTML with header and highlighted code
|
|
1195
|
-
const fullHtml = <span class="cstat-no" title="statement not covered" >`</span>
|
|
1196
|
-
<div class="code-block-container">
|
|
1197
|
-
<div class="code-block-header">
|
|
1198
|
-
${lang ? `<span class="code-block-language">${lang}</span>` : "<span></span>"}
|
|
1199
|
-
<button
|
|
1200
|
-
class="code-block-copy-button"
|
|
1201
|
-
data-code-block-id="${blockId}"
|
|
1202
|
-
aria-label="${copyLabel} code">
|
|
1203
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.11 0-2-.9-2-2V4c0-1.11.89-2 2-2h10c1.11 0 2 .89 2 2"/></svg>
|
|
1204
|
-
<span>${copyLabel}</span>
|
|
1205
|
-
</button>
|
|
1206
|
-
</div>
|
|
1207
|
-
<pre><code class="${codeClass}">${highlighted}</code></pre>
|
|
1208
|
-
</div>
|
|
1209
|
-
`;
|
|
1210
|
-
|
|
1211
|
-
// Store the highlighted HTML
|
|
1212
|
-
<span class="cstat-no" title="statement not covered" > highlightedBlocks.set(blockId, fullHtml);</span>
|
|
1213
|
-
|
|
1214
|
-
// Change the token to an html token to bypass marked's escaping
|
|
1215
|
-
<span class="cstat-no" title="statement not covered" > token.type = "html";</span>
|
|
1216
|
-
<span class="cstat-no" title="statement not covered" > token.text = fullHtml;</span>
|
|
1217
|
-
}
|
|
1218
|
-
},
|
|
1219
|
-
});
|
|
1220
|
-
}
|
|
1221
|
-
|
|
1222
|
-
private renderMarkdown(content: string): string {
|
|
1223
|
-
// Initialize marked if not already done
|
|
1224
|
-
this.initializeMarked();
|
|
1225
|
-
|
|
1226
|
-
// Clear the code blocks map for new render
|
|
1227
|
-
this.codeBlocksMap.clear();
|
|
1228
|
-
|
|
1229
|
-
// Parse markdown
|
|
1230
|
-
let html = this.markedInstance!.parse(content) as string;
|
|
1231
|
-
|
|
1232
|
-
// Process math equations
|
|
1233
|
-
html = this.processMathEquations(html);
|
|
1234
|
-
|
|
1235
|
-
return html;
|
|
1236
|
-
}
|
|
1237
|
-
|
|
1238
|
-
private processMathEquations(html: string): string {
|
|
1239
|
-
// First, temporarily replace code blocks with placeholders to protect them from math processing
|
|
1240
|
-
const codeBlocks: string[] = [];
|
|
1241
|
-
const placeholder = "___CODE_BLOCK_PLACEHOLDER_";
|
|
1242
|
-
|
|
1243
|
-
// Store code blocks and replace with placeholders
|
|
1244
|
-
html = html.replace(/<pre><code[\s\S]*?<\/code><\/pre>/g, <span class="fstat-no" title="function not covered" >(m</span>atch) => {
|
|
1245
|
-
const index = <span class="cstat-no" title="statement not covered" >codeBlocks.length;</span>
|
|
1246
|
-
<span class="cstat-no" title="statement not covered" > codeBlocks.push(match);</span>
|
|
1247
|
-
<span class="cstat-no" title="statement not covered" > return `${placeholder}${index}___`;</span>
|
|
1248
|
-
});
|
|
1249
|
-
|
|
1250
|
-
// Also protect inline code
|
|
1251
|
-
const inlineCode: string[] = [];
|
|
1252
|
-
const inlinePlaceholder = "___INLINE_CODE_PLACEHOLDER_";
|
|
1253
|
-
html = html.replace(/<code>[\s\S]*?<\/code>/g, <span class="fstat-no" title="function not covered" >(m</span>atch) => {
|
|
1254
|
-
const index = <span class="cstat-no" title="statement not covered" >inlineCode.length;</span>
|
|
1255
|
-
<span class="cstat-no" title="statement not covered" > inlineCode.push(match);</span>
|
|
1256
|
-
<span class="cstat-no" title="statement not covered" > return `${inlinePlaceholder}${index}___`;</span>
|
|
1257
|
-
});
|
|
1258
|
-
|
|
1259
|
-
// Process display math $$ ... $$
|
|
1260
|
-
html = html.replace(/\$\$([\s\S]*?)\$\$/g, <span class="fstat-no" title="function not covered" >(m</span>atch, equation) => {
|
|
1261
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1262
|
-
<span class="cstat-no" title="statement not covered" > return katex.renderToString(equation, {</span>
|
|
1263
|
-
displayMode: true,
|
|
1264
|
-
throwOnError: false,
|
|
1265
|
-
});
|
|
1266
|
-
} catch {
|
|
1267
|
-
<span class="cstat-no" title="statement not covered" > return match;</span>
|
|
1268
|
-
}
|
|
1269
|
-
});
|
|
1270
|
-
|
|
1271
|
-
// Process inline math $ ... $
|
|
1272
|
-
html = html.replace(/\$([^\$]+)\$/g, <span class="fstat-no" title="function not covered" >(m</span>atch, equation) => {
|
|
1273
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1274
|
-
<span class="cstat-no" title="statement not covered" > return katex.renderToString(equation, {</span>
|
|
1275
|
-
displayMode: false,
|
|
1276
|
-
throwOnError: false,
|
|
1277
|
-
});
|
|
1278
|
-
} catch {
|
|
1279
|
-
<span class="cstat-no" title="statement not covered" > return match;</span>
|
|
1280
|
-
}
|
|
1281
|
-
});
|
|
1282
|
-
|
|
1283
|
-
// Restore code blocks
|
|
1284
|
-
codeBlocks.forEach(<span class="fstat-no" title="function not covered" >(b</span>lock, index) => {
|
|
1285
|
-
<span class="cstat-no" title="statement not covered" > html = html.replace(`${placeholder}${index}___`, block);</span>
|
|
1286
|
-
});
|
|
1287
|
-
|
|
1288
|
-
// Restore inline code
|
|
1289
|
-
inlineCode.forEach(<span class="fstat-no" title="function not covered" >(c</span>ode, index) => {
|
|
1290
|
-
<span class="cstat-no" title="statement not covered" > html = html.replace(`${inlinePlaceholder}${index}___`, code);</span>
|
|
1291
|
-
});
|
|
1292
|
-
|
|
1293
|
-
return html;
|
|
1294
|
-
}
|
|
1295
|
-
|
|
1296
|
-
private renderMathEquations(): void {
|
|
1297
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.markdownContainer) <span class="cstat-no" title="statement not covered" >return;</span>
|
|
1298
|
-
|
|
1299
|
-
const container = this.markdownContainer.nativeElement;
|
|
1300
|
-
|
|
1301
|
-
// Find all math placeholders and render them
|
|
1302
|
-
const mathElements = container.querySelectorAll(".math-placeholder");
|
|
1303
|
-
mathElements.forEach(<span class="fstat-no" title="function not covered" >(e</span>lement) => {
|
|
1304
|
-
const equation = <span class="cstat-no" title="statement not covered" >element.getAttribute("data-equation");</span>
|
|
1305
|
-
const displayMode = <span class="cstat-no" title="statement not covered" >element.getAttribute("data-display") === "true";</span>
|
|
1306
|
-
|
|
1307
|
-
<span class="cstat-no" title="statement not covered" > if (equation) {</span>
|
|
1308
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1309
|
-
<span class="cstat-no" title="statement not covered" > katex.render(equation, element as HTMLElement, {</span>
|
|
1310
|
-
displayMode,
|
|
1311
|
-
throwOnError: false,
|
|
1312
|
-
});
|
|
1313
|
-
} catch (error) {
|
|
1314
|
-
<span class="cstat-no" title="statement not covered" > console.error("Failed to render math equation:", error);</span>
|
|
1315
|
-
}
|
|
1316
|
-
}
|
|
1317
|
-
});
|
|
1318
|
-
}
|
|
1319
|
-
|
|
1320
|
-
<span class="fstat-no" title="function not covered" > handleClick(</span>event: MouseEvent): void {
|
|
1321
|
-
const target = <span class="cstat-no" title="statement not covered" >event.target as HTMLElement;</span>
|
|
1322
|
-
|
|
1323
|
-
// Check if clicked on copy button or its children
|
|
1324
|
-
const copyButton = <span class="cstat-no" title="statement not covered" >target.closest(</span>
|
|
1325
|
-
".code-block-copy-button"
|
|
1326
|
-
) as HTMLButtonElement;
|
|
1327
|
-
<span class="cstat-no" title="statement not covered" > if (copyButton) {</span>
|
|
1328
|
-
<span class="cstat-no" title="statement not covered" > event.preventDefault();</span>
|
|
1329
|
-
const blockId = <span class="cstat-no" title="statement not covered" >copyButton.getAttribute("data-code-block-id");</span>
|
|
1330
|
-
|
|
1331
|
-
<span class="cstat-no" title="statement not covered" > if (blockId) {</span>
|
|
1332
|
-
// Get the raw code from our map instead of from DOM
|
|
1333
|
-
const code = <span class="cstat-no" title="statement not covered" >this.codeBlocksMap.get(blockId);</span>
|
|
1334
|
-
<span class="cstat-no" title="statement not covered" > if (code) {</span>
|
|
1335
|
-
<span class="cstat-no" title="statement not covered" > this.copyCodeBlock(blockId, code);</span>
|
|
1336
|
-
}
|
|
1337
|
-
}
|
|
1338
|
-
}
|
|
1339
|
-
}
|
|
1340
|
-
|
|
1341
|
-
private <span class="fstat-no" title="function not covered" >copyCodeBlock(</span>blockId: string, code: string): void {
|
|
1342
|
-
<span class="cstat-no" title="statement not covered" > navigator.clipboard.writeText(code).then(</span>
|
|
1343
|
-
<span class="fstat-no" title="function not covered" > () =</span>> {
|
|
1344
|
-
// Update the button in the DOM
|
|
1345
|
-
const button = <span class="cstat-no" title="statement not covered" >this.elementRef.nativeElement.querySelector(</span>
|
|
1346
|
-
`[data-code-block-id="${blockId}"]`
|
|
1347
|
-
);
|
|
1348
|
-
<span class="cstat-no" title="statement not covered" > if (button) {</span>
|
|
1349
|
-
const originalHTML = <span class="cstat-no" title="statement not covered" >button.innerHTML;</span>
|
|
1350
|
-
<span class="cstat-no" title="statement not covered" > button.innerHTML = `</span>
|
|
1351
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>
|
|
1352
|
-
<span>${this.labels.assistantMessageToolbarCopyCodeCopiedLabel}</span>
|
|
1353
|
-
`;
|
|
1354
|
-
<span class="cstat-no" title="statement not covered" > button.setAttribute(</span>
|
|
1355
|
-
"aria-label",
|
|
1356
|
-
`${this.labels.assistantMessageToolbarCopyCodeCopiedLabel} code`
|
|
1357
|
-
);
|
|
1358
|
-
|
|
1359
|
-
// Reset after 2 seconds
|
|
1360
|
-
<span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
1361
|
-
<span class="cstat-no" title="statement not covered" > button.innerHTML = originalHTML;</span>
|
|
1362
|
-
<span class="cstat-no" title="statement not covered" > button.setAttribute(</span>
|
|
1363
|
-
"aria-label",
|
|
1364
|
-
`${this.labels.assistantMessageToolbarCopyCodeLabel} code`
|
|
1365
|
-
);
|
|
1366
|
-
}, 2000);
|
|
1367
|
-
}
|
|
1368
|
-
},
|
|
1369
|
-
<span class="fstat-no" title="function not covered" > (e</span>rr) => {
|
|
1370
|
-
<span class="cstat-no" title="statement not covered" > console.error("Failed to copy code:", err);</span>
|
|
1371
|
-
}
|
|
1372
|
-
);
|
|
1373
|
-
}
|
|
1374
|
-
|
|
1375
|
-
private <span class="fstat-no" title="function not covered" >generateBlockId(</span>code: string): string {
|
|
1376
|
-
// Simple hash function for generating unique IDs
|
|
1377
|
-
let hash = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
1378
|
-
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < code.length; i++) {</span>
|
|
1379
|
-
const char = <span class="cstat-no" title="statement not covered" >code.charCodeAt(i);</span>
|
|
1380
|
-
<span class="cstat-no" title="statement not covered" > hash = (hash << 5) - hash + char;</span>
|
|
1381
|
-
<span class="cstat-no" title="statement not covered" > hash = hash & hash; </span>// Convert to 32-bit integer
|
|
1382
|
-
}
|
|
1383
|
-
<span class="cstat-no" title="statement not covered" > return `code-block-${hash}`;</span>
|
|
1384
|
-
}
|
|
1385
|
-
|
|
1386
|
-
private <span class="fstat-no" title="function not covered" >escapeHtml(</span>text: string): string {
|
|
1387
|
-
const div = <span class="cstat-no" title="statement not covered" >document.createElement("div");</span>
|
|
1388
|
-
<span class="cstat-no" title="statement not covered" > div.textContent = text;</span>
|
|
1389
|
-
<span class="cstat-no" title="statement not covered" > return div.innerHTML;</span>
|
|
1390
|
-
}
|
|
1391
|
-
}
|
|
1392
|
-
</pre></td></tr></table></pre>
|
|
1393
|
-
|
|
1394
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1395
|
-
</div><!-- /wrapper -->
|
|
1396
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1397
|
-
Code coverage generated by
|
|
1398
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1399
|
-
at 2025-09-15T01:22:45.642Z
|
|
1400
|
-
</div>
|
|
1401
|
-
<script src="../../../prettify.js"></script>
|
|
1402
|
-
<script>
|
|
1403
|
-
window.onload = function () {
|
|
1404
|
-
prettyPrint();
|
|
1405
|
-
};
|
|
1406
|
-
</script>
|
|
1407
|
-
<script src="../../../sorter.js"></script>
|
|
1408
|
-
<script src="../../../block-navigation.js"></script>
|
|
1409
|
-
</body>
|
|
1410
|
-
</html>
|
|
1411
|
-
|