@epa-wg/custom-element-dist 0.0.37 → 0.0.39

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 (117) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/AGENTS.md +1 -0
  3. package/CLAUDE.md +89 -0
  4. package/README.md +5 -5
  5. package/bin/postinstall.sh +18 -10
  6. package/coverage/base.css +224 -0
  7. package/coverage/block-navigation.js +87 -0
  8. package/coverage/coverage-final.json +12 -0
  9. package/coverage/favicon.png +0 -0
  10. package/coverage/index.html +176 -0
  11. package/coverage/prettify.css +1 -0
  12. package/coverage/prettify.js +2 -0
  13. package/coverage/sort-arrow-sprite.png +0 -0
  14. package/coverage/sorter.js +210 -0
  15. package/coverage/src/coverage.svg +10 -0
  16. package/coverage/src/custom-element/coverage.svg +10 -0
  17. package/coverage/src/custom-element/custom-element.js/coverage.svg +10 -0
  18. package/coverage/src/custom-element/custom-element.js.html +3058 -0
  19. package/coverage/src/custom-element/http-request.js/coverage.svg +10 -0
  20. package/coverage/src/custom-element/http-request.js.html +373 -0
  21. package/coverage/src/custom-element/index.html +176 -0
  22. package/coverage/src/custom-element/local-storage.js/coverage.svg +10 -0
  23. package/coverage/src/custom-element/local-storage.js.html +361 -0
  24. package/coverage/src/custom-element/location-element.js/coverage.svg +10 -0
  25. package/coverage/src/custom-element/location-element.js.html +412 -0
  26. package/coverage/src/custom-element/module-url.js/coverage.svg +10 -0
  27. package/coverage/src/custom-element/module-url.js.html +187 -0
  28. package/coverage/src/index.html +116 -0
  29. package/coverage/src/material/theme/colors.js/coverage.svg +10 -0
  30. package/coverage/src/material/theme/colors.js.html +217 -0
  31. package/coverage/src/material/theme/coverage.svg +10 -0
  32. package/coverage/src/material/theme/index.html +116 -0
  33. package/coverage/src/mocks/coverage.svg +10 -0
  34. package/coverage/src/mocks/handlers.ts/coverage.svg +10 -0
  35. package/coverage/src/mocks/handlers.ts.html +196 -0
  36. package/coverage/src/mocks/index.html +116 -0
  37. package/coverage/src/stories/coverage.svg +10 -0
  38. package/coverage/src/stories/frame.canvas.ts/coverage.svg +10 -0
  39. package/coverage/src/stories/frame.canvas.ts.html +217 -0
  40. package/coverage/src/stories/http-request.stories.ts/coverage.svg +10 -0
  41. package/coverage/src/stories/http-request.stories.ts.html +820 -0
  42. package/coverage/src/stories/index.html +146 -0
  43. package/coverage/src/stories/testStoryBook.ts/coverage.svg +10 -0
  44. package/coverage/src/stories/testStoryBook.ts.html +160 -0
  45. package/coverage/src/sum.ts/coverage.svg +10 -0
  46. package/coverage/src/sum.ts.html +94 -0
  47. package/dist/{custom-element-BqBcmDiN.js → custom-element-Cr_I3Xd-.js} +69 -65
  48. package/dist/custom-element-D5IF46oF.cjs +97 -0
  49. package/dist/custom-element-bundle.cjs +1 -1
  50. package/dist/custom-element-bundle.js +3 -3
  51. package/dist/demo/a.html +41 -64
  52. package/dist/demo/s.xslt +94 -350
  53. package/dist/{local-storage-DzmNKzgN.js → local-storage-w0k66UWM.js} +4 -4
  54. package/package.json +3 -2
  55. package/public/demo/a.html +41 -64
  56. package/public/demo/s.xslt +94 -350
  57. package/src/css/cem-combined.css +1058 -0
  58. package/src/custom-element/custom-element.js +9 -4
  59. package/src/custom-element/demo/a.html +41 -64
  60. package/src/custom-element/demo/s.xslt +94 -350
  61. package/src/custom-element/ide/customData-dce.json +8 -8
  62. package/src/custom-element/ide/web-types-dce.json +8 -8
  63. package/src/custom-element/ide/web-types-xsl.json +1 -1
  64. package/src/material/components/action.html +77 -22
  65. package/src/material/components/autocomplete.html +7 -6
  66. package/src/material/components/badge.html +33 -34
  67. package/src/material/components/cem-theme-components.css +131 -0
  68. package/src/material/components/dropdown.html +27 -12
  69. package/src/material/components/icon-link.html +25 -18
  70. package/src/material/components/icon.html +15 -14
  71. package/src/material/components/input.html +27 -24
  72. package/src/material/components/menu.html +23 -18
  73. package/src/material/components.html +31 -23
  74. package/src/material/demo.css +24 -12
  75. package/src/material/index.html +16 -10
  76. package/src/material/theme/consumer-theme.css +0 -733
  77. package/src/material/theme/semantic.css +1 -85
  78. package/src/mocks/versions.mock.ts +1 -1
  79. package/src/stories/__screenshots__/http-request.test.ts/http-request-url-change-1.png +0 -0
  80. package/src/stories/__screenshots__/location-element.test.stories.ts/location-element-location-element-Demo-1.png +0 -0
  81. package/src/stories/frame.canvas.ts +17 -4
  82. package/src/stories/testStoryBook.ts +2 -5
  83. package/storybook-static/assets/{Color-F6OSRLHC-FZZzFn7T.js → Color-F6OSRLHC-DM-zIDJc.js} +1 -1
  84. package/storybook-static/assets/{Configure-DyfktOJO.js → Configure-Bv7Hf8nO.js} +1 -1
  85. package/storybook-static/assets/{DocsRenderer-CFRXHY34-5isVpCzj.js → DocsRenderer-CFRXHY34-BNrvQCFF.js} +2 -2
  86. package/storybook-static/assets/{attributes.test.stories-CrDC-RXf.js → attributes.test.stories-Bs0zZtYO.js} +1 -1
  87. package/storybook-static/assets/{css.test.stories-ChWnZJwa.js → css.test.stories-CK4N9Fqq.js} +1 -1
  88. package/storybook-static/assets/custom-element-PxTx2W9y.js +97 -0
  89. package/storybook-static/assets/{dom-merge.test.stories-DkarPqD_.js → dom-merge.test.stories-DLFviA8F.js} +1 -1
  90. package/storybook-static/assets/{external-template.test.stories-DCboR8sG.js → external-template.test.stories-CqR1aaHv.js} +1 -1
  91. package/storybook-static/assets/{form.test.stories-BjeeUu0b.js → form.test.stories-Cinvg_DI.js} +1 -1
  92. package/storybook-static/assets/frame.canvas-BB4_DNn6.js +1 -0
  93. package/storybook-static/assets/handlers-C9n1hhtS.js +291 -0
  94. package/storybook-static/assets/{http-request.stories-WIldq1MC.js → http-request.stories-CwYdgaOh.js} +1 -1
  95. package/storybook-static/assets/{iframe-CBHPj1E5.js → iframe-DX9w3Kge.js} +2 -2
  96. package/storybook-static/assets/{index-CzwPLrca.js → index-C8cHSFtw.js} +1 -1
  97. package/storybook-static/assets/{index-BL0FQnAE.js → index-DgXlQmnf.js} +3 -3
  98. package/storybook-static/assets/{local-storage.test.stories-DLMK0p2s.js → local-storage.test.stories-M4WOSQC5.js} +1 -1
  99. package/storybook-static/assets/{location-element.test.stories-BroqoLMS.js → location-element.test.stories-Ce6Ma8hE.js} +1 -1
  100. package/storybook-static/assets/{module-url.test.stories-B-0dibET.js → module-url.test.stories-PwnZWqKL.js} +1 -1
  101. package/storybook-static/assets/{preview-C1KnQPMW.js → preview-DxO5Yt9a.js} +1 -1
  102. package/storybook-static/assets/{preview-BG24UPL5.js → preview-ln0vFKa2.js} +2 -2
  103. package/storybook-static/assets/{set-url.test.stories-Dhq4YQyr.js → set-url.test.stories-BdNTYEwI.js} +1 -1
  104. package/storybook-static/assets/{slice-events.test.stories-BZJGIFku.js → slice-events.test.stories-BdvLtK0h.js} +1 -1
  105. package/storybook-static/assets/{slots.test.stories-DKivHwZH.js → slots.test.stories-CoTPvRog.js} +1 -1
  106. package/storybook-static/assets/{version-select.test.stories-Dntyd7qb.js → version-select.test.stories-hs-HsDVE.js} +1 -1
  107. package/storybook-static/assets/{xslt-conditionals.test.stories-Iq5iQNRj.js → xslt-conditionals.test.stories-C4oXVQWa.js} +1 -1
  108. package/storybook-static/assets/{xslt-for-each.test.stories-BMygBmj8.js → xslt-for-each.test.stories-Da4vCZe1.js} +1 -1
  109. package/storybook-static/assets/{xslt-if.test.stories-CVrFWdAX.js → xslt-if.test.stories-CMlnBGX2.js} +1 -1
  110. package/storybook-static/demo/a.html +41 -64
  111. package/storybook-static/demo/s.xslt +94 -350
  112. package/storybook-static/iframe.html +1 -1
  113. package/storybook-static/project.json +1 -1
  114. package/dist/custom-element-jpOyXHF6.cjs +0 -97
  115. package/storybook-static/assets/custom-element-wuk8gYiP.js +0 -97
  116. package/storybook-static/assets/frame.canvas-E5n9h6j1.js +0 -1
  117. package/storybook-static/assets/handlers-B7UMnC7v.js +0 -291
@@ -0,0 +1,3058 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/custom-element/custom-element.js</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/custom-element</a> custom-element.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">92.48% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>628/679</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">86.32% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>341/395</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">94.96% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>132/139</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">92.4% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>560/606</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a>
315
+ <a name='L250'></a><a href='#L250'>250</a>
316
+ <a name='L251'></a><a href='#L251'>251</a>
317
+ <a name='L252'></a><a href='#L252'>252</a>
318
+ <a name='L253'></a><a href='#L253'>253</a>
319
+ <a name='L254'></a><a href='#L254'>254</a>
320
+ <a name='L255'></a><a href='#L255'>255</a>
321
+ <a name='L256'></a><a href='#L256'>256</a>
322
+ <a name='L257'></a><a href='#L257'>257</a>
323
+ <a name='L258'></a><a href='#L258'>258</a>
324
+ <a name='L259'></a><a href='#L259'>259</a>
325
+ <a name='L260'></a><a href='#L260'>260</a>
326
+ <a name='L261'></a><a href='#L261'>261</a>
327
+ <a name='L262'></a><a href='#L262'>262</a>
328
+ <a name='L263'></a><a href='#L263'>263</a>
329
+ <a name='L264'></a><a href='#L264'>264</a>
330
+ <a name='L265'></a><a href='#L265'>265</a>
331
+ <a name='L266'></a><a href='#L266'>266</a>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
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>
795
+ <a name='L730'></a><a href='#L730'>730</a>
796
+ <a name='L731'></a><a href='#L731'>731</a>
797
+ <a name='L732'></a><a href='#L732'>732</a>
798
+ <a name='L733'></a><a href='#L733'>733</a>
799
+ <a name='L734'></a><a href='#L734'>734</a>
800
+ <a name='L735'></a><a href='#L735'>735</a>
801
+ <a name='L736'></a><a href='#L736'>736</a>
802
+ <a name='L737'></a><a href='#L737'>737</a>
803
+ <a name='L738'></a><a href='#L738'>738</a>
804
+ <a name='L739'></a><a href='#L739'>739</a>
805
+ <a name='L740'></a><a href='#L740'>740</a>
806
+ <a name='L741'></a><a href='#L741'>741</a>
807
+ <a name='L742'></a><a href='#L742'>742</a>
808
+ <a name='L743'></a><a href='#L743'>743</a>
809
+ <a name='L744'></a><a href='#L744'>744</a>
810
+ <a name='L745'></a><a href='#L745'>745</a>
811
+ <a name='L746'></a><a href='#L746'>746</a>
812
+ <a name='L747'></a><a href='#L747'>747</a>
813
+ <a name='L748'></a><a href='#L748'>748</a>
814
+ <a name='L749'></a><a href='#L749'>749</a>
815
+ <a name='L750'></a><a href='#L750'>750</a>
816
+ <a name='L751'></a><a href='#L751'>751</a>
817
+ <a name='L752'></a><a href='#L752'>752</a>
818
+ <a name='L753'></a><a href='#L753'>753</a>
819
+ <a name='L754'></a><a href='#L754'>754</a>
820
+ <a name='L755'></a><a href='#L755'>755</a>
821
+ <a name='L756'></a><a href='#L756'>756</a>
822
+ <a name='L757'></a><a href='#L757'>757</a>
823
+ <a name='L758'></a><a href='#L758'>758</a>
824
+ <a name='L759'></a><a href='#L759'>759</a>
825
+ <a name='L760'></a><a href='#L760'>760</a>
826
+ <a name='L761'></a><a href='#L761'>761</a>
827
+ <a name='L762'></a><a href='#L762'>762</a>
828
+ <a name='L763'></a><a href='#L763'>763</a>
829
+ <a name='L764'></a><a href='#L764'>764</a>
830
+ <a name='L765'></a><a href='#L765'>765</a>
831
+ <a name='L766'></a><a href='#L766'>766</a>
832
+ <a name='L767'></a><a href='#L767'>767</a>
833
+ <a name='L768'></a><a href='#L768'>768</a>
834
+ <a name='L769'></a><a href='#L769'>769</a>
835
+ <a name='L770'></a><a href='#L770'>770</a>
836
+ <a name='L771'></a><a href='#L771'>771</a>
837
+ <a name='L772'></a><a href='#L772'>772</a>
838
+ <a name='L773'></a><a href='#L773'>773</a>
839
+ <a name='L774'></a><a href='#L774'>774</a>
840
+ <a name='L775'></a><a href='#L775'>775</a>
841
+ <a name='L776'></a><a href='#L776'>776</a>
842
+ <a name='L777'></a><a href='#L777'>777</a>
843
+ <a name='L778'></a><a href='#L778'>778</a>
844
+ <a name='L779'></a><a href='#L779'>779</a>
845
+ <a name='L780'></a><a href='#L780'>780</a>
846
+ <a name='L781'></a><a href='#L781'>781</a>
847
+ <a name='L782'></a><a href='#L782'>782</a>
848
+ <a name='L783'></a><a href='#L783'>783</a>
849
+ <a name='L784'></a><a href='#L784'>784</a>
850
+ <a name='L785'></a><a href='#L785'>785</a>
851
+ <a name='L786'></a><a href='#L786'>786</a>
852
+ <a name='L787'></a><a href='#L787'>787</a>
853
+ <a name='L788'></a><a href='#L788'>788</a>
854
+ <a name='L789'></a><a href='#L789'>789</a>
855
+ <a name='L790'></a><a href='#L790'>790</a>
856
+ <a name='L791'></a><a href='#L791'>791</a>
857
+ <a name='L792'></a><a href='#L792'>792</a>
858
+ <a name='L793'></a><a href='#L793'>793</a>
859
+ <a name='L794'></a><a href='#L794'>794</a>
860
+ <a name='L795'></a><a href='#L795'>795</a>
861
+ <a name='L796'></a><a href='#L796'>796</a>
862
+ <a name='L797'></a><a href='#L797'>797</a>
863
+ <a name='L798'></a><a href='#L798'>798</a>
864
+ <a name='L799'></a><a href='#L799'>799</a>
865
+ <a name='L800'></a><a href='#L800'>800</a>
866
+ <a name='L801'></a><a href='#L801'>801</a>
867
+ <a name='L802'></a><a href='#L802'>802</a>
868
+ <a name='L803'></a><a href='#L803'>803</a>
869
+ <a name='L804'></a><a href='#L804'>804</a>
870
+ <a name='L805'></a><a href='#L805'>805</a>
871
+ <a name='L806'></a><a href='#L806'>806</a>
872
+ <a name='L807'></a><a href='#L807'>807</a>
873
+ <a name='L808'></a><a href='#L808'>808</a>
874
+ <a name='L809'></a><a href='#L809'>809</a>
875
+ <a name='L810'></a><a href='#L810'>810</a>
876
+ <a name='L811'></a><a href='#L811'>811</a>
877
+ <a name='L812'></a><a href='#L812'>812</a>
878
+ <a name='L813'></a><a href='#L813'>813</a>
879
+ <a name='L814'></a><a href='#L814'>814</a>
880
+ <a name='L815'></a><a href='#L815'>815</a>
881
+ <a name='L816'></a><a href='#L816'>816</a>
882
+ <a name='L817'></a><a href='#L817'>817</a>
883
+ <a name='L818'></a><a href='#L818'>818</a>
884
+ <a name='L819'></a><a href='#L819'>819</a>
885
+ <a name='L820'></a><a href='#L820'>820</a>
886
+ <a name='L821'></a><a href='#L821'>821</a>
887
+ <a name='L822'></a><a href='#L822'>822</a>
888
+ <a name='L823'></a><a href='#L823'>823</a>
889
+ <a name='L824'></a><a href='#L824'>824</a>
890
+ <a name='L825'></a><a href='#L825'>825</a>
891
+ <a name='L826'></a><a href='#L826'>826</a>
892
+ <a name='L827'></a><a href='#L827'>827</a>
893
+ <a name='L828'></a><a href='#L828'>828</a>
894
+ <a name='L829'></a><a href='#L829'>829</a>
895
+ <a name='L830'></a><a href='#L830'>830</a>
896
+ <a name='L831'></a><a href='#L831'>831</a>
897
+ <a name='L832'></a><a href='#L832'>832</a>
898
+ <a name='L833'></a><a href='#L833'>833</a>
899
+ <a name='L834'></a><a href='#L834'>834</a>
900
+ <a name='L835'></a><a href='#L835'>835</a>
901
+ <a name='L836'></a><a href='#L836'>836</a>
902
+ <a name='L837'></a><a href='#L837'>837</a>
903
+ <a name='L838'></a><a href='#L838'>838</a>
904
+ <a name='L839'></a><a href='#L839'>839</a>
905
+ <a name='L840'></a><a href='#L840'>840</a>
906
+ <a name='L841'></a><a href='#L841'>841</a>
907
+ <a name='L842'></a><a href='#L842'>842</a>
908
+ <a name='L843'></a><a href='#L843'>843</a>
909
+ <a name='L844'></a><a href='#L844'>844</a>
910
+ <a name='L845'></a><a href='#L845'>845</a>
911
+ <a name='L846'></a><a href='#L846'>846</a>
912
+ <a name='L847'></a><a href='#L847'>847</a>
913
+ <a name='L848'></a><a href='#L848'>848</a>
914
+ <a name='L849'></a><a href='#L849'>849</a>
915
+ <a name='L850'></a><a href='#L850'>850</a>
916
+ <a name='L851'></a><a href='#L851'>851</a>
917
+ <a name='L852'></a><a href='#L852'>852</a>
918
+ <a name='L853'></a><a href='#L853'>853</a>
919
+ <a name='L854'></a><a href='#L854'>854</a>
920
+ <a name='L855'></a><a href='#L855'>855</a>
921
+ <a name='L856'></a><a href='#L856'>856</a>
922
+ <a name='L857'></a><a href='#L857'>857</a>
923
+ <a name='L858'></a><a href='#L858'>858</a>
924
+ <a name='L859'></a><a href='#L859'>859</a>
925
+ <a name='L860'></a><a href='#L860'>860</a>
926
+ <a name='L861'></a><a href='#L861'>861</a>
927
+ <a name='L862'></a><a href='#L862'>862</a>
928
+ <a name='L863'></a><a href='#L863'>863</a>
929
+ <a name='L864'></a><a href='#L864'>864</a>
930
+ <a name='L865'></a><a href='#L865'>865</a>
931
+ <a name='L866'></a><a href='#L866'>866</a>
932
+ <a name='L867'></a><a href='#L867'>867</a>
933
+ <a name='L868'></a><a href='#L868'>868</a>
934
+ <a name='L869'></a><a href='#L869'>869</a>
935
+ <a name='L870'></a><a href='#L870'>870</a>
936
+ <a name='L871'></a><a href='#L871'>871</a>
937
+ <a name='L872'></a><a href='#L872'>872</a>
938
+ <a name='L873'></a><a href='#L873'>873</a>
939
+ <a name='L874'></a><a href='#L874'>874</a>
940
+ <a name='L875'></a><a href='#L875'>875</a>
941
+ <a name='L876'></a><a href='#L876'>876</a>
942
+ <a name='L877'></a><a href='#L877'>877</a>
943
+ <a name='L878'></a><a href='#L878'>878</a>
944
+ <a name='L879'></a><a href='#L879'>879</a>
945
+ <a name='L880'></a><a href='#L880'>880</a>
946
+ <a name='L881'></a><a href='#L881'>881</a>
947
+ <a name='L882'></a><a href='#L882'>882</a>
948
+ <a name='L883'></a><a href='#L883'>883</a>
949
+ <a name='L884'></a><a href='#L884'>884</a>
950
+ <a name='L885'></a><a href='#L885'>885</a>
951
+ <a name='L886'></a><a href='#L886'>886</a>
952
+ <a name='L887'></a><a href='#L887'>887</a>
953
+ <a name='L888'></a><a href='#L888'>888</a>
954
+ <a name='L889'></a><a href='#L889'>889</a>
955
+ <a name='L890'></a><a href='#L890'>890</a>
956
+ <a name='L891'></a><a href='#L891'>891</a>
957
+ <a name='L892'></a><a href='#L892'>892</a>
958
+ <a name='L893'></a><a href='#L893'>893</a>
959
+ <a name='L894'></a><a href='#L894'>894</a>
960
+ <a name='L895'></a><a href='#L895'>895</a>
961
+ <a name='L896'></a><a href='#L896'>896</a>
962
+ <a name='L897'></a><a href='#L897'>897</a>
963
+ <a name='L898'></a><a href='#L898'>898</a>
964
+ <a name='L899'></a><a href='#L899'>899</a>
965
+ <a name='L900'></a><a href='#L900'>900</a>
966
+ <a name='L901'></a><a href='#L901'>901</a>
967
+ <a name='L902'></a><a href='#L902'>902</a>
968
+ <a name='L903'></a><a href='#L903'>903</a>
969
+ <a name='L904'></a><a href='#L904'>904</a>
970
+ <a name='L905'></a><a href='#L905'>905</a>
971
+ <a name='L906'></a><a href='#L906'>906</a>
972
+ <a name='L907'></a><a href='#L907'>907</a>
973
+ <a name='L908'></a><a href='#L908'>908</a>
974
+ <a name='L909'></a><a href='#L909'>909</a>
975
+ <a name='L910'></a><a href='#L910'>910</a>
976
+ <a name='L911'></a><a href='#L911'>911</a>
977
+ <a name='L912'></a><a href='#L912'>912</a>
978
+ <a name='L913'></a><a href='#L913'>913</a>
979
+ <a name='L914'></a><a href='#L914'>914</a>
980
+ <a name='L915'></a><a href='#L915'>915</a>
981
+ <a name='L916'></a><a href='#L916'>916</a>
982
+ <a name='L917'></a><a href='#L917'>917</a>
983
+ <a name='L918'></a><a href='#L918'>918</a>
984
+ <a name='L919'></a><a href='#L919'>919</a>
985
+ <a name='L920'></a><a href='#L920'>920</a>
986
+ <a name='L921'></a><a href='#L921'>921</a>
987
+ <a name='L922'></a><a href='#L922'>922</a>
988
+ <a name='L923'></a><a href='#L923'>923</a>
989
+ <a name='L924'></a><a href='#L924'>924</a>
990
+ <a name='L925'></a><a href='#L925'>925</a>
991
+ <a name='L926'></a><a href='#L926'>926</a>
992
+ <a name='L927'></a><a href='#L927'>927</a>
993
+ <a name='L928'></a><a href='#L928'>928</a>
994
+ <a name='L929'></a><a href='#L929'>929</a>
995
+ <a name='L930'></a><a href='#L930'>930</a>
996
+ <a name='L931'></a><a href='#L931'>931</a>
997
+ <a name='L932'></a><a href='#L932'>932</a>
998
+ <a name='L933'></a><a href='#L933'>933</a>
999
+ <a name='L934'></a><a href='#L934'>934</a>
1000
+ <a name='L935'></a><a href='#L935'>935</a>
1001
+ <a name='L936'></a><a href='#L936'>936</a>
1002
+ <a name='L937'></a><a href='#L937'>937</a>
1003
+ <a name='L938'></a><a href='#L938'>938</a>
1004
+ <a name='L939'></a><a href='#L939'>939</a>
1005
+ <a name='L940'></a><a href='#L940'>940</a>
1006
+ <a name='L941'></a><a href='#L941'>941</a>
1007
+ <a name='L942'></a><a href='#L942'>942</a>
1008
+ <a name='L943'></a><a href='#L943'>943</a>
1009
+ <a name='L944'></a><a href='#L944'>944</a>
1010
+ <a name='L945'></a><a href='#L945'>945</a>
1011
+ <a name='L946'></a><a href='#L946'>946</a>
1012
+ <a name='L947'></a><a href='#L947'>947</a>
1013
+ <a name='L948'></a><a href='#L948'>948</a>
1014
+ <a name='L949'></a><a href='#L949'>949</a>
1015
+ <a name='L950'></a><a href='#L950'>950</a>
1016
+ <a name='L951'></a><a href='#L951'>951</a>
1017
+ <a name='L952'></a><a href='#L952'>952</a>
1018
+ <a name='L953'></a><a href='#L953'>953</a>
1019
+ <a name='L954'></a><a href='#L954'>954</a>
1020
+ <a name='L955'></a><a href='#L955'>955</a>
1021
+ <a name='L956'></a><a href='#L956'>956</a>
1022
+ <a name='L957'></a><a href='#L957'>957</a>
1023
+ <a name='L958'></a><a href='#L958'>958</a>
1024
+ <a name='L959'></a><a href='#L959'>959</a>
1025
+ <a name='L960'></a><a href='#L960'>960</a>
1026
+ <a name='L961'></a><a href='#L961'>961</a>
1027
+ <a name='L962'></a><a href='#L962'>962</a>
1028
+ <a name='L963'></a><a href='#L963'>963</a>
1029
+ <a name='L964'></a><a href='#L964'>964</a>
1030
+ <a name='L965'></a><a href='#L965'>965</a>
1031
+ <a name='L966'></a><a href='#L966'>966</a>
1032
+ <a name='L967'></a><a href='#L967'>967</a>
1033
+ <a name='L968'></a><a href='#L968'>968</a>
1034
+ <a name='L969'></a><a href='#L969'>969</a>
1035
+ <a name='L970'></a><a href='#L970'>970</a>
1036
+ <a name='L971'></a><a href='#L971'>971</a>
1037
+ <a name='L972'></a><a href='#L972'>972</a>
1038
+ <a name='L973'></a><a href='#L973'>973</a>
1039
+ <a name='L974'></a><a href='#L974'>974</a>
1040
+ <a name='L975'></a><a href='#L975'>975</a>
1041
+ <a name='L976'></a><a href='#L976'>976</a>
1042
+ <a name='L977'></a><a href='#L977'>977</a>
1043
+ <a name='L978'></a><a href='#L978'>978</a>
1044
+ <a name='L979'></a><a href='#L979'>979</a>
1045
+ <a name='L980'></a><a href='#L980'>980</a>
1046
+ <a name='L981'></a><a href='#L981'>981</a>
1047
+ <a name='L982'></a><a href='#L982'>982</a>
1048
+ <a name='L983'></a><a href='#L983'>983</a>
1049
+ <a name='L984'></a><a href='#L984'>984</a>
1050
+ <a name='L985'></a><a href='#L985'>985</a>
1051
+ <a name='L986'></a><a href='#L986'>986</a>
1052
+ <a name='L987'></a><a href='#L987'>987</a>
1053
+ <a name='L988'></a><a href='#L988'>988</a>
1054
+ <a name='L989'></a><a href='#L989'>989</a>
1055
+ <a name='L990'></a><a href='#L990'>990</a>
1056
+ <a name='L991'></a><a href='#L991'>991</a>
1057
+ <a name='L992'></a><a href='#L992'>992</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">17x</span>
1058
+ <span class="cline-any cline-yes">17x</span>
1059
+ <span class="cline-any cline-yes">17x</span>
1060
+ <span class="cline-any cline-yes">17x</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-yes">21290x</span>
1065
+ <span class="cline-any cline-yes">11745x</span>
1066
+ <span class="cline-any cline-yes">223x</span>
1067
+ <span class="cline-any cline-yes">6634x</span>
1068
+ <span class="cline-any cline-yes">3417x</span>
1069
+ <span class="cline-any cline-yes">55x</span>
1070
+ <span class="cline-any cline-yes">47x</span>
1071
+ <span class="cline-any cline-yes">284x</span>
1072
+ <span class="cline-any cline-yes">185x</span>
1073
+ <span class="cline-any cline-yes">5425x</span>
1074
+ <span class="cline-any cline-yes">268x</span>
1075
+ <span class="cline-any cline-yes">17x</span>
1076
+ <span class="cline-any cline-neutral">&nbsp;</span>
1077
+ <span class="cline-any cline-yes">984x</span>
1078
+ <span class="cline-any cline-neutral">&nbsp;</span>
1079
+ <span class="cline-any cline-yes">984x</span>
1080
+ <span class="cline-any cline-yes">984x</span>
1081
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
1085
+ <span class="cline-any cline-yes">17x</span>
1086
+ <span class="cline-any cline-yes">61x</span>
1087
+ <span class="cline-any cline-yes">61x</span>
1088
+ <span class="cline-any cline-yes">85x</span>
1089
+ <span class="cline-any cline-yes">61x</span>
1090
+ <span class="cline-any cline-yes">11x</span>
1091
+ <span class="cline-any cline-yes">61x</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-neutral">&nbsp;</span>
1095
+ <span class="cline-any cline-neutral">&nbsp;</span>
1096
+ <span class="cline-any cline-neutral">&nbsp;</span>
1097
+ <span class="cline-any cline-neutral">&nbsp;</span>
1098
+ <span class="cline-any cline-neutral">&nbsp;</span>
1099
+ <span class="cline-any cline-neutral">&nbsp;</span>
1100
+ <span class="cline-any cline-neutral">&nbsp;</span>
1101
+ <span class="cline-any cline-neutral">&nbsp;</span>
1102
+ <span class="cline-any cline-neutral">&nbsp;</span>
1103
+ <span class="cline-any cline-neutral">&nbsp;</span>
1104
+ <span class="cline-any cline-neutral">&nbsp;</span>
1105
+ <span class="cline-any cline-yes">359x</span>
1106
+ <span class="cline-any cline-neutral">&nbsp;</span>
1107
+ <span class="cline-any cline-neutral">&nbsp;</span>
1108
+ <span class="cline-any cline-yes">5x</span>
1109
+ <span class="cline-any cline-no">&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-yes">396x</span>
1114
+ <span class="cline-any cline-yes">396x</span>
1115
+ <span class="cline-any cline-yes">396x</span>
1116
+ <span class="cline-any cline-yes">396x</span>
1117
+ <span class="cline-any cline-neutral">&nbsp;</span>
1118
+ <span class="cline-any cline-yes">396x</span>
1119
+ <span class="cline-any cline-yes">489x</span>
1120
+ <span class="cline-any cline-yes">396x</span>
1121
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1126
+ <span class="cline-any cline-yes">253x</span>
1127
+ <span class="cline-any cline-neutral">&nbsp;</span>
1128
+ <span class="cline-any cline-yes">250x</span>
1129
+ <span class="cline-any cline-yes">43x</span>
1130
+ <span class="cline-any cline-yes">250x</span>
1131
+ <span class="cline-any cline-neutral">&nbsp;</span>
1132
+ <span class="cline-any cline-yes">253x</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-yes">169x</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-yes">563x</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-yes">706x</span>
1144
+ <span class="cline-any cline-yes">706x</span>
1145
+ <span class="cline-any cline-yes">47x</span>
1146
+ <span class="cline-any cline-yes">659x</span>
1147
+ <span class="cline-any cline-yes">22x</span>
1148
+ <span class="cline-any cline-yes">637x</span>
1149
+ <span class="cline-any cline-neutral">&nbsp;</span>
1150
+ <span class="cline-any cline-no">&nbsp;</span>
1151
+ <span class="cline-any cline-no">&nbsp;</span>
1152
+ <span class="cline-any cline-no">&nbsp;</span>
1153
+ <span class="cline-any cline-neutral">&nbsp;</span>
1154
+ <span class="cline-any cline-yes">637x</span>
1155
+ <span class="cline-any cline-yes">24x</span>
1156
+ <span class="cline-any cline-yes">49x</span>
1157
+ <span class="cline-any cline-yes">24x</span>
1158
+ <span class="cline-any cline-neutral">&nbsp;</span>
1159
+ <span class="cline-any cline-yes">613x</span>
1160
+ <span class="cline-any cline-yes">11x</span>
1161
+ <span class="cline-any cline-yes">11x</span>
1162
+ <span class="cline-any cline-yes">28x</span>
1163
+ <span class="cline-any cline-yes">11x</span>
1164
+ <span class="cline-any cline-neutral">&nbsp;</span>
1165
+ <span class="cline-any cline-yes">602x</span>
1166
+ <span class="cline-any cline-yes">602x</span>
1167
+ <span class="cline-any cline-neutral">&nbsp;</span>
1168
+ <span class="cline-any cline-yes">7379x</span>
1169
+ <span class="cline-any cline-yes">1382x</span>
1170
+ <span class="cline-any cline-yes">5997x</span>
1171
+ <span class="cline-any cline-yes">1266x</span>
1172
+ <span class="cline-any cline-neutral">&nbsp;</span>
1173
+ <span class="cline-any cline-neutral">&nbsp;</span>
1174
+ <span class="cline-any cline-yes">1266x</span>
1175
+ <span class="cline-any cline-neutral">&nbsp;</span>
1176
+ <span class="cline-any cline-yes">4731x</span>
1177
+ <span class="cline-any cline-yes">4441x</span>
1178
+ <span class="cline-any cline-neutral">&nbsp;</span>
1179
+ <span class="cline-any cline-yes">290x</span>
1180
+ <span class="cline-any cline-neutral">&nbsp;</span>
1181
+ <span class="cline-any cline-yes">602x</span>
1182
+ <span class="cline-any cline-neutral">&nbsp;</span>
1183
+ <span class="cline-any cline-neutral">&nbsp;</span>
1184
+ <span class="cline-any cline-neutral">&nbsp;</span>
1185
+ <span class="cline-any cline-neutral">&nbsp;</span>
1186
+ <span class="cline-any cline-yes">2988x</span>
1187
+ <span class="cline-any cline-yes">6065x</span>
1188
+ <span class="cline-any cline-neutral">&nbsp;</span>
1189
+ <span class="cline-any cline-yes">3165x</span>
1190
+ <span class="cline-any cline-yes">3165x</span>
1191
+ <span class="cline-any cline-yes">3165x</span>
1192
+ <span class="cline-any cline-yes">3165x</span>
1193
+ <span class="cline-any cline-yes">3165x</span>
1194
+ <span class="cline-any cline-yes">3165x</span>
1195
+ <span class="cline-any cline-yes">3165x</span>
1196
+ <span class="cline-any cline-yes">288x</span>
1197
+ <span class="cline-any cline-yes">23x</span>
1198
+ <span class="cline-any cline-yes">288x</span>
1199
+ <span class="cline-any cline-yes">288x</span>
1200
+ <span class="cline-any cline-yes">288x</span>
1201
+ <span class="cline-any cline-yes">288x</span>
1202
+ <span class="cline-any cline-neutral">&nbsp;</span>
1203
+ <span class="cline-any cline-yes">3165x</span>
1204
+ <span class="cline-any cline-yes">2881x</span>
1205
+ <span class="cline-any cline-yes">3165x</span>
1206
+ <span class="cline-any cline-yes">3165x</span>
1207
+ <span class="cline-any cline-yes">3192x</span>
1208
+ <span class="cline-any cline-yes">3165x</span>
1209
+ <span class="cline-any cline-neutral">&nbsp;</span>
1210
+ <span class="cline-any cline-neutral">&nbsp;</span>
1211
+ <span class="cline-any cline-neutral">&nbsp;</span>
1212
+ <span class="cline-any cline-neutral">&nbsp;</span>
1213
+ <span class="cline-any cline-yes">88x</span>
1214
+ <span class="cline-any cline-yes">88x</span>
1215
+ <span class="cline-any cline-yes">88x</span>
1216
+ <span class="cline-any cline-yes">3276x</span>
1217
+ <span class="cline-any cline-neutral">&nbsp;</span>
1218
+ <span class="cline-any cline-yes">88x</span>
1219
+ <span class="cline-any cline-neutral">&nbsp;</span>
1220
+ <span class="cline-any cline-neutral">&nbsp;</span>
1221
+ <span class="cline-any cline-neutral">&nbsp;</span>
1222
+ <span class="cline-any cline-neutral">&nbsp;</span>
1223
+ <span class="cline-any cline-yes">88x</span>
1224
+ <span class="cline-any cline-yes">88x</span>
1225
+ <span class="cline-any cline-yes">88x</span>
1226
+ <span class="cline-any cline-neutral">&nbsp;</span>
1227
+ <span class="cline-any cline-yes">88x</span>
1228
+ <span class="cline-any cline-yes">2x</span>
1229
+ <span class="cline-any cline-neutral">&nbsp;</span>
1230
+ <span class="cline-any cline-yes">86x</span>
1231
+ <span class="cline-any cline-neutral">&nbsp;</span>
1232
+ <span class="cline-any cline-neutral">&nbsp;</span>
1233
+ <span class="cline-any cline-neutral">&nbsp;</span>
1234
+ <span class="cline-any cline-neutral">&nbsp;</span>
1235
+ <span class="cline-any cline-neutral">&nbsp;</span>
1236
+ <span class="cline-any cline-neutral">&nbsp;</span>
1237
+ <span class="cline-any cline-neutral">&nbsp;</span>
1238
+ <span class="cline-any cline-neutral">&nbsp;</span>
1239
+ <span class="cline-any cline-neutral">&nbsp;</span>
1240
+ <span class="cline-any cline-neutral">&nbsp;</span>
1241
+ <span class="cline-any cline-neutral">&nbsp;</span>
1242
+ <span class="cline-any cline-neutral">&nbsp;</span>
1243
+ <span class="cline-any cline-neutral">&nbsp;</span>
1244
+ <span class="cline-any cline-neutral">&nbsp;</span>
1245
+ <span class="cline-any cline-neutral">&nbsp;</span>
1246
+ <span class="cline-any cline-neutral">&nbsp;</span>
1247
+ <span class="cline-any cline-neutral">&nbsp;</span>
1248
+ <span class="cline-any cline-neutral">&nbsp;</span>
1249
+ <span class="cline-any cline-neutral">&nbsp;</span>
1250
+ <span class="cline-any cline-neutral">&nbsp;</span>
1251
+ <span class="cline-any cline-neutral">&nbsp;</span>
1252
+ <span class="cline-any cline-neutral">&nbsp;</span>
1253
+ <span class="cline-any cline-neutral">&nbsp;</span>
1254
+ <span class="cline-any cline-neutral">&nbsp;</span>
1255
+ <span class="cline-any cline-neutral">&nbsp;</span>
1256
+ <span class="cline-any cline-neutral">&nbsp;</span>
1257
+ <span class="cline-any cline-neutral">&nbsp;</span>
1258
+ <span class="cline-any cline-neutral">&nbsp;</span>
1259
+ <span class="cline-any cline-neutral">&nbsp;</span>
1260
+ <span class="cline-any cline-neutral">&nbsp;</span>
1261
+ <span class="cline-any cline-neutral">&nbsp;</span>
1262
+ <span class="cline-any cline-neutral">&nbsp;</span>
1263
+ <span class="cline-any cline-neutral">&nbsp;</span>
1264
+ <span class="cline-any cline-neutral">&nbsp;</span>
1265
+ <span class="cline-any cline-neutral">&nbsp;</span>
1266
+ <span class="cline-any cline-neutral">&nbsp;</span>
1267
+ <span class="cline-any cline-neutral">&nbsp;</span>
1268
+ <span class="cline-any cline-neutral">&nbsp;</span>
1269
+ <span class="cline-any cline-neutral">&nbsp;</span>
1270
+ <span class="cline-any cline-neutral">&nbsp;</span>
1271
+ <span class="cline-any cline-neutral">&nbsp;</span>
1272
+ <span class="cline-any cline-neutral">&nbsp;</span>
1273
+ <span class="cline-any cline-neutral">&nbsp;</span>
1274
+ <span class="cline-any cline-neutral">&nbsp;</span>
1275
+ <span class="cline-any cline-neutral">&nbsp;</span>
1276
+ <span class="cline-any cline-neutral">&nbsp;</span>
1277
+ <span class="cline-any cline-neutral">&nbsp;</span>
1278
+ <span class="cline-any cline-neutral">&nbsp;</span>
1279
+ <span class="cline-any cline-neutral">&nbsp;</span>
1280
+ <span class="cline-any cline-neutral">&nbsp;</span>
1281
+ <span class="cline-any cline-neutral">&nbsp;</span>
1282
+ <span class="cline-any cline-neutral">&nbsp;</span>
1283
+ <span class="cline-any cline-neutral">&nbsp;</span>
1284
+ <span class="cline-any cline-neutral">&nbsp;</span>
1285
+ <span class="cline-any cline-neutral">&nbsp;</span>
1286
+ <span class="cline-any cline-neutral">&nbsp;</span>
1287
+ <span class="cline-any cline-yes">86x</span>
1288
+ <span class="cline-any cline-yes">86x</span>
1289
+ <span class="cline-any cline-neutral">&nbsp;</span>
1290
+ <span class="cline-any cline-yes">86x</span>
1291
+ <span class="cline-any cline-yes">2x</span>
1292
+ <span class="cline-any cline-neutral">&nbsp;</span>
1293
+ <span class="cline-any cline-yes">2x</span>
1294
+ <span class="cline-any cline-yes">2x</span>
1295
+ <span class="cline-any cline-neutral">&nbsp;</span>
1296
+ <span class="cline-any cline-neutral">&nbsp;</span>
1297
+ <span class="cline-any cline-yes">86x</span>
1298
+ <span class="cline-any cline-yes">86x</span>
1299
+ <span class="cline-any cline-yes">2924x</span>
1300
+ <span class="cline-any cline-yes">86x</span>
1301
+ <span class="cline-any cline-yes">86x</span>
1302
+ <span class="cline-any cline-yes">86x</span>
1303
+ <span class="cline-any cline-yes">86x</span>
1304
+ <span class="cline-any cline-yes">86x</span>
1305
+ <span class="cline-any cline-yes">86x</span>
1306
+ <span class="cline-any cline-yes">83x</span>
1307
+ <span class="cline-any cline-yes">86x</span>
1308
+ <span class="cline-any cline-neutral">&nbsp;</span>
1309
+ <span class="cline-any cline-yes">86x</span>
1310
+ <span class="cline-any cline-yes">65x</span>
1311
+ <span class="cline-any cline-yes">719x</span>
1312
+ <span class="cline-any cline-yes">65x</span>
1313
+ <span class="cline-any cline-neutral">&nbsp;</span>
1314
+ <span class="cline-any cline-yes">21x</span>
1315
+ <span class="cline-any cline-neutral">&nbsp;</span>
1316
+ <span class="cline-any cline-yes">86x</span>
1317
+ <span class="cline-any cline-neutral">&nbsp;</span>
1318
+ <span class="cline-any cline-neutral">&nbsp;</span>
1319
+ <span class="cline-any cline-neutral">&nbsp;</span>
1320
+ <span class="cline-any cline-neutral">&nbsp;</span>
1321
+ <span class="cline-any cline-neutral">&nbsp;</span>
1322
+ <span class="cline-any cline-neutral">&nbsp;</span>
1323
+ <span class="cline-any cline-neutral">&nbsp;</span>
1324
+ <span class="cline-any cline-neutral">&nbsp;</span>
1325
+ <span class="cline-any cline-neutral">&nbsp;</span>
1326
+ <span class="cline-any cline-neutral">&nbsp;</span>
1327
+ <span class="cline-any cline-neutral">&nbsp;</span>
1328
+ <span class="cline-any cline-neutral">&nbsp;</span>
1329
+ <span class="cline-any cline-neutral">&nbsp;</span>
1330
+ <span class="cline-any cline-neutral">&nbsp;</span>
1331
+ <span class="cline-any cline-neutral">&nbsp;</span>
1332
+ <span class="cline-any cline-neutral">&nbsp;</span>
1333
+ <span class="cline-any cline-neutral">&nbsp;</span>
1334
+ <span class="cline-any cline-neutral">&nbsp;</span>
1335
+ <span class="cline-any cline-neutral">&nbsp;</span>
1336
+ <span class="cline-any cline-neutral">&nbsp;</span>
1337
+ <span class="cline-any cline-neutral">&nbsp;</span>
1338
+ <span class="cline-any cline-neutral">&nbsp;</span>
1339
+ <span class="cline-any cline-neutral">&nbsp;</span>
1340
+ <span class="cline-any cline-neutral">&nbsp;</span>
1341
+ <span class="cline-any cline-neutral">&nbsp;</span>
1342
+ <span class="cline-any cline-neutral">&nbsp;</span>
1343
+ <span class="cline-any cline-neutral">&nbsp;</span>
1344
+ <span class="cline-any cline-neutral">&nbsp;</span>
1345
+ <span class="cline-any cline-neutral">&nbsp;</span>
1346
+ <span class="cline-any cline-neutral">&nbsp;</span>
1347
+ <span class="cline-any cline-neutral">&nbsp;</span>
1348
+ <span class="cline-any cline-neutral">&nbsp;</span>
1349
+ <span class="cline-any cline-neutral">&nbsp;</span>
1350
+ <span class="cline-any cline-neutral">&nbsp;</span>
1351
+ <span class="cline-any cline-neutral">&nbsp;</span>
1352
+ <span class="cline-any cline-neutral">&nbsp;</span>
1353
+ <span class="cline-any cline-neutral">&nbsp;</span>
1354
+ <span class="cline-any cline-yes">86x</span>
1355
+ <span class="cline-any cline-neutral">&nbsp;</span>
1356
+ <span class="cline-any cline-neutral">&nbsp;</span>
1357
+ <span class="cline-any cline-neutral">&nbsp;</span>
1358
+ <span class="cline-any cline-yes">86x</span>
1359
+ <span class="cline-any cline-yes">178x</span>
1360
+ <span class="cline-any cline-yes">86x</span>
1361
+ <span class="cline-any cline-yes">86x</span>
1362
+ <span class="cline-any cline-no">&nbsp;</span>
1363
+ <span class="cline-any cline-yes">86x</span>
1364
+ <span class="cline-any cline-no">&nbsp;</span>
1365
+ <span class="cline-any cline-no">&nbsp;</span>
1366
+ <span class="cline-any cline-no">&nbsp;</span>
1367
+ <span class="cline-any cline-neutral">&nbsp;</span>
1368
+ <span class="cline-any cline-neutral">&nbsp;</span>
1369
+ <span class="cline-any cline-yes">86x</span>
1370
+ <span class="cline-any cline-yes">44x</span>
1371
+ <span class="cline-any cline-yes">44x</span>
1372
+ <span class="cline-any cline-neutral">&nbsp;</span>
1373
+ <span class="cline-any cline-no">&nbsp;</span>
1374
+ <span class="cline-any cline-no">&nbsp;</span>
1375
+ <span class="cline-any cline-neutral">&nbsp;</span>
1376
+ <span class="cline-any cline-yes">44x</span>
1377
+ <span class="cline-any cline-neutral">&nbsp;</span>
1378
+ <span class="cline-any cline-neutral">&nbsp;</span>
1379
+ <span class="cline-any cline-yes">86x</span>
1380
+ <span class="cline-any cline-neutral">&nbsp;</span>
1381
+ <span class="cline-any cline-yes">47x</span>
1382
+ <span class="cline-any cline-yes">47x</span>
1383
+ <span class="cline-any cline-yes">47x</span>
1384
+ <span class="cline-any cline-neutral">&nbsp;</span>
1385
+ <span class="cline-any cline-yes">47x</span>
1386
+ <span class="cline-any cline-yes">47x</span>
1387
+ <span class="cline-any cline-yes">9x</span>
1388
+ <span class="cline-any cline-neutral">&nbsp;</span>
1389
+ <span class="cline-any cline-yes">47x</span>
1390
+ <span class="cline-any cline-neutral">&nbsp;</span>
1391
+ <span class="cline-any cline-yes">47x</span>
1392
+ <span class="cline-any cline-neutral">&nbsp;</span>
1393
+ <span class="cline-any cline-yes">14x</span>
1394
+ <span class="cline-any cline-yes">14x</span>
1395
+ <span class="cline-any cline-neutral">&nbsp;</span>
1396
+ <span class="cline-any cline-yes">14x</span>
1397
+ <span class="cline-any cline-neutral">&nbsp;</span>
1398
+ <span class="cline-any cline-neutral">&nbsp;</span>
1399
+ <span class="cline-any cline-yes">14x</span>
1400
+ <span class="cline-any cline-yes">6x</span>
1401
+ <span class="cline-any cline-yes">6x</span>
1402
+ <span class="cline-any cline-yes">6x</span>
1403
+ <span class="cline-any cline-yes">6x</span>
1404
+ <span class="cline-any cline-yes">6x</span>
1405
+ <span class="cline-any cline-no">&nbsp;</span>
1406
+ <span class="cline-any cline-no">&nbsp;</span>
1407
+ <span class="cline-any cline-no">&nbsp;</span>
1408
+ <span class="cline-any cline-no">&nbsp;</span>
1409
+ <span class="cline-any cline-neutral">&nbsp;</span>
1410
+ <span class="cline-any cline-yes">6x</span>
1411
+ <span class="cline-any cline-yes">6x</span>
1412
+ <span class="cline-any cline-yes">6x</span>
1413
+ <span class="cline-any cline-neutral">&nbsp;</span>
1414
+ <span class="cline-any cline-yes">8x</span>
1415
+ <span class="cline-any cline-yes">14x</span>
1416
+ <span class="cline-any cline-yes">14x</span>
1417
+ <span class="cline-any cline-yes">14x</span>
1418
+ <span class="cline-any cline-neutral">&nbsp;</span>
1419
+ <span class="cline-any cline-neutral">&nbsp;</span>
1420
+ <span class="cline-any cline-yes">33x</span>
1421
+ <span class="cline-any cline-yes">33x</span>
1422
+ <span class="cline-any cline-neutral">&nbsp;</span>
1423
+ <span class="cline-any cline-yes">33x</span>
1424
+ <span class="cline-any cline-yes">24x</span>
1425
+ <span class="cline-any cline-neutral">&nbsp;</span>
1426
+ <span class="cline-any cline-neutral">&nbsp;</span>
1427
+ <span class="cline-any cline-yes">86x</span>
1428
+ <span class="cline-any cline-yes">7x</span>
1429
+ <span class="cline-any cline-yes">7x</span>
1430
+ <span class="cline-any cline-yes">7x</span>
1431
+ <span class="cline-any cline-neutral">&nbsp;</span>
1432
+ <span class="cline-any cline-yes">86x</span>
1433
+ <span class="cline-any cline-yes">86x</span>
1434
+ <span class="cline-any cline-neutral">&nbsp;</span>
1435
+ <span class="cline-any cline-yes">86x</span>
1436
+ <span class="cline-any cline-yes">86x</span>
1437
+ <span class="cline-any cline-neutral">&nbsp;</span>
1438
+ <span class="cline-any cline-yes">86x</span>
1439
+ <span class="cline-any cline-yes">86x</span>
1440
+ <span class="cline-any cline-yes">14x</span>
1441
+ <span class="cline-any cline-yes">14x</span>
1442
+ <span class="cline-any cline-yes">14x</span>
1443
+ <span class="cline-any cline-yes">14x</span>
1444
+ <span class="cline-any cline-yes">14x</span>
1445
+ <span class="cline-any cline-yes">14x</span>
1446
+ <span class="cline-any cline-neutral">&nbsp;</span>
1447
+ <span class="cline-any cline-neutral">&nbsp;</span>
1448
+ <span class="cline-any cline-yes">86x</span>
1449
+ <span class="cline-any cline-neutral">&nbsp;</span>
1450
+ <span class="cline-any cline-yes">86x</span>
1451
+ <span class="cline-any cline-yes">86x</span>
1452
+ <span class="cline-any cline-yes">86x</span>
1453
+ <span class="cline-any cline-neutral">&nbsp;</span>
1454
+ <span class="cline-any cline-neutral">&nbsp;</span>
1455
+ <span class="cline-any cline-neutral">&nbsp;</span>
1456
+ <span class="cline-any cline-neutral">&nbsp;</span>
1457
+ <span class="cline-any cline-yes">13x</span>
1458
+ <span class="cline-any cline-yes">13x</span>
1459
+ <span class="cline-any cline-yes">13x</span>
1460
+ <span class="cline-any cline-yes">13x</span>
1461
+ <span class="cline-any cline-yes">13x</span>
1462
+ <span class="cline-any cline-yes">13x</span>
1463
+ <span class="cline-any cline-neutral">&nbsp;</span>
1464
+ <span class="cline-any cline-yes">13x</span>
1465
+ <span class="cline-any cline-yes">13x</span>
1466
+ <span class="cline-any cline-neutral">&nbsp;</span>
1467
+ <span class="cline-any cline-neutral">&nbsp;</span>
1468
+ <span class="cline-any cline-no">&nbsp;</span>
1469
+ <span class="cline-any cline-neutral">&nbsp;</span>
1470
+ <span class="cline-any cline-yes">13x</span>
1471
+ <span class="cline-any cline-neutral">&nbsp;</span>
1472
+ <span class="cline-any cline-yes">13x</span>
1473
+ <span class="cline-any cline-neutral">&nbsp;</span>
1474
+ <span class="cline-any cline-yes">13x</span>
1475
+ <span class="cline-any cline-neutral">&nbsp;</span>
1476
+ <span class="cline-any cline-neutral">&nbsp;</span>
1477
+ <span class="cline-any cline-neutral">&nbsp;</span>
1478
+ <span class="cline-any cline-neutral">&nbsp;</span>
1479
+ <span class="cline-any cline-yes">7x</span>
1480
+ <span class="cline-any cline-yes">2x</span>
1481
+ <span class="cline-any cline-neutral">&nbsp;</span>
1482
+ <span class="cline-any cline-yes">5x</span>
1483
+ <span class="cline-any cline-neutral">&nbsp;</span>
1484
+ <span class="cline-any cline-yes">3x</span>
1485
+ <span class="cline-any cline-neutral">&nbsp;</span>
1486
+ <span class="cline-any cline-yes">2x</span>
1487
+ <span class="cline-any cline-yes">2x</span>
1488
+ <span class="cline-any cline-yes">1x</span>
1489
+ <span class="cline-any cline-yes">1x</span>
1490
+ <span class="cline-any cline-neutral">&nbsp;</span>
1491
+ <span class="cline-any cline-yes">314x</span>
1492
+ <span class="cline-any cline-neutral">&nbsp;</span>
1493
+ <span class="cline-any cline-neutral">&nbsp;</span>
1494
+ <span class="cline-any cline-yes">17x</span>
1495
+ <span class="cline-any cline-yes">259x</span>
1496
+ <span class="cline-any cline-yes">263x</span>
1497
+ <span class="cline-any cline-yes">263x</span>
1498
+ <span class="cline-any cline-yes">263x</span>
1499
+ <span class="cline-any cline-yes">2x</span>
1500
+ <span class="cline-any cline-yes">2x</span>
1501
+ <span class="cline-any cline-yes">2x</span>
1502
+ <span class="cline-any cline-yes">2x</span>
1503
+ <span class="cline-any cline-neutral">&nbsp;</span>
1504
+ <span class="cline-any cline-yes">620x</span>
1505
+ <span class="cline-any cline-neutral">&nbsp;</span>
1506
+ <span class="cline-any cline-neutral">&nbsp;</span>
1507
+ <span class="cline-any cline-neutral">&nbsp;</span>
1508
+ <span class="cline-any cline-neutral">&nbsp;</span>
1509
+ <span class="cline-any cline-neutral">&nbsp;</span>
1510
+ <span class="cline-any cline-neutral">&nbsp;</span>
1511
+ <span class="cline-any cline-neutral">&nbsp;</span>
1512
+ <span class="cline-any cline-neutral">&nbsp;</span>
1513
+ <span class="cline-any cline-neutral">&nbsp;</span>
1514
+ <span class="cline-any cline-neutral">&nbsp;</span>
1515
+ <span class="cline-any cline-neutral">&nbsp;</span>
1516
+ <span class="cline-any cline-neutral">&nbsp;</span>
1517
+ <span class="cline-any cline-yes">473x</span>
1518
+ <span class="cline-any cline-yes">214x</span>
1519
+ <span class="cline-any cline-yes">259x</span>
1520
+ <span class="cline-any cline-neutral">&nbsp;</span>
1521
+ <span class="cline-any cline-neutral">&nbsp;</span>
1522
+ <span class="cline-any cline-neutral">&nbsp;</span>
1523
+ <span class="cline-any cline-neutral">&nbsp;</span>
1524
+ <span class="cline-any cline-neutral">&nbsp;</span>
1525
+ <span class="cline-any cline-yes">259x</span>
1526
+ <span class="cline-any cline-neutral">&nbsp;</span>
1527
+ <span class="cline-any cline-yes">263x</span>
1528
+ <span class="cline-any cline-yes">263x</span>
1529
+ <span class="cline-any cline-yes">263x</span>
1530
+ <span class="cline-any cline-yes">465x</span>
1531
+ <span class="cline-any cline-yes">1436x</span>
1532
+ <span class="cline-any cline-yes">414x</span>
1533
+ <span class="cline-any cline-yes">263x</span>
1534
+ <span class="cline-any cline-yes">104x</span>
1535
+ <span class="cline-any cline-yes">263x</span>
1536
+ <span class="cline-any cline-yes">263x</span>
1537
+ <span class="cline-any cline-yes">263x</span>
1538
+ <span class="cline-any cline-yes">263x</span>
1539
+ <span class="cline-any cline-yes">18x</span>
1540
+ <span class="cline-any cline-yes">4x</span>
1541
+ <span class="cline-any cline-neutral">&nbsp;</span>
1542
+ <span class="cline-any cline-yes">14x</span>
1543
+ <span class="cline-any cline-yes">18x</span>
1544
+ <span class="cline-any cline-yes">18x</span>
1545
+ <span class="cline-any cline-yes">18x</span>
1546
+ <span class="cline-any cline-neutral">&nbsp;</span>
1547
+ <span class="cline-any cline-yes">245x</span>
1548
+ <span class="cline-any cline-yes">11x</span>
1549
+ <span class="cline-any cline-yes">11x</span>
1550
+ <span class="cline-any cline-yes">11x</span>
1551
+ <span class="cline-any cline-neutral">&nbsp;</span>
1552
+ <span class="cline-any cline-neutral">&nbsp;</span>
1553
+ <span class="cline-any cline-yes">234x</span>
1554
+ <span class="cline-any cline-yes">234x</span>
1555
+ <span class="cline-any cline-yes">234x</span>
1556
+ <span class="cline-any cline-neutral">&nbsp;</span>
1557
+ <span class="cline-any cline-yes">11x</span>
1558
+ <span class="cline-any cline-yes">11x</span>
1559
+ <span class="cline-any cline-neutral">&nbsp;</span>
1560
+ <span class="cline-any cline-neutral">&nbsp;</span>
1561
+ <span class="cline-any cline-yes">223x</span>
1562
+ <span class="cline-any cline-yes">223x</span>
1563
+ <span class="cline-any cline-yes">223x</span>
1564
+ <span class="cline-any cline-neutral">&nbsp;</span>
1565
+ <span class="cline-any cline-neutral">&nbsp;</span>
1566
+ <span class="cline-any cline-yes">252x</span>
1567
+ <span class="cline-any cline-neutral">&nbsp;</span>
1568
+ <span class="cline-any cline-neutral">&nbsp;</span>
1569
+ <span class="cline-any cline-neutral">&nbsp;</span>
1570
+ <span class="cline-any cline-neutral">&nbsp;</span>
1571
+ <span class="cline-any cline-yes">3860x</span>
1572
+ <span class="cline-any cline-yes">3860x</span>
1573
+ <span class="cline-any cline-neutral">&nbsp;</span>
1574
+ <span class="cline-any cline-yes">17x</span>
1575
+ <span class="cline-any cline-neutral">&nbsp;</span>
1576
+ <span class="cline-any cline-yes">88x</span>
1577
+ <span class="cline-any cline-yes">70x</span>
1578
+ <span class="cline-any cline-yes">18x</span>
1579
+ <span class="cline-any cline-yes">5x</span>
1580
+ <span class="cline-any cline-yes">5x</span>
1581
+ <span class="cline-any cline-yes">5x</span>
1582
+ <span class="cline-any cline-neutral">&nbsp;</span>
1583
+ <span class="cline-any cline-yes">13x</span>
1584
+ <span class="cline-any cline-yes">13x</span>
1585
+ <span class="cline-any cline-yes">13x</span>
1586
+ <span class="cline-any cline-no">&nbsp;</span>
1587
+ <span class="cline-any cline-neutral">&nbsp;</span>
1588
+ <span class="cline-any cline-yes">13x</span>
1589
+ <span class="cline-any cline-yes">13x</span>
1590
+ <span class="cline-any cline-yes">11x</span>
1591
+ <span class="cline-any cline-yes">3x</span>
1592
+ <span class="cline-any cline-neutral">&nbsp;</span>
1593
+ <span class="cline-any cline-neutral">&nbsp;</span>
1594
+ <span class="cline-any cline-yes">2x</span>
1595
+ <span class="cline-any cline-neutral">&nbsp;</span>
1596
+ <span class="cline-any cline-yes">13x</span>
1597
+ <span class="cline-any cline-yes">13x</span>
1598
+ <span class="cline-any cline-neutral">&nbsp;</span>
1599
+ <span class="cline-any cline-yes">13x</span>
1600
+ <span class="cline-any cline-yes">4x</span>
1601
+ <span class="cline-any cline-yes">4x</span>
1602
+ <span class="cline-any cline-yes">2x</span>
1603
+ <span class="cline-any cline-yes">2x</span>
1604
+ <span class="cline-any cline-yes">2x</span>
1605
+ <span class="cline-any cline-neutral">&nbsp;</span>
1606
+ <span class="cline-any cline-yes">9x</span>
1607
+ <span class="cline-any cline-no">&nbsp;</span>
1608
+ <span class="cline-any cline-neutral">&nbsp;</span>
1609
+ <span class="cline-any cline-neutral">&nbsp;</span>
1610
+ <span class="cline-any cline-yes">3392x</span>
1611
+ <span class="cline-any cline-yes">8477x</span>
1612
+ <span class="cline-any cline-yes">8477x</span>
1613
+ <span class="cline-any cline-yes">8477x</span>
1614
+ <span class="cline-any cline-yes">2281x</span>
1615
+ <span class="cline-any cline-yes">6196x</span>
1616
+ <span class="cline-any cline-no">&nbsp;</span>
1617
+ <span class="cline-any cline-no">&nbsp;</span>
1618
+ <span class="cline-any cline-neutral">&nbsp;</span>
1619
+ <span class="cline-any cline-yes">6196x</span>
1620
+ <span class="cline-any cline-yes">238x</span>
1621
+ <span class="cline-any cline-neutral">&nbsp;</span>
1622
+ <span class="cline-any cline-yes">6196x</span>
1623
+ <span class="cline-any cline-yes">146x</span>
1624
+ <span class="cline-any cline-neutral">&nbsp;</span>
1625
+ <span class="cline-any cline-no">&nbsp;</span>
1626
+ <span class="cline-any cline-yes">3392x</span>
1627
+ <span class="cline-any cline-yes">3392x</span>
1628
+ <span class="cline-any cline-yes">3392x</span>
1629
+ <span class="cline-any cline-yes">3392x</span>
1630
+ <span class="cline-any cline-yes">8493x</span>
1631
+ <span class="cline-any cline-yes">16x</span>
1632
+ <span class="cline-any cline-neutral">&nbsp;</span>
1633
+ <span class="cline-any cline-neutral">&nbsp;</span>
1634
+ <span class="cline-any cline-neutral">&nbsp;</span>
1635
+ <span class="cline-any cline-yes">3843x</span>
1636
+ <span class="cline-any cline-yes">3843x</span>
1637
+ <span class="cline-any cline-neutral">&nbsp;</span>
1638
+ <span class="cline-any cline-yes">8472x</span>
1639
+ <span class="cline-any cline-yes">8472x</span>
1640
+ <span class="cline-any cline-yes">7510x</span>
1641
+ <span class="cline-any cline-yes">3062x</span>
1642
+ <span class="cline-any cline-yes">3062x</span>
1643
+ <span class="cline-any cline-yes">11x</span>
1644
+ <span class="cline-any cline-neutral">&nbsp;</span>
1645
+ <span class="cline-any cline-yes">4448x</span>
1646
+ <span class="cline-any cline-neutral">&nbsp;</span>
1647
+ <span class="cline-any cline-yes">962x</span>
1648
+ <span class="cline-any cline-yes">962x</span>
1649
+ <span class="cline-any cline-yes">251x</span>
1650
+ <span class="cline-any cline-neutral">&nbsp;</span>
1651
+ <span class="cline-any cline-yes">8472x</span>
1652
+ <span class="cline-any cline-neutral">&nbsp;</span>
1653
+ <span class="cline-any cline-neutral">&nbsp;</span>
1654
+ <span class="cline-any cline-neutral">&nbsp;</span>
1655
+ <span class="cline-any cline-neutral">&nbsp;</span>
1656
+ <span class="cline-any cline-yes">262x</span>
1657
+ <span class="cline-any cline-yes">262x</span>
1658
+ <span class="cline-any cline-yes">1354x</span>
1659
+ <span class="cline-any cline-yes">16x</span>
1660
+ <span class="cline-any cline-yes">246x</span>
1661
+ <span class="cline-any cline-neutral">&nbsp;</span>
1662
+ <span class="cline-any cline-neutral">&nbsp;</span>
1663
+ <span class="cline-any cline-neutral">&nbsp;</span>
1664
+ <span class="cline-any cline-yes">2768x</span>
1665
+ <span class="cline-any cline-no">&nbsp;</span>
1666
+ <span class="cline-any cline-yes">2768x</span>
1667
+ <span class="cline-any cline-yes">8x</span>
1668
+ <span class="cline-any cline-neutral">&nbsp;</span>
1669
+ <span class="cline-any cline-yes">2760x</span>
1670
+ <span class="cline-any cline-yes">2760x</span>
1671
+ <span class="cline-any cline-yes">5887x</span>
1672
+ <span class="cline-any cline-yes">5887x</span>
1673
+ <span class="cline-any cline-yes">2578x</span>
1674
+ <span class="cline-any cline-yes">2578x</span>
1675
+ <span class="cline-any cline-neutral">&nbsp;</span>
1676
+ <span class="cline-any cline-yes">3309x</span>
1677
+ <span class="cline-any cline-neutral">&nbsp;</span>
1678
+ <span class="cline-any cline-yes">2760x</span>
1679
+ <span class="cline-any cline-yes">6120x</span>
1680
+ <span class="cline-any cline-yes">6120x</span>
1681
+ <span class="cline-any cline-yes">6120x</span>
1682
+ <span class="cline-any cline-yes">5858x</span>
1683
+ <span class="cline-any cline-yes">2571x</span>
1684
+ <span class="cline-any cline-yes">174x</span>
1685
+ <span class="cline-any cline-neutral">&nbsp;</span>
1686
+ <span class="cline-any cline-yes">3287x</span>
1687
+ <span class="cline-any cline-yes">3287x</span>
1688
+ <span class="cline-any cline-yes">2480x</span>
1689
+ <span class="cline-any cline-neutral">&nbsp;</span>
1690
+ <span class="cline-any cline-yes">5858x</span>
1691
+ <span class="cline-any cline-neutral">&nbsp;</span>
1692
+ <span class="cline-any cline-yes">262x</span>
1693
+ <span class="cline-any cline-neutral">&nbsp;</span>
1694
+ <span class="cline-any cline-yes">2760x</span>
1695
+ <span class="cline-any cline-yes">29x</span>
1696
+ <span class="cline-any cline-yes">29x</span>
1697
+ <span class="cline-any cline-neutral">&nbsp;</span>
1698
+ <span class="cline-any cline-neutral">&nbsp;</span>
1699
+ <span class="cline-any cline-yes">1x</span>
1700
+ <span class="cline-any cline-yes">1x</span>
1701
+ <span class="cline-any cline-yes">1x</span>
1702
+ <span class="cline-any cline-neutral">&nbsp;</span>
1703
+ <span class="cline-any cline-yes">17x</span>
1704
+ <span class="cline-any cline-yes">7x</span>
1705
+ <span class="cline-any cline-yes">7x</span>
1706
+ <span class="cline-any cline-neutral">&nbsp;</span>
1707
+ <span class="cline-any cline-yes">17x</span>
1708
+ <span class="cline-any cline-yes">125x</span>
1709
+ <span class="cline-any cline-yes">59x</span>
1710
+ <span class="cline-any cline-yes">66x</span>
1711
+ <span class="cline-any cline-yes">66x</span>
1712
+ <span class="cline-any cline-yes">66x</span>
1713
+ <span class="cline-any cline-neutral">&nbsp;</span>
1714
+ <span class="cline-any cline-yes">66x</span>
1715
+ <span class="cline-any cline-neutral">&nbsp;</span>
1716
+ <span class="cline-any cline-neutral">&nbsp;</span>
1717
+ <span class="cline-any cline-yes">17x</span>
1718
+ <span class="cline-any cline-neutral">&nbsp;</span>
1719
+ <span class="cline-any cline-yes">60x</span>
1720
+ <span class="cline-any cline-yes">60x</span>
1721
+ <span class="cline-any cline-yes">8x</span>
1722
+ <span class="cline-any cline-neutral">&nbsp;</span>
1723
+ <span class="cline-any cline-yes">52x</span>
1724
+ <span class="cline-any cline-neutral">&nbsp;</span>
1725
+ <span class="cline-any cline-yes">52x</span>
1726
+ <span class="cline-any cline-yes">52x</span>
1727
+ <span class="cline-any cline-yes">4x</span>
1728
+ <span class="cline-any cline-yes">26x</span>
1729
+ <span class="cline-any cline-yes">4x</span>
1730
+ <span class="cline-any cline-neutral">&nbsp;</span>
1731
+ <span class="cline-any cline-neutral">&nbsp;</span>
1732
+ <span class="cline-any cline-yes">18x</span>
1733
+ <span class="cline-any cline-yes">18x</span>
1734
+ <span class="cline-any cline-yes">14x</span>
1735
+ <span class="cline-any cline-yes">18x</span>
1736
+ <span class="cline-any cline-neutral">&nbsp;</span>
1737
+ <span class="cline-any cline-yes">17x</span>
1738
+ <span class="cline-any cline-yes">17x</span>
1739
+ <span class="cline-any cline-yes">151x</span>
1740
+ <span class="cline-any cline-yes">151x</span>
1741
+ <span class="cline-any cline-yes">155x</span>
1742
+ <span class="cline-any cline-yes">151x</span>
1743
+ <span class="cline-any cline-yes">297x</span>
1744
+ <span class="cline-any cline-yes">151x</span>
1745
+ <span class="cline-any cline-yes">54x</span>
1746
+ <span class="cline-any cline-yes">54x</span>
1747
+ <span class="cline-any cline-yes">36x</span>
1748
+ <span class="cline-any cline-yes">18x</span>
1749
+ <span class="cline-any cline-yes">18x</span>
1750
+ <span class="cline-any cline-yes">18x</span>
1751
+ <span class="cline-any cline-neutral">&nbsp;</span>
1752
+ <span class="cline-any cline-yes">151x</span>
1753
+ <span class="cline-any cline-yes">68x</span>
1754
+ <span class="cline-any cline-neutral">&nbsp;</span>
1755
+ <span class="cline-any cline-yes">83x</span>
1756
+ <span class="cline-any cline-yes">83x</span>
1757
+ <span class="cline-any cline-yes">83x</span>
1758
+ <span class="cline-any cline-yes">1125x</span>
1759
+ <span class="cline-any cline-yes">83x</span>
1760
+ <span class="cline-any cline-neutral">&nbsp;</span>
1761
+ <span class="cline-any cline-yes">83x</span>
1762
+ <span class="cline-any cline-neutral">&nbsp;</span>
1763
+ <span class="cline-any cline-neutral">&nbsp;</span>
1764
+ <span class="cline-any cline-neutral">&nbsp;</span>
1765
+ <span class="cline-any cline-neutral">&nbsp;</span>
1766
+ <span class="cline-any cline-neutral">&nbsp;</span>
1767
+ <span class="cline-any cline-neutral">&nbsp;</span>
1768
+ <span class="cline-any cline-yes">17x</span>
1769
+ <span class="cline-any cline-neutral">&nbsp;</span>
1770
+ <span class="cline-any cline-neutral">&nbsp;</span>
1771
+ <span class="cline-any cline-yes">88x</span>
1772
+ <span class="cline-any cline-yes">12x</span>
1773
+ <span class="cline-any cline-yes">88x</span>
1774
+ <span class="cline-any cline-yes">88x</span>
1775
+ <span class="cline-any cline-yes">88x</span>
1776
+ <span class="cline-any cline-neutral">&nbsp;</span>
1777
+ <span class="cline-any cline-yes">88x</span>
1778
+ <span class="cline-any cline-yes">88x</span>
1779
+ <span class="cline-any cline-yes">7x</span>
1780
+ <span class="cline-any cline-yes">7x</span>
1781
+ <span class="cline-any cline-yes">7x</span>
1782
+ <span class="cline-any cline-yes">7x</span>
1783
+ <span class="cline-any cline-neutral">&nbsp;</span>
1784
+ <span class="cline-any cline-yes">88x</span>
1785
+ <span class="cline-any cline-yes">88x</span>
1786
+ <span class="cline-any cline-yes">88x</span>
1787
+ <span class="cline-any cline-yes">88x</span>
1788
+ <span class="cline-any cline-neutral">&nbsp;</span>
1789
+ <span class="cline-any cline-no">&nbsp;</span>
1790
+ <span class="cline-any cline-yes">88x</span>
1791
+ <span class="cline-any cline-neutral">&nbsp;</span>
1792
+ <span class="cline-any cline-neutral">&nbsp;</span>
1793
+ <span class="cline-any cline-yes">88x</span>
1794
+ <span class="cline-any cline-neutral">&nbsp;</span>
1795
+ <span class="cline-any cline-yes">88x</span>
1796
+ <span class="cline-any cline-yes">88x</span>
1797
+ <span class="cline-any cline-yes">88x</span>
1798
+ <span class="cline-any cline-yes">81x</span>
1799
+ <span class="cline-any cline-yes">80x</span>
1800
+ <span class="cline-any cline-neutral">&nbsp;</span>
1801
+ <span class="cline-any cline-neutral">&nbsp;</span>
1802
+ <span class="cline-any cline-yes">88x</span>
1803
+ <span class="cline-any cline-yes">88x</span>
1804
+ <span class="cline-any cline-neutral">&nbsp;</span>
1805
+ <span class="cline-any cline-neutral">&nbsp;</span>
1806
+ <span class="cline-any cline-neutral">&nbsp;</span>
1807
+ <span class="cline-any cline-yes">88x</span>
1808
+ <span class="cline-any cline-yes">98x</span>
1809
+ <span class="cline-any cline-no">&nbsp;</span>
1810
+ <span class="cline-any cline-neutral">&nbsp;</span>
1811
+ <span class="cline-any cline-yes">99x</span>
1812
+ <span class="cline-any cline-yes">99x</span>
1813
+ <span class="cline-any cline-neutral">&nbsp;</span>
1814
+ <span class="cline-any cline-yes">34x</span>
1815
+ <span class="cline-any cline-no">&nbsp;</span>
1816
+ <span class="cline-any cline-yes">34x</span>
1817
+ <span class="cline-any cline-yes">34x</span>
1818
+ <span class="cline-any cline-yes">34x</span>
1819
+ <span class="cline-any cline-neutral">&nbsp;</span>
1820
+ <span class="cline-any cline-yes">34x</span>
1821
+ <span class="cline-any cline-yes">226x</span>
1822
+ <span class="cline-any cline-yes">1x</span>
1823
+ <span class="cline-any cline-yes">1x</span>
1824
+ <span class="cline-any cline-yes">1x</span>
1825
+ <span class="cline-any cline-neutral">&nbsp;</span>
1826
+ <span class="cline-any cline-yes">225x</span>
1827
+ <span class="cline-any cline-yes">193x</span>
1828
+ <span class="cline-any cline-yes">32x</span>
1829
+ <span class="cline-any cline-yes">20x</span>
1830
+ <span class="cline-any cline-neutral">&nbsp;</span>
1831
+ <span class="cline-any cline-yes">99x</span>
1832
+ <span class="cline-any cline-yes">255x</span>
1833
+ <span class="cline-any cline-yes">255x</span>
1834
+ <span class="cline-any cline-yes">178x</span>
1835
+ <span class="cline-any cline-yes">255x</span>
1836
+ <span class="cline-any cline-neutral">&nbsp;</span>
1837
+ <span class="cline-any cline-yes">99x</span>
1838
+ <span class="cline-any cline-yes">99x</span>
1839
+ <span class="cline-any cline-yes">99x</span>
1840
+ <span class="cline-any cline-yes">99x</span>
1841
+ <span class="cline-any cline-yes">156x</span>
1842
+ <span class="cline-any cline-yes">99x</span>
1843
+ <span class="cline-any cline-yes">99x</span>
1844
+ <span class="cline-any cline-yes">99x</span>
1845
+ <span class="cline-any cline-yes">99x</span>
1846
+ <span class="cline-any cline-neutral">&nbsp;</span>
1847
+ <span class="cline-any cline-yes">99x</span>
1848
+ <span class="cline-any cline-yes">99x</span>
1849
+ <span class="cline-any cline-yes">99x</span>
1850
+ <span class="cline-any cline-yes">99x</span>
1851
+ <span class="cline-any cline-neutral">&nbsp;</span>
1852
+ <span class="cline-any cline-yes">99x</span>
1853
+ <span class="cline-any cline-yes">99x</span>
1854
+ <span class="cline-any cline-yes">244x</span>
1855
+ <span class="cline-any cline-neutral">&nbsp;</span>
1856
+ <span class="cline-any cline-yes">244x</span>
1857
+ <span class="cline-any cline-yes">257x</span>
1858
+ <span class="cline-any cline-yes">257x</span>
1859
+ <span class="cline-any cline-yes">17x</span>
1860
+ <span class="cline-any cline-yes">240x</span>
1861
+ <span class="cline-any cline-yes">240x</span>
1862
+ <span class="cline-any cline-neutral">&nbsp;</span>
1863
+ <span class="cline-any cline-yes">244x</span>
1864
+ <span class="cline-any cline-yes">244x</span>
1865
+ <span class="cline-any cline-neutral">&nbsp;</span>
1866
+ <span class="cline-any cline-neutral">&nbsp;</span>
1867
+ <span class="cline-any cline-neutral">&nbsp;</span>
1868
+ <span class="cline-any cline-yes">99x</span>
1869
+ <span class="cline-any cline-yes">258x</span>
1870
+ <span class="cline-any cline-yes">258x</span>
1871
+ <span class="cline-any cline-yes">145x</span>
1872
+ <span class="cline-any cline-yes">145x</span>
1873
+ <span class="cline-any cline-yes">145x</span>
1874
+ <span class="cline-any cline-neutral">&nbsp;</span>
1875
+ <span class="cline-any cline-neutral">&nbsp;</span>
1876
+ <span class="cline-any cline-yes">99x</span>
1877
+ <span class="cline-any cline-yes">269x</span>
1878
+ <span class="cline-any cline-yes">269x</span>
1879
+ <span class="cline-any cline-yes">269x</span>
1880
+ <span class="cline-any cline-neutral">&nbsp;</span>
1881
+ <span class="cline-any cline-yes">288x</span>
1882
+ <span class="cline-any cline-yes">288x</span>
1883
+ <span class="cline-any cline-yes">288x</span>
1884
+ <span class="cline-any cline-no">&nbsp;</span>
1885
+ <span class="cline-any cline-yes">288x</span>
1886
+ <span class="cline-any cline-neutral">&nbsp;</span>
1887
+ <span class="cline-any cline-yes">288x</span>
1888
+ <span class="cline-any cline-yes">288x</span>
1889
+ <span class="cline-any cline-no">&nbsp;</span>
1890
+ <span class="cline-any cline-yes">288x</span>
1891
+ <span class="cline-any cline-yes">288x</span>
1892
+ <span class="cline-any cline-neutral">&nbsp;</span>
1893
+ <span class="cline-any cline-yes">288x</span>
1894
+ <span class="cline-any cline-yes">288x</span>
1895
+ <span class="cline-any cline-yes">44x</span>
1896
+ <span class="cline-any cline-yes">7x</span>
1897
+ <span class="cline-any cline-yes">7x</span>
1898
+ <span class="cline-any cline-yes">7x</span>
1899
+ <span class="cline-any cline-neutral">&nbsp;</span>
1900
+ <span class="cline-any cline-neutral">&nbsp;</span>
1901
+ <span class="cline-any cline-neutral">&nbsp;</span>
1902
+ <span class="cline-any cline-yes">288x</span>
1903
+ <span class="cline-any cline-yes">60x</span>
1904
+ <span class="cline-any cline-yes">60x</span>
1905
+ <span class="cline-any cline-yes">22x</span>
1906
+ <span class="cline-any cline-yes">22x</span>
1907
+ <span class="cline-any cline-yes">22x</span>
1908
+ <span class="cline-any cline-neutral">&nbsp;</span>
1909
+ <span class="cline-any cline-neutral">&nbsp;</span>
1910
+ <span class="cline-any cline-yes">288x</span>
1911
+ <span class="cline-any cline-neutral">&nbsp;</span>
1912
+ <span class="cline-any cline-yes">269x</span>
1913
+ <span class="cline-any cline-yes">19x</span>
1914
+ <span class="cline-any cline-no">&nbsp;</span>
1915
+ <span class="cline-any cline-neutral">&nbsp;</span>
1916
+ <span class="cline-any cline-neutral">&nbsp;</span>
1917
+ <span class="cline-any cline-yes">576x</span>
1918
+ <span class="cline-any cline-yes">576x</span>
1919
+ <span class="cline-any cline-no">&nbsp;</span>
1920
+ <span class="cline-any cline-no">&nbsp;</span>
1921
+ <span class="cline-any cline-no">&nbsp;</span>
1922
+ <span class="cline-any cline-no">&nbsp;</span>
1923
+ <span class="cline-any cline-no">&nbsp;</span>
1924
+ <span class="cline-any cline-neutral">&nbsp;</span>
1925
+ <span class="cline-any cline-neutral">&nbsp;</span>
1926
+ <span class="cline-any cline-no">&nbsp;</span>
1927
+ <span class="cline-any cline-neutral">&nbsp;</span>
1928
+ <span class="cline-any cline-no">&nbsp;</span>
1929
+ <span class="cline-any cline-no">&nbsp;</span>
1930
+ <span class="cline-any cline-no">&nbsp;</span>
1931
+ <span class="cline-any cline-neutral">&nbsp;</span>
1932
+ <span class="cline-any cline-yes">576x</span>
1933
+ <span class="cline-any cline-neutral">&nbsp;</span>
1934
+ <span class="cline-any cline-yes">269x</span>
1935
+ <span class="cline-any cline-yes">576x</span>
1936
+ <span class="cline-any cline-yes">576x</span>
1937
+ <span class="cline-any cline-yes">576x</span>
1938
+ <span class="cline-any cline-yes">576x</span>
1939
+ <span class="cline-any cline-yes">85x</span>
1940
+ <span class="cline-any cline-yes">85x</span>
1941
+ <span class="cline-any cline-yes">3x</span>
1942
+ <span class="cline-any cline-neutral">&nbsp;</span>
1943
+ <span class="cline-any cline-yes">85x</span>
1944
+ <span class="cline-any cline-neutral">&nbsp;</span>
1945
+ <span class="cline-any cline-yes">95x</span>
1946
+ <span class="cline-any cline-yes">233x</span>
1947
+ <span class="cline-any cline-yes">233x</span>
1948
+ <span class="cline-any cline-yes">233x</span>
1949
+ <span class="cline-any cline-yes">233x</span>
1950
+ <span class="cline-any cline-neutral">&nbsp;</span>
1951
+ <span class="cline-any cline-yes">233x</span>
1952
+ <span class="cline-any cline-yes">11x</span>
1953
+ <span class="cline-any cline-yes">4x</span>
1954
+ <span class="cline-any cline-yes">7x</span>
1955
+ <span class="cline-any cline-yes">7x</span>
1956
+ <span class="cline-any cline-yes">7x</span>
1957
+ <span class="cline-any cline-yes">7x</span>
1958
+ <span class="cline-any cline-neutral">&nbsp;</span>
1959
+ <span class="cline-any cline-no">&nbsp;</span>
1960
+ <span class="cline-any cline-neutral">&nbsp;</span>
1961
+ <span class="cline-any cline-yes">233x</span>
1962
+ <span class="cline-any cline-yes">233x</span>
1963
+ <span class="cline-any cline-yes">233x</span>
1964
+ <span class="cline-any cline-neutral">&nbsp;</span>
1965
+ <span class="cline-any cline-yes">233x</span>
1966
+ <span class="cline-any cline-yes">11x</span>
1967
+ <span class="cline-any cline-yes">11x</span>
1968
+ <span class="cline-any cline-yes">11x</span>
1969
+ <span class="cline-any cline-yes">2x</span>
1970
+ <span class="cline-any cline-no">&nbsp;</span>
1971
+ <span class="cline-any cline-yes">2x</span>
1972
+ <span class="cline-any cline-yes">2x</span>
1973
+ <span class="cline-any cline-yes">1x</span>
1974
+ <span class="cline-any cline-yes">1x</span>
1975
+ <span class="cline-any cline-neutral">&nbsp;</span>
1976
+ <span class="cline-any cline-yes">1x</span>
1977
+ <span class="cline-any cline-yes">1x</span>
1978
+ <span class="cline-any cline-yes">1x</span>
1979
+ <span class="cline-any cline-neutral">&nbsp;</span>
1980
+ <span class="cline-any cline-no">&nbsp;</span>
1981
+ <span class="cline-any cline-neutral">&nbsp;</span>
1982
+ <span class="cline-any cline-yes">9x</span>
1983
+ <span class="cline-any cline-neutral">&nbsp;</span>
1984
+ <span class="cline-any cline-yes">231x</span>
1985
+ <span class="cline-any cline-neutral">&nbsp;</span>
1986
+ <span class="cline-any cline-yes">85x</span>
1987
+ <span class="cline-any cline-yes">39x</span>
1988
+ <span class="cline-any cline-yes">27x</span>
1989
+ <span class="cline-any cline-neutral">&nbsp;</span>
1990
+ <span class="cline-any cline-yes">12x</span>
1991
+ <span class="cline-any cline-neutral">&nbsp;</span>
1992
+ <span class="cline-any cline-neutral">&nbsp;</span>
1993
+ <span class="cline-any cline-neutral">&nbsp;</span>
1994
+ <span class="cline-any cline-yes">269x</span>
1995
+ <span class="cline-any cline-neutral">&nbsp;</span>
1996
+ <span class="cline-any cline-yes">99x</span>
1997
+ <span class="cline-any cline-yes">99x</span>
1998
+ <span class="cline-any cline-neutral">&nbsp;</span>
1999
+ <span class="cline-any cline-neutral">&nbsp;</span>
2000
+ <span class="cline-any cline-yes">35x</span>
2001
+ <span class="cline-any cline-no">&nbsp;</span>
2002
+ <span class="cline-any cline-yes">35x</span>
2003
+ <span class="cline-any cline-yes">35x</span>
2004
+ <span class="cline-any cline-yes">35x</span>
2005
+ <span class="cline-any cline-yes">35x</span>
2006
+ <span class="cline-any cline-neutral">&nbsp;</span>
2007
+ <span class="cline-any cline-no">&nbsp;</span>
2008
+ <span class="cline-any cline-no">&nbsp;</span>
2009
+ <span class="cline-any cline-neutral">&nbsp;</span>
2010
+ <span class="cline-any cline-yes">35x</span>
2011
+ <span class="cline-any cline-neutral">&nbsp;</span>
2012
+ <span class="cline-any cline-yes">35x</span>
2013
+ <span class="cline-any cline-neutral">&nbsp;</span>
2014
+ <span class="cline-any cline-neutral">&nbsp;</span>
2015
+ <span class="cline-any cline-yes">77x</span>
2016
+ <span class="cline-any cline-yes">71x</span>
2017
+ <span class="cline-any cline-yes">6x</span>
2018
+ <span class="cline-any cline-yes">6x</span>
2019
+ <span class="cline-any cline-neutral">&nbsp;</span>
2020
+ <span class="cline-any cline-neutral">&nbsp;</span>
2021
+ <span class="cline-any cline-no">&nbsp;</span>
2022
+ <span class="cline-any cline-neutral">&nbsp;</span>
2023
+ <span class="cline-any cline-yes">88x</span>
2024
+ <span class="cline-any cline-neutral">&nbsp;</span>
2025
+ <span class="cline-any cline-yes">88x</span>
2026
+ <span class="cline-any cline-yes">88x</span>
2027
+ <span class="cline-any cline-neutral">&nbsp;</span>
2028
+ <span class="cline-any cline-yes">88x</span>
2029
+ <span class="cline-any cline-yes">41x</span>
2030
+ <span class="cline-any cline-neutral">&nbsp;</span>
2031
+ <span class="cline-any cline-yes">47x</span>
2032
+ <span class="cline-any cline-yes">47x</span>
2033
+ <span class="cline-any cline-yes">47x</span>
2034
+ <span class="cline-any cline-yes">47x</span>
2035
+ <span class="cline-any cline-yes">80x</span>
2036
+ <span class="cline-any cline-yes">128x</span>
2037
+ <span class="cline-any cline-yes">47x</span>
2038
+ <span class="cline-any cline-neutral">&nbsp;</span>
2039
+ <span class="cline-any cline-neutral">&nbsp;</span>
2040
+ <span class="cline-any cline-yes">160x</span>
2041
+ <span class="cline-any cline-yes">3x</span>
2042
+ <span class="cline-any cline-neutral">&nbsp;</span>
2043
+ <span class="cline-any cline-yes">1x</span>
2044
+ <span class="cline-any cline-neutral">&nbsp;</span>
2045
+ <span class="cline-any cline-neutral">&nbsp;</span>
2046
+ <span class="cline-any cline-yes">17x</span>
2047
+ <span class="cline-any cline-neutral">&nbsp;</span>
2048
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const XSL_NS_URL = 'http://www.w3.org/1999/XSL/Transform'
2049
+ , HTML_NS_URL = 'http://www.w3.org/1999/xhtml'
2050
+ , EXSL_NS_URL = 'http://exslt.org/common'
2051
+ , DCE_NS_URL ="urn:schemas-epa-wg:dce";
2052
+ &nbsp;
2053
+ // const log = x =&gt; console.debug( new XMLSerializer().serializeToString( x ) );
2054
+ &nbsp;
2055
+ const attr = (el, attr)=&gt; el?.getAttribute?.(attr)
2056
+ , isText = e =&gt; e.nodeType === 3
2057
+ , isString = s =&gt; typeof s === 'string'
2058
+ , isNode = e =&gt; e &amp;&amp; typeof e.nodeType === 'number'
2059
+ , createText = ( d, t) =&gt; (d.ownerDocument || d ).createTextNode( t )
2060
+ , removeChildren = n =&gt; { while(n.firstChild) n.firstChild.remove(); return n; }
2061
+ , emptyNode = n =&gt; { n.getAttributeNames().map( a =&gt; n.removeAttribute(a) ); return removeChildren(n); }
2062
+ , xslNs = x =&gt; ( x?.setAttribute('xmlns:xsl', XSL_NS_URL ), x )
2063
+ , xslHtmlNs = x =&gt; ( x?.setAttribute('xmlns:xhtml', HTML_NS_URL ), xslNs(x) )
2064
+ , isValidTagName = tag=&gt; ( /^[_a-zA-Z][-_:a-zA-Z0-9]*$/ .test(tag) )
2065
+ , mix = (o,kv) =&gt; { Object.keys(kv).map(k=&gt; o[k] = kv[k] ) ; return o}
2066
+ , create = ( tag, t = '', d=document ) =&gt;
2067
+ {
2068
+ const create = tag =&gt; ( e =&gt; ((t &amp;&amp; e.append(createText(d.ownerDocument||d, t))),e) )((d.ownerDocument || d ).createElement( tag ))
2069
+ &nbsp;
2070
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( isValidTagName(tag) )
2071
+ return create(tag)
2072
+ const e = <span class="cstat-no" title="statement not covered" >create('dce-object');</span>
2073
+ <span class="cstat-no" title="statement not covered" > e.setAttribute('dce-object-name',tag)</span>
2074
+ <span class="cstat-no" title="statement not covered" > return e;</span>
2075
+ }
2076
+ , cloneAs = (p,tag) =&gt;
2077
+ { const px = p.ownerDocument.createElementNS(p.namespaceURI,tag);
2078
+ for( let a of p.attributes)
2079
+ px.setAttribute(a.name, a.value);
2080
+ for( let c of p.childNodes )
2081
+ px.append(c.cloneNode(true));
2082
+ return px;
2083
+ };
2084
+ &nbsp;
2085
+ export {cloneAs,mix};
2086
+ &nbsp;
2087
+ function
2088
+ ASSERT(x)
2089
+ {
2090
+ // if(!x)
2091
+ // debugger
2092
+ }
2093
+ export function
2094
+ xml2dom( xmlString )
2095
+ {
2096
+ return new DOMParser().parseFromString( xmlString, "application/xml" )
2097
+ }
2098
+ export function
2099
+ xmlString(doc){ return new XMLSerializer().serializeToString( doc ) }
2100
+ function <span class="fstat-no" title="function not covered" >x(</span>doc) { <span class="cstat-no" title="statement not covered" >return xmlString(doc) </span>}
2101
+ &nbsp;
2102
+ function
2103
+ injectData( root, sectionName, arr, cb )
2104
+ { const create = ( tag ) =&gt; root.ownerDocument.createElement( tag );
2105
+ const inject = ( tag, parent, s ) =&gt;
2106
+ { parent.append( s = create( tag ) );
2107
+ return s;
2108
+ };
2109
+ const l = inject( sectionName, root );
2110
+ [ ...arr ].forEach( e =&gt; l.append( cb( e ) ) );
2111
+ return l;
2112
+ }
2113
+ &nbsp;
2114
+ function
2115
+ assureSlot( e )
2116
+ {
2117
+ if( !e.slot )
2118
+ {
2119
+ if( !e.setAttribute )
2120
+ e = create( 'span', e.textContent.replaceAll( '\n', '' ) );
2121
+ e.setAttribute( 'slot', '' )
2122
+ }
2123
+ return e;
2124
+ }
2125
+ function
2126
+ keepAttributes(e, aNames)
2127
+ { e.getAttributeNames().forEach( n=&gt; aNames.includes(n) || e.removeAttribute(n) ); }
2128
+ &nbsp;
2129
+ export const
2130
+ sanitizeBlankText = payload=&gt; [...payload].filter(e=&gt;!(e.nodeType===3 &amp;&amp; e.data.trim() ==='' ));
2131
+ &nbsp;
2132
+ export function
2133
+ obj2node( o, tag, doc )
2134
+ { const t = typeof o;
2135
+ if( t === 'string' )
2136
+ return create(tag,o,doc);
2137
+ if( t === 'number' )
2138
+ return create(tag,''+o,doc);
2139
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( isNode(o) )
2140
+ {
2141
+ const el = <span class="cstat-no" title="statement not covered" >create(tag);</span>
2142
+ <span class="cstat-no" title="statement not covered" > el.append(o);</span>
2143
+ <span class="cstat-no" title="statement not covered" > return el;</span>
2144
+ }
2145
+ if( o instanceof Array )
2146
+ { const ret = create('array','',doc);
2147
+ o.map( ae =&gt; ret.append( obj2node(ae,tag,doc)) );
2148
+ return ret
2149
+ }
2150
+ if( o instanceof FormData )
2151
+ { const ret = create('form-data','',doc);
2152
+ for( const p of o )
2153
+ ret.append( obj2node(p[1],p[0],doc) );
2154
+ return ret
2155
+ }
2156
+ const ret = create(tag,'',doc);
2157
+ for( let k in o )
2158
+ {
2159
+ if( typeof o[ k ] === 'function' || o[ k ] instanceof Window )
2160
+ continue
2161
+ if( isNode( o[ k ] ) )
2162
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if( k === 'data' || k==='value' )
2163
+ ;
2164
+ else
2165
+ continue
2166
+ }
2167
+ if( typeof o[ k ] !== "object" &amp;&amp; isValidTagName( k ) )
2168
+ ret.setAttribute( k, o[ k ] )
2169
+ else
2170
+ ret.append( obj2node( o[ k ], k, doc ) )
2171
+ }
2172
+ return ret;
2173
+ }
2174
+ export function
2175
+ tagUid( node )
2176
+ { // {} to xsl:value-of
2177
+ forEach$(node,'*',d =&gt; [...d.childNodes]
2178
+ .filter( e =&gt; e.nodeType === 3 &amp;&amp; e.parentNode.localName !== 'style' &amp;&amp; e.data )
2179
+ .forEach( e=&gt;
2180
+ { const s = e.data,
2181
+ m = s.matchAll( /{([^}]*)}/g );
2182
+ <span class="missing-if-branch" title="else path not taken" >E</span>if(m)
2183
+ { let l = 0
2184
+ , txt = t =&gt; createText(e,t)
2185
+ , tt = [];
2186
+ [...m].forEach(t=&gt;
2187
+ { if( t.index &gt; l )
2188
+ tt.push( txt( t.input.substring( l, t.index ) ))
2189
+ const v = node.querySelector('value-of').cloneNode();
2190
+ v.setAttribute('select', t[1] );
2191
+ tt.push(v);
2192
+ l = t.index+t[0].length;
2193
+ })
2194
+ if( l &lt; s.length)
2195
+ tt.push( txt( s.substring(l,s.length) ));
2196
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( tt.length )
2197
+ { for( let t of tt )
2198
+ d.insertBefore(t,e);
2199
+ d.removeChild(e);
2200
+ }
2201
+ }
2202
+ }));
2203
+ &nbsp;
2204
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( 'all' in node ) {
2205
+ let i= 1;
2206
+ for( let e of node.all )
2207
+ e.setAttribute &amp;&amp; !e.tagName.startsWith('xsl:') &amp;&amp; e.setAttribute('data-dce-id', '' + i++)
2208
+ }
2209
+ return node
2210
+ }
2211
+ export function
2212
+ createXsltFromDom( templateNode, S = 'xsl:stylesheet' )
2213
+ {
2214
+ const declaredAttributes = []
2215
+ , hardcodedAttributes = {}
2216
+ , exposedAttributes={};
2217
+ &nbsp;
2218
+ if( templateNode.tagName === S || templateNode.documentElement?.tagName === S )
2219
+ return tagUid(mix( templateNode, { declaredAttributes, hardcodedAttributes, exposedAttributes } ));
2220
+ &nbsp;
2221
+ const sanitizeXsl = xml2dom(`&lt;xsl:stylesheet version="1.0" xmlns:xsl="${ XSL_NS_URL }" xmlns:xhtml="${ HTML_NS_URL }" xmlns:exsl="${EXSL_NS_URL}" exclude-result-prefixes="exsl" &gt;
2222
+ &lt;xsl:output method="xml"/&gt;
2223
+ &lt;xsl:template match="/"&gt;&lt;dce-root xmlns="${ HTML_NS_URL }"&gt;&lt;xsl:apply-templates select="*" /&gt;&lt;/dce-root&gt;&lt;/xsl:template&gt;
2224
+ &lt;xsl:template match="*[name()='template']"&gt;
2225
+ &lt;xsl:apply-templates mode="sanitize" select="*|text()"/&gt;
2226
+ &lt;/xsl:template&gt;
2227
+ &lt;xsl:template match="*"&gt;
2228
+ &lt;xsl:apply-templates mode="sanitize" select="*|text()"/&gt;
2229
+ &lt;/xsl:template&gt;
2230
+ &lt;xsl:template match="*[name()='svg']|*[name()='math']"&gt;
2231
+ &lt;xsl:apply-templates mode="sanitize" select="."/&gt;
2232
+ &lt;/xsl:template&gt;
2233
+ &lt;xsl:template mode="sanitize" match="*[count(text())=1 and count(*)=0]"&gt;
2234
+ &lt;xsl:copy&gt;
2235
+ &lt;xsl:apply-templates mode="sanitize" select="@*"/&gt;
2236
+ &lt;xsl:value-of select="text()"&gt;&lt;/xsl:value-of&gt;
2237
+ &lt;/xsl:copy&gt;
2238
+ &lt;/xsl:template&gt;
2239
+ &lt;xsl:template mode="sanitize" match="xhtml:*[count(text())=1 and count(*)=0]"&gt;
2240
+ &lt;xsl:element name="{local-name()}"&gt;
2241
+ &lt;xsl:apply-templates mode="sanitize" select="@*"/&gt;
2242
+ &lt;xsl:value-of select="text()"&gt;&lt;/xsl:value-of&gt;
2243
+ &lt;/xsl:element&gt;
2244
+ &lt;/xsl:template&gt;
2245
+ &lt;xsl:template mode="sanitize" match="*|@*"&gt;
2246
+ &lt;xsl:copy&gt;
2247
+ &lt;xsl:apply-templates mode="sanitize" select="*|@*|text()"/&gt;
2248
+ &lt;/xsl:copy&gt;
2249
+ &lt;/xsl:template&gt;
2250
+ &lt;xsl:template mode="sanitize" match="text()[normalize-space(.) = '']"/&gt;
2251
+ &lt;xsl:template mode="sanitize" match="text()"&gt;
2252
+ &lt;dce-text&gt;
2253
+ &lt;xsl:copy/&gt;
2254
+ &lt;/dce-text&gt;
2255
+ &lt;/xsl:template&gt;
2256
+ &lt;xsl:template mode="sanitize" match="xsl:value-of|*[name()='slot']"&gt;
2257
+ &lt;xsl:copy&gt;
2258
+ &lt;xsl:apply-templates mode="sanitize" select="*|@*|text()"/&gt;
2259
+ &lt;/xsl:copy&gt;
2260
+ &lt;/xsl:template&gt;
2261
+ &lt;xsl:template mode="sanitize" match="xhtml:*"&gt;
2262
+ &lt;xsl:element name="{local-name()}"&gt;
2263
+ &lt;xsl:apply-templates mode="sanitize" select="*|@*|text()"/&gt;
2264
+ &lt;/xsl:element&gt;
2265
+ &lt;/xsl:template&gt;
2266
+ &lt;xsl:template mode="sanitize" match="xhtml:input"&gt;
2267
+ &lt;xsl:element name="{local-name()}"&gt;
2268
+ &lt;xsl:apply-templates mode="sanitize" select="*[not(name()='slice')]|@*|text()"/&gt;
2269
+ &lt;/xsl:element&gt;
2270
+ &lt;xsl:for-each select="slice"&gt;
2271
+ &lt;xsl:copy&gt;
2272
+ &lt;xsl:attribute name="for" &gt;^&lt;/xsl:attribute&gt;
2273
+ &lt;xsl:apply-templates mode="sanitize" select="*|@*|text()"/&gt;
2274
+ &lt;/xsl:copy&gt;
2275
+ &lt;/xsl:for-each&gt;
2276
+ &lt;/xsl:template&gt;
2277
+ &lt;/xsl:stylesheet&gt;`)
2278
+ const sanitizeProcessor = new XSLTProcessor()
2279
+ , tc = (n =&gt;
2280
+ {
2281
+ forEach$(n,'custom-element', ce=&gt;{
2282
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( 'template' === ce.firstElementChild.localName )
2283
+ {
2284
+ [...ce.firstElementChild.content.childNodes].forEach(n=&gt;ce.append(n));
2285
+ ce.firstElementChild.remove();
2286
+ }
2287
+ })
2288
+ forEach$(n,'script', s=&gt; s.remove() );
2289
+ const xslRoot = n.content ?? n.firstElementChild?.content ?? n.body ?? n;
2290
+ xslTags.forEach( tag =&gt; forEach$( xslRoot, tag, el=&gt;toXsl(el,xslRoot) ) );
2291
+ const e = n.firstElementChild?.content || n.content
2292
+ , asXmlNode = r =&gt; {
2293
+ const d = xml2dom( '&lt;xhtml/&gt;' )
2294
+ , n = d.importNode(r, true);
2295
+ d.replaceChild(n,d.documentElement);
2296
+ if( n.namespaceURI === HTML_NS_URL &amp;&amp; !attr(n,'xmlns'))
2297
+ n.setAttribute('xmlns',HTML_NS_URL);
2298
+ return xslHtmlNs(n);
2299
+ };
2300
+ if( e )
2301
+ { const t = create('div');
2302
+ [ ...e.childNodes ].map( c =&gt; t.append(c.cloneNode(true)) )
2303
+ return asXmlNode(t)
2304
+ }
2305
+ return asXmlNode(n.documentElement || n.body || n)
2306
+ })(templateNode)
2307
+ , xslDom = xml2dom(
2308
+ `&lt;xsl:stylesheet version="1.0"
2309
+ xmlns:xsl="${ XSL_NS_URL }"
2310
+ xmlns:xhtml="${ HTML_NS_URL }"
2311
+ xmlns:dce="urn:schemas-epa-wg:dce"
2312
+ xmlns:exsl="http://exslt.org/common"
2313
+ exclude-result-prefixes="exsl"
2314
+ &gt;
2315
+ &lt;xsl:template match="ignore"&gt;
2316
+ &lt;xsl:choose&gt;
2317
+ &lt;xsl:when test="//attr"&gt;{//attr}&lt;/xsl:when&gt;
2318
+ &lt;xsl:otherwise&gt;{def}&lt;/xsl:otherwise&gt;
2319
+ &lt;/xsl:choose&gt;&lt;xsl:value-of select="."&gt;&lt;/xsl:value-of&gt;&lt;/xsl:template&gt;
2320
+ &lt;xsl:template mode="payload" match="attributes"&gt;&lt;/xsl:template&gt;
2321
+ &lt;xsl:template match="/"&gt;
2322
+ &lt;xsl:apply-templates mode="payload" select="/datadom/attributes"/&gt;
2323
+ &lt;/xsl:template&gt;
2324
+ &lt;xsl:template name="slot" &gt;
2325
+ &lt;xsl:param name="slotname" /&gt;
2326
+ &lt;xsl:param name="defaultvalue" /&gt;
2327
+ &lt;xsl:choose&gt;
2328
+ &lt;xsl:when test="//payload/*[@slot=$slotname]"&gt;
2329
+ &lt;xsl:copy-of select="//payload/*[@slot=$slotname]"/&gt;
2330
+ &lt;/xsl:when&gt;
2331
+ &lt;xsl:otherwise&gt;
2332
+ &lt;xsl:copy-of select="$defaultvalue"/&gt;
2333
+ &lt;/xsl:otherwise&gt;
2334
+ &lt;/xsl:choose&gt;
2335
+ &lt;/xsl:template&gt;
2336
+ &lt;xsl:variable name="js-injected-body"&gt;
2337
+ &lt;xsl:call-template name="slot" &gt;
2338
+ &lt;xsl:with-param name="slotname" select="''"/&gt;
2339
+ &lt;xsl:with-param name="defaultvalue"/&gt;
2340
+ &lt;/xsl:call-template&gt;
2341
+ &lt;/xsl:variable&gt;
2342
+ &lt;/xsl:stylesheet&gt;`
2343
+ );
2344
+ &nbsp;
2345
+ sanitizeProcessor.importStylesheet( sanitizeXsl );
2346
+ &nbsp;
2347
+ // Use a detached (no browsing context) document so Chrome does not eagerly
2348
+ // load img/link resources from the intermediate XSLT fragment
2349
+ const fr = sanitizeProcessor.transformToFragment(tc, document.implementation.createHTMLDocument(''))
2350
+ , $ = (e,css) =&gt; e.querySelector(css)
2351
+ , payload = $( xslDom, 'template[mode="payload"]');
2352
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( !fr )
2353
+ <span class="cstat-no" title="statement not covered" > return console.error("transformation error",{ xml:tc.outerHTML, xsl: xmlString( sanitizeXsl ) });</span>
2354
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( 'dce-root'!==fr.firstElementChild.localName )
2355
+ { const r = <span class="cstat-no" title="statement not covered" >fr.ownerDocument.createElement('dce-root');</span>
2356
+ <span class="cstat-no" title="statement not covered" > [...fr.childNodes].forEach(<span class="fstat-no" title="function not covered" >n=</span>&gt;<span class="cstat-no" title="statement not covered" >r.append(n))</span>;</span>
2357
+ <span class="cstat-no" title="statement not covered" > fr.append(r)</span>
2358
+ }
2359
+ &nbsp;
2360
+ [...fr.querySelectorAll('[test]')].forEach( n=&gt;{
2361
+ const t = attr(n,'test')
2362
+ , r = t.replace(/hasBoolAttribute\((.*?)\)/g,
2363
+ <span class="fstat-no" title="function not covered" > (m</span>atch, p1, p2,p3,p4)=&gt;
2364
+ { const a = <span class="cstat-no" title="statement not covered" >p1.substring(1);</span>
2365
+ <span class="cstat-no" title="statement not covered" > return `(not($${a} = \'false\') and ($${a} = '' or $${a} = '${a}' or $${a} = 'true' ))`</span>
2366
+ });
2367
+ t!== r &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >n.setAttribute('test',r);</span>
2368
+ });
2369
+ &nbsp;
2370
+ [...fr.querySelectorAll('dce-root&gt;attribute')].forEach( a=&gt;
2371
+ {
2372
+ keepAttributes(a,'namespace,name,select');
2373
+ const p = cloneAs(a,'xsl:param')
2374
+ , name = attr(a,'name');
2375
+ &nbsp;
2376
+ declaredAttributes.push(name);
2377
+ if( a.childNodes.length )
2378
+ hardcodedAttributes[name] = a.textContent;
2379
+ &nbsp;
2380
+ payload.append(p);
2381
+ &nbsp;
2382
+ if( a.hasAttribute('select') )
2383
+ {
2384
+ exposedAttributes[ name ] = attr( a, 'select' );
2385
+ keepAttributes( p, 'select,name' );
2386
+ &nbsp;
2387
+ let select = attr(a,'select').split('??');
2388
+ &nbsp;
2389
+ let val;
2390
+ if( select?.length&gt;1 )
2391
+ { p.removeAttribute('select');
2392
+ const c = $( xslDom, 'template[match="ignore"]&gt;choose').cloneNode(true);
2393
+ emptyNode(c.firstElementChild).append( createText(c,'{'+select[0]+'}'));
2394
+ c.firstElementChild.setAttribute('test',select[0]);
2395
+ for( let i=1; i&lt;select.length-1; i++)
2396
+ { const when = <span class="cstat-no" title="statement not covered" >c.firstElementChild.cloneNode(true);</span>
2397
+ <span class="cstat-no" title="statement not covered" > emptyNode(when).append( createText(c,'{'+select[i]+'}'));</span>
2398
+ <span class="cstat-no" title="statement not covered" > when.setAttribute('test',select[i]);</span>
2399
+ <span class="cstat-no" title="statement not covered" > c.insertBefore(when, c.lastElementChild);</span>
2400
+ }
2401
+ emptyNode(c.lastElementChild ).append( createText(c,'{'+select[select.length-1]+'}'));
2402
+ p.append(c);
2403
+ val = c.cloneNode(true);
2404
+ }else
2405
+ val = cloneAs(a,'xsl:value-of');
2406
+ val.removeAttribute('name');
2407
+ a.append(val);
2408
+ a.removeAttribute('select');
2409
+ }else
2410
+ {
2411
+ keepAttributes( p, 'name' );
2412
+ p.setAttribute('select','/datadom/attributes/'+name)
2413
+ &nbsp;
2414
+ if( !hardcodedAttributes[name] )
2415
+ a.remove();
2416
+ }
2417
+ });
2418
+ [...fr.querySelectorAll('[value]')].filter(el=&gt;el.getAttribute('value').match( /\{(.*)\?\?(.*)\}/g )).forEach(el=&gt;
2419
+ { const v = attr(el,'value');
2420
+ <span class="missing-if-branch" title="else path not taken" >E</span>if(v)
2421
+ el.setAttribute('value', evalCurly(v));
2422
+ });
2423
+ for( const c of fr.childNodes )
2424
+ payload.append(xslDom.importNode(c,true))
2425
+ &nbsp;
2426
+ const embeddedTemplates = [...payload.getElementsByTagName('xsl:template')];
2427
+ embeddedTemplates.forEach(t=&gt;payload.ownerDocument.documentElement.append(t));
2428
+ &nbsp;
2429
+ const slotCall = $(xslDom,'call-template[name="slot"]')
2430
+ , slot2xsl = s =&gt;
2431
+ { const v = slotCall.cloneNode(true)
2432
+ , name = attr(s,'name');
2433
+ name &amp;&amp; v.firstElementChild.setAttribute('select',`'${ name }'`)
2434
+ for( let c of s.childNodes)
2435
+ v.lastElementChild.append(c)
2436
+ return v
2437
+ };
2438
+ &nbsp;
2439
+ forEach$( payload,'slot', s =&gt; s.parentNode.replaceChild( slot2xsl(s), s ) )
2440
+ &nbsp;
2441
+ const ret = tagUid(xslDom);
2442
+ mix( ret, { declaredAttributes, hardcodedAttributes, exposedAttributes } );
2443
+ return ret;
2444
+ }
2445
+ export async function
2446
+ xhrTemplate(src)
2447
+ {
2448
+ const dom = await new Promise((resolve,reject)=&gt;
2449
+ { const xhr = new XMLHttpRequest();
2450
+ xhr.open("GET", src);
2451
+ xhr.onload = () =&gt;
2452
+ { if( xhr.readyState === xhr.DONE &amp;&amp; xhr.status === 200 )
2453
+ { const mime = xhr.getResponseHeader('content-type')?.includes('xml')
2454
+ ? 'text/xml' : 'text/html';
2455
+ const doc = new DOMParser().parseFromString(xhr.responseText, mime);
2456
+ resolve( mime === 'text/html' ? doc.body : doc )
2457
+ }
2458
+ else
2459
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="else path not taken" >E</span>reject(`${xhr.statusText} - ${src}`)</span>
2460
+ };
2461
+ xhr.addEventListener("error", <span class="fstat-no" title="function not covered" >ev=</span>&gt;<span class="cstat-no" title="statement not covered" >reject(ev) </span>);
2462
+ &nbsp;
2463
+ xhr.send();
2464
+ })
2465
+ return dom
2466
+ }
2467
+ export function
2468
+ deepEqual(a, b, O=false)
2469
+ {
2470
+ if( a === b )
2471
+ return true;
2472
+ &nbsp;
2473
+ if( (typeof a !== "object" || a === null) || (typeof b !== "object" || b === null)
2474
+ || Object.keys(a).length !== Object.keys(b).length )
2475
+ return O;
2476
+ &nbsp;
2477
+ for( let k in a )
2478
+ if( !(k in b) || !deepEqual( a[k], b[k] ) )
2479
+ return O
2480
+ return true;
2481
+ }
2482
+ const splitSliceNames = v =&gt; v.split('|').map( s=&gt;s.trim() ).filter(s=&gt;s);
2483
+ &nbsp;
2484
+ export const
2485
+ assureSlices = ( root, names) =&gt;
2486
+ splitSliceNames(names).map( xp =&gt;
2487
+ { let d = root.ownerDocument
2488
+ , append = n=&gt; (root.append(n),n);
2489
+ if(xp.includes('/'))
2490
+ { const ret = [], r = d.evaluate( xp, root );
2491
+ for( let n; n = r.iterateNext(); )
2492
+ ret.push( n )
2493
+ return ret
2494
+ }
2495
+ return [...root.childNodes].find(n=&gt;n.localName === xp) || append( create(xp,'',d) );
2496
+ }).flat();
2497
+ &nbsp;
2498
+ /**
2499
+ *
2500
+ * @param x slice node
2501
+ * @param sliceNames slice name, xPath in /datadom/slice/
2502
+ * @param ev Event obj
2503
+ * @param dce
2504
+ */
2505
+ export function
2506
+ event2slice( x, sliceNames, ev, dce )
2507
+ {
2508
+ if( ev.sliceProcessed )
2509
+ return
2510
+ ev.sliceProcessed = 1;
2511
+ // evaluate slices[]
2512
+ // inject @attributes
2513
+ // inject event
2514
+ // evaluate slice-value
2515
+ // slice[i] = slice-value
2516
+ return assureSlices( x, sliceNames ?? <span class="branch-1 cbranch-no" title="branch not covered" >'' </span>).map( s =&gt;
2517
+ {
2518
+ const d = x.ownerDocument
2519
+ , el = ev.sliceEventSource
2520
+ , sel = ev.sliceElement
2521
+ , cleanSliceValue = ()=&gt;[...s.childNodes].filter(n=&gt;n.nodeType===3 || n.localName==='value' || n.localName==='form-data').map(n=&gt;n.remove());
2522
+ el.getAttributeNames().map( a =&gt; s.setAttribute( a, attr(el,a) ) );
2523
+ [...s.childNodes].filter(n=&gt;n.localName==='event').map(n=&gt;n.remove());
2524
+ if( 'validationMessage' in el )
2525
+ s.setAttribute('validation-message', el.validationMessage);
2526
+ ev.type==='init' &amp;&amp; cleanSliceValue();
2527
+ s.append( obj2node( ev, 'event', d ) );
2528
+ const notChecked = ( 'checkbox' === el.type || 'radio' === el.type ) &amp;&amp; !el.checked ;
2529
+ if( sel.hasAttribute('slice-value') )
2530
+ { if( el.value === undefined)
2531
+ s.removeAttribute('value')
2532
+ else
2533
+ s.setAttribute('value', el.value );
2534
+ const v = notChecked? '' : xPath( attr( sel, 'slice-value'),s );
2535
+ cleanSliceValue();
2536
+ s.append( createText( d, v ) );
2537
+ }else
2538
+ { if( 'elements' in el )
2539
+ { cleanSliceValue();
2540
+ s.append( obj2node(new FormData(el),'value', s.ownerDocument) )
2541
+ return s
2542
+ }
2543
+ &nbsp;
2544
+ const v = notChecked? '' : el.value ?? attr( el, 'value' );
2545
+ cleanSliceValue();
2546
+ if( v === null || v === undefined )
2547
+ {
2548
+ [...s.childNodes].filter(n=&gt;n.localName!=='event').map(<span class="fstat-no" title="function not covered" >n=</span>&gt;<span class="cstat-no" title="statement not covered" >n.remove())</span>;
2549
+ s.removeAttribute('value');
2550
+ }
2551
+ else
2552
+ { const ve = isString(v) ? createText( d, v) : obj2node(v,'value',s.ownerDocument);
2553
+ s.append( ve );
2554
+ s.setAttribute('value',v);
2555
+ }
2556
+ }
2557
+ return s
2558
+ })
2559
+ }
2560
+ &nbsp;
2561
+ function forEach$( el, css, cb){
2562
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( el.querySelectorAll )
2563
+ [...el.querySelectorAll(css)].forEach(cb)
2564
+ }
2565
+ const loadTemplateRoots = async ( src, dce )=&gt;
2566
+ {
2567
+ if( !src || !src.trim() )
2568
+ return [dce]
2569
+ if( src.startsWith('#') )
2570
+ return ( n =&gt;
2571
+ { const a = n.querySelectorAll(src)
2572
+ return [...( a.length ? a : <span class="branch-1 cbranch-no" title="branch not covered" >n.getRootNode().querySelectorAll(src) </span>)]
2573
+ })(dce.parentElement)
2574
+ try
2575
+ { const [path, hash] = src.split('#');
2576
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( '.' === src.charAt(0))
2577
+ <span class="cstat-no" title="statement not covered" > src = new URL(path, dce.closest('[base]')?.getAttribute('base') || location ).href;</span>
2578
+ else
2579
+ try
2580
+ { src = import.meta.resolve( path );
2581
+ if(hash)
2582
+ src +='#'+hash;
2583
+ }
2584
+ catch( e )
2585
+ { console.error(e.message) }
2586
+ // todo cache
2587
+ const dom = await xhrTemplate(src);
2588
+ dce.setAttributeNS('xml', 'base', src );
2589
+ &nbsp;
2590
+ if( hash )
2591
+ { const ret = dom.querySelectorAll('#'+hash);
2592
+ if( ret.length )
2593
+ return [...ret];
2594
+ console.error('template not found',src+'#'+hash);
2595
+ return [dce]
2596
+ }
2597
+ return [dom]
2598
+ }catch (error){ <span class="cstat-no" title="statement not covered" >return [dce]}</span>
2599
+ }
2600
+ export function mergeAttr( from, to )
2601
+ { for( let a of from.attributes)
2602
+ try
2603
+ { const name = a.name;
2604
+ if( name.startsWith('xmlns') )
2605
+ continue;
2606
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( a.namespaceURI )
2607
+ { <span class="cstat-no" title="statement not covered" >if( !to.hasAttributeNS(a.namespaceURI, name) || to.getAttributeNS(a.namespaceURI, name) !== a.value )</span>
2608
+ <span class="cstat-no" title="statement not covered" > to.setAttributeNS( a.namespaceURI, name, a.value )</span>
2609
+ }else
2610
+ { if( !to.hasAttribute(name) || to.getAttribute(name) !== a.value )
2611
+ to.setAttribute( a.name, a.value )
2612
+ }
2613
+ if( a.name === 'value')
2614
+ to.value = a.value
2615
+ }catch(e)
2616
+ { <span class="cstat-no" title="statement not covered" >console.warn('attribute assignment error',e?.message || e); </span>}
2617
+ const ea = to.dceExportedAttributes
2618
+ , aa = to.getAttribute('dce-exported-attributes')
2619
+ , em = aa ? new Set( aa.split(' ') ) : null;
2620
+ for( let a of to.getAttributeNames() )
2621
+ if( !from.hasAttribute(a) &amp;&amp; !ea?.has(a) &amp;&amp; !em?.has(a) )
2622
+ to.removeAttribute(a)
2623
+ }
2624
+ export function assureUnique(n, id=0)
2625
+ {
2626
+ const m = {}
2627
+ for( const e of n.childNodes )
2628
+ {
2629
+ const a = attr(e,'data-dce-id') || e.dceId || 0;
2630
+ if( !m[a] )
2631
+ { if( !a )
2632
+ { m[a] = e.dceId = ++id;
2633
+ if( e.setAttribute )
2634
+ e.setAttribute('data-dce-id', e.dceId )
2635
+ }else
2636
+ m[a] = 1;
2637
+ }else
2638
+ { const v = e.dceId = a + '-' + m[a]++;
2639
+ if( e.setAttribute )
2640
+ e.setAttribute('data-dce-id', v )
2641
+ }
2642
+ e.childNodes.length &amp;&amp; assureUnique(e)
2643
+ }
2644
+ }
2645
+ export function appendByDceId(parent,e,k)
2646
+ {
2647
+ k = 1*k;
2648
+ for( let n of parent.childNodes )
2649
+ if( (n.dceId ?? n.getAttribute('data-dce-id')*1) &gt; k )
2650
+ return parent.insertBefore(e,n);
2651
+ parent.append(e)
2652
+ }
2653
+ export function merge( parent, fromArr )
2654
+ {
2655
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( 'dce-root' === parent.firstElementChild?.localName &amp;&amp; 'dce-root' !== fromArr[0]?.localName)
2656
+ <span class="cstat-no" title="statement not covered" > return;</span>
2657
+ if( !fromArr.length )
2658
+ return 'dce-root' !== parent.firstElementChild?.localName &amp;&amp; removeChildren(parent);
2659
+ &nbsp;
2660
+ const id2old = {};
2661
+ for( let c of parent.childNodes)
2662
+ { ASSERT( !id2old[c.dceId] );
2663
+ if( isText(c) )
2664
+ { ASSERT( c.data.trim() );
2665
+ id2old[c.dceId || <span class="branch-1 cbranch-no" title="branch not covered" >0]</span> = c;
2666
+ } else
2667
+ id2old[attr(c, 'data-dce-id') || <span class="branch-1 cbranch-no" title="branch not covered" >0]</span> = c;
2668
+ }
2669
+ for( let e of [...fromArr] )
2670
+ { const k = attr(e, 'data-dce-id') || e.dceId;
2671
+ const o = id2old[ k ];
2672
+ if( o )
2673
+ { if( isText(e) )
2674
+ { if( o.nodeValue !== e.nodeValue )
2675
+ o.nodeValue = e.nodeValue;
2676
+ }else
2677
+ { mergeAttr(e,o)
2678
+ if( o.childNodes.length || e.childNodes.length )
2679
+ merge(o, e.childNodes)
2680
+ }
2681
+ delete id2old[ k ]
2682
+ }else
2683
+ appendByDceId(parent,e,k)
2684
+ }
2685
+ for( let v of Object.values(id2old) )
2686
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( v.localName !== 'dce-root')
2687
+ v.remove();
2688
+ }
2689
+ export function assureUID(n,attr)
2690
+ { <span class="missing-if-branch" title="else path not taken" >E</span>if( !n.hasAttribute(attr) )
2691
+ n.setAttribute(attr, crypto.randomUUID());
2692
+ return n.getAttribute(attr)
2693
+ }
2694
+ export const evalCurly = s =&gt;
2695
+ { const exp = [...s?.matchAll( /([^{}]*)(\{)([^}]+)}([^{}]*)/g ) ].map(l=&gt;`${l[1]}{${ xPathDefaults(l[3] )}}${l[4]}`);
2696
+ return exp.join('');
2697
+ }
2698
+ export const xPathDefaults = x=&gt;
2699
+ { if(!x.trim())
2700
+ return x;
2701
+ const xx = x.split('??')
2702
+ , a = xx.shift()
2703
+ , b = xPathDefaults(xx.join('??'));
2704
+ &nbsp;
2705
+ return xx.length ? `concat( ${a} , substring( ${b} , (1+string-length( ${b} )) * string-length( ${a} ) ) )`: x
2706
+ // return xx.length ? `${a}|(${xPathDefaults(xx.join('??'))})[not(${a})]`: a
2707
+ }
2708
+ export const xPath = (x,root)=&gt;
2709
+ {
2710
+ const xx = x.split('??');
2711
+ if( xx.length &gt; 1 )
2712
+ return xPath(xx[0], root) || xPath(xx[1], root);
2713
+ &nbsp;
2714
+ x = xPathDefaults(x);
2715
+ &nbsp;
2716
+ const it = root.ownerDocument.evaluate(x, root);
2717
+ switch( it.resultType )
2718
+ { case XPathResult.NUMBER_TYPE: return it.numberValue;
2719
+ case XPathResult.STRING_TYPE: return it.stringValue;
2720
+ case XPathResult.BOOLEAN_TYPE: return it.booleanValue;
2721
+ }
2722
+ &nbsp;
2723
+ let ret = '';
2724
+ for( let n ;n=it.iterateNext(); )
2725
+ ret += n.textContent;
2726
+ return ret
2727
+ }
2728
+ export const xslTags = 'stylesheet,transform,import,include,strip-space,preserve-space,output,key,decimal-format,namespace-alias,value-of,copy-of,number,apply-templates,apply-imports,for-each,sort,if,choose,when,otherwise,attribute-set,call-template,with-param,variable,param,text,processing-instruction,element,attribute,comment,copy,message,fallback'.split(',');
2729
+ export const toXsl = (el, defParent) =&gt; {
2730
+ const x = create('xsl:'+el.localName);
2731
+ for( let a of el.attributes )
2732
+ x.setAttribute( a.name, a.value );
2733
+ while(el.firstChild)
2734
+ x.append(el.firstChild);
2735
+ const replacement = 'if,choose,for-each'.includes(el.localName) ? (() =&gt; {
2736
+ const parent = el.parentElement;
2737
+ if( !parent || parent.childNodes.length ===1 )
2738
+ return x;
2739
+ const span = create('span');
2740
+ span.append(x);
2741
+ return span;
2742
+ })() : x;
2743
+ if( el.parentElement )
2744
+ el.parentElement.replaceChild( replacement, el );
2745
+ else
2746
+ { const p = (el.parentElement || defParent)
2747
+ , arr = [...p.childNodes];
2748
+ arr.forEach((n, i) =&gt; {
2749
+ if (n === el)
2750
+ arr[i] = replacement;
2751
+ });
2752
+ p.replaceChildren(...arr);
2753
+ }
2754
+ };
2755
+ &nbsp;
2756
+ export class
2757
+ CustomElement extends HTMLElement
2758
+ {
2759
+ static observedAttributes = ['src','tag','hidden'];
2760
+ async connectedCallback()
2761
+ {
2762
+ if(this.firstElementChild &amp;&amp; this.firstElementChild.localName !== 'template')
2763
+ console.log('custom-element used without template wrapping content\n', this.outerHTML);
2764
+ const templateRoots = await loadTemplateRoots( attr( this, 'src' ), this )
2765
+ , tag = attr( this, 'tag' )
2766
+ , tagName = tag ? tag : 'dce-'+crypto.randomUUID();
2767
+ &nbsp;
2768
+ for( const t of templateRoots )
2769
+ forEach$(t.templateNode||t.content||t, 'style',s=&gt;{
2770
+ const slot = s.closest('slot');
2771
+ const sName = slot ? <span class="branch-0 cbranch-no" title="branch not covered" >`slot[name="${slot.name}"]`:</span>'';
2772
+ s.innerHTML = `${tagName} ${sName}{${s.innerHTML}}`;
2773
+ this.append(s);
2774
+ })
2775
+ const templateDocs = templateRoots.map( n =&gt; createXsltFromDom( n ) )
2776
+ , xp = templateDocs.map( (td, p) =&gt;
2777
+ { p = new XSLTProcessor();
2778
+ try{ p.importStylesheet( td ) }
2779
+ catch( e )
2780
+ { <span class="cstat-no" title="statement not covered" >console.error(e, xmlString(td)) </span>}
2781
+ return p
2782
+ })
2783
+ &nbsp;
2784
+ Object.defineProperty( this, "xsltString", { get: ()=&gt;templateDocs.map( td =&gt; xmlString(td) ).join('\n') });
2785
+ &nbsp;
2786
+ const dce = this
2787
+ , sliceNodes = [...this.templateNode.querySelectorAll('[slice]')]
2788
+ , sliceNames = sliceNodes.map(e=&gt;attr(e,'slice'))
2789
+ .filter(n=&gt;!n.includes('/'))
2790
+ .filter((v, i, a)=&gt;a.indexOf(v) === i)
2791
+ .map(splitSliceNames).flat();
2792
+ &nbsp;
2793
+ const { declaredAttributes, hardcodedAttributes, exposedAttributes } = templateDocs[0];
2794
+ const dceExportedAttributes = new Set([...Object.keys(hardcodedAttributes), ...Object.keys(exposedAttributes)]);
2795
+ &nbsp;
2796
+ class DceElement extends HTMLElement
2797
+ {
2798
+ static get observedAttributes(){ return declaredAttributes; }
2799
+ #inTransform = 0;
2800
+ <span class="fstat-no" title="function not covered" > get </span>dceExportedAttributes(){ <span class="cstat-no" title="statement not covered" >return dceExportedAttributes; </span>}
2801
+ connectedCallback()
2802
+ { let payload = sanitizeBlankText(this.childNodes);
2803
+ if( this.firstElementChild?.tagName === 'TEMPLATE' )
2804
+ {
2805
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( this.firstElementChild !== this.lastElementChild )
2806
+ { <span class="cstat-no" title="statement not covered" >console.error('payload should have TEMPLATE as only child', this.outerHTML ) </span>}
2807
+ const t = this.firstElementChild;
2808
+ t.remove();
2809
+ payload = sanitizeBlankText(t.content.childNodes);
2810
+ &nbsp;
2811
+ for( const n of payload )
2812
+ if( n.localName === 'style' ){
2813
+ const id = assureUID(this,'data-dce-style')
2814
+ n.innerHTML= `${tagName}[data-dce-style="${id}"]{${n.innerHTML}}`;
2815
+ t.insertAdjacentElement('beforebegin',n);
2816
+ }else
2817
+ if(n.nodeType===1)
2818
+ t.insertAdjacentElement('beforebegin',n);
2819
+ else if(n.nodeType===3)
2820
+ t.insertAdjacentText('beforebegin',n.data);
2821
+ }
2822
+ const x = xml2dom( '&lt;datadom/&gt;' ).documentElement;
2823
+ const createXmlNode = ( tag, t = '' ) =&gt; ( e =&gt;
2824
+ { if( t )
2825
+ e.append( createText( x, t ))
2826
+ return e;
2827
+ })(x.ownerDocument.createElement( tag ))
2828
+ const payloadNode = injectData( x, 'payload' , payload , assureSlot );
2829
+ xslNs(payloadNode);
2830
+ xslHtmlNs(payloadNode);
2831
+ this.innerHTML='';
2832
+ const attrsRoot = injectData( x, 'attributes' , this.attributes, e =&gt; createXmlNode( e.nodeName, e.value ) )
2833
+ , inAttrs = a=&gt; this.hasAttribute(a) || [...attrsRoot.children].find(e=&gt;e.localName === a);
2834
+ mergeAttr( this, attrsRoot );
2835
+ Object.keys(hardcodedAttributes).map(a=&gt; inAttrs(a) || attrsRoot.append(createXmlNode(a,hardcodedAttributes[a])) );
2836
+ Object.keys(exposedAttributes).map(a=&gt; inAttrs(a) || attrsRoot.append(createXmlNode(a)) );
2837
+ &nbsp;
2838
+ injectData( x, 'dataset', Object.keys( this.dataset ), k =&gt; createXmlNode( k, this.dataset[ k ] ) );
2839
+ const sliceRoot = injectData( x, 'slice', sliceNames, k =&gt; createXmlNode( k, '' ) )
2840
+ , sliceXPath = x =&gt; xPath(x, sliceRoot);
2841
+ this.xml = x;
2842
+ &nbsp;
2843
+ const sliceEvents=[];
2844
+ const applySlices = ()=&gt;
2845
+ { const processed = {}
2846
+ &nbsp;
2847
+ for(let ev; ev = sliceEvents.pop(); )
2848
+ { const s = attr( ev.sliceElement, 'slice');
2849
+ if( processed[s] )
2850
+ continue;
2851
+ event2slice( sliceRoot, s, ev, this );
2852
+ processed[s] = ev;
2853
+ }
2854
+ Object.keys(processed).length !== 0 &amp;&amp; transform();
2855
+ this.customElementRegistry?.initialize(this);
2856
+ }
2857
+ let timeoutID;
2858
+ &nbsp;
2859
+ this.onSlice = ev=&gt;
2860
+ { sliceEvents.push(ev);
2861
+ if( !timeoutID )
2862
+ timeoutID = setTimeout(()=&gt;
2863
+ { applySlices();
2864
+ timeoutID =0;
2865
+ },1);
2866
+ };
2867
+ const transform = this.transform = ()=&gt;
2868
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if(this.#inTransform){ <span class="cstat-no" title="statement not covered" >debugger </span>}
2869
+ this.#inTransform = 1;
2870
+ const renderModel = ()=&gt;
2871
+ {
2872
+ const ff = xp.map( (p,i) =&gt;
2873
+ { const f = p.transformToFragment(x.ownerDocument, document)
2874
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( !f )
2875
+ <span class="cstat-no" title="statement not covered" > console.error( "XSLT transformation error. xsl:\n", xmlString(templateDocs[i]), '\nxml:\n', xmlString(x) );</span>
2876
+ return f
2877
+ });
2878
+ ff.map( f =&gt;
2879
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if( !f )
2880
+ <span class="cstat-no" title="statement not covered" > return;</span>
2881
+ assureUnique(f);
2882
+ merge( this, f.childNodes )
2883
+ })
2884
+ let attrChangedCount = 0;
2885
+ Object.entries(hardcodedAttributes).map(( [a,v] )=&gt;
2886
+ { if( !this.hasAttribute(a) &amp;&amp; v !== attr(this,a) )
2887
+ { this.setAttribute( a, v );
2888
+ this.#applyAttribute( a, v );
2889
+ attrChangedCount++;
2890
+ }
2891
+ });
2892
+ &nbsp;
2893
+ Object.keys(exposedAttributes).map( a =&gt;
2894
+ { let v = attr(this.firstElementChild,a);
2895
+ if( v !== attr(this,a) )
2896
+ { this.setAttribute( a, v );
2897
+ this.#applyAttribute( a, v );
2898
+ attrChangedCount++;
2899
+ }
2900
+ });
2901
+ return attrChangedCount;
2902
+ };
2903
+ if( renderModel() )
2904
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( renderModel() )
2905
+ <span class="cstat-no" title="statement not covered" > console.warn("model update should not be the result of transform more than once");</span>
2906
+ &nbsp;
2907
+ function getSliceTarget(el)
2908
+ { let r = el;
2909
+ <span class="missing-if-branch" title="if path not taken" >I</span>if( el.localName === 'slice')
2910
+ { const ref= <span class="cstat-no" title="statement not covered" >attr(el,'for');</span>
2911
+ <span class="cstat-no" title="statement not covered" > if( !ref )</span>
2912
+ <span class="cstat-no" title="statement not covered" > r = el.parentElement;</span>
2913
+ <span class="cstat-no" title="statement not covered" > if( '^' === ref )</span>
2914
+ { <span class="cstat-no" title="statement not covered" >do <span class="cstat-no" title="statement not covered" >r = r.previousElementSibling;</span></span>
2915
+ while( r.localName === 'slice' )
2916
+ } else
2917
+ <span class="cstat-no" title="statement not covered" > r = this.querySelector(ref)</span>
2918
+ &nbsp;
2919
+ <span class="cstat-no" title="statement not covered" > if( !r )</span>
2920
+ <span class="cstat-no" title="statement not covered" > return console.warn(`can not find selector in "slice for=${ref}" `, el.outerHTML);</span>
2921
+ <span class="cstat-no" title="statement not covered" > attr(el,'slice') || el.setAttribute('slice', attr(el,'name'))</span>
2922
+ }
2923
+ return r;
2924
+ }
2925
+ forEach$( this,'[slice],[slice-event]', el =&gt;
2926
+ { let evs = attr(el,'slice-event');
2927
+ const sVal = el.hasAttribute('slice-value') || el.hasAttribute('value') || el.value;
2928
+ const tgt = getSliceTarget(el);
2929
+ if( !el.dceInitialized )
2930
+ { el.dceInitialized = 1;
2931
+ if( tgt.hasAttribute('custom-validity') )
2932
+ evs += ' change submit';
2933
+ &nbsp;
2934
+ [...new Set((evs || 'change') .split(' '))]
2935
+ .forEach( t=&gt;
2936
+ tgt.addEventListener( t, ev=&gt;
2937
+ { ev.sliceElement = el;
2938
+ ev.sliceEventSource = ev.currentTarget || <span class="branch-1 cbranch-no" title="branch not covered" >ev.target;</span>
2939
+ ev.sliceProcessed = 0;
2940
+ const slices = event2slice( sliceRoot, attr( ev.sliceElement, 'slice'), ev, this );
2941
+ &nbsp;
2942
+ forEach$(this,'[custom-validity]',el =&gt;
2943
+ { if( !el.setCustomValidity )
2944
+ return;
2945
+ const x = attr( el, 'custom-validity' );
2946
+ try
2947
+ { const v = x &amp;&amp; xPath( x, attrsRoot );
2948
+ el.setCustomValidity( v === true? <span class="branch-0 cbranch-no" title="branch not covered" >'':</span> v === false ? <span class="branch-0 cbranch-no" title="branch not covered" >'invalid' </span>: v );
2949
+ }catch(err)
2950
+ { <span class="cstat-no" title="statement not covered" >console.error(err, 'xPath', x) </span>}
2951
+ })
2952
+ const x = attr(tgt,'custom-validity')
2953
+ , v = x &amp;&amp; xPath( x, attrsRoot )
2954
+ , msg = v === true? <span class="branch-0 cbranch-no" title="branch not covered" >'' </span>: v;
2955
+ &nbsp;
2956
+ if( x )
2957
+ { el.setCustomValidity ? el.setCustomValidity( msg ) : ( el.validationMessage = msg );
2958
+ slices.map( s =&gt; s.setAttribute('validation-message', msg ) );
2959
+ if( ev.type === 'submit' )
2960
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if( v === true )
2961
+ <span class="cstat-no" title="statement not covered" > return;</span>
2962
+ setTimeout(transform,1)
2963
+ if( !!v === v )
2964
+ { v || ev.preventDefault();
2965
+ return v;
2966
+ }
2967
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( v )
2968
+ { ev.preventDefault();
2969
+ return !1
2970
+ }
2971
+ <span class="cstat-no" title="statement not covered" > return ;</span>
2972
+ }else
2973
+ setTimeout(transform,1)
2974
+ }
2975
+ this.onSlice(ev);
2976
+ } ));
2977
+ if( !evs || evs.includes('init') )
2978
+ { if( sVal )
2979
+ this.onSlice({type:'init', target: tgt, sliceElement:el, sliceEventSource:tgt })
2980
+ else
2981
+ el.value = sliceXPath( attr(el,'slice') )
2982
+ }
2983
+ }
2984
+ });
2985
+ this.#inTransform = 0;
2986
+ };
2987
+ transform();
2988
+ applySlices();
2989
+ }
2990
+ #applyAttribute(name, newValue)
2991
+ { <span class="missing-if-branch" title="if path not taken" >I</span>if( 'value' === name )
2992
+ <span class="cstat-no" title="statement not covered" > this.value = newValue;</span>
2993
+ const attrs = this.xml.querySelector('attributes');
2994
+ let a = this.xml.querySelector(`attributes&gt;${name}`);
2995
+ if( a )
2996
+ emptyNode(a).append( createText(a,newValue) );
2997
+ else
2998
+ <span class="missing-if-branch" title="else path not taken" >E</span>{ <span class="cstat-no" title="statement not covered" >a = create( name, newValue, this.xml );</span>
2999
+ <span class="cstat-no" title="statement not covered" > attrs.append( a );</span>
3000
+ }
3001
+ this.#inTransform || attrs.setAttribute(name,newValue);
3002
+ &nbsp;
3003
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true,detail: { [name]: newValue }}))
3004
+ }
3005
+ attributeChangedCallback(name, oldValue, newValue)
3006
+ { if( !this.xml || this.#inTransform )
3007
+ return;
3008
+ this.#applyAttribute(name, newValue);
3009
+ this.transform(); // needs throttling
3010
+ }
3011
+ &nbsp;
3012
+ <span class="fstat-no" title="function not covered" > get </span>dce(){ <span class="cstat-no" title="statement not covered" >return dce </span>}
3013
+ }
3014
+ const registerTag = tag =&gt;
3015
+ {
3016
+ <span class="missing-if-branch" title="else path not taken" >E</span>if( window.customElements.get(tag) !== DceElement )
3017
+ window.customElements.define( tag, DceElement);
3018
+ };
3019
+ if(tag)
3020
+ registerTag(tag);
3021
+ else
3022
+ { const t = tagName;
3023
+ this.setAttribute('tag', t );
3024
+ registerTag(t);
3025
+ const el = document.createElement(t);
3026
+ this.getAttributeNames().forEach(a=&gt;el.setAttribute(a,this.getAttribute(a)));
3027
+ el.append(...[...this.childNodes].filter( e =&gt; e.localName!=='style') );
3028
+ this.append(el);
3029
+ }
3030
+ }
3031
+ get templateNode(){ return this.firstElementChild?.tagName === 'TEMPLATE'? this.firstElementChild.content : this }
3032
+ get dce(){ return this }
3033
+ &nbsp;
3034
+ get xslt(){ return xml2dom( this.xsltString ) }
3035
+ }
3036
+ &nbsp;
3037
+ window.customElements.define( 'custom-element', CustomElement );
3038
+ export default CustomElement;
3039
+ &nbsp;</pre></td></tr></table></pre>
3040
+
3041
+ <div class='push'></div><!-- for sticky footer -->
3042
+ </div><!-- /wrapper -->
3043
+ <div class='footer quiet pad2 space-top1 center small'>
3044
+ Code coverage generated by
3045
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3046
+ at 2026-05-03T16:20:23.247Z
3047
+ </div>
3048
+ <script src="../../prettify.js"></script>
3049
+ <script>
3050
+ window.onload = function () {
3051
+ prettyPrint();
3052
+ };
3053
+ </script>
3054
+ <script src="../../sorter.js"></script>
3055
+ <script src="../../block-navigation.js"></script>
3056
+ </body>
3057
+ </html>
3058
+