@md2do/cli 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +25 -0
- package/coverage/coverage-final.json +3 -2
- package/coverage/index.html +11 -11
- package/coverage/lcov-report/index.html +11 -11
- package/coverage/lcov-report/src/cli.ts.html +10 -4
- package/coverage/lcov-report/src/commands/config.ts.html +2269 -0
- package/coverage/lcov-report/src/commands/index.html +22 -7
- package/coverage/lcov-report/src/commands/index.ts.html +7 -4
- package/coverage/lcov-report/src/commands/list.ts.html +1 -1
- package/coverage/lcov-report/src/commands/stats.ts.html +1 -1
- package/coverage/lcov-report/src/commands/todoist.ts.html +1 -1
- package/coverage/lcov-report/src/formatters/index.html +1 -1
- package/coverage/lcov-report/src/formatters/json.ts.html +1 -1
- package/coverage/lcov-report/src/formatters/pretty.ts.html +1 -1
- package/coverage/lcov-report/src/index.html +5 -5
- package/coverage/lcov-report/src/index.ts.html +1 -1
- package/coverage/lcov-report/src/scanner.ts.html +1 -1
- package/coverage/lcov.info +746 -3
- package/coverage/src/cli.ts.html +10 -4
- package/coverage/src/commands/config.ts.html +2269 -0
- package/coverage/src/commands/index.html +22 -7
- package/coverage/src/commands/index.ts.html +7 -4
- package/coverage/src/commands/list.ts.html +1 -1
- package/coverage/src/commands/stats.ts.html +1 -1
- package/coverage/src/commands/todoist.ts.html +1 -1
- package/coverage/src/formatters/index.html +1 -1
- package/coverage/src/formatters/json.ts.html +1 -1
- package/coverage/src/formatters/pretty.ts.html +1 -1
- package/coverage/src/index.html +5 -5
- package/coverage/src/index.ts.html +1 -1
- package/coverage/src/scanner.ts.html +1 -1
- package/dist/cli.js +466 -6
- package/dist/index.d.ts +6 -1
- package/dist/index.js +461 -0
- package/package.json +5 -2
- package/src/cli.ts +2 -0
- package/src/commands/config.ts +731 -0
- package/src/commands/index.ts +1 -0
|
@@ -0,0 +1,2269 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/commands/config.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/commands</a> config.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">0% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>0/728</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>0/1</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>0/1</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">0% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>0/728</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line low'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
+
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
+
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
+
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
+
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
+
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
+
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
+
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
+
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
+
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
+
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
+
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
+
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
+
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
+
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
+
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
+
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
+
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
+
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
+
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
+
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
+
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
+
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
+
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
+
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
+
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
+
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
+
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
+
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
+
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
+
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
+
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
+
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
+
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
+
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
+
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
+
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
+
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
+
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
+
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
+
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
+
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
+
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
+
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
+
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
+
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
+
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
+
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
+
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
+
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
+
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
+
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
+
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
+
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
+
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
+
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
+
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
+
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
+
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
+
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
+
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
+
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
+
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
+
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
+
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
+
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
+
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
+
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
+
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
+
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
+
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
+
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
+
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
+
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
+
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
+
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
+
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
+
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
+
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
+
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
+
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
+
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
+
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
+
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
+
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
+
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
+
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
+
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
+
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
+
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
+
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
+
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
+
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
+
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
+
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
+
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
+
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
+
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
+
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
+
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
+
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
+
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
+
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
+
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
+
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
+
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
+
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
+
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
+
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
+
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
+
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
+
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
+
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
+
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
+
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
+
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
+
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
+
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
+
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
+
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
+
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
+
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
+
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
+
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
+
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
+
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
+
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
+
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
+
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
+
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
+
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
+
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
+
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
+
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
+
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
+
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
+
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
+
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
+
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
+
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
+
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
+
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
+
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
+
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
+
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
+
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
+
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
+
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
+
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
+
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
+
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
+
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
+
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
+
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
+
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
+
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
+
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
+
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
+
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
+
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
+
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
+
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
+
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
+
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
+
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
+
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
+
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
+
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
+
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
+
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
+
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
+
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
+
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
+
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
+
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
+
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
+
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
+
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
+
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
+
<a name='L522'></a><a href='#L522'>522</a>
|
|
588
|
+
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
+
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
+
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
+
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
+
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
+
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
+
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
+
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
+
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
+
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
+
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
+
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
+
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
+
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
+
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
+
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
+
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
+
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
+
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
+
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
+
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
+
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
+
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
+
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
+
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
+
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
+
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
+
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
+
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
+
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
+
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
+
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
+
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
+
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
+
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
+
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
+
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
+
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
+
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
+
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
+
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
+
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
+
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
+
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
+
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
+
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
+
<a name='L569'></a><a href='#L569'>569</a>
|
|
635
|
+
<a name='L570'></a><a href='#L570'>570</a>
|
|
636
|
+
<a name='L571'></a><a href='#L571'>571</a>
|
|
637
|
+
<a name='L572'></a><a href='#L572'>572</a>
|
|
638
|
+
<a name='L573'></a><a href='#L573'>573</a>
|
|
639
|
+
<a name='L574'></a><a href='#L574'>574</a>
|
|
640
|
+
<a name='L575'></a><a href='#L575'>575</a>
|
|
641
|
+
<a name='L576'></a><a href='#L576'>576</a>
|
|
642
|
+
<a name='L577'></a><a href='#L577'>577</a>
|
|
643
|
+
<a name='L578'></a><a href='#L578'>578</a>
|
|
644
|
+
<a name='L579'></a><a href='#L579'>579</a>
|
|
645
|
+
<a name='L580'></a><a href='#L580'>580</a>
|
|
646
|
+
<a name='L581'></a><a href='#L581'>581</a>
|
|
647
|
+
<a name='L582'></a><a href='#L582'>582</a>
|
|
648
|
+
<a name='L583'></a><a href='#L583'>583</a>
|
|
649
|
+
<a name='L584'></a><a href='#L584'>584</a>
|
|
650
|
+
<a name='L585'></a><a href='#L585'>585</a>
|
|
651
|
+
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
|
+
<a name='L587'></a><a href='#L587'>587</a>
|
|
653
|
+
<a name='L588'></a><a href='#L588'>588</a>
|
|
654
|
+
<a name='L589'></a><a href='#L589'>589</a>
|
|
655
|
+
<a name='L590'></a><a href='#L590'>590</a>
|
|
656
|
+
<a name='L591'></a><a href='#L591'>591</a>
|
|
657
|
+
<a name='L592'></a><a href='#L592'>592</a>
|
|
658
|
+
<a name='L593'></a><a href='#L593'>593</a>
|
|
659
|
+
<a name='L594'></a><a href='#L594'>594</a>
|
|
660
|
+
<a name='L595'></a><a href='#L595'>595</a>
|
|
661
|
+
<a name='L596'></a><a href='#L596'>596</a>
|
|
662
|
+
<a name='L597'></a><a href='#L597'>597</a>
|
|
663
|
+
<a name='L598'></a><a href='#L598'>598</a>
|
|
664
|
+
<a name='L599'></a><a href='#L599'>599</a>
|
|
665
|
+
<a name='L600'></a><a href='#L600'>600</a>
|
|
666
|
+
<a name='L601'></a><a href='#L601'>601</a>
|
|
667
|
+
<a name='L602'></a><a href='#L602'>602</a>
|
|
668
|
+
<a name='L603'></a><a href='#L603'>603</a>
|
|
669
|
+
<a name='L604'></a><a href='#L604'>604</a>
|
|
670
|
+
<a name='L605'></a><a href='#L605'>605</a>
|
|
671
|
+
<a name='L606'></a><a href='#L606'>606</a>
|
|
672
|
+
<a name='L607'></a><a href='#L607'>607</a>
|
|
673
|
+
<a name='L608'></a><a href='#L608'>608</a>
|
|
674
|
+
<a name='L609'></a><a href='#L609'>609</a>
|
|
675
|
+
<a name='L610'></a><a href='#L610'>610</a>
|
|
676
|
+
<a name='L611'></a><a href='#L611'>611</a>
|
|
677
|
+
<a name='L612'></a><a href='#L612'>612</a>
|
|
678
|
+
<a name='L613'></a><a href='#L613'>613</a>
|
|
679
|
+
<a name='L614'></a><a href='#L614'>614</a>
|
|
680
|
+
<a name='L615'></a><a href='#L615'>615</a>
|
|
681
|
+
<a name='L616'></a><a href='#L616'>616</a>
|
|
682
|
+
<a name='L617'></a><a href='#L617'>617</a>
|
|
683
|
+
<a name='L618'></a><a href='#L618'>618</a>
|
|
684
|
+
<a name='L619'></a><a href='#L619'>619</a>
|
|
685
|
+
<a name='L620'></a><a href='#L620'>620</a>
|
|
686
|
+
<a name='L621'></a><a href='#L621'>621</a>
|
|
687
|
+
<a name='L622'></a><a href='#L622'>622</a>
|
|
688
|
+
<a name='L623'></a><a href='#L623'>623</a>
|
|
689
|
+
<a name='L624'></a><a href='#L624'>624</a>
|
|
690
|
+
<a name='L625'></a><a href='#L625'>625</a>
|
|
691
|
+
<a name='L626'></a><a href='#L626'>626</a>
|
|
692
|
+
<a name='L627'></a><a href='#L627'>627</a>
|
|
693
|
+
<a name='L628'></a><a href='#L628'>628</a>
|
|
694
|
+
<a name='L629'></a><a href='#L629'>629</a>
|
|
695
|
+
<a name='L630'></a><a href='#L630'>630</a>
|
|
696
|
+
<a name='L631'></a><a href='#L631'>631</a>
|
|
697
|
+
<a name='L632'></a><a href='#L632'>632</a>
|
|
698
|
+
<a name='L633'></a><a href='#L633'>633</a>
|
|
699
|
+
<a name='L634'></a><a href='#L634'>634</a>
|
|
700
|
+
<a name='L635'></a><a href='#L635'>635</a>
|
|
701
|
+
<a name='L636'></a><a href='#L636'>636</a>
|
|
702
|
+
<a name='L637'></a><a href='#L637'>637</a>
|
|
703
|
+
<a name='L638'></a><a href='#L638'>638</a>
|
|
704
|
+
<a name='L639'></a><a href='#L639'>639</a>
|
|
705
|
+
<a name='L640'></a><a href='#L640'>640</a>
|
|
706
|
+
<a name='L641'></a><a href='#L641'>641</a>
|
|
707
|
+
<a name='L642'></a><a href='#L642'>642</a>
|
|
708
|
+
<a name='L643'></a><a href='#L643'>643</a>
|
|
709
|
+
<a name='L644'></a><a href='#L644'>644</a>
|
|
710
|
+
<a name='L645'></a><a href='#L645'>645</a>
|
|
711
|
+
<a name='L646'></a><a href='#L646'>646</a>
|
|
712
|
+
<a name='L647'></a><a href='#L647'>647</a>
|
|
713
|
+
<a name='L648'></a><a href='#L648'>648</a>
|
|
714
|
+
<a name='L649'></a><a href='#L649'>649</a>
|
|
715
|
+
<a name='L650'></a><a href='#L650'>650</a>
|
|
716
|
+
<a name='L651'></a><a href='#L651'>651</a>
|
|
717
|
+
<a name='L652'></a><a href='#L652'>652</a>
|
|
718
|
+
<a name='L653'></a><a href='#L653'>653</a>
|
|
719
|
+
<a name='L654'></a><a href='#L654'>654</a>
|
|
720
|
+
<a name='L655'></a><a href='#L655'>655</a>
|
|
721
|
+
<a name='L656'></a><a href='#L656'>656</a>
|
|
722
|
+
<a name='L657'></a><a href='#L657'>657</a>
|
|
723
|
+
<a name='L658'></a><a href='#L658'>658</a>
|
|
724
|
+
<a name='L659'></a><a href='#L659'>659</a>
|
|
725
|
+
<a name='L660'></a><a href='#L660'>660</a>
|
|
726
|
+
<a name='L661'></a><a href='#L661'>661</a>
|
|
727
|
+
<a name='L662'></a><a href='#L662'>662</a>
|
|
728
|
+
<a name='L663'></a><a href='#L663'>663</a>
|
|
729
|
+
<a name='L664'></a><a href='#L664'>664</a>
|
|
730
|
+
<a name='L665'></a><a href='#L665'>665</a>
|
|
731
|
+
<a name='L666'></a><a href='#L666'>666</a>
|
|
732
|
+
<a name='L667'></a><a href='#L667'>667</a>
|
|
733
|
+
<a name='L668'></a><a href='#L668'>668</a>
|
|
734
|
+
<a name='L669'></a><a href='#L669'>669</a>
|
|
735
|
+
<a name='L670'></a><a href='#L670'>670</a>
|
|
736
|
+
<a name='L671'></a><a href='#L671'>671</a>
|
|
737
|
+
<a name='L672'></a><a href='#L672'>672</a>
|
|
738
|
+
<a name='L673'></a><a href='#L673'>673</a>
|
|
739
|
+
<a name='L674'></a><a href='#L674'>674</a>
|
|
740
|
+
<a name='L675'></a><a href='#L675'>675</a>
|
|
741
|
+
<a name='L676'></a><a href='#L676'>676</a>
|
|
742
|
+
<a name='L677'></a><a href='#L677'>677</a>
|
|
743
|
+
<a name='L678'></a><a href='#L678'>678</a>
|
|
744
|
+
<a name='L679'></a><a href='#L679'>679</a>
|
|
745
|
+
<a name='L680'></a><a href='#L680'>680</a>
|
|
746
|
+
<a name='L681'></a><a href='#L681'>681</a>
|
|
747
|
+
<a name='L682'></a><a href='#L682'>682</a>
|
|
748
|
+
<a name='L683'></a><a href='#L683'>683</a>
|
|
749
|
+
<a name='L684'></a><a href='#L684'>684</a>
|
|
750
|
+
<a name='L685'></a><a href='#L685'>685</a>
|
|
751
|
+
<a name='L686'></a><a href='#L686'>686</a>
|
|
752
|
+
<a name='L687'></a><a href='#L687'>687</a>
|
|
753
|
+
<a name='L688'></a><a href='#L688'>688</a>
|
|
754
|
+
<a name='L689'></a><a href='#L689'>689</a>
|
|
755
|
+
<a name='L690'></a><a href='#L690'>690</a>
|
|
756
|
+
<a name='L691'></a><a href='#L691'>691</a>
|
|
757
|
+
<a name='L692'></a><a href='#L692'>692</a>
|
|
758
|
+
<a name='L693'></a><a href='#L693'>693</a>
|
|
759
|
+
<a name='L694'></a><a href='#L694'>694</a>
|
|
760
|
+
<a name='L695'></a><a href='#L695'>695</a>
|
|
761
|
+
<a name='L696'></a><a href='#L696'>696</a>
|
|
762
|
+
<a name='L697'></a><a href='#L697'>697</a>
|
|
763
|
+
<a name='L698'></a><a href='#L698'>698</a>
|
|
764
|
+
<a name='L699'></a><a href='#L699'>699</a>
|
|
765
|
+
<a name='L700'></a><a href='#L700'>700</a>
|
|
766
|
+
<a name='L701'></a><a href='#L701'>701</a>
|
|
767
|
+
<a name='L702'></a><a href='#L702'>702</a>
|
|
768
|
+
<a name='L703'></a><a href='#L703'>703</a>
|
|
769
|
+
<a name='L704'></a><a href='#L704'>704</a>
|
|
770
|
+
<a name='L705'></a><a href='#L705'>705</a>
|
|
771
|
+
<a name='L706'></a><a href='#L706'>706</a>
|
|
772
|
+
<a name='L707'></a><a href='#L707'>707</a>
|
|
773
|
+
<a name='L708'></a><a href='#L708'>708</a>
|
|
774
|
+
<a name='L709'></a><a href='#L709'>709</a>
|
|
775
|
+
<a name='L710'></a><a href='#L710'>710</a>
|
|
776
|
+
<a name='L711'></a><a href='#L711'>711</a>
|
|
777
|
+
<a name='L712'></a><a href='#L712'>712</a>
|
|
778
|
+
<a name='L713'></a><a href='#L713'>713</a>
|
|
779
|
+
<a name='L714'></a><a href='#L714'>714</a>
|
|
780
|
+
<a name='L715'></a><a href='#L715'>715</a>
|
|
781
|
+
<a name='L716'></a><a href='#L716'>716</a>
|
|
782
|
+
<a name='L717'></a><a href='#L717'>717</a>
|
|
783
|
+
<a name='L718'></a><a href='#L718'>718</a>
|
|
784
|
+
<a name='L719'></a><a href='#L719'>719</a>
|
|
785
|
+
<a name='L720'></a><a href='#L720'>720</a>
|
|
786
|
+
<a name='L721'></a><a href='#L721'>721</a>
|
|
787
|
+
<a name='L722'></a><a href='#L722'>722</a>
|
|
788
|
+
<a name='L723'></a><a href='#L723'>723</a>
|
|
789
|
+
<a name='L724'></a><a href='#L724'>724</a>
|
|
790
|
+
<a name='L725'></a><a href='#L725'>725</a>
|
|
791
|
+
<a name='L726'></a><a href='#L726'>726</a>
|
|
792
|
+
<a name='L727'></a><a href='#L727'>727</a>
|
|
793
|
+
<a name='L728'></a><a href='#L728'>728</a>
|
|
794
|
+
<a name='L729'></a><a href='#L729'>729</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
795
|
+
<span class="cline-any cline-no"> </span>
|
|
796
|
+
<span class="cline-any cline-no"> </span>
|
|
797
|
+
<span class="cline-any cline-no"> </span>
|
|
798
|
+
<span class="cline-any cline-no"> </span>
|
|
799
|
+
<span class="cline-any cline-no"> </span>
|
|
800
|
+
<span class="cline-any cline-no"> </span>
|
|
801
|
+
<span class="cline-any cline-no"> </span>
|
|
802
|
+
<span class="cline-any cline-no"> </span>
|
|
803
|
+
<span class="cline-any cline-no"> </span>
|
|
804
|
+
<span class="cline-any cline-no"> </span>
|
|
805
|
+
<span class="cline-any cline-no"> </span>
|
|
806
|
+
<span class="cline-any cline-no"> </span>
|
|
807
|
+
<span class="cline-any cline-no"> </span>
|
|
808
|
+
<span class="cline-any cline-no"> </span>
|
|
809
|
+
<span class="cline-any cline-no"> </span>
|
|
810
|
+
<span class="cline-any cline-no"> </span>
|
|
811
|
+
<span class="cline-any cline-no"> </span>
|
|
812
|
+
<span class="cline-any cline-no"> </span>
|
|
813
|
+
<span class="cline-any cline-no"> </span>
|
|
814
|
+
<span class="cline-any cline-no"> </span>
|
|
815
|
+
<span class="cline-any cline-no"> </span>
|
|
816
|
+
<span class="cline-any cline-no"> </span>
|
|
817
|
+
<span class="cline-any cline-no"> </span>
|
|
818
|
+
<span class="cline-any cline-no"> </span>
|
|
819
|
+
<span class="cline-any cline-no"> </span>
|
|
820
|
+
<span class="cline-any cline-no"> </span>
|
|
821
|
+
<span class="cline-any cline-no"> </span>
|
|
822
|
+
<span class="cline-any cline-no"> </span>
|
|
823
|
+
<span class="cline-any cline-no"> </span>
|
|
824
|
+
<span class="cline-any cline-no"> </span>
|
|
825
|
+
<span class="cline-any cline-no"> </span>
|
|
826
|
+
<span class="cline-any cline-no"> </span>
|
|
827
|
+
<span class="cline-any cline-no"> </span>
|
|
828
|
+
<span class="cline-any cline-no"> </span>
|
|
829
|
+
<span class="cline-any cline-no"> </span>
|
|
830
|
+
<span class="cline-any cline-no"> </span>
|
|
831
|
+
<span class="cline-any cline-no"> </span>
|
|
832
|
+
<span class="cline-any cline-no"> </span>
|
|
833
|
+
<span class="cline-any cline-no"> </span>
|
|
834
|
+
<span class="cline-any cline-no"> </span>
|
|
835
|
+
<span class="cline-any cline-no"> </span>
|
|
836
|
+
<span class="cline-any cline-no"> </span>
|
|
837
|
+
<span class="cline-any cline-no"> </span>
|
|
838
|
+
<span class="cline-any cline-no"> </span>
|
|
839
|
+
<span class="cline-any cline-no"> </span>
|
|
840
|
+
<span class="cline-any cline-no"> </span>
|
|
841
|
+
<span class="cline-any cline-no"> </span>
|
|
842
|
+
<span class="cline-any cline-no"> </span>
|
|
843
|
+
<span class="cline-any cline-no"> </span>
|
|
844
|
+
<span class="cline-any cline-no"> </span>
|
|
845
|
+
<span class="cline-any cline-no"> </span>
|
|
846
|
+
<span class="cline-any cline-no"> </span>
|
|
847
|
+
<span class="cline-any cline-no"> </span>
|
|
848
|
+
<span class="cline-any cline-no"> </span>
|
|
849
|
+
<span class="cline-any cline-no"> </span>
|
|
850
|
+
<span class="cline-any cline-no"> </span>
|
|
851
|
+
<span class="cline-any cline-no"> </span>
|
|
852
|
+
<span class="cline-any cline-no"> </span>
|
|
853
|
+
<span class="cline-any cline-no"> </span>
|
|
854
|
+
<span class="cline-any cline-no"> </span>
|
|
855
|
+
<span class="cline-any cline-no"> </span>
|
|
856
|
+
<span class="cline-any cline-no"> </span>
|
|
857
|
+
<span class="cline-any cline-no"> </span>
|
|
858
|
+
<span class="cline-any cline-no"> </span>
|
|
859
|
+
<span class="cline-any cline-no"> </span>
|
|
860
|
+
<span class="cline-any cline-no"> </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-no"> </span>
|
|
866
|
+
<span class="cline-any cline-no"> </span>
|
|
867
|
+
<span class="cline-any cline-no"> </span>
|
|
868
|
+
<span class="cline-any cline-no"> </span>
|
|
869
|
+
<span class="cline-any cline-no"> </span>
|
|
870
|
+
<span class="cline-any cline-no"> </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-no"> </span>
|
|
875
|
+
<span class="cline-any cline-no"> </span>
|
|
876
|
+
<span class="cline-any cline-no"> </span>
|
|
877
|
+
<span class="cline-any cline-no"> </span>
|
|
878
|
+
<span class="cline-any cline-no"> </span>
|
|
879
|
+
<span class="cline-any cline-no"> </span>
|
|
880
|
+
<span class="cline-any cline-no"> </span>
|
|
881
|
+
<span class="cline-any cline-no"> </span>
|
|
882
|
+
<span class="cline-any cline-no"> </span>
|
|
883
|
+
<span class="cline-any cline-no"> </span>
|
|
884
|
+
<span class="cline-any cline-no"> </span>
|
|
885
|
+
<span class="cline-any cline-no"> </span>
|
|
886
|
+
<span class="cline-any cline-no"> </span>
|
|
887
|
+
<span class="cline-any cline-no"> </span>
|
|
888
|
+
<span class="cline-any cline-no"> </span>
|
|
889
|
+
<span class="cline-any cline-no"> </span>
|
|
890
|
+
<span class="cline-any cline-no"> </span>
|
|
891
|
+
<span class="cline-any cline-no"> </span>
|
|
892
|
+
<span class="cline-any cline-no"> </span>
|
|
893
|
+
<span class="cline-any cline-no"> </span>
|
|
894
|
+
<span class="cline-any cline-no"> </span>
|
|
895
|
+
<span class="cline-any cline-no"> </span>
|
|
896
|
+
<span class="cline-any cline-no"> </span>
|
|
897
|
+
<span class="cline-any cline-no"> </span>
|
|
898
|
+
<span class="cline-any cline-no"> </span>
|
|
899
|
+
<span class="cline-any cline-no"> </span>
|
|
900
|
+
<span class="cline-any cline-no"> </span>
|
|
901
|
+
<span class="cline-any cline-no"> </span>
|
|
902
|
+
<span class="cline-any cline-no"> </span>
|
|
903
|
+
<span class="cline-any cline-no"> </span>
|
|
904
|
+
<span class="cline-any cline-no"> </span>
|
|
905
|
+
<span class="cline-any cline-no"> </span>
|
|
906
|
+
<span class="cline-any cline-no"> </span>
|
|
907
|
+
<span class="cline-any cline-no"> </span>
|
|
908
|
+
<span class="cline-any cline-no"> </span>
|
|
909
|
+
<span class="cline-any cline-no"> </span>
|
|
910
|
+
<span class="cline-any cline-no"> </span>
|
|
911
|
+
<span class="cline-any cline-no"> </span>
|
|
912
|
+
<span class="cline-any cline-no"> </span>
|
|
913
|
+
<span class="cline-any cline-no"> </span>
|
|
914
|
+
<span class="cline-any cline-no"> </span>
|
|
915
|
+
<span class="cline-any cline-no"> </span>
|
|
916
|
+
<span class="cline-any cline-no"> </span>
|
|
917
|
+
<span class="cline-any cline-no"> </span>
|
|
918
|
+
<span class="cline-any cline-no"> </span>
|
|
919
|
+
<span class="cline-any cline-no"> </span>
|
|
920
|
+
<span class="cline-any cline-no"> </span>
|
|
921
|
+
<span class="cline-any cline-no"> </span>
|
|
922
|
+
<span class="cline-any cline-no"> </span>
|
|
923
|
+
<span class="cline-any cline-no"> </span>
|
|
924
|
+
<span class="cline-any cline-no"> </span>
|
|
925
|
+
<span class="cline-any cline-no"> </span>
|
|
926
|
+
<span class="cline-any cline-no"> </span>
|
|
927
|
+
<span class="cline-any cline-no"> </span>
|
|
928
|
+
<span class="cline-any cline-no"> </span>
|
|
929
|
+
<span class="cline-any cline-no"> </span>
|
|
930
|
+
<span class="cline-any cline-no"> </span>
|
|
931
|
+
<span class="cline-any cline-no"> </span>
|
|
932
|
+
<span class="cline-any cline-no"> </span>
|
|
933
|
+
<span class="cline-any cline-no"> </span>
|
|
934
|
+
<span class="cline-any cline-no"> </span>
|
|
935
|
+
<span class="cline-any cline-no"> </span>
|
|
936
|
+
<span class="cline-any cline-no"> </span>
|
|
937
|
+
<span class="cline-any cline-no"> </span>
|
|
938
|
+
<span class="cline-any cline-no"> </span>
|
|
939
|
+
<span class="cline-any cline-no"> </span>
|
|
940
|
+
<span class="cline-any cline-no"> </span>
|
|
941
|
+
<span class="cline-any cline-no"> </span>
|
|
942
|
+
<span class="cline-any cline-no"> </span>
|
|
943
|
+
<span class="cline-any cline-no"> </span>
|
|
944
|
+
<span class="cline-any cline-no"> </span>
|
|
945
|
+
<span class="cline-any cline-no"> </span>
|
|
946
|
+
<span class="cline-any cline-no"> </span>
|
|
947
|
+
<span class="cline-any cline-no"> </span>
|
|
948
|
+
<span class="cline-any cline-no"> </span>
|
|
949
|
+
<span class="cline-any cline-no"> </span>
|
|
950
|
+
<span class="cline-any cline-no"> </span>
|
|
951
|
+
<span class="cline-any cline-no"> </span>
|
|
952
|
+
<span class="cline-any cline-no"> </span>
|
|
953
|
+
<span class="cline-any cline-no"> </span>
|
|
954
|
+
<span class="cline-any cline-no"> </span>
|
|
955
|
+
<span class="cline-any cline-no"> </span>
|
|
956
|
+
<span class="cline-any cline-no"> </span>
|
|
957
|
+
<span class="cline-any cline-no"> </span>
|
|
958
|
+
<span class="cline-any cline-no"> </span>
|
|
959
|
+
<span class="cline-any cline-no"> </span>
|
|
960
|
+
<span class="cline-any cline-no"> </span>
|
|
961
|
+
<span class="cline-any cline-no"> </span>
|
|
962
|
+
<span class="cline-any cline-no"> </span>
|
|
963
|
+
<span class="cline-any cline-no"> </span>
|
|
964
|
+
<span class="cline-any cline-no"> </span>
|
|
965
|
+
<span class="cline-any cline-no"> </span>
|
|
966
|
+
<span class="cline-any cline-no"> </span>
|
|
967
|
+
<span class="cline-any cline-no"> </span>
|
|
968
|
+
<span class="cline-any cline-no"> </span>
|
|
969
|
+
<span class="cline-any cline-no"> </span>
|
|
970
|
+
<span class="cline-any cline-no"> </span>
|
|
971
|
+
<span class="cline-any cline-no"> </span>
|
|
972
|
+
<span class="cline-any cline-no"> </span>
|
|
973
|
+
<span class="cline-any cline-no"> </span>
|
|
974
|
+
<span class="cline-any cline-no"> </span>
|
|
975
|
+
<span class="cline-any cline-no"> </span>
|
|
976
|
+
<span class="cline-any cline-no"> </span>
|
|
977
|
+
<span class="cline-any cline-no"> </span>
|
|
978
|
+
<span class="cline-any cline-no"> </span>
|
|
979
|
+
<span class="cline-any cline-no"> </span>
|
|
980
|
+
<span class="cline-any cline-no"> </span>
|
|
981
|
+
<span class="cline-any cline-no"> </span>
|
|
982
|
+
<span class="cline-any cline-no"> </span>
|
|
983
|
+
<span class="cline-any cline-no"> </span>
|
|
984
|
+
<span class="cline-any cline-no"> </span>
|
|
985
|
+
<span class="cline-any cline-no"> </span>
|
|
986
|
+
<span class="cline-any cline-no"> </span>
|
|
987
|
+
<span class="cline-any cline-no"> </span>
|
|
988
|
+
<span class="cline-any cline-no"> </span>
|
|
989
|
+
<span class="cline-any cline-no"> </span>
|
|
990
|
+
<span class="cline-any cline-no"> </span>
|
|
991
|
+
<span class="cline-any cline-no"> </span>
|
|
992
|
+
<span class="cline-any cline-no"> </span>
|
|
993
|
+
<span class="cline-any cline-no"> </span>
|
|
994
|
+
<span class="cline-any cline-no"> </span>
|
|
995
|
+
<span class="cline-any cline-no"> </span>
|
|
996
|
+
<span class="cline-any cline-no"> </span>
|
|
997
|
+
<span class="cline-any cline-no"> </span>
|
|
998
|
+
<span class="cline-any cline-no"> </span>
|
|
999
|
+
<span class="cline-any cline-no"> </span>
|
|
1000
|
+
<span class="cline-any cline-no"> </span>
|
|
1001
|
+
<span class="cline-any cline-no"> </span>
|
|
1002
|
+
<span class="cline-any cline-no"> </span>
|
|
1003
|
+
<span class="cline-any cline-no"> </span>
|
|
1004
|
+
<span class="cline-any cline-no"> </span>
|
|
1005
|
+
<span class="cline-any cline-no"> </span>
|
|
1006
|
+
<span class="cline-any cline-no"> </span>
|
|
1007
|
+
<span class="cline-any cline-no"> </span>
|
|
1008
|
+
<span class="cline-any cline-no"> </span>
|
|
1009
|
+
<span class="cline-any cline-no"> </span>
|
|
1010
|
+
<span class="cline-any cline-no"> </span>
|
|
1011
|
+
<span class="cline-any cline-no"> </span>
|
|
1012
|
+
<span class="cline-any cline-no"> </span>
|
|
1013
|
+
<span class="cline-any cline-no"> </span>
|
|
1014
|
+
<span class="cline-any cline-no"> </span>
|
|
1015
|
+
<span class="cline-any cline-no"> </span>
|
|
1016
|
+
<span class="cline-any cline-no"> </span>
|
|
1017
|
+
<span class="cline-any cline-no"> </span>
|
|
1018
|
+
<span class="cline-any cline-no"> </span>
|
|
1019
|
+
<span class="cline-any cline-no"> </span>
|
|
1020
|
+
<span class="cline-any cline-no"> </span>
|
|
1021
|
+
<span class="cline-any cline-no"> </span>
|
|
1022
|
+
<span class="cline-any cline-no"> </span>
|
|
1023
|
+
<span class="cline-any cline-no"> </span>
|
|
1024
|
+
<span class="cline-any cline-no"> </span>
|
|
1025
|
+
<span class="cline-any cline-no"> </span>
|
|
1026
|
+
<span class="cline-any cline-no"> </span>
|
|
1027
|
+
<span class="cline-any cline-no"> </span>
|
|
1028
|
+
<span class="cline-any cline-no"> </span>
|
|
1029
|
+
<span class="cline-any cline-no"> </span>
|
|
1030
|
+
<span class="cline-any cline-no"> </span>
|
|
1031
|
+
<span class="cline-any cline-no"> </span>
|
|
1032
|
+
<span class="cline-any cline-no"> </span>
|
|
1033
|
+
<span class="cline-any cline-no"> </span>
|
|
1034
|
+
<span class="cline-any cline-no"> </span>
|
|
1035
|
+
<span class="cline-any cline-no"> </span>
|
|
1036
|
+
<span class="cline-any cline-no"> </span>
|
|
1037
|
+
<span class="cline-any cline-no"> </span>
|
|
1038
|
+
<span class="cline-any cline-no"> </span>
|
|
1039
|
+
<span class="cline-any cline-no"> </span>
|
|
1040
|
+
<span class="cline-any cline-no"> </span>
|
|
1041
|
+
<span class="cline-any cline-no"> </span>
|
|
1042
|
+
<span class="cline-any cline-no"> </span>
|
|
1043
|
+
<span class="cline-any cline-no"> </span>
|
|
1044
|
+
<span class="cline-any cline-no"> </span>
|
|
1045
|
+
<span class="cline-any cline-no"> </span>
|
|
1046
|
+
<span class="cline-any cline-no"> </span>
|
|
1047
|
+
<span class="cline-any cline-no"> </span>
|
|
1048
|
+
<span class="cline-any cline-no"> </span>
|
|
1049
|
+
<span class="cline-any cline-no"> </span>
|
|
1050
|
+
<span class="cline-any cline-no"> </span>
|
|
1051
|
+
<span class="cline-any cline-no"> </span>
|
|
1052
|
+
<span class="cline-any cline-no"> </span>
|
|
1053
|
+
<span class="cline-any cline-no"> </span>
|
|
1054
|
+
<span class="cline-any cline-no"> </span>
|
|
1055
|
+
<span class="cline-any cline-no"> </span>
|
|
1056
|
+
<span class="cline-any cline-no"> </span>
|
|
1057
|
+
<span class="cline-any cline-no"> </span>
|
|
1058
|
+
<span class="cline-any cline-no"> </span>
|
|
1059
|
+
<span class="cline-any cline-no"> </span>
|
|
1060
|
+
<span class="cline-any cline-no"> </span>
|
|
1061
|
+
<span class="cline-any cline-no"> </span>
|
|
1062
|
+
<span class="cline-any cline-no"> </span>
|
|
1063
|
+
<span class="cline-any cline-no"> </span>
|
|
1064
|
+
<span class="cline-any cline-no"> </span>
|
|
1065
|
+
<span class="cline-any cline-no"> </span>
|
|
1066
|
+
<span class="cline-any cline-no"> </span>
|
|
1067
|
+
<span class="cline-any cline-no"> </span>
|
|
1068
|
+
<span class="cline-any cline-no"> </span>
|
|
1069
|
+
<span class="cline-any cline-no"> </span>
|
|
1070
|
+
<span class="cline-any cline-no"> </span>
|
|
1071
|
+
<span class="cline-any cline-no"> </span>
|
|
1072
|
+
<span class="cline-any cline-no"> </span>
|
|
1073
|
+
<span class="cline-any cline-no"> </span>
|
|
1074
|
+
<span class="cline-any cline-no"> </span>
|
|
1075
|
+
<span class="cline-any cline-no"> </span>
|
|
1076
|
+
<span class="cline-any cline-no"> </span>
|
|
1077
|
+
<span class="cline-any cline-no"> </span>
|
|
1078
|
+
<span class="cline-any cline-no"> </span>
|
|
1079
|
+
<span class="cline-any cline-no"> </span>
|
|
1080
|
+
<span class="cline-any cline-no"> </span>
|
|
1081
|
+
<span class="cline-any cline-no"> </span>
|
|
1082
|
+
<span class="cline-any cline-no"> </span>
|
|
1083
|
+
<span class="cline-any cline-no"> </span>
|
|
1084
|
+
<span class="cline-any cline-no"> </span>
|
|
1085
|
+
<span class="cline-any cline-no"> </span>
|
|
1086
|
+
<span class="cline-any cline-no"> </span>
|
|
1087
|
+
<span class="cline-any cline-no"> </span>
|
|
1088
|
+
<span class="cline-any cline-no"> </span>
|
|
1089
|
+
<span class="cline-any cline-no"> </span>
|
|
1090
|
+
<span class="cline-any cline-no"> </span>
|
|
1091
|
+
<span class="cline-any cline-no"> </span>
|
|
1092
|
+
<span class="cline-any cline-no"> </span>
|
|
1093
|
+
<span class="cline-any cline-no"> </span>
|
|
1094
|
+
<span class="cline-any cline-no"> </span>
|
|
1095
|
+
<span class="cline-any cline-no"> </span>
|
|
1096
|
+
<span class="cline-any cline-no"> </span>
|
|
1097
|
+
<span class="cline-any cline-no"> </span>
|
|
1098
|
+
<span class="cline-any cline-no"> </span>
|
|
1099
|
+
<span class="cline-any cline-no"> </span>
|
|
1100
|
+
<span class="cline-any cline-no"> </span>
|
|
1101
|
+
<span class="cline-any cline-no"> </span>
|
|
1102
|
+
<span class="cline-any cline-no"> </span>
|
|
1103
|
+
<span class="cline-any cline-no"> </span>
|
|
1104
|
+
<span class="cline-any cline-no"> </span>
|
|
1105
|
+
<span class="cline-any cline-no"> </span>
|
|
1106
|
+
<span class="cline-any cline-no"> </span>
|
|
1107
|
+
<span class="cline-any cline-no"> </span>
|
|
1108
|
+
<span class="cline-any cline-no"> </span>
|
|
1109
|
+
<span class="cline-any cline-no"> </span>
|
|
1110
|
+
<span class="cline-any cline-no"> </span>
|
|
1111
|
+
<span class="cline-any cline-no"> </span>
|
|
1112
|
+
<span class="cline-any cline-no"> </span>
|
|
1113
|
+
<span class="cline-any cline-no"> </span>
|
|
1114
|
+
<span class="cline-any cline-no"> </span>
|
|
1115
|
+
<span class="cline-any cline-no"> </span>
|
|
1116
|
+
<span class="cline-any cline-no"> </span>
|
|
1117
|
+
<span class="cline-any cline-no"> </span>
|
|
1118
|
+
<span class="cline-any cline-no"> </span>
|
|
1119
|
+
<span class="cline-any cline-no"> </span>
|
|
1120
|
+
<span class="cline-any cline-no"> </span>
|
|
1121
|
+
<span class="cline-any cline-no"> </span>
|
|
1122
|
+
<span class="cline-any cline-no"> </span>
|
|
1123
|
+
<span class="cline-any cline-no"> </span>
|
|
1124
|
+
<span class="cline-any cline-no"> </span>
|
|
1125
|
+
<span class="cline-any cline-no"> </span>
|
|
1126
|
+
<span class="cline-any cline-no"> </span>
|
|
1127
|
+
<span class="cline-any cline-no"> </span>
|
|
1128
|
+
<span class="cline-any cline-no"> </span>
|
|
1129
|
+
<span class="cline-any cline-no"> </span>
|
|
1130
|
+
<span class="cline-any cline-no"> </span>
|
|
1131
|
+
<span class="cline-any cline-no"> </span>
|
|
1132
|
+
<span class="cline-any cline-no"> </span>
|
|
1133
|
+
<span class="cline-any cline-no"> </span>
|
|
1134
|
+
<span class="cline-any cline-no"> </span>
|
|
1135
|
+
<span class="cline-any cline-no"> </span>
|
|
1136
|
+
<span class="cline-any cline-no"> </span>
|
|
1137
|
+
<span class="cline-any cline-no"> </span>
|
|
1138
|
+
<span class="cline-any cline-no"> </span>
|
|
1139
|
+
<span class="cline-any cline-no"> </span>
|
|
1140
|
+
<span class="cline-any cline-no"> </span>
|
|
1141
|
+
<span class="cline-any cline-no"> </span>
|
|
1142
|
+
<span class="cline-any cline-no"> </span>
|
|
1143
|
+
<span class="cline-any cline-no"> </span>
|
|
1144
|
+
<span class="cline-any cline-no"> </span>
|
|
1145
|
+
<span class="cline-any cline-no"> </span>
|
|
1146
|
+
<span class="cline-any cline-no"> </span>
|
|
1147
|
+
<span class="cline-any cline-no"> </span>
|
|
1148
|
+
<span class="cline-any cline-no"> </span>
|
|
1149
|
+
<span class="cline-any cline-no"> </span>
|
|
1150
|
+
<span class="cline-any cline-no"> </span>
|
|
1151
|
+
<span class="cline-any cline-no"> </span>
|
|
1152
|
+
<span class="cline-any cline-no"> </span>
|
|
1153
|
+
<span class="cline-any cline-no"> </span>
|
|
1154
|
+
<span class="cline-any cline-no"> </span>
|
|
1155
|
+
<span class="cline-any cline-no"> </span>
|
|
1156
|
+
<span class="cline-any cline-no"> </span>
|
|
1157
|
+
<span class="cline-any cline-no"> </span>
|
|
1158
|
+
<span class="cline-any cline-no"> </span>
|
|
1159
|
+
<span class="cline-any cline-no"> </span>
|
|
1160
|
+
<span class="cline-any cline-no"> </span>
|
|
1161
|
+
<span class="cline-any cline-no"> </span>
|
|
1162
|
+
<span class="cline-any cline-no"> </span>
|
|
1163
|
+
<span class="cline-any cline-no"> </span>
|
|
1164
|
+
<span class="cline-any cline-no"> </span>
|
|
1165
|
+
<span class="cline-any cline-no"> </span>
|
|
1166
|
+
<span class="cline-any cline-no"> </span>
|
|
1167
|
+
<span class="cline-any cline-no"> </span>
|
|
1168
|
+
<span class="cline-any cline-no"> </span>
|
|
1169
|
+
<span class="cline-any cline-no"> </span>
|
|
1170
|
+
<span class="cline-any cline-no"> </span>
|
|
1171
|
+
<span class="cline-any cline-no"> </span>
|
|
1172
|
+
<span class="cline-any cline-no"> </span>
|
|
1173
|
+
<span class="cline-any cline-no"> </span>
|
|
1174
|
+
<span class="cline-any cline-no"> </span>
|
|
1175
|
+
<span class="cline-any cline-no"> </span>
|
|
1176
|
+
<span class="cline-any cline-no"> </span>
|
|
1177
|
+
<span class="cline-any cline-no"> </span>
|
|
1178
|
+
<span class="cline-any cline-no"> </span>
|
|
1179
|
+
<span class="cline-any cline-no"> </span>
|
|
1180
|
+
<span class="cline-any cline-no"> </span>
|
|
1181
|
+
<span class="cline-any cline-no"> </span>
|
|
1182
|
+
<span class="cline-any cline-no"> </span>
|
|
1183
|
+
<span class="cline-any cline-no"> </span>
|
|
1184
|
+
<span class="cline-any cline-no"> </span>
|
|
1185
|
+
<span class="cline-any cline-no"> </span>
|
|
1186
|
+
<span class="cline-any cline-no"> </span>
|
|
1187
|
+
<span class="cline-any cline-no"> </span>
|
|
1188
|
+
<span class="cline-any cline-no"> </span>
|
|
1189
|
+
<span class="cline-any cline-no"> </span>
|
|
1190
|
+
<span class="cline-any cline-no"> </span>
|
|
1191
|
+
<span class="cline-any cline-no"> </span>
|
|
1192
|
+
<span class="cline-any cline-no"> </span>
|
|
1193
|
+
<span class="cline-any cline-no"> </span>
|
|
1194
|
+
<span class="cline-any cline-no"> </span>
|
|
1195
|
+
<span class="cline-any cline-no"> </span>
|
|
1196
|
+
<span class="cline-any cline-no"> </span>
|
|
1197
|
+
<span class="cline-any cline-no"> </span>
|
|
1198
|
+
<span class="cline-any cline-no"> </span>
|
|
1199
|
+
<span class="cline-any cline-no"> </span>
|
|
1200
|
+
<span class="cline-any cline-no"> </span>
|
|
1201
|
+
<span class="cline-any cline-no"> </span>
|
|
1202
|
+
<span class="cline-any cline-no"> </span>
|
|
1203
|
+
<span class="cline-any cline-no"> </span>
|
|
1204
|
+
<span class="cline-any cline-no"> </span>
|
|
1205
|
+
<span class="cline-any cline-no"> </span>
|
|
1206
|
+
<span class="cline-any cline-no"> </span>
|
|
1207
|
+
<span class="cline-any cline-no"> </span>
|
|
1208
|
+
<span class="cline-any cline-no"> </span>
|
|
1209
|
+
<span class="cline-any cline-no"> </span>
|
|
1210
|
+
<span class="cline-any cline-no"> </span>
|
|
1211
|
+
<span class="cline-any cline-no"> </span>
|
|
1212
|
+
<span class="cline-any cline-no"> </span>
|
|
1213
|
+
<span class="cline-any cline-no"> </span>
|
|
1214
|
+
<span class="cline-any cline-no"> </span>
|
|
1215
|
+
<span class="cline-any cline-no"> </span>
|
|
1216
|
+
<span class="cline-any cline-no"> </span>
|
|
1217
|
+
<span class="cline-any cline-no"> </span>
|
|
1218
|
+
<span class="cline-any cline-no"> </span>
|
|
1219
|
+
<span class="cline-any cline-no"> </span>
|
|
1220
|
+
<span class="cline-any cline-no"> </span>
|
|
1221
|
+
<span class="cline-any cline-no"> </span>
|
|
1222
|
+
<span class="cline-any cline-no"> </span>
|
|
1223
|
+
<span class="cline-any cline-no"> </span>
|
|
1224
|
+
<span class="cline-any cline-no"> </span>
|
|
1225
|
+
<span class="cline-any cline-no"> </span>
|
|
1226
|
+
<span class="cline-any cline-no"> </span>
|
|
1227
|
+
<span class="cline-any cline-no"> </span>
|
|
1228
|
+
<span class="cline-any cline-no"> </span>
|
|
1229
|
+
<span class="cline-any cline-no"> </span>
|
|
1230
|
+
<span class="cline-any cline-no"> </span>
|
|
1231
|
+
<span class="cline-any cline-no"> </span>
|
|
1232
|
+
<span class="cline-any cline-no"> </span>
|
|
1233
|
+
<span class="cline-any cline-no"> </span>
|
|
1234
|
+
<span class="cline-any cline-no"> </span>
|
|
1235
|
+
<span class="cline-any cline-no"> </span>
|
|
1236
|
+
<span class="cline-any cline-no"> </span>
|
|
1237
|
+
<span class="cline-any cline-no"> </span>
|
|
1238
|
+
<span class="cline-any cline-no"> </span>
|
|
1239
|
+
<span class="cline-any cline-no"> </span>
|
|
1240
|
+
<span class="cline-any cline-no"> </span>
|
|
1241
|
+
<span class="cline-any cline-no"> </span>
|
|
1242
|
+
<span class="cline-any cline-no"> </span>
|
|
1243
|
+
<span class="cline-any cline-no"> </span>
|
|
1244
|
+
<span class="cline-any cline-no"> </span>
|
|
1245
|
+
<span class="cline-any cline-no"> </span>
|
|
1246
|
+
<span class="cline-any cline-no"> </span>
|
|
1247
|
+
<span class="cline-any cline-no"> </span>
|
|
1248
|
+
<span class="cline-any cline-no"> </span>
|
|
1249
|
+
<span class="cline-any cline-no"> </span>
|
|
1250
|
+
<span class="cline-any cline-no"> </span>
|
|
1251
|
+
<span class="cline-any cline-no"> </span>
|
|
1252
|
+
<span class="cline-any cline-no"> </span>
|
|
1253
|
+
<span class="cline-any cline-no"> </span>
|
|
1254
|
+
<span class="cline-any cline-no"> </span>
|
|
1255
|
+
<span class="cline-any cline-no"> </span>
|
|
1256
|
+
<span class="cline-any cline-no"> </span>
|
|
1257
|
+
<span class="cline-any cline-no"> </span>
|
|
1258
|
+
<span class="cline-any cline-no"> </span>
|
|
1259
|
+
<span class="cline-any cline-no"> </span>
|
|
1260
|
+
<span class="cline-any cline-no"> </span>
|
|
1261
|
+
<span class="cline-any cline-no"> </span>
|
|
1262
|
+
<span class="cline-any cline-no"> </span>
|
|
1263
|
+
<span class="cline-any cline-no"> </span>
|
|
1264
|
+
<span class="cline-any cline-no"> </span>
|
|
1265
|
+
<span class="cline-any cline-no"> </span>
|
|
1266
|
+
<span class="cline-any cline-no"> </span>
|
|
1267
|
+
<span class="cline-any cline-no"> </span>
|
|
1268
|
+
<span class="cline-any cline-no"> </span>
|
|
1269
|
+
<span class="cline-any cline-no"> </span>
|
|
1270
|
+
<span class="cline-any cline-no"> </span>
|
|
1271
|
+
<span class="cline-any cline-no"> </span>
|
|
1272
|
+
<span class="cline-any cline-no"> </span>
|
|
1273
|
+
<span class="cline-any cline-no"> </span>
|
|
1274
|
+
<span class="cline-any cline-no"> </span>
|
|
1275
|
+
<span class="cline-any cline-no"> </span>
|
|
1276
|
+
<span class="cline-any cline-no"> </span>
|
|
1277
|
+
<span class="cline-any cline-no"> </span>
|
|
1278
|
+
<span class="cline-any cline-no"> </span>
|
|
1279
|
+
<span class="cline-any cline-no"> </span>
|
|
1280
|
+
<span class="cline-any cline-no"> </span>
|
|
1281
|
+
<span class="cline-any cline-no"> </span>
|
|
1282
|
+
<span class="cline-any cline-no"> </span>
|
|
1283
|
+
<span class="cline-any cline-no"> </span>
|
|
1284
|
+
<span class="cline-any cline-no"> </span>
|
|
1285
|
+
<span class="cline-any cline-no"> </span>
|
|
1286
|
+
<span class="cline-any cline-no"> </span>
|
|
1287
|
+
<span class="cline-any cline-no"> </span>
|
|
1288
|
+
<span class="cline-any cline-no"> </span>
|
|
1289
|
+
<span class="cline-any cline-no"> </span>
|
|
1290
|
+
<span class="cline-any cline-no"> </span>
|
|
1291
|
+
<span class="cline-any cline-no"> </span>
|
|
1292
|
+
<span class="cline-any cline-no"> </span>
|
|
1293
|
+
<span class="cline-any cline-no"> </span>
|
|
1294
|
+
<span class="cline-any cline-no"> </span>
|
|
1295
|
+
<span class="cline-any cline-no"> </span>
|
|
1296
|
+
<span class="cline-any cline-no"> </span>
|
|
1297
|
+
<span class="cline-any cline-no"> </span>
|
|
1298
|
+
<span class="cline-any cline-no"> </span>
|
|
1299
|
+
<span class="cline-any cline-no"> </span>
|
|
1300
|
+
<span class="cline-any cline-no"> </span>
|
|
1301
|
+
<span class="cline-any cline-no"> </span>
|
|
1302
|
+
<span class="cline-any cline-no"> </span>
|
|
1303
|
+
<span class="cline-any cline-no"> </span>
|
|
1304
|
+
<span class="cline-any cline-no"> </span>
|
|
1305
|
+
<span class="cline-any cline-no"> </span>
|
|
1306
|
+
<span class="cline-any cline-no"> </span>
|
|
1307
|
+
<span class="cline-any cline-no"> </span>
|
|
1308
|
+
<span class="cline-any cline-no"> </span>
|
|
1309
|
+
<span class="cline-any cline-no"> </span>
|
|
1310
|
+
<span class="cline-any cline-no"> </span>
|
|
1311
|
+
<span class="cline-any cline-no"> </span>
|
|
1312
|
+
<span class="cline-any cline-no"> </span>
|
|
1313
|
+
<span class="cline-any cline-no"> </span>
|
|
1314
|
+
<span class="cline-any cline-no"> </span>
|
|
1315
|
+
<span class="cline-any cline-no"> </span>
|
|
1316
|
+
<span class="cline-any cline-no"> </span>
|
|
1317
|
+
<span class="cline-any cline-no"> </span>
|
|
1318
|
+
<span class="cline-any cline-no"> </span>
|
|
1319
|
+
<span class="cline-any cline-no"> </span>
|
|
1320
|
+
<span class="cline-any cline-no"> </span>
|
|
1321
|
+
<span class="cline-any cline-no"> </span>
|
|
1322
|
+
<span class="cline-any cline-no"> </span>
|
|
1323
|
+
<span class="cline-any cline-no"> </span>
|
|
1324
|
+
<span class="cline-any cline-no"> </span>
|
|
1325
|
+
<span class="cline-any cline-no"> </span>
|
|
1326
|
+
<span class="cline-any cline-no"> </span>
|
|
1327
|
+
<span class="cline-any cline-no"> </span>
|
|
1328
|
+
<span class="cline-any cline-no"> </span>
|
|
1329
|
+
<span class="cline-any cline-no"> </span>
|
|
1330
|
+
<span class="cline-any cline-no"> </span>
|
|
1331
|
+
<span class="cline-any cline-no"> </span>
|
|
1332
|
+
<span class="cline-any cline-no"> </span>
|
|
1333
|
+
<span class="cline-any cline-no"> </span>
|
|
1334
|
+
<span class="cline-any cline-no"> </span>
|
|
1335
|
+
<span class="cline-any cline-no"> </span>
|
|
1336
|
+
<span class="cline-any cline-no"> </span>
|
|
1337
|
+
<span class="cline-any cline-no"> </span>
|
|
1338
|
+
<span class="cline-any cline-no"> </span>
|
|
1339
|
+
<span class="cline-any cline-no"> </span>
|
|
1340
|
+
<span class="cline-any cline-no"> </span>
|
|
1341
|
+
<span class="cline-any cline-no"> </span>
|
|
1342
|
+
<span class="cline-any cline-no"> </span>
|
|
1343
|
+
<span class="cline-any cline-no"> </span>
|
|
1344
|
+
<span class="cline-any cline-no"> </span>
|
|
1345
|
+
<span class="cline-any cline-no"> </span>
|
|
1346
|
+
<span class="cline-any cline-no"> </span>
|
|
1347
|
+
<span class="cline-any cline-no"> </span>
|
|
1348
|
+
<span class="cline-any cline-no"> </span>
|
|
1349
|
+
<span class="cline-any cline-no"> </span>
|
|
1350
|
+
<span class="cline-any cline-no"> </span>
|
|
1351
|
+
<span class="cline-any cline-no"> </span>
|
|
1352
|
+
<span class="cline-any cline-no"> </span>
|
|
1353
|
+
<span class="cline-any cline-no"> </span>
|
|
1354
|
+
<span class="cline-any cline-no"> </span>
|
|
1355
|
+
<span class="cline-any cline-no"> </span>
|
|
1356
|
+
<span class="cline-any cline-no"> </span>
|
|
1357
|
+
<span class="cline-any cline-no"> </span>
|
|
1358
|
+
<span class="cline-any cline-no"> </span>
|
|
1359
|
+
<span class="cline-any cline-no"> </span>
|
|
1360
|
+
<span class="cline-any cline-no"> </span>
|
|
1361
|
+
<span class="cline-any cline-no"> </span>
|
|
1362
|
+
<span class="cline-any cline-no"> </span>
|
|
1363
|
+
<span class="cline-any cline-no"> </span>
|
|
1364
|
+
<span class="cline-any cline-no"> </span>
|
|
1365
|
+
<span class="cline-any cline-no"> </span>
|
|
1366
|
+
<span class="cline-any cline-no"> </span>
|
|
1367
|
+
<span class="cline-any cline-no"> </span>
|
|
1368
|
+
<span class="cline-any cline-no"> </span>
|
|
1369
|
+
<span class="cline-any cline-no"> </span>
|
|
1370
|
+
<span class="cline-any cline-no"> </span>
|
|
1371
|
+
<span class="cline-any cline-no"> </span>
|
|
1372
|
+
<span class="cline-any cline-no"> </span>
|
|
1373
|
+
<span class="cline-any cline-no"> </span>
|
|
1374
|
+
<span class="cline-any cline-no"> </span>
|
|
1375
|
+
<span class="cline-any cline-no"> </span>
|
|
1376
|
+
<span class="cline-any cline-no"> </span>
|
|
1377
|
+
<span class="cline-any cline-no"> </span>
|
|
1378
|
+
<span class="cline-any cline-no"> </span>
|
|
1379
|
+
<span class="cline-any cline-no"> </span>
|
|
1380
|
+
<span class="cline-any cline-no"> </span>
|
|
1381
|
+
<span class="cline-any cline-no"> </span>
|
|
1382
|
+
<span class="cline-any cline-no"> </span>
|
|
1383
|
+
<span class="cline-any cline-no"> </span>
|
|
1384
|
+
<span class="cline-any cline-no"> </span>
|
|
1385
|
+
<span class="cline-any cline-no"> </span>
|
|
1386
|
+
<span class="cline-any cline-no"> </span>
|
|
1387
|
+
<span class="cline-any cline-no"> </span>
|
|
1388
|
+
<span class="cline-any cline-no"> </span>
|
|
1389
|
+
<span class="cline-any cline-no"> </span>
|
|
1390
|
+
<span class="cline-any cline-no"> </span>
|
|
1391
|
+
<span class="cline-any cline-no"> </span>
|
|
1392
|
+
<span class="cline-any cline-no"> </span>
|
|
1393
|
+
<span class="cline-any cline-no"> </span>
|
|
1394
|
+
<span class="cline-any cline-no"> </span>
|
|
1395
|
+
<span class="cline-any cline-no"> </span>
|
|
1396
|
+
<span class="cline-any cline-no"> </span>
|
|
1397
|
+
<span class="cline-any cline-no"> </span>
|
|
1398
|
+
<span class="cline-any cline-no"> </span>
|
|
1399
|
+
<span class="cline-any cline-no"> </span>
|
|
1400
|
+
<span class="cline-any cline-no"> </span>
|
|
1401
|
+
<span class="cline-any cline-no"> </span>
|
|
1402
|
+
<span class="cline-any cline-no"> </span>
|
|
1403
|
+
<span class="cline-any cline-no"> </span>
|
|
1404
|
+
<span class="cline-any cline-no"> </span>
|
|
1405
|
+
<span class="cline-any cline-no"> </span>
|
|
1406
|
+
<span class="cline-any cline-no"> </span>
|
|
1407
|
+
<span class="cline-any cline-no"> </span>
|
|
1408
|
+
<span class="cline-any cline-no"> </span>
|
|
1409
|
+
<span class="cline-any cline-no"> </span>
|
|
1410
|
+
<span class="cline-any cline-no"> </span>
|
|
1411
|
+
<span class="cline-any cline-no"> </span>
|
|
1412
|
+
<span class="cline-any cline-no"> </span>
|
|
1413
|
+
<span class="cline-any cline-no"> </span>
|
|
1414
|
+
<span class="cline-any cline-no"> </span>
|
|
1415
|
+
<span class="cline-any cline-no"> </span>
|
|
1416
|
+
<span class="cline-any cline-no"> </span>
|
|
1417
|
+
<span class="cline-any cline-no"> </span>
|
|
1418
|
+
<span class="cline-any cline-no"> </span>
|
|
1419
|
+
<span class="cline-any cline-no"> </span>
|
|
1420
|
+
<span class="cline-any cline-no"> </span>
|
|
1421
|
+
<span class="cline-any cline-no"> </span>
|
|
1422
|
+
<span class="cline-any cline-no"> </span>
|
|
1423
|
+
<span class="cline-any cline-no"> </span>
|
|
1424
|
+
<span class="cline-any cline-no"> </span>
|
|
1425
|
+
<span class="cline-any cline-no"> </span>
|
|
1426
|
+
<span class="cline-any cline-no"> </span>
|
|
1427
|
+
<span class="cline-any cline-no"> </span>
|
|
1428
|
+
<span class="cline-any cline-no"> </span>
|
|
1429
|
+
<span class="cline-any cline-no"> </span>
|
|
1430
|
+
<span class="cline-any cline-no"> </span>
|
|
1431
|
+
<span class="cline-any cline-no"> </span>
|
|
1432
|
+
<span class="cline-any cline-no"> </span>
|
|
1433
|
+
<span class="cline-any cline-no"> </span>
|
|
1434
|
+
<span class="cline-any cline-no"> </span>
|
|
1435
|
+
<span class="cline-any cline-no"> </span>
|
|
1436
|
+
<span class="cline-any cline-no"> </span>
|
|
1437
|
+
<span class="cline-any cline-no"> </span>
|
|
1438
|
+
<span class="cline-any cline-no"> </span>
|
|
1439
|
+
<span class="cline-any cline-no"> </span>
|
|
1440
|
+
<span class="cline-any cline-no"> </span>
|
|
1441
|
+
<span class="cline-any cline-no"> </span>
|
|
1442
|
+
<span class="cline-any cline-no"> </span>
|
|
1443
|
+
<span class="cline-any cline-no"> </span>
|
|
1444
|
+
<span class="cline-any cline-no"> </span>
|
|
1445
|
+
<span class="cline-any cline-no"> </span>
|
|
1446
|
+
<span class="cline-any cline-no"> </span>
|
|
1447
|
+
<span class="cline-any cline-no"> </span>
|
|
1448
|
+
<span class="cline-any cline-no"> </span>
|
|
1449
|
+
<span class="cline-any cline-no"> </span>
|
|
1450
|
+
<span class="cline-any cline-no"> </span>
|
|
1451
|
+
<span class="cline-any cline-no"> </span>
|
|
1452
|
+
<span class="cline-any cline-no"> </span>
|
|
1453
|
+
<span class="cline-any cline-no"> </span>
|
|
1454
|
+
<span class="cline-any cline-no"> </span>
|
|
1455
|
+
<span class="cline-any cline-no"> </span>
|
|
1456
|
+
<span class="cline-any cline-no"> </span>
|
|
1457
|
+
<span class="cline-any cline-no"> </span>
|
|
1458
|
+
<span class="cline-any cline-no"> </span>
|
|
1459
|
+
<span class="cline-any cline-no"> </span>
|
|
1460
|
+
<span class="cline-any cline-no"> </span>
|
|
1461
|
+
<span class="cline-any cline-no"> </span>
|
|
1462
|
+
<span class="cline-any cline-no"> </span>
|
|
1463
|
+
<span class="cline-any cline-no"> </span>
|
|
1464
|
+
<span class="cline-any cline-no"> </span>
|
|
1465
|
+
<span class="cline-any cline-no"> </span>
|
|
1466
|
+
<span class="cline-any cline-no"> </span>
|
|
1467
|
+
<span class="cline-any cline-no"> </span>
|
|
1468
|
+
<span class="cline-any cline-no"> </span>
|
|
1469
|
+
<span class="cline-any cline-no"> </span>
|
|
1470
|
+
<span class="cline-any cline-no"> </span>
|
|
1471
|
+
<span class="cline-any cline-no"> </span>
|
|
1472
|
+
<span class="cline-any cline-no"> </span>
|
|
1473
|
+
<span class="cline-any cline-no"> </span>
|
|
1474
|
+
<span class="cline-any cline-no"> </span>
|
|
1475
|
+
<span class="cline-any cline-no"> </span>
|
|
1476
|
+
<span class="cline-any cline-no"> </span>
|
|
1477
|
+
<span class="cline-any cline-no"> </span>
|
|
1478
|
+
<span class="cline-any cline-no"> </span>
|
|
1479
|
+
<span class="cline-any cline-no"> </span>
|
|
1480
|
+
<span class="cline-any cline-no"> </span>
|
|
1481
|
+
<span class="cline-any cline-no"> </span>
|
|
1482
|
+
<span class="cline-any cline-no"> </span>
|
|
1483
|
+
<span class="cline-any cline-no"> </span>
|
|
1484
|
+
<span class="cline-any cline-no"> </span>
|
|
1485
|
+
<span class="cline-any cline-no"> </span>
|
|
1486
|
+
<span class="cline-any cline-no"> </span>
|
|
1487
|
+
<span class="cline-any cline-no"> </span>
|
|
1488
|
+
<span class="cline-any cline-no"> </span>
|
|
1489
|
+
<span class="cline-any cline-no"> </span>
|
|
1490
|
+
<span class="cline-any cline-no"> </span>
|
|
1491
|
+
<span class="cline-any cline-no"> </span>
|
|
1492
|
+
<span class="cline-any cline-no"> </span>
|
|
1493
|
+
<span class="cline-any cline-no"> </span>
|
|
1494
|
+
<span class="cline-any cline-no"> </span>
|
|
1495
|
+
<span class="cline-any cline-no"> </span>
|
|
1496
|
+
<span class="cline-any cline-no"> </span>
|
|
1497
|
+
<span class="cline-any cline-no"> </span>
|
|
1498
|
+
<span class="cline-any cline-no"> </span>
|
|
1499
|
+
<span class="cline-any cline-no"> </span>
|
|
1500
|
+
<span class="cline-any cline-no"> </span>
|
|
1501
|
+
<span class="cline-any cline-no"> </span>
|
|
1502
|
+
<span class="cline-any cline-no"> </span>
|
|
1503
|
+
<span class="cline-any cline-no"> </span>
|
|
1504
|
+
<span class="cline-any cline-no"> </span>
|
|
1505
|
+
<span class="cline-any cline-no"> </span>
|
|
1506
|
+
<span class="cline-any cline-no"> </span>
|
|
1507
|
+
<span class="cline-any cline-no"> </span>
|
|
1508
|
+
<span class="cline-any cline-no"> </span>
|
|
1509
|
+
<span class="cline-any cline-no"> </span>
|
|
1510
|
+
<span class="cline-any cline-no"> </span>
|
|
1511
|
+
<span class="cline-any cline-no"> </span>
|
|
1512
|
+
<span class="cline-any cline-no"> </span>
|
|
1513
|
+
<span class="cline-any cline-no"> </span>
|
|
1514
|
+
<span class="cline-any cline-no"> </span>
|
|
1515
|
+
<span class="cline-any cline-no"> </span>
|
|
1516
|
+
<span class="cline-any cline-no"> </span>
|
|
1517
|
+
<span class="cline-any cline-no"> </span>
|
|
1518
|
+
<span class="cline-any cline-no"> </span>
|
|
1519
|
+
<span class="cline-any cline-no"> </span>
|
|
1520
|
+
<span class="cline-any cline-no"> </span>
|
|
1521
|
+
<span class="cline-any cline-no"> </span>
|
|
1522
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import { Command } from 'commander';<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
|
|
1523
|
+
<span class="cstat-no" title="statement not covered" >import { loadConfig, validateConfig, type Config } from '@md2do/config';</span>
|
|
1524
|
+
<span class="cstat-no" title="statement not covered" >import * as p from '@clack/prompts';</span>
|
|
1525
|
+
<span class="cstat-no" title="statement not covered" >import { existsSync, readFileSync, writeFileSync } from 'fs';</span>
|
|
1526
|
+
<span class="cstat-no" title="statement not covered" >import { join } from 'path';</span>
|
|
1527
|
+
<span class="cstat-no" title="statement not covered" >import { homedir } from 'os';</span>
|
|
1528
|
+
<span class="cstat-no" title="statement not covered" >import { execSync } from 'child_process';</span>
|
|
1529
|
+
<span class="cstat-no" title="statement not covered" >import yaml from 'js-yaml';</span>
|
|
1530
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1531
|
+
<span class="cstat-no" title="statement not covered" >interface ConfigInitOptions {</span>
|
|
1532
|
+
<span class="cstat-no" title="statement not covered" > global?: boolean;</span>
|
|
1533
|
+
<span class="cstat-no" title="statement not covered" > format?: 'json' | 'yaml' | 'js';</span>
|
|
1534
|
+
<span class="cstat-no" title="statement not covered" > defaultAssignee?: string;</span>
|
|
1535
|
+
<span class="cstat-no" title="statement not covered" > workdayStart?: string;</span>
|
|
1536
|
+
<span class="cstat-no" title="statement not covered" > workdayEnd?: string;</span>
|
|
1537
|
+
<span class="cstat-no" title="statement not covered" > defaultDueTime?: 'start' | 'end';</span>
|
|
1538
|
+
<span class="cstat-no" title="statement not covered" > outputFormat?: 'pretty' | 'table' | 'json';</span>
|
|
1539
|
+
<span class="cstat-no" title="statement not covered" > colors?: boolean;</span>
|
|
1540
|
+
<span class="cstat-no" title="statement not covered" > warnings?: 'recommended' | 'strict' | 'off';</span>
|
|
1541
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1542
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1543
|
+
<span class="cstat-no" title="statement not covered" >interface ConfigSetOptions {</span>
|
|
1544
|
+
<span class="cstat-no" title="statement not covered" > global?: boolean;</span>
|
|
1545
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1546
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1547
|
+
<span class="cstat-no" title="statement not covered" >interface ConfigGetOptions {</span>
|
|
1548
|
+
<span class="cstat-no" title="statement not covered" > global?: boolean;</span>
|
|
1549
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1550
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1551
|
+
<span class="cstat-no" title="statement not covered" >interface ConfigListOptions {</span>
|
|
1552
|
+
<span class="cstat-no" title="statement not covered" > showOrigin?: boolean;</span>
|
|
1553
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1554
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1555
|
+
<span class="cstat-no" title="statement not covered" >interface ConfigEditOptions {</span>
|
|
1556
|
+
<span class="cstat-no" title="statement not covered" > global?: boolean;</span>
|
|
1557
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1558
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1559
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1560
|
+
<span class="cstat-no" title="statement not covered" > * Create the config command group</span>
|
|
1561
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1562
|
+
<span class="cstat-no" title="statement not covered" >export function createConfigCommand(): Command {</span>
|
|
1563
|
+
<span class="cstat-no" title="statement not covered" > const command = new Command('config');</span>
|
|
1564
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1565
|
+
<span class="cstat-no" title="statement not covered" > command.description('Manage md2do configuration');</span>
|
|
1566
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1567
|
+
<span class="cstat-no" title="statement not covered" > // Add subcommands</span>
|
|
1568
|
+
<span class="cstat-no" title="statement not covered" > command.addCommand(createConfigInitCommand());</span>
|
|
1569
|
+
<span class="cstat-no" title="statement not covered" > command.addCommand(createConfigSetCommand());</span>
|
|
1570
|
+
<span class="cstat-no" title="statement not covered" > command.addCommand(createConfigGetCommand());</span>
|
|
1571
|
+
<span class="cstat-no" title="statement not covered" > command.addCommand(createConfigListCommand());</span>
|
|
1572
|
+
<span class="cstat-no" title="statement not covered" > command.addCommand(createConfigEditCommand());</span>
|
|
1573
|
+
<span class="cstat-no" title="statement not covered" > command.addCommand(createConfigValidateCommand());</span>
|
|
1574
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1575
|
+
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
1576
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1577
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1578
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1579
|
+
<span class="cstat-no" title="statement not covered" > * Create the 'config init' subcommand</span>
|
|
1580
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1581
|
+
<span class="cstat-no" title="statement not covered" >function createConfigInitCommand(): Command {</span>
|
|
1582
|
+
<span class="cstat-no" title="statement not covered" > const command = new Command('init');</span>
|
|
1583
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1584
|
+
<span class="cstat-no" title="statement not covered" > command</span>
|
|
1585
|
+
<span class="cstat-no" title="statement not covered" > .description('Initialize md2do configuration with interactive prompts')</span>
|
|
1586
|
+
<span class="cstat-no" title="statement not covered" > .option('-g, --global', 'Create global configuration in home directory')</span>
|
|
1587
|
+
<span class="cstat-no" title="statement not covered" > .option(</span>
|
|
1588
|
+
<span class="cstat-no" title="statement not covered" > '--format <type>',</span>
|
|
1589
|
+
<span class="cstat-no" title="statement not covered" > 'Config file format (json|yaml|js)',</span>
|
|
1590
|
+
<span class="cstat-no" title="statement not covered" > 'json' as 'json' | 'yaml' | 'js',</span>
|
|
1591
|
+
<span class="cstat-no" title="statement not covered" > )</span>
|
|
1592
|
+
<span class="cstat-no" title="statement not covered" > .option('--default-assignee <username>', 'Default assignee username')</span>
|
|
1593
|
+
<span class="cstat-no" title="statement not covered" > .option('--workday-start <time>', 'Work day start time (HH:MM)')</span>
|
|
1594
|
+
<span class="cstat-no" title="statement not covered" > .option('--workday-end <time>', 'Work day end time (HH:MM)')</span>
|
|
1595
|
+
<span class="cstat-no" title="statement not covered" > .option(</span>
|
|
1596
|
+
<span class="cstat-no" title="statement not covered" > '--default-due-time <when>',</span>
|
|
1597
|
+
<span class="cstat-no" title="statement not covered" > 'Default due time (start|end)',</span>
|
|
1598
|
+
<span class="cstat-no" title="statement not covered" > 'end' as 'start' | 'end',</span>
|
|
1599
|
+
<span class="cstat-no" title="statement not covered" > )</span>
|
|
1600
|
+
<span class="cstat-no" title="statement not covered" > .option(</span>
|
|
1601
|
+
<span class="cstat-no" title="statement not covered" > '--output-format <type>',</span>
|
|
1602
|
+
<span class="cstat-no" title="statement not covered" > 'Output format (pretty|table|json)',</span>
|
|
1603
|
+
<span class="cstat-no" title="statement not covered" > 'pretty' as 'pretty' | 'table' | 'json',</span>
|
|
1604
|
+
<span class="cstat-no" title="statement not covered" > )</span>
|
|
1605
|
+
<span class="cstat-no" title="statement not covered" > .option('--no-colors', 'Disable colored output')</span>
|
|
1606
|
+
<span class="cstat-no" title="statement not covered" > .option(</span>
|
|
1607
|
+
<span class="cstat-no" title="statement not covered" > '--warnings <level>',</span>
|
|
1608
|
+
<span class="cstat-no" title="statement not covered" > 'Warning level (recommended|strict|off)',</span>
|
|
1609
|
+
<span class="cstat-no" title="statement not covered" > 'recommended' as 'recommended' | 'strict' | 'off',</span>
|
|
1610
|
+
<span class="cstat-no" title="statement not covered" > )</span>
|
|
1611
|
+
<span class="cstat-no" title="statement not covered" > .action(async (options: ConfigInitOptions) => {</span>
|
|
1612
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1613
|
+
<span class="cstat-no" title="statement not covered" > await configInitAction(options);</span>
|
|
1614
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1615
|
+
<span class="cstat-no" title="statement not covered" > if (error instanceof Error && error.message === 'canceled') {</span>
|
|
1616
|
+
<span class="cstat-no" title="statement not covered" > p.cancel('Configuration canceled');</span>
|
|
1617
|
+
<span class="cstat-no" title="statement not covered" > process.exit(0);</span>
|
|
1618
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1619
|
+
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1620
|
+
<span class="cstat-no" title="statement not covered" > 'Error:',</span>
|
|
1621
|
+
<span class="cstat-no" title="statement not covered" > error instanceof Error ? error.message : String(error),</span>
|
|
1622
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1623
|
+
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1624
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1625
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1626
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1627
|
+
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
1628
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1629
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1630
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1631
|
+
<span class="cstat-no" title="statement not covered" > * Action handler for 'config init' command</span>
|
|
1632
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1633
|
+
<span class="cstat-no" title="statement not covered" >async function configInitAction(options: ConfigInitOptions): Promise<void> {</span>
|
|
1634
|
+
<span class="cstat-no" title="statement not covered" > p.intro('Welcome to md2do configuration!');</span>
|
|
1635
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1636
|
+
<span class="cstat-no" title="statement not covered" > // Determine if we're in interactive mode</span>
|
|
1637
|
+
<span class="cstat-no" title="statement not covered" > const hasAnyOption =</span>
|
|
1638
|
+
<span class="cstat-no" title="statement not covered" > options.defaultAssignee !== undefined ||</span>
|
|
1639
|
+
<span class="cstat-no" title="statement not covered" > options.workdayStart !== undefined ||</span>
|
|
1640
|
+
<span class="cstat-no" title="statement not covered" > options.workdayEnd !== undefined ||</span>
|
|
1641
|
+
<span class="cstat-no" title="statement not covered" > options.defaultDueTime !== undefined ||</span>
|
|
1642
|
+
<span class="cstat-no" title="statement not covered" > options.outputFormat !== undefined ||</span>
|
|
1643
|
+
<span class="cstat-no" title="statement not covered" > options.colors !== undefined ||</span>
|
|
1644
|
+
<span class="cstat-no" title="statement not covered" > options.warnings !== undefined;</span>
|
|
1645
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1646
|
+
<span class="cstat-no" title="statement not covered" > const interactive = !hasAnyOption;</span>
|
|
1647
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1648
|
+
<span class="cstat-no" title="statement not covered" > const config: Partial<Config> = {};</span>
|
|
1649
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1650
|
+
<span class="cstat-no" title="statement not covered" > if (interactive) {</span>
|
|
1651
|
+
<span class="cstat-no" title="statement not covered" > // Interactive prompts</span>
|
|
1652
|
+
<span class="cstat-no" title="statement not covered" > const defaultAssignee = await p.text({</span>
|
|
1653
|
+
<span class="cstat-no" title="statement not covered" > message: 'Your username (for filtering tasks):',</span>
|
|
1654
|
+
<span class="cstat-no" title="statement not covered" > placeholder: 'Leave empty to skip',</span>
|
|
1655
|
+
<span class="cstat-no" title="statement not covered" > validate: (value) => {</span>
|
|
1656
|
+
<span class="cstat-no" title="statement not covered" > if (value && !/^[a-zA-Z0-9_-]+$/.test(value)) {</span>
|
|
1657
|
+
<span class="cstat-no" title="statement not covered" > return 'Username should only contain letters, numbers, dashes, and underscores';</span>
|
|
1658
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1659
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1660
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1661
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1662
|
+
<span class="cstat-no" title="statement not covered" > const workdayStart = await p.text({</span>
|
|
1663
|
+
<span class="cstat-no" title="statement not covered" > message: 'Work day start time (HH:MM):',</span>
|
|
1664
|
+
<span class="cstat-no" title="statement not covered" > initialValue: '08:00',</span>
|
|
1665
|
+
<span class="cstat-no" title="statement not covered" > validate: (value) => {</span>
|
|
1666
|
+
<span class="cstat-no" title="statement not covered" > if (typeof value === 'string' && !/^\d{2}:\d{2}$/.test(value)) {</span>
|
|
1667
|
+
<span class="cstat-no" title="statement not covered" > return 'Time must be in HH:MM format';</span>
|
|
1668
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1669
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1670
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1671
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1672
|
+
<span class="cstat-no" title="statement not covered" > const workdayEnd = await p.text({</span>
|
|
1673
|
+
<span class="cstat-no" title="statement not covered" > message: 'Work day end time (HH:MM):',</span>
|
|
1674
|
+
<span class="cstat-no" title="statement not covered" > initialValue: '17:00',</span>
|
|
1675
|
+
<span class="cstat-no" title="statement not covered" > validate: (value) => {</span>
|
|
1676
|
+
<span class="cstat-no" title="statement not covered" > if (typeof value === 'string' && !/^\d{2}:\d{2}$/.test(value)) {</span>
|
|
1677
|
+
<span class="cstat-no" title="statement not covered" > return 'Time must be in HH:MM format';</span>
|
|
1678
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1679
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1680
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1681
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1682
|
+
<span class="cstat-no" title="statement not covered" > const defaultDueTime = await p.select({</span>
|
|
1683
|
+
<span class="cstat-no" title="statement not covered" > message: 'Default due time:',</span>
|
|
1684
|
+
<span class="cstat-no" title="statement not covered" > options: [</span>
|
|
1685
|
+
<span class="cstat-no" title="statement not covered" > { value: 'end', label: 'End of day' },</span>
|
|
1686
|
+
<span class="cstat-no" title="statement not covered" > { value: 'start', label: 'Start of day' },</span>
|
|
1687
|
+
<span class="cstat-no" title="statement not covered" > ],</span>
|
|
1688
|
+
<span class="cstat-no" title="statement not covered" > initialValue: 'end',</span>
|
|
1689
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1690
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1691
|
+
<span class="cstat-no" title="statement not covered" > const outputFormat = await p.select({</span>
|
|
1692
|
+
<span class="cstat-no" title="statement not covered" > message: 'Output format:',</span>
|
|
1693
|
+
<span class="cstat-no" title="statement not covered" > options: [</span>
|
|
1694
|
+
<span class="cstat-no" title="statement not covered" > { value: 'pretty', label: 'Pretty (human-readable)' },</span>
|
|
1695
|
+
<span class="cstat-no" title="statement not covered" > { value: 'table', label: 'Table (structured)' },</span>
|
|
1696
|
+
<span class="cstat-no" title="statement not covered" > { value: 'json', label: 'JSON (machine-readable)' },</span>
|
|
1697
|
+
<span class="cstat-no" title="statement not covered" > ],</span>
|
|
1698
|
+
<span class="cstat-no" title="statement not covered" > initialValue: 'pretty',</span>
|
|
1699
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1700
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1701
|
+
<span class="cstat-no" title="statement not covered" > const colors = await p.confirm({</span>
|
|
1702
|
+
<span class="cstat-no" title="statement not covered" > message: 'Enable colored output?',</span>
|
|
1703
|
+
<span class="cstat-no" title="statement not covered" > initialValue: true,</span>
|
|
1704
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1705
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1706
|
+
<span class="cstat-no" title="statement not covered" > const warnings = await p.select({</span>
|
|
1707
|
+
<span class="cstat-no" title="statement not covered" > message: 'Warning level:',</span>
|
|
1708
|
+
<span class="cstat-no" title="statement not covered" > options: [</span>
|
|
1709
|
+
<span class="cstat-no" title="statement not covered" > {</span>
|
|
1710
|
+
<span class="cstat-no" title="statement not covered" > value: 'recommended',</span>
|
|
1711
|
+
<span class="cstat-no" title="statement not covered" > label: 'Recommended (validates format, metadata optional)',</span>
|
|
1712
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1713
|
+
<span class="cstat-no" title="statement not covered" > {</span>
|
|
1714
|
+
<span class="cstat-no" title="statement not covered" > value: 'strict',</span>
|
|
1715
|
+
<span class="cstat-no" title="statement not covered" > label: 'Strict (enforces complete metadata)',</span>
|
|
1716
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1717
|
+
<span class="cstat-no" title="statement not covered" > { value: 'off', label: 'Off (no warnings)' },</span>
|
|
1718
|
+
<span class="cstat-no" title="statement not covered" > ],</span>
|
|
1719
|
+
<span class="cstat-no" title="statement not covered" > initialValue: 'recommended',</span>
|
|
1720
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1721
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1722
|
+
<span class="cstat-no" title="statement not covered" > // Build config object</span>
|
|
1723
|
+
<span class="cstat-no" title="statement not covered" > if (defaultAssignee && typeof defaultAssignee === 'string') {</span>
|
|
1724
|
+
<span class="cstat-no" title="statement not covered" > config.defaultAssignee = defaultAssignee;</span>
|
|
1725
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1726
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1727
|
+
<span class="cstat-no" title="statement not covered" > config.workday = {</span>
|
|
1728
|
+
<span class="cstat-no" title="statement not covered" > startTime: typeof workdayStart === 'string' ? workdayStart : '08:00',</span>
|
|
1729
|
+
<span class="cstat-no" title="statement not covered" > endTime: typeof workdayEnd === 'string' ? workdayEnd : '17:00',</span>
|
|
1730
|
+
<span class="cstat-no" title="statement not covered" > defaultDueTime:</span>
|
|
1731
|
+
<span class="cstat-no" title="statement not covered" > typeof defaultDueTime === 'string'</span>
|
|
1732
|
+
<span class="cstat-no" title="statement not covered" > ? (defaultDueTime as 'start' | 'end')</span>
|
|
1733
|
+
<span class="cstat-no" title="statement not covered" > : 'end',</span>
|
|
1734
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1735
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1736
|
+
<span class="cstat-no" title="statement not covered" > config.output = {</span>
|
|
1737
|
+
<span class="cstat-no" title="statement not covered" > format:</span>
|
|
1738
|
+
<span class="cstat-no" title="statement not covered" > typeof outputFormat === 'string'</span>
|
|
1739
|
+
<span class="cstat-no" title="statement not covered" > ? (outputFormat as 'pretty' | 'table' | 'json')</span>
|
|
1740
|
+
<span class="cstat-no" title="statement not covered" > : 'pretty',</span>
|
|
1741
|
+
<span class="cstat-no" title="statement not covered" > colors: typeof colors === 'boolean' ? colors : true,</span>
|
|
1742
|
+
<span class="cstat-no" title="statement not covered" > paths: true,</span>
|
|
1743
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1744
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1745
|
+
<span class="cstat-no" title="statement not covered" > if (typeof warnings === 'string' && warnings === 'off') {</span>
|
|
1746
|
+
<span class="cstat-no" title="statement not covered" > config.warnings = { enabled: false };</span>
|
|
1747
|
+
<span class="cstat-no" title="statement not covered" > } else if (typeof warnings === 'string' && warnings === 'strict') {</span>
|
|
1748
|
+
<span class="cstat-no" title="statement not covered" > config.warnings = {</span>
|
|
1749
|
+
<span class="cstat-no" title="statement not covered" > enabled: true,</span>
|
|
1750
|
+
<span class="cstat-no" title="statement not covered" > rules: {</span>
|
|
1751
|
+
<span class="cstat-no" title="statement not covered" > 'unsupported-bullet': 'warn',</span>
|
|
1752
|
+
<span class="cstat-no" title="statement not covered" > 'malformed-checkbox': 'warn',</span>
|
|
1753
|
+
<span class="cstat-no" title="statement not covered" > 'missing-space-after': 'warn',</span>
|
|
1754
|
+
<span class="cstat-no" title="statement not covered" > 'missing-space-before': 'warn',</span>
|
|
1755
|
+
<span class="cstat-no" title="statement not covered" > 'relative-date-no-context': 'warn',</span>
|
|
1756
|
+
<span class="cstat-no" title="statement not covered" > 'missing-due-date': 'warn',</span>
|
|
1757
|
+
<span class="cstat-no" title="statement not covered" > 'missing-completed-date': 'warn',</span>
|
|
1758
|
+
<span class="cstat-no" title="statement not covered" > 'duplicate-todoist-id': 'error',</span>
|
|
1759
|
+
<span class="cstat-no" title="statement not covered" > 'file-read-error': 'error',</span>
|
|
1760
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1761
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1762
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1763
|
+
<span class="cstat-no" title="statement not covered" > // recommended is the default, no need to set explicitly</span>
|
|
1764
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1765
|
+
<span class="cstat-no" title="statement not covered" > // Non-interactive mode: use CLI options</span>
|
|
1766
|
+
<span class="cstat-no" title="statement not covered" > if (options.defaultAssignee) {</span>
|
|
1767
|
+
<span class="cstat-no" title="statement not covered" > config.defaultAssignee = options.defaultAssignee;</span>
|
|
1768
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1769
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1770
|
+
<span class="cstat-no" title="statement not covered" > config.workday = {</span>
|
|
1771
|
+
<span class="cstat-no" title="statement not covered" > startTime: options.workdayStart || '08:00',</span>
|
|
1772
|
+
<span class="cstat-no" title="statement not covered" > endTime: options.workdayEnd || '17:00',</span>
|
|
1773
|
+
<span class="cstat-no" title="statement not covered" > defaultDueTime: options.defaultDueTime || 'end',</span>
|
|
1774
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1775
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1776
|
+
<span class="cstat-no" title="statement not covered" > config.output = {</span>
|
|
1777
|
+
<span class="cstat-no" title="statement not covered" > format: options.outputFormat || 'pretty',</span>
|
|
1778
|
+
<span class="cstat-no" title="statement not covered" > colors: options.colors ?? true,</span>
|
|
1779
|
+
<span class="cstat-no" title="statement not covered" > paths: true,</span>
|
|
1780
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1781
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1782
|
+
<span class="cstat-no" title="statement not covered" > if (options.warnings === 'off') {</span>
|
|
1783
|
+
<span class="cstat-no" title="statement not covered" > config.warnings = { enabled: false };</span>
|
|
1784
|
+
<span class="cstat-no" title="statement not covered" > } else if (options.warnings === 'strict') {</span>
|
|
1785
|
+
<span class="cstat-no" title="statement not covered" > config.warnings = {</span>
|
|
1786
|
+
<span class="cstat-no" title="statement not covered" > enabled: true,</span>
|
|
1787
|
+
<span class="cstat-no" title="statement not covered" > rules: {</span>
|
|
1788
|
+
<span class="cstat-no" title="statement not covered" > 'unsupported-bullet': 'warn',</span>
|
|
1789
|
+
<span class="cstat-no" title="statement not covered" > 'malformed-checkbox': 'warn',</span>
|
|
1790
|
+
<span class="cstat-no" title="statement not covered" > 'missing-space-after': 'warn',</span>
|
|
1791
|
+
<span class="cstat-no" title="statement not covered" > 'missing-space-before': 'warn',</span>
|
|
1792
|
+
<span class="cstat-no" title="statement not covered" > 'relative-date-no-context': 'warn',</span>
|
|
1793
|
+
<span class="cstat-no" title="statement not covered" > 'missing-due-date': 'warn',</span>
|
|
1794
|
+
<span class="cstat-no" title="statement not covered" > 'missing-completed-date': 'warn',</span>
|
|
1795
|
+
<span class="cstat-no" title="statement not covered" > 'duplicate-todoist-id': 'error',</span>
|
|
1796
|
+
<span class="cstat-no" title="statement not covered" > 'file-read-error': 'error',</span>
|
|
1797
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1798
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
1799
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1800
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1801
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1802
|
+
<span class="cstat-no" title="statement not covered" > // Validate config</span>
|
|
1803
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1804
|
+
<span class="cstat-no" title="statement not covered" > validateConfig(config);</span>
|
|
1805
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1806
|
+
<span class="cstat-no" title="statement not covered" > p.cancel(</span>
|
|
1807
|
+
<span class="cstat-no" title="statement not covered" > `Invalid configuration: ${error instanceof Error ? error.message : String(error)}`,</span>
|
|
1808
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1809
|
+
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1810
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1811
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1812
|
+
<span class="cstat-no" title="statement not covered" > // Determine config file path</span>
|
|
1813
|
+
<span class="cstat-no" title="statement not covered" > const format = options.format || 'json';</span>
|
|
1814
|
+
<span class="cstat-no" title="statement not covered" > const configPath = getConfigPath(options.global || false, format);</span>
|
|
1815
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1816
|
+
<span class="cstat-no" title="statement not covered" > // Check if config already exists</span>
|
|
1817
|
+
<span class="cstat-no" title="statement not covered" > if (existsSync(configPath)) {</span>
|
|
1818
|
+
<span class="cstat-no" title="statement not covered" > if (interactive) {</span>
|
|
1819
|
+
<span class="cstat-no" title="statement not covered" > const overwrite = await p.confirm({</span>
|
|
1820
|
+
<span class="cstat-no" title="statement not covered" > message: `Configuration file already exists at ${configPath}. Overwrite?`,</span>
|
|
1821
|
+
<span class="cstat-no" title="statement not covered" > initialValue: false,</span>
|
|
1822
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1823
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1824
|
+
<span class="cstat-no" title="statement not covered" > if (!overwrite) {</span>
|
|
1825
|
+
<span class="cstat-no" title="statement not covered" > p.cancel('Configuration canceled');</span>
|
|
1826
|
+
<span class="cstat-no" title="statement not covered" > process.exit(0);</span>
|
|
1827
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1828
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1829
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1830
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1831
|
+
<span class="cstat-no" title="statement not covered" > // Write config file</span>
|
|
1832
|
+
<span class="cstat-no" title="statement not covered" > writeConfigFile(configPath, config, format);</span>
|
|
1833
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1834
|
+
<span class="cstat-no" title="statement not covered" > p.outro(`✓ Configuration saved to ${configPath}`);</span>
|
|
1835
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1836
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1837
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1838
|
+
<span class="cstat-no" title="statement not covered" > * Create the 'config set' subcommand</span>
|
|
1839
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1840
|
+
<span class="cstat-no" title="statement not covered" >function createConfigSetCommand(): Command {</span>
|
|
1841
|
+
<span class="cstat-no" title="statement not covered" > const command = new Command('set');</span>
|
|
1842
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1843
|
+
<span class="cstat-no" title="statement not covered" > command</span>
|
|
1844
|
+
<span class="cstat-no" title="statement not covered" > .description('Set a configuration value')</span>
|
|
1845
|
+
<span class="cstat-no" title="statement not covered" > .argument('<key>', 'Configuration key (e.g., workday.startTime)')</span>
|
|
1846
|
+
<span class="cstat-no" title="statement not covered" > .argument('<value>', 'Configuration value')</span>
|
|
1847
|
+
<span class="cstat-no" title="statement not covered" > .option('-g, --global', 'Set in global configuration')</span>
|
|
1848
|
+
<span class="cstat-no" title="statement not covered" > .action((key: string, value: string, options: ConfigSetOptions) => {</span>
|
|
1849
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1850
|
+
<span class="cstat-no" title="statement not covered" > configSetAction(key, value, options);</span>
|
|
1851
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1852
|
+
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1853
|
+
<span class="cstat-no" title="statement not covered" > 'Error:',</span>
|
|
1854
|
+
<span class="cstat-no" title="statement not covered" > error instanceof Error ? error.message : String(error),</span>
|
|
1855
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1856
|
+
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1857
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1858
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1859
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1860
|
+
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
1861
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1862
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1863
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1864
|
+
<span class="cstat-no" title="statement not covered" > * Action handler for 'config set' command</span>
|
|
1865
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1866
|
+
<span class="cstat-no" title="statement not covered" >function configSetAction(</span>
|
|
1867
|
+
<span class="cstat-no" title="statement not covered" > key: string,</span>
|
|
1868
|
+
<span class="cstat-no" title="statement not covered" > value: string,</span>
|
|
1869
|
+
<span class="cstat-no" title="statement not covered" > options: ConfigSetOptions,</span>
|
|
1870
|
+
<span class="cstat-no" title="statement not covered" >): void {</span>
|
|
1871
|
+
<span class="cstat-no" title="statement not covered" > const isGlobal = options.global || false;</span>
|
|
1872
|
+
<span class="cstat-no" title="statement not covered" > const configPath = findExistingConfigPath(isGlobal);</span>
|
|
1873
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1874
|
+
<span class="cstat-no" title="statement not covered" > let config: Partial<Config> = {};</span>
|
|
1875
|
+
<span class="cstat-no" title="statement not covered" > let format: 'json' | 'yaml' | 'js' = 'json';</span>
|
|
1876
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1877
|
+
<span class="cstat-no" title="statement not covered" > // Load existing config if exists</span>
|
|
1878
|
+
<span class="cstat-no" title="statement not covered" > if (configPath) {</span>
|
|
1879
|
+
<span class="cstat-no" title="statement not covered" > format = getConfigFormat(configPath);</span>
|
|
1880
|
+
<span class="cstat-no" title="statement not covered" > const content = readFileSync(configPath, 'utf-8');</span>
|
|
1881
|
+
<span class="cstat-no" title="statement not covered" > config = parseConfigFile(content, format);</span>
|
|
1882
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1883
|
+
<span class="cstat-no" title="statement not covered" > // Create new config with default format</span>
|
|
1884
|
+
<span class="cstat-no" title="statement not covered" > format = 'json';</span>
|
|
1885
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1886
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1887
|
+
<span class="cstat-no" title="statement not covered" > // Parse and set value</span>
|
|
1888
|
+
<span class="cstat-no" title="statement not covered" > const parsedValue = parseValue(value);</span>
|
|
1889
|
+
<span class="cstat-no" title="statement not covered" > setNestedValue(config, key, parsedValue);</span>
|
|
1890
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1891
|
+
<span class="cstat-no" title="statement not covered" > // Validate</span>
|
|
1892
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1893
|
+
<span class="cstat-no" title="statement not covered" > validateConfig(config);</span>
|
|
1894
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1895
|
+
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1896
|
+
<span class="cstat-no" title="statement not covered" > `Invalid configuration: ${error instanceof Error ? error.message : String(error)}`,</span>
|
|
1897
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1898
|
+
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1899
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1900
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1901
|
+
<span class="cstat-no" title="statement not covered" > // Write back</span>
|
|
1902
|
+
<span class="cstat-no" title="statement not covered" > const finalPath = configPath || getConfigPath(isGlobal, format);</span>
|
|
1903
|
+
<span class="cstat-no" title="statement not covered" > writeConfigFile(finalPath, config, format);</span>
|
|
1904
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1905
|
+
<span class="cstat-no" title="statement not covered" > console.log(`✓ Set ${key} = ${value} in ${finalPath}`);</span>
|
|
1906
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1907
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1908
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1909
|
+
<span class="cstat-no" title="statement not covered" > * Create the 'config get' subcommand</span>
|
|
1910
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1911
|
+
<span class="cstat-no" title="statement not covered" >function createConfigGetCommand(): Command {</span>
|
|
1912
|
+
<span class="cstat-no" title="statement not covered" > const command = new Command('get');</span>
|
|
1913
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1914
|
+
<span class="cstat-no" title="statement not covered" > command</span>
|
|
1915
|
+
<span class="cstat-no" title="statement not covered" > .description('Get a configuration value')</span>
|
|
1916
|
+
<span class="cstat-no" title="statement not covered" > .argument('<key>', 'Configuration key (e.g., workday.startTime)')</span>
|
|
1917
|
+
<span class="cstat-no" title="statement not covered" > .option('-g, --global', 'Get from global configuration only')</span>
|
|
1918
|
+
<span class="cstat-no" title="statement not covered" > .action(async (key: string, options: ConfigGetOptions) => {</span>
|
|
1919
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1920
|
+
<span class="cstat-no" title="statement not covered" > await configGetAction(key, options);</span>
|
|
1921
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1922
|
+
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1923
|
+
<span class="cstat-no" title="statement not covered" > 'Error:',</span>
|
|
1924
|
+
<span class="cstat-no" title="statement not covered" > error instanceof Error ? error.message : String(error),</span>
|
|
1925
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1926
|
+
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1927
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1928
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1929
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1930
|
+
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
1931
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1932
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1933
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1934
|
+
<span class="cstat-no" title="statement not covered" > * Action handler for 'config get' command</span>
|
|
1935
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1936
|
+
<span class="cstat-no" title="statement not covered" >async function configGetAction(</span>
|
|
1937
|
+
<span class="cstat-no" title="statement not covered" > key: string,</span>
|
|
1938
|
+
<span class="cstat-no" title="statement not covered" > options: ConfigGetOptions,</span>
|
|
1939
|
+
<span class="cstat-no" title="statement not covered" >): Promise<void> {</span>
|
|
1940
|
+
<span class="cstat-no" title="statement not covered" > const config = options.global</span>
|
|
1941
|
+
<span class="cstat-no" title="statement not covered" > ? await loadConfig({ loadGlobal: true, loadEnv: false, cwd: homedir() })</span>
|
|
1942
|
+
<span class="cstat-no" title="statement not covered" > : await loadConfig();</span>
|
|
1943
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1944
|
+
<span class="cstat-no" title="statement not covered" > const value = getNestedValue(config, key);</span>
|
|
1945
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1946
|
+
<span class="cstat-no" title="statement not covered" > if (value === undefined) {</span>
|
|
1947
|
+
<span class="cstat-no" title="statement not covered" > console.log('(not set)');</span>
|
|
1948
|
+
<span class="cstat-no" title="statement not covered" > } else if (typeof value === 'object') {</span>
|
|
1949
|
+
<span class="cstat-no" title="statement not covered" > console.log(JSON.stringify(value, null, 2));</span>
|
|
1950
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1951
|
+
<span class="cstat-no" title="statement not covered" > console.log(value);</span>
|
|
1952
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1953
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1954
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1955
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1956
|
+
<span class="cstat-no" title="statement not covered" > * Create the 'config list' subcommand</span>
|
|
1957
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1958
|
+
<span class="cstat-no" title="statement not covered" >function createConfigListCommand(): Command {</span>
|
|
1959
|
+
<span class="cstat-no" title="statement not covered" > const command = new Command('list');</span>
|
|
1960
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1961
|
+
<span class="cstat-no" title="statement not covered" > command</span>
|
|
1962
|
+
<span class="cstat-no" title="statement not covered" > .description('Show all configuration values')</span>
|
|
1963
|
+
<span class="cstat-no" title="statement not covered" > .option('--show-origin', 'Show where each value comes from')</span>
|
|
1964
|
+
<span class="cstat-no" title="statement not covered" > .action(async (options: ConfigListOptions) => {</span>
|
|
1965
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1966
|
+
<span class="cstat-no" title="statement not covered" > await configListAction(options);</span>
|
|
1967
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1968
|
+
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
1969
|
+
<span class="cstat-no" title="statement not covered" > 'Error:',</span>
|
|
1970
|
+
<span class="cstat-no" title="statement not covered" > error instanceof Error ? error.message : String(error),</span>
|
|
1971
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1972
|
+
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
1973
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1974
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1975
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1976
|
+
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
1977
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1978
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1979
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
1980
|
+
<span class="cstat-no" title="statement not covered" > * Action handler for 'config list' command</span>
|
|
1981
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1982
|
+
<span class="cstat-no" title="statement not covered" >async function configListAction(options: ConfigListOptions): Promise<void> {</span>
|
|
1983
|
+
<span class="cstat-no" title="statement not covered" > const config = await loadConfig();</span>
|
|
1984
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1985
|
+
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1986
|
+
<span class="cstat-no" title="statement not covered" > console.log('Current configuration:');</span>
|
|
1987
|
+
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1988
|
+
<span class="cstat-no" title="statement not covered" > console.log(JSON.stringify(config, null, 2));</span>
|
|
1989
|
+
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1990
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1991
|
+
<span class="cstat-no" title="statement not covered" > if (options.showOrigin) {</span>
|
|
1992
|
+
<span class="cstat-no" title="statement not covered" > console.log('Configuration sources:');</span>
|
|
1993
|
+
<span class="cstat-no" title="statement not covered" > console.log(' 1. Default values (built-in)');</span>
|
|
1994
|
+
<span class="cstat-no" title="statement not covered" > console.log(` 2. Global config (${getConfigPath(true, 'json')})`);</span>
|
|
1995
|
+
<span class="cstat-no" title="statement not covered" > console.log(` 3. Project config (${getConfigPath(false, 'json')})`);</span>
|
|
1996
|
+
<span class="cstat-no" title="statement not covered" > console.log(' 4. Environment variables');</span>
|
|
1997
|
+
<span class="cstat-no" title="statement not covered" > console.log('');</span>
|
|
1998
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1999
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2000
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2001
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2002
|
+
<span class="cstat-no" title="statement not covered" > * Create the 'config edit' subcommand</span>
|
|
2003
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2004
|
+
<span class="cstat-no" title="statement not covered" >function createConfigEditCommand(): Command {</span>
|
|
2005
|
+
<span class="cstat-no" title="statement not covered" > const command = new Command('edit');</span>
|
|
2006
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2007
|
+
<span class="cstat-no" title="statement not covered" > command</span>
|
|
2008
|
+
<span class="cstat-no" title="statement not covered" > .description('Open configuration file in your default editor')</span>
|
|
2009
|
+
<span class="cstat-no" title="statement not covered" > .option('-g, --global', 'Edit global configuration')</span>
|
|
2010
|
+
<span class="cstat-no" title="statement not covered" > .action((options: ConfigEditOptions) => {</span>
|
|
2011
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2012
|
+
<span class="cstat-no" title="statement not covered" > configEditAction(options);</span>
|
|
2013
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
2014
|
+
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
2015
|
+
<span class="cstat-no" title="statement not covered" > 'Error:',</span>
|
|
2016
|
+
<span class="cstat-no" title="statement not covered" > error instanceof Error ? error.message : String(error),</span>
|
|
2017
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2018
|
+
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2019
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2020
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2021
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2022
|
+
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
2023
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2024
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2025
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2026
|
+
<span class="cstat-no" title="statement not covered" > * Action handler for 'config edit' command</span>
|
|
2027
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2028
|
+
<span class="cstat-no" title="statement not covered" >function configEditAction(options: ConfigEditOptions): void {</span>
|
|
2029
|
+
<span class="cstat-no" title="statement not covered" > const isGlobal = options.global || false;</span>
|
|
2030
|
+
<span class="cstat-no" title="statement not covered" > let configPath = findExistingConfigPath(isGlobal);</span>
|
|
2031
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2032
|
+
<span class="cstat-no" title="statement not covered" > // Create config if it doesn't exist</span>
|
|
2033
|
+
<span class="cstat-no" title="statement not covered" > if (!configPath) {</span>
|
|
2034
|
+
<span class="cstat-no" title="statement not covered" > configPath = getConfigPath(isGlobal, 'json');</span>
|
|
2035
|
+
<span class="cstat-no" title="statement not covered" > writeConfigFile(configPath, {}, 'json');</span>
|
|
2036
|
+
<span class="cstat-no" title="statement not covered" > console.log(`Created new configuration file: ${configPath}`);</span>
|
|
2037
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2038
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2039
|
+
<span class="cstat-no" title="statement not covered" > // Get editor</span>
|
|
2040
|
+
<span class="cstat-no" title="statement not covered" > const editor =</span>
|
|
2041
|
+
<span class="cstat-no" title="statement not covered" > process.env.VISUAL ||</span>
|
|
2042
|
+
<span class="cstat-no" title="statement not covered" > process.env.EDITOR ||</span>
|
|
2043
|
+
<span class="cstat-no" title="statement not covered" > (process.platform === 'win32' ? 'notepad' : 'vi');</span>
|
|
2044
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2045
|
+
<span class="cstat-no" title="statement not covered" > console.log(`Opening ${configPath} in ${editor}...`);</span>
|
|
2046
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2047
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2048
|
+
<span class="cstat-no" title="statement not covered" > execSync(`${editor} '${configPath}'`, { stdio: 'inherit' });</span>
|
|
2049
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
2050
|
+
<span class="cstat-no" title="statement not covered" > console.error('Failed to open editor');</span>
|
|
2051
|
+
<span class="cstat-no" title="statement not covered" > console.error(`You can manually edit the file at: ${configPath}`);</span>
|
|
2052
|
+
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2053
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2054
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2055
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2056
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2057
|
+
<span class="cstat-no" title="statement not covered" > * Create the 'config validate' subcommand</span>
|
|
2058
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2059
|
+
<span class="cstat-no" title="statement not covered" >function createConfigValidateCommand(): Command {</span>
|
|
2060
|
+
<span class="cstat-no" title="statement not covered" > const command = new Command('validate');</span>
|
|
2061
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2062
|
+
<span class="cstat-no" title="statement not covered" > command.description('Validate current configuration').action(async () => {</span>
|
|
2063
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2064
|
+
<span class="cstat-no" title="statement not covered" > await configValidateAction();</span>
|
|
2065
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
2066
|
+
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
2067
|
+
<span class="cstat-no" title="statement not covered" > 'Error:',</span>
|
|
2068
|
+
<span class="cstat-no" title="statement not covered" > error instanceof Error ? error.message : String(error),</span>
|
|
2069
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2070
|
+
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2071
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2072
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2073
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2074
|
+
<span class="cstat-no" title="statement not covered" > return command;</span>
|
|
2075
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2076
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2077
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2078
|
+
<span class="cstat-no" title="statement not covered" > * Action handler for 'config validate' command</span>
|
|
2079
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2080
|
+
<span class="cstat-no" title="statement not covered" >async function configValidateAction(): Promise<void> {</span>
|
|
2081
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2082
|
+
<span class="cstat-no" title="statement not covered" > const config = await loadConfig();</span>
|
|
2083
|
+
<span class="cstat-no" title="statement not covered" > validateConfig(config);</span>
|
|
2084
|
+
<span class="cstat-no" title="statement not covered" > console.log('✓ Configuration is valid');</span>
|
|
2085
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
2086
|
+
<span class="cstat-no" title="statement not covered" > console.error(</span>
|
|
2087
|
+
<span class="cstat-no" title="statement not covered" > `Invalid configuration: ${error instanceof Error ? error.message : String(error)}`,</span>
|
|
2088
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
2089
|
+
<span class="cstat-no" title="statement not covered" > process.exit(1);</span>
|
|
2090
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2091
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2092
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2093
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2094
|
+
<span class="cstat-no" title="statement not covered" > * Helper: Get config file path</span>
|
|
2095
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2096
|
+
<span class="cstat-no" title="statement not covered" >function getConfigPath(</span>
|
|
2097
|
+
<span class="cstat-no" title="statement not covered" > isGlobal: boolean,</span>
|
|
2098
|
+
<span class="cstat-no" title="statement not covered" > format: 'json' | 'yaml' | 'js',</span>
|
|
2099
|
+
<span class="cstat-no" title="statement not covered" >): string {</span>
|
|
2100
|
+
<span class="cstat-no" title="statement not covered" > const base = isGlobal ? homedir() : process.cwd();</span>
|
|
2101
|
+
<span class="cstat-no" title="statement not covered" > const fileName =</span>
|
|
2102
|
+
<span class="cstat-no" title="statement not covered" > format === 'json'</span>
|
|
2103
|
+
<span class="cstat-no" title="statement not covered" > ? '.md2do.json'</span>
|
|
2104
|
+
<span class="cstat-no" title="statement not covered" > : format === 'yaml'</span>
|
|
2105
|
+
<span class="cstat-no" title="statement not covered" > ? '.md2do.yaml'</span>
|
|
2106
|
+
<span class="cstat-no" title="statement not covered" > : '.md2do.js';</span>
|
|
2107
|
+
<span class="cstat-no" title="statement not covered" > return join(base, fileName);</span>
|
|
2108
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2109
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2110
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2111
|
+
<span class="cstat-no" title="statement not covered" > * Helper: Find existing config file path</span>
|
|
2112
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2113
|
+
<span class="cstat-no" title="statement not covered" >function findExistingConfigPath(isGlobal: boolean): string | null {</span>
|
|
2114
|
+
<span class="cstat-no" title="statement not covered" > const base = isGlobal ? homedir() : process.cwd();</span>
|
|
2115
|
+
<span class="cstat-no" title="statement not covered" > const possibleFiles = [</span>
|
|
2116
|
+
<span class="cstat-no" title="statement not covered" > '.md2do.json',</span>
|
|
2117
|
+
<span class="cstat-no" title="statement not covered" > '.md2do.yaml',</span>
|
|
2118
|
+
<span class="cstat-no" title="statement not covered" > '.md2do.yml',</span>
|
|
2119
|
+
<span class="cstat-no" title="statement not covered" > '.md2do.js',</span>
|
|
2120
|
+
<span class="cstat-no" title="statement not covered" > '.md2do.cjs',</span>
|
|
2121
|
+
<span class="cstat-no" title="statement not covered" > 'md2do.config.js',</span>
|
|
2122
|
+
<span class="cstat-no" title="statement not covered" > 'md2do.config.cjs',</span>
|
|
2123
|
+
<span class="cstat-no" title="statement not covered" > ];</span>
|
|
2124
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2125
|
+
<span class="cstat-no" title="statement not covered" > for (const file of possibleFiles) {</span>
|
|
2126
|
+
<span class="cstat-no" title="statement not covered" > const path = join(base, file);</span>
|
|
2127
|
+
<span class="cstat-no" title="statement not covered" > if (existsSync(path)) {</span>
|
|
2128
|
+
<span class="cstat-no" title="statement not covered" > return path;</span>
|
|
2129
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2130
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2131
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2132
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
2133
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2134
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2135
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2136
|
+
<span class="cstat-no" title="statement not covered" > * Helper: Get format from config path</span>
|
|
2137
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2138
|
+
<span class="cstat-no" title="statement not covered" >function getConfigFormat(path: string): 'json' | 'yaml' | 'js' {</span>
|
|
2139
|
+
<span class="cstat-no" title="statement not covered" > if (path.endsWith('.json')) return 'json';</span>
|
|
2140
|
+
<span class="cstat-no" title="statement not covered" > if (path.endsWith('.yaml') || path.endsWith('.yml')) return 'yaml';</span>
|
|
2141
|
+
<span class="cstat-no" title="statement not covered" > return 'js';</span>
|
|
2142
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2143
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2144
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2145
|
+
<span class="cstat-no" title="statement not covered" > * Helper: Parse config file content</span>
|
|
2146
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2147
|
+
<span class="cstat-no" title="statement not covered" >function parseConfigFile(</span>
|
|
2148
|
+
<span class="cstat-no" title="statement not covered" > content: string,</span>
|
|
2149
|
+
<span class="cstat-no" title="statement not covered" > format: 'json' | 'yaml' | 'js',</span>
|
|
2150
|
+
<span class="cstat-no" title="statement not covered" >): Partial<Config> {</span>
|
|
2151
|
+
<span class="cstat-no" title="statement not covered" > if (format === 'json') {</span>
|
|
2152
|
+
<span class="cstat-no" title="statement not covered" > return JSON.parse(content) as Partial<Config>;</span>
|
|
2153
|
+
<span class="cstat-no" title="statement not covered" > } else if (format === 'yaml') {</span>
|
|
2154
|
+
<span class="cstat-no" title="statement not covered" > const loaded = yaml.load(content);</span>
|
|
2155
|
+
<span class="cstat-no" title="statement not covered" > return (loaded || {}) as Partial<Config>;</span>
|
|
2156
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
2157
|
+
<span class="cstat-no" title="statement not covered" > // For JS files, we'd need to eval or require, which is complex</span>
|
|
2158
|
+
<span class="cstat-no" title="statement not covered" > // For now, just parse as JSON</span>
|
|
2159
|
+
<span class="cstat-no" title="statement not covered" > return JSON.parse(content) as Partial<Config>;</span>
|
|
2160
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2161
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2162
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2163
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2164
|
+
<span class="cstat-no" title="statement not covered" > * Helper: Write config file</span>
|
|
2165
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2166
|
+
<span class="cstat-no" title="statement not covered" >function writeConfigFile(</span>
|
|
2167
|
+
<span class="cstat-no" title="statement not covered" > path: string,</span>
|
|
2168
|
+
<span class="cstat-no" title="statement not covered" > config: Partial<Config>,</span>
|
|
2169
|
+
<span class="cstat-no" title="statement not covered" > format: 'json' | 'yaml' | 'js',</span>
|
|
2170
|
+
<span class="cstat-no" title="statement not covered" >): void {</span>
|
|
2171
|
+
<span class="cstat-no" title="statement not covered" > let content: string;</span>
|
|
2172
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2173
|
+
<span class="cstat-no" title="statement not covered" > if (format === 'json') {</span>
|
|
2174
|
+
<span class="cstat-no" title="statement not covered" > content = JSON.stringify(config, null, 2) + '\n';</span>
|
|
2175
|
+
<span class="cstat-no" title="statement not covered" > } else if (format === 'yaml') {</span>
|
|
2176
|
+
<span class="cstat-no" title="statement not covered" > content = yaml.dump(config);</span>
|
|
2177
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
2178
|
+
<span class="cstat-no" title="statement not covered" > content = `module.exports = ${JSON.stringify(config, null, 2)};\n`;</span>
|
|
2179
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2180
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2181
|
+
<span class="cstat-no" title="statement not covered" > writeFileSync(path, content, 'utf-8');</span>
|
|
2182
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2183
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2184
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2185
|
+
<span class="cstat-no" title="statement not covered" > * Helper: Parse value from string</span>
|
|
2186
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2187
|
+
<span class="cstat-no" title="statement not covered" >function parseValue(value: string): unknown {</span>
|
|
2188
|
+
<span class="cstat-no" title="statement not covered" > // Try boolean</span>
|
|
2189
|
+
<span class="cstat-no" title="statement not covered" > if (value === 'true') return true;</span>
|
|
2190
|
+
<span class="cstat-no" title="statement not covered" > if (value === 'false') return false;</span>
|
|
2191
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2192
|
+
<span class="cstat-no" title="statement not covered" > // Try number</span>
|
|
2193
|
+
<span class="cstat-no" title="statement not covered" > const num = Number(value);</span>
|
|
2194
|
+
<span class="cstat-no" title="statement not covered" > if (!isNaN(num)) return num;</span>
|
|
2195
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2196
|
+
<span class="cstat-no" title="statement not covered" > // Try JSON</span>
|
|
2197
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2198
|
+
<span class="cstat-no" title="statement not covered" > return JSON.parse(value);</span>
|
|
2199
|
+
<span class="cstat-no" title="statement not covered" > } catch {</span>
|
|
2200
|
+
<span class="cstat-no" title="statement not covered" > // Return as string</span>
|
|
2201
|
+
<span class="cstat-no" title="statement not covered" > return value;</span>
|
|
2202
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2203
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2204
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2205
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2206
|
+
<span class="cstat-no" title="statement not covered" > * Helper: Get nested value from object</span>
|
|
2207
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2208
|
+
<span class="cstat-no" title="statement not covered" >function getNestedValue(obj: unknown, path: string): unknown {</span>
|
|
2209
|
+
<span class="cstat-no" title="statement not covered" > const keys = path.split('.');</span>
|
|
2210
|
+
<span class="cstat-no" title="statement not covered" > let current: unknown = obj;</span>
|
|
2211
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2212
|
+
<span class="cstat-no" title="statement not covered" > for (const key of keys) {</span>
|
|
2213
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
2214
|
+
<span class="cstat-no" title="statement not covered" > current === null ||</span>
|
|
2215
|
+
<span class="cstat-no" title="statement not covered" > current === undefined ||</span>
|
|
2216
|
+
<span class="cstat-no" title="statement not covered" > typeof current !== 'object'</span>
|
|
2217
|
+
<span class="cstat-no" title="statement not covered" > ) {</span>
|
|
2218
|
+
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
2219
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2220
|
+
<span class="cstat-no" title="statement not covered" > current = (current as Record<string, unknown>)[key];</span>
|
|
2221
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2222
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2223
|
+
<span class="cstat-no" title="statement not covered" > return current;</span>
|
|
2224
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2225
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2226
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
2227
|
+
<span class="cstat-no" title="statement not covered" > * Helper: Set nested value in object</span>
|
|
2228
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
2229
|
+
<span class="cstat-no" title="statement not covered" >function setNestedValue(</span>
|
|
2230
|
+
<span class="cstat-no" title="statement not covered" > obj: Record<string, unknown>,</span>
|
|
2231
|
+
<span class="cstat-no" title="statement not covered" > path: string,</span>
|
|
2232
|
+
<span class="cstat-no" title="statement not covered" > value: unknown,</span>
|
|
2233
|
+
<span class="cstat-no" title="statement not covered" >): void {</span>
|
|
2234
|
+
<span class="cstat-no" title="statement not covered" > const keys = path.split('.');</span>
|
|
2235
|
+
<span class="cstat-no" title="statement not covered" > const lastKey = keys.pop();</span>
|
|
2236
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2237
|
+
<span class="cstat-no" title="statement not covered" > if (!lastKey) return;</span>
|
|
2238
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2239
|
+
<span class="cstat-no" title="statement not covered" > let current: Record<string, unknown> = obj;</span>
|
|
2240
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2241
|
+
<span class="cstat-no" title="statement not covered" > for (const key of keys) {</span>
|
|
2242
|
+
<span class="cstat-no" title="statement not covered" > if (!(key in current) || typeof current[key] !== 'object') {</span>
|
|
2243
|
+
<span class="cstat-no" title="statement not covered" > current[key] = {};</span>
|
|
2244
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2245
|
+
<span class="cstat-no" title="statement not covered" > current = current[key] as Record<string, unknown>;</span>
|
|
2246
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2247
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2248
|
+
<span class="cstat-no" title="statement not covered" > current[lastKey] = value;</span>
|
|
2249
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
2250
|
+
</pre></td></tr></table></pre>
|
|
2251
|
+
|
|
2252
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
2253
|
+
</div><!-- /wrapper -->
|
|
2254
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
2255
|
+
Code coverage generated by
|
|
2256
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2257
|
+
at 2026-02-06T04:15:03.435Z
|
|
2258
|
+
</div>
|
|
2259
|
+
<script src="../../prettify.js"></script>
|
|
2260
|
+
<script>
|
|
2261
|
+
window.onload = function () {
|
|
2262
|
+
prettyPrint();
|
|
2263
|
+
};
|
|
2264
|
+
</script>
|
|
2265
|
+
<script src="../../sorter.js"></script>
|
|
2266
|
+
<script src="../../block-navigation.js"></script>
|
|
2267
|
+
</body>
|
|
2268
|
+
</html>
|
|
2269
|
+
|