@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
|
@@ -1,1519 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/components/chat/copilot-chat-input.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-input.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">85.71% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>114/133</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">65.59% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>61/93</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">50% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>16/32</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">93.04% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>107/115</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</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-yes">1x</span>
|
|
562
|
-
<span class="cline-any cline-yes">1x</span>
|
|
563
|
-
<span class="cline-any cline-yes">1x</span>
|
|
564
|
-
<span class="cline-any cline-yes">1x</span>
|
|
565
|
-
<span class="cline-any cline-yes">1x</span>
|
|
566
|
-
<span class="cline-any cline-yes">1x</span>
|
|
567
|
-
<span class="cline-any cline-yes">1x</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-yes">1x</span>
|
|
575
|
-
<span class="cline-any cline-yes">1x</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-yes">1x</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-neutral"> </span>
|
|
669
|
-
<span class="cline-any cline-neutral"> </span>
|
|
670
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </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-neutral"> </span>
|
|
693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
699
|
-
<span class="cline-any cline-neutral"> </span>
|
|
700
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
713
|
-
<span class="cline-any cline-neutral"> </span>
|
|
714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-neutral"> </span>
|
|
729
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
739
|
-
<span class="cline-any cline-neutral"> </span>
|
|
740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
744
|
-
<span class="cline-any cline-neutral"> </span>
|
|
745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
750
|
-
<span class="cline-any cline-neutral"> </span>
|
|
751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
753
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-yes">1x</span>
|
|
773
|
-
<span class="cline-any cline-neutral"> </span>
|
|
774
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
783
|
-
<span class="cline-any cline-neutral"> </span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-neutral"> </span>
|
|
789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
791
|
-
<span class="cline-any cline-yes">21x</span>
|
|
792
|
-
<span class="cline-any cline-yes">21x</span>
|
|
793
|
-
<span class="cline-any cline-yes">21x</span>
|
|
794
|
-
<span class="cline-any cline-yes">21x</span>
|
|
795
|
-
<span class="cline-any cline-yes">21x</span>
|
|
796
|
-
<span class="cline-any cline-yes">21x</span>
|
|
797
|
-
<span class="cline-any cline-yes">21x</span>
|
|
798
|
-
<span class="cline-any cline-yes">21x</span>
|
|
799
|
-
<span class="cline-any cline-yes">21x</span>
|
|
800
|
-
<span class="cline-any cline-yes">21x</span>
|
|
801
|
-
<span class="cline-any cline-yes">21x</span>
|
|
802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
803
|
-
<span class="cline-any cline-neutral"> </span>
|
|
804
|
-
<span class="cline-any cline-yes">21x</span>
|
|
805
|
-
<span class="cline-any cline-yes">21x</span>
|
|
806
|
-
<span class="cline-any cline-yes">21x</span>
|
|
807
|
-
<span class="cline-any cline-yes">21x</span>
|
|
808
|
-
<span class="cline-any cline-yes">21x</span>
|
|
809
|
-
<span class="cline-any cline-yes">21x</span>
|
|
810
|
-
<span class="cline-any cline-yes">21x</span>
|
|
811
|
-
<span class="cline-any cline-yes">21x</span>
|
|
812
|
-
<span class="cline-any cline-yes">21x</span>
|
|
813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
814
|
-
<span class="cline-any cline-neutral"> </span>
|
|
815
|
-
<span class="cline-any cline-yes">21x</span>
|
|
816
|
-
<span class="cline-any cline-yes">21x</span>
|
|
817
|
-
<span class="cline-any cline-yes">21x</span>
|
|
818
|
-
<span class="cline-any cline-yes">21x</span>
|
|
819
|
-
<span class="cline-any cline-yes">21x</span>
|
|
820
|
-
<span class="cline-any cline-neutral"> </span>
|
|
821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
822
|
-
<span class="cline-any cline-yes">21x</span>
|
|
823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
825
|
-
<span class="cline-any cline-yes">21x</span>
|
|
826
|
-
<span class="cline-any cline-yes">21x</span>
|
|
827
|
-
<span class="cline-any cline-yes">21x</span>
|
|
828
|
-
<span class="cline-any cline-yes">21x</span>
|
|
829
|
-
<span class="cline-any cline-yes">21x</span>
|
|
830
|
-
<span class="cline-any cline-yes">21x</span>
|
|
831
|
-
<span class="cline-any cline-neutral"> </span>
|
|
832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
833
|
-
<span class="cline-any cline-yes">21x</span>
|
|
834
|
-
<span class="cline-any cline-yes">21x</span>
|
|
835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
837
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
843
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
849
|
-
<span class="cline-any cline-neutral"> </span>
|
|
850
|
-
<span class="cline-any cline-neutral"> </span>
|
|
851
|
-
<span class="cline-any cline-neutral"> </span>
|
|
852
|
-
<span class="cline-any cline-neutral"> </span>
|
|
853
|
-
<span class="cline-any cline-yes">21x</span>
|
|
854
|
-
<span class="cline-any cline-neutral"> </span>
|
|
855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
856
|
-
<span class="cline-any cline-yes">21x</span>
|
|
857
|
-
<span class="cline-any cline-yes">21x</span>
|
|
858
|
-
<span class="cline-any cline-yes">21x</span>
|
|
859
|
-
<span class="cline-any cline-yes">21x</span>
|
|
860
|
-
<span class="cline-any cline-neutral"> </span>
|
|
861
|
-
<span class="cline-any cline-neutral"> </span>
|
|
862
|
-
<span class="cline-any cline-neutral"> </span>
|
|
863
|
-
<span class="cline-any cline-yes">21x</span>
|
|
864
|
-
<span class="cline-any cline-yes">21x</span>
|
|
865
|
-
<span class="cline-any cline-yes">21x</span>
|
|
866
|
-
<span class="cline-any cline-yes">21x</span>
|
|
867
|
-
<span class="cline-any cline-yes">21x</span>
|
|
868
|
-
<span class="cline-any cline-yes">21x</span>
|
|
869
|
-
<span class="cline-any cline-yes">21x</span>
|
|
870
|
-
<span class="cline-any cline-yes">21x</span>
|
|
871
|
-
<span class="cline-any cline-neutral"> </span>
|
|
872
|
-
<span class="cline-any cline-neutral"> </span>
|
|
873
|
-
<span class="cline-any cline-yes">27x</span>
|
|
874
|
-
<span class="cline-any cline-yes">21x</span>
|
|
875
|
-
<span class="cline-any cline-yes">21x</span>
|
|
876
|
-
<span class="cline-any cline-yes">21x</span>
|
|
877
|
-
<span class="cline-any cline-yes">28x</span>
|
|
878
|
-
<span class="cline-any cline-yes">28x</span>
|
|
879
|
-
<span class="cline-any cline-yes">28x</span>
|
|
880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
882
|
-
<span class="cline-any cline-yes">21x</span>
|
|
883
|
-
<span class="cline-any cline-yes">21x</span>
|
|
884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
888
|
-
<span class="cline-any cline-neutral"> </span>
|
|
889
|
-
<span class="cline-any cline-neutral"> </span>
|
|
890
|
-
<span class="cline-any cline-neutral"> </span>
|
|
891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
893
|
-
<span class="cline-any cline-neutral"> </span>
|
|
894
|
-
<span class="cline-any cline-neutral"> </span>
|
|
895
|
-
<span class="cline-any cline-yes">21x</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-yes">21x</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-neutral"> </span>
|
|
904
|
-
<span class="cline-any cline-neutral"> </span>
|
|
905
|
-
<span class="cline-any cline-yes">21x</span>
|
|
906
|
-
<span class="cline-any cline-neutral"> </span>
|
|
907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
908
|
-
<span class="cline-any cline-neutral"> </span>
|
|
909
|
-
<span class="cline-any cline-neutral"> </span>
|
|
910
|
-
<span class="cline-any cline-yes">21x</span>
|
|
911
|
-
<span class="cline-any cline-neutral"> </span>
|
|
912
|
-
<span class="cline-any cline-neutral"> </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-no"> </span>
|
|
918
|
-
<span class="cline-any cline-no"> </span>
|
|
919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
920
|
-
<span class="cline-any cline-neutral"> </span>
|
|
921
|
-
<span class="cline-any cline-yes">21x</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-yes">21x</span>
|
|
928
|
-
<span class="cline-any cline-neutral"> </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-yes">21x</span>
|
|
935
|
-
<span class="cline-any cline-yes">25x</span>
|
|
936
|
-
<span class="cline-any cline-yes">25x</span>
|
|
937
|
-
<span class="cline-any cline-no"> </span>
|
|
938
|
-
<span class="cline-any cline-yes">25x</span>
|
|
939
|
-
<span class="cline-any cline-no"> </span>
|
|
940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
941
|
-
<span class="cline-any cline-neutral"> </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-yes">21x</span>
|
|
946
|
-
<span class="cline-any cline-yes">21x</span>
|
|
947
|
-
<span class="cline-any cline-yes">21x</span>
|
|
948
|
-
<span class="cline-any cline-yes">21x</span>
|
|
949
|
-
<span class="cline-any cline-neutral"> </span>
|
|
950
|
-
<span class="cline-any cline-yes">21x</span>
|
|
951
|
-
<span class="cline-any cline-neutral"> </span>
|
|
952
|
-
<span class="cline-any cline-neutral"> </span>
|
|
953
|
-
<span class="cline-any cline-neutral"> </span>
|
|
954
|
-
<span class="cline-any cline-yes">21x</span>
|
|
955
|
-
<span class="cline-any cline-yes">21x</span>
|
|
956
|
-
<span class="cline-any cline-no"> </span>
|
|
957
|
-
<span class="cline-any cline-neutral"> </span>
|
|
958
|
-
<span class="cline-any cline-neutral"> </span>
|
|
959
|
-
<span class="cline-any cline-neutral"> </span>
|
|
960
|
-
<span class="cline-any cline-neutral"> </span>
|
|
961
|
-
<span class="cline-any cline-neutral"> </span>
|
|
962
|
-
<span class="cline-any cline-neutral"> </span>
|
|
963
|
-
<span class="cline-any cline-yes">21x</span>
|
|
964
|
-
<span class="cline-any cline-no"> </span>
|
|
965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
966
|
-
<span class="cline-any cline-neutral"> </span>
|
|
967
|
-
<span class="cline-any cline-neutral"> </span>
|
|
968
|
-
<span class="cline-any cline-neutral"> </span>
|
|
969
|
-
<span class="cline-any cline-yes">2x</span>
|
|
970
|
-
<span class="cline-any cline-yes">1x</span>
|
|
971
|
-
<span class="cline-any cline-yes">1x</span>
|
|
972
|
-
<span class="cline-any cline-neutral"> </span>
|
|
973
|
-
<span class="cline-any cline-neutral"> </span>
|
|
974
|
-
<span class="cline-any cline-neutral"> </span>
|
|
975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
976
|
-
<span class="cline-any cline-yes">10x</span>
|
|
977
|
-
<span class="cline-any cline-yes">10x</span>
|
|
978
|
-
<span class="cline-any cline-neutral"> </span>
|
|
979
|
-
<span class="cline-any cline-neutral"> </span>
|
|
980
|
-
<span class="cline-any cline-neutral"> </span>
|
|
981
|
-
<span class="cline-any cline-yes">4x</span>
|
|
982
|
-
<span class="cline-any cline-yes">4x</span>
|
|
983
|
-
<span class="cline-any cline-yes">3x</span>
|
|
984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
986
|
-
<span class="cline-any cline-yes">3x</span>
|
|
987
|
-
<span class="cline-any cline-yes">3x</span>
|
|
988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
990
|
-
<span class="cline-any cline-neutral"> </span>
|
|
991
|
-
<span class="cline-any cline-yes">3x</span>
|
|
992
|
-
<span class="cline-any cline-yes">3x</span>
|
|
993
|
-
<span class="cline-any cline-neutral"> </span>
|
|
994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
995
|
-
<span class="cline-any cline-yes">3x</span>
|
|
996
|
-
<span class="cline-any cline-yes">3x</span>
|
|
997
|
-
<span class="cline-any cline-no"> </span>
|
|
998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
999
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1001
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1005
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1007
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1009
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1010
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1014
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1015
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1022
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
1023
|
-
Component,
|
|
1024
|
-
TemplateRef,
|
|
1025
|
-
signal,
|
|
1026
|
-
computed,
|
|
1027
|
-
effect,
|
|
1028
|
-
inject,
|
|
1029
|
-
ChangeDetectionStrategy,
|
|
1030
|
-
AfterViewInit,
|
|
1031
|
-
OnDestroy,
|
|
1032
|
-
Type,
|
|
1033
|
-
ViewEncapsulation,
|
|
1034
|
-
ContentChild,
|
|
1035
|
-
input,
|
|
1036
|
-
output,
|
|
1037
|
-
ViewChild
|
|
1038
|
-
} from '@angular/core';
|
|
1039
|
-
import { CommonModule } from '@angular/common';
|
|
1040
|
-
import { CopilotSlot } from '../../lib/slots/copilot-slot';
|
|
1041
|
-
import { CopilotChatConfigurationService } from '../../core/chat-configuration/chat-configuration';
|
|
1042
|
-
import { LucideAngularModule, ArrowUp } from 'lucide-angular';
|
|
1043
|
-
import { CopilotChatTextarea } from './copilot-chat-textarea';
|
|
1044
|
-
import { CopilotChatAudioRecorder } from './copilot-chat-audio-recorder';
|
|
1045
|
-
import {
|
|
1046
|
-
CopilotChatSendButton,
|
|
1047
|
-
CopilotChatStartTranscribeButton,
|
|
1048
|
-
CopilotChatCancelTranscribeButton,
|
|
1049
|
-
CopilotChatFinishTranscribeButton,
|
|
1050
|
-
CopilotChatAddFileButton
|
|
1051
|
-
} from './copilot-chat-buttons';
|
|
1052
|
-
import { CopilotChatToolbar } from './copilot-chat-toolbar';
|
|
1053
|
-
import { CopilotChatToolsMenu } from './copilot-chat-tools-menu';
|
|
1054
|
-
import type {
|
|
1055
|
-
CopilotChatInputMode,
|
|
1056
|
-
ToolsMenuItem
|
|
1057
|
-
} from './copilot-chat-input.types';
|
|
1058
|
-
import { cn } from '../../lib/utils';
|
|
1059
|
-
|
|
1060
|
-
/**
|
|
1061
|
-
* Context provided to slot templates
|
|
1062
|
-
*/
|
|
1063
|
-
export interface SendButtonContext {
|
|
1064
|
-
send: () => void;
|
|
1065
|
-
disabled: boolean;
|
|
1066
|
-
value: string;
|
|
1067
|
-
}
|
|
1068
|
-
|
|
1069
|
-
export interface ToolbarContext {
|
|
1070
|
-
mode: CopilotChatInputMode;
|
|
1071
|
-
value: string;
|
|
1072
|
-
}
|
|
1073
|
-
|
|
1074
|
-
@Component({
|
|
1075
|
-
standalone: true,
|
|
1076
|
-
selector: 'copilot-chat-input',
|
|
1077
|
-
imports: [
|
|
1078
|
-
CommonModule,
|
|
1079
|
-
CopilotSlot,
|
|
1080
|
-
LucideAngularModule,
|
|
1081
|
-
CopilotChatTextarea,
|
|
1082
|
-
CopilotChatAudioRecorder,
|
|
1083
|
-
CopilotChatSendButton,
|
|
1084
|
-
CopilotChatStartTranscribeButton,
|
|
1085
|
-
CopilotChatCancelTranscribeButton,
|
|
1086
|
-
CopilotChatFinishTranscribeButton,
|
|
1087
|
-
CopilotChatAddFileButton,
|
|
1088
|
-
CopilotChatToolbar,
|
|
1089
|
-
CopilotChatToolsMenu
|
|
1090
|
-
],
|
|
1091
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1092
|
-
encapsulation: ViewEncapsulation.None,
|
|
1093
|
-
template: `
|
|
1094
|
-
<div [class]="computedClass()">
|
|
1095
|
-
<!-- Main input area: either textarea or audio recorder -->
|
|
1096
|
-
@if (computedMode() === 'transcribe') {
|
|
1097
|
-
@if (audioRecorderTemplate || audioRecorderComponent()) {
|
|
1098
|
-
<copilot-slot
|
|
1099
|
-
[slot]="audioRecorderTemplate || audioRecorderComponent()"
|
|
1100
|
-
[context]="audioRecorderContext()"
|
|
1101
|
-
[defaultComponent]="defaultAudioRecorder"
|
|
1102
|
-
>
|
|
1103
|
-
</copilot-slot>
|
|
1104
|
-
} @else {
|
|
1105
|
-
<copilot-chat-audio-recorder
|
|
1106
|
-
[inputShowControls]="true">
|
|
1107
|
-
</copilot-chat-audio-recorder>
|
|
1108
|
-
}
|
|
1109
|
-
} @else {
|
|
1110
|
-
@if (textAreaTemplate || textAreaComponent()) {
|
|
1111
|
-
<copilot-slot
|
|
1112
|
-
[slot]="textAreaTemplate || textAreaComponent()"
|
|
1113
|
-
[context]="textAreaContext()"
|
|
1114
|
-
>
|
|
1115
|
-
</copilot-slot>
|
|
1116
|
-
} @else {
|
|
1117
|
-
<textarea copilotChatTextarea
|
|
1118
|
-
[inputValue]="computedValue()"
|
|
1119
|
-
[inputAutoFocus]="computedAutoFocus()"
|
|
1120
|
-
[inputDisabled]="computedMode() === 'processing'"
|
|
1121
|
-
[inputClass]="textAreaClass()"
|
|
1122
|
-
[inputMaxRows]="textAreaMaxRows()"
|
|
1123
|
-
[inputPlaceholder]="textAreaPlaceholder()"
|
|
1124
|
-
(keyDown)="handleKeyDown($event)"
|
|
1125
|
-
(valueChange)="handleValueChange($event)"></textarea>
|
|
1126
|
-
}
|
|
1127
|
-
}
|
|
1128
|
-
|
|
1129
|
-
<!-- Toolbar -->
|
|
1130
|
-
@if (toolbarTemplate || toolbarComponent()) {
|
|
1131
|
-
<copilot-slot
|
|
1132
|
-
[slot]="toolbarTemplate || toolbarComponent()"
|
|
1133
|
-
[context]="toolbarContext()"
|
|
1134
|
-
[defaultComponent]="CopilotChatToolbar"
|
|
1135
|
-
>
|
|
1136
|
-
</copilot-slot>
|
|
1137
|
-
} @else {
|
|
1138
|
-
<div copilotChatToolbar>
|
|
1139
|
-
<div class="flex items-center">
|
|
1140
|
-
@if (addFileButtonTemplate || addFileButtonComponent()) {
|
|
1141
|
-
<copilot-slot
|
|
1142
|
-
[slot]="addFileButtonTemplate || addFileButtonComponent()"
|
|
1143
|
-
[context]="{ inputDisabled: computedMode() === 'transcribe' }"
|
|
1144
|
-
[outputs]="addFileButtonOutputs"
|
|
1145
|
-
[defaultComponent]="CopilotChatAddFileButton"
|
|
1146
|
-
>
|
|
1147
|
-
</copilot-slot>
|
|
1148
|
-
} @else {
|
|
1149
|
-
<copilot-chat-add-file-button
|
|
1150
|
-
[disabled]="computedMode() === 'transcribe'"
|
|
1151
|
-
(clicked)="handleAddFile()">
|
|
1152
|
-
</copilot-chat-add-file-button>
|
|
1153
|
-
}
|
|
1154
|
-
@if (computedToolsMenu().length > 0) {
|
|
1155
|
-
@if (toolsButtonTemplate || toolsButtonComponent()) {
|
|
1156
|
-
<copilot-slot
|
|
1157
|
-
[slot]="toolsButtonTemplate || toolsButtonComponent()"
|
|
1158
|
-
[context]="toolsContext()"
|
|
1159
|
-
[defaultComponent]="CopilotChatToolsMenu"
|
|
1160
|
-
>
|
|
1161
|
-
</copilot-slot>
|
|
1162
|
-
} @else {
|
|
1163
|
-
<copilot-chat-tools-menu
|
|
1164
|
-
[inputToolsMenu]="computedToolsMenu()"
|
|
1165
|
-
[inputDisabled]="computedMode() === 'transcribe'">
|
|
1166
|
-
</copilot-chat-tools-menu>
|
|
1167
|
-
}
|
|
1168
|
-
}
|
|
1169
|
-
@if (additionalToolbarItems()) {
|
|
1170
|
-
<ng-container [ngTemplateOutlet]="additionalToolbarItems()"></ng-container>
|
|
1171
|
-
}
|
|
1172
|
-
</div>
|
|
1173
|
-
<div class="flex items-center">
|
|
1174
|
-
@if (computedMode() === 'transcribe') {
|
|
1175
|
-
@if (cancelTranscribeButtonTemplate || cancelTranscribeButtonComponent()) {
|
|
1176
|
-
<copilot-slot
|
|
1177
|
-
[slot]="cancelTranscribeButtonTemplate || cancelTranscribeButtonComponent()"
|
|
1178
|
-
[context]="{}"
|
|
1179
|
-
[outputs]="cancelTranscribeButtonOutputs"
|
|
1180
|
-
[defaultComponent]="CopilotChatCancelTranscribeButton"
|
|
1181
|
-
>
|
|
1182
|
-
</copilot-slot>
|
|
1183
|
-
} @else {
|
|
1184
|
-
<copilot-chat-cancel-transcribe-button
|
|
1185
|
-
(clicked)="handleCancelTranscribe()">
|
|
1186
|
-
</copilot-chat-cancel-transcribe-button>
|
|
1187
|
-
}
|
|
1188
|
-
@if (finishTranscribeButtonTemplate || finishTranscribeButtonComponent()) {
|
|
1189
|
-
<copilot-slot
|
|
1190
|
-
[slot]="finishTranscribeButtonTemplate || finishTranscribeButtonComponent()"
|
|
1191
|
-
[context]="{}"
|
|
1192
|
-
[outputs]="finishTranscribeButtonOutputs"
|
|
1193
|
-
[defaultComponent]="CopilotChatFinishTranscribeButton"
|
|
1194
|
-
>
|
|
1195
|
-
</copilot-slot>
|
|
1196
|
-
} @else {
|
|
1197
|
-
<copilot-chat-finish-transcribe-button
|
|
1198
|
-
(clicked)="handleFinishTranscribe()">
|
|
1199
|
-
</copilot-chat-finish-transcribe-button>
|
|
1200
|
-
}
|
|
1201
|
-
} @else {
|
|
1202
|
-
@if (startTranscribeButtonTemplate || startTranscribeButtonComponent()) {
|
|
1203
|
-
<copilot-slot
|
|
1204
|
-
[slot]="startTranscribeButtonTemplate || startTranscribeButtonComponent()"
|
|
1205
|
-
[context]="{}"
|
|
1206
|
-
[outputs]="startTranscribeButtonOutputs"
|
|
1207
|
-
[defaultComponent]="CopilotChatStartTranscribeButton"
|
|
1208
|
-
>
|
|
1209
|
-
</copilot-slot>
|
|
1210
|
-
} @else {
|
|
1211
|
-
<copilot-chat-start-transcribe-button
|
|
1212
|
-
(clicked)="handleStartTranscribe()">
|
|
1213
|
-
</copilot-chat-start-transcribe-button>
|
|
1214
|
-
}
|
|
1215
|
-
<!-- Send button with slot -->
|
|
1216
|
-
@if (sendButtonTemplate || sendButtonComponent()) {
|
|
1217
|
-
<copilot-slot
|
|
1218
|
-
[slot]="sendButtonTemplate || sendButtonComponent()"
|
|
1219
|
-
[context]="sendButtonContext()"
|
|
1220
|
-
[outputs]="sendButtonOutputs"
|
|
1221
|
-
>
|
|
1222
|
-
</copilot-slot>
|
|
1223
|
-
} @else {
|
|
1224
|
-
<div class="mr-[10px]">
|
|
1225
|
-
<button
|
|
1226
|
-
type="button"
|
|
1227
|
-
[class]="sendButtonClass() || defaultButtonClass"
|
|
1228
|
-
[disabled]="!computedValue().trim() || computedMode() === 'processing'"
|
|
1229
|
-
(click)="send()">
|
|
1230
|
-
<lucide-angular [img]="ArrowUpIcon" [size]="18"></lucide-angular>
|
|
1231
|
-
</button>
|
|
1232
|
-
</div>
|
|
1233
|
-
}
|
|
1234
|
-
}
|
|
1235
|
-
</div>
|
|
1236
|
-
</div>
|
|
1237
|
-
}
|
|
1238
|
-
</div>
|
|
1239
|
-
`,
|
|
1240
|
-
styles: [`
|
|
1241
|
-
:host {
|
|
1242
|
-
display: block;
|
|
1243
|
-
width: 100%;
|
|
1244
|
-
}
|
|
1245
|
-
.shadow-\\[0_4px_4px_0_\\#0000000a\\2c_0_0_1px_0_\\#0000009e\\] {
|
|
1246
|
-
box-shadow: 0 4px 4px 0 #0000000a, 0 0 1px 0 #0000009e !important;
|
|
1247
|
-
}
|
|
1248
|
-
`]
|
|
1249
|
-
})
|
|
1250
|
-
export class CopilotChatInput implements AfterViewInit, OnDestroy {
|
|
1251
|
-
@ViewChild(CopilotChatTextarea, { read: CopilotChatTextarea })
|
|
1252
|
-
textAreaRef?: CopilotChatTextarea;
|
|
1253
|
-
|
|
1254
|
-
@ViewChild(CopilotChatAudioRecorder)
|
|
1255
|
-
audioRecorderRef?: CopilotChatAudioRecorder;
|
|
1256
|
-
|
|
1257
|
-
// Capture templates from content projection
|
|
1258
|
-
@ContentChild('sendButton', { read: TemplateRef }) sendButtonTemplate?: TemplateRef<SendButtonContext>;
|
|
1259
|
-
@ContentChild('toolbar', { read: TemplateRef }) toolbarTemplate?: TemplateRef<ToolbarContext>;
|
|
1260
|
-
@ContentChild('textArea', { read: TemplateRef }) textAreaTemplate?: TemplateRef<any>;
|
|
1261
|
-
@ContentChild('audioRecorder', { read: TemplateRef }) audioRecorderTemplate?: TemplateRef<any>;
|
|
1262
|
-
@ContentChild('startTranscribeButton', { read: TemplateRef }) startTranscribeButtonTemplate?: TemplateRef<any>;
|
|
1263
|
-
@ContentChild('cancelTranscribeButton', { read: TemplateRef }) cancelTranscribeButtonTemplate?: TemplateRef<any>;
|
|
1264
|
-
@ContentChild('finishTranscribeButton', { read: TemplateRef }) finishTranscribeButtonTemplate?: TemplateRef<any>;
|
|
1265
|
-
@ContentChild('addFileButton', { read: TemplateRef }) addFileButtonTemplate?: TemplateRef<any>;
|
|
1266
|
-
@ContentChild('toolsButton', { read: TemplateRef }) toolsButtonTemplate?: TemplateRef<any>;
|
|
1267
|
-
|
|
1268
|
-
// Class inputs for styling default components
|
|
1269
|
-
sendButtonClass = input<string | undefined>(undefined);
|
|
1270
|
-
toolbarClass = input<string | undefined>(undefined);
|
|
1271
|
-
textAreaClass = input<string | undefined>(undefined);
|
|
1272
|
-
textAreaMaxRows = input<number | undefined>(undefined);
|
|
1273
|
-
textAreaPlaceholder = input<string | undefined>(undefined);
|
|
1274
|
-
audioRecorderClass = input<string | undefined>(undefined);
|
|
1275
|
-
startTranscribeButtonClass = input<string | undefined>(undefined);
|
|
1276
|
-
cancelTranscribeButtonClass = input<string | undefined>(undefined);
|
|
1277
|
-
finishTranscribeButtonClass = input<string | undefined>(undefined);
|
|
1278
|
-
addFileButtonClass = input<string | undefined>(undefined);
|
|
1279
|
-
toolsButtonClass = input<string | undefined>(undefined);
|
|
1280
|
-
|
|
1281
|
-
// Component inputs for overrides
|
|
1282
|
-
sendButtonComponent = input<Type<any> | undefined>(undefined);
|
|
1283
|
-
toolbarComponent = input<Type<any> | undefined>(undefined);
|
|
1284
|
-
textAreaComponent = input<Type<any> | undefined>(undefined);
|
|
1285
|
-
audioRecorderComponent = input<Type<any> | undefined>(undefined);
|
|
1286
|
-
startTranscribeButtonComponent = input<Type<any> | undefined>(undefined);
|
|
1287
|
-
cancelTranscribeButtonComponent = input<Type<any> | undefined>(undefined);
|
|
1288
|
-
finishTranscribeButtonComponent = input<Type<any> | undefined>(undefined);
|
|
1289
|
-
addFileButtonComponent = input<Type<any> | undefined>(undefined);
|
|
1290
|
-
toolsButtonComponent = input<Type<any> | undefined>(undefined);
|
|
1291
|
-
|
|
1292
|
-
// Regular inputs
|
|
1293
|
-
mode = input<CopilotChatInputMode | undefined>(undefined);
|
|
1294
|
-
toolsMenu = input<(ToolsMenuItem | '-')[] | undefined>(undefined);
|
|
1295
|
-
autoFocus = input<boolean | undefined>(undefined);
|
|
1296
|
-
value = input<string | undefined>(undefined);
|
|
1297
|
-
inputClass = input<string | undefined>(undefined);
|
|
1298
|
-
// Note: Prefer host `class` for styling this component;
|
|
1299
|
-
// keep only `inputClass` to style the internal wrapper if needed.
|
|
1300
|
-
additionalToolbarItems = input<TemplateRef<any> | undefined>(undefined);
|
|
1301
|
-
|
|
1302
|
-
// Output events
|
|
1303
|
-
submitMessage = output<string>();
|
|
1304
|
-
startTranscribe = output<void>();
|
|
1305
|
-
cancelTranscribe = output<void>();
|
|
1306
|
-
finishTranscribe = output<void>();
|
|
1307
|
-
addFile = output<void>();
|
|
1308
|
-
valueChange = output<string>();
|
|
1309
|
-
|
|
1310
|
-
// Icons and default classes
|
|
1311
|
-
readonly ArrowUpIcon = ArrowUp;
|
|
1312
|
-
readonly defaultButtonClass = cn(
|
|
1313
|
-
// Base button styles
|
|
1314
|
-
'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium',
|
|
1315
|
-
'transition-all disabled:pointer-events-none disabled:opacity-50',
|
|
1316
|
-
'shrink-0 outline-none',
|
|
1317
|
-
'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',
|
|
1318
|
-
// chatInputToolbarPrimary variant
|
|
1319
|
-
'cursor-pointer',
|
|
1320
|
-
'bg-black text-white',
|
|
1321
|
-
'dark:bg-white dark:text-black dark:focus-visible:outline-white',
|
|
1322
|
-
'rounded-full h-9 w-9',
|
|
1323
|
-
'transition-colors',
|
|
1324
|
-
'focus:outline-none',
|
|
1325
|
-
'hover:opacity-70 disabled:hover:opacity-100',
|
|
1326
|
-
'disabled:cursor-not-allowed disabled:bg-[#00000014] disabled:text-[rgb(13,13,13)]',
|
|
1327
|
-
'dark:disabled:bg-[#454545] dark:disabled:text-white'
|
|
1328
|
-
);
|
|
1329
|
-
|
|
1330
|
-
// Services
|
|
1331
|
-
private chatConfig = inject(CopilotChatConfigurationService, { optional: true });
|
|
1332
|
-
|
|
1333
|
-
// Signals
|
|
1334
|
-
modeSignal = signal<CopilotChatInputMode>('input');
|
|
1335
|
-
toolsMenuSignal = signal<(ToolsMenuItem | '-')[]>([]);
|
|
1336
|
-
autoFocusSignal = signal<boolean>(true);
|
|
1337
|
-
customClass = signal<string | undefined>(undefined);
|
|
1338
|
-
|
|
1339
|
-
// Default components
|
|
1340
|
-
// Note: CopilotChatTextarea uses attribute selector but is a component
|
|
1341
|
-
defaultAudioRecorder = CopilotChatAudioRecorder;
|
|
1342
|
-
defaultSendButton: any = null; // Will be set to avoid circular dependency
|
|
1343
|
-
CopilotChatToolbar = CopilotChatToolbar;
|
|
1344
|
-
CopilotChatAddFileButton = CopilotChatAddFileButton;
|
|
1345
|
-
CopilotChatToolsMenu = CopilotChatToolsMenu;
|
|
1346
|
-
CopilotChatCancelTranscribeButton = CopilotChatCancelTranscribeButton;
|
|
1347
|
-
CopilotChatFinishTranscribeButton = CopilotChatFinishTranscribeButton;
|
|
1348
|
-
CopilotChatStartTranscribeButton = CopilotChatStartTranscribeButton;
|
|
1349
|
-
|
|
1350
|
-
// Computed values
|
|
1351
|
-
computedMode = computed(() => this.modeSignal());
|
|
1352
|
-
computedToolsMenu = computed(() => this.toolsMenu()<span class="branch-0 cbranch-no" title="branch not covered" > ?? [</span>]);
|
|
1353
|
-
computedAutoFocus = computed(() => this.autoFocus()<span class="branch-0 cbranch-no" title="branch not covered" > ?? t</span>rue);
|
|
1354
|
-
computedValue = computed(() => {
|
|
1355
|
-
const customValue = this.value()<span class="branch-0 cbranch-no" title="branch not covered" > ?? '</span>';
|
|
1356
|
-
const configValue = this.chatConfig<span class="branch-0 cbranch-no" title="branch not covered" >?.i</span>nputValue<span class="branch-0 cbranch-no" title="branch not covered" >?.() </span>?? this.chatConfig<span class="branch-0 cbranch-no" title="branch not covered" >?.i</span>nputValue<span class="branch-0 cbranch-no" title="branch not covered" >?.();</span>
|
|
1357
|
-
return customValue || configValue || '';
|
|
1358
|
-
});
|
|
1359
|
-
|
|
1360
|
-
computedClass = computed(() => {
|
|
1361
|
-
const baseClasses = cn(
|
|
1362
|
-
// Layout
|
|
1363
|
-
'flex w-full flex-col items-center justify-center',
|
|
1364
|
-
// Interaction
|
|
1365
|
-
'cursor-text',
|
|
1366
|
-
// Overflow and clipping
|
|
1367
|
-
'overflow-visible bg-clip-padding contain-inline-size',
|
|
1368
|
-
// Background
|
|
1369
|
-
'bg-white dark:bg-[#303030]',
|
|
1370
|
-
// Visual effects
|
|
1371
|
-
'shadow-[0_4px_4px_0_#0000000a,0_0_1px_0_#0000009e] rounded-[28px]'
|
|
1372
|
-
);
|
|
1373
|
-
return cn(baseClasses, this.customClass());
|
|
1374
|
-
});
|
|
1375
|
-
|
|
1376
|
-
// Context for slots (reactive via signals)
|
|
1377
|
-
sendButtonContext = computed<SendButtonContext>(<span class="fstat-no" title="function not covered" >() =</span>> (<span class="cstat-no" title="statement not covered" >{</span>
|
|
1378
|
-
send: <span class="fstat-no" title="function not covered" >() =</span>> <span class="cstat-no" title="statement not covered" >this.send(),</span>
|
|
1379
|
-
disabled: !this.computedValue().trim() || this.computedMode() === 'processing',
|
|
1380
|
-
value: this.computedValue()
|
|
1381
|
-
}));
|
|
1382
|
-
|
|
1383
|
-
toolbarContext = computed<ToolbarContext>(<span class="fstat-no" title="function not covered" >() =</span>> (<span class="cstat-no" title="statement not covered" >{</span>
|
|
1384
|
-
mode: this.computedMode(),
|
|
1385
|
-
value: this.computedValue()
|
|
1386
|
-
}));
|
|
1387
|
-
|
|
1388
|
-
textAreaContext = computed(<span class="fstat-no" title="function not covered" >() =</span>> (<span class="cstat-no" title="statement not covered" >{</span>
|
|
1389
|
-
value: this.computedValue(),
|
|
1390
|
-
autoFocus: this.computedAutoFocus(),
|
|
1391
|
-
disabled: this.computedMode() === 'processing',
|
|
1392
|
-
maxRows: this.textAreaMaxRows(),
|
|
1393
|
-
placeholder: this.textAreaPlaceholder(),
|
|
1394
|
-
inputClass: this.textAreaClass(),
|
|
1395
|
-
onKeyDown: <span class="fstat-no" title="function not covered" >(e</span>vent: KeyboardEvent) => <span class="cstat-no" title="statement not covered" >this.handleKeyDown(event),</span>
|
|
1396
|
-
onChange: <span class="fstat-no" title="function not covered" >(v</span>alue: string) => <span class="cstat-no" title="statement not covered" >this.handleValueChange(value)</span>
|
|
1397
|
-
}));
|
|
1398
|
-
|
|
1399
|
-
audioRecorderContext = computed(<span class="fstat-no" title="function not covered" >() =</span>> (<span class="cstat-no" title="statement not covered" >{</span>
|
|
1400
|
-
inputShowControls: true
|
|
1401
|
-
}));
|
|
1402
|
-
|
|
1403
|
-
// Button contexts removed - now using outputs map for click handlers
|
|
1404
|
-
|
|
1405
|
-
toolsContext = computed(<span class="fstat-no" title="function not covered" >() =</span>> (<span class="cstat-no" title="statement not covered" >{</span>
|
|
1406
|
-
inputToolsMenu: this.computedToolsMenu(),
|
|
1407
|
-
inputDisabled: this.computedMode() === 'transcribe'
|
|
1408
|
-
}));
|
|
1409
|
-
|
|
1410
|
-
constructor() {
|
|
1411
|
-
// Effect to handle mode changes (no signal writes)
|
|
1412
|
-
effect(() => {
|
|
1413
|
-
const currentMode = this.computedMode();
|
|
1414
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (currentMode === 'transcribe' && this.audioRecorderRef) {
|
|
1415
|
-
<span class="cstat-no" title="statement not covered" > this.audioRecorderRef.start().catch(console.error);</span>
|
|
1416
|
-
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (this.audioRecorderRef?.getState() === 'recording') {
|
|
1417
|
-
<span class="cstat-no" title="statement not covered" > this.audioRecorderRef.stop().catch(console.error);</span>
|
|
1418
|
-
}
|
|
1419
|
-
});
|
|
1420
|
-
}
|
|
1421
|
-
|
|
1422
|
-
// Output maps for slots
|
|
1423
|
-
addFileButtonOutputs = { clicked: <span class="fstat-no" title="function not covered" >() =</span>> <span class="cstat-no" title="statement not covered" >this.handleAddFile() </span>};
|
|
1424
|
-
cancelTranscribeButtonOutputs = { clicked: <span class="fstat-no" title="function not covered" >() =</span>> <span class="cstat-no" title="statement not covered" >this.handleCancelTranscribe() </span>};
|
|
1425
|
-
finishTranscribeButtonOutputs = { clicked: <span class="fstat-no" title="function not covered" >() =</span>> <span class="cstat-no" title="statement not covered" >this.handleFinishTranscribe() </span>};
|
|
1426
|
-
startTranscribeButtonOutputs = { clicked: <span class="fstat-no" title="function not covered" >() =</span>> <span class="cstat-no" title="statement not covered" >this.handleStartTranscribe() </span>};
|
|
1427
|
-
// Support both `clicked` (idiomatic in our slots) and `click` (legacy)
|
|
1428
|
-
sendButtonOutputs = { clicked: <span class="fstat-no" title="function not covered" >() =</span>> <span class="cstat-no" title="statement not covered" >this.send(),</span> click: <span class="fstat-no" title="function not covered" >() =</span>> <span class="cstat-no" title="statement not covered" >this.send() </span>};
|
|
1429
|
-
|
|
1430
|
-
ngAfterViewInit(): void {
|
|
1431
|
-
// Auto-focus if needed
|
|
1432
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (this.computedAutoFocus() && this.textAreaRef) {
|
|
1433
|
-
setTimeout(<span class="fstat-no" title="function not covered" >() =</span>> {
|
|
1434
|
-
<span class="cstat-no" title="statement not covered" > this.textAreaRef?.focus();</span>
|
|
1435
|
-
});
|
|
1436
|
-
}
|
|
1437
|
-
}
|
|
1438
|
-
|
|
1439
|
-
ngOnDestroy(): void {
|
|
1440
|
-
// Clean up any resources
|
|
1441
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.audioRecorderRef?.getState() === 'recording') {
|
|
1442
|
-
<span class="cstat-no" title="statement not covered" > this.audioRecorderRef?.stop().catch(console.error);</span>
|
|
1443
|
-
}
|
|
1444
|
-
}
|
|
1445
|
-
|
|
1446
|
-
handleKeyDown(event: KeyboardEvent): void {
|
|
1447
|
-
if (event.key === 'Enter' && !event.shiftKey) {
|
|
1448
|
-
event.preventDefault();
|
|
1449
|
-
this.send();
|
|
1450
|
-
}
|
|
1451
|
-
}
|
|
1452
|
-
|
|
1453
|
-
handleValueChange(value: string): void {
|
|
1454
|
-
this.valueChange.emit(value);
|
|
1455
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (this.chatConfig<span class="branch-0 cbranch-no" title="branch not covered" >?.s</span>etInputValue) this.chatConfig.setInputValue(value);
|
|
1456
|
-
}
|
|
1457
|
-
|
|
1458
|
-
send(): void {
|
|
1459
|
-
const trimmed = this.computedValue().trim();
|
|
1460
|
-
if (trimmed) {
|
|
1461
|
-
this.submitMessage.emit(trimmed);
|
|
1462
|
-
|
|
1463
|
-
// Use chat config handler if available
|
|
1464
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (this.chatConfig) {
|
|
1465
|
-
this.chatConfig.submitInput(trimmed);
|
|
1466
|
-
}
|
|
1467
|
-
|
|
1468
|
-
// Clear input via chat config and bound textarea
|
|
1469
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (this.chatConfig<span class="branch-0 cbranch-no" title="branch not covered" >?.s</span>etInputValue) this.chatConfig.setInputValue('');
|
|
1470
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (this.textAreaRef) this.textAreaRef.setValue('');
|
|
1471
|
-
|
|
1472
|
-
// Refocus input
|
|
1473
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (this.textAreaRef) {
|
|
1474
|
-
setTimeout(<span class="fstat-no" title="function not covered" >() =</span>> {
|
|
1475
|
-
<span class="cstat-no" title="statement not covered" > this.textAreaRef?.focus();</span>
|
|
1476
|
-
});
|
|
1477
|
-
}
|
|
1478
|
-
}
|
|
1479
|
-
}
|
|
1480
|
-
|
|
1481
|
-
handleStartTranscribe(): void {
|
|
1482
|
-
this.startTranscribe.emit();
|
|
1483
|
-
this.modeSignal.set('transcribe');
|
|
1484
|
-
}
|
|
1485
|
-
|
|
1486
|
-
handleCancelTranscribe(): void {
|
|
1487
|
-
this.cancelTranscribe.emit();
|
|
1488
|
-
this.modeSignal.set('input');
|
|
1489
|
-
}
|
|
1490
|
-
|
|
1491
|
-
handleFinishTranscribe(): void {
|
|
1492
|
-
this.finishTranscribe.emit();
|
|
1493
|
-
this.modeSignal.set('input');
|
|
1494
|
-
}
|
|
1495
|
-
|
|
1496
|
-
handleAddFile(): void {
|
|
1497
|
-
this.addFile.emit();
|
|
1498
|
-
}
|
|
1499
|
-
}
|
|
1500
|
-
</pre></td></tr></table></pre>
|
|
1501
|
-
|
|
1502
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1503
|
-
</div><!-- /wrapper -->
|
|
1504
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1505
|
-
Code coverage generated by
|
|
1506
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1507
|
-
at 2025-09-15T01:22:45.642Z
|
|
1508
|
-
</div>
|
|
1509
|
-
<script src="../../../prettify.js"></script>
|
|
1510
|
-
<script>
|
|
1511
|
-
window.onload = function () {
|
|
1512
|
-
prettyPrint();
|
|
1513
|
-
};
|
|
1514
|
-
</script>
|
|
1515
|
-
<script src="../../../sorter.js"></script>
|
|
1516
|
-
<script src="../../../block-navigation.js"></script>
|
|
1517
|
-
</body>
|
|
1518
|
-
</html>
|
|
1519
|
-
|