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.
- package/CHANGELOG.md +12 -8
- package/README.md +2 -1
- package/lib/esm/jsonLanguageService.d.ts +6 -2
- package/lib/esm/jsonLanguageService.js +1 -0
- package/lib/esm/jsonLanguageTypes.d.ts +7 -4
- package/lib/esm/jsonLanguageTypes.js +7 -3
- package/lib/esm/parser/jsonParser.js +33 -6
- package/lib/esm/services/jsonCompletion.js +61 -3
- package/lib/esm/services/jsonSchemaService.js +18 -3
- package/lib/umd/jsonLanguageService.d.ts +6 -2
- package/lib/umd/jsonLanguageService.js +13 -4
- package/lib/umd/jsonLanguageTypes.d.ts +7 -4
- package/lib/umd/jsonLanguageTypes.js +31 -6
- package/lib/umd/parser/jsonParser.js +34 -6
- package/lib/umd/services/configuration.js +1 -0
- package/lib/umd/services/jsonCompletion.js +62 -3
- package/lib/umd/services/jsonDefinition.js +1 -0
- package/lib/umd/services/jsonDocumentSymbols.js +1 -0
- package/lib/umd/services/jsonFolding.js +1 -0
- package/lib/umd/services/jsonHover.js +1 -0
- package/lib/umd/services/jsonSchemaService.js +19 -3
- package/lib/umd/services/jsonSelectionRanges.js +1 -0
- package/lib/umd/services/jsonValidation.js +1 -0
- package/lib/umd/utils/colors.js +1 -0
- package/lib/umd/utils/json.js +1 -0
- package/lib/umd/utils/objects.js +1 -0
- package/lib/umd/utils/strings.js +1 -0
- package/package.json +1 -1
- package/.nyc_output/0abe3076-16a9-4975-87da-4ecfc24d9226.json +0 -1
- package/.nyc_output/5a0d1463-368f-4136-8a80-4c7fda7ca33b.json +0 -1
- package/.nyc_output/65e3530f-ee58-4bcb-8484-70eb1822427e.json +0 -1
- package/.nyc_output/a37c9066-0aa4-4d91-a56b-17754005a42d.json +0 -1
- package/.nyc_output/b7eb272f-3bf3-48c4-9a42-90600332b363.json +0 -1
- package/.nyc_output/cabc6994-64f7-4258-bb45-9bb5529b388e.json +0 -1
- package/.nyc_output/processinfo/0abe3076-16a9-4975-87da-4ecfc24d9226.json +0 -1
- package/.nyc_output/processinfo/5a0d1463-368f-4136-8a80-4c7fda7ca33b.json +0 -1
- package/.nyc_output/processinfo/65e3530f-ee58-4bcb-8484-70eb1822427e.json +0 -1
- package/.nyc_output/processinfo/a37c9066-0aa4-4d91-a56b-17754005a42d.json +0 -1
- package/.nyc_output/processinfo/b7eb272f-3bf3-48c4-9a42-90600332b363.json +0 -1
- package/.nyc_output/processinfo/cabc6994-64f7-4258-bb45-9bb5529b388e.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -79
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -156
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -170
- package/coverage/lcov-report/src/index.html +0 -126
- package/coverage/lcov-report/src/jsonLanguageService.ts.html +0 -383
- package/coverage/lcov-report/src/jsonLanguageTypes.ts.html +0 -968
- package/coverage/lcov-report/src/parser/index.html +0 -111
- package/coverage/lcov-report/src/parser/jsonParser.ts.html +0 -3860
- package/coverage/lcov-report/src/services/configuration.ts.html +0 -1679
- package/coverage/lcov-report/src/services/index.html +0 -216
- package/coverage/lcov-report/src/services/jsonCompletion.ts.html +0 -2843
- package/coverage/lcov-report/src/services/jsonDocumentSymbols.ts.html +0 -911
- package/coverage/lcov-report/src/services/jsonFolding.ts.html +0 -455
- package/coverage/lcov-report/src/services/jsonHover.ts.html +0 -461
- package/coverage/lcov-report/src/services/jsonSchemaService.ts.html +0 -1895
- package/coverage/lcov-report/src/services/jsonSelectionRanges.ts.html +0 -311
- package/coverage/lcov-report/src/services/jsonValidation.ts.html +0 -560
- package/coverage/lcov-report/src/utils/colors.ts.html +0 -299
- package/coverage/lcov-report/src/utils/index.html +0 -156
- package/coverage/lcov-report/src/utils/json.ts.html +0 -206
- package/coverage/lcov-report/src/utils/objects.ts.html +0 -296
- package/coverage/lcov-report/src/utils/strings.ts.html +0 -224
- package/coverage/lcov.info +0 -4219
|
@@ -1,1895 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/services/jsonSchemaService.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> jsonSchemaService.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">92.33% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>325/352</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">81.41% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>127/156</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">98.08% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>51/52</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">92.36% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>290/314</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
666
|
-
<span class="cline-any cline-neutral"> </span>
|
|
667
|
-
<span class="cline-any cline-neutral"> </span>
|
|
668
|
-
<span class="cline-any cline-neutral"> </span>
|
|
669
|
-
<span class="cline-any cline-neutral"> </span>
|
|
670
|
-
<span class="cline-any cline-yes">1x</span>
|
|
671
|
-
<span class="cline-any cline-neutral"> </span>
|
|
672
|
-
<span class="cline-any cline-yes">1x</span>
|
|
673
|
-
<span class="cline-any cline-yes">1x</span>
|
|
674
|
-
<span class="cline-any cline-yes">1x</span>
|
|
675
|
-
<span class="cline-any cline-neutral"> </span>
|
|
676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-yes">1x</span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-yes">1x</span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-neutral"> </span>
|
|
687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
688
|
-
<span class="cline-any cline-neutral"> </span>
|
|
689
|
-
<span class="cline-any cline-neutral"> </span>
|
|
690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
691
|
-
<span class="cline-any cline-neutral"> </span>
|
|
692
|
-
<span class="cline-any cline-neutral"> </span>
|
|
693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
699
|
-
<span class="cline-any cline-neutral"> </span>
|
|
700
|
-
<span class="cline-any cline-neutral"> </span>
|
|
701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-neutral"> </span>
|
|
708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
713
|
-
<span class="cline-any cline-neutral"> </span>
|
|
714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-neutral"> </span>
|
|
729
|
-
<span class="cline-any cline-neutral"> </span>
|
|
730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
732
|
-
<span class="cline-any cline-neutral"> </span>
|
|
733
|
-
<span class="cline-any cline-neutral"> </span>
|
|
734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-yes">1x</span>
|
|
738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
739
|
-
<span class="cline-any cline-neutral"> </span>
|
|
740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
744
|
-
<span class="cline-any cline-yes">100x</span>
|
|
745
|
-
<span class="cline-any cline-yes">100x</span>
|
|
746
|
-
<span class="cline-any cline-yes">100x</span>
|
|
747
|
-
<span class="cline-any cline-yes">200x</span>
|
|
748
|
-
<span class="cline-any cline-yes">102x</span>
|
|
749
|
-
<span class="cline-any cline-yes">102x</span>
|
|
750
|
-
<span class="cline-any cline-yes">1x</span>
|
|
751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
752
|
-
<span class="cline-any cline-yes">102x</span>
|
|
753
|
-
<span class="cline-any cline-yes">102x</span>
|
|
754
|
-
<span class="cline-any cline-neutral"> </span>
|
|
755
|
-
<span class="cline-any cline-yes">100x</span>
|
|
756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-no"> </span>
|
|
759
|
-
<span class="cline-any cline-no"> </span>
|
|
760
|
-
<span class="cline-any cline-no"> </span>
|
|
761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
762
|
-
<span class="cline-any cline-neutral"> </span>
|
|
763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-yes">1x</span>
|
|
766
|
-
<span class="cline-any cline-yes">100x</span>
|
|
767
|
-
<span class="cline-any cline-yes">100x</span>
|
|
768
|
-
<span class="cline-any cline-yes">111x</span>
|
|
769
|
-
<span class="cline-any cline-yes">111x</span>
|
|
770
|
-
<span class="cline-any cline-yes">104x</span>
|
|
771
|
-
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-neutral"> </span>
|
|
773
|
-
<span class="cline-any cline-yes">100x</span>
|
|
774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
775
|
-
<span class="cline-any cline-neutral"> </span>
|
|
776
|
-
<span class="cline-any cline-yes">1x</span>
|
|
777
|
-
<span class="cline-any cline-yes">98x</span>
|
|
778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
779
|
-
<span class="cline-any cline-yes">1x</span>
|
|
780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
781
|
-
<span class="cline-any cline-neutral"> </span>
|
|
782
|
-
<span class="cline-any cline-neutral"> </span>
|
|
783
|
-
<span class="cline-any cline-yes">1x</span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
786
|
-
<span class="cline-any cline-neutral"> </span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-neutral"> </span>
|
|
789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
791
|
-
<span class="cline-any cline-neutral"> </span>
|
|
792
|
-
<span class="cline-any cline-neutral"> </span>
|
|
793
|
-
<span class="cline-any cline-yes">1133x</span>
|
|
794
|
-
<span class="cline-any cline-yes">1133x</span>
|
|
795
|
-
<span class="cline-any cline-yes">1133x</span>
|
|
796
|
-
<span class="cline-any cline-yes">1133x</span>
|
|
797
|
-
<span class="cline-any cline-yes">1104x</span>
|
|
798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
799
|
-
<span class="cline-any cline-neutral"> </span>
|
|
800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
801
|
-
<span class="cline-any cline-yes">1x</span>
|
|
802
|
-
<span class="cline-any cline-yes">239x</span>
|
|
803
|
-
<span class="cline-any cline-yes">36x</span>
|
|
804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
805
|
-
<span class="cline-any cline-yes">239x</span>
|
|
806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
808
|
-
<span class="cline-any cline-yes">119x</span>
|
|
809
|
-
<span class="cline-any cline-yes">119x</span>
|
|
810
|
-
<span class="cline-any cline-yes">115x</span>
|
|
811
|
-
<span class="cline-any cline-yes">115x</span>
|
|
812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
814
|
-
<span class="cline-any cline-yes">119x</span>
|
|
815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
817
|
-
<span class="cline-any cline-yes">1x</span>
|
|
818
|
-
<span class="cline-any cline-yes">8x</span>
|
|
819
|
-
<span class="cline-any cline-yes">8x</span>
|
|
820
|
-
<span class="cline-any cline-yes">8x</span>
|
|
821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
822
|
-
<span class="cline-any cline-yes">1x</span>
|
|
823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
825
|
-
<span class="cline-any cline-yes">1x</span>
|
|
826
|
-
<span class="cline-any cline-neutral"> </span>
|
|
827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
829
|
-
<span class="cline-any cline-yes">2246x</span>
|
|
830
|
-
<span class="cline-any cline-yes">1141x</span>
|
|
831
|
-
<span class="cline-any cline-yes">1141x</span>
|
|
832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
833
|
-
<span class="cline-any cline-yes">1x</span>
|
|
834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
835
|
-
<span class="cline-any cline-yes">1x</span>
|
|
836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
837
|
-
<span class="cline-any cline-neutral"> </span>
|
|
838
|
-
<span class="cline-any cline-neutral"> </span>
|
|
839
|
-
<span class="cline-any cline-yes">116x</span>
|
|
840
|
-
<span class="cline-any cline-yes">116x</span>
|
|
841
|
-
<span class="cline-any cline-yes">116x</span>
|
|
842
|
-
<span class="cline-any cline-neutral"> </span>
|
|
843
|
-
<span class="cline-any cline-neutral"> </span>
|
|
844
|
-
<span class="cline-any cline-yes">1x</span>
|
|
845
|
-
<span class="cline-any cline-yes">9x</span>
|
|
846
|
-
<span class="cline-any cline-yes">9x</span>
|
|
847
|
-
<span class="cline-any cline-yes">8x</span>
|
|
848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
849
|
-
<span class="cline-any cline-yes">1x</span>
|
|
850
|
-
<span class="cline-any cline-neutral"> </span>
|
|
851
|
-
<span class="cline-any cline-neutral"> </span>
|
|
852
|
-
<span class="cline-any cline-yes">1x</span>
|
|
853
|
-
<span class="cline-any cline-yes">27x</span>
|
|
854
|
-
<span class="cline-any cline-yes">8x</span>
|
|
855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
856
|
-
<span class="cline-any cline-yes">19x</span>
|
|
857
|
-
<span class="cline-any cline-neutral"> </span>
|
|
858
|
-
<span class="cline-any cline-yes">19x</span>
|
|
859
|
-
<span class="cline-any cline-yes">15x</span>
|
|
860
|
-
<span class="cline-any cline-yes">4x</span>
|
|
861
|
-
<span class="cline-any cline-no"> </span>
|
|
862
|
-
<span class="cline-any cline-no"> </span>
|
|
863
|
-
<span class="cline-any cline-no"> </span>
|
|
864
|
-
<span class="cline-any cline-no"> </span>
|
|
865
|
-
<span class="cline-any cline-neutral"> </span>
|
|
866
|
-
<span class="cline-any cline-neutral"> </span>
|
|
867
|
-
<span class="cline-any cline-yes">4x</span>
|
|
868
|
-
<span class="cline-any cline-no"> </span>
|
|
869
|
-
<span class="cline-any cline-yes">4x</span>
|
|
870
|
-
<span class="cline-any cline-yes">3x</span>
|
|
871
|
-
<span class="cline-any cline-no"> </span>
|
|
872
|
-
<span class="cline-any cline-no"> </span>
|
|
873
|
-
<span class="cline-any cline-no"> </span>
|
|
874
|
-
<span class="cline-any cline-neutral"> </span>
|
|
875
|
-
<span class="cline-any cline-yes">3x</span>
|
|
876
|
-
<span class="cline-any cline-yes">3x</span>
|
|
877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
878
|
-
<span class="cline-any cline-neutral"> </span>
|
|
879
|
-
<span class="cline-any cline-neutral"> </span>
|
|
880
|
-
<span class="cline-any cline-yes">1x</span>
|
|
881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
882
|
-
<span class="cline-any cline-yes">1x</span>
|
|
883
|
-
<span class="cline-any cline-neutral"> </span>
|
|
884
|
-
<span class="cline-any cline-yes">1x</span>
|
|
885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
888
|
-
<span class="cline-any cline-neutral"> </span>
|
|
889
|
-
<span class="cline-any cline-neutral"> </span>
|
|
890
|
-
<span class="cline-any cline-neutral"> </span>
|
|
891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
893
|
-
<span class="cline-any cline-neutral"> </span>
|
|
894
|
-
<span class="cline-any cline-neutral"> </span>
|
|
895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
897
|
-
<span class="cline-any cline-neutral"> </span>
|
|
898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
900
|
-
<span class="cline-any cline-neutral"> </span>
|
|
901
|
-
<span class="cline-any cline-yes">364x</span>
|
|
902
|
-
<span class="cline-any cline-yes">364x</span>
|
|
903
|
-
<span class="cline-any cline-yes">364x</span>
|
|
904
|
-
<span class="cline-any cline-yes">364x</span>
|
|
905
|
-
<span class="cline-any cline-neutral"> </span>
|
|
906
|
-
<span class="cline-any cline-yes">364x</span>
|
|
907
|
-
<span class="cline-any cline-yes">364x</span>
|
|
908
|
-
<span class="cline-any cline-yes">364x</span>
|
|
909
|
-
<span class="cline-any cline-yes">364x</span>
|
|
910
|
-
<span class="cline-any cline-yes">364x</span>
|
|
911
|
-
<span class="cline-any cline-neutral"> </span>
|
|
912
|
-
<span class="cline-any cline-neutral"> </span>
|
|
913
|
-
<span class="cline-any cline-yes">1x</span>
|
|
914
|
-
<span class="cline-any cline-yes">4x</span>
|
|
915
|
-
<span class="cline-any cline-yes">16x</span>
|
|
916
|
-
<span class="cline-any cline-yes">16x</span>
|
|
917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
918
|
-
<span class="cline-any cline-neutral"> </span>
|
|
919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
920
|
-
<span class="cline-any cline-yes">1x</span>
|
|
921
|
-
<span class="cline-any cline-yes">1365x</span>
|
|
922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
923
|
-
<span class="cline-any cline-neutral"> </span>
|
|
924
|
-
<span class="cline-any cline-yes">1x</span>
|
|
925
|
-
<span class="cline-any cline-no"> </span>
|
|
926
|
-
<span class="cline-any cline-no"> </span>
|
|
927
|
-
<span class="cline-any cline-neutral"> </span>
|
|
928
|
-
<span class="cline-any cline-neutral"> </span>
|
|
929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
930
|
-
<span class="cline-any cline-yes">4x</span>
|
|
931
|
-
<span class="cline-any cline-yes">4x</span>
|
|
932
|
-
<span class="cline-any cline-yes">4x</span>
|
|
933
|
-
<span class="cline-any cline-neutral"> </span>
|
|
934
|
-
<span class="cline-any cline-yes">4x</span>
|
|
935
|
-
<span class="cline-any cline-yes">23x</span>
|
|
936
|
-
<span class="cline-any cline-neutral"> </span>
|
|
937
|
-
<span class="cline-any cline-yes">4x</span>
|
|
938
|
-
<span class="cline-any cline-yes">8x</span>
|
|
939
|
-
<span class="cline-any cline-yes">8x</span>
|
|
940
|
-
<span class="cline-any cline-yes">46x</span>
|
|
941
|
-
<span class="cline-any cline-yes">46x</span>
|
|
942
|
-
<span class="cline-any cline-yes">8x</span>
|
|
943
|
-
<span class="cline-any cline-yes">4x</span>
|
|
944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
945
|
-
<span class="cline-any cline-yes">8x</span>
|
|
946
|
-
<span class="cline-any cline-yes">8x</span>
|
|
947
|
-
<span class="cline-any cline-yes">8x</span>
|
|
948
|
-
<span class="cline-any cline-neutral"> </span>
|
|
949
|
-
<span class="cline-any cline-neutral"> </span>
|
|
950
|
-
<span class="cline-any cline-neutral"> </span>
|
|
951
|
-
<span class="cline-any cline-yes">4x</span>
|
|
952
|
-
<span class="cline-any cline-neutral"> </span>
|
|
953
|
-
<span class="cline-any cline-neutral"> </span>
|
|
954
|
-
<span class="cline-any cline-yes">1x</span>
|
|
955
|
-
<span class="cline-any cline-yes">339x</span>
|
|
956
|
-
<span class="cline-any cline-yes">339x</span>
|
|
957
|
-
<span class="cline-any cline-yes">339x</span>
|
|
958
|
-
<span class="cline-any cline-yes">1000x</span>
|
|
959
|
-
<span class="cline-any cline-yes">1000x</span>
|
|
960
|
-
<span class="cline-any cline-neutral"> </span>
|
|
961
|
-
<span class="cline-any cline-neutral"> </span>
|
|
962
|
-
<span class="cline-any cline-yes">339x</span>
|
|
963
|
-
<span class="cline-any cline-yes">331x</span>
|
|
964
|
-
<span class="cline-any cline-yes">662x</span>
|
|
965
|
-
<span class="cline-any cline-yes">2x</span>
|
|
966
|
-
<span class="cline-any cline-yes">2x</span>
|
|
967
|
-
<span class="cline-any cline-yes">2x</span>
|
|
968
|
-
<span class="cline-any cline-neutral"> </span>
|
|
969
|
-
<span class="cline-any cline-neutral"> </span>
|
|
970
|
-
<span class="cline-any cline-neutral"> </span>
|
|
971
|
-
<span class="cline-any cline-neutral"> </span>
|
|
972
|
-
<span class="cline-any cline-yes">1x</span>
|
|
973
|
-
<span class="cline-any cline-yes">1133x</span>
|
|
974
|
-
<span class="cline-any cline-yes">1133x</span>
|
|
975
|
-
<span class="cline-any cline-yes">1133x</span>
|
|
976
|
-
<span class="cline-any cline-neutral"> </span>
|
|
977
|
-
<span class="cline-any cline-neutral"> </span>
|
|
978
|
-
<span class="cline-any cline-yes">1x</span>
|
|
979
|
-
<span class="cline-any cline-yes">228x</span>
|
|
980
|
-
<span class="cline-any cline-neutral"> </span>
|
|
981
|
-
<span class="cline-any cline-neutral"> </span>
|
|
982
|
-
<span class="cline-any cline-yes">1x</span>
|
|
983
|
-
<span class="cline-any cline-yes">100x</span>
|
|
984
|
-
<span class="cline-any cline-yes">100x</span>
|
|
985
|
-
<span class="cline-any cline-yes">100x</span>
|
|
986
|
-
<span class="cline-any cline-neutral"> </span>
|
|
987
|
-
<span class="cline-any cline-neutral"> </span>
|
|
988
|
-
<span class="cline-any cline-yes">1x</span>
|
|
989
|
-
<span class="cline-any cline-yes">100x</span>
|
|
990
|
-
<span class="cline-any cline-yes">100x</span>
|
|
991
|
-
<span class="cline-any cline-yes">100x</span>
|
|
992
|
-
<span class="cline-any cline-neutral"> </span>
|
|
993
|
-
<span class="cline-any cline-yes">100x</span>
|
|
994
|
-
<span class="cline-any cline-yes">98x</span>
|
|
995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-yes">100x</span>
|
|
997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
999
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1000
|
-
<span class="cline-any cline-yes">76x</span>
|
|
1001
|
-
<span class="cline-any cline-yes">76x</span>
|
|
1002
|
-
<span class="cline-any cline-yes">76x</span>
|
|
1003
|
-
<span class="cline-any cline-yes">76x</span>
|
|
1004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
-
<span class="cline-any cline-yes">76x</span>
|
|
1006
|
-
<span class="cline-any cline-yes">221x</span>
|
|
1007
|
-
<span class="cline-any cline-yes">221x</span>
|
|
1008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1009
|
-
<span class="cline-any cline-yes">76x</span>
|
|
1010
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1014
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1015
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1016
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1017
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1018
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1020
|
-
<span class="cline-any cline-no"> </span>
|
|
1021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1023
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1024
|
-
<span class="cline-any cline-yes">36x</span>
|
|
1025
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1026
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1029
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1031
|
-
<span class="cline-any cline-no"> </span>
|
|
1032
|
-
<span class="cline-any cline-no"> </span>
|
|
1033
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1034
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1035
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1036
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1037
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1038
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1039
|
-
<span class="cline-any cline-yes">34x</span>
|
|
1040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1042
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1043
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1044
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1045
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1046
|
-
<span class="cline-any cline-no"> </span>
|
|
1047
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1049
|
-
<span class="cline-any cline-no"> </span>
|
|
1050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1051
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1053
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1056
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1057
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1058
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1059
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1060
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1062
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1063
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1064
|
-
<span class="cline-any cline-no"> </span>
|
|
1065
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1066
|
-
<span class="cline-any cline-no"> </span>
|
|
1067
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1070
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1072
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1073
|
-
<span class="cline-any cline-yes">300x</span>
|
|
1074
|
-
<span class="cline-any cline-yes">16x</span>
|
|
1075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
-
<span class="cline-any cline-yes">284x</span>
|
|
1077
|
-
<span class="cline-any cline-yes">284x</span>
|
|
1078
|
-
<span class="cline-any cline-yes">277x</span>
|
|
1079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
-
<span class="cline-any cline-yes">284x</span>
|
|
1081
|
-
<span class="cline-any cline-yes">568x</span>
|
|
1082
|
-
<span class="cline-any cline-yes">568x</span>
|
|
1083
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1084
|
-
<span class="cline-any cline-yes">284x</span>
|
|
1085
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1086
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1087
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1088
|
-
<span class="cline-any cline-yes">300x</span>
|
|
1089
|
-
<span class="cline-any cline-yes">300x</span>
|
|
1090
|
-
<span class="cline-any cline-yes">300x</span>
|
|
1091
|
-
<span class="cline-any cline-yes">300x</span>
|
|
1092
|
-
<span class="cline-any cline-yes">746x</span>
|
|
1093
|
-
<span class="cline-any cline-yes">743x</span>
|
|
1094
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1096
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1097
|
-
<span class="cline-any cline-no"> </span>
|
|
1098
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1101
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1102
|
-
<span class="cline-any cline-yes">124x</span>
|
|
1103
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1104
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1105
|
-
<span class="cline-any cline-yes">124x</span>
|
|
1106
|
-
<span class="cline-any cline-yes">124x</span>
|
|
1107
|
-
<span class="cline-any cline-yes">124x</span>
|
|
1108
|
-
<span class="cline-any cline-yes">124x</span>
|
|
1109
|
-
<span class="cline-any cline-yes">124x</span>
|
|
1110
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1111
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1112
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1113
|
-
<span class="cline-any cline-yes">124x</span>
|
|
1114
|
-
<span class="cline-any cline-yes">124x</span>
|
|
1115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1116
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1118
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1119
|
-
<span class="cline-any cline-yes">240x</span>
|
|
1120
|
-
<span class="cline-any cline-no"> </span>
|
|
1121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1123
|
-
<span class="cline-any cline-yes">240x</span>
|
|
1124
|
-
<span class="cline-any cline-yes">240x</span>
|
|
1125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1126
|
-
<span class="cline-any cline-yes">240x</span>
|
|
1127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1128
|
-
<span class="cline-any cline-yes">19530x</span>
|
|
1129
|
-
<span class="cline-any cline-yes">15624x</span>
|
|
1130
|
-
<span class="cline-any cline-yes">15624x</span>
|
|
1131
|
-
<span class="cline-any cline-yes">151x</span>
|
|
1132
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1135
|
-
<span class="cline-any cline-yes">11718x</span>
|
|
1136
|
-
<span class="cline-any cline-yes">7812x</span>
|
|
1137
|
-
<span class="cline-any cline-yes">7812x</span>
|
|
1138
|
-
<span class="cline-any cline-yes">491x</span>
|
|
1139
|
-
<span class="cline-any cline-yes">1384x</span>
|
|
1140
|
-
<span class="cline-any cline-yes">1384x</span>
|
|
1141
|
-
<span class="cline-any cline-yes">1384x</span>
|
|
1142
|
-
<span class="cline-any cline-yes">1384x</span>
|
|
1143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1148
|
-
<span class="cline-any cline-yes">11718x</span>
|
|
1149
|
-
<span class="cline-any cline-yes">7812x</span>
|
|
1150
|
-
<span class="cline-any cline-yes">7812x</span>
|
|
1151
|
-
<span class="cline-any cline-yes">435x</span>
|
|
1152
|
-
<span class="cline-any cline-yes">435x</span>
|
|
1153
|
-
<span class="cline-any cline-yes">435x</span>
|
|
1154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1157
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1159
|
-
<span class="cline-any cline-yes">240x</span>
|
|
1160
|
-
<span class="cline-any cline-yes">2077x</span>
|
|
1161
|
-
<span class="cline-any cline-yes">2077x</span>
|
|
1162
|
-
<span class="cline-any cline-yes">302x</span>
|
|
1163
|
-
<span class="cline-any cline-yes">302x</span>
|
|
1164
|
-
<span class="cline-any cline-yes">302x</span>
|
|
1165
|
-
<span class="cline-any cline-yes">302x</span>
|
|
1166
|
-
<span class="cline-any cline-yes">124x</span>
|
|
1167
|
-
<span class="cline-any cline-yes">124x</span>
|
|
1168
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1169
|
-
<span class="cline-any cline-yes">178x</span>
|
|
1170
|
-
<span class="cline-any cline-yes">176x</span>
|
|
1171
|
-
<span class="cline-any cline-yes">176x</span>
|
|
1172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1175
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
-
<span class="cline-any cline-yes">1953x</span>
|
|
1177
|
-
<span class="cline-any cline-yes">1953x</span>
|
|
1178
|
-
<span class="cline-any cline-yes">1953x</span>
|
|
1179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1181
|
-
<span class="cline-any cline-yes">240x</span>
|
|
1182
|
-
<span class="cline-any cline-yes">2210x</span>
|
|
1183
|
-
<span class="cline-any cline-yes">2210x</span>
|
|
1184
|
-
<span class="cline-any cline-yes">133x</span>
|
|
1185
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1186
|
-
<span class="cline-any cline-yes">2077x</span>
|
|
1187
|
-
<span class="cline-any cline-yes">2077x</span>
|
|
1188
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1189
|
-
<span class="cline-any cline-yes">240x</span>
|
|
1190
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1191
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1192
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1195
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1196
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1197
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1198
|
-
<span class="cline-any cline-yes">130x</span>
|
|
1199
|
-
<span class="cline-any cline-yes">114x</span>
|
|
1200
|
-
<span class="cline-any cline-yes">96x</span>
|
|
1201
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1202
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1203
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1204
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1205
|
-
<span class="cline-any cline-no"> </span>
|
|
1206
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1207
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1208
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1209
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1210
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1211
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1214
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1215
|
-
<span class="cline-any cline-yes">119x</span>
|
|
1216
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1218
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1219
|
-
<span class="cline-any cline-yes">117x</span>
|
|
1220
|
-
<span class="cline-any cline-yes">117x</span>
|
|
1221
|
-
<span class="cline-any cline-yes">117x</span>
|
|
1222
|
-
<span class="cline-any cline-yes">100x</span>
|
|
1223
|
-
<span class="cline-any cline-yes">101x</span>
|
|
1224
|
-
<span class="cline-any cline-yes">101x</span>
|
|
1225
|
-
<span class="cline-any cline-yes">101x</span>
|
|
1226
|
-
<span class="cline-any cline-yes">101x</span>
|
|
1227
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1229
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1230
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1231
|
-
<span class="cline-any cline-yes">117x</span>
|
|
1232
|
-
<span class="cline-any cline-yes">117x</span>
|
|
1233
|
-
<span class="cline-any cline-yes">117x</span>
|
|
1234
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1236
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1237
|
-
<span class="cline-any cline-yes">97x</span>
|
|
1238
|
-
<span class="cline-any cline-yes">93x</span>
|
|
1239
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1240
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1241
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1242
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1244
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1246
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1247
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1248
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1249
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1250
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1251
|
-
<span class="cline-any cline-yes">1253x</span>
|
|
1252
|
-
<span class="cline-any cline-yes">1253x</span>
|
|
1253
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1254
|
-
<span class="cline-any cline-no"> </span>
|
|
1255
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1256
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1257
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1258
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1259
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1260
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1261
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1262
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1263
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1264
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1265
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1266
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1267
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1268
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1269
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1270
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*---------------------------------------------------------------------------------------------
|
|
1271
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
1272
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
1273
|
-
*--------------------------------------------------------------------------------------------*/
|
|
1274
|
-
|
|
1275
|
-
import * as Json from 'jsonc-parser';
|
|
1276
|
-
import { JSONSchema, JSONSchemaMap, JSONSchemaRef } from '../jsonSchema';
|
|
1277
|
-
import { URI } from 'vscode-uri';
|
|
1278
|
-
import * as Strings from '../utils/strings';
|
|
1279
|
-
import * as Parser from '../parser/jsonParser';
|
|
1280
|
-
import { SchemaRequestService, WorkspaceContextService, PromiseConstructor, Thenable } from '../jsonLanguageTypes';
|
|
1281
|
-
|
|
1282
|
-
import * as nls from 'vscode-nls';
|
|
1283
|
-
|
|
1284
|
-
const localize = nls.loadMessageBundle();
|
|
1285
|
-
|
|
1286
|
-
export interface IJSONSchemaService {
|
|
1287
|
-
|
|
1288
|
-
/**
|
|
1289
|
-
* Registers a schema file in the current workspace to be applicable to files that match the pattern
|
|
1290
|
-
*/
|
|
1291
|
-
registerExternalSchema(uri: string, filePatterns?: string[], unresolvedSchema?: JSONSchema): ISchemaHandle;
|
|
1292
|
-
|
|
1293
|
-
/**
|
|
1294
|
-
* Clears all cached schema files
|
|
1295
|
-
*/
|
|
1296
|
-
clearExternalSchemas(): void;
|
|
1297
|
-
|
|
1298
|
-
/**
|
|
1299
|
-
* Registers contributed schemas
|
|
1300
|
-
*/
|
|
1301
|
-
setSchemaContributions(schemaContributions: ISchemaContributions): void;
|
|
1302
|
-
|
|
1303
|
-
/**
|
|
1304
|
-
* Looks up the appropriate schema for the given URI
|
|
1305
|
-
*/
|
|
1306
|
-
getSchemaForResource(resource: string, document?: Parser.JSONDocument): Thenable<ResolvedSchema | undefined>;
|
|
1307
|
-
|
|
1308
|
-
/**
|
|
1309
|
-
* Returns all registered schema ids
|
|
1310
|
-
*/
|
|
1311
|
-
getRegisteredSchemaIds(filter?: (scheme: string) => boolean): string[];
|
|
1312
|
-
}
|
|
1313
|
-
|
|
1314
|
-
export interface SchemaAssociation {
|
|
1315
|
-
pattern: string[];
|
|
1316
|
-
uris: string[];
|
|
1317
|
-
}
|
|
1318
|
-
|
|
1319
|
-
export interface ISchemaContributions {
|
|
1320
|
-
schemas?: { [id: string]: JSONSchema };
|
|
1321
|
-
schemaAssociations?: SchemaAssociation[];
|
|
1322
|
-
}
|
|
1323
|
-
|
|
1324
|
-
export interface ISchemaHandle {
|
|
1325
|
-
/**
|
|
1326
|
-
* The schema id
|
|
1327
|
-
*/
|
|
1328
|
-
url: string;
|
|
1329
|
-
|
|
1330
|
-
/**
|
|
1331
|
-
* The schema from the file, with potential $ref references
|
|
1332
|
-
*/
|
|
1333
|
-
getUnresolvedSchema(): Thenable<UnresolvedSchema>;
|
|
1334
|
-
|
|
1335
|
-
/**
|
|
1336
|
-
* The schema from the file, with references resolved
|
|
1337
|
-
*/
|
|
1338
|
-
getResolvedSchema(): Thenable<ResolvedSchema>;
|
|
1339
|
-
}
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
class FilePatternAssociation {
|
|
1343
|
-
|
|
1344
|
-
private readonly uris: string[];
|
|
1345
|
-
private readonly patternRegExps: RegExp[];
|
|
1346
|
-
private readonly isInclude: boolean[];
|
|
1347
|
-
|
|
1348
|
-
constructor(pattern: string[], uris: string[]) {
|
|
1349
|
-
this.patternRegExps = [];
|
|
1350
|
-
this.isInclude = [];
|
|
1351
|
-
try {
|
|
1352
|
-
for (let p of pattern) {
|
|
1353
|
-
const include = p[0] !== '!';
|
|
1354
|
-
if (!include) {
|
|
1355
|
-
p = p.substring(1);
|
|
1356
|
-
}
|
|
1357
|
-
this.patternRegExps.push(new RegExp(Strings.convertSimple2RegExpPattern(p) + '$'));
|
|
1358
|
-
this.isInclude.push(include);
|
|
1359
|
-
}
|
|
1360
|
-
this.uris = uris;
|
|
1361
|
-
} catch (e) {
|
|
1362
|
-
// invalid pattern
|
|
1363
|
-
<span class="cstat-no" title="statement not covered" > this.patternRegExps.length = 0;</span>
|
|
1364
|
-
<span class="cstat-no" title="statement not covered" > this.isInclude.length = 0;</span>
|
|
1365
|
-
<span class="cstat-no" title="statement not covered" > this.uris = [];</span>
|
|
1366
|
-
}
|
|
1367
|
-
|
|
1368
|
-
}
|
|
1369
|
-
|
|
1370
|
-
public matchesPattern(fileName: string): boolean {
|
|
1371
|
-
let match = false;
|
|
1372
|
-
for (let i = 0; i < this.patternRegExps.length; i++) {
|
|
1373
|
-
const regExp = this.patternRegExps[i];
|
|
1374
|
-
if (regExp.test(fileName)) {
|
|
1375
|
-
match = this.isInclude[i];
|
|
1376
|
-
}
|
|
1377
|
-
}
|
|
1378
|
-
return match;
|
|
1379
|
-
}
|
|
1380
|
-
|
|
1381
|
-
public getURIs() {
|
|
1382
|
-
return this.uris;
|
|
1383
|
-
}
|
|
1384
|
-
}
|
|
1385
|
-
|
|
1386
|
-
type SchemaDependencies = { [uri: string]: true };
|
|
1387
|
-
|
|
1388
|
-
class SchemaHandle implements ISchemaHandle {
|
|
1389
|
-
|
|
1390
|
-
public url: string;
|
|
1391
|
-
public dependencies: SchemaDependencies;
|
|
1392
|
-
|
|
1393
|
-
private resolvedSchema: Thenable<ResolvedSchema> | undefined;
|
|
1394
|
-
private unresolvedSchema: Thenable<UnresolvedSchema> | undefined;
|
|
1395
|
-
private service: JSONSchemaService;
|
|
1396
|
-
|
|
1397
|
-
constructor(service: JSONSchemaService, url: string, unresolvedSchemaContent?: JSONSchema) {
|
|
1398
|
-
this.service = service;
|
|
1399
|
-
this.url = url;
|
|
1400
|
-
this.dependencies = {};
|
|
1401
|
-
if (unresolvedSchemaContent) {
|
|
1402
|
-
this.unresolvedSchema = this.service.promise.resolve(new UnresolvedSchema(unresolvedSchemaContent));
|
|
1403
|
-
}
|
|
1404
|
-
}
|
|
1405
|
-
|
|
1406
|
-
public getUnresolvedSchema(): Thenable<UnresolvedSchema> {
|
|
1407
|
-
if (!this.unresolvedSchema) {
|
|
1408
|
-
this.unresolvedSchema = this.service.loadSchema(this.url);
|
|
1409
|
-
}
|
|
1410
|
-
return this.unresolvedSchema;
|
|
1411
|
-
}
|
|
1412
|
-
|
|
1413
|
-
public getResolvedSchema(): Thenable<ResolvedSchema> {
|
|
1414
|
-
if (!this.resolvedSchema) {
|
|
1415
|
-
this.resolvedSchema = this.getUnresolvedSchema().then(unresolved => {
|
|
1416
|
-
return this.service.resolveSchemaContent(unresolved, this.url, this.dependencies);
|
|
1417
|
-
});
|
|
1418
|
-
}
|
|
1419
|
-
return this.resolvedSchema;
|
|
1420
|
-
}
|
|
1421
|
-
|
|
1422
|
-
public clearSchema() {
|
|
1423
|
-
this.resolvedSchema = undefined;
|
|
1424
|
-
this.unresolvedSchema = undefined;
|
|
1425
|
-
this.dependencies = {};
|
|
1426
|
-
}
|
|
1427
|
-
}
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
export class UnresolvedSchema {
|
|
1431
|
-
public schema: JSONSchema;
|
|
1432
|
-
public errors: string[];
|
|
1433
|
-
|
|
1434
|
-
constructor(schema: JSONSchema, errors: string[] = []) {
|
|
1435
|
-
this.schema = schema;
|
|
1436
|
-
this.errors = errors;
|
|
1437
|
-
}
|
|
1438
|
-
}
|
|
1439
|
-
|
|
1440
|
-
export class ResolvedSchema {
|
|
1441
|
-
public schema: JSONSchema;
|
|
1442
|
-
public errors: string[];
|
|
1443
|
-
|
|
1444
|
-
constructor(schema: JSONSchema, <span class="missing-if-branch" title="if path not taken" >I</span>errors: string[] = []) {
|
|
1445
|
-
this.schema = schema;
|
|
1446
|
-
this.errors = errors;
|
|
1447
|
-
}
|
|
1448
|
-
|
|
1449
|
-
public getSection(path: string[]): JSONSchema | undefined {
|
|
1450
|
-
const schemaRef = this.getSectionRecursive(path, this.schema);
|
|
1451
|
-
if (schemaRef) {
|
|
1452
|
-
return Parser.asSchema(schemaRef);
|
|
1453
|
-
}
|
|
1454
|
-
return undefined;
|
|
1455
|
-
}
|
|
1456
|
-
|
|
1457
|
-
private getSectionRecursive(path: string[], schema: JSONSchemaRef): JSONSchemaRef | undefined {
|
|
1458
|
-
if (!schema || typeof schema === 'boolean' || path.length === 0) {
|
|
1459
|
-
return schema;
|
|
1460
|
-
}
|
|
1461
|
-
const next = path.shift()!;
|
|
1462
|
-
|
|
1463
|
-
if (schema.properties && typeof schema.properties[next]) {
|
|
1464
|
-
return this.getSectionRecursive(path, schema.properties[next]);
|
|
1465
|
-
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (schema.patternProperties) {
|
|
1466
|
-
<span class="cstat-no" title="statement not covered" > for (const pattern<span class="cstat-no" title="statement not covered" > of <span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" >O</span>bject.</span>keys(schema.patternProperties))</span> {</span>
|
|
1467
|
-
const regex = <span class="cstat-no" title="statement not covered" >new RegExp(pattern);</span>
|
|
1468
|
-
<span class="cstat-no" title="statement not covered" > if (regex.test(next)) {</span>
|
|
1469
|
-
<span class="cstat-no" title="statement not covered" > return this.getSectionRecursive(path, schema.patternProperties[pattern]);</span>
|
|
1470
|
-
}
|
|
1471
|
-
}
|
|
1472
|
-
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof schema.additionalProperties === 'object') {
|
|
1473
|
-
<span class="cstat-no" title="statement not covered" > return this.getSectionRecursive(path, schema.additionalProperties);</span>
|
|
1474
|
-
} else if (next.match('[0-9]+')) {
|
|
1475
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(schema.items)) {
|
|
1476
|
-
const index = <span class="cstat-no" title="statement not covered" >parseInt(next, 10);</span>
|
|
1477
|
-
<span class="cstat-no" title="statement not covered" > if (!isNaN(index) && schema.items[index]) {</span>
|
|
1478
|
-
<span class="cstat-no" title="statement not covered" > return this.getSectionRecursive(path, schema.items[index]);</span>
|
|
1479
|
-
}
|
|
1480
|
-
} else <span class="missing-if-branch" title="else path not taken" >E</span>if (schema.items) {
|
|
1481
|
-
return this.getSectionRecursive(path, schema.items);
|
|
1482
|
-
}
|
|
1483
|
-
}
|
|
1484
|
-
|
|
1485
|
-
return undefined;
|
|
1486
|
-
}
|
|
1487
|
-
}
|
|
1488
|
-
|
|
1489
|
-
export class JSONSchemaService implements IJSONSchemaService {
|
|
1490
|
-
|
|
1491
|
-
private contributionSchemas: { [id: string]: SchemaHandle };
|
|
1492
|
-
private contributionAssociations: FilePatternAssociation[];
|
|
1493
|
-
|
|
1494
|
-
private schemasById: { [id: string]: SchemaHandle };
|
|
1495
|
-
private filePatternAssociations: FilePatternAssociation[];
|
|
1496
|
-
private registeredSchemasIds: { [id: string]: boolean };
|
|
1497
|
-
|
|
1498
|
-
private contextService: WorkspaceContextService | undefined;
|
|
1499
|
-
private callOnDispose: Function[];
|
|
1500
|
-
private requestService: SchemaRequestService | undefined;
|
|
1501
|
-
private promiseConstructor: PromiseConstructor;
|
|
1502
|
-
|
|
1503
|
-
private cachedSchemaForResource: { resource: string; resolvedSchema: Thenable<ResolvedSchema | undefined> } | undefined;
|
|
1504
|
-
|
|
1505
|
-
constructor(requestService?: SchemaRequestService, contextService?: WorkspaceContextService, promiseConstructor?: PromiseConstructor) {
|
|
1506
|
-
this.contextService = contextService;
|
|
1507
|
-
this.requestService = requestService;
|
|
1508
|
-
this.promiseConstructor = promiseConstructor || Promise;
|
|
1509
|
-
this.callOnDispose = [];
|
|
1510
|
-
|
|
1511
|
-
this.contributionSchemas = {};
|
|
1512
|
-
this.contributionAssociations = [];
|
|
1513
|
-
this.schemasById = {};
|
|
1514
|
-
this.filePatternAssociations = [];
|
|
1515
|
-
this.registeredSchemasIds = {};
|
|
1516
|
-
}
|
|
1517
|
-
|
|
1518
|
-
public getRegisteredSchemaIds(filter?: (scheme: string) => boolean): string[] {
|
|
1519
|
-
return Object.keys(this.registeredSchemasIds).filter(id => {
|
|
1520
|
-
const scheme = URI.parse(id).scheme;
|
|
1521
|
-
return scheme !== 'schemaservice' && (!filter || filter(scheme));
|
|
1522
|
-
});
|
|
1523
|
-
}
|
|
1524
|
-
|
|
1525
|
-
public get promise() {
|
|
1526
|
-
return this.promiseConstructor;
|
|
1527
|
-
}
|
|
1528
|
-
|
|
1529
|
-
<span class="fstat-no" title="function not covered" > public d</span>ispose(): void {
|
|
1530
|
-
<span class="cstat-no" title="statement not covered" > while (this.callOnDispose.length > 0) {</span>
|
|
1531
|
-
<span class="cstat-no" title="statement not covered" > this.callOnDispose.pop()!();</span>
|
|
1532
|
-
}
|
|
1533
|
-
}
|
|
1534
|
-
|
|
1535
|
-
public onResourceChange(uri: string): boolean {
|
|
1536
|
-
let hasChanges = false;
|
|
1537
|
-
uri = normalizeId(uri);
|
|
1538
|
-
|
|
1539
|
-
const toWalk = [uri];
|
|
1540
|
-
const all: (SchemaHandle | undefined)[] = Object.keys(this.schemasById).map(key => this.schemasById[key]);
|
|
1541
|
-
|
|
1542
|
-
while (toWalk.length) {
|
|
1543
|
-
const curr = toWalk.pop()!;
|
|
1544
|
-
for (let i = 0; i < all.length; i++) {
|
|
1545
|
-
const handle = all[i];
|
|
1546
|
-
if (handle && (handle.url === curr || handle.dependencies[curr])) {
|
|
1547
|
-
if (handle.url !== curr) {
|
|
1548
|
-
toWalk.push(handle.url);
|
|
1549
|
-
}
|
|
1550
|
-
handle.clearSchema();
|
|
1551
|
-
all[i] = undefined;
|
|
1552
|
-
hasChanges = true;
|
|
1553
|
-
}
|
|
1554
|
-
}
|
|
1555
|
-
}
|
|
1556
|
-
return hasChanges;
|
|
1557
|
-
}
|
|
1558
|
-
|
|
1559
|
-
public setSchemaContributions(schemaContributions: ISchemaContributions): void {
|
|
1560
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (schemaContributions.schemas) {
|
|
1561
|
-
const schemas = schemaContributions.schemas;
|
|
1562
|
-
for (const id in schemas) {
|
|
1563
|
-
const normalizedId = normalizeId(id);
|
|
1564
|
-
this.contributionSchemas[normalizedId] = this.addSchemaHandle(normalizedId, schemas[id]);
|
|
1565
|
-
}
|
|
1566
|
-
}
|
|
1567
|
-
if (Array.isArray(schemaContributions.schemaAssociations)) {
|
|
1568
|
-
const schemaAssociations = schemaContributions.schemaAssociations;
|
|
1569
|
-
for (let schemaAssociation of schemaAssociations) {
|
|
1570
|
-
const uris = schemaAssociation.uris.map(normalizeId);
|
|
1571
|
-
const association = this.addFilePatternAssociation(schemaAssociation.pattern, uris);
|
|
1572
|
-
this.contributionAssociations.push(association);
|
|
1573
|
-
}
|
|
1574
|
-
}
|
|
1575
|
-
}
|
|
1576
|
-
|
|
1577
|
-
private addSchemaHandle(id: string, unresolvedSchemaContent?: JSONSchema): SchemaHandle {
|
|
1578
|
-
const schemaHandle = new SchemaHandle(this, id, unresolvedSchemaContent);
|
|
1579
|
-
this.schemasById[id] = schemaHandle;
|
|
1580
|
-
return schemaHandle;
|
|
1581
|
-
}
|
|
1582
|
-
|
|
1583
|
-
private getOrAddSchemaHandle(id: string, unresolvedSchemaContent?: JSONSchema): SchemaHandle {
|
|
1584
|
-
return this.schemasById[id] || this.addSchemaHandle(id, unresolvedSchemaContent);
|
|
1585
|
-
}
|
|
1586
|
-
|
|
1587
|
-
private addFilePatternAssociation(pattern: string[], uris: string[]): FilePatternAssociation {
|
|
1588
|
-
const fpa = new FilePatternAssociation(pattern, uris);
|
|
1589
|
-
this.filePatternAssociations.push(fpa);
|
|
1590
|
-
return fpa;
|
|
1591
|
-
}
|
|
1592
|
-
|
|
1593
|
-
public registerExternalSchema(uri: string, filePatterns?: string[], unresolvedSchemaContent?: JSONSchema): ISchemaHandle {
|
|
1594
|
-
const id = normalizeId(uri);
|
|
1595
|
-
this.registeredSchemasIds[id] = true;
|
|
1596
|
-
this.cachedSchemaForResource = undefined;
|
|
1597
|
-
|
|
1598
|
-
if (filePatterns) {
|
|
1599
|
-
this.addFilePatternAssociation(filePatterns, [uri]);
|
|
1600
|
-
}
|
|
1601
|
-
return unresolvedSchemaContent ? this.addSchemaHandle(id, unresolvedSchemaContent) : <span class="branch-1 cbranch-no" title="branch not covered" >this.getOrAddSchemaHandle(id);</span>
|
|
1602
|
-
}
|
|
1603
|
-
|
|
1604
|
-
public clearExternalSchemas(): void {
|
|
1605
|
-
this.schemasById = {};
|
|
1606
|
-
this.filePatternAssociations = [];
|
|
1607
|
-
this.registeredSchemasIds = {};
|
|
1608
|
-
this.cachedSchemaForResource = undefined;
|
|
1609
|
-
|
|
1610
|
-
for (const id in this.contributionSchemas) {
|
|
1611
|
-
this.schemasById[id] = this.contributionSchemas[id];
|
|
1612
|
-
this.registeredSchemasIds[id] = true;
|
|
1613
|
-
}
|
|
1614
|
-
for (const contributionAssociation of this.contributionAssociations) {
|
|
1615
|
-
this.filePatternAssociations.push(contributionAssociation);
|
|
1616
|
-
}
|
|
1617
|
-
}
|
|
1618
|
-
|
|
1619
|
-
public getResolvedSchema(schemaId: string): Thenable<ResolvedSchema | undefined> {
|
|
1620
|
-
const id = normalizeId(schemaId);
|
|
1621
|
-
const schemaHandle = this.schemasById[id];
|
|
1622
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (schemaHandle) {
|
|
1623
|
-
return schemaHandle.getResolvedSchema();
|
|
1624
|
-
}
|
|
1625
|
-
<span class="cstat-no" title="statement not covered" > return this.promise.resolve(undefined);</span>
|
|
1626
|
-
}
|
|
1627
|
-
|
|
1628
|
-
public loadSchema(url: string): Thenable<UnresolvedSchema> {
|
|
1629
|
-
if (!this.requestService) {
|
|
1630
|
-
const errorMessage = localize('json.schema.norequestservice', 'Unable to load schema from \'{0}\'. No schema request service available', toDisplayString(url));
|
|
1631
|
-
return this.promise.resolve(new UnresolvedSchema(<JSONSchema>{}, [errorMessage]));
|
|
1632
|
-
}
|
|
1633
|
-
return this.requestService(url).then(
|
|
1634
|
-
content => {
|
|
1635
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!content) {
|
|
1636
|
-
const errorMessage = <span class="cstat-no" title="statement not covered" >localize('json.schema.nocontent', 'Unable to load schema from \'{0}\': No content.', toDisplayString(url));</span>
|
|
1637
|
-
<span class="cstat-no" title="statement not covered" > return new UnresolvedSchema(<JSONSchema>{}, [errorMessage]);</span>
|
|
1638
|
-
}
|
|
1639
|
-
|
|
1640
|
-
let schemaContent: JSONSchema = {};
|
|
1641
|
-
const jsonErrors: Json.ParseError[] = [];
|
|
1642
|
-
schemaContent = Json.parse(content, jsonErrors);
|
|
1643
|
-
const errors = jsonErrors.length ? <span class="branch-0 cbranch-no" title="branch not covered" >[localize('json.schema.invalidFormat', 'Unable to parse content from \'{0}\': Parse error at offset {1}.', toDisplayString(url), jsonErrors[0].offset)] </span>: [];
|
|
1644
|
-
return new UnresolvedSchema(schemaContent, errors);
|
|
1645
|
-
},
|
|
1646
|
-
(error: any) => {
|
|
1647
|
-
let errorMessage = error.toString() as string;
|
|
1648
|
-
const errorSplit = error.toString().split('Error: ');
|
|
1649
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (errorSplit.length > 1) {
|
|
1650
|
-
// more concise error message, URL and context are attached by caller anyways
|
|
1651
|
-
<span class="cstat-no" title="statement not covered" > errorMessage = errorSplit[1];</span>
|
|
1652
|
-
}
|
|
1653
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (Strings.endsWith(errorMessage, '.')) {
|
|
1654
|
-
<span class="cstat-no" title="statement not covered" > errorMessage = errorMessage.substr(0, errorMessage.length - 1);</span>
|
|
1655
|
-
}
|
|
1656
|
-
return new UnresolvedSchema(<JSONSchema>{}, [localize('json.schema.nocontent', 'Unable to load schema from \'{0}\': {1}.', toDisplayString(url), errorMessage)]);
|
|
1657
|
-
}
|
|
1658
|
-
);
|
|
1659
|
-
}
|
|
1660
|
-
|
|
1661
|
-
public resolveSchemaContent(schemaToResolve: UnresolvedSchema, schemaURL: string, dependencies: SchemaDependencies): Thenable<ResolvedSchema> {
|
|
1662
|
-
|
|
1663
|
-
const resolveErrors: string[] = schemaToResolve.errors.slice(0);
|
|
1664
|
-
const schema = schemaToResolve.schema;
|
|
1665
|
-
|
|
1666
|
-
if (schema.$schema) {
|
|
1667
|
-
const id = normalizeId(schema.$schema);
|
|
1668
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (id === 'http://json-schema.org/draft-03/schema') {
|
|
1669
|
-
<span class="cstat-no" title="statement not covered" > return this.promise.resolve(new ResolvedSchema({}, [localize('json.schema.draft03.notsupported', "Draft-03 schemas are not supported.")]));</span>
|
|
1670
|
-
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (id === 'https://json-schema.org/draft/2019-09/schema') {
|
|
1671
|
-
<span class="cstat-no" title="statement not covered" > schemaToResolve.errors.push(localize('json.schema.draft201909.notsupported', "Draft 2019-09 schemas are not yet fully supported."));</span>
|
|
1672
|
-
}
|
|
1673
|
-
}
|
|
1674
|
-
|
|
1675
|
-
const contextService = this.contextService;
|
|
1676
|
-
|
|
1677
|
-
const findSection = (schema: JSONSchema, path: string | undefined): any => {
|
|
1678
|
-
if (!path) {
|
|
1679
|
-
return schema;
|
|
1680
|
-
}
|
|
1681
|
-
let current: any = schema;
|
|
1682
|
-
if (path[0] === '/') {
|
|
1683
|
-
path = path.substr(1);
|
|
1684
|
-
}
|
|
1685
|
-
path.split('/').some((part) => {
|
|
1686
|
-
current = current[part];
|
|
1687
|
-
return !current;
|
|
1688
|
-
});
|
|
1689
|
-
return current;
|
|
1690
|
-
};
|
|
1691
|
-
|
|
1692
|
-
const merge = (target: JSONSchema, sourceRoot: JSONSchema, sourceURI: string, refSegment: string | undefined): void => {
|
|
1693
|
-
const path = refSegment ? decodeURIComponent(refSegment) : undefined;
|
|
1694
|
-
const section = findSection(sourceRoot, path);
|
|
1695
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (section) {
|
|
1696
|
-
for (const key in section) {
|
|
1697
|
-
if (section.hasOwnProperty(key) && !target.hasOwnProperty(key)) {
|
|
1698
|
-
(<any>target)[key] = section[key];
|
|
1699
|
-
}
|
|
1700
|
-
}
|
|
1701
|
-
} else {
|
|
1702
|
-
<span class="cstat-no" title="statement not covered" > resolveErrors.push(localize('json.schema.invalidref', '$ref \'{0}\' in \'{1}\' can not be resolved.', path, sourceURI));</span>
|
|
1703
|
-
}
|
|
1704
|
-
};
|
|
1705
|
-
|
|
1706
|
-
const resolveExternalLink = (node: JSONSchema, uri: string, refSegment: string | undefined, parentSchemaURL: string, parentSchemaDependencies: SchemaDependencies): Thenable<any> => {
|
|
1707
|
-
if (contextService && !/^\w+:\/\/.*/.test(uri)) {
|
|
1708
|
-
uri = contextService.resolveRelativePath(uri, parentSchemaURL);
|
|
1709
|
-
}
|
|
1710
|
-
uri = normalizeId(uri);
|
|
1711
|
-
const referencedHandle = this.getOrAddSchemaHandle(uri);
|
|
1712
|
-
return referencedHandle.getUnresolvedSchema().then(unresolvedSchema => {
|
|
1713
|
-
parentSchemaDependencies[uri] = true;
|
|
1714
|
-
if (unresolvedSchema.errors.length) {
|
|
1715
|
-
const loc = refSegment ? <span class="branch-0 cbranch-no" title="branch not covered" >uri + '#' + refSegment </span>: uri;
|
|
1716
|
-
resolveErrors.push(localize('json.schema.problemloadingref', 'Problems loading reference \'{0}\': {1}', loc, unresolvedSchema.errors[0]));
|
|
1717
|
-
}
|
|
1718
|
-
merge(node, unresolvedSchema.schema, uri, refSegment);
|
|
1719
|
-
return resolveRefs(node, unresolvedSchema.schema, uri, referencedHandle.dependencies);
|
|
1720
|
-
});
|
|
1721
|
-
};
|
|
1722
|
-
|
|
1723
|
-
const resolveRefs = (node: JSONSchema, parentSchema: JSONSchema, parentSchemaURL: string, parentSchemaDependencies: SchemaDependencies): Thenable<any> => {
|
|
1724
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!node || typeof node !== 'object') {
|
|
1725
|
-
<span class="cstat-no" title="statement not covered" > return Promise.resolve(null);</span>
|
|
1726
|
-
}
|
|
1727
|
-
|
|
1728
|
-
const toWalk: JSONSchema[] = [node];
|
|
1729
|
-
const seen: JSONSchema[] = [];
|
|
1730
|
-
|
|
1731
|
-
const openPromises: Thenable<any>[] = [];
|
|
1732
|
-
|
|
1733
|
-
const collectEntries = (...entries: (JSONSchemaRef | undefined)[]) => {
|
|
1734
|
-
for (const entry of entries) {
|
|
1735
|
-
if (typeof entry === 'object') {
|
|
1736
|
-
toWalk.push(entry);
|
|
1737
|
-
}
|
|
1738
|
-
}
|
|
1739
|
-
};
|
|
1740
|
-
const collectMapEntries = (...maps: (JSONSchemaMap | undefined)[]) => {
|
|
1741
|
-
for (const map of maps) {
|
|
1742
|
-
if (typeof map === 'object') {
|
|
1743
|
-
for (const k in map) {
|
|
1744
|
-
const key = k as keyof JSONSchemaMap;
|
|
1745
|
-
const entry = map[key];
|
|
1746
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof entry === 'object') {
|
|
1747
|
-
toWalk.push(entry);
|
|
1748
|
-
}
|
|
1749
|
-
}
|
|
1750
|
-
}
|
|
1751
|
-
}
|
|
1752
|
-
};
|
|
1753
|
-
const collectArrayEntries = (...arrays: (JSONSchemaRef[] | undefined)[]) => {
|
|
1754
|
-
for (const array of arrays) {
|
|
1755
|
-
if (Array.isArray(array)) {
|
|
1756
|
-
for (const entry of array) {
|
|
1757
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof entry === 'object') {
|
|
1758
|
-
toWalk.push(entry);
|
|
1759
|
-
}
|
|
1760
|
-
}
|
|
1761
|
-
}
|
|
1762
|
-
}
|
|
1763
|
-
};
|
|
1764
|
-
const handleRef = (next: JSONSchema) => {
|
|
1765
|
-
const seenRefs = [];
|
|
1766
|
-
while (next.$ref) {
|
|
1767
|
-
const ref = next.$ref;
|
|
1768
|
-
const segments = ref.split('#', 2);
|
|
1769
|
-
delete next.$ref;
|
|
1770
|
-
if (segments[0].length > 0) {
|
|
1771
|
-
openPromises.push(resolveExternalLink(next, segments[0], segments[1], parentSchemaURL, parentSchemaDependencies));
|
|
1772
|
-
return;
|
|
1773
|
-
} else {
|
|
1774
|
-
if (seenRefs.indexOf(ref) === -1) {
|
|
1775
|
-
merge(next, parentSchema, parentSchemaURL, segments[1]); // can set next.$ref again, use seenRefs to avoid circle
|
|
1776
|
-
seenRefs.push(ref);
|
|
1777
|
-
}
|
|
1778
|
-
}
|
|
1779
|
-
}
|
|
1780
|
-
|
|
1781
|
-
collectEntries(<JSONSchema>next.items, <JSONSchema>next.additionalProperties, next.not, next.contains, next.propertyNames, next.if, next.then, next.else);
|
|
1782
|
-
collectMapEntries(next.definitions, next.properties, next.patternProperties, <JSONSchemaMap>next.dependencies);
|
|
1783
|
-
collectArrayEntries(next.anyOf, next.allOf, next.oneOf, <JSONSchema[]>next.items);
|
|
1784
|
-
};
|
|
1785
|
-
|
|
1786
|
-
while (toWalk.length) {
|
|
1787
|
-
const next = toWalk.pop()!;
|
|
1788
|
-
if (seen.indexOf(next) >= 0) {
|
|
1789
|
-
continue;
|
|
1790
|
-
}
|
|
1791
|
-
seen.push(next);
|
|
1792
|
-
handleRef(next);
|
|
1793
|
-
}
|
|
1794
|
-
return this.promise.all(openPromises);
|
|
1795
|
-
};
|
|
1796
|
-
|
|
1797
|
-
return resolveRefs(schema, schema, schemaURL, dependencies).then(_ => new ResolvedSchema(schema, resolveErrors));
|
|
1798
|
-
}
|
|
1799
|
-
|
|
1800
|
-
public getSchemaForResource(resource: string, document?: Parser.JSONDocument): Thenable<ResolvedSchema | undefined> {
|
|
1801
|
-
|
|
1802
|
-
// first use $schema if present
|
|
1803
|
-
if (document && document.root && document.root.type === 'object') {
|
|
1804
|
-
const schemaProperties = document.root.properties.filter(p => (p.keyNode.value === '$schema') && p.valueNode && p.valueNode.type === 'string');
|
|
1805
|
-
if (schemaProperties.length > 0) {
|
|
1806
|
-
const valueNode = schemaProperties[0].valueNode;
|
|
1807
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (valueNode && valueNode.type === 'string') {
|
|
1808
|
-
let schemeId = <string>Parser.getNodeValue(valueNode);
|
|
1809
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (schemeId && Strings.startsWith(schemeId, '.') && <span class="branch-2 cbranch-no" title="branch not covered" >this.contextService)</span> {
|
|
1810
|
-
<span class="cstat-no" title="statement not covered" > schemeId = this.contextService.resolveRelativePath(schemeId, resource);</span>
|
|
1811
|
-
}
|
|
1812
|
-
if (schemeId) {
|
|
1813
|
-
const id = normalizeId(schemeId);
|
|
1814
|
-
return this.getOrAddSchemaHandle(id).getResolvedSchema();
|
|
1815
|
-
}
|
|
1816
|
-
}
|
|
1817
|
-
}
|
|
1818
|
-
}
|
|
1819
|
-
|
|
1820
|
-
if (this.cachedSchemaForResource && this.cachedSchemaForResource.resource === resource) {
|
|
1821
|
-
return this.cachedSchemaForResource.resolvedSchema;
|
|
1822
|
-
}
|
|
1823
|
-
|
|
1824
|
-
const seen: { [schemaId: string]: boolean } = Object.create(null);
|
|
1825
|
-
const schemas: string[] = [];
|
|
1826
|
-
for (const entry of this.filePatternAssociations) {
|
|
1827
|
-
if (entry.matchesPattern(resource)) {
|
|
1828
|
-
for (const schemaId of entry.getURIs()) {
|
|
1829
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (!seen[schemaId]) {
|
|
1830
|
-
schemas.push(schemaId);
|
|
1831
|
-
seen[schemaId] = true;
|
|
1832
|
-
}
|
|
1833
|
-
}
|
|
1834
|
-
}
|
|
1835
|
-
}
|
|
1836
|
-
const resolvedSchema = schemas.length > 0 ? this.createCombinedSchema(resource, schemas).getResolvedSchema() : this.promise.resolve(undefined);
|
|
1837
|
-
this.cachedSchemaForResource = { resource, resolvedSchema };
|
|
1838
|
-
return resolvedSchema;
|
|
1839
|
-
}
|
|
1840
|
-
|
|
1841
|
-
private createCombinedSchema(resource: string, schemaIds: string[]): ISchemaHandle {
|
|
1842
|
-
if (schemaIds.length === 1) {
|
|
1843
|
-
return this.getOrAddSchemaHandle(schemaIds[0]);
|
|
1844
|
-
} else {
|
|
1845
|
-
const combinedSchemaId = 'schemaservice://combinedSchema/' + encodeURIComponent(resource);
|
|
1846
|
-
const combinedSchema: JSONSchema = {
|
|
1847
|
-
allOf: schemaIds.map(schemaId => ({ $ref: schemaId }))
|
|
1848
|
-
};
|
|
1849
|
-
return this.addSchemaHandle(combinedSchemaId, combinedSchema);
|
|
1850
|
-
}
|
|
1851
|
-
}
|
|
1852
|
-
}
|
|
1853
|
-
|
|
1854
|
-
function normalizeId(id: string): string {
|
|
1855
|
-
// remove trailing '#', normalize drive capitalization
|
|
1856
|
-
try {
|
|
1857
|
-
return URI.parse(id).toString();
|
|
1858
|
-
} catch (e) {
|
|
1859
|
-
<span class="cstat-no" title="statement not covered" > return id;</span>
|
|
1860
|
-
}
|
|
1861
|
-
|
|
1862
|
-
}
|
|
1863
|
-
|
|
1864
|
-
function toDisplayString(url: string) {
|
|
1865
|
-
try {
|
|
1866
|
-
const uri = URI.parse(url);
|
|
1867
|
-
if (uri.scheme === 'file') {
|
|
1868
|
-
return uri.fsPath;
|
|
1869
|
-
}
|
|
1870
|
-
} catch (e) {
|
|
1871
|
-
// ignore
|
|
1872
|
-
}
|
|
1873
|
-
return url;
|
|
1874
|
-
}
|
|
1875
|
-
</pre></td></tr></table></pre>
|
|
1876
|
-
|
|
1877
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1878
|
-
</div><!-- /wrapper -->
|
|
1879
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1880
|
-
Code coverage generated by
|
|
1881
|
-
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
1882
|
-
at Mon Apr 27 2020 21:56:17 GMT+0200 (Central European Summer Time)
|
|
1883
|
-
</div>
|
|
1884
|
-
</div>
|
|
1885
|
-
<script src="../../prettify.js"></script>
|
|
1886
|
-
<script>
|
|
1887
|
-
window.onload = function () {
|
|
1888
|
-
prettyPrint();
|
|
1889
|
-
};
|
|
1890
|
-
</script>
|
|
1891
|
-
<script src="../../sorter.js"></script>
|
|
1892
|
-
<script src="../../block-navigation.js"></script>
|
|
1893
|
-
</body>
|
|
1894
|
-
</html>
|
|
1895
|
-
|