@rnx-kit/cli 0.16.22 → 0.16.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/package.json +18 -8
  2. package/CHANGELOG.md +0 -1669
  3. package/coverage/clover.xml +0 -323
  4. package/coverage/coverage-final.json +0 -8
  5. package/coverage/lcov-report/base.css +0 -224
  6. package/coverage/lcov-report/block-navigation.js +0 -87
  7. package/coverage/lcov-report/favicon.png +0 -0
  8. package/coverage/lcov-report/index.html +0 -131
  9. package/coverage/lcov-report/prettify.css +0 -1
  10. package/coverage/lcov-report/prettify.js +0 -2
  11. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  12. package/coverage/lcov-report/sorter.js +0 -196
  13. package/coverage/lcov-report/src/bundle/defaultPlugins.ts.html +0 -133
  14. package/coverage/lcov-report/src/bundle/index.html +0 -161
  15. package/coverage/lcov-report/src/bundle/kit-config.ts.html +0 -328
  16. package/coverage/lcov-report/src/bundle/metro.ts.html +0 -283
  17. package/coverage/lcov-report/src/bundle/overrides.ts.html +0 -238
  18. package/coverage/lcov-report/src/copy-assets.ts.html +0 -1720
  19. package/coverage/lcov-report/src/index.html +0 -146
  20. package/coverage/lcov-report/src/metro-config.ts.html +0 -709
  21. package/coverage/lcov-report/src/test.ts.html +0 -496
  22. package/coverage/lcov.info +0 -605
  23. package/eslint.config.js +0 -1
  24. package/lib/align-deps.d.ts.map +0 -1
  25. package/lib/align-deps.js.map +0 -1
  26. package/lib/bundle/cliOptions.d.ts.map +0 -1
  27. package/lib/bundle/cliOptions.js.map +0 -1
  28. package/lib/bundle/defaultPlugins.d.ts.map +0 -1
  29. package/lib/bundle/defaultPlugins.js.map +0 -1
  30. package/lib/bundle/hermes.d.ts.map +0 -1
  31. package/lib/bundle/hermes.js.map +0 -1
  32. package/lib/bundle/kit-config.d.ts.map +0 -1
  33. package/lib/bundle/kit-config.js.map +0 -1
  34. package/lib/bundle/metro.d.ts.map +0 -1
  35. package/lib/bundle/metro.js.map +0 -1
  36. package/lib/bundle/overrides.d.ts.map +0 -1
  37. package/lib/bundle/overrides.js.map +0 -1
  38. package/lib/bundle/types.d.ts.map +0 -1
  39. package/lib/bundle/types.js.map +0 -1
  40. package/lib/bundle.d.ts.map +0 -1
  41. package/lib/bundle.js.map +0 -1
  42. package/lib/clean.d.ts.map +0 -1
  43. package/lib/clean.js.map +0 -1
  44. package/lib/copy-assets.d.ts.map +0 -1
  45. package/lib/copy-assets.js.map +0 -1
  46. package/lib/index.d.ts.map +0 -1
  47. package/lib/index.js.map +0 -1
  48. package/lib/metro-config.d.ts.map +0 -1
  49. package/lib/metro-config.js.map +0 -1
  50. package/lib/parsers.d.ts.map +0 -1
  51. package/lib/parsers.js.map +0 -1
  52. package/lib/ram-bundle.d.ts.map +0 -1
  53. package/lib/ram-bundle.js.map +0 -1
  54. package/lib/serve/external.d.ts.map +0 -1
  55. package/lib/serve/external.js.map +0 -1
  56. package/lib/serve/help.d.ts.map +0 -1
  57. package/lib/serve/help.js.map +0 -1
  58. package/lib/serve/keyboard.d.ts.map +0 -1
  59. package/lib/serve/keyboard.js.map +0 -1
  60. package/lib/serve/kit-config.d.ts.map +0 -1
  61. package/lib/serve/kit-config.js.map +0 -1
  62. package/lib/serve/types.d.ts.map +0 -1
  63. package/lib/serve/types.js.map +0 -1
  64. package/lib/start.d.ts.map +0 -1
  65. package/lib/start.js.map +0 -1
  66. package/lib/test.d.ts.map +0 -1
  67. package/lib/test.js.map +0 -1
  68. package/lib/write-third-party-notices.d.ts.map +0 -1
  69. package/lib/write-third-party-notices.js.map +0 -1
  70. package/test/__mocks__/child_process.js +0 -5
  71. package/test/__mocks__/fs-extra.js +0 -20
  72. package/test/__mocks__/fs.js +0 -1
  73. package/test/bundle/__mocks__/@rnx-kit/config.js +0 -14
  74. package/test/bundle/__mocks__/@rnx-kit/console.js +0 -1
  75. package/test/bundle/__mocks__/@rnx-kit/metro-service.js +0 -1
  76. package/test/bundle/kit-config.test.ts +0 -160
  77. package/test/bundle/metro.test.ts +0 -78
  78. package/test/bundle/overrides.test.ts +0 -85
  79. package/test/copy-assets/assembleAarBundle.test.ts +0 -313
  80. package/test/copy-assets/copyAssets.test.ts +0 -122
  81. package/test/metro-config.test.ts +0 -206
  82. package/test/test.test.ts +0 -11
  83. package/tsconfig.json +0 -4
@@ -1,1720 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/copy-assets.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</a> copy-assets.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">52.77% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>76/144</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">47.47% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>47/99</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">73.33% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>11/15</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">52.44% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>75/143</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 oninput="onInput()" type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line medium'></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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
- <span class="cline-any cline-neutral">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-neutral">&nbsp;</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
- <span class="cline-any cline-neutral">&nbsp;</span>
623
- <span class="cline-any cline-neutral">&nbsp;</span>
624
- <span class="cline-any cline-neutral">&nbsp;</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-neutral">&nbsp;</span>
628
- <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-neutral">&nbsp;</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-neutral">&nbsp;</span>
632
- <span class="cline-any cline-neutral">&nbsp;</span>
633
- <span class="cline-any cline-neutral">&nbsp;</span>
634
- <span class="cline-any cline-neutral">&nbsp;</span>
635
- <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-neutral">&nbsp;</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-neutral">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-neutral">&nbsp;</span>
651
- <span class="cline-any cline-neutral">&nbsp;</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-neutral">&nbsp;</span>
661
- <span class="cline-any cline-neutral">&nbsp;</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-neutral">&nbsp;</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-yes">2x</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-neutral">&nbsp;</span>
683
- <span class="cline-any cline-no">&nbsp;</span>
684
- <span class="cline-any cline-no">&nbsp;</span>
685
- <span class="cline-any cline-no">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-yes">4x</span>
691
- <span class="cline-any cline-yes">3x</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-yes">1x</span>
694
- <span class="cline-any cline-no">&nbsp;</span>
695
- <span class="cline-any cline-neutral">&nbsp;</span>
696
- <span class="cline-any cline-yes">1x</span>
697
- <span class="cline-any cline-neutral">&nbsp;</span>
698
- <span class="cline-any cline-neutral">&nbsp;</span>
699
- <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-yes">4x</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-neutral">&nbsp;</span>
704
- <span class="cline-any cline-neutral">&nbsp;</span>
705
- <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-no">&nbsp;</span>
707
- <span class="cline-any cline-neutral">&nbsp;</span>
708
- <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-yes">9x</span>
711
- <span class="cline-any cline-yes">9x</span>
712
- <span class="cline-any cline-yes">1x</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-neutral">&nbsp;</span>
715
- <span class="cline-any cline-yes">8x</span>
716
- <span class="cline-any cline-yes">8x</span>
717
- <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-yes">5x</span>
725
- <span class="cline-any cline-yes">5x</span>
726
- <span class="cline-any cline-yes">1x</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-yes">4x</span>
730
- <span class="cline-any cline-yes">4x</span>
731
- <span class="cline-any cline-neutral">&nbsp;</span>
732
- <span class="cline-any cline-yes">4x</span>
733
- <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-no">&nbsp;</span>
735
- <span class="cline-any cline-neutral">&nbsp;</span>
736
- <span class="cline-any cline-neutral">&nbsp;</span>
737
- <span class="cline-any cline-neutral">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-neutral">&nbsp;</span>
740
- <span class="cline-any cline-neutral">&nbsp;</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-neutral">&nbsp;</span>
744
- <span class="cline-any cline-neutral">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-neutral">&nbsp;</span>
747
- <span class="cline-any cline-no">&nbsp;</span>
748
- <span class="cline-any cline-neutral">&nbsp;</span>
749
- <span class="cline-any cline-neutral">&nbsp;</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-neutral">&nbsp;</span>
752
- <span class="cline-any cline-neutral">&nbsp;</span>
753
- <span class="cline-any cline-neutral">&nbsp;</span>
754
- <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-neutral">&nbsp;</span>
757
- <span class="cline-any cline-neutral">&nbsp;</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-yes">4x</span>
761
- <span class="cline-any cline-yes">4x</span>
762
- <span class="cline-any cline-neutral">&nbsp;</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-neutral">&nbsp;</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-neutral">&nbsp;</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-yes">3x</span>
788
- <span class="cline-any cline-yes">3x</span>
789
- <span class="cline-any cline-no">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-neutral">&nbsp;</span>
794
- <span class="cline-any cline-neutral">&nbsp;</span>
795
- <span class="cline-any cline-neutral">&nbsp;</span>
796
- <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-neutral">&nbsp;</span>
798
- <span class="cline-any cline-yes">7x</span>
799
- <span class="cline-any cline-yes">1x</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-yes">6x</span>
803
- <span class="cline-any cline-yes">6x</span>
804
- <span class="cline-any cline-yes">6x</span>
805
- <span class="cline-any cline-yes">1x</span>
806
- <span class="cline-any cline-yes">1x</span>
807
- <span class="cline-any cline-neutral">&nbsp;</span>
808
- <span class="cline-any cline-neutral">&nbsp;</span>
809
- <span class="cline-any cline-yes">5x</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-neutral">&nbsp;</span>
812
- <span class="cline-any cline-neutral">&nbsp;</span>
813
- <span class="cline-any cline-neutral">&nbsp;</span>
814
- <span class="cline-any cline-yes">4x</span>
815
- <span class="cline-any cline-yes">1x</span>
816
- <span class="cline-any cline-yes">1x</span>
817
- <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span>
819
- <span class="cline-any cline-yes">3x</span>
820
- <span class="cline-any cline-yes">3x</span>
821
- <span class="cline-any cline-neutral">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-neutral">&nbsp;</span>
825
- <span class="cline-any cline-neutral">&nbsp;</span>
826
- <span class="cline-any cline-neutral">&nbsp;</span>
827
- <span class="cline-any cline-yes">3x</span>
828
- <span class="cline-any cline-yes">3x</span>
829
- <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-yes">3x</span>
831
- <span class="cline-any cline-neutral">&nbsp;</span>
832
- <span class="cline-any cline-yes">3x</span>
833
- <span class="cline-any cline-yes">3x</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-yes">3x</span>
836
- <span class="cline-any cline-yes">3x</span>
837
- <span class="cline-any cline-yes">1x</span>
838
- <span class="cline-any cline-no">&nbsp;</span>
839
- <span class="cline-any cline-no">&nbsp;</span>
840
- <span class="cline-any cline-neutral">&nbsp;</span>
841
- <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-neutral">&nbsp;</span>
844
- <span class="cline-any cline-no">&nbsp;</span>
845
- <span class="cline-any cline-no">&nbsp;</span>
846
- <span class="cline-any cline-no">&nbsp;</span>
847
- <span class="cline-any cline-no">&nbsp;</span>
848
- <span class="cline-any cline-no">&nbsp;</span>
849
- <span class="cline-any cline-no">&nbsp;</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-neutral">&nbsp;</span>
852
- <span class="cline-any cline-neutral">&nbsp;</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-neutral">&nbsp;</span>
856
- <span class="cline-any cline-yes">1x</span>
857
- <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-yes">2x</span>
859
- <span class="cline-any cline-yes">2x</span>
860
- <span class="cline-any cline-no">&nbsp;</span>
861
- <span class="cline-any cline-neutral">&nbsp;</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-yes">2x</span>
864
- <span class="cline-any cline-neutral">&nbsp;</span>
865
- <span class="cline-any cline-neutral">&nbsp;</span>
866
- <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-neutral">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-neutral">&nbsp;</span>
871
- <span class="cline-any cline-yes">2x</span>
872
- <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-yes">2x</span>
874
- <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-neutral">&nbsp;</span>
876
- <span class="cline-any cline-yes">2x</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-yes">2x</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-neutral">&nbsp;</span>
882
- <span class="cline-any cline-yes">2x</span>
883
- <span class="cline-any cline-yes">2x</span>
884
- <span class="cline-any cline-neutral">&nbsp;</span>
885
- <span class="cline-any cline-neutral">&nbsp;</span>
886
- <span class="cline-any cline-neutral">&nbsp;</span>
887
- <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-yes">2x</span>
889
- <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-neutral">&nbsp;</span>
900
- <span class="cline-any cline-neutral">&nbsp;</span>
901
- <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-neutral">&nbsp;</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-neutral">&nbsp;</span>
906
- <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-neutral">&nbsp;</span>
908
- <span class="cline-any cline-neutral">&nbsp;</span>
909
- <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-neutral">&nbsp;</span>
911
- <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-neutral">&nbsp;</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-neutral">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-yes">2x</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-yes">2x</span>
925
- <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-neutral">&nbsp;</span>
931
- <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-yes">2x</span>
933
- <span class="cline-any cline-yes">2x</span>
934
- <span class="cline-any cline-yes">2x</span>
935
- <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-yes">2x</span>
939
- <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-yes">2x</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-yes">3x</span>
945
- <span class="cline-any cline-neutral">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-yes">14x</span>
949
- <span class="cline-any cline-yes">11x</span>
950
- <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-yes">3x</span>
953
- <span class="cline-any cline-yes">3x</span>
954
- <span class="cline-any cline-yes">3x</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-neutral">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-neutral">&nbsp;</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-neutral">&nbsp;</span>
961
- <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-yes">5x</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-yes">5x</span>
969
- <span class="cline-any cline-yes">4x</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-yes">5x</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-yes">1x</span>
980
- <span class="cline-any cline-yes">1x</span>
981
- <span class="cline-any cline-yes">1x</span>
982
- <span class="cline-any cline-yes">1x</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-neutral">&nbsp;</span>
985
- <span class="cline-any cline-no">&nbsp;</span>
986
- <span class="cline-any cline-no">&nbsp;</span>
987
- <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-no">&nbsp;</span>
989
- <span class="cline-any cline-no">&nbsp;</span>
990
- <span class="cline-any cline-no">&nbsp;</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-neutral">&nbsp;</span>
993
- <span class="cline-any cline-no">&nbsp;</span>
994
- <span class="cline-any cline-no">&nbsp;</span>
995
- <span class="cline-any cline-no">&nbsp;</span>
996
- <span class="cline-any cline-no">&nbsp;</span>
997
- <span class="cline-any cline-no">&nbsp;</span>
998
- <span class="cline-any cline-neutral">&nbsp;</span>
999
- <span class="cline-any cline-neutral">&nbsp;</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-no">&nbsp;</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-neutral">&nbsp;</span>
1006
- <span class="cline-any cline-no">&nbsp;</span>
1007
- <span class="cline-any cline-no">&nbsp;</span>
1008
- <span class="cline-any cline-no">&nbsp;</span>
1009
- <span class="cline-any cline-no">&nbsp;</span>
1010
- <span class="cline-any cline-no">&nbsp;</span>
1011
- <span class="cline-any cline-no">&nbsp;</span>
1012
- <span class="cline-any cline-no">&nbsp;</span>
1013
- <span class="cline-any cline-neutral">&nbsp;</span>
1014
- <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-neutral">&nbsp;</span>
1016
- <span class="cline-any cline-neutral">&nbsp;</span>
1017
- <span class="cline-any cline-no">&nbsp;</span>
1018
- <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-neutral">&nbsp;</span>
1021
- <span class="cline-any cline-neutral">&nbsp;</span>
1022
- <span class="cline-any cline-neutral">&nbsp;</span>
1023
- <span class="cline-any cline-neutral">&nbsp;</span>
1024
- <span class="cline-any cline-neutral">&nbsp;</span>
1025
- <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-neutral">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-neutral">&nbsp;</span>
1030
- <span class="cline-any cline-neutral">&nbsp;</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-neutral">&nbsp;</span>
1036
- <span class="cline-any cline-neutral">&nbsp;</span>
1037
- <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-neutral">&nbsp;</span>
1039
- <span class="cline-any cline-neutral">&nbsp;</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-neutral">&nbsp;</span>
1042
- <span class="cline-any cline-neutral">&nbsp;</span>
1043
- <span class="cline-any cline-neutral">&nbsp;</span>
1044
- <span class="cline-any cline-neutral">&nbsp;</span>
1045
- <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-neutral">&nbsp;</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</span>
1048
- <span class="cline-any cline-neutral">&nbsp;</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-neutral">&nbsp;</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-neutral">&nbsp;</span>
1053
- <span class="cline-any cline-neutral">&nbsp;</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-neutral">&nbsp;</span>
1059
- <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-neutral">&nbsp;</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-neutral">&nbsp;</span>
1065
- <span class="cline-any cline-neutral">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-neutral">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-neutral">&nbsp;</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-no">&nbsp;</span>
1075
- <span class="cline-any cline-no">&nbsp;</span>
1076
- <span class="cline-any cline-no">&nbsp;</span>
1077
- <span class="cline-any cline-no">&nbsp;</span>
1078
- <span class="cline-any cline-no">&nbsp;</span>
1079
- <span class="cline-any cline-no">&nbsp;</span>
1080
- <span class="cline-any cline-neutral">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-no">&nbsp;</span>
1083
- <span class="cline-any cline-no">&nbsp;</span>
1084
- <span class="cline-any cline-no">&nbsp;</span>
1085
- <span class="cline-any cline-no">&nbsp;</span>
1086
- <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-no">&nbsp;</span>
1089
- <span class="cline-any cline-no">&nbsp;</span>
1090
- <span class="cline-any cline-no">&nbsp;</span>
1091
- <span class="cline-any cline-no">&nbsp;</span>
1092
- <span class="cline-any cline-neutral">&nbsp;</span>
1093
- <span class="cline-any cline-neutral">&nbsp;</span>
1094
- <span class="cline-any cline-no">&nbsp;</span>
1095
- <span class="cline-any cline-no">&nbsp;</span>
1096
- <span class="cline-any cline-no">&nbsp;</span>
1097
- <span class="cline-any cline-no">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-no">&nbsp;</span>
1100
- <span class="cline-any cline-no">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-no">&nbsp;</span>
1105
- <span class="cline-any cline-no">&nbsp;</span>
1106
- <span class="cline-any cline-no">&nbsp;</span>
1107
- <span class="cline-any cline-no">&nbsp;</span>
1108
- <span class="cline-any cline-no">&nbsp;</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-no">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-neutral">&nbsp;</span>
1116
- <span class="cline-any cline-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-no">&nbsp;</span>
1118
- <span class="cline-any cline-no">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-no">&nbsp;</span>
1122
- <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-neutral">&nbsp;</span>
1125
- <span class="cline-any cline-yes">2x</span>
1126
- <span class="cline-any cline-neutral">&nbsp;</span>
1127
- <span class="cline-any cline-neutral">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-no">&nbsp;</span>
1131
- <span class="cline-any cline-no">&nbsp;</span>
1132
- <span class="cline-any cline-no">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-neutral">&nbsp;</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-neutral">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-neutral">&nbsp;</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-neutral">&nbsp;</span>
1151
- <span class="cline-any cline-neutral">&nbsp;</span>
1152
- <span class="cline-any cline-neutral">&nbsp;</span>
1153
- <span class="cline-any cline-neutral">&nbsp;</span>
1154
- <span class="cline-any cline-neutral">&nbsp;</span>
1155
- <span class="cline-any cline-neutral">&nbsp;</span>
1156
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Config as CLIConfig } from "@react-native-community/cli-types";
1157
- import { error, info, warn } from "@rnx-kit/console";
1158
- import { keysOf } from "@rnx-kit/tools-language/properties";
1159
- import type { PackageManifest } from "@rnx-kit/tools-node/package";
1160
- import {
1161
- findPackageDependencyDir,
1162
- findPackageDir,
1163
- readPackage,
1164
- } from "@rnx-kit/tools-node/package";
1165
- import { findUp } from "@rnx-kit/tools-node/path";
1166
- import type { AllPlatforms } from "@rnx-kit/tools-react-native";
1167
- import { parsePlatform } from "@rnx-kit/tools-react-native";
1168
- import type { SpawnSyncOptions } from "child_process";
1169
- import { spawnSync } from "child_process";
1170
- import * as fs from "fs-extra";
1171
- import * as os from "os";
1172
- import * as path from "path";
1173
- &nbsp;
1174
- export type AndroidArchive = {
1175
- targetName?: string;
1176
- version?: string;
1177
- output?: string;
1178
- android?: {
1179
- androidPluginVersion?: string;
1180
- compileSdkVersion?: number;
1181
- defaultConfig?: {
1182
- minSdkVersion?: number;
1183
- targetSdkVersion?: number;
1184
- };
1185
- kotlinVersion?: string;
1186
- };
1187
- };
1188
- &nbsp;
1189
- export type NativeAssets = {
1190
- assets?: string[];
1191
- strings?: string[];
1192
- aar?: AndroidArchive &amp; {
1193
- env?: Record&lt;string, string | number&gt;;
1194
- dependencies?: Record&lt;string, AndroidArchive&gt;;
1195
- };
1196
- xcassets?: string[];
1197
- };
1198
- &nbsp;
1199
- export type Options = {
1200
- platform: AllPlatforms;
1201
- assetsDest: string;
1202
- bundleAar: boolean;
1203
- xcassetsDest?: string;
1204
- [key: string]: unknown;
1205
- };
1206
- &nbsp;
1207
- export type Context = {
1208
- projectRoot: string;
1209
- manifest: PackageManifest;
1210
- options: Options;
1211
- };
1212
- &nbsp;
1213
- export type AssetsConfig = {
1214
- getAssets?: (context: Context) =&gt; Promise&lt;NativeAssets&gt;;
1215
- };
1216
- &nbsp;
1217
- const defaultAndroidConfig: Required&lt;Required&lt;AndroidArchive&gt;["android"]&gt; = {
1218
- androidPluginVersion: "7.2.2",
1219
- compileSdkVersion: 33,
1220
- defaultConfig: {
1221
- minSdkVersion: 23,
1222
- targetSdkVersion: 29,
1223
- },
1224
- kotlinVersion: "1.7.22",
1225
- };
1226
- &nbsp;
1227
- function <span class="fstat-no" title="function not covered" >ensureOption(</span>options: Options, opt: string, flag = <span class="branch-0 cbranch-no" title="branch not covered" >opt)</span> {
1228
- <span class="cstat-no" title="statement not covered" > if (options[opt] == null) {</span>
1229
- <span class="cstat-no" title="statement not covered" > error(`Missing required option: --${flag}`);</span>
1230
- <span class="cstat-no" title="statement not covered" > process.exit(1);</span>
1231
- }
1232
- }
1233
- &nbsp;
1234
- function findGradleProject(projectRoot: string): string | undefined {
1235
- if (fs.existsSync(path.join(projectRoot, "android", "build.gradle"))) {
1236
- return path.join(projectRoot, "android");
1237
- }
1238
- <span class="missing-if-branch" title="if path not taken" >I</span>if (fs.existsSync(path.join(projectRoot, "build.gradle"))) {
1239
- <span class="cstat-no" title="statement not covered" > return projectRoot;</span>
1240
- }
1241
- return undefined;
1242
- }
1243
- &nbsp;
1244
- function gradleTargetName(packageName: string): string {
1245
- return (
1246
- packageName.startsWith("@") ? packageName.slice(1) : <span class="branch-1 cbranch-no" title="branch not covered" >packageName</span>
1247
- ).replace(/[^\w\-.]+/g, "_");
1248
- }
1249
- &nbsp;
1250
- function <span class="fstat-no" title="function not covered" >isAssetsConfig(</span>config: unknown): config is AssetsConfig {
1251
- <span class="cstat-no" title="statement not covered" > return typeof config === "object" &amp;&amp; config !== null &amp;&amp; "getAssets" in config;</span>
1252
- }
1253
- &nbsp;
1254
- export function versionOf(pkgName: string): string {
1255
- const packageDir = findPackageDependencyDir(pkgName);
1256
- if (!packageDir) {
1257
- throw new Error(`Could not find module '${pkgName}'`);
1258
- }
1259
- &nbsp;
1260
- const { version } = readPackage(packageDir);
1261
- return version;
1262
- }
1263
- &nbsp;
1264
- function getAndroidPaths(
1265
- context: Context,
1266
- packageName: string,
1267
- { targetName, version, output }: AndroidArchive
1268
- ) {
1269
- const projectRoot = findPackageDependencyDir(packageName);
1270
- if (!projectRoot) {
1271
- throw new Error(`Could not find module '${packageName}'`);
1272
- }
1273
- &nbsp;
1274
- const gradleFriendlyName = targetName || gradleTargetName(packageName);
1275
- const aarVersion = version || versionOf(packageName);
1276
- &nbsp;
1277
- switch (packageName) {
1278
- <span class="branch-0 cbranch-no" title="branch not covered" > case "hermes-engine":</span>
1279
- <span class="cstat-no" title="statement not covered" > return {</span>
1280
- targetName: gradleFriendlyName,
1281
- version: aarVersion,
1282
- projectRoot,
1283
- output: path.join(projectRoot, "android", "hermes-release.aar"),
1284
- destination: path.join(
1285
- context.options.assetsDest,
1286
- "aar",
1287
- `hermes-release-${versionOf(packageName)}.aar`
1288
- ),
1289
- };
1290
- &nbsp;
1291
- <span class="branch-1 cbranch-no" title="branch not covered" > case "react-native":</span>
1292
- <span class="cstat-no" title="statement not covered" > return {</span>
1293
- targetName: gradleFriendlyName,
1294
- version: aarVersion,
1295
- projectRoot,
1296
- output: path.join(projectRoot, "android"),
1297
- destination: path.join(
1298
- context.options.assetsDest,
1299
- "aar",
1300
- "react-native"
1301
- ),
1302
- };
1303
- &nbsp;
1304
- default: {
1305
- const androidProject = findGradleProject(projectRoot);
1306
- return {
1307
- targetName: gradleFriendlyName,
1308
- version: aarVersion,
1309
- projectRoot,
1310
- androidProject,
1311
- output:
1312
- output ||
1313
- (androidProject &amp;&amp;
1314
- path.join(
1315
- androidProject,
1316
- "build",
1317
- "outputs",
1318
- "aar",
1319
- `${gradleFriendlyName}-release.aar`
1320
- )),
1321
- destination: path.join(
1322
- context.options.assetsDest,
1323
- "aar",
1324
- `${gradleFriendlyName}-${aarVersion}.aar`
1325
- ),
1326
- };
1327
- }
1328
- }
1329
- }
1330
- &nbsp;
1331
- function run(command: string, args: string[], options: SpawnSyncOptions) {
1332
- const { status } = spawnSync(command, args, options);
1333
- <span class="missing-if-branch" title="if path not taken" >I</span>if (status !== 0) {
1334
- <span class="cstat-no" title="statement not covered" > process.exit(status || 1);</span>
1335
- }
1336
- }
1337
- &nbsp;
1338
- export async function assembleAarBundle(
1339
- context: Context,
1340
- packageName: string,
1341
- { aar }: NativeAssets
1342
- ): Promise&lt;void&gt; {
1343
- if (!aar) {
1344
- return;
1345
- }
1346
- &nbsp;
1347
- const wrapper = os.platform() === "win32" ? <span class="branch-0 cbranch-no" title="branch not covered" >"gradlew.bat" </span>: "gradlew";
1348
- const gradlew = findUp(wrapper);
1349
- if (!gradlew) {
1350
- warn(`Skipped \`${packageName}\`: cannot find \`${wrapper}\``);
1351
- return;
1352
- }
1353
- &nbsp;
1354
- const { targetName, version, androidProject, output } = getAndroidPaths(
1355
- context,
1356
- packageName,
1357
- aar
1358
- );
1359
- if (!androidProject || !output) {
1360
- warn(`Skipped \`${packageName}\`: cannot find \`build.gradle\``);
1361
- return;
1362
- }
1363
- &nbsp;
1364
- const { env: customEnv, dependencies, android } = aar;
1365
- const env = {
1366
- NODE_MODULES_PATH: path.join(process.cwd(), "node_modules"),
1367
- REACT_NATIVE_VERSION: versionOf("react-native"),
1368
- ...process.env,
1369
- ...customEnv,
1370
- };
1371
- &nbsp;
1372
- const outputDir = path.join(context.options.assetsDest, "aar");
1373
- fs.ensureDirSync(outputDir);
1374
- &nbsp;
1375
- const dest = path.join(outputDir, `${targetName}-${version}.aar`);
1376
- &nbsp;
1377
- const targets = [`:${targetName}:assembleRelease`];
1378
- const targetsToCopy: [string, string][] = [[output, dest]];
1379
- &nbsp;
1380
- const settings = path.join(androidProject, "settings.gradle");
1381
- if (fs.existsSync(settings)) {
1382
- <span class="missing-if-branch" title="if path not taken" >I</span>if (dependencies) {
1383
- <span class="cstat-no" title="statement not covered" > for (const [dependencyName, aar] of Object.entries(dependencies)) {</span>
1384
- const { targetName, output, destination } = <span class="cstat-no" title="statement not covered" >getAndroidPaths(</span>
1385
- context,
1386
- dependencyName,
1387
- aar
1388
- );
1389
- <span class="cstat-no" title="statement not covered" > if (output) {</span>
1390
- <span class="cstat-no" title="statement not covered" > if (!fs.existsSync(output)) {</span>
1391
- <span class="cstat-no" title="statement not covered" > targets.push(`:${targetName}:assembleRelease`);</span>
1392
- <span class="cstat-no" title="statement not covered" > targetsToCopy.push([output, destination]);</span>
1393
- } else <span class="cstat-no" title="statement not covered" >if (!fs.existsSync(destination)) {</span>
1394
- <span class="cstat-no" title="statement not covered" > targetsToCopy.push([output, destination]);</span>
1395
- }
1396
- }
1397
- }
1398
- }
1399
- &nbsp;
1400
- // Run only one Gradle task at a time
1401
- run(gradlew, targets, { cwd: androidProject, stdio: "inherit", env });
1402
- } else {
1403
- const reactNativePath = findPackageDependencyDir("react-native");
1404
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!reactNativePath) {
1405
- <span class="cstat-no" title="statement not covered" > throw new Error("Could not find 'react-native'");</span>
1406
- }
1407
- &nbsp;
1408
- const buildDir = path.join(
1409
- process.cwd(),
1410
- "node_modules",
1411
- ".rnx-gradle-build",
1412
- targetName
1413
- );
1414
- &nbsp;
1415
- const compileSdkVersion =
1416
- android?.compileSdkVersion ?? defaultAndroidConfig.compileSdkVersion;
1417
- const minSdkVersion =
1418
- android?.defaultConfig?.minSdkVersion ??
1419
- defaultAndroidConfig.defaultConfig.minSdkVersion;
1420
- const targetSdkVersion =
1421
- android?.defaultConfig?.targetSdkVersion ??
1422
- defaultAndroidConfig.defaultConfig.targetSdkVersion;
1423
- const androidPluginVersion =
1424
- android?.androidPluginVersion ??
1425
- defaultAndroidConfig.androidPluginVersion;
1426
- const kotlinVersion =
1427
- android?.kotlinVersion ?? defaultAndroidConfig.kotlinVersion;
1428
- const buildRelativeReactNativePath = path.relative(
1429
- buildDir,
1430
- reactNativePath
1431
- );
1432
- &nbsp;
1433
- const buildGradle = [
1434
- "buildscript {",
1435
- " ext {",
1436
- ` compileSdkVersion = ${compileSdkVersion}`,
1437
- ` minSdkVersion = ${minSdkVersion}`,
1438
- ` targetSdkVersion = ${targetSdkVersion}`,
1439
- ` androidPluginVersion = "${androidPluginVersion}"`,
1440
- ` kotlinVersion = "${kotlinVersion}"`,
1441
- " }",
1442
- "",
1443
- " repositories {",
1444
- " mavenCentral()",
1445
- " google()",
1446
- " }",
1447
- "",
1448
- " dependencies {",
1449
- ' classpath("com.android.tools.build:gradle:${project.ext.androidPluginVersion}")',
1450
- ' classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${project.ext.kotlinVersion}")',
1451
- " }",
1452
- "}",
1453
- "",
1454
- "allprojects {",
1455
- " repositories {",
1456
- " maven {",
1457
- " // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm",
1458
- ` url("\${rootDir}/${buildRelativeReactNativePath}/android")`,
1459
- " }",
1460
- " mavenCentral()",
1461
- " google()",
1462
- " }",
1463
- "}",
1464
- "",
1465
- ].join("\n");
1466
- &nbsp;
1467
- const gradleProperties = "android.useAndroidX=true\n";
1468
- &nbsp;
1469
- const settingsGradle = [
1470
- `include(":${targetName}")`,
1471
- `project(":${targetName}").projectDir = file(${JSON.stringify(
1472
- androidProject
1473
- )})`,
1474
- "",
1475
- ].join("\n");
1476
- &nbsp;
1477
- fs.ensureDirSync(buildDir);
1478
- fs.writeFileSync(path.join(buildDir, "build.gradle"), buildGradle);
1479
- fs.writeFileSync(
1480
- path.join(buildDir, "gradle.properties"),
1481
- gradleProperties
1482
- );
1483
- fs.writeFileSync(path.join(buildDir, "settings.gradle"), settingsGradle);
1484
- &nbsp;
1485
- // Run only one Gradle task at a time
1486
- run(gradlew, targets, { cwd: buildDir, stdio: "inherit", env });
1487
- }
1488
- &nbsp;
1489
- await Promise.all(targetsToCopy.map(([src, dest]) =&gt; fs.copy(src, dest)));
1490
- }
1491
- &nbsp;
1492
- function copyFiles(files: unknown, destination: string): Promise&lt;void&gt;[] {
1493
- if (!Array.isArray(files) || files.length === 0) {
1494
- return [];
1495
- }
1496
- &nbsp;
1497
- fs.ensureDirSync(destination);
1498
- return files.map((file) =&gt; {
1499
- return fs.copy(file, `${destination}/${path.basename(file)}`);
1500
- });
1501
- }
1502
- &nbsp;
1503
- export async function copyAssets(
1504
- { options: { assetsDest, xcassetsDest } }: Context,
1505
- packageName: string,
1506
- { assets, strings, xcassets }: NativeAssets
1507
- ): Promise&lt;void&gt; {
1508
- const tasks = [
1509
- ...copyFiles(assets, `${assetsDest}/assets/${packageName}`),
1510
- ...copyFiles(strings, `${assetsDest}/strings/${packageName}`),
1511
- ];
1512
- &nbsp;
1513
- if (typeof xcassetsDest === "string") {
1514
- tasks.push(...copyFiles(xcassets, xcassetsDest));
1515
- }
1516
- &nbsp;
1517
- await Promise.all(tasks);
1518
- }
1519
- &nbsp;
1520
- export async function gatherConfigs({
1521
- projectRoot,
1522
- manifest,
1523
- }: Context): Promise&lt;Record&lt;string, AssetsConfig | null&gt; | undefined&gt; {
1524
- const { dependencies, devDependencies } = manifest;
1525
- const packages = [...keysOf(dependencies), ...keysOf(devDependencies)];
1526
- if (packages.length === 0) {
1527
- return;
1528
- }
1529
- &nbsp;
1530
- const resolveOptions = <span class="cstat-no" title="statement not covered" >{ paths: [projectRoot] };</span>
1531
- const assetsConfigs: Record&lt;string, AssetsConfig | null&gt; = <span class="cstat-no" title="statement not covered" >{};</span>
1532
- &nbsp;
1533
- <span class="cstat-no" title="statement not covered" > for (const pkg of packages) {</span>
1534
- <span class="cstat-no" title="statement not covered" > try {</span>
1535
- const pkgPath = <span class="cstat-no" title="statement not covered" >path.dirname(</span>
1536
- require.resolve(`${pkg}/package.json`, resolveOptions)
1537
- );
1538
- const reactNativeConfig = <span class="cstat-no" title="statement not covered" >`${pkgPath}/react-native.config.js`;</span>
1539
- <span class="cstat-no" title="statement not covered" > if (fs.existsSync(reactNativeConfig)) {</span>
1540
- const { nativeAssets } = <span class="cstat-no" title="statement not covered" >require(reactNativeConfig);</span>
1541
- <span class="cstat-no" title="statement not covered" > if (nativeAssets) {</span>
1542
- <span class="cstat-no" title="statement not covered" > assetsConfigs[pkg] = nativeAssets;</span>
1543
- }
1544
- }
1545
- } catch (err) {
1546
- <span class="cstat-no" title="statement not covered" > warn(err);</span>
1547
- }
1548
- }
1549
- &nbsp;
1550
- // Overrides from project config
1551
- const reactNativeConfig = <span class="cstat-no" title="statement not covered" >`${projectRoot}/react-native.config.js`;</span>
1552
- <span class="cstat-no" title="statement not covered" > if (fs.existsSync(reactNativeConfig)) {</span>
1553
- const { nativeAssets } = <span class="cstat-no" title="statement not covered" >require(reactNativeConfig);</span>
1554
- const overrides = <span class="cstat-no" title="statement not covered" >Object.entries(nativeAssets);</span>
1555
- <span class="cstat-no" title="statement not covered" > for (const [pkgName, config] of overrides) {</span>
1556
- <span class="cstat-no" title="statement not covered" > if (config === null || isAssetsConfig(config)) {</span>
1557
- <span class="cstat-no" title="statement not covered" > assetsConfigs[pkgName] = config;</span>
1558
- }
1559
- }
1560
- }
1561
- &nbsp;
1562
- <span class="cstat-no" title="statement not covered" > return assetsConfigs;</span>
1563
- }
1564
- &nbsp;
1565
- /**
1566
- * Copies additional assets not picked by bundlers into desired directory.
1567
- *
1568
- * The way this works is by scanning all direct dependencies of the current
1569
- * project for a file, `react-native.config.js`, whose contents include a
1570
- * field, `nativeAssets`, and a function that returns assets to copy:
1571
- *
1572
- * ```js
1573
- * // react-native.config.js
1574
- * module.exports = {
1575
- * nativeAssets: {
1576
- * getAssets: (context) =&gt; {
1577
- * return {
1578
- * assets: [],
1579
- * strings: [],
1580
- * xcassets: [],
1581
- * };
1582
- * }
1583
- * }
1584
- * };
1585
- * ```
1586
- *
1587
- * We also allow the project itself to override this where applicable. The
1588
- * format is similar and looks like this:
1589
- *
1590
- * ```js
1591
- * // react-native.config.js
1592
- * module.exports = {
1593
- * nativeAssets: {
1594
- * "some-library": {
1595
- * getAssets: (context) =&gt; {
1596
- * return {
1597
- * assets: [],
1598
- * strings: [],
1599
- * xcassets: [],
1600
- * };
1601
- * }
1602
- * },
1603
- * "another-library": {
1604
- * getAssets: (context) =&gt; {
1605
- * return {
1606
- * assets: [],
1607
- * strings: [],
1608
- * xcassets: [],
1609
- * };
1610
- * }
1611
- * }
1612
- * }
1613
- * };
1614
- * ```
1615
- *
1616
- * @param options Options dictate what gets copied where
1617
- */
1618
- export async function <span class="fstat-no" title="function not covered" >copyProjectAssets(</span>options: Options): Promise&lt;void&gt; {
1619
- const projectRoot = <span class="cstat-no" title="statement not covered" >findPackageDir() || process.cwd();</span>
1620
- const manifest = <span class="cstat-no" title="statement not covered" >readPackage(projectRoot);</span>
1621
- const context = <span class="cstat-no" title="statement not covered" >{ projectRoot, manifest, options };</span>
1622
- const assetConfigs = <span class="cstat-no" title="statement not covered" >await gatherConfigs(context);</span>
1623
- <span class="cstat-no" title="statement not covered" > if (!assetConfigs) {</span>
1624
- <span class="cstat-no" title="statement not covered" > return;</span>
1625
- }
1626
- &nbsp;
1627
- const dependencies = <span class="cstat-no" title="statement not covered" >Object.entries(assetConfigs);</span>
1628
- <span class="cstat-no" title="statement not covered" > for (const [packageName, config] of dependencies) {</span>
1629
- <span class="cstat-no" title="statement not covered" > if (!isAssetsConfig(config)) {</span>
1630
- <span class="cstat-no" title="statement not covered" > continue;</span>
1631
- }
1632
- &nbsp;
1633
- const { getAssets } = <span class="cstat-no" title="statement not covered" >config;</span>
1634
- <span class="cstat-no" title="statement not covered" > if (typeof getAssets !== "function") {</span>
1635
- <span class="cstat-no" title="statement not covered" > warn(`Skipped \`${packageName}\`: getAssets is not a function`);</span>
1636
- <span class="cstat-no" title="statement not covered" > continue;</span>
1637
- }
1638
- &nbsp;
1639
- const assets = <span class="cstat-no" title="statement not covered" >await getAssets(context);</span>
1640
- <span class="cstat-no" title="statement not covered" > if (options.bundleAar &amp;&amp; assets.aar) {</span>
1641
- <span class="cstat-no" title="statement not covered" > info(`Assembling "${packageName}"`);</span>
1642
- <span class="cstat-no" title="statement not covered" > await assembleAarBundle(context, packageName, assets);</span>
1643
- } else {
1644
- <span class="cstat-no" title="statement not covered" > info(`Copying assets for "${packageName}"`);</span>
1645
- <span class="cstat-no" title="statement not covered" > await copyAssets(context, packageName, assets);</span>
1646
- }
1647
- }
1648
- &nbsp;
1649
- <span class="cstat-no" title="statement not covered" > if (options.bundleAar) {</span>
1650
- const dummyAar = <span class="cstat-no" title="statement not covered" >{ targetName: "dummy" };</span>
1651
- const copyTasks = <span class="cstat-no" title="statement not covered" >[];</span>
1652
- <span class="cstat-no" title="statement not covered" > for (const dependencyName of ["hermes-engine", "react-native"]) {</span>
1653
- const { output, destination } = <span class="cstat-no" title="statement not covered" >getAndroidPaths(</span>
1654
- context,
1655
- dependencyName,
1656
- dummyAar
1657
- );
1658
- <span class="cstat-no" title="statement not covered" > if (</span>
1659
- output &amp;&amp;
1660
- (!fs.existsSync(destination) || fs.statSync(destination).isDirectory())
1661
- ) {
1662
- <span class="cstat-no" title="statement not covered" > info(`Copying Android Archive of "${dependencyName}"`);</span>
1663
- <span class="cstat-no" title="statement not covered" > copyTasks.push(fs.copy(output, destination));</span>
1664
- }
1665
- }
1666
- <span class="cstat-no" title="statement not covered" > await Promise.all(copyTasks);</span>
1667
- }
1668
- }
1669
- &nbsp;
1670
- export const rnxCopyAssetsCommand = {
1671
- name: "rnx-copy-assets",
1672
- description:
1673
- "Copies additional assets not picked by bundlers into desired directory.",
1674
- func: <span class="fstat-no" title="function not covered" >(_</span>argv: string[], _config: CLIConfig, options: Options) =&gt; {
1675
- <span class="cstat-no" title="statement not covered" > ensureOption(options, "platform");</span>
1676
- <span class="cstat-no" title="statement not covered" > ensureOption(options, "assetsDest", "assets-dest");</span>
1677
- <span class="cstat-no" title="statement not covered" > return copyProjectAssets(options);</span>
1678
- },
1679
- options: [
1680
- {
1681
- name: "--platform &lt;string&gt;",
1682
- description: "platform to target",
1683
- parse: parsePlatform,
1684
- },
1685
- {
1686
- name: "--assets-dest &lt;string&gt;",
1687
- description: "path of the directory to copy assets into",
1688
- },
1689
- {
1690
- name: "--bundle-aar &lt;boolean&gt;",
1691
- description: "whether to bundle AARs of dependencies",
1692
- default: false,
1693
- },
1694
- {
1695
- name: "--xcassets-dest &lt;string&gt;",
1696
- description:
1697
- "path of the directory to copy Xcode asset catalogs into. Asset catalogs will only be copied if a destination path is specified.",
1698
- },
1699
- ],
1700
- };
1701
- &nbsp;</pre></td></tr></table></pre>
1702
-
1703
- <div class='push'></div><!-- for sticky footer -->
1704
- </div><!-- /wrapper -->
1705
- <div class='footer quiet pad2 space-top1 center small'>
1706
- Code coverage generated by
1707
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1708
- at Wed Jan 17 2024 11:56:32 GMT+0000 (Coordinated Universal Time)
1709
- </div>
1710
- <script src="../prettify.js"></script>
1711
- <script>
1712
- window.onload = function () {
1713
- prettyPrint();
1714
- };
1715
- </script>
1716
- <script src="../sorter.js"></script>
1717
- <script src="../block-navigation.js"></script>
1718
- </body>
1719
- </html>
1720
-