vscode-json-languageservice 3.7.0 → 3.8.3

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.
Files changed (69) hide show
  1. package/CHANGELOG.md +12 -8
  2. package/README.md +2 -1
  3. package/lib/esm/jsonLanguageService.d.ts +6 -2
  4. package/lib/esm/jsonLanguageService.js +1 -0
  5. package/lib/esm/jsonLanguageTypes.d.ts +7 -4
  6. package/lib/esm/jsonLanguageTypes.js +7 -3
  7. package/lib/esm/parser/jsonParser.js +33 -6
  8. package/lib/esm/services/jsonCompletion.js +61 -3
  9. package/lib/esm/services/jsonSchemaService.js +18 -3
  10. package/lib/umd/jsonLanguageService.d.ts +6 -2
  11. package/lib/umd/jsonLanguageService.js +13 -4
  12. package/lib/umd/jsonLanguageTypes.d.ts +7 -4
  13. package/lib/umd/jsonLanguageTypes.js +31 -6
  14. package/lib/umd/parser/jsonParser.js +34 -6
  15. package/lib/umd/services/configuration.js +1 -0
  16. package/lib/umd/services/jsonCompletion.js +62 -3
  17. package/lib/umd/services/jsonDefinition.js +1 -0
  18. package/lib/umd/services/jsonDocumentSymbols.js +1 -0
  19. package/lib/umd/services/jsonFolding.js +1 -0
  20. package/lib/umd/services/jsonHover.js +1 -0
  21. package/lib/umd/services/jsonSchemaService.js +19 -3
  22. package/lib/umd/services/jsonSelectionRanges.js +1 -0
  23. package/lib/umd/services/jsonValidation.js +1 -0
  24. package/lib/umd/utils/colors.js +1 -0
  25. package/lib/umd/utils/json.js +1 -0
  26. package/lib/umd/utils/objects.js +1 -0
  27. package/lib/umd/utils/strings.js +1 -0
  28. package/package.json +1 -1
  29. package/.nyc_output/0abe3076-16a9-4975-87da-4ecfc24d9226.json +0 -1
  30. package/.nyc_output/5a0d1463-368f-4136-8a80-4c7fda7ca33b.json +0 -1
  31. package/.nyc_output/65e3530f-ee58-4bcb-8484-70eb1822427e.json +0 -1
  32. package/.nyc_output/a37c9066-0aa4-4d91-a56b-17754005a42d.json +0 -1
  33. package/.nyc_output/b7eb272f-3bf3-48c4-9a42-90600332b363.json +0 -1
  34. package/.nyc_output/cabc6994-64f7-4258-bb45-9bb5529b388e.json +0 -1
  35. package/.nyc_output/processinfo/0abe3076-16a9-4975-87da-4ecfc24d9226.json +0 -1
  36. package/.nyc_output/processinfo/5a0d1463-368f-4136-8a80-4c7fda7ca33b.json +0 -1
  37. package/.nyc_output/processinfo/65e3530f-ee58-4bcb-8484-70eb1822427e.json +0 -1
  38. package/.nyc_output/processinfo/a37c9066-0aa4-4d91-a56b-17754005a42d.json +0 -1
  39. package/.nyc_output/processinfo/b7eb272f-3bf3-48c4-9a42-90600332b363.json +0 -1
  40. package/.nyc_output/processinfo/cabc6994-64f7-4258-bb45-9bb5529b388e.json +0 -1
  41. package/.nyc_output/processinfo/index.json +0 -1
  42. package/coverage/lcov-report/base.css +0 -224
  43. package/coverage/lcov-report/block-navigation.js +0 -79
  44. package/coverage/lcov-report/favicon.png +0 -0
  45. package/coverage/lcov-report/index.html +0 -156
  46. package/coverage/lcov-report/prettify.css +0 -1
  47. package/coverage/lcov-report/prettify.js +0 -2
  48. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  49. package/coverage/lcov-report/sorter.js +0 -170
  50. package/coverage/lcov-report/src/index.html +0 -126
  51. package/coverage/lcov-report/src/jsonLanguageService.ts.html +0 -383
  52. package/coverage/lcov-report/src/jsonLanguageTypes.ts.html +0 -968
  53. package/coverage/lcov-report/src/parser/index.html +0 -111
  54. package/coverage/lcov-report/src/parser/jsonParser.ts.html +0 -3860
  55. package/coverage/lcov-report/src/services/configuration.ts.html +0 -1679
  56. package/coverage/lcov-report/src/services/index.html +0 -216
  57. package/coverage/lcov-report/src/services/jsonCompletion.ts.html +0 -2843
  58. package/coverage/lcov-report/src/services/jsonDocumentSymbols.ts.html +0 -911
  59. package/coverage/lcov-report/src/services/jsonFolding.ts.html +0 -455
  60. package/coverage/lcov-report/src/services/jsonHover.ts.html +0 -461
  61. package/coverage/lcov-report/src/services/jsonSchemaService.ts.html +0 -1895
  62. package/coverage/lcov-report/src/services/jsonSelectionRanges.ts.html +0 -311
  63. package/coverage/lcov-report/src/services/jsonValidation.ts.html +0 -560
  64. package/coverage/lcov-report/src/utils/colors.ts.html +0 -299
  65. package/coverage/lcov-report/src/utils/index.html +0 -156
  66. package/coverage/lcov-report/src/utils/json.ts.html +0 -206
  67. package/coverage/lcov-report/src/utils/objects.ts.html +0 -296
  68. package/coverage/lcov-report/src/utils/strings.ts.html +0 -224
  69. package/coverage/lcov.info +0 -4219
@@ -1,2843 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/services/jsonCompletion.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/services</a> jsonCompletion.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">84.57% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>433/512</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">77.5% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>341/440</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">81.54% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>53/65</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">84.23% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>406/482</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
- </div>
58
- <div class='status-line high'></div>
59
- <pre><table class="coverage">
60
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
- <a name='L2'></a><a href='#L2'>2</a>
62
- <a name='L3'></a><a href='#L3'>3</a>
63
- <a name='L4'></a><a href='#L4'>4</a>
64
- <a name='L5'></a><a href='#L5'>5</a>
65
- <a name='L6'></a><a href='#L6'>6</a>
66
- <a name='L7'></a><a href='#L7'>7</a>
67
- <a name='L8'></a><a href='#L8'>8</a>
68
- <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a>
70
- <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a>
72
- <a name='L13'></a><a href='#L13'>13</a>
73
- <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a>
75
- <a name='L16'></a><a href='#L16'>16</a>
76
- <a name='L17'></a><a href='#L17'>17</a>
77
- <a name='L18'></a><a href='#L18'>18</a>
78
- <a name='L19'></a><a href='#L19'>19</a>
79
- <a name='L20'></a><a href='#L20'>20</a>
80
- <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a>
83
- <a name='L24'></a><a href='#L24'>24</a>
84
- <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a>
86
- <a name='L27'></a><a href='#L27'>27</a>
87
- <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a>
89
- <a name='L30'></a><a href='#L30'>30</a>
90
- <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a>
92
- <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a>
96
- <a name='L37'></a><a href='#L37'>37</a>
97
- <a name='L38'></a><a href='#L38'>38</a>
98
- <a name='L39'></a><a href='#L39'>39</a>
99
- <a name='L40'></a><a href='#L40'>40</a>
100
- <a name='L41'></a><a href='#L41'>41</a>
101
- <a name='L42'></a><a href='#L42'>42</a>
102
- <a name='L43'></a><a href='#L43'>43</a>
103
- <a name='L44'></a><a href='#L44'>44</a>
104
- <a name='L45'></a><a href='#L45'>45</a>
105
- <a name='L46'></a><a href='#L46'>46</a>
106
- <a name='L47'></a><a href='#L47'>47</a>
107
- <a name='L48'></a><a href='#L48'>48</a>
108
- <a name='L49'></a><a href='#L49'>49</a>
109
- <a name='L50'></a><a href='#L50'>50</a>
110
- <a name='L51'></a><a href='#L51'>51</a>
111
- <a name='L52'></a><a href='#L52'>52</a>
112
- <a name='L53'></a><a href='#L53'>53</a>
113
- <a name='L54'></a><a href='#L54'>54</a>
114
- <a name='L55'></a><a href='#L55'>55</a>
115
- <a name='L56'></a><a href='#L56'>56</a>
116
- <a name='L57'></a><a href='#L57'>57</a>
117
- <a name='L58'></a><a href='#L58'>58</a>
118
- <a name='L59'></a><a href='#L59'>59</a>
119
- <a name='L60'></a><a href='#L60'>60</a>
120
- <a name='L61'></a><a href='#L61'>61</a>
121
- <a name='L62'></a><a href='#L62'>62</a>
122
- <a name='L63'></a><a href='#L63'>63</a>
123
- <a name='L64'></a><a href='#L64'>64</a>
124
- <a name='L65'></a><a href='#L65'>65</a>
125
- <a name='L66'></a><a href='#L66'>66</a>
126
- <a name='L67'></a><a href='#L67'>67</a>
127
- <a name='L68'></a><a href='#L68'>68</a>
128
- <a name='L69'></a><a href='#L69'>69</a>
129
- <a name='L70'></a><a href='#L70'>70</a>
130
- <a name='L71'></a><a href='#L71'>71</a>
131
- <a name='L72'></a><a href='#L72'>72</a>
132
- <a name='L73'></a><a href='#L73'>73</a>
133
- <a name='L74'></a><a href='#L74'>74</a>
134
- <a name='L75'></a><a href='#L75'>75</a>
135
- <a name='L76'></a><a href='#L76'>76</a>
136
- <a name='L77'></a><a href='#L77'>77</a>
137
- <a name='L78'></a><a href='#L78'>78</a>
138
- <a name='L79'></a><a href='#L79'>79</a>
139
- <a name='L80'></a><a href='#L80'>80</a>
140
- <a name='L81'></a><a href='#L81'>81</a>
141
- <a name='L82'></a><a href='#L82'>82</a>
142
- <a name='L83'></a><a href='#L83'>83</a>
143
- <a name='L84'></a><a href='#L84'>84</a>
144
- <a name='L85'></a><a href='#L85'>85</a>
145
- <a name='L86'></a><a href='#L86'>86</a>
146
- <a name='L87'></a><a href='#L87'>87</a>
147
- <a name='L88'></a><a href='#L88'>88</a>
148
- <a name='L89'></a><a href='#L89'>89</a>
149
- <a name='L90'></a><a href='#L90'>90</a>
150
- <a name='L91'></a><a href='#L91'>91</a>
151
- <a name='L92'></a><a href='#L92'>92</a>
152
- <a name='L93'></a><a href='#L93'>93</a>
153
- <a name='L94'></a><a href='#L94'>94</a>
154
- <a name='L95'></a><a href='#L95'>95</a>
155
- <a name='L96'></a><a href='#L96'>96</a>
156
- <a name='L97'></a><a href='#L97'>97</a>
157
- <a name='L98'></a><a href='#L98'>98</a>
158
- <a name='L99'></a><a href='#L99'>99</a>
159
- <a name='L100'></a><a href='#L100'>100</a>
160
- <a name='L101'></a><a href='#L101'>101</a>
161
- <a name='L102'></a><a href='#L102'>102</a>
162
- <a name='L103'></a><a href='#L103'>103</a>
163
- <a name='L104'></a><a href='#L104'>104</a>
164
- <a name='L105'></a><a href='#L105'>105</a>
165
- <a name='L106'></a><a href='#L106'>106</a>
166
- <a name='L107'></a><a href='#L107'>107</a>
167
- <a name='L108'></a><a href='#L108'>108</a>
168
- <a name='L109'></a><a href='#L109'>109</a>
169
- <a name='L110'></a><a href='#L110'>110</a>
170
- <a name='L111'></a><a href='#L111'>111</a>
171
- <a name='L112'></a><a href='#L112'>112</a>
172
- <a name='L113'></a><a href='#L113'>113</a>
173
- <a name='L114'></a><a href='#L114'>114</a>
174
- <a name='L115'></a><a href='#L115'>115</a>
175
- <a name='L116'></a><a href='#L116'>116</a>
176
- <a name='L117'></a><a href='#L117'>117</a>
177
- <a name='L118'></a><a href='#L118'>118</a>
178
- <a name='L119'></a><a href='#L119'>119</a>
179
- <a name='L120'></a><a href='#L120'>120</a>
180
- <a name='L121'></a><a href='#L121'>121</a>
181
- <a name='L122'></a><a href='#L122'>122</a>
182
- <a name='L123'></a><a href='#L123'>123</a>
183
- <a name='L124'></a><a href='#L124'>124</a>
184
- <a name='L125'></a><a href='#L125'>125</a>
185
- <a name='L126'></a><a href='#L126'>126</a>
186
- <a name='L127'></a><a href='#L127'>127</a>
187
- <a name='L128'></a><a href='#L128'>128</a>
188
- <a name='L129'></a><a href='#L129'>129</a>
189
- <a name='L130'></a><a href='#L130'>130</a>
190
- <a name='L131'></a><a href='#L131'>131</a>
191
- <a name='L132'></a><a href='#L132'>132</a>
192
- <a name='L133'></a><a href='#L133'>133</a>
193
- <a name='L134'></a><a href='#L134'>134</a>
194
- <a name='L135'></a><a href='#L135'>135</a>
195
- <a name='L136'></a><a href='#L136'>136</a>
196
- <a name='L137'></a><a href='#L137'>137</a>
197
- <a name='L138'></a><a href='#L138'>138</a>
198
- <a name='L139'></a><a href='#L139'>139</a>
199
- <a name='L140'></a><a href='#L140'>140</a>
200
- <a name='L141'></a><a href='#L141'>141</a>
201
- <a name='L142'></a><a href='#L142'>142</a>
202
- <a name='L143'></a><a href='#L143'>143</a>
203
- <a name='L144'></a><a href='#L144'>144</a>
204
- <a name='L145'></a><a href='#L145'>145</a>
205
- <a name='L146'></a><a href='#L146'>146</a>
206
- <a name='L147'></a><a href='#L147'>147</a>
207
- <a name='L148'></a><a href='#L148'>148</a>
208
- <a name='L149'></a><a href='#L149'>149</a>
209
- <a name='L150'></a><a href='#L150'>150</a>
210
- <a name='L151'></a><a href='#L151'>151</a>
211
- <a name='L152'></a><a href='#L152'>152</a>
212
- <a name='L153'></a><a href='#L153'>153</a>
213
- <a name='L154'></a><a href='#L154'>154</a>
214
- <a name='L155'></a><a href='#L155'>155</a>
215
- <a name='L156'></a><a href='#L156'>156</a>
216
- <a name='L157'></a><a href='#L157'>157</a>
217
- <a name='L158'></a><a href='#L158'>158</a>
218
- <a name='L159'></a><a href='#L159'>159</a>
219
- <a name='L160'></a><a href='#L160'>160</a>
220
- <a name='L161'></a><a href='#L161'>161</a>
221
- <a name='L162'></a><a href='#L162'>162</a>
222
- <a name='L163'></a><a href='#L163'>163</a>
223
- <a name='L164'></a><a href='#L164'>164</a>
224
- <a name='L165'></a><a href='#L165'>165</a>
225
- <a name='L166'></a><a href='#L166'>166</a>
226
- <a name='L167'></a><a href='#L167'>167</a>
227
- <a name='L168'></a><a href='#L168'>168</a>
228
- <a name='L169'></a><a href='#L169'>169</a>
229
- <a name='L170'></a><a href='#L170'>170</a>
230
- <a name='L171'></a><a href='#L171'>171</a>
231
- <a name='L172'></a><a href='#L172'>172</a>
232
- <a name='L173'></a><a href='#L173'>173</a>
233
- <a name='L174'></a><a href='#L174'>174</a>
234
- <a name='L175'></a><a href='#L175'>175</a>
235
- <a name='L176'></a><a href='#L176'>176</a>
236
- <a name='L177'></a><a href='#L177'>177</a>
237
- <a name='L178'></a><a href='#L178'>178</a>
238
- <a name='L179'></a><a href='#L179'>179</a>
239
- <a name='L180'></a><a href='#L180'>180</a>
240
- <a name='L181'></a><a href='#L181'>181</a>
241
- <a name='L182'></a><a href='#L182'>182</a>
242
- <a name='L183'></a><a href='#L183'>183</a>
243
- <a name='L184'></a><a href='#L184'>184</a>
244
- <a name='L185'></a><a href='#L185'>185</a>
245
- <a name='L186'></a><a href='#L186'>186</a>
246
- <a name='L187'></a><a href='#L187'>187</a>
247
- <a name='L188'></a><a href='#L188'>188</a>
248
- <a name='L189'></a><a href='#L189'>189</a>
249
- <a name='L190'></a><a href='#L190'>190</a>
250
- <a name='L191'></a><a href='#L191'>191</a>
251
- <a name='L192'></a><a href='#L192'>192</a>
252
- <a name='L193'></a><a href='#L193'>193</a>
253
- <a name='L194'></a><a href='#L194'>194</a>
254
- <a name='L195'></a><a href='#L195'>195</a>
255
- <a name='L196'></a><a href='#L196'>196</a>
256
- <a name='L197'></a><a href='#L197'>197</a>
257
- <a name='L198'></a><a href='#L198'>198</a>
258
- <a name='L199'></a><a href='#L199'>199</a>
259
- <a name='L200'></a><a href='#L200'>200</a>
260
- <a name='L201'></a><a href='#L201'>201</a>
261
- <a name='L202'></a><a href='#L202'>202</a>
262
- <a name='L203'></a><a href='#L203'>203</a>
263
- <a name='L204'></a><a href='#L204'>204</a>
264
- <a name='L205'></a><a href='#L205'>205</a>
265
- <a name='L206'></a><a href='#L206'>206</a>
266
- <a name='L207'></a><a href='#L207'>207</a>
267
- <a name='L208'></a><a href='#L208'>208</a>
268
- <a name='L209'></a><a href='#L209'>209</a>
269
- <a name='L210'></a><a href='#L210'>210</a>
270
- <a name='L211'></a><a href='#L211'>211</a>
271
- <a name='L212'></a><a href='#L212'>212</a>
272
- <a name='L213'></a><a href='#L213'>213</a>
273
- <a name='L214'></a><a href='#L214'>214</a>
274
- <a name='L215'></a><a href='#L215'>215</a>
275
- <a name='L216'></a><a href='#L216'>216</a>
276
- <a name='L217'></a><a href='#L217'>217</a>
277
- <a name='L218'></a><a href='#L218'>218</a>
278
- <a name='L219'></a><a href='#L219'>219</a>
279
- <a name='L220'></a><a href='#L220'>220</a>
280
- <a name='L221'></a><a href='#L221'>221</a>
281
- <a name='L222'></a><a href='#L222'>222</a>
282
- <a name='L223'></a><a href='#L223'>223</a>
283
- <a name='L224'></a><a href='#L224'>224</a>
284
- <a name='L225'></a><a href='#L225'>225</a>
285
- <a name='L226'></a><a href='#L226'>226</a>
286
- <a name='L227'></a><a href='#L227'>227</a>
287
- <a name='L228'></a><a href='#L228'>228</a>
288
- <a name='L229'></a><a href='#L229'>229</a>
289
- <a name='L230'></a><a href='#L230'>230</a>
290
- <a name='L231'></a><a href='#L231'>231</a>
291
- <a name='L232'></a><a href='#L232'>232</a>
292
- <a name='L233'></a><a href='#L233'>233</a>
293
- <a name='L234'></a><a href='#L234'>234</a>
294
- <a name='L235'></a><a href='#L235'>235</a>
295
- <a name='L236'></a><a href='#L236'>236</a>
296
- <a name='L237'></a><a href='#L237'>237</a>
297
- <a name='L238'></a><a href='#L238'>238</a>
298
- <a name='L239'></a><a href='#L239'>239</a>
299
- <a name='L240'></a><a href='#L240'>240</a>
300
- <a name='L241'></a><a href='#L241'>241</a>
301
- <a name='L242'></a><a href='#L242'>242</a>
302
- <a name='L243'></a><a href='#L243'>243</a>
303
- <a name='L244'></a><a href='#L244'>244</a>
304
- <a name='L245'></a><a href='#L245'>245</a>
305
- <a name='L246'></a><a href='#L246'>246</a>
306
- <a name='L247'></a><a href='#L247'>247</a>
307
- <a name='L248'></a><a href='#L248'>248</a>
308
- <a name='L249'></a><a href='#L249'>249</a>
309
- <a name='L250'></a><a href='#L250'>250</a>
310
- <a name='L251'></a><a href='#L251'>251</a>
311
- <a name='L252'></a><a href='#L252'>252</a>
312
- <a name='L253'></a><a href='#L253'>253</a>
313
- <a name='L254'></a><a href='#L254'>254</a>
314
- <a name='L255'></a><a href='#L255'>255</a>
315
- <a name='L256'></a><a href='#L256'>256</a>
316
- <a name='L257'></a><a href='#L257'>257</a>
317
- <a name='L258'></a><a href='#L258'>258</a>
318
- <a name='L259'></a><a href='#L259'>259</a>
319
- <a name='L260'></a><a href='#L260'>260</a>
320
- <a name='L261'></a><a href='#L261'>261</a>
321
- <a name='L262'></a><a href='#L262'>262</a>
322
- <a name='L263'></a><a href='#L263'>263</a>
323
- <a name='L264'></a><a href='#L264'>264</a>
324
- <a name='L265'></a><a href='#L265'>265</a>
325
- <a name='L266'></a><a href='#L266'>266</a>
326
- <a name='L267'></a><a href='#L267'>267</a>
327
- <a name='L268'></a><a href='#L268'>268</a>
328
- <a name='L269'></a><a href='#L269'>269</a>
329
- <a name='L270'></a><a href='#L270'>270</a>
330
- <a name='L271'></a><a href='#L271'>271</a>
331
- <a name='L272'></a><a href='#L272'>272</a>
332
- <a name='L273'></a><a href='#L273'>273</a>
333
- <a name='L274'></a><a href='#L274'>274</a>
334
- <a name='L275'></a><a href='#L275'>275</a>
335
- <a name='L276'></a><a href='#L276'>276</a>
336
- <a name='L277'></a><a href='#L277'>277</a>
337
- <a name='L278'></a><a href='#L278'>278</a>
338
- <a name='L279'></a><a href='#L279'>279</a>
339
- <a name='L280'></a><a href='#L280'>280</a>
340
- <a name='L281'></a><a href='#L281'>281</a>
341
- <a name='L282'></a><a href='#L282'>282</a>
342
- <a name='L283'></a><a href='#L283'>283</a>
343
- <a name='L284'></a><a href='#L284'>284</a>
344
- <a name='L285'></a><a href='#L285'>285</a>
345
- <a name='L286'></a><a href='#L286'>286</a>
346
- <a name='L287'></a><a href='#L287'>287</a>
347
- <a name='L288'></a><a href='#L288'>288</a>
348
- <a name='L289'></a><a href='#L289'>289</a>
349
- <a name='L290'></a><a href='#L290'>290</a>
350
- <a name='L291'></a><a href='#L291'>291</a>
351
- <a name='L292'></a><a href='#L292'>292</a>
352
- <a name='L293'></a><a href='#L293'>293</a>
353
- <a name='L294'></a><a href='#L294'>294</a>
354
- <a name='L295'></a><a href='#L295'>295</a>
355
- <a name='L296'></a><a href='#L296'>296</a>
356
- <a name='L297'></a><a href='#L297'>297</a>
357
- <a name='L298'></a><a href='#L298'>298</a>
358
- <a name='L299'></a><a href='#L299'>299</a>
359
- <a name='L300'></a><a href='#L300'>300</a>
360
- <a name='L301'></a><a href='#L301'>301</a>
361
- <a name='L302'></a><a href='#L302'>302</a>
362
- <a name='L303'></a><a href='#L303'>303</a>
363
- <a name='L304'></a><a href='#L304'>304</a>
364
- <a name='L305'></a><a href='#L305'>305</a>
365
- <a name='L306'></a><a href='#L306'>306</a>
366
- <a name='L307'></a><a href='#L307'>307</a>
367
- <a name='L308'></a><a href='#L308'>308</a>
368
- <a name='L309'></a><a href='#L309'>309</a>
369
- <a name='L310'></a><a href='#L310'>310</a>
370
- <a name='L311'></a><a href='#L311'>311</a>
371
- <a name='L312'></a><a href='#L312'>312</a>
372
- <a name='L313'></a><a href='#L313'>313</a>
373
- <a name='L314'></a><a href='#L314'>314</a>
374
- <a name='L315'></a><a href='#L315'>315</a>
375
- <a name='L316'></a><a href='#L316'>316</a>
376
- <a name='L317'></a><a href='#L317'>317</a>
377
- <a name='L318'></a><a href='#L318'>318</a>
378
- <a name='L319'></a><a href='#L319'>319</a>
379
- <a name='L320'></a><a href='#L320'>320</a>
380
- <a name='L321'></a><a href='#L321'>321</a>
381
- <a name='L322'></a><a href='#L322'>322</a>
382
- <a name='L323'></a><a href='#L323'>323</a>
383
- <a name='L324'></a><a href='#L324'>324</a>
384
- <a name='L325'></a><a href='#L325'>325</a>
385
- <a name='L326'></a><a href='#L326'>326</a>
386
- <a name='L327'></a><a href='#L327'>327</a>
387
- <a name='L328'></a><a href='#L328'>328</a>
388
- <a name='L329'></a><a href='#L329'>329</a>
389
- <a name='L330'></a><a href='#L330'>330</a>
390
- <a name='L331'></a><a href='#L331'>331</a>
391
- <a name='L332'></a><a href='#L332'>332</a>
392
- <a name='L333'></a><a href='#L333'>333</a>
393
- <a name='L334'></a><a href='#L334'>334</a>
394
- <a name='L335'></a><a href='#L335'>335</a>
395
- <a name='L336'></a><a href='#L336'>336</a>
396
- <a name='L337'></a><a href='#L337'>337</a>
397
- <a name='L338'></a><a href='#L338'>338</a>
398
- <a name='L339'></a><a href='#L339'>339</a>
399
- <a name='L340'></a><a href='#L340'>340</a>
400
- <a name='L341'></a><a href='#L341'>341</a>
401
- <a name='L342'></a><a href='#L342'>342</a>
402
- <a name='L343'></a><a href='#L343'>343</a>
403
- <a name='L344'></a><a href='#L344'>344</a>
404
- <a name='L345'></a><a href='#L345'>345</a>
405
- <a name='L346'></a><a href='#L346'>346</a>
406
- <a name='L347'></a><a href='#L347'>347</a>
407
- <a name='L348'></a><a href='#L348'>348</a>
408
- <a name='L349'></a><a href='#L349'>349</a>
409
- <a name='L350'></a><a href='#L350'>350</a>
410
- <a name='L351'></a><a href='#L351'>351</a>
411
- <a name='L352'></a><a href='#L352'>352</a>
412
- <a name='L353'></a><a href='#L353'>353</a>
413
- <a name='L354'></a><a href='#L354'>354</a>
414
- <a name='L355'></a><a href='#L355'>355</a>
415
- <a name='L356'></a><a href='#L356'>356</a>
416
- <a name='L357'></a><a href='#L357'>357</a>
417
- <a name='L358'></a><a href='#L358'>358</a>
418
- <a name='L359'></a><a href='#L359'>359</a>
419
- <a name='L360'></a><a href='#L360'>360</a>
420
- <a name='L361'></a><a href='#L361'>361</a>
421
- <a name='L362'></a><a href='#L362'>362</a>
422
- <a name='L363'></a><a href='#L363'>363</a>
423
- <a name='L364'></a><a href='#L364'>364</a>
424
- <a name='L365'></a><a href='#L365'>365</a>
425
- <a name='L366'></a><a href='#L366'>366</a>
426
- <a name='L367'></a><a href='#L367'>367</a>
427
- <a name='L368'></a><a href='#L368'>368</a>
428
- <a name='L369'></a><a href='#L369'>369</a>
429
- <a name='L370'></a><a href='#L370'>370</a>
430
- <a name='L371'></a><a href='#L371'>371</a>
431
- <a name='L372'></a><a href='#L372'>372</a>
432
- <a name='L373'></a><a href='#L373'>373</a>
433
- <a name='L374'></a><a href='#L374'>374</a>
434
- <a name='L375'></a><a href='#L375'>375</a>
435
- <a name='L376'></a><a href='#L376'>376</a>
436
- <a name='L377'></a><a href='#L377'>377</a>
437
- <a name='L378'></a><a href='#L378'>378</a>
438
- <a name='L379'></a><a href='#L379'>379</a>
439
- <a name='L380'></a><a href='#L380'>380</a>
440
- <a name='L381'></a><a href='#L381'>381</a>
441
- <a name='L382'></a><a href='#L382'>382</a>
442
- <a name='L383'></a><a href='#L383'>383</a>
443
- <a name='L384'></a><a href='#L384'>384</a>
444
- <a name='L385'></a><a href='#L385'>385</a>
445
- <a name='L386'></a><a href='#L386'>386</a>
446
- <a name='L387'></a><a href='#L387'>387</a>
447
- <a name='L388'></a><a href='#L388'>388</a>
448
- <a name='L389'></a><a href='#L389'>389</a>
449
- <a name='L390'></a><a href='#L390'>390</a>
450
- <a name='L391'></a><a href='#L391'>391</a>
451
- <a name='L392'></a><a href='#L392'>392</a>
452
- <a name='L393'></a><a href='#L393'>393</a>
453
- <a name='L394'></a><a href='#L394'>394</a>
454
- <a name='L395'></a><a href='#L395'>395</a>
455
- <a name='L396'></a><a href='#L396'>396</a>
456
- <a name='L397'></a><a href='#L397'>397</a>
457
- <a name='L398'></a><a href='#L398'>398</a>
458
- <a name='L399'></a><a href='#L399'>399</a>
459
- <a name='L400'></a><a href='#L400'>400</a>
460
- <a name='L401'></a><a href='#L401'>401</a>
461
- <a name='L402'></a><a href='#L402'>402</a>
462
- <a name='L403'></a><a href='#L403'>403</a>
463
- <a name='L404'></a><a href='#L404'>404</a>
464
- <a name='L405'></a><a href='#L405'>405</a>
465
- <a name='L406'></a><a href='#L406'>406</a>
466
- <a name='L407'></a><a href='#L407'>407</a>
467
- <a name='L408'></a><a href='#L408'>408</a>
468
- <a name='L409'></a><a href='#L409'>409</a>
469
- <a name='L410'></a><a href='#L410'>410</a>
470
- <a name='L411'></a><a href='#L411'>411</a>
471
- <a name='L412'></a><a href='#L412'>412</a>
472
- <a name='L413'></a><a href='#L413'>413</a>
473
- <a name='L414'></a><a href='#L414'>414</a>
474
- <a name='L415'></a><a href='#L415'>415</a>
475
- <a name='L416'></a><a href='#L416'>416</a>
476
- <a name='L417'></a><a href='#L417'>417</a>
477
- <a name='L418'></a><a href='#L418'>418</a>
478
- <a name='L419'></a><a href='#L419'>419</a>
479
- <a name='L420'></a><a href='#L420'>420</a>
480
- <a name='L421'></a><a href='#L421'>421</a>
481
- <a name='L422'></a><a href='#L422'>422</a>
482
- <a name='L423'></a><a href='#L423'>423</a>
483
- <a name='L424'></a><a href='#L424'>424</a>
484
- <a name='L425'></a><a href='#L425'>425</a>
485
- <a name='L426'></a><a href='#L426'>426</a>
486
- <a name='L427'></a><a href='#L427'>427</a>
487
- <a name='L428'></a><a href='#L428'>428</a>
488
- <a name='L429'></a><a href='#L429'>429</a>
489
- <a name='L430'></a><a href='#L430'>430</a>
490
- <a name='L431'></a><a href='#L431'>431</a>
491
- <a name='L432'></a><a href='#L432'>432</a>
492
- <a name='L433'></a><a href='#L433'>433</a>
493
- <a name='L434'></a><a href='#L434'>434</a>
494
- <a name='L435'></a><a href='#L435'>435</a>
495
- <a name='L436'></a><a href='#L436'>436</a>
496
- <a name='L437'></a><a href='#L437'>437</a>
497
- <a name='L438'></a><a href='#L438'>438</a>
498
- <a name='L439'></a><a href='#L439'>439</a>
499
- <a name='L440'></a><a href='#L440'>440</a>
500
- <a name='L441'></a><a href='#L441'>441</a>
501
- <a name='L442'></a><a href='#L442'>442</a>
502
- <a name='L443'></a><a href='#L443'>443</a>
503
- <a name='L444'></a><a href='#L444'>444</a>
504
- <a name='L445'></a><a href='#L445'>445</a>
505
- <a name='L446'></a><a href='#L446'>446</a>
506
- <a name='L447'></a><a href='#L447'>447</a>
507
- <a name='L448'></a><a href='#L448'>448</a>
508
- <a name='L449'></a><a href='#L449'>449</a>
509
- <a name='L450'></a><a href='#L450'>450</a>
510
- <a name='L451'></a><a href='#L451'>451</a>
511
- <a name='L452'></a><a href='#L452'>452</a>
512
- <a name='L453'></a><a href='#L453'>453</a>
513
- <a name='L454'></a><a href='#L454'>454</a>
514
- <a name='L455'></a><a href='#L455'>455</a>
515
- <a name='L456'></a><a href='#L456'>456</a>
516
- <a name='L457'></a><a href='#L457'>457</a>
517
- <a name='L458'></a><a href='#L458'>458</a>
518
- <a name='L459'></a><a href='#L459'>459</a>
519
- <a name='L460'></a><a href='#L460'>460</a>
520
- <a name='L461'></a><a href='#L461'>461</a>
521
- <a name='L462'></a><a href='#L462'>462</a>
522
- <a name='L463'></a><a href='#L463'>463</a>
523
- <a name='L464'></a><a href='#L464'>464</a>
524
- <a name='L465'></a><a href='#L465'>465</a>
525
- <a name='L466'></a><a href='#L466'>466</a>
526
- <a name='L467'></a><a href='#L467'>467</a>
527
- <a name='L468'></a><a href='#L468'>468</a>
528
- <a name='L469'></a><a href='#L469'>469</a>
529
- <a name='L470'></a><a href='#L470'>470</a>
530
- <a name='L471'></a><a href='#L471'>471</a>
531
- <a name='L472'></a><a href='#L472'>472</a>
532
- <a name='L473'></a><a href='#L473'>473</a>
533
- <a name='L474'></a><a href='#L474'>474</a>
534
- <a name='L475'></a><a href='#L475'>475</a>
535
- <a name='L476'></a><a href='#L476'>476</a>
536
- <a name='L477'></a><a href='#L477'>477</a>
537
- <a name='L478'></a><a href='#L478'>478</a>
538
- <a name='L479'></a><a href='#L479'>479</a>
539
- <a name='L480'></a><a href='#L480'>480</a>
540
- <a name='L481'></a><a href='#L481'>481</a>
541
- <a name='L482'></a><a href='#L482'>482</a>
542
- <a name='L483'></a><a href='#L483'>483</a>
543
- <a name='L484'></a><a href='#L484'>484</a>
544
- <a name='L485'></a><a href='#L485'>485</a>
545
- <a name='L486'></a><a href='#L486'>486</a>
546
- <a name='L487'></a><a href='#L487'>487</a>
547
- <a name='L488'></a><a href='#L488'>488</a>
548
- <a name='L489'></a><a href='#L489'>489</a>
549
- <a name='L490'></a><a href='#L490'>490</a>
550
- <a name='L491'></a><a href='#L491'>491</a>
551
- <a name='L492'></a><a href='#L492'>492</a>
552
- <a name='L493'></a><a href='#L493'>493</a>
553
- <a name='L494'></a><a href='#L494'>494</a>
554
- <a name='L495'></a><a href='#L495'>495</a>
555
- <a name='L496'></a><a href='#L496'>496</a>
556
- <a name='L497'></a><a href='#L497'>497</a>
557
- <a name='L498'></a><a href='#L498'>498</a>
558
- <a name='L499'></a><a href='#L499'>499</a>
559
- <a name='L500'></a><a href='#L500'>500</a>
560
- <a name='L501'></a><a href='#L501'>501</a>
561
- <a name='L502'></a><a href='#L502'>502</a>
562
- <a name='L503'></a><a href='#L503'>503</a>
563
- <a name='L504'></a><a href='#L504'>504</a>
564
- <a name='L505'></a><a href='#L505'>505</a>
565
- <a name='L506'></a><a href='#L506'>506</a>
566
- <a name='L507'></a><a href='#L507'>507</a>
567
- <a name='L508'></a><a href='#L508'>508</a>
568
- <a name='L509'></a><a href='#L509'>509</a>
569
- <a name='L510'></a><a href='#L510'>510</a>
570
- <a name='L511'></a><a href='#L511'>511</a>
571
- <a name='L512'></a><a href='#L512'>512</a>
572
- <a name='L513'></a><a href='#L513'>513</a>
573
- <a name='L514'></a><a href='#L514'>514</a>
574
- <a name='L515'></a><a href='#L515'>515</a>
575
- <a name='L516'></a><a href='#L516'>516</a>
576
- <a name='L517'></a><a href='#L517'>517</a>
577
- <a name='L518'></a><a href='#L518'>518</a>
578
- <a name='L519'></a><a href='#L519'>519</a>
579
- <a name='L520'></a><a href='#L520'>520</a>
580
- <a name='L521'></a><a href='#L521'>521</a>
581
- <a name='L522'></a><a href='#L522'>522</a>
582
- <a name='L523'></a><a href='#L523'>523</a>
583
- <a name='L524'></a><a href='#L524'>524</a>
584
- <a name='L525'></a><a href='#L525'>525</a>
585
- <a name='L526'></a><a href='#L526'>526</a>
586
- <a name='L527'></a><a href='#L527'>527</a>
587
- <a name='L528'></a><a href='#L528'>528</a>
588
- <a name='L529'></a><a href='#L529'>529</a>
589
- <a name='L530'></a><a href='#L530'>530</a>
590
- <a name='L531'></a><a href='#L531'>531</a>
591
- <a name='L532'></a><a href='#L532'>532</a>
592
- <a name='L533'></a><a href='#L533'>533</a>
593
- <a name='L534'></a><a href='#L534'>534</a>
594
- <a name='L535'></a><a href='#L535'>535</a>
595
- <a name='L536'></a><a href='#L536'>536</a>
596
- <a name='L537'></a><a href='#L537'>537</a>
597
- <a name='L538'></a><a href='#L538'>538</a>
598
- <a name='L539'></a><a href='#L539'>539</a>
599
- <a name='L540'></a><a href='#L540'>540</a>
600
- <a name='L541'></a><a href='#L541'>541</a>
601
- <a name='L542'></a><a href='#L542'>542</a>
602
- <a name='L543'></a><a href='#L543'>543</a>
603
- <a name='L544'></a><a href='#L544'>544</a>
604
- <a name='L545'></a><a href='#L545'>545</a>
605
- <a name='L546'></a><a href='#L546'>546</a>
606
- <a name='L547'></a><a href='#L547'>547</a>
607
- <a name='L548'></a><a href='#L548'>548</a>
608
- <a name='L549'></a><a href='#L549'>549</a>
609
- <a name='L550'></a><a href='#L550'>550</a>
610
- <a name='L551'></a><a href='#L551'>551</a>
611
- <a name='L552'></a><a href='#L552'>552</a>
612
- <a name='L553'></a><a href='#L553'>553</a>
613
- <a name='L554'></a><a href='#L554'>554</a>
614
- <a name='L555'></a><a href='#L555'>555</a>
615
- <a name='L556'></a><a href='#L556'>556</a>
616
- <a name='L557'></a><a href='#L557'>557</a>
617
- <a name='L558'></a><a href='#L558'>558</a>
618
- <a name='L559'></a><a href='#L559'>559</a>
619
- <a name='L560'></a><a href='#L560'>560</a>
620
- <a name='L561'></a><a href='#L561'>561</a>
621
- <a name='L562'></a><a href='#L562'>562</a>
622
- <a name='L563'></a><a href='#L563'>563</a>
623
- <a name='L564'></a><a href='#L564'>564</a>
624
- <a name='L565'></a><a href='#L565'>565</a>
625
- <a name='L566'></a><a href='#L566'>566</a>
626
- <a name='L567'></a><a href='#L567'>567</a>
627
- <a name='L568'></a><a href='#L568'>568</a>
628
- <a name='L569'></a><a href='#L569'>569</a>
629
- <a name='L570'></a><a href='#L570'>570</a>
630
- <a name='L571'></a><a href='#L571'>571</a>
631
- <a name='L572'></a><a href='#L572'>572</a>
632
- <a name='L573'></a><a href='#L573'>573</a>
633
- <a name='L574'></a><a href='#L574'>574</a>
634
- <a name='L575'></a><a href='#L575'>575</a>
635
- <a name='L576'></a><a href='#L576'>576</a>
636
- <a name='L577'></a><a href='#L577'>577</a>
637
- <a name='L578'></a><a href='#L578'>578</a>
638
- <a name='L579'></a><a href='#L579'>579</a>
639
- <a name='L580'></a><a href='#L580'>580</a>
640
- <a name='L581'></a><a href='#L581'>581</a>
641
- <a name='L582'></a><a href='#L582'>582</a>
642
- <a name='L583'></a><a href='#L583'>583</a>
643
- <a name='L584'></a><a href='#L584'>584</a>
644
- <a name='L585'></a><a href='#L585'>585</a>
645
- <a name='L586'></a><a href='#L586'>586</a>
646
- <a name='L587'></a><a href='#L587'>587</a>
647
- <a name='L588'></a><a href='#L588'>588</a>
648
- <a name='L589'></a><a href='#L589'>589</a>
649
- <a name='L590'></a><a href='#L590'>590</a>
650
- <a name='L591'></a><a href='#L591'>591</a>
651
- <a name='L592'></a><a href='#L592'>592</a>
652
- <a name='L593'></a><a href='#L593'>593</a>
653
- <a name='L594'></a><a href='#L594'>594</a>
654
- <a name='L595'></a><a href='#L595'>595</a>
655
- <a name='L596'></a><a href='#L596'>596</a>
656
- <a name='L597'></a><a href='#L597'>597</a>
657
- <a name='L598'></a><a href='#L598'>598</a>
658
- <a name='L599'></a><a href='#L599'>599</a>
659
- <a name='L600'></a><a href='#L600'>600</a>
660
- <a name='L601'></a><a href='#L601'>601</a>
661
- <a name='L602'></a><a href='#L602'>602</a>
662
- <a name='L603'></a><a href='#L603'>603</a>
663
- <a name='L604'></a><a href='#L604'>604</a>
664
- <a name='L605'></a><a href='#L605'>605</a>
665
- <a name='L606'></a><a href='#L606'>606</a>
666
- <a name='L607'></a><a href='#L607'>607</a>
667
- <a name='L608'></a><a href='#L608'>608</a>
668
- <a name='L609'></a><a href='#L609'>609</a>
669
- <a name='L610'></a><a href='#L610'>610</a>
670
- <a name='L611'></a><a href='#L611'>611</a>
671
- <a name='L612'></a><a href='#L612'>612</a>
672
- <a name='L613'></a><a href='#L613'>613</a>
673
- <a name='L614'></a><a href='#L614'>614</a>
674
- <a name='L615'></a><a href='#L615'>615</a>
675
- <a name='L616'></a><a href='#L616'>616</a>
676
- <a name='L617'></a><a href='#L617'>617</a>
677
- <a name='L618'></a><a href='#L618'>618</a>
678
- <a name='L619'></a><a href='#L619'>619</a>
679
- <a name='L620'></a><a href='#L620'>620</a>
680
- <a name='L621'></a><a href='#L621'>621</a>
681
- <a name='L622'></a><a href='#L622'>622</a>
682
- <a name='L623'></a><a href='#L623'>623</a>
683
- <a name='L624'></a><a href='#L624'>624</a>
684
- <a name='L625'></a><a href='#L625'>625</a>
685
- <a name='L626'></a><a href='#L626'>626</a>
686
- <a name='L627'></a><a href='#L627'>627</a>
687
- <a name='L628'></a><a href='#L628'>628</a>
688
- <a name='L629'></a><a href='#L629'>629</a>
689
- <a name='L630'></a><a href='#L630'>630</a>
690
- <a name='L631'></a><a href='#L631'>631</a>
691
- <a name='L632'></a><a href='#L632'>632</a>
692
- <a name='L633'></a><a href='#L633'>633</a>
693
- <a name='L634'></a><a href='#L634'>634</a>
694
- <a name='L635'></a><a href='#L635'>635</a>
695
- <a name='L636'></a><a href='#L636'>636</a>
696
- <a name='L637'></a><a href='#L637'>637</a>
697
- <a name='L638'></a><a href='#L638'>638</a>
698
- <a name='L639'></a><a href='#L639'>639</a>
699
- <a name='L640'></a><a href='#L640'>640</a>
700
- <a name='L641'></a><a href='#L641'>641</a>
701
- <a name='L642'></a><a href='#L642'>642</a>
702
- <a name='L643'></a><a href='#L643'>643</a>
703
- <a name='L644'></a><a href='#L644'>644</a>
704
- <a name='L645'></a><a href='#L645'>645</a>
705
- <a name='L646'></a><a href='#L646'>646</a>
706
- <a name='L647'></a><a href='#L647'>647</a>
707
- <a name='L648'></a><a href='#L648'>648</a>
708
- <a name='L649'></a><a href='#L649'>649</a>
709
- <a name='L650'></a><a href='#L650'>650</a>
710
- <a name='L651'></a><a href='#L651'>651</a>
711
- <a name='L652'></a><a href='#L652'>652</a>
712
- <a name='L653'></a><a href='#L653'>653</a>
713
- <a name='L654'></a><a href='#L654'>654</a>
714
- <a name='L655'></a><a href='#L655'>655</a>
715
- <a name='L656'></a><a href='#L656'>656</a>
716
- <a name='L657'></a><a href='#L657'>657</a>
717
- <a name='L658'></a><a href='#L658'>658</a>
718
- <a name='L659'></a><a href='#L659'>659</a>
719
- <a name='L660'></a><a href='#L660'>660</a>
720
- <a name='L661'></a><a href='#L661'>661</a>
721
- <a name='L662'></a><a href='#L662'>662</a>
722
- <a name='L663'></a><a href='#L663'>663</a>
723
- <a name='L664'></a><a href='#L664'>664</a>
724
- <a name='L665'></a><a href='#L665'>665</a>
725
- <a name='L666'></a><a href='#L666'>666</a>
726
- <a name='L667'></a><a href='#L667'>667</a>
727
- <a name='L668'></a><a href='#L668'>668</a>
728
- <a name='L669'></a><a href='#L669'>669</a>
729
- <a name='L670'></a><a href='#L670'>670</a>
730
- <a name='L671'></a><a href='#L671'>671</a>
731
- <a name='L672'></a><a href='#L672'>672</a>
732
- <a name='L673'></a><a href='#L673'>673</a>
733
- <a name='L674'></a><a href='#L674'>674</a>
734
- <a name='L675'></a><a href='#L675'>675</a>
735
- <a name='L676'></a><a href='#L676'>676</a>
736
- <a name='L677'></a><a href='#L677'>677</a>
737
- <a name='L678'></a><a href='#L678'>678</a>
738
- <a name='L679'></a><a href='#L679'>679</a>
739
- <a name='L680'></a><a href='#L680'>680</a>
740
- <a name='L681'></a><a href='#L681'>681</a>
741
- <a name='L682'></a><a href='#L682'>682</a>
742
- <a name='L683'></a><a href='#L683'>683</a>
743
- <a name='L684'></a><a href='#L684'>684</a>
744
- <a name='L685'></a><a href='#L685'>685</a>
745
- <a name='L686'></a><a href='#L686'>686</a>
746
- <a name='L687'></a><a href='#L687'>687</a>
747
- <a name='L688'></a><a href='#L688'>688</a>
748
- <a name='L689'></a><a href='#L689'>689</a>
749
- <a name='L690'></a><a href='#L690'>690</a>
750
- <a name='L691'></a><a href='#L691'>691</a>
751
- <a name='L692'></a><a href='#L692'>692</a>
752
- <a name='L693'></a><a href='#L693'>693</a>
753
- <a name='L694'></a><a href='#L694'>694</a>
754
- <a name='L695'></a><a href='#L695'>695</a>
755
- <a name='L696'></a><a href='#L696'>696</a>
756
- <a name='L697'></a><a href='#L697'>697</a>
757
- <a name='L698'></a><a href='#L698'>698</a>
758
- <a name='L699'></a><a href='#L699'>699</a>
759
- <a name='L700'></a><a href='#L700'>700</a>
760
- <a name='L701'></a><a href='#L701'>701</a>
761
- <a name='L702'></a><a href='#L702'>702</a>
762
- <a name='L703'></a><a href='#L703'>703</a>
763
- <a name='L704'></a><a href='#L704'>704</a>
764
- <a name='L705'></a><a href='#L705'>705</a>
765
- <a name='L706'></a><a href='#L706'>706</a>
766
- <a name='L707'></a><a href='#L707'>707</a>
767
- <a name='L708'></a><a href='#L708'>708</a>
768
- <a name='L709'></a><a href='#L709'>709</a>
769
- <a name='L710'></a><a href='#L710'>710</a>
770
- <a name='L711'></a><a href='#L711'>711</a>
771
- <a name='L712'></a><a href='#L712'>712</a>
772
- <a name='L713'></a><a href='#L713'>713</a>
773
- <a name='L714'></a><a href='#L714'>714</a>
774
- <a name='L715'></a><a href='#L715'>715</a>
775
- <a name='L716'></a><a href='#L716'>716</a>
776
- <a name='L717'></a><a href='#L717'>717</a>
777
- <a name='L718'></a><a href='#L718'>718</a>
778
- <a name='L719'></a><a href='#L719'>719</a>
779
- <a name='L720'></a><a href='#L720'>720</a>
780
- <a name='L721'></a><a href='#L721'>721</a>
781
- <a name='L722'></a><a href='#L722'>722</a>
782
- <a name='L723'></a><a href='#L723'>723</a>
783
- <a name='L724'></a><a href='#L724'>724</a>
784
- <a name='L725'></a><a href='#L725'>725</a>
785
- <a name='L726'></a><a href='#L726'>726</a>
786
- <a name='L727'></a><a href='#L727'>727</a>
787
- <a name='L728'></a><a href='#L728'>728</a>
788
- <a name='L729'></a><a href='#L729'>729</a>
789
- <a name='L730'></a><a href='#L730'>730</a>
790
- <a name='L731'></a><a href='#L731'>731</a>
791
- <a name='L732'></a><a href='#L732'>732</a>
792
- <a name='L733'></a><a href='#L733'>733</a>
793
- <a name='L734'></a><a href='#L734'>734</a>
794
- <a name='L735'></a><a href='#L735'>735</a>
795
- <a name='L736'></a><a href='#L736'>736</a>
796
- <a name='L737'></a><a href='#L737'>737</a>
797
- <a name='L738'></a><a href='#L738'>738</a>
798
- <a name='L739'></a><a href='#L739'>739</a>
799
- <a name='L740'></a><a href='#L740'>740</a>
800
- <a name='L741'></a><a href='#L741'>741</a>
801
- <a name='L742'></a><a href='#L742'>742</a>
802
- <a name='L743'></a><a href='#L743'>743</a>
803
- <a name='L744'></a><a href='#L744'>744</a>
804
- <a name='L745'></a><a href='#L745'>745</a>
805
- <a name='L746'></a><a href='#L746'>746</a>
806
- <a name='L747'></a><a href='#L747'>747</a>
807
- <a name='L748'></a><a href='#L748'>748</a>
808
- <a name='L749'></a><a href='#L749'>749</a>
809
- <a name='L750'></a><a href='#L750'>750</a>
810
- <a name='L751'></a><a href='#L751'>751</a>
811
- <a name='L752'></a><a href='#L752'>752</a>
812
- <a name='L753'></a><a href='#L753'>753</a>
813
- <a name='L754'></a><a href='#L754'>754</a>
814
- <a name='L755'></a><a href='#L755'>755</a>
815
- <a name='L756'></a><a href='#L756'>756</a>
816
- <a name='L757'></a><a href='#L757'>757</a>
817
- <a name='L758'></a><a href='#L758'>758</a>
818
- <a name='L759'></a><a href='#L759'>759</a>
819
- <a name='L760'></a><a href='#L760'>760</a>
820
- <a name='L761'></a><a href='#L761'>761</a>
821
- <a name='L762'></a><a href='#L762'>762</a>
822
- <a name='L763'></a><a href='#L763'>763</a>
823
- <a name='L764'></a><a href='#L764'>764</a>
824
- <a name='L765'></a><a href='#L765'>765</a>
825
- <a name='L766'></a><a href='#L766'>766</a>
826
- <a name='L767'></a><a href='#L767'>767</a>
827
- <a name='L768'></a><a href='#L768'>768</a>
828
- <a name='L769'></a><a href='#L769'>769</a>
829
- <a name='L770'></a><a href='#L770'>770</a>
830
- <a name='L771'></a><a href='#L771'>771</a>
831
- <a name='L772'></a><a href='#L772'>772</a>
832
- <a name='L773'></a><a href='#L773'>773</a>
833
- <a name='L774'></a><a href='#L774'>774</a>
834
- <a name='L775'></a><a href='#L775'>775</a>
835
- <a name='L776'></a><a href='#L776'>776</a>
836
- <a name='L777'></a><a href='#L777'>777</a>
837
- <a name='L778'></a><a href='#L778'>778</a>
838
- <a name='L779'></a><a href='#L779'>779</a>
839
- <a name='L780'></a><a href='#L780'>780</a>
840
- <a name='L781'></a><a href='#L781'>781</a>
841
- <a name='L782'></a><a href='#L782'>782</a>
842
- <a name='L783'></a><a href='#L783'>783</a>
843
- <a name='L784'></a><a href='#L784'>784</a>
844
- <a name='L785'></a><a href='#L785'>785</a>
845
- <a name='L786'></a><a href='#L786'>786</a>
846
- <a name='L787'></a><a href='#L787'>787</a>
847
- <a name='L788'></a><a href='#L788'>788</a>
848
- <a name='L789'></a><a href='#L789'>789</a>
849
- <a name='L790'></a><a href='#L790'>790</a>
850
- <a name='L791'></a><a href='#L791'>791</a>
851
- <a name='L792'></a><a href='#L792'>792</a>
852
- <a name='L793'></a><a href='#L793'>793</a>
853
- <a name='L794'></a><a href='#L794'>794</a>
854
- <a name='L795'></a><a href='#L795'>795</a>
855
- <a name='L796'></a><a href='#L796'>796</a>
856
- <a name='L797'></a><a href='#L797'>797</a>
857
- <a name='L798'></a><a href='#L798'>798</a>
858
- <a name='L799'></a><a href='#L799'>799</a>
859
- <a name='L800'></a><a href='#L800'>800</a>
860
- <a name='L801'></a><a href='#L801'>801</a>
861
- <a name='L802'></a><a href='#L802'>802</a>
862
- <a name='L803'></a><a href='#L803'>803</a>
863
- <a name='L804'></a><a href='#L804'>804</a>
864
- <a name='L805'></a><a href='#L805'>805</a>
865
- <a name='L806'></a><a href='#L806'>806</a>
866
- <a name='L807'></a><a href='#L807'>807</a>
867
- <a name='L808'></a><a href='#L808'>808</a>
868
- <a name='L809'></a><a href='#L809'>809</a>
869
- <a name='L810'></a><a href='#L810'>810</a>
870
- <a name='L811'></a><a href='#L811'>811</a>
871
- <a name='L812'></a><a href='#L812'>812</a>
872
- <a name='L813'></a><a href='#L813'>813</a>
873
- <a name='L814'></a><a href='#L814'>814</a>
874
- <a name='L815'></a><a href='#L815'>815</a>
875
- <a name='L816'></a><a href='#L816'>816</a>
876
- <a name='L817'></a><a href='#L817'>817</a>
877
- <a name='L818'></a><a href='#L818'>818</a>
878
- <a name='L819'></a><a href='#L819'>819</a>
879
- <a name='L820'></a><a href='#L820'>820</a>
880
- <a name='L821'></a><a href='#L821'>821</a>
881
- <a name='L822'></a><a href='#L822'>822</a>
882
- <a name='L823'></a><a href='#L823'>823</a>
883
- <a name='L824'></a><a href='#L824'>824</a>
884
- <a name='L825'></a><a href='#L825'>825</a>
885
- <a name='L826'></a><a href='#L826'>826</a>
886
- <a name='L827'></a><a href='#L827'>827</a>
887
- <a name='L828'></a><a href='#L828'>828</a>
888
- <a name='L829'></a><a href='#L829'>829</a>
889
- <a name='L830'></a><a href='#L830'>830</a>
890
- <a name='L831'></a><a href='#L831'>831</a>
891
- <a name='L832'></a><a href='#L832'>832</a>
892
- <a name='L833'></a><a href='#L833'>833</a>
893
- <a name='L834'></a><a href='#L834'>834</a>
894
- <a name='L835'></a><a href='#L835'>835</a>
895
- <a name='L836'></a><a href='#L836'>836</a>
896
- <a name='L837'></a><a href='#L837'>837</a>
897
- <a name='L838'></a><a href='#L838'>838</a>
898
- <a name='L839'></a><a href='#L839'>839</a>
899
- <a name='L840'></a><a href='#L840'>840</a>
900
- <a name='L841'></a><a href='#L841'>841</a>
901
- <a name='L842'></a><a href='#L842'>842</a>
902
- <a name='L843'></a><a href='#L843'>843</a>
903
- <a name='L844'></a><a href='#L844'>844</a>
904
- <a name='L845'></a><a href='#L845'>845</a>
905
- <a name='L846'></a><a href='#L846'>846</a>
906
- <a name='L847'></a><a href='#L847'>847</a>
907
- <a name='L848'></a><a href='#L848'>848</a>
908
- <a name='L849'></a><a href='#L849'>849</a>
909
- <a name='L850'></a><a href='#L850'>850</a>
910
- <a name='L851'></a><a href='#L851'>851</a>
911
- <a name='L852'></a><a href='#L852'>852</a>
912
- <a name='L853'></a><a href='#L853'>853</a>
913
- <a name='L854'></a><a href='#L854'>854</a>
914
- <a name='L855'></a><a href='#L855'>855</a>
915
- <a name='L856'></a><a href='#L856'>856</a>
916
- <a name='L857'></a><a href='#L857'>857</a>
917
- <a name='L858'></a><a href='#L858'>858</a>
918
- <a name='L859'></a><a href='#L859'>859</a>
919
- <a name='L860'></a><a href='#L860'>860</a>
920
- <a name='L861'></a><a href='#L861'>861</a>
921
- <a name='L862'></a><a href='#L862'>862</a>
922
- <a name='L863'></a><a href='#L863'>863</a>
923
- <a name='L864'></a><a href='#L864'>864</a>
924
- <a name='L865'></a><a href='#L865'>865</a>
925
- <a name='L866'></a><a href='#L866'>866</a>
926
- <a name='L867'></a><a href='#L867'>867</a>
927
- <a name='L868'></a><a href='#L868'>868</a>
928
- <a name='L869'></a><a href='#L869'>869</a>
929
- <a name='L870'></a><a href='#L870'>870</a>
930
- <a name='L871'></a><a href='#L871'>871</a>
931
- <a name='L872'></a><a href='#L872'>872</a>
932
- <a name='L873'></a><a href='#L873'>873</a>
933
- <a name='L874'></a><a href='#L874'>874</a>
934
- <a name='L875'></a><a href='#L875'>875</a>
935
- <a name='L876'></a><a href='#L876'>876</a>
936
- <a name='L877'></a><a href='#L877'>877</a>
937
- <a name='L878'></a><a href='#L878'>878</a>
938
- <a name='L879'></a><a href='#L879'>879</a>
939
- <a name='L880'></a><a href='#L880'>880</a>
940
- <a name='L881'></a><a href='#L881'>881</a>
941
- <a name='L882'></a><a href='#L882'>882</a>
942
- <a name='L883'></a><a href='#L883'>883</a>
943
- <a name='L884'></a><a href='#L884'>884</a>
944
- <a name='L885'></a><a href='#L885'>885</a>
945
- <a name='L886'></a><a href='#L886'>886</a>
946
- <a name='L887'></a><a href='#L887'>887</a>
947
- <a name='L888'></a><a href='#L888'>888</a>
948
- <a name='L889'></a><a href='#L889'>889</a>
949
- <a name='L890'></a><a href='#L890'>890</a>
950
- <a name='L891'></a><a href='#L891'>891</a>
951
- <a name='L892'></a><a href='#L892'>892</a>
952
- <a name='L893'></a><a href='#L893'>893</a>
953
- <a name='L894'></a><a href='#L894'>894</a>
954
- <a name='L895'></a><a href='#L895'>895</a>
955
- <a name='L896'></a><a href='#L896'>896</a>
956
- <a name='L897'></a><a href='#L897'>897</a>
957
- <a name='L898'></a><a href='#L898'>898</a>
958
- <a name='L899'></a><a href='#L899'>899</a>
959
- <a name='L900'></a><a href='#L900'>900</a>
960
- <a name='L901'></a><a href='#L901'>901</a>
961
- <a name='L902'></a><a href='#L902'>902</a>
962
- <a name='L903'></a><a href='#L903'>903</a>
963
- <a name='L904'></a><a href='#L904'>904</a>
964
- <a name='L905'></a><a href='#L905'>905</a>
965
- <a name='L906'></a><a href='#L906'>906</a>
966
- <a name='L907'></a><a href='#L907'>907</a>
967
- <a name='L908'></a><a href='#L908'>908</a>
968
- <a name='L909'></a><a href='#L909'>909</a>
969
- <a name='L910'></a><a href='#L910'>910</a>
970
- <a name='L911'></a><a href='#L911'>911</a>
971
- <a name='L912'></a><a href='#L912'>912</a>
972
- <a name='L913'></a><a href='#L913'>913</a>
973
- <a name='L914'></a><a href='#L914'>914</a>
974
- <a name='L915'></a><a href='#L915'>915</a>
975
- <a name='L916'></a><a href='#L916'>916</a>
976
- <a name='L917'></a><a href='#L917'>917</a>
977
- <a name='L918'></a><a href='#L918'>918</a>
978
- <a name='L919'></a><a href='#L919'>919</a>
979
- <a name='L920'></a><a href='#L920'>920</a>
980
- <a name='L921'></a><a href='#L921'>921</a>
981
- <a name='L922'></a><a href='#L922'>922</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
982
- <span class="cline-any cline-neutral">&nbsp;</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-neutral">&nbsp;</span>
985
- <span class="cline-any cline-neutral">&nbsp;</span>
986
- <span class="cline-any cline-yes">1x</span>
987
- <span class="cline-any cline-yes">1x</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-yes">1x</span>
992
- <span class="cline-any cline-yes">1x</span>
993
- <span class="cline-any cline-yes">1x</span>
994
- <span class="cline-any cline-yes">1x</span>
995
- <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-neutral">&nbsp;</span>
999
- <span class="cline-any cline-neutral">&nbsp;</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-yes">1x</span>
1002
- <span class="cline-any cline-yes">1x</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-yes">1x</span>
1005
- <span class="cline-any cline-yes">1x</span>
1006
- <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-yes">1x</span>
1008
- <span class="cline-any cline-neutral">&nbsp;</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-neutral">&nbsp;</span>
1012
- <span class="cline-any cline-neutral">&nbsp;</span>
1013
- <span class="cline-any cline-yes">329x</span>
1014
- <span class="cline-any cline-yes">658x</span>
1015
- <span class="cline-any cline-yes">329x</span>
1016
- <span class="cline-any cline-yes">550x</span>
1017
- <span class="cline-any cline-neutral">&nbsp;</span>
1018
- <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-yes">1x</span>
1020
- <span class="cline-any cline-no">&nbsp;</span>
1021
- <span class="cline-any cline-no">&nbsp;</span>
1022
- <span class="cline-any cline-no">&nbsp;</span>
1023
- <span class="cline-any cline-no">&nbsp;</span>
1024
- <span class="cline-any cline-no">&nbsp;</span>
1025
- <span class="cline-any cline-no">&nbsp;</span>
1026
- <span class="cline-any cline-neutral">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-no">&nbsp;</span>
1030
- <span class="cline-any cline-neutral">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-yes">90x</span>
1033
- <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-yes">90x</span>
1035
- <span class="cline-any cline-neutral">&nbsp;</span>
1036
- <span class="cline-any cline-neutral">&nbsp;</span>
1037
- <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-neutral">&nbsp;</span>
1039
- <span class="cline-any cline-yes">90x</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-yes">90x</span>
1042
- <span class="cline-any cline-yes">90x</span>
1043
- <span class="cline-any cline-yes">90x</span>
1044
- <span class="cline-any cline-yes">1x</span>
1045
- <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-yes">89x</span>
1047
- <span class="cline-any cline-yes">28x</span>
1048
- <span class="cline-any cline-yes">28x</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-yes">1x</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-neutral">&nbsp;</span>
1054
- <span class="cline-any cline-yes">89x</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-yes">89x</span>
1058
- <span class="cline-any cline-yes">25x</span>
1059
- <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-yes">64x</span>
1061
- <span class="cline-any cline-yes">64x</span>
1062
- <span class="cline-any cline-no">&nbsp;</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-yes">64x</span>
1065
- <span class="cline-any cline-neutral">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-yes">89x</span>
1068
- <span class="cline-any cline-neutral">&nbsp;</span>
1069
- <span class="cline-any cline-yes">89x</span>
1070
- <span class="cline-any cline-yes">89x</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-yes">232x</span>
1073
- <span class="cline-any cline-yes">232x</span>
1074
- <span class="cline-any cline-yes">232x</span>
1075
- <span class="cline-any cline-yes">208x</span>
1076
- <span class="cline-any cline-yes">208x</span>
1077
- <span class="cline-any cline-yes">5x</span>
1078
- <span class="cline-any cline-yes">5x</span>
1079
- <span class="cline-any cline-yes">3x</span>
1080
- <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-yes">208x</span>
1083
- <span class="cline-any cline-yes">208x</span>
1084
- <span class="cline-any cline-neutral">&nbsp;</span>
1085
- <span class="cline-any cline-yes">208x</span>
1086
- <span class="cline-any cline-no">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-yes">208x</span>
1089
- <span class="cline-any cline-yes">208x</span>
1090
- <span class="cline-any cline-yes">208x</span>
1091
- <span class="cline-any cline-yes">24x</span>
1092
- <span class="cline-any cline-yes">24x</span>
1093
- <span class="cline-any cline-neutral">&nbsp;</span>
1094
- <span class="cline-any cline-neutral">&nbsp;</span>
1095
- <span class="cline-any cline-neutral">&nbsp;</span>
1096
- <span class="cline-any cline-no">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-no">&nbsp;</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-no">&nbsp;</span>
1103
- <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-yes">89x</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-neutral">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-yes">89x</span>
1110
- <span class="cline-any cline-yes">89x</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-yes">89x</span>
1113
- <span class="cline-any cline-yes">89x</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-yes">89x</span>
1116
- <span class="cline-any cline-yes">89x</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-yes">86x</span>
1119
- <span class="cline-any cline-yes">24x</span>
1120
- <span class="cline-any cline-yes">24x</span>
1121
- <span class="cline-any cline-yes">13x</span>
1122
- <span class="cline-any cline-yes">13x</span>
1123
- <span class="cline-any cline-yes">13x</span>
1124
- <span class="cline-any cline-yes">13x</span>
1125
- <span class="cline-any cline-yes">13x</span>
1126
- <span class="cline-any cline-neutral">&nbsp;</span>
1127
- <span class="cline-any cline-neutral">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-neutral">&nbsp;</span>
1132
- <span class="cline-any cline-yes">89x</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-yes">43x</span>
1135
- <span class="cline-any cline-no">&nbsp;</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-yes">43x</span>
1139
- <span class="cline-any cline-yes">43x</span>
1140
- <span class="cline-any cline-yes">31x</span>
1141
- <span class="cline-any cline-yes">18x</span>
1142
- <span class="cline-any cline-neutral">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-yes">43x</span>
1145
- <span class="cline-any cline-yes">43x</span>
1146
- <span class="cline-any cline-yes">42x</span>
1147
- <span class="cline-any cline-neutral">&nbsp;</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-yes">43x</span>
1150
- <span class="cline-any cline-neutral">&nbsp;</span>
1151
- <span class="cline-any cline-yes">32x</span>
1152
- <span class="cline-any cline-neutral">&nbsp;</span>
1153
- <span class="cline-any cline-neutral">&nbsp;</span>
1154
- <span class="cline-any cline-yes">11x</span>
1155
- <span class="cline-any cline-neutral">&nbsp;</span>
1156
- <span class="cline-any cline-neutral">&nbsp;</span>
1157
- <span class="cline-any cline-yes">43x</span>
1158
- <span class="cline-any cline-yes">43x</span>
1159
- <span class="cline-any cline-no">&nbsp;</span>
1160
- <span class="cline-any cline-no">&nbsp;</span>
1161
- <span class="cline-any cline-no">&nbsp;</span>
1162
- <span class="cline-any cline-neutral">&nbsp;</span>
1163
- <span class="cline-any cline-neutral">&nbsp;</span>
1164
- <span class="cline-any cline-yes">43x</span>
1165
- <span class="cline-any cline-no">&nbsp;</span>
1166
- <span class="cline-any cline-neutral">&nbsp;</span>
1167
- <span class="cline-any cline-neutral">&nbsp;</span>
1168
- <span class="cline-any cline-neutral">&nbsp;</span>
1169
- <span class="cline-any cline-neutral">&nbsp;</span>
1170
- <span class="cline-any cline-neutral">&nbsp;</span>
1171
- <span class="cline-any cline-no">&nbsp;</span>
1172
- <span class="cline-any cline-neutral">&nbsp;</span>
1173
- <span class="cline-any cline-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-neutral">&nbsp;</span>
1175
- <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-yes">89x</span>
1177
- <span class="cline-any cline-yes">89x</span>
1178
- <span class="cline-any cline-neutral">&nbsp;</span>
1179
- <span class="cline-any cline-yes">72x</span>
1180
- <span class="cline-any cline-neutral">&nbsp;</span>
1181
- <span class="cline-any cline-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-yes">17x</span>
1183
- <span class="cline-any cline-neutral">&nbsp;</span>
1184
- <span class="cline-any cline-yes">89x</span>
1185
- <span class="cline-any cline-no">&nbsp;</span>
1186
- <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-neutral">&nbsp;</span>
1188
- <span class="cline-any cline-yes">89x</span>
1189
- <span class="cline-any cline-yes">89x</span>
1190
- <span class="cline-any cline-yes">2x</span>
1191
- <span class="cline-any cline-yes">2x</span>
1192
- <span class="cline-any cline-no">&nbsp;</span>
1193
- <span class="cline-any cline-neutral">&nbsp;</span>
1194
- <span class="cline-any cline-yes">2x</span>
1195
- <span class="cline-any cline-yes">2x</span>
1196
- <span class="cline-any cline-neutral">&nbsp;</span>
1197
- <span class="cline-any cline-yes">89x</span>
1198
- <span class="cline-any cline-neutral">&nbsp;</span>
1199
- <span class="cline-any cline-neutral">&nbsp;</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-neutral">&nbsp;</span>
1202
- <span class="cline-any cline-yes">32x</span>
1203
- <span class="cline-any cline-yes">32x</span>
1204
- <span class="cline-any cline-yes">32x</span>
1205
- <span class="cline-any cline-yes">81x</span>
1206
- <span class="cline-any cline-yes">61x</span>
1207
- <span class="cline-any cline-yes">61x</span>
1208
- <span class="cline-any cline-yes">44x</span>
1209
- <span class="cline-any cline-yes">98x</span>
1210
- <span class="cline-any cline-yes">98x</span>
1211
- <span class="cline-any cline-yes">96x</span>
1212
- <span class="cline-any cline-neutral">&nbsp;</span>
1213
- <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-neutral">&nbsp;</span>
1215
- <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span>
1217
- <span class="cline-any cline-neutral">&nbsp;</span>
1218
- <span class="cline-any cline-neutral">&nbsp;</span>
1219
- <span class="cline-any cline-yes">96x</span>
1220
- <span class="cline-any cline-yes">18x</span>
1221
- <span class="cline-any cline-neutral">&nbsp;</span>
1222
- <span class="cline-any cline-neutral">&nbsp;</span>
1223
- <span class="cline-any cline-neutral">&nbsp;</span>
1224
- <span class="cline-any cline-neutral">&nbsp;</span>
1225
- <span class="cline-any cline-yes">96x</span>
1226
- <span class="cline-any cline-neutral">&nbsp;</span>
1227
- <span class="cline-any cline-neutral">&nbsp;</span>
1228
- <span class="cline-any cline-neutral">&nbsp;</span>
1229
- <span class="cline-any cline-neutral">&nbsp;</span>
1230
- <span class="cline-any cline-neutral">&nbsp;</span>
1231
- <span class="cline-any cline-neutral">&nbsp;</span>
1232
- <span class="cline-any cline-neutral">&nbsp;</span>
1233
- <span class="cline-any cline-yes">11x</span>
1234
- <span class="cline-any cline-yes">11x</span>
1235
- <span class="cline-any cline-yes">11x</span>
1236
- <span class="cline-any cline-yes">19x</span>
1237
- <span class="cline-any cline-yes">19x</span>
1238
- <span class="cline-any cline-neutral">&nbsp;</span>
1239
- <span class="cline-any cline-neutral">&nbsp;</span>
1240
- <span class="cline-any cline-neutral">&nbsp;</span>
1241
- <span class="cline-any cline-neutral">&nbsp;</span>
1242
- <span class="cline-any cline-neutral">&nbsp;</span>
1243
- <span class="cline-any cline-neutral">&nbsp;</span>
1244
- <span class="cline-any cline-neutral">&nbsp;</span>
1245
- <span class="cline-any cline-neutral">&nbsp;</span>
1246
- <span class="cline-any cline-neutral">&nbsp;</span>
1247
- <span class="cline-any cline-yes">11x</span>
1248
- <span class="cline-any cline-yes">10x</span>
1249
- <span class="cline-any cline-neutral">&nbsp;</span>
1250
- <span class="cline-any cline-yes">1x</span>
1251
- <span class="cline-any cline-yes">1x</span>
1252
- <span class="cline-any cline-yes">24x</span>
1253
- <span class="cline-any cline-yes">1x</span>
1254
- <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-yes">24x</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-yes">9x</span>
1258
- <span class="cline-any cline-neutral">&nbsp;</span>
1259
- <span class="cline-any cline-yes">9x</span>
1260
- <span class="cline-any cline-yes">19x</span>
1261
- <span class="cline-any cline-yes">10x</span>
1262
- <span class="cline-any cline-neutral">&nbsp;</span>
1263
- <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-neutral">&nbsp;</span>
1265
- <span class="cline-any cline-yes">1x</span>
1266
- <span class="cline-any cline-yes">1x</span>
1267
- <span class="cline-any cline-neutral">&nbsp;</span>
1268
- <span class="cline-any cline-neutral">&nbsp;</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-neutral">&nbsp;</span>
1271
- <span class="cline-any cline-neutral">&nbsp;</span>
1272
- <span class="cline-any cline-neutral">&nbsp;</span>
1273
- <span class="cline-any cline-neutral">&nbsp;</span>
1274
- <span class="cline-any cline-neutral">&nbsp;</span>
1275
- <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-yes">17x</span>
1277
- <span class="cline-any cline-yes">17x</span>
1278
- <span class="cline-any cline-yes">17x</span>
1279
- <span class="cline-any cline-yes">3x</span>
1280
- <span class="cline-any cline-yes">3x</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-yes">17x</span>
1284
- <span class="cline-any cline-no">&nbsp;</span>
1285
- <span class="cline-any cline-neutral">&nbsp;</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-neutral">&nbsp;</span>
1288
- <span class="cline-any cline-neutral">&nbsp;</span>
1289
- <span class="cline-any cline-neutral">&nbsp;</span>
1290
- <span class="cline-any cline-neutral">&nbsp;</span>
1291
- <span class="cline-any cline-no">&nbsp;</span>
1292
- <span class="cline-any cline-neutral">&nbsp;</span>
1293
- <span class="cline-any cline-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-neutral">&nbsp;</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-no">&nbsp;</span>
1299
- <span class="cline-any cline-neutral">&nbsp;</span>
1300
- <span class="cline-any cline-yes">17x</span>
1301
- <span class="cline-any cline-yes">17x</span>
1302
- <span class="cline-any cline-yes">13x</span>
1303
- <span class="cline-any cline-yes">10x</span>
1304
- <span class="cline-any cline-neutral">&nbsp;</span>
1305
- <span class="cline-any cline-neutral">&nbsp;</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-neutral">&nbsp;</span>
1308
- <span class="cline-any cline-neutral">&nbsp;</span>
1309
- <span class="cline-any cline-neutral">&nbsp;</span>
1310
- <span class="cline-any cline-yes">13x</span>
1311
- <span class="cline-any cline-yes">1x</span>
1312
- <span class="cline-any cline-neutral">&nbsp;</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-yes">17x</span>
1316
- <span class="cline-any cline-yes">6x</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-yes">6x</span>
1319
- <span class="cline-any cline-yes">6x</span>
1320
- <span class="cline-any cline-no">&nbsp;</span>
1321
- <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-neutral">&nbsp;</span>
1323
- <span class="cline-any cline-yes">6x</span>
1324
- <span class="cline-any cline-yes">6x</span>
1325
- <span class="cline-any cline-yes">75x</span>
1326
- <span class="cline-any cline-yes">13x</span>
1327
- <span class="cline-any cline-neutral">&nbsp;</span>
1328
- <span class="cline-any cline-yes">75x</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-yes">6x</span>
1331
- <span class="cline-any cline-no">&nbsp;</span>
1332
- <span class="cline-any cline-neutral">&nbsp;</span>
1333
- <span class="cline-any cline-neutral">&nbsp;</span>
1334
- <span class="cline-any cline-neutral">&nbsp;</span>
1335
- <span class="cline-any cline-yes">17x</span>
1336
- <span class="cline-any cline-no">&nbsp;</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-neutral">&nbsp;</span>
1339
- <span class="cline-any cline-no">&nbsp;</span>
1340
- <span class="cline-any cline-no">&nbsp;</span>
1341
- <span class="cline-any cline-no">&nbsp;</span>
1342
- <span class="cline-any cline-no">&nbsp;</span>
1343
- <span class="cline-any cline-neutral">&nbsp;</span>
1344
- <span class="cline-any cline-no">&nbsp;</span>
1345
- <span class="cline-any cline-neutral">&nbsp;</span>
1346
- <span class="cline-any cline-neutral">&nbsp;</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-no">&nbsp;</span>
1349
- <span class="cline-any cline-neutral">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-neutral">&nbsp;</span>
1353
- <span class="cline-any cline-neutral">&nbsp;</span>
1354
- <span class="cline-any cline-yes">1x</span>
1355
- <span class="cline-any cline-yes">72x</span>
1356
- <span class="cline-any cline-yes">72x</span>
1357
- <span class="cline-any cline-yes">72x</span>
1358
- <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-yes">72x</span>
1360
- <span class="cline-any cline-yes">9x</span>
1361
- <span class="cline-any cline-yes">9x</span>
1362
- <span class="cline-any cline-yes">9x</span>
1363
- <span class="cline-any cline-neutral">&nbsp;</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-yes">72x</span>
1366
- <span class="cline-any cline-yes">3x</span>
1367
- <span class="cline-any cline-yes">3x</span>
1368
- <span class="cline-any cline-neutral">&nbsp;</span>
1369
- <span class="cline-any cline-neutral">&nbsp;</span>
1370
- <span class="cline-any cline-yes">69x</span>
1371
- <span class="cline-any cline-yes">28x</span>
1372
- <span class="cline-any cline-yes">28x</span>
1373
- <span class="cline-any cline-no">&nbsp;</span>
1374
- <span class="cline-any cline-neutral">&nbsp;</span>
1375
- <span class="cline-any cline-yes">28x</span>
1376
- <span class="cline-any cline-yes">28x</span>
1377
- <span class="cline-any cline-neutral">&nbsp;</span>
1378
- <span class="cline-any cline-neutral">&nbsp;</span>
1379
- <span class="cline-any cline-yes">69x</span>
1380
- <span class="cline-any cline-yes">37x</span>
1381
- <span class="cline-any cline-neutral">&nbsp;</span>
1382
- <span class="cline-any cline-yes">37x</span>
1383
- <span class="cline-any cline-yes">74x</span>
1384
- <span class="cline-any cline-yes">57x</span>
1385
- <span class="cline-any cline-yes">46x</span>
1386
- <span class="cline-any cline-yes">9x</span>
1387
- <span class="cline-any cline-yes">4x</span>
1388
- <span class="cline-any cline-yes">4x</span>
1389
- <span class="cline-any cline-yes">4x</span>
1390
- <span class="cline-any cline-neutral">&nbsp;</span>
1391
- <span class="cline-any cline-neutral">&nbsp;</span>
1392
- <span class="cline-any cline-yes">5x</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-neutral">&nbsp;</span>
1395
- <span class="cline-any cline-yes">46x</span>
1396
- <span class="cline-any cline-yes">28x</span>
1397
- <span class="cline-any cline-yes">28x</span>
1398
- <span class="cline-any cline-yes">28x</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-neutral">&nbsp;</span>
1401
- <span class="cline-any cline-neutral">&nbsp;</span>
1402
- <span class="cline-any cline-neutral">&nbsp;</span>
1403
- <span class="cline-any cline-yes">37x</span>
1404
- <span class="cline-any cline-yes">4x</span>
1405
- <span class="cline-any cline-neutral">&nbsp;</span>
1406
- <span class="cline-any cline-yes">37x</span>
1407
- <span class="cline-any cline-yes">2x</span>
1408
- <span class="cline-any cline-yes">2x</span>
1409
- <span class="cline-any cline-neutral">&nbsp;</span>
1410
- <span class="cline-any cline-yes">37x</span>
1411
- <span class="cline-any cline-yes">1x</span>
1412
- <span class="cline-any cline-neutral">&nbsp;</span>
1413
- <span class="cline-any cline-neutral">&nbsp;</span>
1414
- <span class="cline-any cline-neutral">&nbsp;</span>
1415
- <span class="cline-any cline-neutral">&nbsp;</span>
1416
- <span class="cline-any cline-neutral">&nbsp;</span>
1417
- <span class="cline-any cline-yes">1x</span>
1418
- <span class="cline-any cline-no">&nbsp;</span>
1419
- <span class="cline-any cline-no">&nbsp;</span>
1420
- <span class="cline-any cline-no">&nbsp;</span>
1421
- <span class="cline-any cline-no">&nbsp;</span>
1422
- <span class="cline-any cline-no">&nbsp;</span>
1423
- <span class="cline-any cline-neutral">&nbsp;</span>
1424
- <span class="cline-any cline-neutral">&nbsp;</span>
1425
- <span class="cline-any cline-neutral">&nbsp;</span>
1426
- <span class="cline-any cline-no">&nbsp;</span>
1427
- <span class="cline-any cline-no">&nbsp;</span>
1428
- <span class="cline-any cline-neutral">&nbsp;</span>
1429
- <span class="cline-any cline-no">&nbsp;</span>
1430
- <span class="cline-any cline-no">&nbsp;</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-no">&nbsp;</span>
1433
- <span class="cline-any cline-no">&nbsp;</span>
1434
- <span class="cline-any cline-no">&nbsp;</span>
1435
- <span class="cline-any cline-no">&nbsp;</span>
1436
- <span class="cline-any cline-no">&nbsp;</span>
1437
- <span class="cline-any cline-no">&nbsp;</span>
1438
- <span class="cline-any cline-no">&nbsp;</span>
1439
- <span class="cline-any cline-neutral">&nbsp;</span>
1440
- <span class="cline-any cline-neutral">&nbsp;</span>
1441
- <span class="cline-any cline-neutral">&nbsp;</span>
1442
- <span class="cline-any cline-neutral">&nbsp;</span>
1443
- <span class="cline-any cline-neutral">&nbsp;</span>
1444
- <span class="cline-any cline-neutral">&nbsp;</span>
1445
- <span class="cline-any cline-neutral">&nbsp;</span>
1446
- <span class="cline-any cline-yes">42x</span>
1447
- <span class="cline-any cline-yes">42x</span>
1448
- <span class="cline-any cline-yes">42x</span>
1449
- <span class="cline-any cline-yes">42x</span>
1450
- <span class="cline-any cline-yes">42x</span>
1451
- <span class="cline-any cline-yes">42x</span>
1452
- <span class="cline-any cline-no">&nbsp;</span>
1453
- <span class="cline-any cline-neutral">&nbsp;</span>
1454
- <span class="cline-any cline-yes">42x</span>
1455
- <span class="cline-any cline-yes">2x</span>
1456
- <span class="cline-any cline-neutral">&nbsp;</span>
1457
- <span class="cline-any cline-yes">42x</span>
1458
- <span class="cline-any cline-no">&nbsp;</span>
1459
- <span class="cline-any cline-neutral">&nbsp;</span>
1460
- <span class="cline-any cline-neutral">&nbsp;</span>
1461
- <span class="cline-any cline-neutral">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-yes">85x</span>
1464
- <span class="cline-any cline-yes">43x</span>
1465
- <span class="cline-any cline-yes">43x</span>
1466
- <span class="cline-any cline-yes">6x</span>
1467
- <span class="cline-any cline-yes">6x</span>
1468
- <span class="cline-any cline-yes">6x</span>
1469
- <span class="cline-any cline-no">&nbsp;</span>
1470
- <span class="cline-any cline-no">&nbsp;</span>
1471
- <span class="cline-any cline-neutral">&nbsp;</span>
1472
- <span class="cline-any cline-yes">6x</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</span>
1474
- <span class="cline-any cline-neutral">&nbsp;</span>
1475
- <span class="cline-any cline-neutral">&nbsp;</span>
1476
- <span class="cline-any cline-neutral">&nbsp;</span>
1477
- <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-neutral">&nbsp;</span>
1479
- <span class="cline-any cline-yes">6x</span>
1480
- <span class="cline-any cline-neutral">&nbsp;</span>
1481
- <span class="cline-any cline-yes">43x</span>
1482
- <span class="cline-any cline-yes">1x</span>
1483
- <span class="cline-any cline-yes">2x</span>
1484
- <span class="cline-any cline-yes">2x</span>
1485
- <span class="cline-any cline-yes">2x</span>
1486
- <span class="cline-any cline-no">&nbsp;</span>
1487
- <span class="cline-any cline-no">&nbsp;</span>
1488
- <span class="cline-any cline-neutral">&nbsp;</span>
1489
- <span class="cline-any cline-yes">2x</span>
1490
- <span class="cline-any cline-neutral">&nbsp;</span>
1491
- <span class="cline-any cline-neutral">&nbsp;</span>
1492
- <span class="cline-any cline-neutral">&nbsp;</span>
1493
- <span class="cline-any cline-neutral">&nbsp;</span>
1494
- <span class="cline-any cline-neutral">&nbsp;</span>
1495
- <span class="cline-any cline-yes">2x</span>
1496
- <span class="cline-any cline-neutral">&nbsp;</span>
1497
- <span class="cline-any cline-neutral">&nbsp;</span>
1498
- <span class="cline-any cline-yes">43x</span>
1499
- <span class="cline-any cline-yes">3x</span>
1500
- <span class="cline-any cline-yes">5x</span>
1501
- <span class="cline-any cline-yes">5x</span>
1502
- <span class="cline-any cline-yes">5x</span>
1503
- <span class="cline-any cline-neutral">&nbsp;</span>
1504
- <span class="cline-any cline-neutral">&nbsp;</span>
1505
- <span class="cline-any cline-yes">5x</span>
1506
- <span class="cline-any cline-yes">4x</span>
1507
- <span class="cline-any cline-yes">4x</span>
1508
- <span class="cline-any cline-yes">1x</span>
1509
- <span class="cline-any cline-yes">1x</span>
1510
- <span class="cline-any cline-neutral">&nbsp;</span>
1511
- <span class="cline-any cline-yes">4x</span>
1512
- <span class="cline-any cline-yes">4x</span>
1513
- <span class="cline-any cline-yes">4x</span>
1514
- <span class="cline-any cline-yes">1x</span>
1515
- <span class="cline-any cline-yes">1x</span>
1516
- <span class="cline-any cline-yes">1x</span>
1517
- <span class="cline-any cline-yes">1x</span>
1518
- <span class="cline-any cline-yes">1x</span>
1519
- <span class="cline-any cline-yes">1x</span>
1520
- <span class="cline-any cline-yes">1x</span>
1521
- <span class="cline-any cline-neutral">&nbsp;</span>
1522
- <span class="cline-any cline-yes">1x</span>
1523
- <span class="cline-any cline-yes">1x</span>
1524
- <span class="cline-any cline-neutral">&nbsp;</span>
1525
- <span class="cline-any cline-neutral">&nbsp;</span>
1526
- <span class="cline-any cline-no">&nbsp;</span>
1527
- <span class="cline-any cline-neutral">&nbsp;</span>
1528
- <span class="cline-any cline-yes">5x</span>
1529
- <span class="cline-any cline-neutral">&nbsp;</span>
1530
- <span class="cline-any cline-neutral">&nbsp;</span>
1531
- <span class="cline-any cline-neutral">&nbsp;</span>
1532
- <span class="cline-any cline-neutral">&nbsp;</span>
1533
- <span class="cline-any cline-neutral">&nbsp;</span>
1534
- <span class="cline-any cline-neutral">&nbsp;</span>
1535
- <span class="cline-any cline-neutral">&nbsp;</span>
1536
- <span class="cline-any cline-yes">5x</span>
1537
- <span class="cline-any cline-neutral">&nbsp;</span>
1538
- <span class="cline-any cline-neutral">&nbsp;</span>
1539
- <span class="cline-any cline-yes">43x</span>
1540
- <span class="cline-any cline-yes">1x</span>
1541
- <span class="cline-any cline-neutral">&nbsp;</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-neutral">&nbsp;</span>
1544
- <span class="cline-any cline-neutral">&nbsp;</span>
1545
- <span class="cline-any cline-yes">1x</span>
1546
- <span class="cline-any cline-yes">42x</span>
1547
- <span class="cline-any cline-yes">2x</span>
1548
- <span class="cline-any cline-neutral">&nbsp;</span>
1549
- <span class="cline-any cline-neutral">&nbsp;</span>
1550
- <span class="cline-any cline-neutral">&nbsp;</span>
1551
- <span class="cline-any cline-neutral">&nbsp;</span>
1552
- <span class="cline-any cline-neutral">&nbsp;</span>
1553
- <span class="cline-any cline-neutral">&nbsp;</span>
1554
- <span class="cline-any cline-neutral">&nbsp;</span>
1555
- <span class="cline-any cline-neutral">&nbsp;</span>
1556
- <span class="cline-any cline-yes">42x</span>
1557
- <span class="cline-any cline-yes">31x</span>
1558
- <span class="cline-any cline-yes">68x</span>
1559
- <span class="cline-any cline-yes">68x</span>
1560
- <span class="cline-any cline-yes">68x</span>
1561
- <span class="cline-any cline-yes">9x</span>
1562
- <span class="cline-any cline-yes">59x</span>
1563
- <span class="cline-any cline-yes">6x</span>
1564
- <span class="cline-any cline-neutral">&nbsp;</span>
1565
- <span class="cline-any cline-yes">68x</span>
1566
- <span class="cline-any cline-neutral">&nbsp;</span>
1567
- <span class="cline-any cline-neutral">&nbsp;</span>
1568
- <span class="cline-any cline-neutral">&nbsp;</span>
1569
- <span class="cline-any cline-neutral">&nbsp;</span>
1570
- <span class="cline-any cline-neutral">&nbsp;</span>
1571
- <span class="cline-any cline-neutral">&nbsp;</span>
1572
- <span class="cline-any cline-neutral">&nbsp;</span>
1573
- <span class="cline-any cline-neutral">&nbsp;</span>
1574
- <span class="cline-any cline-neutral">&nbsp;</span>
1575
- <span class="cline-any cline-neutral">&nbsp;</span>
1576
- <span class="cline-any cline-yes">1x</span>
1577
- <span class="cline-any cline-yes">42x</span>
1578
- <span class="cline-any cline-yes">33x</span>
1579
- <span class="cline-any cline-neutral">&nbsp;</span>
1580
- <span class="cline-any cline-yes">9x</span>
1581
- <span class="cline-any cline-yes">9x</span>
1582
- <span class="cline-any cline-yes">3x</span>
1583
- <span class="cline-any cline-yes">7x</span>
1584
- <span class="cline-any cline-yes">5x</span>
1585
- <span class="cline-any cline-neutral">&nbsp;</span>
1586
- <span class="cline-any cline-neutral">&nbsp;</span>
1587
- <span class="cline-any cline-neutral">&nbsp;</span>
1588
- <span class="cline-any cline-yes">1x</span>
1589
- <span class="cline-any cline-yes">2x</span>
1590
- <span class="cline-any cline-yes">1x</span>
1591
- <span class="cline-any cline-neutral">&nbsp;</span>
1592
- <span class="cline-any cline-neutral">&nbsp;</span>
1593
- <span class="cline-any cline-neutral">&nbsp;</span>
1594
- <span class="cline-any cline-neutral">&nbsp;</span>
1595
- <span class="cline-any cline-neutral">&nbsp;</span>
1596
- <span class="cline-any cline-neutral">&nbsp;</span>
1597
- <span class="cline-any cline-neutral">&nbsp;</span>
1598
- <span class="cline-any cline-neutral">&nbsp;</span>
1599
- <span class="cline-any cline-yes">2x</span>
1600
- <span class="cline-any cline-no">&nbsp;</span>
1601
- <span class="cline-any cline-neutral">&nbsp;</span>
1602
- <span class="cline-any cline-neutral">&nbsp;</span>
1603
- <span class="cline-any cline-neutral">&nbsp;</span>
1604
- <span class="cline-any cline-neutral">&nbsp;</span>
1605
- <span class="cline-any cline-neutral">&nbsp;</span>
1606
- <span class="cline-any cline-neutral">&nbsp;</span>
1607
- <span class="cline-any cline-neutral">&nbsp;</span>
1608
- <span class="cline-any cline-neutral">&nbsp;</span>
1609
- <span class="cline-any cline-neutral">&nbsp;</span>
1610
- <span class="cline-any cline-neutral">&nbsp;</span>
1611
- <span class="cline-any cline-yes">1x</span>
1612
- <span class="cline-any cline-yes">5x</span>
1613
- <span class="cline-any cline-neutral">&nbsp;</span>
1614
- <span class="cline-any cline-neutral">&nbsp;</span>
1615
- <span class="cline-any cline-neutral">&nbsp;</span>
1616
- <span class="cline-any cline-neutral">&nbsp;</span>
1617
- <span class="cline-any cline-neutral">&nbsp;</span>
1618
- <span class="cline-any cline-neutral">&nbsp;</span>
1619
- <span class="cline-any cline-neutral">&nbsp;</span>
1620
- <span class="cline-any cline-neutral">&nbsp;</span>
1621
- <span class="cline-any cline-yes">1x</span>
1622
- <span class="cline-any cline-yes">1x</span>
1623
- <span class="cline-any cline-neutral">&nbsp;</span>
1624
- <span class="cline-any cline-neutral">&nbsp;</span>
1625
- <span class="cline-any cline-neutral">&nbsp;</span>
1626
- <span class="cline-any cline-neutral">&nbsp;</span>
1627
- <span class="cline-any cline-neutral">&nbsp;</span>
1628
- <span class="cline-any cline-neutral">&nbsp;</span>
1629
- <span class="cline-any cline-neutral">&nbsp;</span>
1630
- <span class="cline-any cline-neutral">&nbsp;</span>
1631
- <span class="cline-any cline-yes">4x</span>
1632
- <span class="cline-any cline-yes">16x</span>
1633
- <span class="cline-any cline-yes">16x</span>
1634
- <span class="cline-any cline-neutral">&nbsp;</span>
1635
- <span class="cline-any cline-neutral">&nbsp;</span>
1636
- <span class="cline-any cline-neutral">&nbsp;</span>
1637
- <span class="cline-any cline-neutral">&nbsp;</span>
1638
- <span class="cline-any cline-neutral">&nbsp;</span>
1639
- <span class="cline-any cline-neutral">&nbsp;</span>
1640
- <span class="cline-any cline-neutral">&nbsp;</span>
1641
- <span class="cline-any cline-neutral">&nbsp;</span>
1642
- <span class="cline-any cline-yes">1x</span>
1643
- <span class="cline-any cline-yes">94x</span>
1644
- <span class="cline-any cline-neutral">&nbsp;</span>
1645
- <span class="cline-any cline-neutral">&nbsp;</span>
1646
- <span class="cline-any cline-yes">1x</span>
1647
- <span class="cline-any cline-yes">132x</span>
1648
- <span class="cline-any cline-neutral">&nbsp;</span>
1649
- <span class="cline-any cline-neutral">&nbsp;</span>
1650
- <span class="cline-any cline-yes">1x</span>
1651
- <span class="cline-any cline-yes">4x</span>
1652
- <span class="cline-any cline-neutral">&nbsp;</span>
1653
- <span class="cline-any cline-neutral">&nbsp;</span>
1654
- <span class="cline-any cline-yes">1x</span>
1655
- <span class="cline-any cline-yes">2x</span>
1656
- <span class="cline-any cline-yes">2x</span>
1657
- <span class="cline-any cline-neutral">&nbsp;</span>
1658
- <span class="cline-any cline-neutral">&nbsp;</span>
1659
- <span class="cline-any cline-yes">1x</span>
1660
- <span class="cline-any cline-yes">233x</span>
1661
- <span class="cline-any cline-neutral">&nbsp;</span>
1662
- <span class="cline-any cline-neutral">&nbsp;</span>
1663
- <span class="cline-any cline-yes">1x</span>
1664
- <span class="cline-any cline-yes">217x</span>
1665
- <span class="cline-any cline-yes">217x</span>
1666
- <span class="cline-any cline-yes">3x</span>
1667
- <span class="cline-any cline-yes">214x</span>
1668
- <span class="cline-any cline-no">&nbsp;</span>
1669
- <span class="cline-any cline-neutral">&nbsp;</span>
1670
- <span class="cline-any cline-yes">214x</span>
1671
- <span class="cline-any cline-neutral">&nbsp;</span>
1672
- <span class="cline-any cline-neutral">&nbsp;</span>
1673
- <span class="cline-any cline-yes">1x</span>
1674
- <span class="cline-any cline-yes">7x</span>
1675
- <span class="cline-any cline-yes">7x</span>
1676
- <span class="cline-any cline-yes">7x</span>
1677
- <span class="cline-any cline-yes">1x</span>
1678
- <span class="cline-any cline-neutral">&nbsp;</span>
1679
- <span class="cline-any cline-neutral">&nbsp;</span>
1680
- <span class="cline-any cline-yes">6x</span>
1681
- <span class="cline-any cline-neutral">&nbsp;</span>
1682
- <span class="cline-any cline-yes">7x</span>
1683
- <span class="cline-any cline-neutral">&nbsp;</span>
1684
- <span class="cline-any cline-neutral">&nbsp;</span>
1685
- <span class="cline-any cline-yes">1x</span>
1686
- <span class="cline-any cline-yes">13x</span>
1687
- <span class="cline-any cline-neutral">&nbsp;</span>
1688
- <span class="cline-any cline-yes">1x</span>
1689
- <span class="cline-any cline-no">&nbsp;</span>
1690
- <span class="cline-any cline-neutral">&nbsp;</span>
1691
- <span class="cline-any cline-yes">1x</span>
1692
- <span class="cline-any cline-neutral">&nbsp;</span>
1693
- <span class="cline-any cline-yes">10x</span>
1694
- <span class="cline-any cline-yes">10x</span>
1695
- <span class="cline-any cline-yes">10x</span>
1696
- <span class="cline-any cline-yes">10x</span>
1697
- <span class="cline-any cline-neutral">&nbsp;</span>
1698
- <span class="cline-any cline-neutral">&nbsp;</span>
1699
- <span class="cline-any cline-yes">2x</span>
1700
- <span class="cline-any cline-neutral">&nbsp;</span>
1701
- <span class="cline-any cline-no">&nbsp;</span>
1702
- <span class="cline-any cline-neutral">&nbsp;</span>
1703
- <span class="cline-any cline-neutral">&nbsp;</span>
1704
- <span class="cline-any cline-yes">1x</span>
1705
- <span class="cline-any cline-yes">100x</span>
1706
- <span class="cline-any cline-yes">6x</span>
1707
- <span class="cline-any cline-yes">6x</span>
1708
- <span class="cline-any cline-neutral">&nbsp;</span>
1709
- <span class="cline-any cline-yes">100x</span>
1710
- <span class="cline-any cline-yes">60x</span>
1711
- <span class="cline-any cline-neutral">&nbsp;</span>
1712
- <span class="cline-any cline-yes">40x</span>
1713
- <span class="cline-any cline-yes">17x</span>
1714
- <span class="cline-any cline-yes">5x</span>
1715
- <span class="cline-any cline-no">&nbsp;</span>
1716
- <span class="cline-any cline-yes">18x</span>
1717
- <span class="cline-any cline-neutral">&nbsp;</span>
1718
- <span class="cline-any cline-neutral">&nbsp;</span>
1719
- <span class="cline-any cline-neutral">&nbsp;</span>
1720
- <span class="cline-any cline-yes">1x</span>
1721
- <span class="cline-any cline-yes">10x</span>
1722
- <span class="cline-any cline-neutral">&nbsp;</span>
1723
- <span class="cline-any cline-no">&nbsp;</span>
1724
- <span class="cline-any cline-neutral">&nbsp;</span>
1725
- <span class="cline-any cline-yes">1x</span>
1726
- <span class="cline-any cline-neutral">&nbsp;</span>
1727
- <span class="cline-any cline-yes">9x</span>
1728
- <span class="cline-any cline-yes">9x</span>
1729
- <span class="cline-any cline-neutral">&nbsp;</span>
1730
- <span class="cline-any cline-neutral">&nbsp;</span>
1731
- <span class="cline-any cline-neutral">&nbsp;</span>
1732
- <span class="cline-any cline-yes">1x</span>
1733
- <span class="cline-any cline-yes">10x</span>
1734
- <span class="cline-any cline-neutral">&nbsp;</span>
1735
- <span class="cline-any cline-no">&nbsp;</span>
1736
- <span class="cline-any cline-neutral">&nbsp;</span>
1737
- <span class="cline-any cline-yes">1x</span>
1738
- <span class="cline-any cline-neutral">&nbsp;</span>
1739
- <span class="cline-any cline-yes">9x</span>
1740
- <span class="cline-any cline-yes">9x</span>
1741
- <span class="cline-any cline-neutral">&nbsp;</span>
1742
- <span class="cline-any cline-neutral">&nbsp;</span>
1743
- <span class="cline-any cline-neutral">&nbsp;</span>
1744
- <span class="cline-any cline-yes">1x</span>
1745
- <span class="cline-any cline-neutral">&nbsp;</span>
1746
- <span class="cline-any cline-yes">97x</span>
1747
- <span class="cline-any cline-yes">97x</span>
1748
- <span class="cline-any cline-no">&nbsp;</span>
1749
- <span class="cline-any cline-neutral">&nbsp;</span>
1750
- <span class="cline-any cline-yes">97x</span>
1751
- <span class="cline-any cline-neutral">&nbsp;</span>
1752
- <span class="cline-any cline-neutral">&nbsp;</span>
1753
- <span class="cline-any cline-yes">97x</span>
1754
- <span class="cline-any cline-yes">97x</span>
1755
- <span class="cline-any cline-yes">96x</span>
1756
- <span class="cline-any cline-yes">4x</span>
1757
- <span class="cline-any cline-yes">3x</span>
1758
- <span class="cline-any cline-yes">3x</span>
1759
- <span class="cline-any cline-yes">3x</span>
1760
- <span class="cline-any cline-neutral">&nbsp;</span>
1761
- <span class="cline-any cline-neutral">&nbsp;</span>
1762
- <span class="cline-any cline-yes">4x</span>
1763
- <span class="cline-any cline-neutral">&nbsp;</span>
1764
- <span class="cline-any cline-yes">96x</span>
1765
- <span class="cline-any cline-yes">13x</span>
1766
- <span class="cline-any cline-yes">7x</span>
1767
- <span class="cline-any cline-neutral">&nbsp;</span>
1768
- <span class="cline-any cline-yes">13x</span>
1769
- <span class="cline-any cline-neutral">&nbsp;</span>
1770
- <span class="cline-any cline-yes">96x</span>
1771
- <span class="cline-any cline-yes">6x</span>
1772
- <span class="cline-any cline-yes">5x</span>
1773
- <span class="cline-any cline-neutral">&nbsp;</span>
1774
- <span class="cline-any cline-yes">6x</span>
1775
- <span class="cline-any cline-neutral">&nbsp;</span>
1776
- <span class="cline-any cline-yes">96x</span>
1777
- <span class="cline-any cline-no">&nbsp;</span>
1778
- <span class="cline-any cline-no">&nbsp;</span>
1779
- <span class="cline-any cline-neutral">&nbsp;</span>
1780
- <span class="cline-any cline-no">&nbsp;</span>
1781
- <span class="cline-any cline-neutral">&nbsp;</span>
1782
- <span class="cline-any cline-yes">96x</span>
1783
- <span class="cline-any cline-yes">77x</span>
1784
- <span class="cline-any cline-yes">77x</span>
1785
- <span class="cline-any cline-yes">7x</span>
1786
- <span class="cline-any cline-no">&nbsp;</span>
1787
- <span class="cline-any cline-yes">7x</span>
1788
- <span class="cline-any cline-no">&nbsp;</span>
1789
- <span class="cline-any cline-neutral">&nbsp;</span>
1790
- <span class="cline-any cline-neutral">&nbsp;</span>
1791
- <span class="cline-any cline-yes">77x</span>
1792
- <span class="cline-any cline-neutral">&nbsp;</span>
1793
- <span class="cline-any cline-yes">11x</span>
1794
- <span class="cline-any cline-yes">11x</span>
1795
- <span class="cline-any cline-neutral">&nbsp;</span>
1796
- <span class="cline-any cline-yes">41x</span>
1797
- <span class="cline-any cline-yes">41x</span>
1798
- <span class="cline-any cline-neutral">&nbsp;</span>
1799
- <span class="cline-any cline-yes">6x</span>
1800
- <span class="cline-any cline-yes">6x</span>
1801
- <span class="cline-any cline-neutral">&nbsp;</span>
1802
- <span class="cline-any cline-yes">1x</span>
1803
- <span class="cline-any cline-yes">1x</span>
1804
- <span class="cline-any cline-neutral">&nbsp;</span>
1805
- <span class="cline-any cline-neutral">&nbsp;</span>
1806
- <span class="cline-any cline-yes">11x</span>
1807
- <span class="cline-any cline-yes">11x</span>
1808
- <span class="cline-any cline-neutral">&nbsp;</span>
1809
- <span class="cline-any cline-no">&nbsp;</span>
1810
- <span class="cline-any cline-no">&nbsp;</span>
1811
- <span class="cline-any cline-neutral">&nbsp;</span>
1812
- <span class="cline-any cline-yes">7x</span>
1813
- <span class="cline-any cline-neutral">&nbsp;</span>
1814
- <span class="cline-any cline-neutral">&nbsp;</span>
1815
- <span class="cline-any cline-neutral">&nbsp;</span>
1816
- <span class="cline-any cline-yes">90x</span>
1817
- <span class="cline-any cline-yes">8x</span>
1818
- <span class="cline-any cline-neutral">&nbsp;</span>
1819
- <span class="cline-any cline-yes">90x</span>
1820
- <span class="cline-any cline-neutral">&nbsp;</span>
1821
- <span class="cline-any cline-neutral">&nbsp;</span>
1822
- <span class="cline-any cline-yes">1x</span>
1823
- <span class="cline-any cline-yes">89x</span>
1824
- <span class="cline-any cline-yes">89x</span>
1825
- <span class="cline-any cline-yes">89x</span>
1826
- <span class="cline-any cline-yes">26x</span>
1827
- <span class="cline-any cline-neutral">&nbsp;</span>
1828
- <span class="cline-any cline-yes">89x</span>
1829
- <span class="cline-any cline-neutral">&nbsp;</span>
1830
- <span class="cline-any cline-neutral">&nbsp;</span>
1831
- <span class="cline-any cline-yes">1x</span>
1832
- <span class="cline-any cline-yes">98x</span>
1833
- <span class="cline-any cline-yes">98x</span>
1834
- <span class="cline-any cline-yes">98x</span>
1835
- <span class="cline-any cline-yes">98x</span>
1836
- <span class="cline-any cline-neutral">&nbsp;</span>
1837
- <span class="cline-any cline-neutral">&nbsp;</span>
1838
- <span class="cline-any cline-neutral">&nbsp;</span>
1839
- <span class="cline-any cline-neutral">&nbsp;</span>
1840
- <span class="cline-any cline-yes">91x</span>
1841
- <span class="cline-any cline-neutral">&nbsp;</span>
1842
- <span class="cline-any cline-yes">7x</span>
1843
- <span class="cline-any cline-neutral">&nbsp;</span>
1844
- <span class="cline-any cline-neutral">&nbsp;</span>
1845
- <span class="cline-any cline-neutral">&nbsp;</span>
1846
- <span class="cline-any cline-yes">1x</span>
1847
- <span class="cline-any cline-yes">4x</span>
1848
- <span class="cline-any cline-yes">4x</span>
1849
- <span class="cline-any cline-yes">4x</span>
1850
- <span class="cline-any cline-yes">3x</span>
1851
- <span class="cline-any cline-yes">3x</span>
1852
- <span class="cline-any cline-yes">1x</span>
1853
- <span class="cline-any cline-yes">1x</span>
1854
- <span class="cline-any cline-yes">1x</span>
1855
- <span class="cline-any cline-yes">1x</span>
1856
- <span class="cline-any cline-neutral">&nbsp;</span>
1857
- <span class="cline-any cline-no">&nbsp;</span>
1858
- <span class="cline-any cline-yes">2x</span>
1859
- <span class="cline-any cline-yes">1x</span>
1860
- <span class="cline-any cline-neutral">&nbsp;</span>
1861
- <span class="cline-any cline-neutral">&nbsp;</span>
1862
- <span class="cline-any cline-yes">2x</span>
1863
- <span class="cline-any cline-neutral">&nbsp;</span>
1864
- <span class="cline-any cline-neutral">&nbsp;</span>
1865
- <span class="cline-any cline-yes">1x</span>
1866
- <span class="cline-any cline-yes">90x</span>
1867
- <span class="cline-any cline-yes">90x</span>
1868
- <span class="cline-any cline-yes">90x</span>
1869
- <span class="cline-any cline-yes">90x</span>
1870
- <span class="cline-any cline-yes">181x</span>
1871
- <span class="cline-any cline-neutral">&nbsp;</span>
1872
- <span class="cline-any cline-yes">90x</span>
1873
- <span class="cline-any cline-neutral">&nbsp;</span>
1874
- <span class="cline-any cline-neutral">&nbsp;</span>
1875
- <span class="cline-any cline-yes">1x</span>
1876
- <span class="cline-any cline-yes">180x</span>
1877
- <span class="cline-any cline-yes">18x</span>
1878
- <span class="cline-any cline-neutral">&nbsp;</span>
1879
- <span class="cline-any cline-neutral">&nbsp;</span>
1880
- <span class="cline-any cline-neutral">&nbsp;</span>
1881
- <span class="cline-any cline-neutral">&nbsp;</span>
1882
- <span class="cline-any cline-yes">162x</span>
1883
- <span class="cline-any cline-neutral">&nbsp;</span>
1884
- <span class="cline-any cline-neutral">&nbsp;</span>
1885
- <span class="cline-any cline-yes">1x</span>
1886
- <span class="cline-any cline-yes">33x</span>
1887
- <span class="cline-any cline-yes">11x</span>
1888
- <span class="cline-any cline-yes">11x</span>
1889
- <span class="cline-any cline-neutral">&nbsp;</span>
1890
- <span class="cline-any cline-yes">33x</span>
1891
- <span class="cline-any cline-neutral">&nbsp;</span>
1892
- <span class="cline-any cline-neutral">&nbsp;</span>
1893
- <span class="cline-any cline-yes">1x</span>
1894
- <span class="cline-any cline-no">&nbsp;</span>
1895
- <span class="cline-any cline-no">&nbsp;</span>
1896
- <span class="cline-any cline-no">&nbsp;</span>
1897
- <span class="cline-any cline-neutral">&nbsp;</span>
1898
- <span class="cline-any cline-no">&nbsp;</span>
1899
- <span class="cline-any cline-neutral">&nbsp;</span>
1900
- <span class="cline-any cline-neutral">&nbsp;</span>
1901
- <span class="cline-any cline-yes">1x</span>
1902
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*---------------------------------------------------------------------------------------------
1903
- * Copyright (c) Microsoft Corporation. All rights reserved.
1904
- * Licensed under the MIT License. See License.txt in the project root for license information.
1905
- *--------------------------------------------------------------------------------------------*/
1906
- &nbsp;
1907
- import * as Parser from '../parser/jsonParser';
1908
- import * as Json from 'jsonc-parser';
1909
- import * as SchemaService from './jsonSchemaService';
1910
- import { JSONSchema, JSONSchemaRef } from '../jsonSchema';
1911
- import { JSONWorkerContribution, CompletionsCollector } from '../jsonContributions';
1912
- import { stringifyObject } from '../utils/json';
1913
- import { endsWith } from '../utils/strings';
1914
- import { isDefined } from '../utils/objects';
1915
- import {
1916
- PromiseConstructor, Thenable,
1917
- ASTNode, ObjectASTNode, ArrayASTNode, PropertyASTNode, ClientCapabilities,
1918
- TextDocument,
1919
- CompletionItem, CompletionItemKind, CompletionList, Position, Range, TextEdit, InsertTextFormat, MarkupContent, MarkupKind
1920
- } from '../jsonLanguageTypes';
1921
- &nbsp;
1922
- import * as nls from 'vscode-nls';
1923
- const localize = nls.loadMessageBundle();
1924
- &nbsp;
1925
- const valueCommitCharacters = [',', '}', ']'];
1926
- const propertyCommitCharacters = [':'];
1927
- &nbsp;
1928
- export class JSONCompletion {
1929
- &nbsp;
1930
- private supportsMarkdown: boolean | undefined;
1931
- private supportsCommitCharacters: boolean | undefined;
1932
- &nbsp;
1933
- constructor(
1934
- private schemaService: SchemaService.IJSONSchemaService,
1935
- private <span class="missing-if-branch" title="else path not taken" >E</span>contributions: JSONWorkerContribution[] = [],
1936
- private <span class="missing-if-branch" title="if path not taken" >I</span>promiseConstructor: PromiseConstructor = Promise,
1937
- private clientCapabilities: ClientCapabilities = {}) {
1938
- }
1939
- &nbsp;
1940
- <span class="fstat-no" title="function not covered" > public d</span>oResolve(item: CompletionItem): Thenable&lt;CompletionItem&gt; {
1941
- <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >this.contributions.length - 1;</span> i &gt;= 0; i--) {</span>
1942
- const resolveCompletion = <span class="cstat-no" title="statement not covered" >this.contributions[i].resolveCompletion;</span>
1943
- <span class="cstat-no" title="statement not covered" > if (resolveCompletion) {</span>
1944
- const resolver = <span class="cstat-no" title="statement not covered" >resolveCompletion(item);</span>
1945
- <span class="cstat-no" title="statement not covered" > if (resolver) {</span>
1946
- <span class="cstat-no" title="statement not covered" > return resolver;</span>
1947
- }
1948
- }
1949
- }
1950
- <span class="cstat-no" title="statement not covered" > return this.promiseConstructor.resolve(item);</span>
1951
- }
1952
- &nbsp;
1953
- public doComplete(document: TextDocument, position: Position, doc: Parser.JSONDocument): Thenable&lt;CompletionList&gt; {
1954
- &nbsp;
1955
- const result: CompletionList = {
1956
- items: [],
1957
- isIncomplete: false
1958
- };
1959
- &nbsp;
1960
- const text = document.getText();
1961
- &nbsp;
1962
- const offset = document.offsetAt(position);
1963
- let node = doc.getNodeFromOffset(offset, true);
1964
- if (this.isInComment(document, node ? node.offset : 0, offset)) {
1965
- return Promise.resolve(result);
1966
- }
1967
- if (node &amp;&amp; (offset === node.offset + node.length) &amp;&amp; offset &gt; 0) {
1968
- const ch = text[offset - 1];
1969
- if (node.type === 'object' &amp;&amp; ch === '}' || node.type === 'array' &amp;&amp; ch === ']') {
1970
- // after ] or }
1971
- node = node.parent;
1972
- }
1973
- }
1974
- &nbsp;
1975
- const currentWord = this.getCurrentWord(document, offset);
1976
- let overwriteRange: Range;
1977
- &nbsp;
1978
- if (node &amp;&amp; (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {
1979
- overwriteRange = Range.create(document.positionAt(node.offset), document.positionAt(node.offset + node.length));
1980
- } else {
1981
- let overwriteStart = offset - currentWord.length;
1982
- <span class="missing-if-branch" title="if path not taken" >I</span>if (overwriteStart &gt; 0 &amp;&amp; text[overwriteStart - 1] === '"') {
1983
- <span class="cstat-no" title="statement not covered" > overwriteStart--;</span>
1984
- }
1985
- overwriteRange = Range.create(document.positionAt(overwriteStart), position);
1986
- }
1987
- &nbsp;
1988
- const supportsCommitCharacters = false; //this.doesSupportsCommitCharacters(); disabled for now, waiting for new API: https://github.com/microsoft/vscode/issues/42544
1989
- &nbsp;
1990
- const proposed: { [key: string]: CompletionItem } = {};
1991
- const collector: CompletionsCollector = {
1992
- add: (suggestion: CompletionItem) =&gt; {
1993
- let label = suggestion.label;
1994
- const existing = proposed[label];
1995
- if (!existing) {
1996
- label = label.replace(/[\n]/g, '↵');
1997
- if (label.length &gt; 60) {
1998
- const shortendedLabel = label.substr(0, 57).trim() + '...';
1999
- if (!proposed[shortendedLabel]) {
2000
- label = shortendedLabel;
2001
- }
2002
- }
2003
- <span class="missing-if-branch" title="else path not taken" >E</span>if (overwriteRange &amp;&amp; suggestion.insertText !== undefined) {
2004
- suggestion.textEdit = TextEdit.replace(overwriteRange, suggestion.insertText);
2005
- }
2006
- <span class="missing-if-branch" title="if path not taken" >I</span>if (supportsCommitCharacters) {
2007
- <span class="cstat-no" title="statement not covered" > suggestion.commitCharacters = suggestion.kind === CompletionItemKind.Property ? propertyCommitCharacters : valueCommitCharacters;</span>
2008
- }
2009
- suggestion.label = label;
2010
- proposed[label] = suggestion;
2011
- result.items.push(suggestion);
2012
- } else <span class="missing-if-branch" title="else path not taken" >E</span>if (!existing.documentation) {
2013
- existing.documentation = suggestion.documentation;
2014
- }
2015
- },
2016
- setAsIncomplete: <span class="fstat-no" title="function not covered" >() =&gt; {</span>
2017
- <span class="cstat-no" title="statement not covered" > result.isIncomplete = true;</span>
2018
- },
2019
- error: <span class="fstat-no" title="function not covered" >(m</span>essage: string) =&gt; {
2020
- <span class="cstat-no" title="statement not covered" > console.error(message);</span>
2021
- },
2022
- log: <span class="fstat-no" title="function not covered" >(m</span>essage: string) =&gt; {
2023
- <span class="cstat-no" title="statement not covered" > console.log(message);</span>
2024
- },
2025
- getNumberOfProposals: () =&gt; {
2026
- return result.items.length;
2027
- }
2028
- };
2029
- &nbsp;
2030
- return this.schemaService.getSchemaForResource(document.uri, doc).then((schema) =&gt; {
2031
- const collectionPromises: Thenable&lt;any&gt;[] = [];
2032
- &nbsp;
2033
- let addValue = true;
2034
- let currentKey = '';
2035
- &nbsp;
2036
- let currentProperty: PropertyASTNode | undefined = undefined;
2037
- if (node) {
2038
- &nbsp;
2039
- if (node.type === 'string') {
2040
- const parent = node.parent;
2041
- if (parent &amp;&amp; parent.type === 'property' &amp;&amp; parent.keyNode === node) {
2042
- addValue = !parent.valueNode;
2043
- currentProperty = parent;
2044
- currentKey = text.substr(node.offset + 1, node.length - 2);
2045
- <span class="missing-if-branch" title="else path not taken" >E</span>if (parent) {
2046
- node = parent.parent;
2047
- }
2048
- }
2049
- }
2050
- }
2051
- &nbsp;
2052
- // proposals for properties
2053
- if (node &amp;&amp; node.type === 'object') {
2054
- // don't suggest keys when the cursor is just before the opening curly brace
2055
- <span class="missing-if-branch" title="if path not taken" >I</span>if (node.offset === offset) {
2056
- <span class="cstat-no" title="statement not covered" > return result;</span>
2057
- }
2058
- // don't suggest properties that are already present
2059
- const properties = node.properties;
2060
- properties.forEach(p =&gt; {
2061
- if (!currentProperty || currentProperty !== p) {
2062
- proposed[p.keyNode.value] = CompletionItem.create('__');
2063
- }
2064
- });
2065
- let separatorAfter = '';
2066
- if (addValue) {
2067
- separatorAfter = this.evaluateSeparatorAfter(document, document.offsetAt(overwriteRange.end));
2068
- }
2069
- &nbsp;
2070
- if (schema) {
2071
- // property proposals with schema
2072
- this.getPropertyCompletions(schema, doc, node, addValue, separatorAfter, collector);
2073
- } else {
2074
- // property proposals without schema
2075
- this.getSchemaLessPropertyCompletions(doc, node, currentKey, collector);
2076
- }
2077
- &nbsp;
2078
- const location = Parser.getNodePath(node);
2079
- this.contributions.forEach(<span class="fstat-no" title="function not covered" >(c</span>ontribution) =&gt; {
2080
- const collectPromise = <span class="cstat-no" title="statement not covered" >contribution.collectPropertyCompletions(document.uri, location, currentWord, addValue, separatorAfter === '', collector);</span>
2081
- <span class="cstat-no" title="statement not covered" > if (collectPromise) {</span>
2082
- <span class="cstat-no" title="statement not covered" > collectionPromises.push(collectPromise);</span>
2083
- }
2084
- });
2085
- <span class="missing-if-branch" title="if path not taken" >I</span>if ((!schema &amp;&amp; currentWord.length &gt; 0 &amp;&amp; text.charAt(offset - currentWord.length - 1) !== '"')) {
2086
- <span class="cstat-no" title="statement not covered" > collector.add({</span>
2087
- kind: CompletionItemKind.Property,
2088
- label: this.getLabelForValue(currentWord),
2089
- insertText: this.getInsertTextForProperty(currentWord, undefined, false, separatorAfter),
2090
- insertTextFormat: InsertTextFormat.Snippet, documentation: '',
2091
- });
2092
- <span class="cstat-no" title="statement not covered" > collector.setAsIncomplete();</span>
2093
- }
2094
- }
2095
- &nbsp;
2096
- // proposals for values
2097
- const types: { [type: string]: boolean } = {};
2098
- if (schema) {
2099
- // value proposals with schema
2100
- this.getValueCompletions(schema, doc, node, offset, document, collector, types);
2101
- } else {
2102
- // value proposals without schema
2103
- this.getSchemaLessValueCompletions(doc, node, offset, document, collector);
2104
- }
2105
- <span class="missing-if-branch" title="if path not taken" >I</span>if (this.contributions.length &gt; 0) {
2106
- <span class="cstat-no" title="statement not covered" > this.getContributedValueCompletions(doc, node, offset, document, collector, collectionPromises);</span>
2107
- }
2108
- &nbsp;
2109
- return this.promiseConstructor.all(collectionPromises).then(() =&gt; {
2110
- if (collector.getNumberOfProposals() === 0) {
2111
- let offsetForSeparator = offset;
2112
- <span class="missing-if-branch" title="if path not taken" >I</span>if (node &amp;&amp; (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {
2113
- <span class="cstat-no" title="statement not covered" > offsetForSeparator = node.offset + node.length;</span>
2114
- }
2115
- const separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator);
2116
- this.addFillerValueCompletions(types, separatorAfter, collector);
2117
- }
2118
- return result;
2119
- });
2120
- });
2121
- }
2122
- &nbsp;
2123
- private getPropertyCompletions(schema: SchemaService.ResolvedSchema, doc: Parser.JSONDocument, node: ASTNode, addValue: boolean, separatorAfter: string, collector: CompletionsCollector): void {
2124
- const matchingSchemas = doc.getMatchingSchemas(schema.schema, node.offset);
2125
- matchingSchemas.forEach((s) =&gt; {
2126
- if (s.node === node &amp;&amp; !s.inverted) {
2127
- const schemaProperties = s.schema.properties;
2128
- if (schemaProperties) {
2129
- Object.keys(schemaProperties).forEach((key: string) =&gt; {
2130
- const propertySchema = schemaProperties[key];
2131
- if (typeof propertySchema === 'object' &amp;&amp; !propertySchema.deprecationMessage &amp;&amp; !propertySchema.doNotSuggest) {
2132
- const proposal: CompletionItem = {
2133
- kind: CompletionItemKind.Property,
2134
- label: key,
2135
- insertText: this.getInsertTextForProperty(key, propertySchema, addValue, separatorAfter),
2136
- insertTextFormat: InsertTextFormat.Snippet,
2137
- filterText: this.getFilterTextForValue(key),
2138
- documentation: this.fromMarkup(propertySchema.markdownDescription) || propertySchema.description || '',
2139
- };
2140
- if (proposal.insertText &amp;&amp; endsWith(proposal.insertText, `$1${separatorAfter}`)) {
2141
- proposal.command = {
2142
- title: 'Suggest',
2143
- command: 'editor.action.triggerSuggest'
2144
- };
2145
- }
2146
- collector.add(proposal);
2147
- }
2148
- });
2149
- }
2150
- }
2151
- });
2152
- }
2153
- &nbsp;
2154
- private getSchemaLessPropertyCompletions(doc: Parser.JSONDocument, node: ASTNode, currentKey: string, collector: CompletionsCollector): void {
2155
- const collectCompletionsForSimilarObject = (obj: ObjectASTNode) =&gt; {
2156
- obj.properties.forEach((p) =&gt; {
2157
- const key = p.keyNode.value;
2158
- collector.add({
2159
- kind: CompletionItemKind.Property,
2160
- label: key,
2161
- insertText: this.getInsertTextForValue(key, ''),
2162
- insertTextFormat: InsertTextFormat.Snippet,
2163
- filterText: this.getFilterTextForValue(key),
2164
- documentation: ''
2165
- });
2166
- });
2167
- };
2168
- if (node.parent) {
2169
- if (node.parent.type === 'property') {
2170
- // if the object is a property value, check the tree for other objects that hang under a property of the same name
2171
- const parentKey = node.parent.keyNode.value;
2172
- doc.visit(n =&gt; {
2173
- if (n.type === 'property' &amp;&amp; n !== node.parent &amp;&amp; n.keyNode.value === parentKey &amp;&amp; n.valueNode &amp;&amp; n.valueNode.type === 'object') {
2174
- collectCompletionsForSimilarObject(n.valueNode);
2175
- }
2176
- return true;
2177
- });
2178
- } else <span class="missing-if-branch" title="else path not taken" >E</span>if (node.parent.type === 'array') {
2179
- // if the object is in an array, use all other array elements as similar objects
2180
- node.parent.items.forEach(n =&gt; {
2181
- if (n.type === 'object' &amp;&amp; n !== node) {
2182
- collectCompletionsForSimilarObject(n);
2183
- }
2184
- });
2185
- }
2186
- } else <span class="missing-if-branch" title="else path not taken" >E</span>if (node.type === 'object') {
2187
- collector.add({
2188
- kind: CompletionItemKind.Property,
2189
- label: '$schema',
2190
- insertText: this.getInsertTextForProperty('$schema', undefined, true, ''),
2191
- insertTextFormat: InsertTextFormat.Snippet, documentation: '',
2192
- filterText: this.getFilterTextForValue("$schema")
2193
- });
2194
- }
2195
- }
2196
- &nbsp;
2197
- private getSchemaLessValueCompletions(doc: Parser.JSONDocument, node: ASTNode | undefined, offset: number, document: TextDocument, collector: CompletionsCollector): void {
2198
- let offsetForSeparator = offset;
2199
- if (node &amp;&amp; (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {
2200
- offsetForSeparator = node.offset + node.length;
2201
- node = node.parent;
2202
- }
2203
- &nbsp;
2204
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!node) {
2205
- <span class="cstat-no" title="statement not covered" > collector.add({</span>
2206
- kind: this.getSuggestionKind('object'),
2207
- label: 'Empty object',
2208
- insertText: this.getInsertTextForValue({}, ''),
2209
- insertTextFormat: InsertTextFormat.Snippet,
2210
- documentation: ''
2211
- });
2212
- <span class="cstat-no" title="statement not covered" > collector.add({</span>
2213
- kind: this.getSuggestionKind('array'),
2214
- label: 'Empty array',
2215
- insertText: this.getInsertTextForValue([], ''),
2216
- insertTextFormat: InsertTextFormat.Snippet,
2217
- documentation: ''
2218
- });
2219
- <span class="cstat-no" title="statement not covered" > return;</span>
2220
- }
2221
- const separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator);
2222
- const collectSuggestionsForValues = (value: ASTNode) =&gt; {
2223
- if (value.parent &amp;&amp; !Parser.contains(value.parent, offset, true)) {
2224
- collector.add({
2225
- kind: this.getSuggestionKind(value.type),
2226
- label: this.getLabelTextForMatchingNode(value, document),
2227
- insertText: this.getInsertTextForMatchingNode(value, document, separatorAfter),
2228
- insertTextFormat: InsertTextFormat.Snippet, documentation: ''
2229
- });
2230
- }
2231
- if (value.type === 'boolean') {
2232
- this.addBooleanValueCompletion(!value.value, separatorAfter, collector);
2233
- }
2234
- };
2235
- &nbsp;
2236
- if (node.type === 'property') {
2237
- <span class="missing-if-branch" title="else path not taken" >E</span>if (offset &gt; (node.colonOffset || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span>) {
2238
- &nbsp;
2239
- const valueNode = node.valueNode;
2240
- <span class="missing-if-branch" title="if path not taken" >I</span>if (valueNode &amp;&amp; (offset &gt; (valueNode.offset + valueNode.length) || valueNode.type === 'object' || valueNode.type === 'array')) {
2241
- <span class="cstat-no" title="statement not covered" > return;</span>
2242
- }
2243
- // suggest values at the same key
2244
- const parentKey = node.keyNode.value;
2245
- doc.visit(n =&gt; {
2246
- if (n.type === 'property' &amp;&amp; n.keyNode.value === parentKey &amp;&amp; n.valueNode) {
2247
- collectSuggestionsForValues(n.valueNode);
2248
- }
2249
- return true;
2250
- });
2251
- <span class="missing-if-branch" title="if path not taken" >I</span>if (parentKey === '$schema' &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >node.parent </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >!node.parent.parent)</span> {
2252
- <span class="cstat-no" title="statement not covered" > this.addDollarSchemaCompletions(separatorAfter, collector);</span>
2253
- }
2254
- }
2255
- }
2256
- <span class="missing-if-branch" title="if path not taken" >I</span>if (node.type === 'array') {
2257
- <span class="cstat-no" title="statement not covered" > if (node.parent &amp;&amp; node.parent.type === 'property') {</span>
2258
- &nbsp;
2259
- // suggest items of an array at the same key
2260
- const parentKey = <span class="cstat-no" title="statement not covered" >node.parent.keyNode.value;</span>
2261
- <span class="cstat-no" title="statement not covered" > doc.visit(<span class="fstat-no" title="function not covered" >(n</span>) =&gt; {</span>
2262
- <span class="cstat-no" title="statement not covered" > if (n.type === 'property' &amp;&amp; n.keyNode.value === parentKey &amp;&amp; n.valueNode &amp;&amp; n.valueNode.type === 'array') {</span>
2263
- <span class="cstat-no" title="statement not covered" > n.valueNode.items.forEach(collectSuggestionsForValues);</span>
2264
- }
2265
- <span class="cstat-no" title="statement not covered" > return true;</span>
2266
- });
2267
- } else {
2268
- // suggest items in the same array
2269
- <span class="cstat-no" title="statement not covered" > node.items.forEach(collectSuggestionsForValues);</span>
2270
- }
2271
- }
2272
- }
2273
- &nbsp;
2274
- &nbsp;
2275
- private getValueCompletions(schema: SchemaService.ResolvedSchema, doc: Parser.JSONDocument, node: ASTNode | undefined, offset: number, document: TextDocument, collector: CompletionsCollector, types: { [type: string]: boolean }): void {
2276
- let offsetForSeparator = offset;
2277
- let parentKey: string | undefined = undefined;
2278
- let valueNode: ASTNode | undefined = undefined;
2279
- &nbsp;
2280
- if (node &amp;&amp; (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {
2281
- offsetForSeparator = node.offset + node.length;
2282
- valueNode = node;
2283
- node = node.parent;
2284
- }
2285
- &nbsp;
2286
- if (!node) {
2287
- this.addSchemaValueCompletions(schema.schema, '', collector, types);
2288
- return;
2289
- }
2290
- &nbsp;
2291
- if ((node.type === 'property') &amp;&amp; offset &gt; (node.colonOffset || <span class="branch-1 cbranch-no" title="branch not covered" >0)</span>) {
2292
- const valueNode = node.valueNode;
2293
- <span class="missing-if-branch" title="if path not taken" >I</span>if (valueNode &amp;&amp; offset &gt; (valueNode.offset + valueNode.length)) {
2294
- <span class="cstat-no" title="statement not covered" > return; </span>// we are past the value node
2295
- }
2296
- parentKey = node.keyNode.value;
2297
- node = node.parent;
2298
- }
2299
- &nbsp;
2300
- if (node &amp;&amp; (parentKey !== undefined || node.type === 'array')) {
2301
- const separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator);
2302
- &nbsp;
2303
- const matchingSchemas = doc.getMatchingSchemas(schema.schema, node.offset, valueNode);
2304
- for (const s of matchingSchemas) {
2305
- if (s.node === node &amp;&amp; !s.inverted &amp;&amp; s.schema) {
2306
- if (node.type === 'array' &amp;&amp; s.schema.items) {
2307
- if (Array.isArray(s.schema.items)) {
2308
- const index = this.findItemAtOffset(node, document, offset);
2309
- <span class="missing-if-branch" title="else path not taken" >E</span>if (index &lt; s.schema.items.length) {
2310
- this.addSchemaValueCompletions(s.schema.items[index], separatorAfter, collector, types);
2311
- }
2312
- } else {
2313
- this.addSchemaValueCompletions(s.schema.items, separatorAfter, collector, types);
2314
- }
2315
- }
2316
- if (s.schema.properties &amp;&amp; parentKey !== undefined) {
2317
- const propertySchema = s.schema.properties[parentKey];
2318
- <span class="missing-if-branch" title="else path not taken" >E</span>if (propertySchema) {
2319
- this.addSchemaValueCompletions(propertySchema, separatorAfter, collector, types);
2320
- }
2321
- }
2322
- }
2323
- }
2324
- if (parentKey === '$schema' &amp;&amp; !node.parent) {
2325
- this.addDollarSchemaCompletions(separatorAfter, collector);
2326
- }
2327
- if (types['boolean']) {
2328
- this.addBooleanValueCompletion(true, separatorAfter, collector);
2329
- this.addBooleanValueCompletion(false, separatorAfter, collector);
2330
- }
2331
- if (types['null']) {
2332
- this.addNullValueCompletion(separatorAfter, collector);
2333
- }
2334
- }
2335
- &nbsp;
2336
- }
2337
- &nbsp;
2338
- <span class="fstat-no" title="function not covered" > private g</span>etContributedValueCompletions(doc: Parser.JSONDocument, node: ASTNode | undefined, offset: number, document: TextDocument, collector: CompletionsCollector, collectionPromises: Thenable&lt;any&gt;[]) {
2339
- <span class="cstat-no" title="statement not covered" > if (!node) {</span>
2340
- <span class="cstat-no" title="statement not covered" > this.contributions.forEach(<span class="fstat-no" title="function not covered" >(c</span>ontribution) =&gt; {</span>
2341
- const collectPromise = <span class="cstat-no" title="statement not covered" >contribution.collectDefaultCompletions(document.uri, collector);</span>
2342
- <span class="cstat-no" title="statement not covered" > if (collectPromise) {</span>
2343
- <span class="cstat-no" title="statement not covered" > collectionPromises.push(collectPromise);</span>
2344
- }
2345
- });
2346
- } else {
2347
- <span class="cstat-no" title="statement not covered" > if (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null') {</span>
2348
- <span class="cstat-no" title="statement not covered" > node = node.parent;</span>
2349
- }
2350
- <span class="cstat-no" title="statement not covered" > if (node &amp;&amp; (node.type === 'property') &amp;&amp; offset &gt; (node.colonOffset || 0)) {</span>
2351
- const parentKey = <span class="cstat-no" title="statement not covered" >node.keyNode.value;</span>
2352
- &nbsp;
2353
- const valueNode = <span class="cstat-no" title="statement not covered" >node.valueNode;</span>
2354
- <span class="cstat-no" title="statement not covered" > if ((!valueNode || offset &lt;= (valueNode.offset + valueNode.length)) &amp;&amp; node.parent) {</span>
2355
- const location = <span class="cstat-no" title="statement not covered" >Parser.getNodePath(node.parent);</span>
2356
- <span class="cstat-no" title="statement not covered" > this.contributions.forEach(<span class="fstat-no" title="function not covered" >(c</span>ontribution) =&gt; {</span>
2357
- const collectPromise = <span class="cstat-no" title="statement not covered" >contribution.collectValueCompletions(document.uri, location, parentKey, collector);</span>
2358
- <span class="cstat-no" title="statement not covered" > if (collectPromise) {</span>
2359
- <span class="cstat-no" title="statement not covered" > collectionPromises.push(collectPromise);</span>
2360
- }
2361
- });
2362
- }
2363
- }
2364
- }
2365
- }
2366
- &nbsp;
2367
- private addSchemaValueCompletions(schema: JSONSchemaRef, separatorAfter: string, collector: CompletionsCollector, types: { [type: string]: boolean }): void {
2368
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof schema === 'object') {
2369
- this.addEnumValueCompletions(schema, separatorAfter, collector);
2370
- this.addDefaultValueCompletions(schema, separatorAfter, collector);
2371
- this.collectTypes(schema, types);
2372
- <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(schema.allOf)) {
2373
- <span class="cstat-no" title="statement not covered" > schema.allOf.forEach(<span class="fstat-no" title="function not covered" >s </span>=&gt; <span class="cstat-no" title="statement not covered" >this.addSchemaValueCompletions(s, separatorAfter, collector, types));</span></span>
2374
- }
2375
- if (Array.isArray(schema.anyOf)) {
2376
- schema.anyOf.forEach(s =&gt; this.addSchemaValueCompletions(s, separatorAfter, collector, types));
2377
- }
2378
- <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(schema.oneOf)) {
2379
- <span class="cstat-no" title="statement not covered" > schema.oneOf.forEach(<span class="fstat-no" title="function not covered" >s </span>=&gt; <span class="cstat-no" title="statement not covered" >this.addSchemaValueCompletions(s, separatorAfter, collector, types));</span></span>
2380
- }
2381
- }
2382
- }
2383
- &nbsp;
2384
- private addDefaultValueCompletions(schema: JSONSchema, separatorAfter: string, collector: CompletionsCollector, arrayDepth = 0): void {
2385
- let hasProposals = false;
2386
- if (isDefined(schema.default)) {
2387
- let type = schema.type;
2388
- let value = schema.default;
2389
- for (let i = arrayDepth; i &gt; 0; i--) {
2390
- <span class="cstat-no" title="statement not covered" > value = [value];</span>
2391
- <span class="cstat-no" title="statement not covered" > type = 'array';</span>
2392
- }
2393
- collector.add({
2394
- kind: this.getSuggestionKind(type),
2395
- label: this.getLabelForValue(value),
2396
- insertText: this.getInsertTextForValue(value, separatorAfter),
2397
- insertTextFormat: InsertTextFormat.Snippet,
2398
- detail: localize('json.suggest.default', 'Default value')
2399
- });
2400
- hasProposals = true;
2401
- }
2402
- if (Array.isArray(schema.examples)) {
2403
- schema.examples.forEach(example =&gt; {
2404
- let type = schema.type;
2405
- let value = example;
2406
- for (let i = arrayDepth; i &gt; 0; i--) {
2407
- <span class="cstat-no" title="statement not covered" > value = [value];</span>
2408
- <span class="cstat-no" title="statement not covered" > type = 'array';</span>
2409
- }
2410
- collector.add({
2411
- kind: this.getSuggestionKind(type),
2412
- label: this.getLabelForValue(value),
2413
- insertText: this.getInsertTextForValue(value, separatorAfter),
2414
- insertTextFormat: InsertTextFormat.Snippet
2415
- });
2416
- hasProposals = true;
2417
- });
2418
- }
2419
- if (Array.isArray(schema.defaultSnippets)) {
2420
- schema.defaultSnippets.forEach(s =&gt; {
2421
- let type = schema.type;
2422
- let value = s.body;
2423
- let label = s.label;
2424
- let insertText: string;
2425
- let filterText: string;
2426
- if (isDefined(value)) {
2427
- let type = schema.type;
2428
- for (let i = arrayDepth; i &gt; 0; i--) {
2429
- value = [value];
2430
- type = 'array';
2431
- }
2432
- insertText = this.getInsertTextForSnippetValue(value, separatorAfter);
2433
- filterText = this.getFilterTextForSnippetValue(value);
2434
- label = label || this.getLabelForSnippetValue(value);
2435
- } else <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof s.bodyText === 'string') {
2436
- let prefix = '', suffix = '', indent = '';
2437
- for (let i = arrayDepth; i &gt; 0; i--) {
2438
- prefix = prefix + indent + '[\n';
2439
- suffix = suffix + '\n' + indent + ']';
2440
- indent += '\t';
2441
- type = 'array';
2442
- }
2443
- insertText = prefix + indent + s.bodyText.split('\n').join('\n' + indent) + suffix + separatorAfter;
2444
- label = label || <span class="branch-1 cbranch-no" title="branch not covered" >insertText,</span>
2445
- filterText = insertText.replace(/[\n]/g, ''); // remove new lines
2446
- } else {
2447
- <span class="cstat-no" title="statement not covered" > return;</span>
2448
- }
2449
- collector.add({
2450
- kind: this.getSuggestionKind(type),
2451
- label,
2452
- documentation: this.fromMarkup(s.markdownDescription) || s.description,
2453
- insertText,
2454
- insertTextFormat: InsertTextFormat.Snippet,
2455
- filterText
2456
- });
2457
- hasProposals = true;
2458
- });
2459
- }
2460
- if (!hasProposals &amp;&amp; typeof schema.items === 'object' &amp;&amp; !Array.isArray(schema.items) &amp;&amp; arrayDepth &lt; 5 /* beware of recursion */) {
2461
- this.addDefaultValueCompletions(schema.items, separatorAfter, collector, arrayDepth + 1);
2462
- }
2463
- }
2464
- &nbsp;
2465
- &nbsp;
2466
- private addEnumValueCompletions(schema: JSONSchema, separatorAfter: string, collector: CompletionsCollector): void {
2467
- if (isDefined(schema.const)) {
2468
- collector.add({
2469
- kind: this.getSuggestionKind(schema.type),
2470
- label: this.getLabelForValue(schema.const),
2471
- insertText: this.getInsertTextForValue(schema.const, separatorAfter),
2472
- insertTextFormat: InsertTextFormat.Snippet,
2473
- documentation: this.fromMarkup(schema.markdownDescription) || schema.description
2474
- });
2475
- }
2476
- &nbsp;
2477
- if (Array.isArray(schema.enum)) {
2478
- for (let i = 0, length = schema.enum.length; i &lt; length; i++) {
2479
- const enm = schema.enum[i];
2480
- let documentation: string | MarkupContent | undefined = this.fromMarkup(schema.markdownDescription) || schema.description;
2481
- if (schema.markdownEnumDescriptions &amp;&amp; i &lt; schema.markdownEnumDescriptions.length &amp;&amp; this.doesSupportMarkdown()) {
2482
- documentation = this.fromMarkup(schema.markdownEnumDescriptions[i]);
2483
- } else if (schema.enumDescriptions &amp;&amp; i &lt; schema.enumDescriptions.length) {
2484
- documentation = schema.enumDescriptions[i];
2485
- }
2486
- collector.add({
2487
- kind: this.getSuggestionKind(schema.type),
2488
- label: this.getLabelForValue(enm),
2489
- insertText: this.getInsertTextForValue(enm, separatorAfter),
2490
- insertTextFormat: InsertTextFormat.Snippet,
2491
- documentation
2492
- });
2493
- }
2494
- }
2495
- }
2496
- &nbsp;
2497
- private collectTypes(schema: JSONSchema, types: { [type: string]: boolean }) {
2498
- if (Array.isArray(schema.enum) || isDefined(schema.const)) {
2499
- return;
2500
- }
2501
- const type = schema.type;
2502
- if (Array.isArray(type)) {
2503
- type.forEach(t =&gt; types[t] = true);
2504
- } else if (type) {
2505
- types[type] = true;
2506
- }
2507
- }
2508
- &nbsp;
2509
- private addFillerValueCompletions(types: { [type: string]: boolean }, separatorAfter: string, collector: CompletionsCollector): void {
2510
- if (types['object']) {
2511
- collector.add({
2512
- kind: this.getSuggestionKind('object'),
2513
- label: '{}',
2514
- insertText: this.getInsertTextForGuessedValue({}, separatorAfter),
2515
- insertTextFormat: InsertTextFormat.Snippet,
2516
- detail: localize('defaults.object', 'New object'),
2517
- documentation: ''
2518
- });
2519
- }
2520
- <span class="missing-if-branch" title="if path not taken" >I</span>if (types['array']) {
2521
- <span class="cstat-no" title="statement not covered" > collector.add({</span>
2522
- kind: this.getSuggestionKind('array'),
2523
- label: '[]',
2524
- insertText: this.getInsertTextForGuessedValue([], separatorAfter),
2525
- insertTextFormat: InsertTextFormat.Snippet,
2526
- detail: localize('defaults.array', 'New array'),
2527
- documentation: ''
2528
- });
2529
- }
2530
- }
2531
- &nbsp;
2532
- private addBooleanValueCompletion(value: boolean, separatorAfter: string, collector: CompletionsCollector): void {
2533
- collector.add({
2534
- kind: this.getSuggestionKind('boolean'),
2535
- label: value ? 'true' : 'false',
2536
- insertText: this.getInsertTextForValue(value, separatorAfter),
2537
- insertTextFormat: InsertTextFormat.Snippet,
2538
- documentation: ''
2539
- });
2540
- }
2541
- &nbsp;
2542
- private addNullValueCompletion(separatorAfter: string, collector: CompletionsCollector): void {
2543
- collector.add({
2544
- kind: this.getSuggestionKind('null'),
2545
- label: 'null',
2546
- insertText: 'null' + separatorAfter,
2547
- insertTextFormat: InsertTextFormat.Snippet,
2548
- documentation: ''
2549
- });
2550
- }
2551
- &nbsp;
2552
- private addDollarSchemaCompletions(separatorAfter: string, collector: CompletionsCollector): void {
2553
- const schemaIds = this.schemaService.getRegisteredSchemaIds(schema =&gt; schema === 'http' || <span class="branch-1 cbranch-no" title="branch not covered" >schema === 'https')</span>;
2554
- schemaIds.forEach(schemaId =&gt; collector.add({
2555
- kind: CompletionItemKind.Module,
2556
- label: this.getLabelForValue(schemaId),
2557
- filterText: this.getFilterTextForValue(schemaId),
2558
- insertText: this.getInsertTextForValue(schemaId, separatorAfter),
2559
- insertTextFormat: InsertTextFormat.Snippet, documentation: ''
2560
- }));
2561
- }
2562
- &nbsp;
2563
- private getLabelForValue(value: any): string {
2564
- return JSON.stringify(value);
2565
- }
2566
- &nbsp;
2567
- private getFilterTextForValue(value: any): string {
2568
- return JSON.stringify(value);
2569
- }
2570
- &nbsp;
2571
- private getFilterTextForSnippetValue(value: any): string {
2572
- return JSON.stringify(value).replace(/\$\{\d+:([^}]+)\}|\$\d+/g, '$1');
2573
- }
2574
- &nbsp;
2575
- private getLabelForSnippetValue(value: any): string {
2576
- const label = JSON.stringify(value);
2577
- return label.replace(/\$\{\d+:([^}]+)\}|\$\d+/g, '$1');
2578
- }
2579
- &nbsp;
2580
- private getInsertTextForPlainText(text: string): string {
2581
- return text.replace(/[\\\$\}]/g, '\\$&amp;'); // escape $, \ and }
2582
- }
2583
- &nbsp;
2584
- private getInsertTextForValue(value: any, separatorAfter: string): string {
2585
- var text = JSON.stringify(value, null, '\t');
2586
- if (text === '{}') {
2587
- return '{$1}' + separatorAfter;
2588
- } else <span class="missing-if-branch" title="if path not taken" >I</span>if (text === '[]') {
2589
- <span class="cstat-no" title="statement not covered" > return '[$1]' + separatorAfter;</span>
2590
- }
2591
- return this.getInsertTextForPlainText(text + separatorAfter);
2592
- }
2593
- &nbsp;
2594
- private getInsertTextForSnippetValue(value: any, separatorAfter: string): string {
2595
- const replacer = (value: any) =&gt; {
2596
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof value === 'string') {
2597
- if (value[0] === '^') {
2598
- return value.substr(1);
2599
- }
2600
- }
2601
- return JSON.stringify(value);
2602
- };
2603
- return stringifyObject(value, '', replacer) + separatorAfter;
2604
- }
2605
- &nbsp;
2606
- private getInsertTextForGuessedValue(value: any, separatorAfter: string): string {
2607
- switch (typeof value) {
2608
- case 'object':
2609
- <span class="missing-if-branch" title="if path not taken" >I</span>if (value === null) {
2610
- <span class="cstat-no" title="statement not covered" > return '${1:null}' + separatorAfter;</span>
2611
- }
2612
- return this.getInsertTextForValue(value, separatorAfter);
2613
- case 'string':
2614
- let snippetValue = JSON.stringify(value);
2615
- snippetValue = snippetValue.substr(1, snippetValue.length - 2); // remove quotes
2616
- snippetValue = this.getInsertTextForPlainText(snippetValue); // escape \ and }
2617
- return '"${1:' + snippetValue + '}"' + separatorAfter;
2618
- case 'number':
2619
- case 'boolean':
2620
- return '${1:' + JSON.stringify(value) + '}' + separatorAfter;
2621
- }
2622
- <span class="cstat-no" title="statement not covered" > return this.getInsertTextForValue(value, separatorAfter);</span>
2623
- }
2624
- &nbsp;
2625
- private getSuggestionKind(type: any): CompletionItemKind {
2626
- if (Array.isArray(type)) {
2627
- const array = &lt;any[]&gt;type;
2628
- type = array.length &gt; 0 ? array[0] : <span class="branch-1 cbranch-no" title="branch not covered" >undefined;</span>
2629
- }
2630
- if (!type) {
2631
- return CompletionItemKind.Value;
2632
- }
2633
- switch (type) {
2634
- case 'string': return CompletionItemKind.Value;
2635
- case 'object': return CompletionItemKind.Module;
2636
- <span class="branch-2 cbranch-no" title="branch not covered" > case 'property': <span class="cstat-no" title="statement not covered" >return CompletionItemKind.Property;</span></span>
2637
- default: return CompletionItemKind.Value;
2638
- }
2639
- }
2640
- &nbsp;
2641
- private getLabelTextForMatchingNode(node: ASTNode, document: TextDocument): string {
2642
- switch (node.type) {
2643
- <span class="branch-0 cbranch-no" title="branch not covered" > case 'array':</span>
2644
- <span class="cstat-no" title="statement not covered" > return '[]';</span>
2645
- case 'object':
2646
- return '{}';
2647
- default:
2648
- const content = document.getText().substr(node.offset, node.length);
2649
- return content;
2650
- }
2651
- }
2652
- &nbsp;
2653
- private getInsertTextForMatchingNode(node: ASTNode, document: TextDocument, separatorAfter: string): string {
2654
- switch (node.type) {
2655
- <span class="branch-0 cbranch-no" title="branch not covered" > case 'array':</span>
2656
- <span class="cstat-no" title="statement not covered" > return this.getInsertTextForValue([], separatorAfter);</span>
2657
- case 'object':
2658
- return this.getInsertTextForValue({}, separatorAfter);
2659
- default:
2660
- const content = document.getText().substr(node.offset, node.length) + separatorAfter;
2661
- return this.getInsertTextForPlainText(content);
2662
- }
2663
- }
2664
- &nbsp;
2665
- private getInsertTextForProperty(key: string, propertySchema: JSONSchema | undefined, addValue: boolean, separatorAfter: string): string {
2666
- &nbsp;
2667
- const propertyText = this.getInsertTextForValue(key, '');
2668
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!addValue) {
2669
- <span class="cstat-no" title="statement not covered" > return propertyText;</span>
2670
- }
2671
- const resultText = propertyText + ': ';
2672
- &nbsp;
2673
- let value;
2674
- let nValueProposals = 0;
2675
- if (propertySchema) {
2676
- if (Array.isArray(propertySchema.defaultSnippets)) {
2677
- if (propertySchema.defaultSnippets.length === 1) {
2678
- const body = propertySchema.defaultSnippets[0].body;
2679
- <span class="missing-if-branch" title="else path not taken" >E</span>if (isDefined(body)) {
2680
- value = this.getInsertTextForSnippetValue(body, '');
2681
- }
2682
- }
2683
- nValueProposals += propertySchema.defaultSnippets.length;
2684
- }
2685
- if (propertySchema.enum) {
2686
- if (!value &amp;&amp; propertySchema.enum.length === 1) {
2687
- value = this.getInsertTextForGuessedValue(propertySchema.enum[0], '');
2688
- }
2689
- nValueProposals += propertySchema.enum.length;
2690
- }
2691
- if (isDefined(propertySchema.default)) {
2692
- if (!value) {
2693
- value = this.getInsertTextForGuessedValue(propertySchema.default, '');
2694
- }
2695
- nValueProposals++;
2696
- }
2697
- <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(propertySchema.examples) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >propertySchema.examples.length)</span> {
2698
- <span class="cstat-no" title="statement not covered" > if (!value) {</span>
2699
- <span class="cstat-no" title="statement not covered" > value = this.getInsertTextForGuessedValue(propertySchema.examples[0], '');</span>
2700
- }
2701
- <span class="cstat-no" title="statement not covered" > nValueProposals += propertySchema.examples.length;</span>
2702
- }
2703
- if (nValueProposals === 0) {
2704
- var type = Array.isArray(propertySchema.type) ? <span class="branch-0 cbranch-no" title="branch not covered" >propertySchema.type[0] </span>: propertySchema.type;
2705
- if (!type) {
2706
- <span class="missing-if-branch" title="if path not taken" >I</span>if (propertySchema.properties) {
2707
- <span class="cstat-no" title="statement not covered" > type = 'object';</span>
2708
- } else <span class="missing-if-branch" title="if path not taken" >I</span>if (propertySchema.items) {
2709
- <span class="cstat-no" title="statement not covered" > type = 'array';</span>
2710
- }
2711
- }
2712
- switch (type) {
2713
- case 'boolean':
2714
- value = '$1';
2715
- break;
2716
- case 'string':
2717
- value = '"$1"';
2718
- break;
2719
- case 'object':
2720
- value = '{$1}';
2721
- break;
2722
- case 'array':
2723
- value = '[$1]';
2724
- break;
2725
- case 'number':
2726
- case 'integer':
2727
- value = '${1:0}';
2728
- break;
2729
- <span class="branch-6 cbranch-no" title="branch not covered" > case 'null':</span>
2730
- <span class="cstat-no" title="statement not covered" > value = '${1:null}';</span>
2731
- <span class="cstat-no" title="statement not covered" > break;</span>
2732
- default:
2733
- return propertyText;
2734
- }
2735
- }
2736
- }
2737
- if (!value || nValueProposals &gt; 1) {
2738
- value = '$1';
2739
- }
2740
- return resultText + value + separatorAfter;
2741
- }
2742
- &nbsp;
2743
- private getCurrentWord(document: TextDocument, offset: number) {
2744
- var i = offset - 1;
2745
- var text = document.getText();
2746
- while (i &gt;= 0 &amp;&amp; ' \t\n\r\v":{[,]}'.indexOf(text.charAt(i)) === -1) {
2747
- i--;
2748
- }
2749
- return text.substring(i + 1, offset);
2750
- }
2751
- &nbsp;
2752
- private evaluateSeparatorAfter(document: TextDocument, offset: number) {
2753
- const scanner = Json.createScanner(document.getText(), true);
2754
- scanner.setPosition(offset);
2755
- const token = scanner.scan();
2756
- switch (token) {
2757
- case Json.SyntaxKind.CommaToken:
2758
- case Json.SyntaxKind.CloseBraceToken:
2759
- case Json.SyntaxKind.CloseBracketToken:
2760
- case Json.SyntaxKind.EOF:
2761
- return '';
2762
- default:
2763
- return ',';
2764
- }
2765
- }
2766
- &nbsp;
2767
- private findItemAtOffset(node: ArrayASTNode, document: TextDocument, offset: number) {
2768
- const scanner = Json.createScanner(document.getText(), true);
2769
- const children = node.items;
2770
- for (let i = children.length - 1; i &gt;= 0; i--) {
2771
- const child = children[i];
2772
- if (offset &gt; child.offset + child.length) {
2773
- scanner.setPosition(child.offset + child.length);
2774
- const token = scanner.scan();
2775
- <span class="missing-if-branch" title="else path not taken" >E</span>if (token === Json.SyntaxKind.CommaToken &amp;&amp; offset &gt;= scanner.getTokenOffset() + scanner.getTokenLength()) {
2776
- return i + 1;
2777
- }
2778
- <span class="cstat-no" title="statement not covered" > return i;</span>
2779
- } else if (offset &gt;= child.offset) {
2780
- return i;
2781
- }
2782
- }
2783
- return 0;
2784
- }
2785
- &nbsp;
2786
- private isInComment(document: TextDocument, start: number, offset: number) {
2787
- const scanner = Json.createScanner(document.getText(), false);
2788
- scanner.setPosition(start);
2789
- let token = scanner.scan();
2790
- while (token !== Json.SyntaxKind.EOF &amp;&amp; (scanner.getTokenOffset() + scanner.getTokenLength() &lt; offset)) {
2791
- token = scanner.scan();
2792
- }
2793
- return (token === Json.SyntaxKind.LineCommentTrivia || token === Json.SyntaxKind.BlockCommentTrivia) &amp;&amp; scanner.getTokenOffset() &lt;= offset;
2794
- }
2795
- &nbsp;
2796
- private fromMarkup(markupString: string | undefined): MarkupContent | string | undefined {
2797
- if (markupString &amp;&amp; this.doesSupportMarkdown()) {
2798
- return {
2799
- kind: MarkupKind.Markdown,
2800
- value: markupString
2801
- };
2802
- }
2803
- return undefined;
2804
- }
2805
- &nbsp;
2806
- private doesSupportMarkdown() {
2807
- if (!isDefined(this.supportsMarkdown)) {
2808
- const completion = this.clientCapabilities.textDocument &amp;&amp; this.clientCapabilities.textDocument.completion;
2809
- this.supportsMarkdown = completion &amp;&amp; completion.completionItem &amp;&amp; Array.isArray(completion.completionItem.documentationFormat) &amp;&amp; completion.completionItem.documentationFormat.indexOf(MarkupKind.Markdown) !== -1;
2810
- }
2811
- return this.supportsMarkdown;
2812
- }
2813
- &nbsp;
2814
- <span class="fstat-no" title="function not covered" > private d</span>oesSupportsCommitCharacters() {
2815
- <span class="cstat-no" title="statement not covered" > if (!isDefined(this.supportsCommitCharacters)) {</span>
2816
- const completion = <span class="cstat-no" title="statement not covered" >this.clientCapabilities.textDocument &amp;&amp; this.clientCapabilities.textDocument.completion;</span>
2817
- <span class="cstat-no" title="statement not covered" > this.supportsCommitCharacters = completion &amp;&amp; completion.completionItem &amp;&amp; !!completion.completionItem.commitCharactersSupport;</span>
2818
- }
2819
- <span class="cstat-no" title="statement not covered" > return this.supportsCommitCharacters;</span>
2820
- }
2821
- &nbsp;
2822
- }
2823
- &nbsp;</pre></td></tr></table></pre>
2824
-
2825
- <div class='push'></div><!-- for sticky footer -->
2826
- </div><!-- /wrapper -->
2827
- <div class='footer quiet pad2 space-top1 center small'>
2828
- Code coverage generated by
2829
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
2830
- at Mon Apr 27 2020 21:56:17 GMT+0200 (Central European Summer Time)
2831
- </div>
2832
- </div>
2833
- <script src="../../prettify.js"></script>
2834
- <script>
2835
- window.onload = function () {
2836
- prettyPrint();
2837
- };
2838
- </script>
2839
- <script src="../../sorter.js"></script>
2840
- <script src="../../block-navigation.js"></script>
2841
- </body>
2842
- </html>
2843
-