Content-Security-Policy: default-src 'none'
Content-Type: text/plain; charset=UTF-8
Content-Length: 1185
Content-Disposition: inline; filename="024-m5445x_enable_cache_store.patch"
Last-Modified: Thu, 29 Aug 2024 23:34:40 GMT
Expires: Sun, 27 Aug 2034 23:34:40 GMT
ETag: "e0b9c8033f08dd3a26ff702d0775e0cd0ab77d31"

From 96de11ad11db226423d364a75cc82c6118a18a1f Mon Sep 17 00:00:00 2001
From: Kurt Mahan <kmahan@freescale.com>
Date: Tue, 4 Dec 2007 00:04:21 -0700
Subject: [PATCH] Enable Cache Store Buffer.

LTIBName: m5445x-enable-cache-store
Signed-off-by: Kurt Mahan <kmahan@freescale.com>
---
 arch/m68k/coldfire/config.c |    2 ++
 include/asm-m68k/cfcache.h  |    1 +
 2 files changed, 3 insertions(+), 0 deletions(-)

--- a/arch/m68k/coldfire/config.c
+++ b/arch/m68k/coldfire/config.c
@@ -21,6 +21,7 @@
 #include <asm/machdep.h>
 #include <asm/coldfire.h>
 #include <asm/cfcache.h>
+#include <asm/cacheflush.h>
 #include <asm/bootinfo.h>
 #include <asm/io.h>
 #include <asm/cfmmu.h>
@@ -165,6 +166,7 @@ asmlinkage void __init cf_early_init(voi
 		+ sizeof(record->data[0]) + sizeof(record->data[1]);
 
 	/* Invalidate caches via CACR */
+	flush_bcache();
 	cacr_set(CACHE_DISABLE_MODE);
 
 	/* Turn on caches via CACR, enable EUSP */
--- a/include/asm-m68k/cfcache.h
+++ b/include/asm-m68k/cfcache.h
@@ -64,6 +64,7 @@
 #define CACHE_INITIAL_MODE 	(CF_CACR_DEC+		\
 				 CF_CACR_BEC+		\
 				 CF_CACR_IEC+		\
+				 CF_CACR_DESB+		\
 				 CF_CACR_EUSP)
 #else
 /* cache disabled for testing */
d='get'>
<input type='hidden' name='id' value='9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'/><select name='h' onchange='this.form.submit();'>
<option value='do-work/Edimax-v2' selected='selected'>do-work/Edimax-v2</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Edimax BR-6578AC V2 base from https://github.com/ulli-kroll/lede.git</td><td class='sub right'>James</td></tr></table>
<table class='tabs'><tr><td>
<a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/?h=do-work/Edimax-v2'>summary</a><a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/refs/?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>refs</a><a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/log/target/linux/cns3xxx/patches-2.6.31/208-cns3xxx_usb_support.patch?h=do-work/Edimax-v2'>log</a><a class='active' href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/tree/target/linux/cns3xxx/patches-2.6.31/208-cns3xxx_usb_support.patch?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>tree</a><a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/commit/target/linux/cns3xxx/patches-2.6.31/208-cns3xxx_usb_support.patch?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>commit</a><a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/diff/target/linux/cns3xxx/patches-2.6.31/208-cns3xxx_usb_support.patch?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>diff</a><a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/stats/target/linux/cns3xxx/patches-2.6.31/208-cns3xxx_usb_support.patch?h=do-work/Edimax-v2'>stats</a></td><td class='form'><form class='right' method='get' action='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/log/target/linux/cns3xxx/patches-2.6.31/208-cns3xxx_usb_support.patch'>
<input type='hidden' name='h' value='do-work/Edimax-v2'/><input type='hidden' name='id' value='9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/tree/?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>root</a>/<a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/tree/target?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>target</a>/<a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/tree/target/linux?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>linux</a>/<a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/tree/target/linux/cns3xxx?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>cns3xxx</a>/<a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/tree/target/linux/cns3xxx/patches-2.6.31?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>patches-2.6.31</a>/<a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/tree/target/linux/cns3xxx/patches-2.6.31/208-cns3xxx_usb_support.patch?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>208-cns3xxx_usb_support.patch</a></div><div class='content'>blob: 15efaca199ba2d97b62f55526cad89c710e2a8f3 (<a href='/cgit/openwrt/em-br6478acv2/lede/master-31e0f0ae/plain/target/linux/cns3xxx/patches-2.6.31/208-cns3xxx_usb_support.patch?h=do-work/Edimax-v2&amp;id=9ef8de0e0ae2f176e13f6f3cca8926b3a2fa6df5'>plain</a>)
<table summary='blob content' class='blob'>
<tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a>
<a id='n2' href='#n2'>2</a>
<a id='n3' href='#n3'>3</a>
<a id='n4' href='#n4'>4</a>
<a id='n5' href='#n5'>5</a>
<a id='n6' href='#n6'>6</a>
<a id='n7' href='#n7'>7</a>
<a id='n8' href='#n8'>8</a>
<a id='n9' href='#n9'>9</a>
<a id='n10' href='#n10'>10</a>
<a id='n11' href='#n11'>11</a>
<a id='n12' href='#n12'>12</a>
<a id='n13' href='#n13'>13</a>
<a id='n14' href='#n14'>14</a>
<a id='n15' href='#n15'>15</a>
<a id='n16' href='#n16'>16</a>
<a id='n17' href='#n17'>17</a>
<a id='n18' href='#n18'>18</a>
<a id='n19' href='#n19'>19</a>
<a id='n20' href='#n20'>20</a>
<a id='n21' href='#n21'>21</a>
<a id='n22' href='#n22'>22</a>
<a id='n23' href='#n23'>23</a>
<a id='n24' href='#n24'>24</a>
<a id='n25' href='#n25'>25</a>
<a id='n26' href='#n26'>26</a>
<a id='n27' href='#n27'>27</a>
<a id='n28' href='#n28'>28</a>
<a id='n29' href='#n29'>29</a>
<a id='n30' href='#n30'>30</a>
<a id='n31' href='#n31'>31</a>
<a id='n32' href='#n32'>32</a>
<a id='n33' href='#n33'>33</a>
<a id='n34' href='#n34'>34</a>
<a id='n35' href='#n35'>35</a>
<a id='n36' href='#n36'>36</a>
<a id='n37' href='#n37'>37</a>
<a id='n38' href='#n38'>38</a>
<a id='n39' href='#n39'>39</a>
<a id='n40' href='#n40'>40</a>
<a id='n41' href='#n41'>41</a>
<a id='n42' href='#n42'>42</a>
<a id='n43' href='#n43'>43</a>
<a id='n44' href='#n44'>44</a>
<a id='n45' href='#n45'>45</a>
<a id='n46' href='#n46'>46</a>
<a id='n47' href='#n47'>47</a>
<a id='n48' href='#n48'>48</a>
<a id='n49' href='#n49'>49</a>
<a id='n50' href='#n50'>50</a>
<a id='n51' href='#n51'>51</a>
<a id='n52' href='#n52'>52</a>
<a id='n53' href='#n53'>53</a>
<a id='n54' href='#n54'>54</a>
<a id='n55' href='#n55'>55</a>
<a id='n56' href='#n56'>56</a>
<a id='n57' href='#n57'>57</a>
<a id='n58' href='#n58'>58</a>
<a id='n59' href='#n59'>59</a>
<a id='n60' href='#n60'>60</a>
<a id='n61' href='#n61'>61</a>
<a id='n62' href='#n62'>62</a>
<a id='n63' href='#n63'>63</a>
<a id='n64' href='#n64'>64</a>
<a id='n65' href='#n65'>65</a>
<a id='n66' href='#n66'>66</a>
<a id='n67' href='#n67'>67</a>
<a id='n68' href='#n68'>68</a>
<a id='n69' href='#n69'>69</a>
<a id='n70' href='#n70'>70</a>
<a id='n71' href='#n71'>71</a>
<a id='n72' href='#n72'>72</a>
<a id='n73' href='#n73'>73</a>
<a id='n74' href='#n74'>74</a>
<a id='n75' href='#n75'>75</a>
<a id='n76' href='#n76'>76</a>
<a id='n77' href='#n77'>77</a>
<a id='n78' href='#n78'>78</a>
<a id='n79' href='#n79'>79</a>
<a id='n80' href='#n80'>80</a>
<a id='n81' href='#n81'>81</a>
<a id='n82' href='#n82'>82</a>
<a id='n83' href='#n83'>83</a>
<a id='n84' href='#n84'>84</a>
<a id='n85' href='#n85'>85</a>
<a id='n86' href='#n86'>86</a>
<a id='n87' href='#n87'>87</a>
<a id='n88' href='#n88'>88</a>
<a id='n89' href='#n89'>89</a>
<a id='n90' href='#n90'>90</a>
<a id='n91' href='#n91'>91</a>
<a id='n92' href='#n92'>92</a>
<a id='n93' href='#n93'>93</a>
<a id='n94' href='#n94'>94</a>
<a id='n95' href='#n95'>95</a>
<a id='n96' href='#n96'>96</a>
<a id='n97' href='#n97'>97</a>
<a id='n98' href='#n98'>98</a>
<a id='n99' href='#n99'>99</a>
<a id='n100' href='#n100'>100</a>
<a id='n101' href='#n101'>101</a>
<a id='n102' href='#n102'>102</a>
<a id='n103' href='#n103'>103</a>
<a id='n104' href='#n104'>104</a>
<a id='n105' href='#n105'>105</a>
<a id='n106' href='#n106'>106</a>
<a id='n107' href='#n107'>107</a>
<a id='n108' href='#n108'>108</a>
<a id='n109' href='#n109'>109</a>
<a id='n110' href='#n110'>110</a>
<a id='n111' href='#n111'>111</a>
<a id='n112' href='#n112'>112</a>
<a id='n113' href='#n113'>113</a>
<a id='n114' href='#n114'>114</a>
<a id='n115' href='#n115'>115</a>
<a id='n116' href='#n116'>116</a>
<a id='n117' href='#n117'>117</a>
<a id='n118' href='#n118'>118</a>
<a id='n119' href='#n119'>119</a>
<a id='n120' href='#n120'>120</a>
<a id='n121' href='#n121'>121</a>
<a id='n122' href='#n122'>122</a>
<a id='n123' href='#n123'>123</a>
<a id='n124' href='#n124'>124</a>
<a id='n125' href='#n125'>125</a>
<a id='n126' href='#n126'>126</a>
<a id='n127' href='#n127'>127</a>
<a id='n128' href='#n128'>128</a>
<a id='n129' href='#n129'>129</a>
<a id='n130' href='#n130'>130</a>
<a id='n131' href='#n131'>131</a>
<a id='n132' href='#n132'>132</a>
<a id='n133' href='#n133'>133</a>
<a id='n134' href='#n134'>134</a>
<a id='n135' href='#n135'>135</a>
<a id='n136' href='#n136'>136</a>
<a id='n137' href='#n137'>137</a>
<a id='n138' href='#n138'>138</a>
<a id='n139' href='#n139'>139</a>
<a id='n140' href='#n140'>140</a>
<a id='n141' href='#n141'>141</a>
<a id='n142' href='#n142'>142</a>
<a id='n143' href='#n143'>143</a>
<a id='n144' href='#n144'>144</a>
<a id='n145' href='#n145'>145</a>
<a id='n146' href='#n146'>146</a>
<a id='n147' href='#n147'>147</a>
<a id='n148' href='#n148'>148</a>
<a id='n149' href='#n149'>149</a>
<a id='n150' href='#n150'>150</a>
<a id='n151' href='#n151'>151</a>
<a id='n152' href='#n152'>152</a>
<a id='n153' href='#n153'>153</a>
<a id='n154' href='#n154'>154</a>
<a id='n155' href='#n155'>155</a>
<a id='n156' href='#n156'>156</a>
<a id='n157' href='#n157'>157</a>
<a id='n158' href='#n158'>158</a>
<a id='n159' href='#n159'>159</a>
<a id='n160' href='#n160'>160</a>
<a id='n161' href='#n161'>161</a>
<a id='n162' href='#n162'>162</a>
<a id='n163' href='#n163'>163</a>
<a id='n164' href='#n164'>164</a>
<a id='n165' href='#n165'>165</a>
<a id='n166' href='#n166'>166</a>
<a id='n167' href='#n167'>167</a>
<a id='n168' href='#n168'>168</a>
<a id='n169' href='#n169'>169</a>
<a id='n170' href='#n170'>170</a>
<a id='n171' href='#n171'>171</a>
<a id='n172' href='#n172'>172</a>
<a id='n173' href='#n173'>173</a>
<a id='n174' href='#n174'>174</a>
<a id='n175' href='#n175'>175</a>
<a id='n176' href='#n176'>176</a>
<a id='n177' href='#n177'>177</a>
<a id='n178' href='#n178'>178</a>
<a id='n179' href='#n179'>179</a>
<a id='n180' href='#n180'>180</a>
<a id='n181' href='#n181'>181</a>
<a id='n182' href='#n182'>182</a>
<a id='n183' href='#n183'>183</a>
<a id='n184' href='#n184'>184</a>
<a id='n185' href='#n185'>185</a>
<a id='n186' href='#n186'>186</a>
<a id='n187' href='#n187'>187</a>
<a id='n188' href='#n188'>188</a>
<a id='n189' href='#n189'>189</a>
<a id='n190' href='#n190'>190</a>
<a id='n191' href='#n191'>191</a>
<a id='n192' href='#n192'>192</a>
<a id='n193' href='#n193'>193</a>
<a id='n194' href='#n194'>194</a>
<a id='n195' href='#n195'>195</a>
<a id='n196' href='#n196'>196</a>
<a id='n197' href='#n197'>197</a>
<a id='n198' href='#n198'>198</a>
<a id='n199' href='#n199'>199</a>
<a id='n200' href='#n200'>200</a>
<a id='n201' href='#n201'>201</a>
<a id='n202' href='#n202'>202</a>
<a id='n203' href='#n203'>203</a>
<a id='n204' href='#n204'>204</a>
<a id='n205' href='#n205'>205</a>
<a id='n206' href='#n206'>206</a>
<a id='n207' href='#n207'>207</a>
<a id='n208' href='#n208'>208</a>
<a id='n209' href='#n209'>209</a>
<a id='n210' href='#n210'>210</a>
<a id='n211' href='#n211'>211</a>
<a id='n212' href='#n212'>212</a>
<a id='n213' href='#n213'>213</a>
<a id='n214' href='#n214'>214</a>
<a id='n215' href='#n215'>215</a>
<a id='n216' href='#n216'>216</a>
<a id='n217' href='#n217'>217</a>
<a id='n218' href='#n218'>218</a>
<a id='n219' href='#n219'>219</a>
<a id='n220' href='#n220'>220</a>
<a id='n221' href='#n221'>221</a>
<a id='n222' href='#n222'>222</a>
<a id='n223' href='#n223'>223</a>
<a id='n224' href='#n224'>224</a>
<a id='n225' href='#n225'>225</a>
<a id='n226' href='#n226'>226</a>
<a id='n227' href='#n227'>227</a>
<a id='n228' href='#n228'>228</a>
<a id='n229' href='#n229'>229</a>
<a id='n230' href='#n230'>230</a>
<a id='n231' href='#n231'>231</a>
<a id='n232' href='#n232'>232</a>
<a id='n233' href='#n233'>233</a>
<a id='n234' href='#n234'>234</a>
<a id='n235' href='#n235'>235</a>
<a id='n236' href='#n236'>236</a>
<a id='n237' href='#n237'>237</a>
<a id='n238' href='#n238'>238</a>
<a id='n239' href='#n239'>239</a>
<a id='n240' href='#n240'>240</a>
<a id='n241' href='#n241'>241</a>
<a id='n242' href='#n242'>242</a>
<a id='n243' href='#n243'>243</a>
<a id='n244' href='#n244'>244</a>
<a id='n245' href='#n245'>245</a>
<a id='n246' href='#n246'>246</a>
<a id='n247' href='#n247'>247</a>
<a id='n248' href='#n248'>248</a>
<a id='n249' href='#n249'>249</a>
<a id='n250' href='#n250'>250</a>
<a id='n251' href='#n251'>251</a>
<a id='n252' href='#n252'>252</a>
<a id='n253' href='#n253'>253</a>
<a id='n254' href='#n254'>254</a>
<a id='n255' href='#n255'>255</a>
<a id='n256' href='#n256'>256</a>
<a id='n257' href='#n257'>257</a>
<a id='n258' href='#n258'>258</a>
<a id='n259' href='#n259'>259</a>
<a id='n260' href='#n260'>260</a>
<a id='n261' href='#n261'>261</a>
<a id='n262' href='#n262'>262</a>
<a id='n263' href='#n263'>263</a>
<a id='n264' href='#n264'>264</a>
<a id='n265' href='#n265'>265</a>
<a id='n266' href='#n266'>266</a>
<a id='n267' href='#n267'>267</a>
<a id='n268' href='#n268'>268</a>
<a id='n269' href='#n269'>269</a>
<a id='n270' href='#n270'>270</a>
<a id='n271' href='#n271'>271</a>
<a id='n272' href='#n272'>272</a>
<a id='n273' href='#n273'>273</a>
<a id='n274' href='#n274'>274</a>
<a id='n275' href='#n275'>275</a>
<a id='n276' href='#n276'>276</a>
<a id='n277' href='#n277'>277</a>
<a id='n278' href='#n278'>278</a>
<a id='n279' href='#n279'>279</a>
<a id='n280' href='#n280'>280</a>
<a id='n281' href='#n281'>281</a>
<a id='n282' href='#n282'>282</a>
<a id='n283' href='#n283'>283</a>
<a id='n284' href='#n284'>284</a>
<a id='n285' href='#n285'>285</a>
<a id='n286' href='#n286'>286</a>
<a id='n287' href='#n287'>287</a>
<a id='n288' href='#n288'>288</a>
<a id='n289' href='#n289'>289</a>
<a id='n290' href='#n290'>290</a>
<a id='n291' href='#n291'>291</a>
<a id='n292' href='#n292'>292</a>
<a id='n293' href='#n293'>293</a>
<a id='n294' href='#n294'>294</a>
<a id='n295' href='#n295'>295</a>
<a id='n296' href='#n296'>296</a>
<a id='n297' href='#n297'>297</a>
<a id='n298' href='#n298'>298</a>
<a id='n299' href='#n299'>299</a>
<a id='n300' href='#n300'>300</a>
<a id='n301' href='#n301'>301</a>
<a id='n302' href='#n302'>302</a>
<a id='n303' href='#n303'>303</a>
<a id='n304' href='#n304'>304</a>
<a id='n305' href='#n305'>305</a>
<a id='n306' href='#n306'>306</a>
<a id='n307' href='#n307'>307</a>
<a id='n308' href='#n308'>308</a>
<a id='n309' href='#n309'>309</a>
<a id='n310' href='#n310'>310</a>
<a id='n311' href='#n311'>311</a>
<a id='n312' href='#n312'>312</a>
<a id='n313' href='#n313'>313</a>
<a id='n314' href='#n314'>314</a>
<a id='n315' href='#n315'>315</a>
<a id='n316' href='#n316'>316</a>
<a id='n317' href='#n317'>317</a>
<a id='n318' href='#n318'>318</a>
<a id='n319' href='#n319'>319</a>
<a id='n320' href='#n320'>320</a>
<a id='n321' href='#n321'>321</a>
<a id='n322' href='#n322'>322</a>
<a id='n323' href='#n323'>323</a>
<a id='n324' href='#n324'>324</a>
<a id='n325' href='#n325'>325</a>
<a id='n326' href='#n326'>326</a>
<a id='n327' href='#n327'>327</a>
<a id='n328' href='#n328'>328</a>
<a id='n329' href='#n329'>329</a>
<a id='n330' href='#n330'>330</a>
<a id='n331' href='#n331'>331</a>
<a id='n332' href='#n332'>332</a>
<a id='n333' href='#n333'>333</a>
<a id='n334' href='#n334'>334</a>
<a id='n335' href='#n335'>335</a>
<a id='n336' href='#n336'>336</a>
<a id='n337' href='#n337'>337</a>
<a id='n338' href='#n338'>338</a>
<a id='n339' href='#n339'>339</a>
<a id='n340' href='#n340'>340</a>
<a id='n341' href='#n341'>341</a>
<a id='n342' href='#n342'>342</a>
<a id='n343' href='#n343'>343</a>
<a id='n344' href='#n344'>344</a>
<a id='n345' href='#n345'>345</a>
<a id='n346' href='#n346'>346</a>
<a id='n347' href='#n347'>347</a>
<a id='n348' href='#n348'>348</a>
<a id='n349' href='#n349'>349</a>
<a id='n350' href='#n350'>350</a>
<a id='n351' href='#n351'>351</a>
<a id='n352' href='#n352'>352</a>
<a id='n353' href='#n353'>353</a>
<a id='n354' href='#n354'>354</a>
<a id='n355' href='#n355'>355</a>
<a id='n356' href='#n356'>356</a>
<a id='n357' href='#n357'>357</a>
<a id='n358' href='#n358'>358</a>
<a id='n359' href='#n359'>359</a>
<a id='n360' href='#n360'>360</a>
<a id='n361' href='#n361'>361</a>
<a id='n362' href='#n362'>362</a>
<a id='n363' href='#n363'>363</a>
<a id='n364' href='#n364'>364</a>
<a id='n365' href='#n365'>365</a>
<a id='n366' href='#n366'>366</a>
<a id='n367' href='#n367'>367</a>
<a id='n368' href='#n368'>368</a>
<a id='n369' href='#n369'>369</a>
<a id='n370' href='#n370'>370</a>
<a id='n371' href='#n371'>371</a>
<a id='n372' href='#n372'>372</a>
<a id='n373' href='#n373'>373</a>
<a id='n374' href='#n374'>374</a>
<a id='n375' href='#n375'>375</a>
<a id='n376' href='#n376'>376</a>
<a id='n377' href='#n377'>377</a>
<a id='n378' href='#n378'>378</a>
<a id='n379' href='#n379'>379</a>
<a id='n380' href='#n380'>380</a>
<a id='n381' href='#n381'>381</a>
<a id='n382' href='#n382'>382</a>
<a id='n383' href='#n383'>383</a>
<a id='n384' href='#n384'>384</a>
<a id='n385' href='#n385'>385</a>
<a id='n386' href='#n386'>386</a>
<a id='n387' href='#n387'>387</a>
<a id='n388' href='#n388'>388</a>
<a id='n389' href='#n389'>389</a>
<a id='n390' href='#n390'>390</a>
<a id='n391' href='#n391'>391</a>
<a id='n392' href='#n392'>392</a>
<a id='n393' href='#n393'>393</a>
<a id='n394' href='#n394'>394</a>
<a id='n395' href='#n395'>395</a>
<a id='n396' href='#n396'>396</a>
<a id='n397' href='#n397'>397</a>
<a id='n398' href='#n398'>398</a>
<a id='n399' href='#n399'>399</a>
<a id='n400' href='#n400'>400</a>
<a id='n401' href='#n401'>401</a>
<a id='n402' href='#n402'>402</a>
<a id='n403' href='#n403'>403</a>
<a id='n404' href='#n404'>404</a>
<a id='n405' href='#n405'>405</a>
<a id='n406' href='#n406'>406</a>
<a id='n407' href='#n407'>407</a>
<a id='n408' href='#n408'>408</a>
<a id='n409' href='#n409'>409</a>
<a id='n410' href='#n410'>410</a>
<a id='n411' href='#n411'>411</a>
<a id='n412' href='#n412'>412</a>
<a id='n413' href='#n413'>413</a>
<a id='n414' href='#n414'>414</a>
<a id='n415' href='#n415'>415</a>
<a id='n416' href='#n416'>416</a>
<a id='n417' href='#n417'>417</a>
<a id='n418' href='#n418'>418</a>
<a id='n419' href='#n419'>419</a>
<a id='n420' href='#n420'>420</a>
<a id='n421' href='#n421'>421</a>
<a id='n422' href='#n422'>422</a>
<a id='n423' href='#n423'>423</a>
<a id='n424' href='#n424'>424</a>
<a id='n425' href='#n425'>425</a>
<a id='n426' href='#n426'>426</a>
<a id='n427' href='#n427'>427</a>
<a id='n428' href='#n428'>428</a>
<a id='n429' href='#n429'>429</a>
<a id='n430' href='#n430'>430</a>
<a id='n431' href='#n431'>431</a>
<a id='n432' href='#n432'>432</a>
<a id='n433' href='#n433'>433</a>
<a id='n434' href='#n434'>434</a>
<a id='n435' href='#n435'>435</a>
<a id='n436' href='#n436'>436</a>
<a id='n437' href='#n437'>437</a>
<a id='n438' href='#n438'>438</a>
<a id='n439' href='#n439'>439</a>
<a id='n440' href='#n440'>440</a>
<a id='n441' href='#n441'>441</a>
<a id='n442' href='#n442'>442</a>
<a id='n443' href='#n443'>443</a>
<a id='n444' href='#n444'>444</a>
<a id='n445' href='#n445'>445</a>
<a id='n446' href='#n446'>446</a>
<a id='n447' href='#n447'>447</a>
<a id='n448' href='#n448'>448</a>
<a id='n449' href='#n449'>449</a>
<a id='n450' href='#n450'>450</a>
<a id='n451' href='#n451'>451</a>
<a id='n452' href='#n452'>452</a>
<a id='n453' href='#n453'>453</a>
<a id='n454' href='#n454'>454</a>
<a id='n455' href='#n455'>455</a>
<a id='n456' href='#n456'>456</a>
<a id='n457' href='#n457'>457</a>
<a id='n458' href='#n458'>458</a>
<a id='n459' href='#n459'>459</a>
<a id='n460' href='#n460'>460</a>
<a id='n461' href='#n461'>461</a>
<a id='n462' href='#n462'>462</a>
<a id='n463' href='#n463'>463</a>
<a id='n464' href='#n464'>464</a>
<a id='n465' href='#n465'>465</a>
<a id='n466' href='#n466'>466</a>
<a id='n467' href='#n467'>467</a>
<a id='n468' href='#n468'>468</a>
<a id='n469' href='#n469'>469</a>
<a id='n470' href='#n470'>470</a>
<a id='n471' href='#n471'>471</a>
<a id='n472' href='#n472'>472</a>
<a id='n473' href='#n473'>473</a>
<a id='n474' href='#n474'>474</a>
<a id='n475' href='#n475'>475</a>
<a id='n476' href='#n476'>476</a>
<a id='n477' href='#n477'>477</a>
<a id='n478' href='#n478'>478</a>
<a id='n479' href='#n479'>479</a>
<a id='n480' href='#n480'>480</a>
<a id='n481' href='#n481'>481</a>
<a id='n482' href='#n482'>482</a>
<a id='n483' href='#n483'>483</a>
<a id='n484' href='#n484'>484</a>
<a id='n485' href='#n485'>485</a>
<a id='n486' href='#n486'>486</a>
<a id='n487' href='#n487'>487</a>
<a id='n488' href='#n488'>488</a>
<a id='n489' href='#n489'>489</a>
<a id='n490' href='#n490'>490</a>
<a id='n491' href='#n491'>491</a>
<a id='n492' href='#n492'>492</a>
<a id='n493' href='#n493'>493</a>
<a id='n494' href='#n494'>494</a>
<a id='n495' href='#n495'>495</a>
<a id='n496' href='#n496'>496</a>
<a id='n497' href='#n497'>497</a>
<a id='n498' href='#n498'>498</a>
<a id='n499' href='#n499'>499</a>
<a id='n500' href='#n500'>500</a>
<a id='n501' href='#n501'>501</a>
<a id='n502' href='#n502'>502</a>
<a id='n503' href='#n503'>503</a>
<a id='n504' href='#n504'>504</a>
<a id='n505' href='#n505'>505</a>
<a id='n506' href='#n506'>506</a>
<a id='n507' href='#n507'>507</a>
<a id='n508' href='#n508'>508</a>
<a id='n509' href='#n509'>509</a>
<a id='n510' href='#n510'>510</a>
<a id='n511' href='#n511'>511</a>
<a id='n512' href='#n512'>512</a>
<a id='n513' href='#n513'>513</a>
<a id='n514' href='#n514'>514</a>
<a id='n515' href='#n515'>515</a>
<a id='n516' href='#n516'>516</a>
<a id='n517' href='#n517'>517</a>
<a id='n518' href='#n518'>518</a>
<a id='n519' href='#n519'>519</a>
<a id='n520' href='#n520'>520</a>
<a id='n521' href='#n521'>521</a>
<a id='n522' href='#n522'>522</a>
<a id='n523' href='#n523'>523</a>
<a id='n524' href='#n524'>524</a>
<a id='n525' href='#n525'>525</a>
<a id='n526' href='#n526'>526</a>
<a id='n527' href='#n527'>527</a>
<a id='n528' href='#n528'>528</a>
<a id='n529' href='#n529'>529</a>
<a id='n530' href='#n530'>530</a>
<a id='n531' href='#n531'>531</a>
<a id='n532' href='#n532'>532</a>
<a id='n533' href='#n533'>533</a>
<a id='n534' href='#n534'>534</a>
<a id='n535' href='#n535'>535</a>
<a id='n536' href='#n536'>536</a>
<a id='n537' href='#n537'>537</a>
<a id='n538' href='#n538'>538</a>
<a id='n539' href='#n539'>539</a>
<a id='n540' href='#n540'>540</a>
<a id='n541' href='#n541'>541</a>
<a id='n542' href='#n542'>542</a>
<a id='n543' href='#n543'>543</a>
<a id='n544' href='#n544'>544</a>
<a id='n545' href='#n545'>545</a>
<a id='n546' href='#n546'>546</a>
<a id='n547' href='#n547'>547</a>
<a id='n548' href='#n548'>548</a>
<a id='n549' href='#n549'>549</a>
<a id='n550' href='#n550'>550</a>
<a id='n551' href='#n551'>551</a>
<a id='n552' href='#n552'>552</a>
<a id='n553' href='#n553'>553</a>
<a id='n554' href='#n554'>554</a>
<a id='n555' href='#n555'>555</a>
<a id='n556' href='#n556'>556</a>
<a id='n557' href='#n557'>557</a>
<a id='n558' href='#n558'>558</a>
<a id='n559' href='#n559'>559</a>
<a id='n560' href='#n560'>560</a>
<a id='n561' href='#n561'>561</a>
<a id='n562' href='#n562'>562</a>
<a id='n563' href='#n563'>563</a>
<a id='n564' href='#n564'>564</a>
<a id='n565' href='#n565'>565</a>
<a id='n566' href='#n566'>566</a>
<a id='n567' href='#n567'>567</a>
<a id='n568' href='#n568'>568</a>
<a id='n569' href='#n569'>569</a>
<a id='n570' href='#n570'>570</a>
<a id='n571' href='#n571'>571</a>
<a id='n572' href='#n572'>572</a>
<a id='n573' href='#n573'>573</a>
<a id='n574' href='#n574'>574</a>
<a id='n575' href='#n575'>575</a>
<a id='n576' href='#n576'>576</a>
<a id='n577' href='#n577'>577</a>
<a id='n578' href='#n578'>578</a>
<a id='n579' href='#n579'>579</a>
<a id='n580' href='#n580'>580</a>
<a id='n581' href='#n581'>581</a>
<a id='n582' href='#n582'>582</a>
<a id='n583' href='#n583'>583</a>
<a id='n584' href='#n584'>584</a>
<a id='n585' href='#n585'>585</a>
<a id='n586' href='#n586'>586</a>
<a id='n587' href='#n587'>587</a>
<a id='n588' href='#n588'>588</a>
<a id='n589' href='#n589'>589</a>
<a id='n590' href='#n590'>590</a>
<a id='n591' href='#n591'>591</a>
<a id='n592' href='#n592'>592</a>
<a id='n593' href='#n593'>593</a>
<a id='n594' href='#n594'>594</a>
<a id='n595' href='#n595'>595</a>
<a id='n596' href='#n596'>596</a>
<a id='n597' href='#n597'>597</a>
<a id='n598' href='#n598'>598</a>
<a id='n599' href='#n599'>599</a>
<a id='n600' href='#n600'>600</a>
<a id='n601' href='#n601'>601</a>
<a id='n602' href='#n602'>602</a>
<a id='n603' href='#n603'>603</a>
<a id='n604' href='#n604'>604</a>
<a id='n605' href='#n605'>605</a>
<a id='n606' href='#n606'>606</a>
<a id='n607' href='#n607'>607</a>
<a id='n608' href='#n608'>608</a>
<a id='n609' href='#n609'>609</a>
<a id='n610' href='#n610'>610</a>
<a id='n611' href='#n611'>611</a>
<a id='n612' href='#n612'>612</a>
<a id='n613' href='#n613'>613</a>
<a id='n614' href='#n614'>614</a>
<a id='n615' href='#n615'>615</a>
<a id='n616' href='#n616'>616</a>
<a id='n617' href='#n617'>617</a>
<a id='n618' href='#n618'>618</a>
<a id='n619' href='#n619'>619</a>
<a id='n620' href='#n620'>620</a>
<a id='n621' href='#n621'>621</a>
<a id='n622' href='#n622'>622</a>
<a id='n623' href='#n623'>623</a>
<a id='n624' href='#n624'>624</a>
<a id='n625' href='#n625'>625</a>
<a id='n626' href='#n626'>626</a>
<a id='n627' href='#n627'>627</a>
<a id='n628' href='#n628'>628</a>
<a id='n629' href='#n629'>629</a>
<a id='n630' href='#n630'>630</a>
<a id='n631' href='#n631'>631</a>
<a id='n632' href='#n632'>632</a>
<a id='n633' href='#n633'>633</a>
<a id='n634' href='#n634'>634</a>
<a id='n635' href='#n635'>635</a>
<a id='n636' href='#n636'>636</a>
<a id='n637' href='#n637'>637</a>
<a id='n638' href='#n638'>638</a>
<a id='n639' href='#n639'>639</a>
<a id='n640' href='#n640'>640</a>
<a id='n641' href='#n641'>641</a>
<a id='n642' href='#n642'>642</a>
<a id='n643' href='#n643'>643</a>
<a id='n644' href='#n644'>644</a>
<a id='n645' href='#n645'>645</a>
<a id='n646' href='#n646'>646</a>
<a id='n647' href='#n647'>647</a>
<a id='n648' href='#n648'>648</a>
<a id='n649' href='#n649'>649</a>
<a id='n650' href='#n650'>650</a>
<a id='n651' href='#n651'>651</a>
<a id='n652' href='#n652'>652</a>
<a id='n653' href='#n653'>653</a>
<a id='n654' href='#n654'>654</a>
<a id='n655' href='#n655'>655</a>
<a id='n656' href='#n656'>656</a>
<a id='n657' href='#n657'>657</a>
<a id='n658' href='#n658'>658</a>
<a id='n659' href='#n659'>659</a>
<a id='n660' href='#n660'>660</a>
<a id='n661' href='#n661'>661</a>
<a id='n662' href='#n662'>662</a>
<a id='n663' href='#n663'>663</a>
<a id='n664' href='#n664'>664</a>
<a id='n665' href='#n665'>665</a>
<a id='n666' href='#n666'>666</a>
<a id='n667' href='#n667'>667</a>
<a id='n668' href='#n668'>668</a>
<a id='n669' href='#n669'>669</a>
<a id='n670' href='#n670'>670</a>
<a id='n671' href='#n671'>671</a>
<a id='n672' href='#n672'>672</a>
<a id='n673' href='#n673'>673</a>
<a id='n674' href='#n674'>674</a>
<a id='n675' href='#n675'>675</a>
<a id='n676' href='#n676'>676</a>
<a id='n677' href='#n677'>677</a>
<a id='n678' href='#n678'>678</a>
<a id='n679' href='#n679'>679</a>
<a id='n680' href='#n680'>680</a>
<a id='n681' href='#n681'>681</a>
<a id='n682' href='#n682'>682</a>
<a id='n683' href='#n683'>683</a>
<a id='n684' href='#n684'>684</a>
<a id='n685' href='#n685'>685</a>
<a id='n686' href='#n686'>686</a>
<a id='n687' href='#n687'>687</a>
<a id='n688' href='#n688'>688</a>
<a id='n689' href='#n689'>689</a>
<a id='n690' href='#n690'>690</a>
<a id='n691' href='#n691'>691</a>
<a id='n692' href='#n692'>692</a>
<a id='n693' href='#n693'>693</a>
<a id='n694' href='#n694'>694</a>
<a id='n695' href='#n695'>695</a>
<a id='n696' href='#n696'>696</a>
<a id='n697' href='#n697'>697</a>
<a id='n698' href='#n698'>698</a>
<a id='n699' href='#n699'>699</a>
<a id='n700' href='#n700'>700</a>
<a id='n701' href='#n701'>701</a>
<a id='n702' href='#n702'>702</a>
<a id='n703' href='#n703'>703</a>
<a id='n704' href='#n704'>704</a>
<a id='n705' href='#n705'>705</a>
<a id='n706' href='#n706'>706</a>
<a id='n707' href='#n707'>707</a>
<a id='n708' href='#n708'>708</a>
<a id='n709' href='#n709'>709</a>
<a id='n710' href='#n710'>710</a>
<a id='n711' href='#n711'>711</a>
<a id='n712' href='#n712'>712</a>
<a id='n713' href='#n713'>713</a>
<a id='n714' href='#n714'>714</a>
<a id='n715' href='#n715'>715</a>
<a id='n716' href='#n716'>716</a>
<a id='n717' href='#n717'>717</a>
<a id='n718' href='#n718'>718</a>
<a id='n719' href='#n719'>719</a>
<a id='n720' href='#n720'>720</a>
<a id='n721' href='#n721'>721</a>
<a id='n722' href='#n722'>722</a>
<a id='n723' href='#n723'>723</a>
<a id='n724' href='#n724'>724</a>
<a id='n725' href='#n725'>725</a>
<a id='n726' href='#n726'>726</a>
<a id='n727' href='#n727'>727</a>
<a id='n728' href='#n728'>728</a>
<a id='n729' href='#n729'>729</a>
<a id='n730' href='#n730'>730</a>
<a id='n731' href='#n731'>731</a>
<a id='n732' href='#n732'>732</a>
<a id='n733' href='#n733'>733</a>
<a id='n734' href='#n734'>734</a>
<a id='n735' href='#n735'>735</a>
<a id='n736' href='#n736'>736</a>
<a id='n737' href='#n737'>737</a>
<a id='n738' href='#n738'>738</a>
<a id='n739' href='#n739'>739</a>
<a id='n740' href='#n740'>740</a>
<a id='n741' href='#n741'>741</a>
<a id='n742' href='#n742'>742</a>
<a id='n743' href='#n743'>743</a>
<a id='n744' href='#n744'>744</a>
<a id='n745' href='#n745'>745</a>
<a id='n746' href='#n746'>746</a>
<a id='n747' href='#n747'>747</a>
<a id='n748' href='#n748'>748</a>
<a id='n749' href='#n749'>749</a>
<a id='n750' href='#n750'>750</a>
<a id='n751' href='#n751'>751</a>
<a id='n752' href='#n752'>752</a>
<a id='n753' href='#n753'>753</a>
<a id='n754' href='#n754'>754</a>
<a id='n755' href='#n755'>755</a>
<a id='n756' href='#n756'>756</a>
<a id='n757' href='#n757'>757</a>
<a id='n758' href='#n758'>758</a>
<a id='n759' href='#n759'>759</a>
<a id='n760' href='#n760'>760</a>
<a id='n761' href='#n761'>761</a>
<a id='n762' href='#n762'>762</a>
<a id='n763' href='#n763'>763</a>
<a id='n764' href='#n764'>764</a>
<a id='n765' href='#n765'>765</a>
<a id='n766' href='#n766'>766</a>
<a id='n767' href='#n767'>767</a>
<a id='n768' href='#n768'>768</a>
<a id='n769' href='#n769'>769</a>
<a id='n770' href='#n770'>770</a>
<a id='n771' href='#n771'>771</a>
<a id='n772' href='#n772'>772</a>
<a id='n773' href='#n773'>773</a>
<a id='n774' href='#n774'>774</a>
<a id='n775' href='#n775'>775</a>
<a id='n776' href='#n776'>776</a>
<a id='n777' href='#n777'>777</a>
<a id='n778' href='#n778'>778</a>
<a id='n779' href='#n779'>779</a>
<a id='n780' href='#n780'>780</a>
<a id='n781' href='#n781'>781</a>
<a id='n782' href='#n782'>782</a>
<a id='n783' href='#n783'>783</a>
<a id='n784' href='#n784'>784</a>
<a id='n785' href='#n785'>785</a>
<a id='n786' href='#n786'>786</a>
<a id='n787' href='#n787'>787</a>
<a id='n788' href='#n788'>788</a>
<a id='n789' href='#n789'>789</a>
<a id='n790' href='#n790'>790</a>
<a id='n791' href='#n791'>791</a>
<a id='n792' href='#n792'>792</a>
<a id='n793' href='#n793'>793</a>
<a id='n794' href='#n794'>794</a>
<a id='n795' href='#n795'>795</a>
<a id='n796' href='#n796'>796</a>
<a id='n797' href='#n797'>797</a>
<a id='n798' href='#n798'>798</a>
<a id='n799' href='#n799'>799</a>
<a id='n800' href='#n800'>800</a>
<a id='n801' href='#n801'>801</a>
<a id='n802' href='#n802'>802</a>
<a id='n803' href='#n803'>803</a>
<a id='n804' href='#n804'>804</a>
<a id='n805' href='#n805'>805</a>
<a id='n806' href='#n806'>806</a>
<a id='n807' href='#n807'>807</a>
<a id='n808' href='#n808'>808</a>
<a id='n809' href='#n809'>809</a>
<a id='n810' href='#n810'>810</a>
<a id='n811' href='#n811'>811</a>
<a id='n812' href='#n812'>812</a>
<a id='n813' href='#n813'>813</a>
<a id='n814' href='#n814'>814</a>
<a id='n815' href='#n815'>815</a>
<a id='n816' href='#n816'>816</a>
<a id='n817' href='#n817'>817</a>
<a id='n818' href='#n818'>818</a>
<a id='n819' href='#n819'>819</a>
<a id='n820' href='#n820'>820</a>
<a id='n821' href='#n821'>821</a>
<a id='n822' href='#n822'>822</a>
<a id='n823' href='#n823'>823</a>
<a id='n824' href='#n824'>824</a>
<a id='n825' href='#n825'>825</a>
<a id='n826' href='#n826'>826</a>
<a id='n827' href='#n827'>827</a>
<a id='n828' href='#n828'>828</a>
<a id='n829' href='#n829'>829</a>
<a id='n830' href='#n830'>830</a>
<a id='n831' href='#n831'>831</a>
<a id='n832' href='#n832'>832</a>
<a id='n833' href='#n833'>833</a>
<a id='n834' href='#n834'>834</a>
<a id='n835' href='#n835'>835</a>
<a id='n836' href='#n836'>836</a>
<a id='n837' href='#n837'>837</a>
<a id='n838' href='#n838'>838</a>
<a id='n839' href='#n839'>839</a>
<a id='n840' href='#n840'>840</a>
<a id='n841' href='#n841'>841</a>
<a id='n842' href='#n842'>842</a>
<a id='n843' href='#n843'>843</a>
<a id='n844' href='#n844'>844</a>
<a id='n845' href='#n845'>845</a>
<a id='n846' href='#n846'>846</a>
<a id='n847' href='#n847'>847</a>
<a id='n848' href='#n848'>848</a>
<a id='n849' href='#n849'>849</a>
<a id='n850' href='#n850'>850</a>
<a id='n851' href='#n851'>851</a>
<a id='n852' href='#n852'>852</a>
<a id='n853' href='#n853'>853</a>
<a id='n854' href='#n854'>854</a>
<a id='n855' href='#n855'>855</a>
<a id='n856' href='#n856'>856</a>
<a id='n857' href='#n857'>857</a>
<a id='n858' href='#n858'>858</a>
<a id='n859' href='#n859'>859</a>
<a id='n860' href='#n860'>860</a>
<a id='n861' href='#n861'>861</a>
<a id='n862' href='#n862'>862</a>
<a id='n863' href='#n863'>863</a>
<a id='n864' href='#n864'>864</a>
<a id='n865' href='#n865'>865</a>
<a id='n866' href='#n866'>866</a>
<a id='n867' href='#n867'>867</a>
<a id='n868' href='#n868'>868</a>
<a id='n869' href='#n869'>869</a>
<a id='n870' href='#n870'>870</a>
<a id='n871' href='#n871'>871</a>
<a id='n872' href='#n872'>872</a>
<a id='n873' href='#n873'>873</a>
<a id='n874' href='#n874'>874</a>
<a id='n875' href='#n875'>875</a>
<a id='n876' href='#n876'>876</a>
<a id='n877' href='#n877'>877</a>
<a id='n878' href='#n878'>878</a>
<a id='n879' href='#n879'>879</a>
<a id='n880' href='#n880'>880</a>
<a id='n881' href='#n881'>881</a>
<a id='n882' href='#n882'>882</a>
<a id='n883' href='#n883'>883</a>
<a id='n884' href='#n884'>884</a>
<a id='n885' href='#n885'>885</a>
<a id='n886' href='#n886'>886</a>
<a id='n887' href='#n887'>887</a>
<a id='n888' href='#n888'>888</a>
<a id='n889' href='#n889'>889</a>
<a id='n890' href='#n890'>890</a>
<a id='n891' href='#n891'>891</a>
<a id='n892' href='#n892'>892</a>
<a id='n893' href='#n893'>893</a>
<a id='n894' href='#n894'>894</a>
<a id='n895' href='#n895'>895</a>
<a id='n896' href='#n896'>896</a>
<a id='n897' href='#n897'>897</a>
<a id='n898' href='#n898'>898</a>
<a id='n899' href='#n899'>899</a>
<a id='n900' href='#n900'>900</a>
<a id='n901' href='#n901'>901</a>
<a id='n902' href='#n902'>902</a>
<a id='n903' href='#n903'>903</a>
<a id='n904' href='#n904'>904</a>
<a id='n905' href='#n905'>905</a>
<a id='n906' href='#n906'>906</a>
<a id='n907' href='#n907'>907</a>
<a id='n908' href='#n908'>908</a>
<a id='n909' href='#n909'>909</a>
<a id='n910' href='#n910'>910</a>
<a id='n911' href='#n911'>911</a>
<a id='n912' href='#n912'>912</a>
<a id='n913' href='#n913'>913</a>
<a id='n914' href='#n914'>914</a>
<a id='n915' href='#n915'>915</a>
<a id='n916' href='#n916'>916</a>
<a id='n917' href='#n917'>917</a>
<a id='n918' href='#n918'>918</a>
<a id='n919' href='#n919'>919</a>
<a id='n920' href='#n920'>920</a>
<a id='n921' href='#n921'>921</a>
<a id='n922' href='#n922'>922</a>
<a id='n923' href='#n923'>923</a>
<a id='n924' href='#n924'>924</a>
<a id='n925' href='#n925'>925</a>
<a id='n926' href='#n926'>926</a>
<a id='n927' href='#n927'>927</a>
<a id='n928' href='#n928'>928</a>
<a id='n929' href='#n929'>929</a>
<a id='n930' href='#n930'>930</a>
<a id='n931' href='#n931'>931</a>
<a id='n932' href='#n932'>932</a>
<a id='n933' href='#n933'>933</a>
<a id='n934' href='#n934'>934</a>
<a id='n935' href='#n935'>935</a>
<a id='n936' href='#n936'>936</a>
<a id='n937' href='#n937'>937</a>
<a id='n938' href='#n938'>938</a>
<a id='n939' href='#n939'>939</a>
<a id='n940' href='#n940'>940</a>
<a id='n941' href='#n941'>941</a>
<a id='n942' href='#n942'>942</a>
<a id='n943' href='#n943'>943</a>
<a id='n944' href='#n944'>944</a>
<a id='n945' href='#n945'>945</a>
<a id='n946' href='#n946'>946</a>
<a id='n947' href='#n947'>947</a>
<a id='n948' href='#n948'>948</a>
<a id='n949' href='#n949'>949</a>
<a id='n950' href='#n950'>950</a>
<a id='n951' href='#n951'>951</a>
<a id='n952' href='#n952'>952</a>
<a id='n953' href='#n953'>953</a>
<a id='n954' href='#n954'>954</a>
<a id='n955' href='#n955'>955</a>
<a id='n956' href='#n956'>956</a>
<a id='n957' href='#n957'>957</a>
<a id='n958' href='#n958'>958</a>
<a id='n959' href='#n959'>959</a>
<a id='n960' href='#n960'>960</a>
<a id='n961' href='#n961'>961</a>
<a id='n962' href='#n962'>962</a>
<a id='n963' href='#n963'>963</a>
<a id='n964' href='#n964'>964</a>
<a id='n965' href='#n965'>965</a>
<a id='n966' href='#n966'>966</a>
<a id='n967' href='#n967'>967</a>
<a id='n968' href='#n968'>968</a>
<a id='n969' href='#n969'>969</a>
<a id='n970' href='#n970'>970</a>
<a id='n971' href='#n971'>971</a>
<a id='n972' href='#n972'>972</a>
<a id='n973' href='#n973'>973</a>
<a id='n974' href='#n974'>974</a>
<a id='n975' href='#n975'>975</a>
<a id='n976' href='#n976'>976</a>
<a id='n977' href='#n977'>977</a>
<a id='n978' href='#n978'>978</a>
<a id='n979' href='#n979'>979</a>
<a id='n980' href='#n980'>980</a>
<a id='n981' href='#n981'>981</a>
<a id='n982' href='#n982'>982</a>
<a id='n983' href='#n983'>983</a>
<a id='n984' href='#n984'>984</a>
<a id='n985' href='#n985'>985</a>
<a id='n986' href='#n986'>986</a>
<a id='n987' href='#n987'>987</a>
<a id='n988' href='#n988'>988</a>
<a id='n989' href='#n989'>989</a>
<a id='n990' href='#n990'>990</a>
<a id='n991' href='#n991'>991</a>
<a id='n992' href='#n992'>992</a>
<a id='n993' href='#n993'>993</a>
<a id='n994' href='#n994'>994</a>
<a id='n995' href='#n995'>995</a>
<a id='n996' href='#n996'>996</a>
<a id='n997' href='#n997'>997</a>
<a id='n998' href='#n998'>998</a>
<a id='n999' href='#n999'>999</a>
<a id='n1000' href='#n1000'>1000</a>
<a id='n1001' href='#n1001'>1001</a>
<a id='n1002' href='#n1002'>1002</a>
<a id='n1003' href='#n1003'>1003</a>
<a id='n1004' href='#n1004'>1004</a>
<a id='n1005' href='#n1005'>1005</a>
<a id='n1006' href='#n1006'>1006</a>
<a id='n1007' href='#n1007'>1007</a>
<a id='n1008' href='#n1008'>1008</a>
<a id='n1009' href='#n1009'>1009</a>
<a id='n1010' href='#n1010'>1010</a>
<a id='n1011' href='#n1011'>1011</a>
<a id='n1012' href='#n1012'>1012</a>
<a id='n1013' href='#n1013'>1013</a>
<a id='n1014' href='#n1014'>1014</a>
<a id='n1015' href='#n1015'>1015</a>
<a id='n1016' href='#n1016'>1016</a>
<a id='n1017' href='#n1017'>1017</a>
<a id='n1018' href='#n1018'>1018</a>
<a id='n1019' href='#n1019'>1019</a>
<a id='n1020' href='#n1020'>1020</a>
<a id='n1021' href='#n1021'>1021</a>
<a id='n1022' href='#n1022'>1022</a>
<a id='n1023' href='#n1023'>1023</a>
<a id='n1024' href='#n1024'>1024</a>
<a id='n1025' href='#n1025'>1025</a>
<a id='n1026' href='#n1026'>1026</a>
<a id='n1027' href='#n1027'>1027</a>
<a id='n1028' href='#n1028'>1028</a>
<a id='n1029' href='#n1029'>1029</a>
<a id='n1030' href='#n1030'>1030</a>
<a id='n1031' href='#n1031'>1031</a>
<a id='n1032' href='#n1032'>1032</a>
<a id='n1033' href='#n1033'>1033</a>
<a id='n1034' href='#n1034'>1034</a>
<a id='n1035' href='#n1035'>1035</a>
<a id='n1036' href='#n1036'>1036</a>
<a id='n1037' href='#n1037'>1037</a>
<a id='n1038' href='#n1038'>1038</a>
<a id='n1039' href='#n1039'>1039</a>
<a id='n1040' href='#n1040'>1040</a>
<a id='n1041' href='#n1041'>1041</a>
<a id='n1042' href='#n1042'>1042</a>
<a id='n1043' href='#n1043'>1043</a>
<a id='n1044' href='#n1044'>1044</a>
<a id='n1045' href='#n1045'>1045</a>
<a id='n1046' href='#n1046'>1046</a>
<a id='n1047' href='#n1047'>1047</a>
<a id='n1048' href='#n1048'>1048</a>
<a id='n1049' href='#n1049'>1049</a>
<a id='n1050' href='#n1050'>1050</a>
<a id='n1051' href='#n1051'>1051</a>
<a id='n1052' href='#n1052'>1052</a>
<a id='n1053' href='#n1053'>1053</a>
<a id='n1054' href='#n1054'>1054</a>
<a id='n1055' href='#n1055'>1055</a>
<a id='n1056' href='#n1056'>1056</a>
<a id='n1057' href='#n1057'>1057</a>
<a id='n1058' href='#n1058'>1058</a>
<a id='n1059' href='#n1059'>1059</a>
<a id='n1060' href='#n1060'>1060</a>
<a id='n1061' href='#n1061'>1061</a>
<a id='n1062' href='#n1062'>1062</a>
<a id='n1063' href='#n1063'>1063</a>
<a id='n1064' href='#n1064'>1064</a>
<a id='n1065' href='#n1065'>1065</a>
<a id='n1066' href='#n1066'>1066</a>
<a id='n1067' href='#n1067'>1067</a>
<a id='n1068' href='#n1068'>1068</a>
<a id='n1069' href='#n1069'>1069</a>
<a id='n1070' href='#n1070'>1070</a>
<a id='n1071' href='#n1071'>1071</a>
<a id='n1072' href='#n1072'>1072</a>
<a id='n1073' href='#n1073'>1073</a>
<a id='n1074' href='#n1074'>1074</a>
<a id='n1075' href='#n1075'>1075</a>
<a id='n1076' href='#n1076'>1076</a>
<a id='n1077' href='#n1077'>1077</a>
<a id='n1078' href='#n1078'>1078</a>
<a id='n1079' href='#n1079'>1079</a>
<a id='n1080' href='#n1080'>1080</a>
<a id='n1081' href='#n1081'>1081</a>
<a id='n1082' href='#n1082'>1082</a>
<a id='n1083' href='#n1083'>1083</a>
<a id='n1084' href='#n1084'>1084</a>
<a id='n1085' href='#n1085'>1085</a>
<a id='n1086' href='#n1086'>1086</a>
<a id='n1087' href='#n1087'>1087</a>
<a id='n1088' href='#n1088'>1088</a>
<a id='n1089' href='#n1089'>1089</a>
<a id='n1090' href='#n1090'>1090</a>
<a id='n1091' href='#n1091'>1091</a>
<a id='n1092' href='#n1092'>1092</a>
<a id='n1093' href='#n1093'>1093</a>
<a id='n1094' href='#n1094'>1094</a>
<a id='n1095' href='#n1095'>1095</a>
<a id='n1096' href='#n1096'>1096</a>
<a id='n1097' href='#n1097'>1097</a>
<a id='n1098' href='#n1098'>1098</a>
<a id='n1099' href='#n1099'>1099</a>
<a id='n1100' href='#n1100'>1100</a>
<a id='n1101' href='#n1101'>1101</a>
<a id='n1102' href='#n1102'>1102</a>
<a id='n1103' href='#n1103'>1103</a>
<a id='n1104' href='#n1104'>1104</a>
<a id='n1105' href='#n1105'>1105</a>
<a id='n1106' href='#n1106'>1106</a>
<a id='n1107' href='#n1107'>1107</a>
<a id='n1108' href='#n1108'>1108</a>
<a id='n1109' href='#n1109'>1109</a>
<a id='n1110' href='#n1110'>1110</a>
<a id='n1111' href='#n1111'>1111</a>
<a id='n1112' href='#n1112'>1112</a>
<a id='n1113' href='#n1113'>1113</a>
<a id='n1114' href='#n1114'>1114</a>
<a id='n1115' href='#n1115'>1115</a>
<a id='n1116' href='#n1116'>1116</a>
<a id='n1117' href='#n1117'>1117</a>
<a id='n1118' href='#n1118'>1118</a>
<a id='n1119' href='#n1119'>1119</a>
<a id='n1120' href='#n1120'>1120</a>
<a id='n1121' href='#n1121'>1121</a>
<a id='n1122' href='#n1122'>1122</a>
<a id='n1123' href='#n1123'>1123</a>
<a id='n1124' href='#n1124'>1124</a>
<a id='n1125' href='#n1125'>1125</a>
<a id='n1126' href='#n1126'>1126</a>
<a id='n1127' href='#n1127'>1127</a>
<a id='n1128' href='#n1128'>1128</a>
<a id='n1129' href='#n1129'>1129</a>
<a id='n1130' href='#n1130'>1130</a>
<a id='n1131' href='#n1131'>1131</a>
<a id='n1132' href='#n1132'>1132</a>
<a id='n1133' href='#n1133'>1133</a>
<a id='n1134' href='#n1134'>1134</a>
<a id='n1135' href='#n1135'>1135</a>
<a id='n1136' href='#n1136'>1136</a>
<a id='n1137' href='#n1137'>1137</a>
<a id='n1138' href='#n1138'>1138</a>
<a id='n1139' href='#n1139'>1139</a>
<a id='n1140' href='#n1140'>1140</a>
<a id='n1141' href='#n1141'>1141</a>
<a id='n1142' href='#n1142'>1142</a>
<a id='n1143' href='#n1143'>1143</a>
<a id='n1144' href='#n1144'>1144</a>
<a id='n1145' href='#n1145'>1145</a>
<a id='n1146' href='#n1146'>1146</a>
<a id='n1147' href='#n1147'>1147</a>
<a id='n1148' href='#n1148'>1148</a>
<a id='n1149' href='#n1149'>1149</a>
<a id='n1150' href='#n1150'>1150</a>
<a id='n1151' href='#n1151'>1151</a>
<a id='n1152' href='#n1152'>1152</a>
<a id='n1153' href='#n1153'>1153</a>
<a id='n1154' href='#n1154'>1154</a>
<a id='n1155' href='#n1155'>1155</a>
<a id='n1156' href='#n1156'>1156</a>
<a id='n1157' href='#n1157'>1157</a>
<a id='n1158' href='#n1158'>1158</a>
<a id='n1159' href='#n1159'>1159</a>
<a id='n1160' href='#n1160'>1160</a>
<a id='n1161' href='#n1161'>1161</a>
<a id='n1162' href='#n1162'>1162</a>
<a id='n1163' href='#n1163'>1163</a>
<a id='n1164' href='#n1164'>1164</a>
<a id='n1165' href='#n1165'>1165</a>
<a id='n1166' href='#n1166'>1166</a>
<a id='n1167' href='#n1167'>1167</a>
<a id='n1168' href='#n1168'>1168</a>
<a id='n1169' href='#n1169'>1169</a>
<a id='n1170' href='#n1170'>1170</a>
<a id='n1171' href='#n1171'>1171</a>
<a id='n1172' href='#n1172'>1172</a>
<a id='n1173' href='#n1173'>1173</a>
<a id='n1174' href='#n1174'>1174</a>
<a id='n1175' href='#n1175'>1175</a>
<a id='n1176' href='#n1176'>1176</a>
<a id='n1177' href='#n1177'>1177</a>
<a id='n1178' href='#n1178'>1178</a>
<a id='n1179' href='#n1179'>1179</a>
<a id='n1180' href='#n1180'>1180</a>
<a id='n1181' href='#n1181'>1181</a>
<a id='n1182' href='#n1182'>1182</a>
<a id='n1183' href='#n1183'>1183</a>
<a id='n1184' href='#n1184'>1184</a>
<a id='n1185' href='#n1185'>1185</a>
<a id='n1186' href='#n1186'>1186</a>
<a id='n1187' href='#n1187'>1187</a>
<a id='n1188' href='#n1188'>1188</a>
<a id='n1189' href='#n1189'>1189</a>
<a id='n1190' href='#n1190'>1190</a>
<a id='n1191' href='#n1191'>1191</a>
<a id='n1192' href='#n1192'>1192</a>
<a id='n1193' href='#n1193'>1193</a>
<a id='n1194' href='#n1194'>1194</a>
<a id='n1195' href='#n1195'>1195</a>
<a id='n1196' href='#n1196'>1196</a>
<a id='n1197' href='#n1197'>1197</a>
<a id='n1198' href='#n1198'>1198</a>
<a id='n1199' href='#n1199'>1199</a>
<a id='n1200' href='#n1200'>1200</a>
<a id='n1201' href='#n1201'>1201</a>
<a id='n1202' href='#n1202'>1202</a>
<a id='n1203' href='#n1203'>1203</a>
<a id='n1204' href='#n1204'>1204</a>
<a id='n1205' href='#n1205'>1205</a>
<a id='n1206' href='#n1206'>1206</a>
<a id='n1207' href='#n1207'>1207</a>
<a id='n1208' href='#n1208'>1208</a>
<a id='n1209' href='#n1209'>1209</a>
<a id='n1210' href='#n1210'>1210</a>
<a id='n1211' href='#n1211'>1211</a>
<a id='n1212' href='#n1212'>1212</a>
<a id='n1213' href='#n1213'>1213</a>
<a id='n1214' href='#n1214'>1214</a>
<a id='n1215' href='#n1215'>1215</a>
<a id='n1216' href='#n1216'>1216</a>
<a id='n1217' href='#n1217'>1217</a>
<a id='n1218' href='#n1218'>1218</a>
<a id='n1219' href='#n1219'>1219</a>
<a id='n1220' href='#n1220'>1220</a>
<a id='n1221' href='#n1221'>1221</a>
<a id='n1222' href='#n1222'>1222</a>
<a id='n1223' href='#n1223'>1223</a>
<a id='n1224' href='#n1224'>1224</a>
<a id='n1225' href='#n1225'>1225</a>
<a id='n1226' href='#n1226'>1226</a>
<a id='n1227' href='#n1227'>1227</a>
<a id='n1228' href='#n1228'>1228</a>
<a id='n1229' href='#n1229'>1229</a>
<a id='n1230' href='#n1230'>1230</a>
<a id='n1231' href='#n1231'>1231</a>
<a id='n1232' href='#n1232'>1232</a>
<a id='n1233' href='#n1233'>1233</a>
<a id='n1234' href='#n1234'>1234</a>
<a id='n1235' href='#n1235'>1235</a>
<a id='n1236' href='#n1236'>1236</a>
<a id='n1237' href='#n1237'>1237</a>
<a id='n1238' href='#n1238'>1238</a>
<a id='n1239' href='#n1239'>1239</a>
<a id='n1240' href='#n1240'>1240</a>
<a id='n1241' href='#n1241'>1241</a>
<a id='n1242' href='#n1242'>1242</a>
<a id='n1243' href='#n1243'>1243</a>
<a id='n1244' href='#n1244'>1244</a>
<a id='n1245' href='#n1245'>1245</a>
<a id='n1246' href='#n1246'>1246</a>
<a id='n1247' href='#n1247'>1247</a>
<a id='n1248' href='#n1248'>1248</a>
<a id='n1249' href='#n1249'>1249</a>
<a id='n1250' href='#n1250'>1250</a>
<a id='n1251' href='#n1251'>1251</a>
<a id='n1252' href='#n1252'>1252</a>
<a id='n1253' href='#n1253'>1253</a>
<a id='n1254' href='#n1254'>1254</a>
<a id='n1255' href='#n1255'>1255</a>
<a id='n1256' href='#n1256'>1256</a>
<a id='n1257' href='#n1257'>1257</a>
<a id='n1258' href='#n1258'>1258</a>
<a id='n1259' href='#n1259'>1259</a>
<a id='n1260' href='#n1260'>1260</a>
<a id='n1261' href='#n1261'>1261</a>
<a id='n1262' href='#n1262'>1262</a>
<a id='n1263' href='#n1263'>1263</a>
<a id='n1264' href='#n1264'>1264</a>
<a id='n1265' href='#n1265'>1265</a>
<a id='n1266' href='#n1266'>1266</a>
<a id='n1267' href='#n1267'>1267</a>
<a id='n1268' href='#n1268'>1268</a>
<a id='n1269' href='#n1269'>1269</a>
<a id='n1270' href='#n1270'>1270</a>
<a id='n1271' href='#n1271'>1271</a>
<a id='n1272' href='#n1272'>1272</a>
<a id='n1273' href='#n1273'>1273</a>
<a id='n1274' href='#n1274'>1274</a>
<a id='n1275' href='#n1275'>1275</a>
<a id='n1276' href='#n1276'>1276</a>
<a id='n1277' href='#n1277'>1277</a>
<a id='n1278' href='#n1278'>1278</a>
<a id='n1279' href='#n1279'>1279</a>
<a id='n1280' href='#n1280'>1280</a>
<a id='n1281' href='#n1281'>1281</a>
<a id='n1282' href='#n1282'>1282</a>
<a id='n1283' href='#n1283'>1283</a>
<a id='n1284' href='#n1284'>1284</a>
<a id='n1285' href='#n1285'>1285</a>
<a id='n1286' href='#n1286'>1286</a>
<a id='n1287' href='#n1287'>1287</a>
<a id='n1288' href='#n1288'>1288</a>
<a id='n1289' href='#n1289'>1289</a>
<a id='n1290' href='#n1290'>1290</a>
<a id='n1291' href='#n1291'>1291</a>
<a id='n1292' href='#n1292'>1292</a>
<a id='n1293' href='#n1293'>1293</a>
<a id='n1294' href='#n1294'>1294</a>
<a id='n1295' href='#n1295'>1295</a>
<a id='n1296' href='#n1296'>1296</a>
<a id='n1297' href='#n1297'>1297</a>
<a id='n1298' href='#n1298'>1298</a>
<a id='n1299' href='#n1299'>1299</a>
<a id='n1300' href='#n1300'>1300</a>
<a id='n1301' href='#n1301'>1301</a>
<a id='n1302' href='#n1302'>1302</a>
<a id='n1303' href='#n1303'>1303</a>
<a id='n1304' href='#n1304'>1304</a>
<a id='n1305' href='#n1305'>1305</a>
<a id='n1306' href='#n1306'>1306</a>
<a id='n1307' href='#n1307'>1307</a>
<a id='n1308' href='#n1308'>1308</a>
<a id='n1309' href='#n1309'>1309</a>
<a id='n1310' href='#n1310'>1310</a>
<a id='n1311' href='#n1311'>1311</a>
<a id='n1312' href='#n1312'>1312</a>
<a id='n1313' href='#n1313'>1313</a>
<a id='n1314' href='#n1314'>1314</a>
<a id='n1315' href='#n1315'>1315</a>
<a id='n1316' href='#n1316'>1316</a>
<a id='n1317' href='#n1317'>1317</a>
<a id='n1318' href='#n1318'>1318</a>
<a id='n1319' href='#n1319'>1319</a>
<a id='n1320' href='#n1320'>1320</a>
<a id='n1321' href='#n1321'>1321</a>
<a id='n1322' href='#n1322'>1322</a>
<a id='n1323' href='#n1323'>1323</a>
<a id='n1324' href='#n1324'>1324</a>
<a id='n1325' href='#n1325'>1325</a>
<a id='n1326' href='#n1326'>1326</a>
<a id='n1327' href='#n1327'>1327</a>
<a id='n1328' href='#n1328'>1328</a>
<a id='n1329' href='#n1329'>1329</a>
<a id='n1330' href='#n1330'>1330</a>
<a id='n1331' href='#n1331'>1331</a>
<a id='n1332' href='#n1332'>1332</a>
<a id='n1333' href='#n1333'>1333</a>
<a id='n1334' href='#n1334'>1334</a>
<a id='n1335' href='#n1335'>1335</a>
<a id='n1336' href='#n1336'>1336</a>
<a id='n1337' href='#n1337'>1337</a>
<a id='n1338' href='#n1338'>1338</a>
<a id='n1339' href='#n1339'>1339</a>
<a id='n1340' href='#n1340'>1340</a>
<a id='n1341' href='#n1341'>1341</a>
<a id='n1342' href='#n1342'>1342</a>
<a id='n1343' href='#n1343'>1343</a>
<a id='n1344' href='#n1344'>1344</a>
<a id='n1345' href='#n1345'>1345</a>
<a id='n1346' href='#n1346'>1346</a>
<a id='n1347' href='#n1347'>1347</a>
<a id='n1348' href='#n1348'>1348</a>
<a id='n1349' href='#n1349'>1349</a>
<a id='n1350' href='#n1350'>1350</a>
<a id='n1351' href='#n1351'>1351</a>
<a id='n1352' href='#n1352'>1352</a>
<a id='n1353' href='#n1353'>1353</a>
<a id='n1354' href='#n1354'>1354</a>
<a id='n1355' href='#n1355'>1355</a>
<a id='n1356' href='#n1356'>1356</a>
<a id='n1357' href='#n1357'>1357</a>
<a id='n1358' href='#n1358'>1358</a>
<a id='n1359' href='#n1359'>1359</a>
<a id='n1360' href='#n1360'>1360</a>
<a id='n1361' href='#n1361'>1361</a>
<a id='n1362' href='#n1362'>1362</a>
<a id='n1363' href='#n1363'>1363</a>
<a id='n1364' href='#n1364'>1364</a>
<a id='n1365' href='#n1365'>1365</a>
<a id='n1366' href='#n1366'>1366</a>
<a id='n1367' href='#n1367'>1367</a>
<a id='n1368' href='#n1368'>1368</a>
<a id='n1369' href='#n1369'>1369</a>
<a id='n1370' href='#n1370'>1370</a>
<a id='n1371' href='#n1371'>1371</a>
<a id='n1372' href='#n1372'>1372</a>
<a id='n1373' href='#n1373'>1373</a>
<a id='n1374' href='#n1374'>1374</a>
<a id='n1375' href='#n1375'>1375</a>
<a id='n1376' href='#n1376'>1376</a>
<a id='n1377' href='#n1377'>1377</a>
<a id='n1378' href='#n1378'>1378</a>
<a id='n1379' href='#n1379'>1379</a>
<a id='n1380' href='#n1380'>1380</a>
<a id='n1381' href='#n1381'>1381</a>
<a id='n1382' href='#n1382'>1382</a>
<a id='n1383' href='#n1383'>1383</a>
<a id='n1384' href='#n1384'>1384</a>
<a id='n1385' href='#n1385'>1385</a>
<a id='n1386' href='#n1386'>1386</a>
<a id='n1387' href='#n1387'>1387</a>
<a id='n1388' href='#n1388'>1388</a>
<a id='n1389' href='#n1389'>1389</a>
<a id='n1390' href='#n1390'>1390</a>
<a id='n1391' href='#n1391'>1391</a>
<a id='n1392' href='#n1392'>1392</a>
<a id='n1393' href='#n1393'>1393</a>
<a id='n1394' href='#n1394'>1394</a>
<a id='n1395' href='#n1395'>1395</a>
<a id='n1396' href='#n1396'>1396</a>
<a id='n1397' href='#n1397'>1397</a>
<a id='n1398' href='#n1398'>1398</a>
<a id='n1399' href='#n1399'>1399</a>
<a id='n1400' href='#n1400'>1400</a>
<a id='n1401' href='#n1401'>1401</a>
<a id='n1402' href='#n1402'>1402</a>
<a id='n1403' href='#n1403'>1403</a>
<a id='n1404' href='#n1404'>1404</a>
<a id='n1405' href='#n1405'>1405</a>
<a id='n1406' href='#n1406'>1406</a>
<a id='n1407' href='#n1407'>1407</a>
<a id='n1408' href='#n1408'>1408</a>
<a id='n1409' href='#n1409'>1409</a>
<a id='n1410' href='#n1410'>1410</a>
<a id='n1411' href='#n1411'>1411</a>
<a id='n1412' href='#n1412'>1412</a>
<a id='n1413' href='#n1413'>1413</a>
<a id='n1414' href='#n1414'>1414</a>
<a id='n1415' href='#n1415'>1415</a>
<a id='n1416' href='#n1416'>1416</a>
<a id='n1417' href='#n1417'>1417</a>
<a id='n1418' href='#n1418'>1418</a>
<a id='n1419' href='#n1419'>1419</a>
<a id='n1420' href='#n1420'>1420</a>
<a id='n1421' href='#n1421'>1421</a>
<a id='n1422' href='#n1422'>1422</a>
<a id='n1423' href='#n1423'>1423</a>
<a id='n1424' href='#n1424'>1424</a>
<a id='n1425' href='#n1425'>1425</a>
<a id='n1426' href='#n1426'>1426</a>
<a id='n1427' href='#n1427'>1427</a>
<a id='n1428' href='#n1428'>1428</a>
<a id='n1429' href='#n1429'>1429</a>
<a id='n1430' href='#n1430'>1430</a>
<a id='n1431' href='#n1431'>1431</a>
<a id='n1432' href='#n1432'>1432</a>
<a id='n1433' href='#n1433'>1433</a>
<a id='n1434' href='#n1434'>1434</a>
<a id='n1435' href='#n1435'>1435</a>
<a id='n1436' href='#n1436'>1436</a>
<a id='n1437' href='#n1437'>1437</a>
<a id='n1438' href='#n1438'>1438</a>
<a id='n1439' href='#n1439'>1439</a>
<a id='n1440' href='#n1440'>1440</a>
<a id='n1441' href='#n1441'>1441</a>
<a id='n1442' href='#n1442'>1442</a>
<a id='n1443' href='#n1443'>1443</a>
<a id='n1444' href='#n1444'>1444</a>
<a id='n1445' href='#n1445'>1445</a>
<a id='n1446' href='#n1446'>1446</a>
<a id='n1447' href='#n1447'>1447</a>
<a id='n1448' href='#n1448'>1448</a>
<a id='n1449' href='#n1449'>1449</a>
<a id='n1450' href='#n1450'>1450</a>
<a id='n1451' href='#n1451'>1451</a>
<a id='n1452' href='#n1452'>1452</a>
<a id='n1453' href='#n1453'>1453</a>
<a id='n1454' href='#n1454'>1454</a>
<a id='n1455' href='#n1455'>1455</a>
<a id='n1456' href='#n1456'>1456</a>
<a id='n1457' href='#n1457'>1457</a>
<a id='n1458' href='#n1458'>1458</a>
<a id='n1459' href='#n1459'>1459</a>
<a id='n1460' href='#n1460'>1460</a>
<a id='n1461' href='#n1461'>1461</a>
<a id='n1462' href='#n1462'>1462</a>
<a id='n1463' href='#n1463'>1463</a>
<a id='n1464' href='#n1464'>1464</a>
<a id='n1465' href='#n1465'>1465</a>
<a id='n1466' href='#n1466'>1466</a>
<a id='n1467' href='#n1467'>1467</a>
<a id='n1468' href='#n1468'>1468</a>
<a id='n1469' href='#n1469'>1469</a>
<a id='n1470' href='#n1470'>1470</a>
<a id='n1471' href='#n1471'>1471</a>
<a id='n1472' href='#n1472'>1472</a>
<a id='n1473' href='#n1473'>1473</a>
<a id='n1474' href='#n1474'>1474</a>
<a id='n1475' href='#n1475'>1475</a>
<a id='n1476' href='#n1476'>1476</a>
<a id='n1477' href='#n1477'>1477</a>
<a id='n1478' href='#n1478'>1478</a>
<a id='n1479' href='#n1479'>1479</a>
<a id='n1480' href='#n1480'>1480</a>
<a id='n1481' href='#n1481'>1481</a>
<a id='n1482' href='#n1482'>1482</a>
<a id='n1483' href='#n1483'>1483</a>
<a id='n1484' href='#n1484'>1484</a>
<a id='n1485' href='#n1485'>1485</a>
<a id='n1486' href='#n1486'>1486</a>
<a id='n1487' href='#n1487'>1487</a>
<a id='n1488' href='#n1488'>1488</a>
<a id='n1489' href='#n1489'>1489</a>
<a id='n1490' href='#n1490'>1490</a>
<a id='n1491' href='#n1491'>1491</a>
<a id='n1492' href='#n1492'>1492</a>
<a id='n1493' href='#n1493'>1493</a>
<a id='n1494' href='#n1494'>1494</a>
<a id='n1495' href='#n1495'>1495</a>
<a id='n1496' href='#n1496'>1496</a>
<a id='n1497' href='#n1497'>1497</a>
<a id='n1498' href='#n1498'>1498</a>
<a id='n1499' href='#n1499'>1499</a>
<a id='n1500' href='#n1500'>1500</a>
<a id='n1501' href='#n1501'>1501</a>
<a id='n1502' href='#n1502'>1502</a>
<a id='n1503' href='#n1503'>1503</a>
<a id='n1504' href='#n1504'>1504</a>
<a id='n1505' href='#n1505'>1505</a>
<a id='n1506' href='#n1506'>1506</a>
<a id='n1507' href='#n1507'>1507</a>
<a id='n1508' href='#n1508'>1508</a>
<a id='n1509' href='#n1509'>1509</a>
<a id='n1510' href='#n1510'>1510</a>
<a id='n1511' href='#n1511'>1511</a>
<a id='n1512' href='#n1512'>1512</a>
<a id='n1513' href='#n1513'>1513</a>
<a id='n1514' href='#n1514'>1514</a>
<a id='n1515' href='#n1515'>1515</a>
<a id='n1516' href='#n1516'>1516</a>
<a id='n1517' href='#n1517'>1517</a>
<a id='n1518' href='#n1518'>1518</a>
<a id='n1519' href='#n1519'>1519</a>
<a id='n1520' href='#n1520'>1520</a>
<a id='n1521' href='#n1521'>1521</a>
<a id='n1522' href='#n1522'>1522</a>
<a id='n1523' href='#n1523'>1523</a>
<a id='n1524' href='#n1524'>1524</a>
<a id='n1525' href='#n1525'>1525</a>
<a id='n1526' href='#n1526'>1526</a>
<a id='n1527' href='#n1527'>1527</a>
<a id='n1528' href='#n1528'>1528</a>
<a id='n1529' href='#n1529'>1529</a>
<a id='n1530' href='#n1530'>1530</a>
<a id='n1531' href='#n1531'>1531</a>
<a id='n1532' href='#n1532'>1532</a>
<a id='n1533' href='#n1533'>1533</a>
<a id='n1534' href='#n1534'>1534</a>
<a id='n1535' href='#n1535'>1535</a>
<a id='n1536' href='#n1536'>1536</a>
<a id='n1537' href='#n1537'>1537</a>
<a id='n1538' href='#n1538'>1538</a>
<a id='n1539' href='#n1539'>1539</a>
<a id='n1540' href='#n1540'>1540</a>
<a id='n1541' href='#n1541'>1541</a>
<a id='n1542' href='#n1542'>1542</a>
<a id='n1543' href='#n1543'>1543</a>
<a id='n1544' href='#n1544'>1544</a>
<a id='n1545' href='#n1545'>1545</a>
<a id='n1546' href='#n1546'>1546</a>
<a id='n1547' href='#n1547'>1547</a>
<a id='n1548' href='#n1548'>1548</a>
<a id='n1549' href='#n1549'>1549</a>
<a id='n1550' href='#n1550'>1550</a>
<a id='n1551' href='#n1551'>1551</a>
<a id='n1552' href='#n1552'>1552</a>
<a id='n1553' href='#n1553'>1553</a>
<a id='n1554' href='#n1554'>1554</a>
<a id='n1555' href='#n1555'>1555</a>
<a id='n1556' href='#n1556'>1556</a>
<a id='n1557' href='#n1557'>1557</a>
<a id='n1558' href='#n1558'>1558</a>
<a id='n1559' href='#n1559'>1559</a>
<a id='n1560' href='#n1560'>1560</a>
<a id='n1561' href='#n1561'>1561</a>
<a id='n1562' href='#n1562'>1562</a>
<a id='n1563' href='#n1563'>1563</a>
<a id='n1564' href='#n1564'>1564</a>
<a id='n1565' href='#n1565'>1565</a>
<a id='n1566' href='#n1566'>1566</a>
<a id='n1567' href='#n1567'>1567</a>
<a id='n1568' href='#n1568'>1568</a>
<a id='n1569' href='#n1569'>1569</a>
<a id='n1570' href='#n1570'>1570</a>
<a id='n1571' href='#n1571'>1571</a>
<a id='n1572' href='#n1572'>1572</a>
<a id='n1573' href='#n1573'>1573</a>
<a id='n1574' href='#n1574'>1574</a>
<a id='n1575' href='#n1575'>1575</a>
<a id='n1576' href='#n1576'>1576</a>
<a id='n1577' href='#n1577'>1577</a>
<a id='n1578' href='#n1578'>1578</a>
<a id='n1579' href='#n1579'>1579</a>
<a id='n1580' href='#n1580'>1580</a>
<a id='n1581' href='#n1581'>1581</a>
<a id='n1582' href='#n1582'>1582</a>
<a id='n1583' href='#n1583'>1583</a>
<a id='n1584' href='#n1584'>1584</a>
<a id='n1585' href='#n1585'>1585</a>
<a id='n1586' href='#n1586'>1586</a>
<a id='n1587' href='#n1587'>1587</a>
<a id='n1588' href='#n1588'>1588</a>
<a id='n1589' href='#n1589'>1589</a>
<a id='n1590' href='#n1590'>1590</a>
<a id='n1591' href='#n1591'>1591</a>
<a id='n1592' href='#n1592'>1592</a>
<a id='n1593' href='#n1593'>1593</a>
<a id='n1594' href='#n1594'>1594</a>
<a id='n1595' href='#n1595'>1595</a>
<a id='n1596' href='#n1596'>1596</a>
<a id='n1597' href='#n1597'>1597</a>
<a id='n1598' href='#n1598'>1598</a>
<a id='n1599' href='#n1599'>1599</a>
<a id='n1600' href='#n1600'>1600</a>
<a id='n1601' href='#n1601'>1601</a>
<a id='n1602' href='#n1602'>1602</a>
<a id='n1603' href='#n1603'>1603</a>
<a id='n1604' href='#n1604'>1604</a>
<a id='n1605' href='#n1605'>1605</a>
<a id='n1606' href='#n1606'>1606</a>
<a id='n1607' href='#n1607'>1607</a>
<a id='n1608' href='#n1608'>1608</a>
<a id='n1609' href='#n1609'>1609</a>
<a id='n1610' href='#n1610'>1610</a>
<a id='n1611' href='#n1611'>1611</a>
<a id='n1612' href='#n1612'>1612</a>
<a id='n1613' href='#n1613'>1613</a>
<a id='n1614' href='#n1614'>1614</a>
<a id='n1615' href='#n1615'>1615</a>
<a id='n1616' href='#n1616'>1616</a>
<a id='n1617' href='#n1617'>1617</a>
<a id='n1618' href='#n1618'>1618</a>
<a id='n1619' href='#n1619'>1619</a>
<a id='n1620' href='#n1620'>1620</a>
<a id='n1621' href='#n1621'>1621</a>
<a id='n1622' href='#n1622'>1622</a>
<a id='n1623' href='#n1623'>1623</a>
<a id='n1624' href='#n1624'>1624</a>
<a id='n1625' href='#n1625'>1625</a>
<a id='n1626' href='#n1626'>1626</a>
<a id='n1627' href='#n1627'>1627</a>
<a id='n1628' href='#n1628'>1628</a>
<a id='n1629' href='#n1629'>1629</a>
<a id='n1630' href='#n1630'>1630</a>
<a id='n1631' href='#n1631'>1631</a>
<a id='n1632' href='#n1632'>1632</a>
<a id='n1633' href='#n1633'>1633</a>
<a id='n1634' href='#n1634'>1634</a>
<a id='n1635' href='#n1635'>1635</a>
<a id='n1636' href='#n1636'>1636</a>
<a id='n1637' href='#n1637'>1637</a>
<a id='n1638' href='#n1638'>1638</a>
<a id='n1639' href='#n1639'>1639</a>
<a id='n1640' href='#n1640'>1640</a>
<a id='n1641' href='#n1641'>1641</a>
<a id='n1642' href='#n1642'>1642</a>
<a id='n1643' href='#n1643'>1643</a>
<a id='n1644' href='#n1644'>1644</a>
<a id='n1645' href='#n1645'>1645</a>
<a id='n1646' href='#n1646'>1646</a>
<a id='n1647' href='#n1647'>1647</a>
<a id='n1648' href='#n1648'>1648</a>
<a id='n1649' href='#n1649'>1649</a>
<a id='n1650' href='#n1650'>1650</a>
<a id='n1651' href='#n1651'>1651</a>
<a id='n1652' href='#n1652'>1652</a>
<a id='n1653' href='#n1653'>1653</a>
<a id='n1654' href='#n1654'>1654</a>
<a id='n1655' href='#n1655'>1655</a>
<a id='n1656' href='#n1656'>1656</a>
<a id='n1657' href='#n1657'>1657</a>
<a id='n1658' href='#n1658'>1658</a>
<a id='n1659' href='#n1659'>1659</a>
<a id='n1660' href='#n1660'>1660</a>
<a id='n1661' href='#n1661'>1661</a>
<a id='n1662' href='#n1662'>1662</a>
<a id='n1663' href='#n1663'>1663</a>
<a id='n1664' href='#n1664'>1664</a>
<a id='n1665' href='#n1665'>1665</a>
<a id='n1666' href='#n1666'>1666</a>
<a id='n1667' href='#n1667'>1667</a>
<a id='n1668' href='#n1668'>1668</a>
<a id='n1669' href='#n1669'>1669</a>
<a id='n1670' href='#n1670'>1670</a>
<a id='n1671' href='#n1671'>1671</a>
<a id='n1672' href='#n1672'>1672</a>
<a id='n1673' href='#n1673'>1673</a>
<a id='n1674' href='#n1674'>1674</a>
<a id='n1675' href='#n1675'>1675</a>
<a id='n1676' href='#n1676'>1676</a>
<a id='n1677' href='#n1677'>1677</a>
<a id='n1678' href='#n1678'>1678</a>
<a id='n1679' href='#n1679'>1679</a>
<a id='n1680' href='#n1680'>1680</a>
<a id='n1681' href='#n1681'>1681</a>
<a id='n1682' href='#n1682'>1682</a>
<a id='n1683' href='#n1683'>1683</a>
<a id='n1684' href='#n1684'>1684</a>
<a id='n1685' href='#n1685'>1685</a>
<a id='n1686' href='#n1686'>1686</a>
<a id='n1687' href='#n1687'>1687</a>
<a id='n1688' href='#n1688'>1688</a>
<a id='n1689' href='#n1689'>1689</a>
<a id='n1690' href='#n1690'>1690</a>
<a id='n1691' href='#n1691'>1691</a>
<a id='n1692' href='#n1692'>1692</a>
<a id='n1693' href='#n1693'>1693</a>
<a id='n1694' href='#n1694'>1694</a>
<a id='n1695' href='#n1695'>1695</a>
<a id='n1696' href='#n1696'>1696</a>
<a id='n1697' href='#n1697'>1697</a>
<a id='n1698' href='#n1698'>1698</a>
<a id='n1699' href='#n1699'>1699</a>
<a id='n1700' href='#n1700'>1700</a>
<a id='n1701' href='#n1701'>1701</a>
<a id='n1702' href='#n1702'>1702</a>
<a id='n1703' href='#n1703'>1703</a>
<a id='n1704' href='#n1704'>1704</a>
<a id='n1705' href='#n1705'>1705</a>
<a id='n1706' href='#n1706'>1706</a>
<a id='n1707' href='#n1707'>1707</a>
<a id='n1708' href='#n1708'>1708</a>
<a id='n1709' href='#n1709'>1709</a>
<a id='n1710' href='#n1710'>1710</a>
<a id='n1711' href='#n1711'>1711</a>
<a id='n1712' href='#n1712'>1712</a>
<a id='n1713' href='#n1713'>1713</a>
<a id='n1714' href='#n1714'>1714</a>
<a id='n1715' href='#n1715'>1715</a>
<a id='n1716' href='#n1716'>1716</a>
<a id='n1717' href='#n1717'>1717</a>
<a id='n1718' href='#n1718'>1718</a>
<a id='n1719' href='#n1719'>1719</a>
<a id='n1720' href='#n1720'>1720</a>
<a id='n1721' href='#n1721'>1721</a>
<a id='n1722' href='#n1722'>1722</a>
<a id='n1723' href='#n1723'>1723</a>
<a id='n1724' href='#n1724'>1724</a>
<a id='n1725' href='#n1725'>1725</a>
<a id='n1726' href='#n1726'>1726</a>
<a id='n1727' href='#n1727'>1727</a>
<a id='n1728' href='#n1728'>1728</a>
<a id='n1729' href='#n1729'>1729</a>
<a id='n1730' href='#n1730'>1730</a>
<a id='n1731' href='#n1731'>1731</a>
<a id='n1732' href='#n1732'>1732</a>
<a id='n1733' href='#n1733'>1733</a>
<a id='n1734' href='#n1734'>1734</a>
<a id='n1735' href='#n1735'>1735</a>
<a id='n1736' href='#n1736'>1736</a>
<a id='n1737' href='#n1737'>1737</a>
<a id='n1738' href='#n1738'>1738</a>
<a id='n1739' href='#n1739'>1739</a>
<a id='n1740' href='#n1740'>1740</a>
<a id='n1741' href='#n1741'>1741</a>
<a id='n1742' href='#n1742'>1742</a>
<a id='n1743' href='#n1743'>1743</a>
<a id='n1744' href='#n1744'>1744</a>
<a id='n1745' href='#n1745'>1745</a>
<a id='n1746' href='#n1746'>1746</a>
<a id='n1747' href='#n1747'>1747</a>
<a id='n1748' href='#n1748'>1748</a>
<a id='n1749' href='#n1749'>1749</a>
<a id='n1750' href='#n1750'>1750</a>
<a id='n1751' href='#n1751'>1751</a>
<a id='n1752' href='#n1752'>1752</a>
<a id='n1753' href='#n1753'>1753</a>
<a id='n1754' href='#n1754'>1754</a>
<a id='n1755' href='#n1755'>1755</a>
<a id='n1756' href='#n1756'>1756</a>
<a id='n1757' href='#n1757'>1757</a>
<a id='n1758' href='#n1758'>1758</a>
<a id='n1759' href='#n1759'>1759</a>
<a id='n1760' href='#n1760'>1760</a>
<a id='n1761' href='#n1761'>1761</a>
<a id='n1762' href='#n1762'>1762</a>
<a id='n1763' href='#n1763'>1763</a>
<a id='n1764' href='#n1764'>1764</a>
<a id='n1765' href='#n1765'>1765</a>
<a id='n1766' href='#n1766'>1766</a>
<a id='n1767' href='#n1767'>1767</a>
<a id='n1768' href='#n1768'>1768</a>
<a id='n1769' href='#n1769'>1769</a>
<a id='n1770' href='#n1770'>1770</a>
<a id='n1771' href='#n1771'>1771</a>
<a id='n1772' href='#n1772'>1772</a>
<a id='n1773' href='#n1773'>1773</a>
<a id='n1774' href='#n1774'>1774</a>
<a id='n1775' href='#n1775'>1775</a>
<a id='n1776' href='#n1776'>1776</a>
<a id='n1777' href='#n1777'>1777</a>
<a id='n1778' href='#n1778'>1778</a>
<a id='n1779' href='#n1779'>1779</a>
<a id='n1780' href='#n1780'>1780</a>
<a id='n1781' href='#n1781'>1781</a>
<a id='n1782' href='#n1782'>1782</a>
<a id='n1783' href='#n1783'>1783</a>
<a id='n1784' href='#n1784'>1784</a>
<a id='n1785' href='#n1785'>1785</a>
<a id='n1786' href='#n1786'>1786</a>
<a id='n1787' href='#n1787'>1787</a>
<a id='n1788' href='#n1788'>1788</a>
<a id='n1789' href='#n1789'>1789</a>
<a id='n1790' href='#n1790'>1790</a>
<a id='n1791' href='#n1791'>1791</a>
<a id='n1792' href='#n1792'>1792</a>
<a id='n1793' href='#n1793'>1793</a>
<a id='n1794' href='#n1794'>1794</a>
<a id='n1795' href='#n1795'>1795</a>
<a id='n1796' href='#n1796'>1796</a>
<a id='n1797' href='#n1797'>1797</a>
<a id='n1798' href='#n1798'>1798</a>
<a id='n1799' href='#n1799'>1799</a>
<a id='n1800' href='#n1800'>1800</a>
<a id='n1801' href='#n1801'>1801</a>
<a id='n1802' href='#n1802'>1802</a>
<a id='n1803' href='#n1803'>1803</a>
<a id='n1804' href='#n1804'>1804</a>
<a id='n1805' href='#n1805'>1805</a>
<a id='n1806' href='#n1806'>1806</a>
<a id='n1807' href='#n1807'>1807</a>
<a id='n1808' href='#n1808'>1808</a>
<a id='n1809' href='#n1809'>1809</a>
<a id='n1810' href='#n1810'>1810</a>
<a id='n1811' href='#n1811'>1811</a>
<a id='n1812' href='#n1812'>1812</a>
<a id='n1813' href='#n1813'>1813</a>
<a id='n1814' href='#n1814'>1814</a>
<a id='n1815' href='#n1815'>1815</a>
<a id='n1816' href='#n1816'>1816</a>
<a id='n1817' href='#n1817'>1817</a>
<a id='n1818' href='#n1818'>1818</a>
<a id='n1819' href='#n1819'>1819</a>
<a id='n1820' href='#n1820'>1820</a>
<a id='n1821' href='#n1821'>1821</a>
<a id='n1822' href='#n1822'>1822</a>
<a id='n1823' href='#n1823'>1823</a>
<a id='n1824' href='#n1824'>1824</a>
<a id='n1825' href='#n1825'>1825</a>
<a id='n1826' href='#n1826'>1826</a>
<a id='n1827' href='#n1827'>1827</a>
<a id='n1828' href='#n1828'>1828</a>
<a id='n1829' href='#n1829'>1829</a>
<a id='n1830' href='#n1830'>1830</a>
<a id='n1831' href='#n1831'>1831</a>
<a id='n1832' href='#n1832'>1832</a>
<a id='n1833' href='#n1833'>1833</a>
<a id='n1834' href='#n1834'>1834</a>
<a id='n1835' href='#n1835'>1835</a>
<a id='n1836' href='#n1836'>1836</a>
<a id='n1837' href='#n1837'>1837</a>
<a id='n1838' href='#n1838'>1838</a>
<a id='n1839' href='#n1839'>1839</a>
<a id='n1840' href='#n1840'>1840</a>
<a id='n1841' href='#n1841'>1841</a>
<a id='n1842' href='#n1842'>1842</a>
<a id='n1843' href='#n1843'>1843</a>
<a id='n1844' href='#n1844'>1844</a>
<a id='n1845' href='#n1845'>1845</a>
<a id='n1846' href='#n1846'>1846</a>
<a id='n1847' href='#n1847'>1847</a>
<a id='n1848' href='#n1848'>1848</a>
<a id='n1849' href='#n1849'>1849</a>
<a id='n1850' href='#n1850'>1850</a>
<a id='n1851' href='#n1851'>1851</a>
<a id='n1852' href='#n1852'>1852</a>
<a id='n1853' href='#n1853'>1853</a>
<a id='n1854' href='#n1854'>1854</a>
<a id='n1855' href='#n1855'>1855</a>
<a id='n1856' href='#n1856'>1856</a>
<a id='n1857' href='#n1857'>1857</a>
<a id='n1858' href='#n1858'>1858</a>
<a id='n1859' href='#n1859'>1859</a>
<a id='n1860' href='#n1860'>1860</a>
<a id='n1861' href='#n1861'>1861</a>
<a id='n1862' href='#n1862'>1862</a>
<a id='n1863' href='#n1863'>1863</a>
<a id='n1864' href='#n1864'>1864</a>
<a id='n1865' href='#n1865'>1865</a>
<a id='n1866' href='#n1866'>1866</a>
<a id='n1867' href='#n1867'>1867</a>
<a id='n1868' href='#n1868'>1868</a>
<a id='n1869' href='#n1869'>1869</a>
<a id='n1870' href='#n1870'>1870</a>
<a id='n1871' href='#n1871'>1871</a>
<a id='n1872' href='#n1872'>1872</a>
<a id='n1873' href='#n1873'>1873</a>
<a id='n1874' href='#n1874'>1874</a>
<a id='n1875' href='#n1875'>1875</a>
<a id='n1876' href='#n1876'>1876</a>
<a id='n1877' href='#n1877'>1877</a>
<a id='n1878' href='#n1878'>1878</a>
<a id='n1879' href='#n1879'>1879</a>
<a id='n1880' href='#n1880'>1880</a>
<a id='n1881' href='#n1881'>1881</a>
<a id='n1882' href='#n1882'>1882</a>
<a id='n1883' href='#n1883'>1883</a>
<a id='n1884' href='#n1884'>1884</a>
<a id='n1885' href='#n1885'>1885</a>
<a id='n1886' href='#n1886'>1886</a>
<a id='n1887' href='#n1887'>1887</a>
<a id='n1888' href='#n1888'>1888</a>
<a id='n1889' href='#n1889'>1889</a>
<a id='n1890' href='#n1890'>1890</a>
<a id='n1891' href='#n1891'>1891</a>
<a id='n1892' href='#n1892'>1892</a>
<a id='n1893' href='#n1893'>1893</a>
<a id='n1894' href='#n1894'>1894</a>
<a id='n1895' href='#n1895'>1895</a>
<a id='n1896' href='#n1896'>1896</a>
<a id='n1897' href='#n1897'>1897</a>
<a id='n1898' href='#n1898'>1898</a>
<a id='n1899' href='#n1899'>1899</a>
<a id='n1900' href='#n1900'>1900</a>
<a id='n1901' href='#n1901'>1901</a>
<a id='n1902' href='#n1902'>1902</a>
<a id='n1903' href='#n1903'>1903</a>
<a id='n1904' href='#n1904'>1904</a>
<a id='n1905' href='#n1905'>1905</a>
<a id='n1906' href='#n1906'>1906</a>
<a id='n1907' href='#n1907'>1907</a>
<a id='n1908' href='#n1908'>1908</a>
<a id='n1909' href='#n1909'>1909</a>
<a id='n1910' href='#n1910'>1910</a>
<a id='n1911' href='#n1911'>1911</a>
<a id='n1912' href='#n1912'>1912</a>
<a id='n1913' href='#n1913'>1913</a>
<a id='n1914' href='#n1914'>1914</a>
<a id='n1915' href='#n1915'>1915</a>
<a id='n1916' href='#n1916'>1916</a>
<a id='n1917' href='#n1917'>1917</a>
<a id='n1918' href='#n1918'>1918</a>
<a id='n1919' href='#n1919'>1919</a>
<a id='n1920' href='#n1920'>1920</a>
<a id='n1921' href='#n1921'>1921</a>
<a id='n1922' href='#n1922'>1922</a>
<a id='n1923' href='#n1923'>1923</a>
<a id='n1924' href='#n1924'>1924</a>
<a id='n1925' href='#n1925'>1925</a>
<a id='n1926' href='#n1926'>1926</a>
<a id='n1927' href='#n1927'>1927</a>
<a id='n1928' href='#n1928'>1928</a>
<a id='n1929' href='#n1929'>1929</a>
<a id='n1930' href='#n1930'>1930</a>
<a id='n1931' href='#n1931'>1931</a>
<a id='n1932' href='#n1932'>1932</a>
<a id='n1933' href='#n1933'>1933</a>
<a id='n1934' href='#n1934'>1934</a>
<a id='n1935' href='#n1935'>1935</a>
<a id='n1936' href='#n1936'>1936</a>
<a id='n1937' href='#n1937'>1937</a>
<a id='n1938' href='#n1938'>1938</a>
<a id='n1939' href='#n1939'>1939</a>
<a id='n1940' href='#n1940'>1940</a>
<a id='n1941' href='#n1941'>1941</a>
<a id='n1942' href='#n1942'>1942</a>
<a id='n1943' href='#n1943'>1943</a>
<a id='n1944' href='#n1944'>1944</a>
<a id='n1945' href='#n1945'>1945</a>
<a id='n1946' href='#n1946'>1946</a>
<a id='n1947' href='#n1947'>1947</a>
<a id='n1948' href='#n1948'>1948</a>
<a id='n1949' href='#n1949'>1949</a>
<a id='n1950' href='#n1950'>1950</a>
<a id='n1951' href='#n1951'>1951</a>
<a id='n1952' href='#n1952'>1952</a>
<a id='n1953' href='#n1953'>1953</a>
<a id='n1954' href='#n1954'>1954</a>
<a id='n1955' href='#n1955'>1955</a>
<a id='n1956' href='#n1956'>1956</a>
<a id='n1957' href='#n1957'>1957</a>
<a id='n1958' href='#n1958'>1958</a>
<a id='n1959' href='#n1959'>1959</a>
<a id='n1960' href='#n1960'>1960</a>
<a id='n1961' href='#n1961'>1961</a>
<a id='n1962' href='#n1962'>1962</a>
<a id='n1963' href='#n1963'>1963</a>
<a id='n1964' href='#n1964'>1964</a>
<a id='n1965' href='#n1965'>1965</a>
<a id='n1966' href='#n1966'>1966</a>
<a id='n1967' href='#n1967'>1967</a>
<a id='n1968' href='#n1968'>1968</a>
<a id='n1969' href='#n1969'>1969</a>
<a id='n1970' href='#n1970'>1970</a>
<a id='n1971' href='#n1971'>1971</a>
<a id='n1972' href='#n1972'>1972</a>
<a id='n1973' href='#n1973'>1973</a>
<a id='n1974' href='#n1974'>1974</a>
<a id='n1975' href='#n1975'>1975</a>
<a id='n1976' href='#n1976'>1976</a>
<a id='n1977' href='#n1977'>1977</a>
<a id='n1978' href='#n1978'>1978</a>
<a id='n1979' href='#n1979'>1979</a>
<a id='n1980' href='#n1980'>1980</a>
<a id='n1981' href='#n1981'>1981</a>
<a id='n1982' href='#n1982'>1982</a>
<a id='n1983' href='#n1983'>1983</a>
<a id='n1984' href='#n1984'>1984</a>
<a id='n1985' href='#n1985'>1985</a>
<a id='n1986' href='#n1986'>1986</a>
<a id='n1987' href='#n1987'>1987</a>
<a id='n1988' href='#n1988'>1988</a>
<a id='n1989' href='#n1989'>1989</a>
<a id='n1990' href='#n1990'>1990</a>
<a id='n1991' href='#n1991'>1991</a>
<a id='n1992' href='#n1992'>1992</a>
<a id='n1993' href='#n1993'>1993</a>
<a id='n1994' href='#n1994'>1994</a>
<a id='n1995' href='#n1995'>1995</a>
<a id='n1996' href='#n1996'>1996</a>
<a id='n1997' href='#n1997'>1997</a>
<a id='n1998' href='#n1998'>1998</a>
<a id='n1999' href='#n1999'>1999</a>
<a id='n2000' href='#n2000'>2000</a>
<a id='n2001' href='#n2001'>2001</a>
<a id='n2002' href='#n2002'>2002</a>
<a id='n2003' href='#n2003'>2003</a>
<a id='n2004' href='#n2004'>2004</a>
<a id='n2005' href='#n2005'>2005</a>
<a id='n2006' href='#n2006'>2006</a>
<a id='n2007' href='#n2007'>2007</a>
<a id='n2008' href='#n2008'>2008</a>
<a id='n2009' href='#n2009'>2009</a>
<a id='n2010' href='#n2010'>2010</a>
<a id='n2011' href='#n2011'>2011</a>
<a id='n2012' href='#n2012'>2012</a>
<a id='n2013' href='#n2013'>2013</a>
<a id='n2014' href='#n2014'>2014</a>
<a id='n2015' href='#n2015'>2015</a>
<a id='n2016' href='#n2016'>2016</a>
<a id='n2017' href='#n2017'>2017</a>
<a id='n2018' href='#n2018'>2018</a>
<a id='n2019' href='#n2019'>2019</a>
<a id='n2020' href='#n2020'>2020</a>
<a id='n2021' href='#n2021'>2021</a>
<a id='n2022' href='#n2022'>2022</a>
<a id='n2023' href='#n2023'>2023</a>
<a id='n2024' href='#n2024'>2024</a>
<a id='n2025' href='#n2025'>2025</a>
<a id='n2026' href='#n2026'>2026</a>
<a id='n2027' href='#n2027'>2027</a>
<a id='n2028' href='#n2028'>2028</a>
<a id='n2029' href='#n2029'>2029</a>
<a id='n2030' href='#n2030'>2030</a>
<a id='n2031' href='#n2031'>2031</a>
<a id='n2032' href='#n2032'>2032</a>
<a id='n2033' href='#n2033'>2033</a>
<a id='n2034' href='#n2034'>2034</a>
<a id='n2035' href='#n2035'>2035</a>
<a id='n2036' href='#n2036'>2036</a>
<a id='n2037' href='#n2037'>2037</a>
<a id='n2038' href='#n2038'>2038</a>
<a id='n2039' href='#n2039'>2039</a>
<a id='n2040' href='#n2040'>2040</a>
<a id='n2041' href='#n2041'>2041</a>
<a id='n2042' href='#n2042'>2042</a>
<a id='n2043' href='#n2043'>2043</a>
<a id='n2044' href='#n2044'>2044</a>
<a id='n2045' href='#n2045'>2045</a>
<a id='n2046' href='#n2046'>2046</a>
<a id='n2047' href='#n2047'>2047</a>
<a id='n2048' href='#n2048'>2048</a>
<a id='n2049' href='#n2049'>2049</a>
<a id='n2050' href='#n2050'>2050</a>
<a id='n2051' href='#n2051'>2051</a>
<a id='n2052' href='#n2052'>2052</a>
<a id='n2053' href='#n2053'>2053</a>
<a id='n2054' href='#n2054'>2054</a>
<a id='n2055' href='#n2055'>2055</a>
<a id='n2056' href='#n2056'>2056</a>
<a id='n2057' href='#n2057'>2057</a>
<a id='n2058' href='#n2058'>2058</a>
<a id='n2059' href='#n2059'>2059</a>
<a id='n2060' href='#n2060'>2060</a>
<a id='n2061' href='#n2061'>2061</a>
<a id='n2062' href='#n2062'>2062</a>
<a id='n2063' href='#n2063'>2063</a>
<a id='n2064' href='#n2064'>2064</a>
<a id='n2065' href='#n2065'>2065</a>
<a id='n2066' href='#n2066'>2066</a>
<a id='n2067' href='#n2067'>2067</a>
<a id='n2068' href='#n2068'>2068</a>
<a id='n2069' href='#n2069'>2069</a>
<a id='n2070' href='#n2070'>2070</a>
<a id='n2071' href='#n2071'>2071</a>
<a id='n2072' href='#n2072'>2072</a>
<a id='n2073' href='#n2073'>2073</a>
<a id='n2074' href='#n2074'>2074</a>
<a id='n2075' href='#n2075'>2075</a>
<a id='n2076' href='#n2076'>2076</a>
<a id='n2077' href='#n2077'>2077</a>
<a id='n2078' href='#n2078'>2078</a>
<a id='n2079' href='#n2079'>2079</a>
<a id='n2080' href='#n2080'>2080</a>
<a id='n2081' href='#n2081'>2081</a>
<a id='n2082' href='#n2082'>2082</a>
<a id='n2083' href='#n2083'>2083</a>
<a id='n2084' href='#n2084'>2084</a>
<a id='n2085' href='#n2085'>2085</a>
<a id='n2086' href='#n2086'>2086</a>
<a id='n2087' href='#n2087'>2087</a>
<a id='n2088' href='#n2088'>2088</a>
<a id='n2089' href='#n2089'>2089</a>
<a id='n2090' href='#n2090'>2090</a>
<a id='n2091' href='#n2091'>2091</a>
<a id='n2092' href='#n2092'>2092</a>
<a id='n2093' href='#n2093'>2093</a>
<a id='n2094' href='#n2094'>2094</a>
<a id='n2095' href='#n2095'>2095</a>
<a id='n2096' href='#n2096'>2096</a>
<a id='n2097' href='#n2097'>2097</a>
<a id='n2098' href='#n2098'>2098</a>
<a id='n2099' href='#n2099'>2099</a>
<a id='n2100' href='#n2100'>2100</a>
<a id='n2101' href='#n2101'>2101</a>
<a id='n2102' href='#n2102'>2102</a>
<a id='n2103' href='#n2103'>2103</a>
<a id='n2104' href='#n2104'>2104</a>
<a id='n2105' href='#n2105'>2105</a>
<a id='n2106' href='#n2106'>2106</a>
<a id='n2107' href='#n2107'>2107</a>
<a id='n2108' href='#n2108'>2108</a>
<a id='n2109' href='#n2109'>2109</a>
<a id='n2110' href='#n2110'>2110</a>
<a id='n2111' href='#n2111'>2111</a>
<a id='n2112' href='#n2112'>2112</a>
<a id='n2113' href='#n2113'>2113</a>
<a id='n2114' href='#n2114'>2114</a>
<a id='n2115' href='#n2115'>2115</a>
<a id='n2116' href='#n2116'>2116</a>
<a id='n2117' href='#n2117'>2117</a>
<a id='n2118' href='#n2118'>2118</a>
<a id='n2119' href='#n2119'>2119</a>
<a id='n2120' href='#n2120'>2120</a>
<a id='n2121' href='#n2121'>2121</a>
<a id='n2122' href='#n2122'>2122</a>
<a id='n2123' href='#n2123'>2123</a>
<a id='n2124' href='#n2124'>2124</a>
<a id='n2125' href='#n2125'>2125</a>
<a id='n2126' href='#n2126'>2126</a>
<a id='n2127' href='#n2127'>2127</a>
<a id='n2128' href='#n2128'>2128</a>
<a id='n2129' href='#n2129'>2129</a>
<a id='n2130' href='#n2130'>2130</a>
<a id='n2131' href='#n2131'>2131</a>
<a id='n2132' href='#n2132'>2132</a>
<a id='n2133' href='#n2133'>2133</a>
<a id='n2134' href='#n2134'>2134</a>
<a id='n2135' href='#n2135'>2135</a>
<a id='n2136' href='#n2136'>2136</a>
<a id='n2137' href='#n2137'>2137</a>
<a id='n2138' href='#n2138'>2138</a>
<a id='n2139' href='#n2139'>2139</a>
<a id='n2140' href='#n2140'>2140</a>
<a id='n2141' href='#n2141'>2141</a>
<a id='n2142' href='#n2142'>2142</a>
<a id='n2143' href='#n2143'>2143</a>
<a id='n2144' href='#n2144'>2144</a>
<a id='n2145' href='#n2145'>2145</a>
<a id='n2146' href='#n2146'>2146</a>
<a id='n2147' href='#n2147'>2147</a>
<a id='n2148' href='#n2148'>2148</a>
<a id='n2149' href='#n2149'>2149</a>
<a id='n2150' href='#n2150'>2150</a>
<a id='n2151' href='#n2151'>2151</a>
<a id='n2152' href='#n2152'>2152</a>
<a id='n2153' href='#n2153'>2153</a>
<a id='n2154' href='#n2154'>2154</a>
<a id='n2155' href='#n2155'>2155</a>
<a id='n2156' href='#n2156'>2156</a>
<a id='n2157' href='#n2157'>2157</a>
<a id='n2158' href='#n2158'>2158</a>
<a id='n2159' href='#n2159'>2159</a>
<a id='n2160' href='#n2160'>2160</a>
<a id='n2161' href='#n2161'>2161</a>
<a id='n2162' href='#n2162'>2162</a>
<a id='n2163' href='#n2163'>2163</a>
<a id='n2164' href='#n2164'>2164</a>
<a id='n2165' href='#n2165'>2165</a>
<a id='n2166' href='#n2166'>2166</a>
<a id='n2167' href='#n2167'>2167</a>
<a id='n2168' href='#n2168'>2168</a>
<a id='n2169' href='#n2169'>2169</a>
<a id='n2170' href='#n2170'>2170</a>
<a id='n2171' href='#n2171'>2171</a>
<a id='n2172' href='#n2172'>2172</a>
<a id='n2173' href='#n2173'>2173</a>
<a id='n2174' href='#n2174'>2174</a>
<a id='n2175' href='#n2175'>2175</a>
<a id='n2176' href='#n2176'>2176</a>
<a id='n2177' href='#n2177'>2177</a>
<a id='n2178' href='#n2178'>2178</a>
<a id='n2179' href='#n2179'>2179</a>
<a id='n2180' href='#n2180'>2180</a>
<a id='n2181' href='#n2181'>2181</a>
<a id='n2182' href='#n2182'>2182</a>
<a id='n2183' href='#n2183'>2183</a>
<a id='n2184' href='#n2184'>2184</a>
<a id='n2185' href='#n2185'>2185</a>
<a id='n2186' href='#n2186'>2186</a>
<a id='n2187' href='#n2187'>2187</a>
<a id='n2188' href='#n2188'>2188</a>
<a id='n2189' href='#n2189'>2189</a>
<a id='n2190' href='#n2190'>2190</a>
<a id='n2191' href='#n2191'>2191</a>
<a id='n2192' href='#n2192'>2192</a>
<a id='n2193' href='#n2193'>2193</a>
<a id='n2194' href='#n2194'>2194</a>
<a id='n2195' href='#n2195'>2195</a>
<a id='n2196' href='#n2196'>2196</a>
<a id='n2197' href='#n2197'>2197</a>
<a id='n2198' href='#n2198'>2198</a>
<a id='n2199' href='#n2199'>2199</a>
<a id='n2200' href='#n2200'>2200</a>
<a id='n2201' href='#n2201'>2201</a>
<a id='n2202' href='#n2202'>2202</a>
<a id='n2203' href='#n2203'>2203</a>
<a id='n2204' href='#n2204'>2204</a>
<a id='n2205' href='#n2205'>2205</a>
<a id='n2206' href='#n2206'>2206</a>
<a id='n2207' href='#n2207'>2207</a>
<a id='n2208' href='#n2208'>2208</a>
<a id='n2209' href='#n2209'>2209</a>
<a id='n2210' href='#n2210'>2210</a>
<a id='n2211' href='#n2211'>2211</a>
<a id='n2212' href='#n2212'>2212</a>
<a id='n2213' href='#n2213'>2213</a>
<a id='n2214' href='#n2214'>2214</a>
<a id='n2215' href='#n2215'>2215</a>
<a id='n2216' href='#n2216'>2216</a>
<a id='n2217' href='#n2217'>2217</a>
<a id='n2218' href='#n2218'>2218</a>
<a id='n2219' href='#n2219'>2219</a>
<a id='n2220' href='#n2220'>2220</a>
<a id='n2221' href='#n2221'>2221</a>
<a id='n2222' href='#n2222'>2222</a>
<a id='n2223' href='#n2223'>2223</a>
<a id='n2224' href='#n2224'>2224</a>
<a id='n2225' href='#n2225'>2225</a>
<a id='n2226' href='#n2226'>2226</a>
<a id='n2227' href='#n2227'>2227</a>
<a id='n2228' href='#n2228'>2228</a>
<a id='n2229' href='#n2229'>2229</a>
<a id='n2230' href='#n2230'>2230</a>
<a id='n2231' href='#n2231'>2231</a>
<a id='n2232' href='#n2232'>2232</a>
<a id='n2233' href='#n2233'>2233</a>
<a id='n2234' href='#n2234'>2234</a>
<a id='n2235' href='#n2235'>2235</a>
<a id='n2236' href='#n2236'>2236</a>
<a id='n2237' href='#n2237'>2237</a>
<a id='n2238' href='#n2238'>2238</a>
<a id='n2239' href='#n2239'>2239</a>
<a id='n2240' href='#n2240'>2240</a>
<a id='n2241' href='#n2241'>2241</a>
<a id='n2242' href='#n2242'>2242</a>
<a id='n2243' href='#n2243'>2243</a>
<a id='n2244' href='#n2244'>2244</a>
<a id='n2245' href='#n2245'>2245</a>
<a id='n2246' href='#n2246'>2246</a>
<a id='n2247' href='#n2247'>2247</a>
<a id='n2248' href='#n2248'>2248</a>
<a id='n2249' href='#n2249'>2249</a>
<a id='n2250' href='#n2250'>2250</a>
<a id='n2251' href='#n2251'>2251</a>
<a id='n2252' href='#n2252'>2252</a>
<a id='n2253' href='#n2253'>2253</a>
<a id='n2254' href='#n2254'>2254</a>
<a id='n2255' href='#n2255'>2255</a>
<a id='n2256' href='#n2256'>2256</a>
<a id='n2257' href='#n2257'>2257</a>
<a id='n2258' href='#n2258'>2258</a>
<a id='n2259' href='#n2259'>2259</a>
<a id='n2260' href='#n2260'>2260</a>
<a id='n2261' href='#n2261'>2261</a>
<a id='n2262' href='#n2262'>2262</a>
<a id='n2263' href='#n2263'>2263</a>
<a id='n2264' href='#n2264'>2264</a>
<a id='n2265' href='#n2265'>2265</a>
<a id='n2266' href='#n2266'>2266</a>
<a id='n2267' href='#n2267'>2267</a>
<a id='n2268' href='#n2268'>2268</a>
<a id='n2269' href='#n2269'>2269</a>
<a id='n2270' href='#n2270'>2270</a>
<a id='n2271' href='#n2271'>2271</a>
<a id='n2272' href='#n2272'>2272</a>
<a id='n2273' href='#n2273'>2273</a>
<a id='n2274' href='#n2274'>2274</a>
<a id='n2275' href='#n2275'>2275</a>
<a id='n2276' href='#n2276'>2276</a>
<a id='n2277' href='#n2277'>2277</a>
<a id='n2278' href='#n2278'>2278</a>
<a id='n2279' href='#n2279'>2279</a>
<a id='n2280' href='#n2280'>2280</a>
<a id='n2281' href='#n2281'>2281</a>
<a id='n2282' href='#n2282'>2282</a>
<a id='n2283' href='#n2283'>2283</a>
<a id='n2284' href='#n2284'>2284</a>
<a id='n2285' href='#n2285'>2285</a>
<a id='n2286' href='#n2286'>2286</a>
<a id='n2287' href='#n2287'>2287</a>
<a id='n2288' href='#n2288'>2288</a>
<a id='n2289' href='#n2289'>2289</a>
<a id='n2290' href='#n2290'>2290</a>
<a id='n2291' href='#n2291'>2291</a>
<a id='n2292' href='#n2292'>2292</a>
<a id='n2293' href='#n2293'>2293</a>
<a id='n2294' href='#n2294'>2294</a>
<a id='n2295' href='#n2295'>2295</a>
<a id='n2296' href='#n2296'>2296</a>
<a id='n2297' href='#n2297'>2297</a>
<a id='n2298' href='#n2298'>2298</a>
<a id='n2299' href='#n2299'>2299</a>
<a id='n2300' href='#n2300'>2300</a>
<a id='n2301' href='#n2301'>2301</a>
<a id='n2302' href='#n2302'>2302</a>
<a id='n2303' href='#n2303'>2303</a>
<a id='n2304' href='#n2304'>2304</a>
<a id='n2305' href='#n2305'>2305</a>
<a id='n2306' href='#n2306'>2306</a>
<a id='n2307' href='#n2307'>2307</a>
<a id='n2308' href='#n2308'>2308</a>
<a id='n2309' href='#n2309'>2309</a>
<a id='n2310' href='#n2310'>2310</a>
<a id='n2311' href='#n2311'>2311</a>
<a id='n2312' href='#n2312'>2312</a>
<a id='n2313' href='#n2313'>2313</a>
<a id='n2314' href='#n2314'>2314</a>
<a id='n2315' href='#n2315'>2315</a>
<a id='n2316' href='#n2316'>2316</a>
<a id='n2317' href='#n2317'>2317</a>
<a id='n2318' href='#n2318'>2318</a>
<a id='n2319' href='#n2319'>2319</a>
<a id='n2320' href='#n2320'>2320</a>
<a id='n2321' href='#n2321'>2321</a>
<a id='n2322' href='#n2322'>2322</a>
<a id='n2323' href='#n2323'>2323</a>
<a id='n2324' href='#n2324'>2324</a>
<a id='n2325' href='#n2325'>2325</a>
<a id='n2326' href='#n2326'>2326</a>
<a id='n2327' href='#n2327'>2327</a>
<a id='n2328' href='#n2328'>2328</a>
<a id='n2329' href='#n2329'>2329</a>
<a id='n2330' href='#n2330'>2330</a>
<a id='n2331' href='#n2331'>2331</a>
<a id='n2332' href='#n2332'>2332</a>
<a id='n2333' href='#n2333'>2333</a>
<a id='n2334' href='#n2334'>2334</a>
<a id='n2335' href='#n2335'>2335</a>
<a id='n2336' href='#n2336'>2336</a>
<a id='n2337' href='#n2337'>2337</a>
<a id='n2338' href='#n2338'>2338</a>
<a id='n2339' href='#n2339'>2339</a>
<a id='n2340' href='#n2340'>2340</a>
<a id='n2341' href='#n2341'>2341</a>
<a id='n2342' href='#n2342'>2342</a>
<a id='n2343' href='#n2343'>2343</a>
<a id='n2344' href='#n2344'>2344</a>
<a id='n2345' href='#n2345'>2345</a>
<a id='n2346' href='#n2346'>2346</a>
<a id='n2347' href='#n2347'>2347</a>
<a id='n2348' href='#n2348'>2348</a>
<a id='n2349' href='#n2349'>2349</a>
<a id='n2350' href='#n2350'>2350</a>
<a id='n2351' href='#n2351'>2351</a>
<a id='n2352' href='#n2352'>2352</a>
<a id='n2353' href='#n2353'>2353</a>
<a id='n2354' href='#n2354'>2354</a>
<a id='n2355' href='#n2355'>2355</a>
<a id='n2356' href='#n2356'>2356</a>
<a id='n2357' href='#n2357'>2357</a>
<a id='n2358' href='#n2358'>2358</a>
<a id='n2359' href='#n2359'>2359</a>
<a id='n2360' href='#n2360'>2360</a>
<a id='n2361' href='#n2361'>2361</a>
<a id='n2362' href='#n2362'>2362</a>
<a id='n2363' href='#n2363'>2363</a>
<a id='n2364' href='#n2364'>2364</a>
<a id='n2365' href='#n2365'>2365</a>
<a id='n2366' href='#n2366'>2366</a>
<a id='n2367' href='#n2367'>2367</a>
<a id='n2368' href='#n2368'>2368</a>
<a id='n2369' href='#n2369'>2369</a>
<a id='n2370' href='#n2370'>2370</a>
<a id='n2371' href='#n2371'>2371</a>
<a id='n2372' href='#n2372'>2372</a>
<a id='n2373' href='#n2373'>2373</a>
<a id='n2374' href='#n2374'>2374</a>
<a id='n2375' href='#n2375'>2375</a>
<a id='n2376' href='#n2376'>2376</a>
<a id='n2377' href='#n2377'>2377</a>
<a id='n2378' href='#n2378'>2378</a>
<a id='n2379' href='#n2379'>2379</a>
<a id='n2380' href='#n2380'>2380</a>
<a id='n2381' href='#n2381'>2381</a>
<a id='n2382' href='#n2382'>2382</a>
<a id='n2383' href='#n2383'>2383</a>
<a id='n2384' href='#n2384'>2384</a>
<a id='n2385' href='#n2385'>2385</a>
<a id='n2386' href='#n2386'>2386</a>
<a id='n2387' href='#n2387'>2387</a>
<a id='n2388' href='#n2388'>2388</a>
<a id='n2389' href='#n2389'>2389</a>
<a id='n2390' href='#n2390'>2390</a>
<a id='n2391' href='#n2391'>2391</a>
<a id='n2392' href='#n2392'>2392</a>
<a id='n2393' href='#n2393'>2393</a>
<a id='n2394' href='#n2394'>2394</a>
<a id='n2395' href='#n2395'>2395</a>
<a id='n2396' href='#n2396'>2396</a>
<a id='n2397' href='#n2397'>2397</a>
<a id='n2398' href='#n2398'>2398</a>
<a id='n2399' href='#n2399'>2399</a>
<a id='n2400' href='#n2400'>2400</a>
<a id='n2401' href='#n2401'>2401</a>
<a id='n2402' href='#n2402'>2402</a>
<a id='n2403' href='#n2403'>2403</a>
<a id='n2404' href='#n2404'>2404</a>
<a id='n2405' href='#n2405'>2405</a>
<a id='n2406' href='#n2406'>2406</a>
<a id='n2407' href='#n2407'>2407</a>
<a id='n2408' href='#n2408'>2408</a>
<a id='n2409' href='#n2409'>2409</a>
<a id='n2410' href='#n2410'>2410</a>
<a id='n2411' href='#n2411'>2411</a>
<a id='n2412' href='#n2412'>2412</a>
<a id='n2413' href='#n2413'>2413</a>
<a id='n2414' href='#n2414'>2414</a>
<a id='n2415' href='#n2415'>2415</a>
<a id='n2416' href='#n2416'>2416</a>
<a id='n2417' href='#n2417'>2417</a>
<a id='n2418' href='#n2418'>2418</a>
<a id='n2419' href='#n2419'>2419</a>
<a id='n2420' href='#n2420'>2420</a>
<a id='n2421' href='#n2421'>2421</a>
<a id='n2422' href='#n2422'>2422</a>
<a id='n2423' href='#n2423'>2423</a>
<a id='n2424' href='#n2424'>2424</a>
<a id='n2425' href='#n2425'>2425</a>
<a id='n2426' href='#n2426'>2426</a>
<a id='n2427' href='#n2427'>2427</a>
<a id='n2428' href='#n2428'>2428</a>
<a id='n2429' href='#n2429'>2429</a>
<a id='n2430' href='#n2430'>2430</a>
<a id='n2431' href='#n2431'>2431</a>
<a id='n2432' href='#n2432'>2432</a>
<a id='n2433' href='#n2433'>2433</a>
<a id='n2434' href='#n2434'>2434</a>
<a id='n2435' href='#n2435'>2435</a>
<a id='n2436' href='#n2436'>2436</a>
<a id='n2437' href='#n2437'>2437</a>
<a id='n2438' href='#n2438'>2438</a>
<a id='n2439' href='#n2439'>2439</a>
<a id='n2440' href='#n2440'>2440</a>
<a id='n2441' href='#n2441'>2441</a>
<a id='n2442' href='#n2442'>2442</a>
<a id='n2443' href='#n2443'>2443</a>
<a id='n2444' href='#n2444'>2444</a>
<a id='n2445' href='#n2445'>2445</a>
<a id='n2446' href='#n2446'>2446</a>
<a id='n2447' href='#n2447'>2447</a>
<a id='n2448' href='#n2448'>2448</a>
<a id='n2449' href='#n2449'>2449</a>
<a id='n2450' href='#n2450'>2450</a>
<a id='n2451' href='#n2451'>2451</a>
<a id='n2452' href='#n2452'>2452</a>
<a id='n2453' href='#n2453'>2453</a>
<a id='n2454' href='#n2454'>2454</a>
<a id='n2455' href='#n2455'>2455</a>
<a id='n2456' href='#n2456'>2456</a>
<a id='n2457' href='#n2457'>2457</a>
<a id='n2458' href='#n2458'>2458</a>
<a id='n2459' href='#n2459'>2459</a>
<a id='n2460' href='#n2460'>2460</a>
<a id='n2461' href='#n2461'>2461</a>
<a id='n2462' href='#n2462'>2462</a>
<a id='n2463' href='#n2463'>2463</a>
<a id='n2464' href='#n2464'>2464</a>
<a id='n2465' href='#n2465'>2465</a>
<a id='n2466' href='#n2466'>2466</a>
<a id='n2467' href='#n2467'>2467</a>
<a id='n2468' href='#n2468'>2468</a>
<a id='n2469' href='#n2469'>2469</a>
<a id='n2470' href='#n2470'>2470</a>
<a id='n2471' href='#n2471'>2471</a>
<a id='n2472' href='#n2472'>2472</a>
<a id='n2473' href='#n2473'>2473</a>
<a id='n2474' href='#n2474'>2474</a>
<a id='n2475' href='#n2475'>2475</a>
<a id='n2476' href='#n2476'>2476</a>
<a id='n2477' href='#n2477'>2477</a>
<a id='n2478' href='#n2478'>2478</a>
<a id='n2479' href='#n2479'>2479</a>
<a id='n2480' href='#n2480'>2480</a>
<a id='n2481' href='#n2481'>2481</a>
<a id='n2482' href='#n2482'>2482</a>
<a id='n2483' href='#n2483'>2483</a>
<a id='n2484' href='#n2484'>2484</a>
<a id='n2485' href='#n2485'>2485</a>
<a id='n2486' href='#n2486'>2486</a>
<a id='n2487' href='#n2487'>2487</a>
<a id='n2488' href='#n2488'>2488</a>
<a id='n2489' href='#n2489'>2489</a>
<a id='n2490' href='#n2490'>2490</a>
<a id='n2491' href='#n2491'>2491</a>
<a id='n2492' href='#n2492'>2492</a>
<a id='n2493' href='#n2493'>2493</a>
<a id='n2494' href='#n2494'>2494</a>
<a id='n2495' href='#n2495'>2495</a>
<a id='n2496' href='#n2496'>2496</a>
<a id='n2497' href='#n2497'>2497</a>
<a id='n2498' href='#n2498'>2498</a>
<a id='n2499' href='#n2499'>2499</a>
<a id='n2500' href='#n2500'>2500</a>
<a id='n2501' href='#n2501'>2501</a>
<a id='n2502' href='#n2502'>2502</a>
<a id='n2503' href='#n2503'>2503</a>
<a id='n2504' href='#n2504'>2504</a>
<a id='n2505' href='#n2505'>2505</a>
<a id='n2506' href='#n2506'>2506</a>
<a id='n2507' href='#n2507'>2507</a>
<a id='n2508' href='#n2508'>2508</a>
<a id='n2509' href='#n2509'>2509</a>
<a id='n2510' href='#n2510'>2510</a>
<a id='n2511' href='#n2511'>2511</a>
<a id='n2512' href='#n2512'>2512</a>
<a id='n2513' href='#n2513'>2513</a>
<a id='n2514' href='#n2514'>2514</a>
<a id='n2515' href='#n2515'>2515</a>
<a id='n2516' href='#n2516'>2516</a>
<a id='n2517' href='#n2517'>2517</a>
<a id='n2518' href='#n2518'>2518</a>
<a id='n2519' href='#n2519'>2519</a>
<a id='n2520' href='#n2520'>2520</a>
<a id='n2521' href='#n2521'>2521</a>
<a id='n2522' href='#n2522'>2522</a>
<a id='n2523' href='#n2523'>2523</a>
<a id='n2524' href='#n2524'>2524</a>
<a id='n2525' href='#n2525'>2525</a>
<a id='n2526' href='#n2526'>2526</a>
<a id='n2527' href='#n2527'>2527</a>
<a id='n2528' href='#n2528'>2528</a>
<a id='n2529' href='#n2529'>2529</a>
<a id='n2530' href='#n2530'>2530</a>
<a id='n2531' href='#n2531'>2531</a>
<a id='n2532' href='#n2532'>2532</a>
<a id='n2533' href='#n2533'>2533</a>
<a id='n2534' href='#n2534'>2534</a>
<a id='n2535' href='#n2535'>2535</a>
<a id='n2536' href='#n2536'>2536</a>
<a id='n2537' href='#n2537'>2537</a>
<a id='n2538' href='#n2538'>2538</a>
<a id='n2539' href='#n2539'>2539</a>
<a id='n2540' href='#n2540'>2540</a>
<a id='n2541' href='#n2541'>2541</a>
<a id='n2542' href='#n2542'>2542</a>
<a id='n2543' href='#n2543'>2543</a>
<a id='n2544' href='#n2544'>2544</a>
<a id='n2545' href='#n2545'>2545</a>
<a id='n2546' href='#n2546'>2546</a>
<a id='n2547' href='#n2547'>2547</a>
<a id='n2548' href='#n2548'>2548</a>
<a id='n2549' href='#n2549'>2549</a>
<a id='n2550' href='#n2550'>2550</a>
<a id='n2551' href='#n2551'>2551</a>
<a id='n2552' href='#n2552'>2552</a>
<a id='n2553' href='#n2553'>2553</a>
<a id='n2554' href='#n2554'>2554</a>
<a id='n2555' href='#n2555'>2555</a>
<a id='n2556' href='#n2556'>2556</a>
<a id='n2557' href='#n2557'>2557</a>
<a id='n2558' href='#n2558'>2558</a>
<a id='n2559' href='#n2559'>2559</a>
<a id='n2560' href='#n2560'>2560</a>
<a id='n2561' href='#n2561'>2561</a>
<a id='n2562' href='#n2562'>2562</a>
<a id='n2563' href='#n2563'>2563</a>
<a id='n2564' href='#n2564'>2564</a>
<a id='n2565' href='#n2565'>2565</a>
<a id='n2566' href='#n2566'>2566</a>
<a id='n2567' href='#n2567'>2567</a>
<a id='n2568' href='#n2568'>2568</a>
<a id='n2569' href='#n2569'>2569</a>
<a id='n2570' href='#n2570'>2570</a>
<a id='n2571' href='#n2571'>2571</a>
<a id='n2572' href='#n2572'>2572</a>
<a id='n2573' href='#n2573'>2573</a>
<a id='n2574' href='#n2574'>2574</a>
<a id='n2575' href='#n2575'>2575</a>
<a id='n2576' href='#n2576'>2576</a>
<a id='n2577' href='#n2577'>2577</a>
<a id='n2578' href='#n2578'>2578</a>
<a id='n2579' href='#n2579'>2579</a>
<a id='n2580' href='#n2580'>2580</a>
<a id='n2581' href='#n2581'>2581</a>
<a id='n2582' href='#n2582'>2582</a>
<a id='n2583' href='#n2583'>2583</a>
<a id='n2584' href='#n2584'>2584</a>
<a id='n2585' href='#n2585'>2585</a>
<a id='n2586' href='#n2586'>2586</a>
<a id='n2587' href='#n2587'>2587</a>
<a id='n2588' href='#n2588'>2588</a>
<a id='n2589' href='#n2589'>2589</a>
<a id='n2590' href='#n2590'>2590</a>
<a id='n2591' href='#n2591'>2591</a>
<a id='n2592' href='#n2592'>2592</a>
<a id='n2593' href='#n2593'>2593</a>
<a id='n2594' href='#n2594'>2594</a>
<a id='n2595' href='#n2595'>2595</a>
<a id='n2596' href='#n2596'>2596</a>
<a id='n2597' href='#n2597'>2597</a>
<a id='n2598' href='#n2598'>2598</a>
<a id='n2599' href='#n2599'>2599</a>
<a id='n2600' href='#n2600'>2600</a>
<a id='n2601' href='#n2601'>2601</a>
<a id='n2602' href='#n2602'>2602</a>
<a id='n2603' href='#n2603'>2603</a>
<a id='n2604' href='#n2604'>2604</a>
<a id='n2605' href='#n2605'>2605</a>
<a id='n2606' href='#n2606'>2606</a>
<a id='n2607' href='#n2607'>2607</a>
<a id='n2608' href='#n2608'>2608</a>
<a id='n2609' href='#n2609'>2609</a>
<a id='n2610' href='#n2610'>2610</a>
<a id='n2611' href='#n2611'>2611</a>
<a id='n2612' href='#n2612'>2612</a>
<a id='n2613' href='#n2613'>2613</a>
<a id='n2614' href='#n2614'>2614</a>
<a id='n2615' href='#n2615'>2615</a>
<a id='n2616' href='#n2616'>2616</a>
<a id='n2617' href='#n2617'>2617</a>
<a id='n2618' href='#n2618'>2618</a>
<a id='n2619' href='#n2619'>2619</a>
<a id='n2620' href='#n2620'>2620</a>
<a id='n2621' href='#n2621'>2621</a>
<a id='n2622' href='#n2622'>2622</a>
<a id='n2623' href='#n2623'>2623</a>
<a id='n2624' href='#n2624'>2624</a>
<a id='n2625' href='#n2625'>2625</a>
<a id='n2626' href='#n2626'>2626</a>
<a id='n2627' href='#n2627'>2627</a>
<a id='n2628' href='#n2628'>2628</a>
<a id='n2629' href='#n2629'>2629</a>
<a id='n2630' href='#n2630'>2630</a>
<a id='n2631' href='#n2631'>2631</a>
<a id='n2632' href='#n2632'>2632</a>
<a id='n2633' href='#n2633'>2633</a>
<a id='n2634' href='#n2634'>2634</a>
<a id='n2635' href='#n2635'>2635</a>
<a id='n2636' href='#n2636'>2636</a>
<a id='n2637' href='#n2637'>2637</a>
<a id='n2638' href='#n2638'>2638</a>
<a id='n2639' href='#n2639'>2639</a>
<a id='n2640' href='#n2640'>2640</a>
<a id='n2641' href='#n2641'>2641</a>
<a id='n2642' href='#n2642'>2642</a>
<a id='n2643' href='#n2643'>2643</a>
<a id='n2644' href='#n2644'>2644</a>
<a id='n2645' href='#n2645'>2645</a>
<a id='n2646' href='#n2646'>2646</a>
<a id='n2647' href='#n2647'>2647</a>
<a id='n2648' href='#n2648'>2648</a>
<a id='n2649' href='#n2649'>2649</a>
<a id='n2650' href='#n2650'>2650</a>
<a id='n2651' href='#n2651'>2651</a>
<a id='n2652' href='#n2652'>2652</a>
<a id='n2653' href='#n2653'>2653</a>
<a id='n2654' href='#n2654'>2654</a>
<a id='n2655' href='#n2655'>2655</a>
<a id='n2656' href='#n2656'>2656</a>
<a id='n2657' href='#n2657'>2657</a>
<a id='n2658' href='#n2658'>2658</a>
<a id='n2659' href='#n2659'>2659</a>
<a id='n2660' href='#n2660'>2660</a>
<a id='n2661' href='#n2661'>2661</a>
<a id='n2662' href='#n2662'>2662</a>
<a id='n2663' href='#n2663'>2663</a>
<a id='n2664' href='#n2664'>2664</a>
<a id='n2665' href='#n2665'>2665</a>
<a id='n2666' href='#n2666'>2666</a>
<a id='n2667' href='#n2667'>2667</a>
<a id='n2668' href='#n2668'>2668</a>
<a id='n2669' href='#n2669'>2669</a>
<a id='n2670' href='#n2670'>2670</a>
<a id='n2671' href='#n2671'>2671</a>
<a id='n2672' href='#n2672'>2672</a>
<a id='n2673' href='#n2673'>2673</a>
<a id='n2674' href='#n2674'>2674</a>
<a id='n2675' href='#n2675'>2675</a>
<a id='n2676' href='#n2676'>2676</a>
<a id='n2677' href='#n2677'>2677</a>
<a id='n2678' href='#n2678'>2678</a>
<a id='n2679' href='#n2679'>2679</a>
<a id='n2680' href='#n2680'>2680</a>
<a id='n2681' href='#n2681'>2681</a>
<a id='n2682' href='#n2682'>2682</a>
<a id='n2683' href='#n2683'>2683</a>
<a id='n2684' href='#n2684'>2684</a>
<a id='n2685' href='#n2685'>2685</a>
<a id='n2686' href='#n2686'>2686</a>
<a id='n2687' href='#n2687'>2687</a>
<a id='n2688' href='#n2688'>2688</a>
<a id='n2689' href='#n2689'>2689</a>
<a id='n2690' href='#n2690'>2690</a>
<a id='n2691' href='#n2691'>2691</a>
<a id='n2692' href='#n2692'>2692</a>
<a id='n2693' href='#n2693'>2693</a>
<a id='n2694' href='#n2694'>2694</a>
<a id='n2695' href='#n2695'>2695</a>
<a id='n2696' href='#n2696'>2696</a>
<a id='n2697' href='#n2697'>2697</a>
<a id='n2698' href='#n2698'>2698</a>
<a id='n2699' href='#n2699'>2699</a>
<a id='n2700' href='#n2700'>2700</a>
<a id='n2701' href='#n2701'>2701</a>
<a id='n2702' href='#n2702'>2702</a>
<a id='n2703' href='#n2703'>2703</a>
<a id='n2704' href='#n2704'>2704</a>
<a id='n2705' href='#n2705'>2705</a>
<a id='n2706' href='#n2706'>2706</a>
<a id='n2707' href='#n2707'>2707</a>
<a id='n2708' href='#n2708'>2708</a>
<a id='n2709' href='#n2709'>2709</a>
<a id='n2710' href='#n2710'>2710</a>
<a id='n2711' href='#n2711'>2711</a>
<a id='n2712' href='#n2712'>2712</a>
<a id='n2713' href='#n2713'>2713</a>
<a id='n2714' href='#n2714'>2714</a>
<a id='n2715' href='#n2715'>2715</a>
<a id='n2716' href='#n2716'>2716</a>
<a id='n2717' href='#n2717'>2717</a>
<a id='n2718' href='#n2718'>2718</a>
<a id='n2719' href='#n2719'>2719</a>
<a id='n2720' href='#n2720'>2720</a>
<a id='n2721' href='#n2721'>2721</a>
<a id='n2722' href='#n2722'>2722</a>
<a id='n2723' href='#n2723'>2723</a>
<a id='n2724' href='#n2724'>2724</a>
<a id='n2725' href='#n2725'>2725</a>
<a id='n2726' href='#n2726'>2726</a>
<a id='n2727' href='#n2727'>2727</a>
<a id='n2728' href='#n2728'>2728</a>
<a id='n2729' href='#n2729'>2729</a>
<a id='n2730' href='#n2730'>2730</a>
<a id='n2731' href='#n2731'>2731</a>
<a id='n2732' href='#n2732'>2732</a>
<a id='n2733' href='#n2733'>2733</a>
<a id='n2734' href='#n2734'>2734</a>
<a id='n2735' href='#n2735'>2735</a>
<a id='n2736' href='#n2736'>2736</a>
<a id='n2737' href='#n2737'>2737</a>
<a id='n2738' href='#n2738'>2738</a>
<a id='n2739' href='#n2739'>2739</a>
<a id='n2740' href='#n2740'>2740</a>
<a id='n2741' href='#n2741'>2741</a>
<a id='n2742' href='#n2742'>2742</a>
<a id='n2743' href='#n2743'>2743</a>
<a id='n2744' href='#n2744'>2744</a>
<a id='n2745' href='#n2745'>2745</a>
<a id='n2746' href='#n2746'>2746</a>
<a id='n2747' href='#n2747'>2747</a>
<a id='n2748' href='#n2748'>2748</a>
<a id='n2749' href='#n2749'>2749</a>
<a id='n2750' href='#n2750'>2750</a>
<a id='n2751' href='#n2751'>2751</a>
<a id='n2752' href='#n2752'>2752</a>
<a id='n2753' href='#n2753'>2753</a>
<a id='n2754' href='#n2754'>2754</a>
<a id='n2755' href='#n2755'>2755</a>
<a id='n2756' href='#n2756'>2756</a>
<a id='n2757' href='#n2757'>2757</a>
<a id='n2758' href='#n2758'>2758</a>
<a id='n2759' href='#n2759'>2759</a>
<a id='n2760' href='#n2760'>2760</a>
<a id='n2761' href='#n2761'>2761</a>
<a id='n2762' href='#n2762'>2762</a>
<a id='n2763' href='#n2763'>2763</a>
<a id='n2764' href='#n2764'>2764</a>
<a id='n2765' href='#n2765'>2765</a>
<a id='n2766' href='#n2766'>2766</a>
<a id='n2767' href='#n2767'>2767</a>
<a id='n2768' href='#n2768'>2768</a>
<a id='n2769' href='#n2769'>2769</a>
<a id='n2770' href='#n2770'>2770</a>
<a id='n2771' href='#n2771'>2771</a>
<a id='n2772' href='#n2772'>2772</a>
<a id='n2773' href='#n2773'>2773</a>
<a id='n2774' href='#n2774'>2774</a>
<a id='n2775' href='#n2775'>2775</a>
<a id='n2776' href='#n2776'>2776</a>
<a id='n2777' href='#n2777'>2777</a>
<a id='n2778' href='#n2778'>2778</a>
<a id='n2779' href='#n2779'>2779</a>
<a id='n2780' href='#n2780'>2780</a>
<a id='n2781' href='#n2781'>2781</a>
<a id='n2782' href='#n2782'>2782</a>
<a id='n2783' href='#n2783'>2783</a>
<a id='n2784' href='#n2784'>2784</a>
<a id='n2785' href='#n2785'>2785</a>
<a id='n2786' href='#n2786'>2786</a>
<a id='n2787' href='#n2787'>2787</a>
<a id='n2788' href='#n2788'>2788</a>
<a id='n2789' href='#n2789'>2789</a>
<a id='n2790' href='#n2790'>2790</a>
<a id='n2791' href='#n2791'>2791</a>
<a id='n2792' href='#n2792'>2792</a>
<a id='n2793' href='#n2793'>2793</a>
<a id='n2794' href='#n2794'>2794</a>
<a id='n2795' href='#n2795'>2795</a>
<a id='n2796' href='#n2796'>2796</a>
<a id='n2797' href='#n2797'>2797</a>
<a id='n2798' href='#n2798'>2798</a>
<a id='n2799' href='#n2799'>2799</a>
<a id='n2800' href='#n2800'>2800</a>
<a id='n2801' href='#n2801'>2801</a>
<a id='n2802' href='#n2802'>2802</a>
<a id='n2803' href='#n2803'>2803</a>
<a id='n2804' href='#n2804'>2804</a>
<a id='n2805' href='#n2805'>2805</a>
<a id='n2806' href='#n2806'>2806</a>
<a id='n2807' href='#n2807'>2807</a>
<a id='n2808' href='#n2808'>2808</a>
<a id='n2809' href='#n2809'>2809</a>
<a id='n2810' href='#n2810'>2810</a>
<a id='n2811' href='#n2811'>2811</a>
<a id='n2812' href='#n2812'>2812</a>
<a id='n2813' href='#n2813'>2813</a>
<a id='n2814' href='#n2814'>2814</a>
<a id='n2815' href='#n2815'>2815</a>
<a id='n2816' href='#n2816'>2816</a>
<a id='n2817' href='#n2817'>2817</a>
<a id='n2818' href='#n2818'>2818</a>
<a id='n2819' href='#n2819'>2819</a>
<a id='n2820' href='#n2820'>2820</a>
<a id='n2821' href='#n2821'>2821</a>
<a id='n2822' href='#n2822'>2822</a>
<a id='n2823' href='#n2823'>2823</a>
<a id='n2824' href='#n2824'>2824</a>
<a id='n2825' href='#n2825'>2825</a>
<a id='n2826' href='#n2826'>2826</a>
<a id='n2827' href='#n2827'>2827</a>
<a id='n2828' href='#n2828'>2828</a>
<a id='n2829' href='#n2829'>2829</a>
<a id='n2830' href='#n2830'>2830</a>
<a id='n2831' href='#n2831'>2831</a>
<a id='n2832' href='#n2832'>2832</a>
<a id='n2833' href='#n2833'>2833</a>
<a id='n2834' href='#n2834'>2834</a>
<a id='n2835' href='#n2835'>2835</a>
<a id='n2836' href='#n2836'>2836</a>
<a id='n2837' href='#n2837'>2837</a>
<a id='n2838' href='#n2838'>2838</a>
<a id='n2839' href='#n2839'>2839</a>
<a id='n2840' href='#n2840'>2840</a>
<a id='n2841' href='#n2841'>2841</a>
<a id='n2842' href='#n2842'>2842</a>
<a id='n2843' href='#n2843'>2843</a>
<a id='n2844' href='#n2844'>2844</a>
<a id='n2845' href='#n2845'>2845</a>
<a id='n2846' href='#n2846'>2846</a>
<a id='n2847' href='#n2847'>2847</a>
<a id='n2848' href='#n2848'>2848</a>
<a id='n2849' href='#n2849'>2849</a>
<a id='n2850' href='#n2850'>2850</a>
<a id='n2851' href='#n2851'>2851</a>
<a id='n2852' href='#n2852'>2852</a>
<a id='n2853' href='#n2853'>2853</a>
<a id='n2854' href='#n2854'>2854</a>
<a id='n2855' href='#n2855'>2855</a>
<a id='n2856' href='#n2856'>2856</a>
<a id='n2857' href='#n2857'>2857</a>
<a id='n2858' href='#n2858'>2858</a>
<a id='n2859' href='#n2859'>2859</a>
<a id='n2860' href='#n2860'>2860</a>
<a id='n2861' href='#n2861'>2861</a>
<a id='n2862' href='#n2862'>2862</a>
<a id='n2863' href='#n2863'>2863</a>
<a id='n2864' href='#n2864'>2864</a>
<a id='n2865' href='#n2865'>2865</a>
<a id='n2866' href='#n2866'>2866</a>
<a id='n2867' href='#n2867'>2867</a>
<a id='n2868' href='#n2868'>2868</a>
<a id='n2869' href='#n2869'>2869</a>
<a id='n2870' href='#n2870'>2870</a>
<a id='n2871' href='#n2871'>2871</a>
<a id='n2872' href='#n2872'>2872</a>
<a id='n2873' href='#n2873'>2873</a>
<a id='n2874' href='#n2874'>2874</a>
<a id='n2875' href='#n2875'>2875</a>
<a id='n2876' href='#n2876'>2876</a>
<a id='n2877' href='#n2877'>2877</a>
<a id='n2878' href='#n2878'>2878</a>
<a id='n2879' href='#n2879'>2879</a>
<a id='n2880' href='#n2880'>2880</a>
<a id='n2881' href='#n2881'>2881</a>
<a id='n2882' href='#n2882'>2882</a>
<a id='n2883' href='#n2883'>2883</a>
<a id='n2884' href='#n2884'>2884</a>
<a id='n2885' href='#n2885'>2885</a>
<a id='n2886' href='#n2886'>2886</a>
<a id='n2887' href='#n2887'>2887</a>
<a id='n2888' href='#n2888'>2888</a>
<a id='n2889' href='#n2889'>2889</a>
<a id='n2890' href='#n2890'>2890</a>
<a id='n2891' href='#n2891'>2891</a>
<a id='n2892' href='#n2892'>2892</a>
<a id='n2893' href='#n2893'>2893</a>
<a id='n2894' href='#n2894'>2894</a>
<a id='n2895' href='#n2895'>2895</a>
<a id='n2896' href='#n2896'>2896</a>
<a id='n2897' href='#n2897'>2897</a>
<a id='n2898' href='#n2898'>2898</a>
<a id='n2899' href='#n2899'>2899</a>
<a id='n2900' href='#n2900'>2900</a>
<a id='n2901' href='#n2901'>2901</a>
<a id='n2902' href='#n2902'>2902</a>
<a id='n2903' href='#n2903'>2903</a>
<a id='n2904' href='#n2904'>2904</a>
<a id='n2905' href='#n2905'>2905</a>
<a id='n2906' href='#n2906'>2906</a>
<a id='n2907' href='#n2907'>2907</a>
<a id='n2908' href='#n2908'>2908</a>
<a id='n2909' href='#n2909'>2909</a>
<a id='n2910' href='#n2910'>2910</a>
<a id='n2911' href='#n2911'>2911</a>
<a id='n2912' href='#n2912'>2912</a>
<a id='n2913' href='#n2913'>2913</a>
<a id='n2914' href='#n2914'>2914</a>
<a id='n2915' href='#n2915'>2915</a>
<a id='n2916' href='#n2916'>2916</a>
<a id='n2917' href='#n2917'>2917</a>
<a id='n2918' href='#n2918'>2918</a>
<a id='n2919' href='#n2919'>2919</a>
<a id='n2920' href='#n2920'>2920</a>
<a id='n2921' href='#n2921'>2921</a>
<a id='n2922' href='#n2922'>2922</a>
<a id='n2923' href='#n2923'>2923</a>
<a id='n2924' href='#n2924'>2924</a>
<a id='n2925' href='#n2925'>2925</a>
<a id='n2926' href='#n2926'>2926</a>
<a id='n2927' href='#n2927'>2927</a>
<a id='n2928' href='#n2928'>2928</a>
<a id='n2929' href='#n2929'>2929</a>
<a id='n2930' href='#n2930'>2930</a>
<a id='n2931' href='#n2931'>2931</a>
<a id='n2932' href='#n2932'>2932</a>
<a id='n2933' href='#n2933'>2933</a>
<a id='n2934' href='#n2934'>2934</a>
<a id='n2935' href='#n2935'>2935</a>
<a id='n2936' href='#n2936'>2936</a>
<a id='n2937' href='#n2937'>2937</a>
<a id='n2938' href='#n2938'>2938</a>
<a id='n2939' href='#n2939'>2939</a>
<a id='n2940' href='#n2940'>2940</a>
<a id='n2941' href='#n2941'>2941</a>
<a id='n2942' href='#n2942'>2942</a>
<a id='n2943' href='#n2943'>2943</a>
<a id='n2944' href='#n2944'>2944</a>
<a id='n2945' href='#n2945'>2945</a>
<a id='n2946' href='#n2946'>2946</a>
<a id='n2947' href='#n2947'>2947</a>
<a id='n2948' href='#n2948'>2948</a>
<a id='n2949' href='#n2949'>2949</a>
<a id='n2950' href='#n2950'>2950</a>
<a id='n2951' href='#n2951'>2951</a>
<a id='n2952' href='#n2952'>2952</a>
<a id='n2953' href='#n2953'>2953</a>
<a id='n2954' href='#n2954'>2954</a>
<a id='n2955' href='#n2955'>2955</a>
<a id='n2956' href='#n2956'>2956</a>
<a id='n2957' href='#n2957'>2957</a>
<a id='n2958' href='#n2958'>2958</a>
<a id='n2959' href='#n2959'>2959</a>
<a id='n2960' href='#n2960'>2960</a>
<a id='n2961' href='#n2961'>2961</a>
<a id='n2962' href='#n2962'>2962</a>
<a id='n2963' href='#n2963'>2963</a>
<a id='n2964' href='#n2964'>2964</a>
<a id='n2965' href='#n2965'>2965</a>
<a id='n2966' href='#n2966'>2966</a>
<a id='n2967' href='#n2967'>2967</a>
<a id='n2968' href='#n2968'>2968</a>
<a id='n2969' href='#n2969'>2969</a>
<a id='n2970' href='#n2970'>2970</a>
<a id='n2971' href='#n2971'>2971</a>
<a id='n2972' href='#n2972'>2972</a>
<a id='n2973' href='#n2973'>2973</a>
<a id='n2974' href='#n2974'>2974</a>
<a id='n2975' href='#n2975'>2975</a>
<a id='n2976' href='#n2976'>2976</a>
<a id='n2977' href='#n2977'>2977</a>
<a id='n2978' href='#n2978'>2978</a>
<a id='n2979' href='#n2979'>2979</a>
<a id='n2980' href='#n2980'>2980</a>
<a id='n2981' href='#n2981'>2981</a>
<a id='n2982' href='#n2982'>2982</a>
<a id='n2983' href='#n2983'>2983</a>
<a id='n2984' href='#n2984'>2984</a>
<a id='n2985' href='#n2985'>2985</a>
<a id='n2986' href='#n2986'>2986</a>
<a id='n2987' href='#n2987'>2987</a>
<a id='n2988' href='#n2988'>2988</a>
<a id='n2989' href='#n2989'>2989</a>
<a id='n2990' href='#n2990'>2990</a>
<a id='n2991' href='#n2991'>2991</a>
<a id='n2992' href='#n2992'>2992</a>
<a id='n2993' href='#n2993'>2993</a>
<a id='n2994' href='#n2994'>2994</a>
<a id='n2995' href='#n2995'>2995</a>
<a id='n2996' href='#n2996'>2996</a>
<a id='n2997' href='#n2997'>2997</a>
<a id='n2998' href='#n2998'>2998</a>
<a id='n2999' href='#n2999'>2999</a>
<a id='n3000' href='#n3000'>3000</a>
<a id='n3001' href='#n3001'>3001</a>
<a id='n3002' href='#n3002'>3002</a>
<a id='n3003' href='#n3003'>3003</a>
<a id='n3004' href='#n3004'>3004</a>
<a id='n3005' href='#n3005'>3005</a>
<a id='n3006' href='#n3006'>3006</a>
<a id='n3007' href='#n3007'>3007</a>
<a id='n3008' href='#n3008'>3008</a>
<a id='n3009' href='#n3009'>3009</a>
<a id='n3010' href='#n3010'>3010</a>
<a id='n3011' href='#n3011'>3011</a>
<a id='n3012' href='#n3012'>3012</a>
<a id='n3013' href='#n3013'>3013</a>
<a id='n3014' href='#n3014'>3014</a>
<a id='n3015' href='#n3015'>3015</a>
<a id='n3016' href='#n3016'>3016</a>
<a id='n3017' href='#n3017'>3017</a>
<a id='n3018' href='#n3018'>3018</a>
<a id='n3019' href='#n3019'>3019</a>
<a id='n3020' href='#n3020'>3020</a>
<a id='n3021' href='#n3021'>3021</a>
<a id='n3022' href='#n3022'>3022</a>
<a id='n3023' href='#n3023'>3023</a>
<a id='n3024' href='#n3024'>3024</a>
<a id='n3025' href='#n3025'>3025</a>
<a id='n3026' href='#n3026'>3026</a>
<a id='n3027' href='#n3027'>3027</a>
<a id='n3028' href='#n3028'>3028</a>
<a id='n3029' href='#n3029'>3029</a>
<a id='n3030' href='#n3030'>3030</a>
<a id='n3031' href='#n3031'>3031</a>
<a id='n3032' href='#n3032'>3032</a>
<a id='n3033' href='#n3033'>3033</a>
<a id='n3034' href='#n3034'>3034</a>
<a id='n3035' href='#n3035'>3035</a>
<a id='n3036' href='#n3036'>3036</a>
<a id='n3037' href='#n3037'>3037</a>
<a id='n3038' href='#n3038'>3038</a>
<a id='n3039' href='#n3039'>3039</a>
<a id='n3040' href='#n3040'>3040</a>
<a id='n3041' href='#n3041'>3041</a>
<a id='n3042' href='#n3042'>3042</a>
<a id='n3043' href='#n3043'>3043</a>
<a id='n3044' href='#n3044'>3044</a>
<a id='n3045' href='#n3045'>3045</a>
<a id='n3046' href='#n3046'>3046</a>
<a id='n3047' href='#n3047'>3047</a>
<a id='n3048' href='#n3048'>3048</a>
<a id='n3049' href='#n3049'>3049</a>
<a id='n3050' href='#n3050'>3050</a>
<a id='n3051' href='#n3051'>3051</a>
<a id='n3052' href='#n3052'>3052</a>
<a id='n3053' href='#n3053'>3053</a>
<a id='n3054' href='#n3054'>3054</a>
<a id='n3055' href='#n3055'>3055</a>
<a id='n3056' href='#n3056'>3056</a>
<a id='n3057' href='#n3057'>3057</a>
<a id='n3058' href='#n3058'>3058</a>
<a id='n3059' href='#n3059'>3059</a>
<a id='n3060' href='#n3060'>3060</a>
<a id='n3061' href='#n3061'>3061</a>
<a id='n3062' href='#n3062'>3062</a>
<a id='n3063' href='#n3063'>3063</a>
<a id='n3064' href='#n3064'>3064</a>
<a id='n3065' href='#n3065'>3065</a>
<a id='n3066' href='#n3066'>3066</a>
<a id='n3067' href='#n3067'>3067</a>
<a id='n3068' href='#n3068'>3068</a>
<a id='n3069' href='#n3069'>3069</a>
<a id='n3070' href='#n3070'>3070</a>
<a id='n3071' href='#n3071'>3071</a>
<a id='n3072' href='#n3072'>3072</a>
<a id='n3073' href='#n3073'>3073</a>
<a id='n3074' href='#n3074'>3074</a>
<a id='n3075' href='#n3075'>3075</a>
<a id='n3076' href='#n3076'>3076</a>
<a id='n3077' href='#n3077'>3077</a>
<a id='n3078' href='#n3078'>3078</a>
<a id='n3079' href='#n3079'>3079</a>
<a id='n3080' href='#n3080'>3080</a>
<a id='n3081' href='#n3081'>3081</a>
<a id='n3082' href='#n3082'>3082</a>
<a id='n3083' href='#n3083'>3083</a>
<a id='n3084' href='#n3084'>3084</a>
<a id='n3085' href='#n3085'>3085</a>
<a id='n3086' href='#n3086'>3086</a>
<a id='n3087' href='#n3087'>3087</a>
<a id='n3088' href='#n3088'>3088</a>
<a id='n3089' href='#n3089'>3089</a>
<a id='n3090' href='#n3090'>3090</a>
<a id='n3091' href='#n3091'>3091</a>
<a id='n3092' href='#n3092'>3092</a>
<a id='n3093' href='#n3093'>3093</a>
<a id='n3094' href='#n3094'>3094</a>
<a id='n3095' href='#n3095'>3095</a>
<a id='n3096' href='#n3096'>3096</a>
<a id='n3097' href='#n3097'>3097</a>
<a id='n3098' href='#n3098'>3098</a>
<a id='n3099' href='#n3099'>3099</a>
<a id='n3100' href='#n3100'>3100</a>
<a id='n3101' href='#n3101'>3101</a>
<a id='n3102' href='#n3102'>3102</a>
<a id='n3103' href='#n3103'>3103</a>
<a id='n3104' href='#n3104'>3104</a>
<a id='n3105' href='#n3105'>3105</a>
<a id='n3106' href='#n3106'>3106</a>
<a id='n3107' href='#n3107'>3107</a>
<a id='n3108' href='#n3108'>3108</a>
<a id='n3109' href='#n3109'>3109</a>
<a id='n3110' href='#n3110'>3110</a>
<a id='n3111' href='#n3111'>3111</a>
<a id='n3112' href='#n3112'>3112</a>
<a id='n3113' href='#n3113'>3113</a>
<a id='n3114' href='#n3114'>3114</a>
<a id='n3115' href='#n3115'>3115</a>
<a id='n3116' href='#n3116'>3116</a>
<a id='n3117' href='#n3117'>3117</a>
<a id='n3118' href='#n3118'>3118</a>
<a id='n3119' href='#n3119'>3119</a>
<a id='n3120' href='#n3120'>3120</a>
<a id='n3121' href='#n3121'>3121</a>
<a id='n3122' href='#n3122'>3122</a>
<a id='n3123' href='#n3123'>3123</a>
<a id='n3124' href='#n3124'>3124</a>
<a id='n3125' href='#n3125'>3125</a>
<a id='n3126' href='#n3126'>3126</a>
<a id='n3127' href='#n3127'>3127</a>
<a id='n3128' href='#n3128'>3128</a>
<a id='n3129' href='#n3129'>3129</a>
<a id='n3130' href='#n3130'>3130</a>
<a id='n3131' href='#n3131'>3131</a>
<a id='n3132' href='#n3132'>3132</a>
<a id='n3133' href='#n3133'>3133</a>
<a id='n3134' href='#n3134'>3134</a>
<a id='n3135' href='#n3135'>3135</a>
<a id='n3136' href='#n3136'>3136</a>
<a id='n3137' href='#n3137'>3137</a>
<a id='n3138' href='#n3138'>3138</a>
<a id='n3139' href='#n3139'>3139</a>
<a id='n3140' href='#n3140'>3140</a>
<a id='n3141' href='#n3141'>3141</a>
<a id='n3142' href='#n3142'>3142</a>
<a id='n3143' href='#n3143'>3143</a>
<a id='n3144' href='#n3144'>3144</a>
<a id='n3145' href='#n3145'>3145</a>
<a id='n3146' href='#n3146'>3146</a>
<a id='n3147' href='#n3147'>3147</a>
<a id='n3148' href='#n3148'>3148</a>
<a id='n3149' href='#n3149'>3149</a>
<a id='n3150' href='#n3150'>3150</a>
<a id='n3151' href='#n3151'>3151</a>
<a id='n3152' href='#n3152'>3152</a>
<a id='n3153' href='#n3153'>3153</a>
<a id='n3154' href='#n3154'>3154</a>
<a id='n3155' href='#n3155'>3155</a>
<a id='n3156' href='#n3156'>3156</a>
<a id='n3157' href='#n3157'>3157</a>
<a id='n3158' href='#n3158'>3158</a>
<a id='n3159' href='#n3159'>3159</a>
<a id='n3160' href='#n3160'>3160</a>
<a id='n3161' href='#n3161'>3161</a>
<a id='n3162' href='#n3162'>3162</a>
<a id='n3163' href='#n3163'>3163</a>
<a id='n3164' href='#n3164'>3164</a>
<a id='n3165' href='#n3165'>3165</a>
<a id='n3166' href='#n3166'>3166</a>
<a id='n3167' href='#n3167'>3167</a>
<a id='n3168' href='#n3168'>3168</a>
<a id='n3169' href='#n3169'>3169</a>
<a id='n3170' href='#n3170'>3170</a>
<a id='n3171' href='#n3171'>3171</a>
<a id='n3172' href='#n3172'>3172</a>
<a id='n3173' href='#n3173'>3173</a>
<a id='n3174' href='#n3174'>3174</a>
<a id='n3175' href='#n3175'>3175</a>
<a id='n3176' href='#n3176'>3176</a>
<a id='n3177' href='#n3177'>3177</a>
<a id='n3178' href='#n3178'>3178</a>
<a id='n3179' href='#n3179'>3179</a>
<a id='n3180' href='#n3180'>3180</a>
<a id='n3181' href='#n3181'>3181</a>
<a id='n3182' href='#n3182'>3182</a>
<a id='n3183' href='#n3183'>3183</a>
<a id='n3184' href='#n3184'>3184</a>
<a id='n3185' href='#n3185'>3185</a>
<a id='n3186' href='#n3186'>3186</a>
<a id='n3187' href='#n3187'>3187</a>
<a id='n3188' href='#n3188'>3188</a>
<a id='n3189' href='#n3189'>3189</a>
<a id='n3190' href='#n3190'>3190</a>
<a id='n3191' href='#n3191'>3191</a>
<a id='n3192' href='#n3192'>3192</a>
<a id='n3193' href='#n3193'>3193</a>
<a id='n3194' href='#n3194'>3194</a>
<a id='n3195' href='#n3195'>3195</a>
<a id='n3196' href='#n3196'>3196</a>
<a id='n3197' href='#n3197'>3197</a>
<a id='n3198' href='#n3198'>3198</a>
<a id='n3199' href='#n3199'>3199</a>
<a id='n3200' href='#n3200'>3200</a>
<a id='n3201' href='#n3201'>3201</a>
<a id='n3202' href='#n3202'>3202</a>
<a id='n3203' href='#n3203'>3203</a>
<a id='n3204' href='#n3204'>3204</a>
<a id='n3205' href='#n3205'>3205</a>
<a id='n3206' href='#n3206'>3206</a>
<a id='n3207' href='#n3207'>3207</a>
<a id='n3208' href='#n3208'>3208</a>
<a id='n3209' href='#n3209'>3209</a>
<a id='n3210' href='#n3210'>3210</a>
<a id='n3211' href='#n3211'>3211</a>
<a id='n3212' href='#n3212'>3212</a>
<a id='n3213' href='#n3213'>3213</a>
<a id='n3214' href='#n3214'>3214</a>
<a id='n3215' href='#n3215'>3215</a>
<a id='n3216' href='#n3216'>3216</a>
<a id='n3217' href='#n3217'>3217</a>
<a id='n3218' href='#n3218'>3218</a>
<a id='n3219' href='#n3219'>3219</a>
<a id='n3220' href='#n3220'>3220</a>
<a id='n3221' href='#n3221'>3221</a>
<a id='n3222' href='#n3222'>3222</a>
<a id='n3223' href='#n3223'>3223</a>
<a id='n3224' href='#n3224'>3224</a>
<a id='n3225' href='#n3225'>3225</a>
<a id='n3226' href='#n3226'>3226</a>
<a id='n3227' href='#n3227'>3227</a>
<a id='n3228' href='#n3228'>3228</a>
<a id='n3229' href='#n3229'>3229</a>
<a id='n3230' href='#n3230'>3230</a>
<a id='n3231' href='#n3231'>3231</a>
<a id='n3232' href='#n3232'>3232</a>
<a id='n3233' href='#n3233'>3233</a>
<a id='n3234' href='#n3234'>3234</a>
<a id='n3235' href='#n3235'>3235</a>
<a id='n3236' href='#n3236'>3236</a>
<a id='n3237' href='#n3237'>3237</a>
<a id='n3238' href='#n3238'>3238</a>
<a id='n3239' href='#n3239'>3239</a>
<a id='n3240' href='#n3240'>3240</a>
<a id='n3241' href='#n3241'>3241</a>
<a id='n3242' href='#n3242'>3242</a>
<a id='n3243' href='#n3243'>3243</a>
<a id='n3244' href='#n3244'>3244</a>
<a id='n3245' href='#n3245'>3245</a>
<a id='n3246' href='#n3246'>3246</a>
<a id='n3247' href='#n3247'>3247</a>
<a id='n3248' href='#n3248'>3248</a>
<a id='n3249' href='#n3249'>3249</a>
<a id='n3250' href='#n3250'>3250</a>
<a id='n3251' href='#n3251'>3251</a>
<a id='n3252' href='#n3252'>3252</a>
<a id='n3253' href='#n3253'>3253</a>
<a id='n3254' href='#n3254'>3254</a>
<a id='n3255' href='#n3255'>3255</a>
<a id='n3256' href='#n3256'>3256</a>
<a id='n3257' href='#n3257'>3257</a>
<a id='n3258' href='#n3258'>3258</a>
<a id='n3259' href='#n3259'>3259</a>
<a id='n3260' href='#n3260'>3260</a>
<a id='n3261' href='#n3261'>3261</a>
<a id='n3262' href='#n3262'>3262</a>
<a id='n3263' href='#n3263'>3263</a>
<a id='n3264' href='#n3264'>3264</a>
<a id='n3265' href='#n3265'>3265</a>
<a id='n3266' href='#n3266'>3266</a>
<a id='n3267' href='#n3267'>3267</a>
<a id='n3268' href='#n3268'>3268</a>
<a id='n3269' href='#n3269'>3269</a>
<a id='n3270' href='#n3270'>3270</a>
<a id='n3271' href='#n3271'>3271</a>
<a id='n3272' href='#n3272'>3272</a>
<a id='n3273' href='#n3273'>3273</a>
<a id='n3274' href='#n3274'>3274</a>
<a id='n3275' href='#n3275'>3275</a>
<a id='n3276' href='#n3276'>3276</a>
<a id='n3277' href='#n3277'>3277</a>
<a id='n3278' href='#n3278'>3278</a>
<a id='n3279' href='#n3279'>3279</a>
<a id='n3280' href='#n3280'>3280</a>
<a id='n3281' href='#n3281'>3281</a>
<a id='n3282' href='#n3282'>3282</a>
<a id='n3283' href='#n3283'>3283</a>
<a id='n3284' href='#n3284'>3284</a>
<a id='n3285' href='#n3285'>3285</a>
<a id='n3286' href='#n3286'>3286</a>
<a id='n3287' href='#n3287'>3287</a>
<a id='n3288' href='#n3288'>3288</a>
<a id='n3289' href='#n3289'>3289</a>
<a id='n3290' href='#n3290'>3290</a>
<a id='n3291' href='#n3291'>3291</a>
<a id='n3292' href='#n3292'>3292</a>
<a id='n3293' href='#n3293'>3293</a>
<a id='n3294' href='#n3294'>3294</a>
<a id='n3295' href='#n3295'>3295</a>
<a id='n3296' href='#n3296'>3296</a>
<a id='n3297' href='#n3297'>3297</a>
<a id='n3298' href='#n3298'>3298</a>
<a id='n3299' href='#n3299'>3299</a>
<a id='n3300' href='#n3300'>3300</a>
<a id='n3301' href='#n3301'>3301</a>
<a id='n3302' href='#n3302'>3302</a>
<a id='n3303' href='#n3303'>3303</a>
<a id='n3304' href='#n3304'>3304</a>
<a id='n3305' href='#n3305'>3305</a>
<a id='n3306' href='#n3306'>3306</a>
<a id='n3307' href='#n3307'>3307</a>
<a id='n3308' href='#n3308'>3308</a>
<a id='n3309' href='#n3309'>3309</a>
<a id='n3310' href='#n3310'>3310</a>
<a id='n3311' href='#n3311'>3311</a>
<a id='n3312' href='#n3312'>3312</a>
<a id='n3313' href='#n3313'>3313</a>
<a id='n3314' href='#n3314'>3314</a>
<a id='n3315' href='#n3315'>3315</a>
<a id='n3316' href='#n3316'>3316</a>
<a id='n3317' href='#n3317'>3317</a>
<a id='n3318' href='#n3318'>3318</a>
<a id='n3319' href='#n3319'>3319</a>
<a id='n3320' href='#n3320'>3320</a>
<a id='n3321' href='#n3321'>3321</a>
<a id='n3322' href='#n3322'>3322</a>
<a id='n3323' href='#n3323'>3323</a>
<a id='n3324' href='#n3324'>3324</a>
<a id='n3325' href='#n3325'>3325</a>
<a id='n3326' href='#n3326'>3326</a>
<a id='n3327' href='#n3327'>3327</a>
<a id='n3328' href='#n3328'>3328</a>
<a id='n3329' href='#n3329'>3329</a>
<a id='n3330' href='#n3330'>3330</a>
<a id='n3331' href='#n3331'>3331</a>
<a id='n3332' href='#n3332'>3332</a>
<a id='n3333' href='#n3333'>3333</a>
<a id='n3334' href='#n3334'>3334</a>
<a id='n3335' href='#n3335'>3335</a>
<a id='n3336' href='#n3336'>3336</a>
<a id='n3337' href='#n3337'>3337</a>
<a id='n3338' href='#n3338'>3338</a>
<a id='n3339' href='#n3339'>3339</a>
<a id='n3340' href='#n3340'>3340</a>
<a id='n3341' href='#n3341'>3341</a>
<a id='n3342' href='#n3342'>3342</a>
<a id='n3343' href='#n3343'>3343</a>
<a id='n3344' href='#n3344'>3344</a>
<a id='n3345' href='#n3345'>3345</a>
<a id='n3346' href='#n3346'>3346</a>
<a id='n3347' href='#n3347'>3347</a>
<a id='n3348' href='#n3348'>3348</a>
<a id='n3349' href='#n3349'>3349</a>
<a id='n3350' href='#n3350'>3350</a>
<a id='n3351' href='#n3351'>3351</a>
<a id='n3352' href='#n3352'>3352</a>
<a id='n3353' href='#n3353'>3353</a>
<a id='n3354' href='#n3354'>3354</a>
<a id='n3355' href='#n3355'>3355</a>
<a id='n3356' href='#n3356'>3356</a>
<a id='n3357' href='#n3357'>3357</a>
<a id='n3358' href='#n3358'>3358</a>
<a id='n3359' href='#n3359'>3359</a>
<a id='n3360' href='#n3360'>3360</a>
<a id='n3361' href='#n3361'>3361</a>
<a id='n3362' href='#n3362'>3362</a>
<a id='n3363' href='#n3363'>3363</a>
<a id='n3364' href='#n3364'>3364</a>
<a id='n3365' href='#n3365'>3365</a>
<a id='n3366' href='#n3366'>3366</a>
<a id='n3367' href='#n3367'>3367</a>
<a id='n3368' href='#n3368'>3368</a>
<a id='n3369' href='#n3369'>3369</a>
<a id='n3370' href='#n3370'>3370</a>
<a id='n3371' href='#n3371'>3371</a>
<a id='n3372' href='#n3372'>3372</a>
<a id='n3373' href='#n3373'>3373</a>
<a id='n3374' href='#n3374'>3374</a>
<a id='n3375' href='#n3375'>3375</a>
<a id='n3376' href='#n3376'>3376</a>
<a id='n3377' href='#n3377'>3377</a>
<a id='n3378' href='#n3378'>3378</a>
<a id='n3379' href='#n3379'>3379</a>
<a id='n3380' href='#n3380'>3380</a>
<a id='n3381' href='#n3381'>3381</a>
<a id='n3382' href='#n3382'>3382</a>
<a id='n3383' href='#n3383'>3383</a>
<a id='n3384' href='#n3384'>3384</a>
<a id='n3385' href='#n3385'>3385</a>
<a id='n3386' href='#n3386'>3386</a>
<a id='n3387' href='#n3387'>3387</a>
<a id='n3388' href='#n3388'>3388</a>
<a id='n3389' href='#n3389'>3389</a>
<a id='n3390' href='#n3390'>3390</a>
<a id='n3391' href='#n3391'>3391</a>
<a id='n3392' href='#n3392'>3392</a>
<a id='n3393' href='#n3393'>3393</a>
<a id='n3394' href='#n3394'>3394</a>
<a id='n3395' href='#n3395'>3395</a>
<a id='n3396' href='#n3396'>3396</a>
<a id='n3397' href='#n3397'>3397</a>
<a id='n3398' href='#n3398'>3398</a>
<a id='n3399' href='#n3399'>3399</a>
<a id='n3400' href='#n3400'>3400</a>
<a id='n3401' href='#n3401'>3401</a>
<a id='n3402' href='#n3402'>3402</a>
<a id='n3403' href='#n3403'>3403</a>
<a id='n3404' href='#n3404'>3404</a>
<a id='n3405' href='#n3405'>3405</a>
<a id='n3406' href='#n3406'>3406</a>
<a id='n3407' href='#n3407'>3407</a>
<a id='n3408' href='#n3408'>3408</a>
<a id='n3409' href='#n3409'>3409</a>
<a id='n3410' href='#n3410'>3410</a>
<a id='n3411' href='#n3411'>3411</a>
<a id='n3412' href='#n3412'>3412</a>
<a id='n3413' href='#n3413'>3413</a>
<a id='n3414' href='#n3414'>3414</a>
<a id='n3415' href='#n3415'>3415</a>
<a id='n3416' href='#n3416'>3416</a>
<a id='n3417' href='#n3417'>3417</a>
<a id='n3418' href='#n3418'>3418</a>
<a id='n3419' href='#n3419'>3419</a>
<a id='n3420' href='#n3420'>3420</a>
<a id='n3421' href='#n3421'>3421</a>
<a id='n3422' href='#n3422'>3422</a>
<a id='n3423' href='#n3423'>3423</a>
<a id='n3424' href='#n3424'>3424</a>
<a id='n3425' href='#n3425'>3425</a>
<a id='n3426' href='#n3426'>3426</a>
<a id='n3427' href='#n3427'>3427</a>
<a id='n3428' href='#n3428'>3428</a>
<a id='n3429' href='#n3429'>3429</a>
<a id='n3430' href='#n3430'>3430</a>
<a id='n3431' href='#n3431'>3431</a>
<a id='n3432' href='#n3432'>3432</a>
<a id='n3433' href='#n3433'>3433</a>
<a id='n3434' href='#n3434'>3434</a>
<a id='n3435' href='#n3435'>3435</a>
<a id='n3436' href='#n3436'>3436</a>
<a id='n3437' href='#n3437'>3437</a>
<a id='n3438' href='#n3438'>3438</a>
<a id='n3439' href='#n3439'>3439</a>
<a id='n3440' href='#n3440'>3440</a>
<a id='n3441' href='#n3441'>3441</a>
<a id='n3442' href='#n3442'>3442</a>
<a id='n3443' href='#n3443'>3443</a>
<a id='n3444' href='#n3444'>3444</a>
<a id='n3445' href='#n3445'>3445</a>
<a id='n3446' href='#n3446'>3446</a>
<a id='n3447' href='#n3447'>3447</a>
<a id='n3448' href='#n3448'>3448</a>
<a id='n3449' href='#n3449'>3449</a>
<a id='n3450' href='#n3450'>3450</a>
<a id='n3451' href='#n3451'>3451</a>
<a id='n3452' href='#n3452'>3452</a>
<a id='n3453' href='#n3453'>3453</a>
<a id='n3454' href='#n3454'>3454</a>
<a id='n3455' href='#n3455'>3455</a>
<a id='n3456' href='#n3456'>3456</a>
<a id='n3457' href='#n3457'>3457</a>
<a id='n3458' href='#n3458'>3458</a>
<a id='n3459' href='#n3459'>3459</a>
<a id='n3460' href='#n3460'>3460</a>
<a id='n3461' href='#n3461'>3461</a>
<a id='n3462' href='#n3462'>3462</a>
<a id='n3463' href='#n3463'>3463</a>
<a id='n3464' href='#n3464'>3464</a>
<a id='n3465' href='#n3465'>3465</a>
<a id='n3466' href='#n3466'>3466</a>
<a id='n3467' href='#n3467'>3467</a>
<a id='n3468' href='#n3468'>3468</a>
<a id='n3469' href='#n3469'>3469</a>
<a id='n3470' href='#n3470'>3470</a>
<a id='n3471' href='#n3471'>3471</a>
<a id='n3472' href='#n3472'>3472</a>
<a id='n3473' href='#n3473'>3473</a>
<a id='n3474' href='#n3474'>3474</a>
<a id='n3475' href='#n3475'>3475</a>
<a id='n3476' href='#n3476'>3476</a>
<a id='n3477' href='#n3477'>3477</a>
<a id='n3478' href='#n3478'>3478</a>
<a id='n3479' href='#n3479'>3479</a>
<a id='n3480' href='#n3480'>3480</a>
<a id='n3481' href='#n3481'>3481</a>
<a id='n3482' href='#n3482'>3482</a>
<a id='n3483' href='#n3483'>3483</a>
<a id='n3484' href='#n3484'>3484</a>
<a id='n3485' href='#n3485'>3485</a>
<a id='n3486' href='#n3486'>3486</a>
<a id='n3487' href='#n3487'>3487</a>
<a id='n3488' href='#n3488'>3488</a>
<a id='n3489' href='#n3489'>3489</a>
<a id='n3490' href='#n3490'>3490</a>
<a id='n3491' href='#n3491'>3491</a>
<a id='n3492' href='#n3492'>3492</a>
<a id='n3493' href='#n3493'>3493</a>
<a id='n3494' href='#n3494'>3494</a>
<a id='n3495' href='#n3495'>3495</a>
<a id='n3496' href='#n3496'>3496</a>
<a id='n3497' href='#n3497'>3497</a>
<a id='n3498' href='#n3498'>3498</a>
<a id='n3499' href='#n3499'>3499</a>
<a id='n3500' href='#n3500'>3500</a>
<a id='n3501' href='#n3501'>3501</a>
<a id='n3502' href='#n3502'>3502</a>
<a id='n3503' href='#n3503'>3503</a>
<a id='n3504' href='#n3504'>3504</a>
<a id='n3505' href='#n3505'>3505</a>
<a id='n3506' href='#n3506'>3506</a>
<a id='n3507' href='#n3507'>3507</a>
<a id='n3508' href='#n3508'>3508</a>
<a id='n3509' href='#n3509'>3509</a>
<a id='n3510' href='#n3510'>3510</a>
<a id='n3511' href='#n3511'>3511</a>
<a id='n3512' href='#n3512'>3512</a>
<a id='n3513' href='#n3513'>3513</a>
<a id='n3514' href='#n3514'>3514</a>
<a id='n3515' href='#n3515'>3515</a>
<a id='n3516' href='#n3516'>3516</a>
<a id='n3517' href='#n3517'>3517</a>
<a id='n3518' href='#n3518'>3518</a>
<a id='n3519' href='#n3519'>3519</a>
<a id='n3520' href='#n3520'>3520</a>
<a id='n3521' href='#n3521'>3521</a>
<a id='n3522' href='#n3522'>3522</a>
<a id='n3523' href='#n3523'>3523</a>
<a id='n3524' href='#n3524'>3524</a>
<a id='n3525' href='#n3525'>3525</a>
<a id='n3526' href='#n3526'>3526</a>
<a id='n3527' href='#n3527'>3527</a>
<a id='n3528' href='#n3528'>3528</a>
<a id='n3529' href='#n3529'>3529</a>
<a id='n3530' href='#n3530'>3530</a>
<a id='n3531' href='#n3531'>3531</a>
<a id='n3532' href='#n3532'>3532</a>
<a id='n3533' href='#n3533'>3533</a>
<a id='n3534' href='#n3534'>3534</a>
<a id='n3535' href='#n3535'>3535</a>
<a id='n3536' href='#n3536'>3536</a>
<a id='n3537' href='#n3537'>3537</a>
<a id='n3538' href='#n3538'>3538</a>
<a id='n3539' href='#n3539'>3539</a>
<a id='n3540' href='#n3540'>3540</a>
<a id='n3541' href='#n3541'>3541</a>
<a id='n3542' href='#n3542'>3542</a>
<a id='n3543' href='#n3543'>3543</a>
<a id='n3544' href='#n3544'>3544</a>
<a id='n3545' href='#n3545'>3545</a>
<a id='n3546' href='#n3546'>3546</a>
<a id='n3547' href='#n3547'>3547</a>
<a id='n3548' href='#n3548'>3548</a>
<a id='n3549' href='#n3549'>3549</a>
<a id='n3550' href='#n3550'>3550</a>
<a id='n3551' href='#n3551'>3551</a>
<a id='n3552' href='#n3552'>3552</a>
<a id='n3553' href='#n3553'>3553</a>
<a id='n3554' href='#n3554'>3554</a>
<a id='n3555' href='#n3555'>3555</a>
<a id='n3556' href='#n3556'>3556</a>
<a id='n3557' href='#n3557'>3557</a>
<a id='n3558' href='#n3558'>3558</a>
<a id='n3559' href='#n3559'>3559</a>
<a id='n3560' href='#n3560'>3560</a>
<a id='n3561' href='#n3561'>3561</a>
<a id='n3562' href='#n3562'>3562</a>
<a id='n3563' href='#n3563'>3563</a>
<a id='n3564' href='#n3564'>3564</a>
<a id='n3565' href='#n3565'>3565</a>
<a id='n3566' href='#n3566'>3566</a>
<a id='n3567' href='#n3567'>3567</a>
<a id='n3568' href='#n3568'>3568</a>
<a id='n3569' href='#n3569'>3569</a>
<a id='n3570' href='#n3570'>3570</a>
<a id='n3571' href='#n3571'>3571</a>
<a id='n3572' href='#n3572'>3572</a>
<a id='n3573' href='#n3573'>3573</a>
<a id='n3574' href='#n3574'>3574</a>
<a id='n3575' href='#n3575'>3575</a>
<a id='n3576' href='#n3576'>3576</a>
<a id='n3577' href='#n3577'>3577</a>
<a id='n3578' href='#n3578'>3578</a>
<a id='n3579' href='#n3579'>3579</a>
<a id='n3580' href='#n3580'>3580</a>
<a id='n3581' href='#n3581'>3581</a>
<a id='n3582' href='#n3582'>3582</a>
<a id='n3583' href='#n3583'>3583</a>
<a id='n3584' href='#n3584'>3584</a>
<a id='n3585' href='#n3585'>3585</a>
<a id='n3586' href='#n3586'>3586</a>
<a id='n3587' href='#n3587'>3587</a>
<a id='n3588' href='#n3588'>3588</a>
<a id='n3589' href='#n3589'>3589</a>
<a id='n3590' href='#n3590'>3590</a>
<a id='n3591' href='#n3591'>3591</a>
<a id='n3592' href='#n3592'>3592</a>
<a id='n3593' href='#n3593'>3593</a>
<a id='n3594' href='#n3594'>3594</a>
<a id='n3595' href='#n3595'>3595</a>
<a id='n3596' href='#n3596'>3596</a>
<a id='n3597' href='#n3597'>3597</a>
<a id='n3598' href='#n3598'>3598</a>
<a id='n3599' href='#n3599'>3599</a>
<a id='n3600' href='#n3600'>3600</a>
<a id='n3601' href='#n3601'>3601</a>
<a id='n3602' href='#n3602'>3602</a>
<a id='n3603' href='#n3603'>3603</a>
<a id='n3604' href='#n3604'>3604</a>
<a id='n3605' href='#n3605'>3605</a>
<a id='n3606' href='#n3606'>3606</a>
<a id='n3607' href='#n3607'>3607</a>
<a id='n3608' href='#n3608'>3608</a>
<a id='n3609' href='#n3609'>3609</a>
<a id='n3610' href='#n3610'>3610</a>
<a id='n3611' href='#n3611'>3611</a>
<a id='n3612' href='#n3612'>3612</a>
<a id='n3613' href='#n3613'>3613</a>
<a id='n3614' href='#n3614'>3614</a>
<a id='n3615' href='#n3615'>3615</a>
<a id='n3616' href='#n3616'>3616</a>
<a id='n3617' href='#n3617'>3617</a>
<a id='n3618' href='#n3618'>3618</a>
<a id='n3619' href='#n3619'>3619</a>
<a id='n3620' href='#n3620'>3620</a>
<a id='n3621' href='#n3621'>3621</a>
<a id='n3622' href='#n3622'>3622</a>
<a id='n3623' href='#n3623'>3623</a>
<a id='n3624' href='#n3624'>3624</a>
<a id='n3625' href='#n3625'>3625</a>
<a id='n3626' href='#n3626'>3626</a>
<a id='n3627' href='#n3627'>3627</a>
<a id='n3628' href='#n3628'>3628</a>
<a id='n3629' href='#n3629'>3629</a>
<a id='n3630' href='#n3630'>3630</a>
<a id='n3631' href='#n3631'>3631</a>
<a id='n3632' href='#n3632'>3632</a>
<a id='n3633' href='#n3633'>3633</a>
<a id='n3634' href='#n3634'>3634</a>
<a id='n3635' href='#n3635'>3635</a>
<a id='n3636' href='#n3636'>3636</a>
<a id='n3637' href='#n3637'>3637</a>
<a id='n3638' href='#n3638'>3638</a>
<a id='n3639' href='#n3639'>3639</a>
<a id='n3640' href='#n3640'>3640</a>
<a id='n3641' href='#n3641'>3641</a>
<a id='n3642' href='#n3642'>3642</a>
<a id='n3643' href='#n3643'>3643</a>
<a id='n3644' href='#n3644'>3644</a>
<a id='n3645' href='#n3645'>3645</a>
<a id='n3646' href='#n3646'>3646</a>
<a id='n3647' href='#n3647'>3647</a>
<a id='n3648' href='#n3648'>3648</a>
<a id='n3649' href='#n3649'>3649</a>
<a id='n3650' href='#n3650'>3650</a>
<a id='n3651' href='#n3651'>3651</a>
<a id='n3652' href='#n3652'>3652</a>
<a id='n3653' href='#n3653'>3653</a>
<a id='n3654' href='#n3654'>3654</a>
<a id='n3655' href='#n3655'>3655</a>
<a id='n3656' href='#n3656'>3656</a>
<a id='n3657' href='#n3657'>3657</a>
<a id='n3658' href='#n3658'>3658</a>
<a id='n3659' href='#n3659'>3659</a>
<a id='n3660' href='#n3660'>3660</a>
<a id='n3661' href='#n3661'>3661</a>
<a id='n3662' href='#n3662'>3662</a>
<a id='n3663' href='#n3663'>3663</a>
<a id='n3664' href='#n3664'>3664</a>
<a id='n3665' href='#n3665'>3665</a>
<a id='n3666' href='#n3666'>3666</a>
<a id='n3667' href='#n3667'>3667</a>
<a id='n3668' href='#n3668'>3668</a>
<a id='n3669' href='#n3669'>3669</a>
<a id='n3670' href='#n3670'>3670</a>
<a id='n3671' href='#n3671'>3671</a>
<a id='n3672' href='#n3672'>3672</a>
<a id='n3673' href='#n3673'>3673</a>
<a id='n3674' href='#n3674'>3674</a>
<a id='n3675' href='#n3675'>3675</a>
<a id='n3676' href='#n3676'>3676</a>
<a id='n3677' href='#n3677'>3677</a>
<a id='n3678' href='#n3678'>3678</a>
<a id='n3679' href='#n3679'>3679</a>
<a id='n3680' href='#n3680'>3680</a>
<a id='n3681' href='#n3681'>3681</a>
<a id='n3682' href='#n3682'>3682</a>
<a id='n3683' href='#n3683'>3683</a>
<a id='n3684' href='#n3684'>3684</a>
<a id='n3685' href='#n3685'>3685</a>
<a id='n3686' href='#n3686'>3686</a>
<a id='n3687' href='#n3687'>3687</a>
<a id='n3688' href='#n3688'>3688</a>
<a id='n3689' href='#n3689'>3689</a>
<a id='n3690' href='#n3690'>3690</a>
<a id='n3691' href='#n3691'>3691</a>
<a id='n3692' href='#n3692'>3692</a>
<a id='n3693' href='#n3693'>3693</a>
<a id='n3694' href='#n3694'>3694</a>
<a id='n3695' href='#n3695'>3695</a>
<a id='n3696' href='#n3696'>3696</a>
<a id='n3697' href='#n3697'>3697</a>
<a id='n3698' href='#n3698'>3698</a>
<a id='n3699' href='#n3699'>3699</a>
<a id='n3700' href='#n3700'>3700</a>
<a id='n3701' href='#n3701'>3701</a>
<a id='n3702' href='#n3702'>3702</a>
<a id='n3703' href='#n3703'>3703</a>
<a id='n3704' href='#n3704'>3704</a>
<a id='n3705' href='#n3705'>3705</a>
<a id='n3706' href='#n3706'>3706</a>
<a id='n3707' href='#n3707'>3707</a>
<a id='n3708' href='#n3708'>3708</a>
<a id='n3709' href='#n3709'>3709</a>
<a id='n3710' href='#n3710'>3710</a>
<a id='n3711' href='#n3711'>3711</a>
<a id='n3712' href='#n3712'>3712</a>
<a id='n3713' href='#n3713'>3713</a>
<a id='n3714' href='#n3714'>3714</a>
<a id='n3715' href='#n3715'>3715</a>
<a id='n3716' href='#n3716'>3716</a>
<a id='n3717' href='#n3717'>3717</a>
<a id='n3718' href='#n3718'>3718</a>
<a id='n3719' href='#n3719'>3719</a>
<a id='n3720' href='#n3720'>3720</a>
<a id='n3721' href='#n3721'>3721</a>
<a id='n3722' href='#n3722'>3722</a>
<a id='n3723' href='#n3723'>3723</a>
<a id='n3724' href='#n3724'>3724</a>
<a id='n3725' href='#n3725'>3725</a>
<a id='n3726' href='#n3726'>3726</a>
<a id='n3727' href='#n3727'>3727</a>
<a id='n3728' href='#n3728'>3728</a>
<a id='n3729' href='#n3729'>3729</a>
<a id='n3730' href='#n3730'>3730</a>
<a id='n3731' href='#n3731'>3731</a>
<a id='n3732' href='#n3732'>3732</a>
<a id='n3733' href='#n3733'>3733</a>
<a id='n3734' href='#n3734'>3734</a>
<a id='n3735' href='#n3735'>3735</a>
<a id='n3736' href='#n3736'>3736</a>
<a id='n3737' href='#n3737'>3737</a>
<a id='n3738' href='#n3738'>3738</a>
<a id='n3739' href='#n3739'>3739</a>
<a id='n3740' href='#n3740'>3740</a>
<a id='n3741' href='#n3741'>3741</a>
<a id='n3742' href='#n3742'>3742</a>
<a id='n3743' href='#n3743'>3743</a>
<a id='n3744' href='#n3744'>3744</a>
<a id='n3745' href='#n3745'>3745</a>
<a id='n3746' href='#n3746'>3746</a>
<a id='n3747' href='#n3747'>3747</a>
<a id='n3748' href='#n3748'>3748</a>
<a id='n3749' href='#n3749'>3749</a>
<a id='n3750' href='#n3750'>3750</a>
<a id='n3751' href='#n3751'>3751</a>
<a id='n3752' href='#n3752'>3752</a>
<a id='n3753' href='#n3753'>3753</a>
<a id='n3754' href='#n3754'>3754</a>
<a id='n3755' href='#n3755'>3755</a>
<a id='n3756' href='#n3756'>3756</a>
<a id='n3757' href='#n3757'>3757</a>
<a id='n3758' href='#n3758'>3758</a>
<a id='n3759' href='#n3759'>3759</a>
<a id='n3760' href='#n3760'>3760</a>
<a id='n3761' href='#n3761'>3761</a>
<a id='n3762' href='#n3762'>3762</a>
<a id='n3763' href='#n3763'>3763</a>
<a id='n3764' href='#n3764'>3764</a>
<a id='n3765' href='#n3765'>3765</a>
<a id='n3766' href='#n3766'>3766</a>
<a id='n3767' href='#n3767'>3767</a>
<a id='n3768' href='#n3768'>3768</a>
<a id='n3769' href='#n3769'>3769</a>
<a id='n3770' href='#n3770'>3770</a>
<a id='n3771' href='#n3771'>3771</a>
<a id='n3772' href='#n3772'>3772</a>
<a id='n3773' href='#n3773'>3773</a>
<a id='n3774' href='#n3774'>3774</a>
<a id='n3775' href='#n3775'>3775</a>
<a id='n3776' href='#n3776'>3776</a>
<a id='n3777' href='#n3777'>3777</a>
<a id='n3778' href='#n3778'>3778</a>
<a id='n3779' href='#n3779'>3779</a>
<a id='n3780' href='#n3780'>3780</a>
<a id='n3781' href='#n3781'>3781</a>
<a id='n3782' href='#n3782'>3782</a>
<a id='n3783' href='#n3783'>3783</a>
<a id='n3784' href='#n3784'>3784</a>
<a id='n3785' href='#n3785'>3785</a>
<a id='n3786' href='#n3786'>3786</a>
<a id='n3787' href='#n3787'>3787</a>
<a id='n3788' href='#n3788'>3788</a>
<a id='n3789' href='#n3789'>3789</a>
<a id='n3790' href='#n3790'>3790</a>
<a id='n3791' href='#n3791'>3791</a>
<a id='n3792' href='#n3792'>3792</a>
<a id='n3793' href='#n3793'>3793</a>
<a id='n3794' href='#n3794'>3794</a>
<a id='n3795' href='#n3795'>3795</a>
<a id='n3796' href='#n3796'>3796</a>
<a id='n3797' href='#n3797'>3797</a>
<a id='n3798' href='#n3798'>3798</a>
<a id='n3799' href='#n3799'>3799</a>
<a id='n3800' href='#n3800'>3800</a>
<a id='n3801' href='#n3801'>3801</a>
<a id='n3802' href='#n3802'>3802</a>
<a id='n3803' href='#n3803'>3803</a>
<a id='n3804' href='#n3804'>3804</a>
<a id='n3805' href='#n3805'>3805</a>
<a id='n3806' href='#n3806'>3806</a>
<a id='n3807' href='#n3807'>3807</a>
<a id='n3808' href='#n3808'>3808</a>
<a id='n3809' href='#n3809'>3809</a>
<a id='n3810' href='#n3810'>3810</a>
<a id='n3811' href='#n3811'>3811</a>
<a id='n3812' href='#n3812'>3812</a>
<a id='n3813' href='#n3813'>3813</a>
<a id='n3814' href='#n3814'>3814</a>
<a id='n3815' href='#n3815'>3815</a>
<a id='n3816' href='#n3816'>3816</a>
<a id='n3817' href='#n3817'>3817</a>
<a id='n3818' href='#n3818'>3818</a>
<a id='n3819' href='#n3819'>3819</a>
<a id='n3820' href='#n3820'>3820</a>
<a id='n3821' href='#n3821'>3821</a>
<a id='n3822' href='#n3822'>3822</a>
<a id='n3823' href='#n3823'>3823</a>
<a id='n3824' href='#n3824'>3824</a>
<a id='n3825' href='#n3825'>3825</a>
<a id='n3826' href='#n3826'>3826</a>
<a id='n3827' href='#n3827'>3827</a>
<a id='n3828' href='#n3828'>3828</a>
<a id='n3829' href='#n3829'>3829</a>
<a id='n3830' href='#n3830'>3830</a>
<a id='n3831' href='#n3831'>3831</a>
<a id='n3832' href='#n3832'>3832</a>
<a id='n3833' href='#n3833'>3833</a>
<a id='n3834' href='#n3834'>3834</a>
<a id='n3835' href='#n3835'>3835</a>
<a id='n3836' href='#n3836'>3836</a>
<a id='n3837' href='#n3837'>3837</a>
<a id='n3838' href='#n3838'>3838</a>
<a id='n3839' href='#n3839'>3839</a>
<a id='n3840' href='#n3840'>3840</a>
<a id='n3841' href='#n3841'>3841</a>
<a id='n3842' href='#n3842'>3842</a>
<a id='n3843' href='#n3843'>3843</a>
<a id='n3844' href='#n3844'>3844</a>
<a id='n3845' href='#n3845'>3845</a>
<a id='n3846' href='#n3846'>3846</a>
<a id='n3847' href='#n3847'>3847</a>
<a id='n3848' href='#n3848'>3848</a>
<a id='n3849' href='#n3849'>3849</a>
<a id='n3850' href='#n3850'>3850</a>
<a id='n3851' href='#n3851'>3851</a>
<a id='n3852' href='#n3852'>3852</a>
<a id='n3853' href='#n3853'>3853</a>
<a id='n3854' href='#n3854'>3854</a>
<a id='n3855' href='#n3855'>3855</a>
<a id='n3856' href='#n3856'>3856</a>
<a id='n3857' href='#n3857'>3857</a>
<a id='n3858' href='#n3858'>3858</a>
<a id='n3859' href='#n3859'>3859</a>
<a id='n3860' href='#n3860'>3860</a>
<a id='n3861' href='#n3861'>3861</a>
<a id='n3862' href='#n3862'>3862</a>
<a id='n3863' href='#n3863'>3863</a>
<a id='n3864' href='#n3864'>3864</a>
<a id='n3865' href='#n3865'>3865</a>
<a id='n3866' href='#n3866'>3866</a>
<a id='n3867' href='#n3867'>3867</a>
<a id='n3868' href='#n3868'>3868</a>
<a id='n3869' href='#n3869'>3869</a>
<a id='n3870' href='#n3870'>3870</a>
<a id='n3871' href='#n3871'>3871</a>
<a id='n3872' href='#n3872'>3872</a>
<a id='n3873' href='#n3873'>3873</a>
<a id='n3874' href='#n3874'>3874</a>
<a id='n3875' href='#n3875'>3875</a>
<a id='n3876' href='#n3876'>3876</a>
<a id='n3877' href='#n3877'>3877</a>
<a id='n3878' href='#n3878'>3878</a>
<a id='n3879' href='#n3879'>3879</a>
<a id='n3880' href='#n3880'>3880</a>
<a id='n3881' href='#n3881'>3881</a>
<a id='n3882' href='#n3882'>3882</a>
<a id='n3883' href='#n3883'>3883</a>
<a id='n3884' href='#n3884'>3884</a>
<a id='n3885' href='#n3885'>3885</a>
<a id='n3886' href='#n3886'>3886</a>
<a id='n3887' href='#n3887'>3887</a>
<a id='n3888' href='#n3888'>3888</a>
<a id='n3889' href='#n3889'>3889</a>
<a id='n3890' href='#n3890'>3890</a>
<a id='n3891' href='#n3891'>3891</a>
<a id='n3892' href='#n3892'>3892</a>
<a id='n3893' href='#n3893'>3893</a>
<a id='n3894' href='#n3894'>3894</a>
<a id='n3895' href='#n3895'>3895</a>
<a id='n3896' href='#n3896'>3896</a>
<a id='n3897' href='#n3897'>3897</a>
<a id='n3898' href='#n3898'>3898</a>
<a id='n3899' href='#n3899'>3899</a>
<a id='n3900' href='#n3900'>3900</a>
<a id='n3901' href='#n3901'>3901</a>
<a id='n3902' href='#n3902'>3902</a>
<a id='n3903' href='#n3903'>3903</a>
<a id='n3904' href='#n3904'>3904</a>
<a id='n3905' href='#n3905'>3905</a>
<a id='n3906' href='#n3906'>3906</a>
<a id='n3907' href='#n3907'>3907</a>
<a id='n3908' href='#n3908'>3908</a>
<a id='n3909' href='#n3909'>3909</a>
<a id='n3910' href='#n3910'>3910</a>
<a id='n3911' href='#n3911'>3911</a>
<a id='n3912' href='#n3912'>3912</a>
<a id='n3913' href='#n3913'>3913</a>
<a id='n3914' href='#n3914'>3914</a>
<a id='n3915' href='#n3915'>3915</a>
<a id='n3916' href='#n3916'>3916</a>
<a id='n3917' href='#n3917'>3917</a>
<a id='n3918' href='#n3918'>3918</a>
<a id='n3919' href='#n3919'>3919</a>
<a id='n3920' href='#n3920'>3920</a>
<a id='n3921' href='#n3921'>3921</a>
<a id='n3922' href='#n3922'>3922</a>
<a id='n3923' href='#n3923'>3923</a>
<a id='n3924' href='#n3924'>3924</a>
<a id='n3925' href='#n3925'>3925</a>
<a id='n3926' href='#n3926'>3926</a>
<a id='n3927' href='#n3927'>3927</a>
<a id='n3928' href='#n3928'>3928</a>
<a id='n3929' href='#n3929'>3929</a>
<a id='n3930' href='#n3930'>3930</a>
<a id='n3931' href='#n3931'>3931</a>
<a id='n3932' href='#n3932'>3932</a>
<a id='n3933' href='#n3933'>3933</a>
<a id='n3934' href='#n3934'>3934</a>
<a id='n3935' href='#n3935'>3935</a>
<a id='n3936' href='#n3936'>3936</a>
<a id='n3937' href='#n3937'>3937</a>
<a id='n3938' href='#n3938'>3938</a>
<a id='n3939' href='#n3939'>3939</a>
<a id='n3940' href='#n3940'>3940</a>
<a id='n3941' href='#n3941'>3941</a>
<a id='n3942' href='#n3942'>3942</a>
<a id='n3943' href='#n3943'>3943</a>
<a id='n3944' href='#n3944'>3944</a>
<a id='n3945' href='#n3945'>3945</a>
<a id='n3946' href='#n3946'>3946</a>
<a id='n3947' href='#n3947'>3947</a>
<a id='n3948' href='#n3948'>3948</a>
<a id='n3949' href='#n3949'>3949</a>
<a id='n3950' href='#n3950'>3950</a>
<a id='n3951' href='#n3951'>3951</a>
<a id='n3952' href='#n3952'>3952</a>
<a id='n3953' href='#n3953'>3953</a>
<a id='n3954' href='#n3954'>3954</a>
<a id='n3955' href='#n3955'>3955</a>
<a id='n3956' href='#n3956'>3956</a>
<a id='n3957' href='#n3957'>3957</a>
<a id='n3958' href='#n3958'>3958</a>
<a id='n3959' href='#n3959'>3959</a>
<a id='n3960' href='#n3960'>3960</a>
<a id='n3961' href='#n3961'>3961</a>
<a id='n3962' href='#n3962'>3962</a>
<a id='n3963' href='#n3963'>3963</a>
<a id='n3964' href='#n3964'>3964</a>
<a id='n3965' href='#n3965'>3965</a>
<a id='n3966' href='#n3966'>3966</a>
<a id='n3967' href='#n3967'>3967</a>
<a id='n3968' href='#n3968'>3968</a>
<a id='n3969' href='#n3969'>3969</a>
<a id='n3970' href='#n3970'>3970</a>
<a id='n3971' href='#n3971'>3971</a>
<a id='n3972' href='#n3972'>3972</a>
<a id='n3973' href='#n3973'>3973</a>
<a id='n3974' href='#n3974'>3974</a>
<a id='n3975' href='#n3975'>3975</a>
<a id='n3976' href='#n3976'>3976</a>
<a id='n3977' href='#n3977'>3977</a>
<a id='n3978' href='#n3978'>3978</a>
<a id='n3979' href='#n3979'>3979</a>
<a id='n3980' href='#n3980'>3980</a>
<a id='n3981' href='#n3981'>3981</a>
<a id='n3982' href='#n3982'>3982</a>
<a id='n3983' href='#n3983'>3983</a>
<a id='n3984' href='#n3984'>3984</a>
<a id='n3985' href='#n3985'>3985</a>
<a id='n3986' href='#n3986'>3986</a>
<a id='n3987' href='#n3987'>3987</a>
<a id='n3988' href='#n3988'>3988</a>
<a id='n3989' href='#n3989'>3989</a>
<a id='n3990' href='#n3990'>3990</a>
<a id='n3991' href='#n3991'>3991</a>
<a id='n3992' href='#n3992'>3992</a>
<a id='n3993' href='#n3993'>3993</a>
<a id='n3994' href='#n3994'>3994</a>
<a id='n3995' href='#n3995'>3995</a>
<a id='n3996' href='#n3996'>3996</a>
<a id='n3997' href='#n3997'>3997</a>
<a id='n3998' href='#n3998'>3998</a>
<a id='n3999' href='#n3999'>3999</a>
<a id='n4000' href='#n4000'>4000</a>
<a id='n4001' href='#n4001'>4001</a>
<a id='n4002' href='#n4002'>4002</a>
<a id='n4003' href='#n4003'>4003</a>
<a id='n4004' href='#n4004'>4004</a>
<a id='n4005' href='#n4005'>4005</a>
<a id='n4006' href='#n4006'>4006</a>
<a id='n4007' href='#n4007'>4007</a>
<a id='n4008' href='#n4008'>4008</a>
<a id='n4009' href='#n4009'>4009</a>
<a id='n4010' href='#n4010'>4010</a>
<a id='n4011' href='#n4011'>4011</a>
<a id='n4012' href='#n4012'>4012</a>
<a id='n4013' href='#n4013'>4013</a>
<a id='n4014' href='#n4014'>4014</a>
<a id='n4015' href='#n4015'>4015</a>
<a id='n4016' href='#n4016'>4016</a>
<a id='n4017' href='#n4017'>4017</a>
<a id='n4018' href='#n4018'>4018</a>
<a id='n4019' href='#n4019'>4019</a>
<a id='n4020' href='#n4020'>4020</a>
<a id='n4021' href='#n4021'>4021</a>
<a id='n4022' href='#n4022'>4022</a>
<a id='n4023' href='#n4023'>4023</a>
<a id='n4024' href='#n4024'>4024</a>
<a id='n4025' href='#n4025'>4025</a>
<a id='n4026' href='#n4026'>4026</a>
<a id='n4027' href='#n4027'>4027</a>
<a id='n4028' href='#n4028'>4028</a>
<a id='n4029' href='#n4029'>4029</a>
<a id='n4030' href='#n4030'>4030</a>
<a id='n4031' href='#n4031'>4031</a>
<a id='n4032' href='#n4032'>4032</a>
<a id='n4033' href='#n4033'>4033</a>
<a id='n4034' href='#n4034'>4034</a>
<a id='n4035' href='#n4035'>4035</a>
<a id='n4036' href='#n4036'>4036</a>
<a id='n4037' href='#n4037'>4037</a>
<a id='n4038' href='#n4038'>4038</a>
<a id='n4039' href='#n4039'>4039</a>
<a id='n4040' href='#n4040'>4040</a>
<a id='n4041' href='#n4041'>4041</a>
<a id='n4042' href='#n4042'>4042</a>
<a id='n4043' href='#n4043'>4043</a>
<a id='n4044' href='#n4044'>4044</a>
<a id='n4045' href='#n4045'>4045</a>
<a id='n4046' href='#n4046'>4046</a>
<a id='n4047' href='#n4047'>4047</a>
<a id='n4048' href='#n4048'>4048</a>
<a id='n4049' href='#n4049'>4049</a>
<a id='n4050' href='#n4050'>4050</a>
<a id='n4051' href='#n4051'>4051</a>
<a id='n4052' href='#n4052'>4052</a>
<a id='n4053' href='#n4053'>4053</a>
<a id='n4054' href='#n4054'>4054</a>
<a id='n4055' href='#n4055'>4055</a>
<a id='n4056' href='#n4056'>4056</a>
<a id='n4057' href='#n4057'>4057</a>
<a id='n4058' href='#n4058'>4058</a>
<a id='n4059' href='#n4059'>4059</a>
<a id='n4060' href='#n4060'>4060</a>
<a id='n4061' href='#n4061'>4061</a>
<a id='n4062' href='#n4062'>4062</a>
<a id='n4063' href='#n4063'>4063</a>
<a id='n4064' href='#n4064'>4064</a>
<a id='n4065' href='#n4065'>4065</a>
<a id='n4066' href='#n4066'>4066</a>
<a id='n4067' href='#n4067'>4067</a>
<a id='n4068' href='#n4068'>4068</a>
<a id='n4069' href='#n4069'>4069</a>
<a id='n4070' href='#n4070'>4070</a>
<a id='n4071' href='#n4071'>4071</a>
<a id='n4072' href='#n4072'>4072</a>
<a id='n4073' href='#n4073'>4073</a>
<a id='n4074' href='#n4074'>4074</a>
<a id='n4075' href='#n4075'>4075</a>
<a id='n4076' href='#n4076'>4076</a>
<a id='n4077' href='#n4077'>4077</a>
<a id='n4078' href='#n4078'>4078</a>
<a id='n4079' href='#n4079'>4079</a>
<a id='n4080' href='#n4080'>4080</a>
<a id='n4081' href='#n4081'>4081</a>
<a id='n4082' href='#n4082'>4082</a>
<a id='n4083' href='#n4083'>4083</a>
<a id='n4084' href='#n4084'>4084</a>
<a id='n4085' href='#n4085'>4085</a>
<a id='n4086' href='#n4086'>4086</a>
<a id='n4087' href='#n4087'>4087</a>
<a id='n4088' href='#n4088'>4088</a>
<a id='n4089' href='#n4089'>4089</a>
<a id='n4090' href='#n4090'>4090</a>
<a id='n4091' href='#n4091'>4091</a>
<a id='n4092' href='#n4092'>4092</a>
<a id='n4093' href='#n4093'>4093</a>
<a id='n4094' href='#n4094'>4094</a>
<a id='n4095' href='#n4095'>4095</a>
<a id='n4096' href='#n4096'>4096</a>
<a id='n4097' href='#n4097'>4097</a>
<a id='n4098' href='#n4098'>4098</a>
<a id='n4099' href='#n4099'>4099</a>
<a id='n4100' href='#n4100'>4100</a>
<a id='n4101' href='#n4101'>4101</a>
<a id='n4102' href='#n4102'>4102</a>
<a id='n4103' href='#n4103'>4103</a>
<a id='n4104' href='#n4104'>4104</a>
<a id='n4105' href='#n4105'>4105</a>
<a id='n4106' href='#n4106'>4106</a>
<a id='n4107' href='#n4107'>4107</a>
<a id='n4108' href='#n4108'>4108</a>
<a id='n4109' href='#n4109'>4109</a>
<a id='n4110' href='#n4110'>4110</a>
<a id='n4111' href='#n4111'>4111</a>
<a id='n4112' href='#n4112'>4112</a>
<a id='n4113' href='#n4113'>4113</a>
<a id='n4114' href='#n4114'>4114</a>
<a id='n4115' href='#n4115'>4115</a>
<a id='n4116' href='#n4116'>4116</a>
<a id='n4117' href='#n4117'>4117</a>
<a id='n4118' href='#n4118'>4118</a>
<a id='n4119' href='#n4119'>4119</a>
<a id='n4120' href='#n4120'>4120</a>
<a id='n4121' href='#n4121'>4121</a>
<a id='n4122' href='#n4122'>4122</a>
<a id='n4123' href='#n4123'>4123</a>
<a id='n4124' href='#n4124'>4124</a>
<a id='n4125' href='#n4125'>4125</a>
<a id='n4126' href='#n4126'>4126</a>
<a id='n4127' href='#n4127'>4127</a>
<a id='n4128' href='#n4128'>4128</a>
<a id='n4129' href='#n4129'>4129</a>
<a id='n4130' href='#n4130'>4130</a>
<a id='n4131' href='#n4131'>4131</a>
<a id='n4132' href='#n4132'>4132</a>
<a id='n4133' href='#n4133'>4133</a>
<a id='n4134' href='#n4134'>4134</a>
<a id='n4135' href='#n4135'>4135</a>
<a id='n4136' href='#n4136'>4136</a>
<a id='n4137' href='#n4137'>4137</a>
<a id='n4138' href='#n4138'>4138</a>
<a id='n4139' href='#n4139'>4139</a>
<a id='n4140' href='#n4140'>4140</a>
<a id='n4141' href='#n4141'>4141</a>
<a id='n4142' href='#n4142'>4142</a>
<a id='n4143' href='#n4143'>4143</a>
<a id='n4144' href='#n4144'>4144</a>
<a id='n4145' href='#n4145'>4145</a>
<a id='n4146' href='#n4146'>4146</a>
<a id='n4147' href='#n4147'>4147</a>
<a id='n4148' href='#n4148'>4148</a>
<a id='n4149' href='#n4149'>4149</a>
<a id='n4150' href='#n4150'>4150</a>
<a id='n4151' href='#n4151'>4151</a>
<a id='n4152' href='#n4152'>4152</a>
<a id='n4153' href='#n4153'>4153</a>
<a id='n4154' href='#n4154'>4154</a>
<a id='n4155' href='#n4155'>4155</a>
<a id='n4156' href='#n4156'>4156</a>
<a id='n4157' href='#n4157'>4157</a>
<a id='n4158' href='#n4158'>4158</a>
<a id='n4159' href='#n4159'>4159</a>
<a id='n4160' href='#n4160'>4160</a>
<a id='n4161' href='#n4161'>4161</a>
<a id='n4162' href='#n4162'>4162</a>
<a id='n4163' href='#n4163'>4163</a>
<a id='n4164' href='#n4164'>4164</a>
<a id='n4165' href='#n4165'>4165</a>
<a id='n4166' href='#n4166'>4166</a>
<a id='n4167' href='#n4167'>4167</a>
<a id='n4168' href='#n4168'>4168</a>
<a id='n4169' href='#n4169'>4169</a>
<a id='n4170' href='#n4170'>4170</a>
<a id='n4171' href='#n4171'>4171</a>
<a id='n4172' href='#n4172'>4172</a>
<a id='n4173' href='#n4173'>4173</a>
<a id='n4174' href='#n4174'>4174</a>
<a id='n4175' href='#n4175'>4175</a>
<a id='n4176' href='#n4176'>4176</a>
<a id='n4177' href='#n4177'>4177</a>
<a id='n4178' href='#n4178'>4178</a>
<a id='n4179' href='#n4179'>4179</a>
<a id='n4180' href='#n4180'>4180</a>
<a id='n4181' href='#n4181'>4181</a>
<a id='n4182' href='#n4182'>4182</a>
<a id='n4183' href='#n4183'>4183</a>
<a id='n4184' href='#n4184'>4184</a>
<a id='n4185' href='#n4185'>4185</a>
<a id='n4186' href='#n4186'>4186</a>
<a id='n4187' href='#n4187'>4187</a>
<a id='n4188' href='#n4188'>4188</a>
<a id='n4189' href='#n4189'>4189</a>
<a id='n4190' href='#n4190'>4190</a>
<a id='n4191' href='#n4191'>4191</a>
<a id='n4192' href='#n4192'>4192</a>
<a id='n4193' href='#n4193'>4193</a>
<a id='n4194' href='#n4194'>4194</a>
<a id='n4195' href='#n4195'>4195</a>
<a id='n4196' href='#n4196'>4196</a>
<a id='n4197' href='#n4197'>4197</a>
<a id='n4198' href='#n4198'>4198</a>
<a id='n4199' href='#n4199'>4199</a>
<a id='n4200' href='#n4200'>4200</a>
<a id='n4201' href='#n4201'>4201</a>
<a id='n4202' href='#n4202'>4202</a>
<a id='n4203' href='#n4203'>4203</a>
<a id='n4204' href='#n4204'>4204</a>
<a id='n4205' href='#n4205'>4205</a>
<a id='n4206' href='#n4206'>4206</a>
<a id='n4207' href='#n4207'>4207</a>
<a id='n4208' href='#n4208'>4208</a>
<a id='n4209' href='#n4209'>4209</a>
<a id='n4210' href='#n4210'>4210</a>
<a id='n4211' href='#n4211'>4211</a>
<a id='n4212' href='#n4212'>4212</a>
<a id='n4213' href='#n4213'>4213</a>
<a id='n4214' href='#n4214'>4214</a>
<a id='n4215' href='#n4215'>4215</a>
<a id='n4216' href='#n4216'>4216</a>
<a id='n4217' href='#n4217'>4217</a>
<a id='n4218' href='#n4218'>4218</a>
<a id='n4219' href='#n4219'>4219</a>
<a id='n4220' href='#n4220'>4220</a>
<a id='n4221' href='#n4221'>4221</a>
<a id='n4222' href='#n4222'>4222</a>
<a id='n4223' href='#n4223'>4223</a>
<a id='n4224' href='#n4224'>4224</a>
<a id='n4225' href='#n4225'>4225</a>
<a id='n4226' href='#n4226'>4226</a>
<a id='n4227' href='#n4227'>4227</a>
<a id='n4228' href='#n4228'>4228</a>
<a id='n4229' href='#n4229'>4229</a>
<a id='n4230' href='#n4230'>4230</a>
<a id='n4231' href='#n4231'>4231</a>
<a id='n4232' href='#n4232'>4232</a>
<a id='n4233' href='#n4233'>4233</a>
<a id='n4234' href='#n4234'>4234</a>
<a id='n4235' href='#n4235'>4235</a>
<a id='n4236' href='#n4236'>4236</a>
<a id='n4237' href='#n4237'>4237</a>
<a id='n4238' href='#n4238'>4238</a>
<a id='n4239' href='#n4239'>4239</a>
<a id='n4240' href='#n4240'>4240</a>
<a id='n4241' href='#n4241'>4241</a>
<a id='n4242' href='#n4242'>4242</a>
<a id='n4243' href='#n4243'>4243</a>
<a id='n4244' href='#n4244'>4244</a>
<a id='n4245' href='#n4245'>4245</a>
<a id='n4246' href='#n4246'>4246</a>
<a id='n4247' href='#n4247'>4247</a>
<a id='n4248' href='#n4248'>4248</a>
<a id='n4249' href='#n4249'>4249</a>
<a id='n4250' href='#n4250'>4250</a>
<a id='n4251' href='#n4251'>4251</a>
<a id='n4252' href='#n4252'>4252</a>
<a id='n4253' href='#n4253'>4253</a>
<a id='n4254' href='#n4254'>4254</a>
<a id='n4255' href='#n4255'>4255</a>
<a id='n4256' href='#n4256'>4256</a>
<a id='n4257' href='#n4257'>4257</a>
<a id='n4258' href='#n4258'>4258</a>
<a id='n4259' href='#n4259'>4259</a>
<a id='n4260' href='#n4260'>4260</a>
<a id='n4261' href='#n4261'>4261</a>
<a id='n4262' href='#n4262'>4262</a>
<a id='n4263' href='#n4263'>4263</a>
<a id='n4264' href='#n4264'>4264</a>
<a id='n4265' href='#n4265'>4265</a>
<a id='n4266' href='#n4266'>4266</a>
<a id='n4267' href='#n4267'>4267</a>
<a id='n4268' href='#n4268'>4268</a>
<a id='n4269' href='#n4269'>4269</a>
<a id='n4270' href='#n4270'>4270</a>
<a id='n4271' href='#n4271'>4271</a>
<a id='n4272' href='#n4272'>4272</a>
<a id='n4273' href='#n4273'>4273</a>
<a id='n4274' href='#n4274'>4274</a>
<a id='n4275' href='#n4275'>4275</a>
<a id='n4276' href='#n4276'>4276</a>
<a id='n4277' href='#n4277'>4277</a>
<a id='n4278' href='#n4278'>4278</a>
<a id='n4279' href='#n4279'>4279</a>
<a id='n4280' href='#n4280'>4280</a>
<a id='n4281' href='#n4281'>4281</a>
<a id='n4282' href='#n4282'>4282</a>
<a id='n4283' href='#n4283'>4283</a>
<a id='n4284' href='#n4284'>4284</a>
<a id='n4285' href='#n4285'>4285</a>
<a id='n4286' href='#n4286'>4286</a>
<a id='n4287' href='#n4287'>4287</a>
<a id='n4288' href='#n4288'>4288</a>
<a id='n4289' href='#n4289'>4289</a>
<a id='n4290' href='#n4290'>4290</a>
<a id='n4291' href='#n4291'>4291</a>
<a id='n4292' href='#n4292'>4292</a>
<a id='n4293' href='#n4293'>4293</a>
<a id='n4294' href='#n4294'>4294</a>
<a id='n4295' href='#n4295'>4295</a>
<a id='n4296' href='#n4296'>4296</a>
<a id='n4297' href='#n4297'>4297</a>
<a id='n4298' href='#n4298'>4298</a>
<a id='n4299' href='#n4299'>4299</a>
<a id='n4300' href='#n4300'>4300</a>
<a id='n4301' href='#n4301'>4301</a>
<a id='n4302' href='#n4302'>4302</a>
<a id='n4303' href='#n4303'>4303</a>
<a id='n4304' href='#n4304'>4304</a>
<a id='n4305' href='#n4305'>4305</a>
<a id='n4306' href='#n4306'>4306</a>
<a id='n4307' href='#n4307'>4307</a>
<a id='n4308' href='#n4308'>4308</a>
<a id='n4309' href='#n4309'>4309</a>
<a id='n4310' href='#n4310'>4310</a>
<a id='n4311' href='#n4311'>4311</a>
<a id='n4312' href='#n4312'>4312</a>
<a id='n4313' href='#n4313'>4313</a>
<a id='n4314' href='#n4314'>4314</a>
<a id='n4315' href='#n4315'>4315</a>
<a id='n4316' href='#n4316'>4316</a>
<a id='n4317' href='#n4317'>4317</a>
<a id='n4318' href='#n4318'>4318</a>
<a id='n4319' href='#n4319'>4319</a>
<a id='n4320' href='#n4320'>4320</a>
<a id='n4321' href='#n4321'>4321</a>
<a id='n4322' href='#n4322'>4322</a>
<a id='n4323' href='#n4323'>4323</a>
<a id='n4324' href='#n4324'>4324</a>
<a id='n4325' href='#n4325'>4325</a>
<a id='n4326' href='#n4326'>4326</a>
<a id='n4327' href='#n4327'>4327</a>
<a id='n4328' href='#n4328'>4328</a>
<a id='n4329' href='#n4329'>4329</a>
<a id='n4330' href='#n4330'>4330</a>
<a id='n4331' href='#n4331'>4331</a>
<a id='n4332' href='#n4332'>4332</a>
<a id='n4333' href='#n4333'>4333</a>
<a id='n4334' href='#n4334'>4334</a>
<a id='n4335' href='#n4335'>4335</a>
<a id='n4336' href='#n4336'>4336</a>
<a id='n4337' href='#n4337'>4337</a>
<a id='n4338' href='#n4338'>4338</a>
<a id='n4339' href='#n4339'>4339</a>
<a id='n4340' href='#n4340'>4340</a>
<a id='n4341' href='#n4341'>4341</a>
<a id='n4342' href='#n4342'>4342</a>
<a id='n4343' href='#n4343'>4343</a>
<a id='n4344' href='#n4344'>4344</a>
<a id='n4345' href='#n4345'>4345</a>
<a id='n4346' href='#n4346'>4346</a>
<a id='n4347' href='#n4347'>4347</a>
<a id='n4348' href='#n4348'>4348</a>
<a id='n4349' href='#n4349'>4349</a>
<a id='n4350' href='#n4350'>4350</a>
<a id='n4351' href='#n4351'>4351</a>
<a id='n4352' href='#n4352'>4352</a>
<a id='n4353' href='#n4353'>4353</a>
<a id='n4354' href='#n4354'>4354</a>
<a id='n4355' href='#n4355'>4355</a>
<a id='n4356' href='#n4356'>4356</a>
<a id='n4357' href='#n4357'>4357</a>
<a id='n4358' href='#n4358'>4358</a>
<a id='n4359' href='#n4359'>4359</a>
<a id='n4360' href='#n4360'>4360</a>
<a id='n4361' href='#n4361'>4361</a>
<a id='n4362' href='#n4362'>4362</a>
<a id='n4363' href='#n4363'>4363</a>
<a id='n4364' href='#n4364'>4364</a>
<a id='n4365' href='#n4365'>4365</a>
<a id='n4366' href='#n4366'>4366</a>
<a id='n4367' href='#n4367'>4367</a>
<a id='n4368' href='#n4368'>4368</a>
<a id='n4369' href='#n4369'>4369</a>
<a id='n4370' href='#n4370'>4370</a>
<a id='n4371' href='#n4371'>4371</a>
<a id='n4372' href='#n4372'>4372</a>
<a id='n4373' href='#n4373'>4373</a>
<a id='n4374' href='#n4374'>4374</a>
<a id='n4375' href='#n4375'>4375</a>
<a id='n4376' href='#n4376'>4376</a>
<a id='n4377' href='#n4377'>4377</a>
<a id='n4378' href='#n4378'>4378</a>
<a id='n4379' href='#n4379'>4379</a>
<a id='n4380' href='#n4380'>4380</a>
<a id='n4381' href='#n4381'>4381</a>
<a id='n4382' href='#n4382'>4382</a>
<a id='n4383' href='#n4383'>4383</a>
<a id='n4384' href='#n4384'>4384</a>
<a id='n4385' href='#n4385'>4385</a>
<a id='n4386' href='#n4386'>4386</a>
<a id='n4387' href='#n4387'>4387</a>
<a id='n4388' href='#n4388'>4388</a>
<a id='n4389' href='#n4389'>4389</a>
<a id='n4390' href='#n4390'>4390</a>
<a id='n4391' href='#n4391'>4391</a>
<a id='n4392' href='#n4392'>4392</a>
<a id='n4393' href='#n4393'>4393</a>
<a id='n4394' href='#n4394'>4394</a>
<a id='n4395' href='#n4395'>4395</a>
<a id='n4396' href='#n4396'>4396</a>
<a id='n4397' href='#n4397'>4397</a>
<a id='n4398' href='#n4398'>4398</a>
<a id='n4399' href='#n4399'>4399</a>
<a id='n4400' href='#n4400'>4400</a>
<a id='n4401' href='#n4401'>4401</a>
<a id='n4402' href='#n4402'>4402</a>
<a id='n4403' href='#n4403'>4403</a>
<a id='n4404' href='#n4404'>4404</a>
<a id='n4405' href='#n4405'>4405</a>
<a id='n4406' href='#n4406'>4406</a>
<a id='n4407' href='#n4407'>4407</a>
<a id='n4408' href='#n4408'>4408</a>
<a id='n4409' href='#n4409'>4409</a>
<a id='n4410' href='#n4410'>4410</a>
<a id='n4411' href='#n4411'>4411</a>
<a id='n4412' href='#n4412'>4412</a>
<a id='n4413' href='#n4413'>4413</a>
<a id='n4414' href='#n4414'>4414</a>
<a id='n4415' href='#n4415'>4415</a>
<a id='n4416' href='#n4416'>4416</a>
<a id='n4417' href='#n4417'>4417</a>
<a id='n4418' href='#n4418'>4418</a>
<a id='n4419' href='#n4419'>4419</a>
<a id='n4420' href='#n4420'>4420</a>
<a id='n4421' href='#n4421'>4421</a>
<a id='n4422' href='#n4422'>4422</a>
<a id='n4423' href='#n4423'>4423</a>
<a id='n4424' href='#n4424'>4424</a>
<a id='n4425' href='#n4425'>4425</a>
<a id='n4426' href='#n4426'>4426</a>
<a id='n4427' href='#n4427'>4427</a>
<a id='n4428' href='#n4428'>4428</a>
<a id='n4429' href='#n4429'>4429</a>
<a id='n4430' href='#n4430'>4430</a>
<a id='n4431' href='#n4431'>4431</a>
<a id='n4432' href='#n4432'>4432</a>
<a id='n4433' href='#n4433'>4433</a>
<a id='n4434' href='#n4434'>4434</a>
<a id='n4435' href='#n4435'>4435</a>
<a id='n4436' href='#n4436'>4436</a>
<a id='n4437' href='#n4437'>4437</a>
<a id='n4438' href='#n4438'>4438</a>
<a id='n4439' href='#n4439'>4439</a>
<a id='n4440' href='#n4440'>4440</a>
<a id='n4441' href='#n4441'>4441</a>
<a id='n4442' href='#n4442'>4442</a>
<a id='n4443' href='#n4443'>4443</a>
<a id='n4444' href='#n4444'>4444</a>
<a id='n4445' href='#n4445'>4445</a>
<a id='n4446' href='#n4446'>4446</a>
<a id='n4447' href='#n4447'>4447</a>
<a id='n4448' href='#n4448'>4448</a>
<a id='n4449' href='#n4449'>4449</a>
<a id='n4450' href='#n4450'>4450</a>
<a id='n4451' href='#n4451'>4451</a>
<a id='n4452' href='#n4452'>4452</a>
<a id='n4453' href='#n4453'>4453</a>
<a id='n4454' href='#n4454'>4454</a>
<a id='n4455' href='#n4455'>4455</a>
<a id='n4456' href='#n4456'>4456</a>
<a id='n4457' href='#n4457'>4457</a>
<a id='n4458' href='#n4458'>4458</a>
<a id='n4459' href='#n4459'>4459</a>
<a id='n4460' href='#n4460'>4460</a>
<a id='n4461' href='#n4461'>4461</a>
<a id='n4462' href='#n4462'>4462</a>
<a id='n4463' href='#n4463'>4463</a>
<a id='n4464' href='#n4464'>4464</a>
<a id='n4465' href='#n4465'>4465</a>
<a id='n4466' href='#n4466'>4466</a>
<a id='n4467' href='#n4467'>4467</a>
<a id='n4468' href='#n4468'>4468</a>
<a id='n4469' href='#n4469'>4469</a>
<a id='n4470' href='#n4470'>4470</a>
<a id='n4471' href='#n4471'>4471</a>
<a id='n4472' href='#n4472'>4472</a>
<a id='n4473' href='#n4473'>4473</a>
<a id='n4474' href='#n4474'>4474</a>
<a id='n4475' href='#n4475'>4475</a>
<a id='n4476' href='#n4476'>4476</a>
<a id='n4477' href='#n4477'>4477</a>
<a id='n4478' href='#n4478'>4478</a>
<a id='n4479' href='#n4479'>4479</a>
<a id='n4480' href='#n4480'>4480</a>
<a id='n4481' href='#n4481'>4481</a>
<a id='n4482' href='#n4482'>4482</a>
<a id='n4483' href='#n4483'>4483</a>
<a id='n4484' href='#n4484'>4484</a>
<a id='n4485' href='#n4485'>4485</a>
<a id='n4486' href='#n4486'>4486</a>
<a id='n4487' href='#n4487'>4487</a>
<a id='n4488' href='#n4488'>4488</a>
<a id='n4489' href='#n4489'>4489</a>
<a id='n4490' href='#n4490'>4490</a>
<a id='n4491' href='#n4491'>4491</a>
<a id='n4492' href='#n4492'>4492</a>
<a id='n4493' href='#n4493'>4493</a>
<a id='n4494' href='#n4494'>4494</a>
<a id='n4495' href='#n4495'>4495</a>
<a id='n4496' href='#n4496'>4496</a>
<a id='n4497' href='#n4497'>4497</a>
<a id='n4498' href='#n4498'>4498</a>
<a id='n4499' href='#n4499'>4499</a>
<a id='n4500' href='#n4500'>4500</a>
<a id='n4501' href='#n4501'>4501</a>
<a id='n4502' href='#n4502'>4502</a>
<a id='n4503' href='#n4503'>4503</a>
<a id='n4504' href='#n4504'>4504</a>
<a id='n4505' href='#n4505'>4505</a>
<a id='n4506' href='#n4506'>4506</a>
<a id='n4507' href='#n4507'>4507</a>
<a id='n4508' href='#n4508'>4508</a>
<a id='n4509' href='#n4509'>4509</a>
<a id='n4510' href='#n4510'>4510</a>
<a id='n4511' href='#n4511'>4511</a>
<a id='n4512' href='#n4512'>4512</a>
<a id='n4513' href='#n4513'>4513</a>
<a id='n4514' href='#n4514'>4514</a>
<a id='n4515' href='#n4515'>4515</a>
<a id='n4516' href='#n4516'>4516</a>
<a id='n4517' href='#n4517'>4517</a>
<a id='n4518' href='#n4518'>4518</a>
<a id='n4519' href='#n4519'>4519</a>
<a id='n4520' href='#n4520'>4520</a>
<a id='n4521' href='#n4521'>4521</a>
<a id='n4522' href='#n4522'>4522</a>
<a id='n4523' href='#n4523'>4523</a>
<a id='n4524' href='#n4524'>4524</a>
<a id='n4525' href='#n4525'>4525</a>
<a id='n4526' href='#n4526'>4526</a>
<a id='n4527' href='#n4527'>4527</a>
<a id='n4528' href='#n4528'>4528</a>
<a id='n4529' href='#n4529'>4529</a>
<a id='n4530' href='#n4530'>4530</a>
<a id='n4531' href='#n4531'>4531</a>
<a id='n4532' href='#n4532'>4532</a>
<a id='n4533' href='#n4533'>4533</a>
<a id='n4534' href='#n4534'>4534</a>
<a id='n4535' href='#n4535'>4535</a>
<a id='n4536' href='#n4536'>4536</a>
<a id='n4537' href='#n4537'>4537</a>
<a id='n4538' href='#n4538'>4538</a>
<a id='n4539' href='#n4539'>4539</a>
<a id='n4540' href='#n4540'>4540</a>
<a id='n4541' href='#n4541'>4541</a>
<a id='n4542' href='#n4542'>4542</a>
<a id='n4543' href='#n4543'>4543</a>
<a id='n4544' href='#n4544'>4544</a>
<a id='n4545' href='#n4545'>4545</a>
<a id='n4546' href='#n4546'>4546</a>
<a id='n4547' href='#n4547'>4547</a>
<a id='n4548' href='#n4548'>4548</a>
<a id='n4549' href='#n4549'>4549</a>
<a id='n4550' href='#n4550'>4550</a>
<a id='n4551' href='#n4551'>4551</a>
<a id='n4552' href='#n4552'>4552</a>
<a id='n4553' href='#n4553'>4553</a>
<a id='n4554' href='#n4554'>4554</a>
<a id='n4555' href='#n4555'>4555</a>
<a id='n4556' href='#n4556'>4556</a>
<a id='n4557' href='#n4557'>4557</a>
<a id='n4558' href='#n4558'>4558</a>
<a id='n4559' href='#n4559'>4559</a>
<a id='n4560' href='#n4560'>4560</a>
<a id='n4561' href='#n4561'>4561</a>
<a id='n4562' href='#n4562'>4562</a>
<a id='n4563' href='#n4563'>4563</a>
<a id='n4564' href='#n4564'>4564</a>
<a id='n4565' href='#n4565'>4565</a>
<a id='n4566' href='#n4566'>4566</a>
<a id='n4567' href='#n4567'>4567</a>
<a id='n4568' href='#n4568'>4568</a>
<a id='n4569' href='#n4569'>4569</a>
<a id='n4570' href='#n4570'>4570</a>
<a id='n4571' href='#n4571'>4571</a>
<a id='n4572' href='#n4572'>4572</a>
<a id='n4573' href='#n4573'>4573</a>
<a id='n4574' href='#n4574'>4574</a>
<a id='n4575' href='#n4575'>4575</a>
<a id='n4576' href='#n4576'>4576</a>
<a id='n4577' href='#n4577'>4577</a>
<a id='n4578' href='#n4578'>4578</a>
<a id='n4579' href='#n4579'>4579</a>
<a id='n4580' href='#n4580'>4580</a>
<a id='n4581' href='#n4581'>4581</a>
<a id='n4582' href='#n4582'>4582</a>
<a id='n4583' href='#n4583'>4583</a>
<a id='n4584' href='#n4584'>4584</a>
<a id='n4585' href='#n4585'>4585</a>
<a id='n4586' href='#n4586'>4586</a>
<a id='n4587' href='#n4587'>4587</a>
<a id='n4588' href='#n4588'>4588</a>
<a id='n4589' href='#n4589'>4589</a>
<a id='n4590' href='#n4590'>4590</a>
<a id='n4591' href='#n4591'>4591</a>
<a id='n4592' href='#n4592'>4592</a>
<a id='n4593' href='#n4593'>4593</a>
<a id='n4594' href='#n4594'>4594</a>
<a id='n4595' href='#n4595'>4595</a>
<a id='n4596' href='#n4596'>4596</a>
<a id='n4597' href='#n4597'>4597</a>
<a id='n4598' href='#n4598'>4598</a>
<a id='n4599' href='#n4599'>4599</a>
<a id='n4600' href='#n4600'>4600</a>
<a id='n4601' href='#n4601'>4601</a>
<a id='n4602' href='#n4602'>4602</a>
<a id='n4603' href='#n4603'>4603</a>
<a id='n4604' href='#n4604'>4604</a>
<a id='n4605' href='#n4605'>4605</a>
<a id='n4606' href='#n4606'>4606</a>
<a id='n4607' href='#n4607'>4607</a>
<a id='n4608' href='#n4608'>4608</a>
<a id='n4609' href='#n4609'>4609</a>
<a id='n4610' href='#n4610'>4610</a>
<a id='n4611' href='#n4611'>4611</a>
<a id='n4612' href='#n4612'>4612</a>
<a id='n4613' href='#n4613'>4613</a>
<a id='n4614' href='#n4614'>4614</a>
<a id='n4615' href='#n4615'>4615</a>
<a id='n4616' href='#n4616'>4616</a>
<a id='n4617' href='#n4617'>4617</a>
<a id='n4618' href='#n4618'>4618</a>
<a id='n4619' href='#n4619'>4619</a>
<a id='n4620' href='#n4620'>4620</a>
<a id='n4621' href='#n4621'>4621</a>
<a id='n4622' href='#n4622'>4622</a>
<a id='n4623' href='#n4623'>4623</a>
<a id='n4624' href='#n4624'>4624</a>
<a id='n4625' href='#n4625'>4625</a>
<a id='n4626' href='#n4626'>4626</a>
<a id='n4627' href='#n4627'>4627</a>
<a id='n4628' href='#n4628'>4628</a>
<a id='n4629' href='#n4629'>4629</a>
<a id='n4630' href='#n4630'>4630</a>
<a id='n4631' href='#n4631'>4631</a>
<a id='n4632' href='#n4632'>4632</a>
<a id='n4633' href='#n4633'>4633</a>
<a id='n4634' href='#n4634'>4634</a>
<a id='n4635' href='#n4635'>4635</a>
<a id='n4636' href='#n4636'>4636</a>
<a id='n4637' href='#n4637'>4637</a>
<a id='n4638' href='#n4638'>4638</a>
<a id='n4639' href='#n4639'>4639</a>
<a id='n4640' href='#n4640'>4640</a>
<a id='n4641' href='#n4641'>4641</a>
<a id='n4642' href='#n4642'>4642</a>
<a id='n4643' href='#n4643'>4643</a>
<a id='n4644' href='#n4644'>4644</a>
<a id='n4645' href='#n4645'>4645</a>
<a id='n4646' href='#n4646'>4646</a>
<a id='n4647' href='#n4647'>4647</a>
<a id='n4648' href='#n4648'>4648</a>
<a id='n4649' href='#n4649'>4649</a>
<a id='n4650' href='#n4650'>4650</a>
<a id='n4651' href='#n4651'>4651</a>
<a id='n4652' href='#n4652'>4652</a>
<a id='n4653' href='#n4653'>4653</a>
<a id='n4654' href='#n4654'>4654</a>
<a id='n4655' href='#n4655'>4655</a>
<a id='n4656' href='#n4656'>4656</a>
<a id='n4657' href='#n4657'>4657</a>
<a id='n4658' href='#n4658'>4658</a>
<a id='n4659' href='#n4659'>4659</a>
<a id='n4660' href='#n4660'>4660</a>
<a id='n4661' href='#n4661'>4661</a>
<a id='n4662' href='#n4662'>4662</a>
<a id='n4663' href='#n4663'>4663</a>
<a id='n4664' href='#n4664'>4664</a>
<a id='n4665' href='#n4665'>4665</a>
<a id='n4666' href='#n4666'>4666</a>
<a id='n4667' href='#n4667'>4667</a>
<a id='n4668' href='#n4668'>4668</a>
<a id='n4669' href='#n4669'>4669</a>
<a id='n4670' href='#n4670'>4670</a>
<a id='n4671' href='#n4671'>4671</a>
<a id='n4672' href='#n4672'>4672</a>
<a id='n4673' href='#n4673'>4673</a>
<a id='n4674' href='#n4674'>4674</a>
<a id='n4675' href='#n4675'>4675</a>
<a id='n4676' href='#n4676'>4676</a>
<a id='n4677' href='#n4677'>4677</a>
<a id='n4678' href='#n4678'>4678</a>
<a id='n4679' href='#n4679'>4679</a>
<a id='n4680' href='#n4680'>4680</a>
<a id='n4681' href='#n4681'>4681</a>
<a id='n4682' href='#n4682'>4682</a>
<a id='n4683' href='#n4683'>4683</a>
<a id='n4684' href='#n4684'>4684</a>
<a id='n4685' href='#n4685'>4685</a>
<a id='n4686' href='#n4686'>4686</a>
<a id='n4687' href='#n4687'>4687</a>
<a id='n4688' href='#n4688'>4688</a>
<a id='n4689' href='#n4689'>4689</a>
<a id='n4690' href='#n4690'>4690</a>
<a id='n4691' href='#n4691'>4691</a>
<a id='n4692' href='#n4692'>4692</a>
<a id='n4693' href='#n4693'>4693</a>
<a id='n4694' href='#n4694'>4694</a>
<a id='n4695' href='#n4695'>4695</a>
<a id='n4696' href='#n4696'>4696</a>
<a id='n4697' href='#n4697'>4697</a>
<a id='n4698' href='#n4698'>4698</a>
<a id='n4699' href='#n4699'>4699</a>
<a id='n4700' href='#n4700'>4700</a>
<a id='n4701' href='#n4701'>4701</a>
<a id='n4702' href='#n4702'>4702</a>
<a id='n4703' href='#n4703'>4703</a>
<a id='n4704' href='#n4704'>4704</a>
<a id='n4705' href='#n4705'>4705</a>
<a id='n4706' href='#n4706'>4706</a>
<a id='n4707' href='#n4707'>4707</a>
<a id='n4708' href='#n4708'>4708</a>
<a id='n4709' href='#n4709'>4709</a>
<a id='n4710' href='#n4710'>4710</a>
<a id='n4711' href='#n4711'>4711</a>
<a id='n4712' href='#n4712'>4712</a>
<a id='n4713' href='#n4713'>4713</a>
<a id='n4714' href='#n4714'>4714</a>
<a id='n4715' href='#n4715'>4715</a>
<a id='n4716' href='#n4716'>4716</a>
<a id='n4717' href='#n4717'>4717</a>
<a id='n4718' href='#n4718'>4718</a>
<a id='n4719' href='#n4719'>4719</a>
<a id='n4720' href='#n4720'>4720</a>
<a id='n4721' href='#n4721'>4721</a>
<a id='n4722' href='#n4722'>4722</a>
<a id='n4723' href='#n4723'>4723</a>
<a id='n4724' href='#n4724'>4724</a>
<a id='n4725' href='#n4725'>4725</a>
<a id='n4726' href='#n4726'>4726</a>
<a id='n4727' href='#n4727'>4727</a>
<a id='n4728' href='#n4728'>4728</a>
<a id='n4729' href='#n4729'>4729</a>
<a id='n4730' href='#n4730'>4730</a>
<a id='n4731' href='#n4731'>4731</a>
<a id='n4732' href='#n4732'>4732</a>
<a id='n4733' href='#n4733'>4733</a>
<a id='n4734' href='#n4734'>4734</a>
<a id='n4735' href='#n4735'>4735</a>
<a id='n4736' href='#n4736'>4736</a>
<a id='n4737' href='#n4737'>4737</a>
<a id='n4738' href='#n4738'>4738</a>
<a id='n4739' href='#n4739'>4739</a>
<a id='n4740' href='#n4740'>4740</a>
<a id='n4741' href='#n4741'>4741</a>
<a id='n4742' href='#n4742'>4742</a>
<a id='n4743' href='#n4743'>4743</a>
<a id='n4744' href='#n4744'>4744</a>
<a id='n4745' href='#n4745'>4745</a>
<a id='n4746' href='#n4746'>4746</a>
<a id='n4747' href='#n4747'>4747</a>
<a id='n4748' href='#n4748'>4748</a>
<a id='n4749' href='#n4749'>4749</a>
<a id='n4750' href='#n4750'>4750</a>
<a id='n4751' href='#n4751'>4751</a>
<a id='n4752' href='#n4752'>4752</a>
<a id='n4753' href='#n4753'>4753</a>
<a id='n4754' href='#n4754'>4754</a>
<a id='n4755' href='#n4755'>4755</a>
<a id='n4756' href='#n4756'>4756</a>
<a id='n4757' href='#n4757'>4757</a>
<a id='n4758' href='#n4758'>4758</a>
<a id='n4759' href='#n4759'>4759</a>
<a id='n4760' href='#n4760'>4760</a>
<a id='n4761' href='#n4761'>4761</a>
<a id='n4762' href='#n4762'>4762</a>
<a id='n4763' href='#n4763'>4763</a>
<a id='n4764' href='#n4764'>4764</a>
<a id='n4765' href='#n4765'>4765</a>
<a id='n4766' href='#n4766'>4766</a>
<a id='n4767' href='#n4767'>4767</a>
<a id='n4768' href='#n4768'>4768</a>
<a id='n4769' href='#n4769'>4769</a>
<a id='n4770' href='#n4770'>4770</a>
<a id='n4771' href='#n4771'>4771</a>
<a id='n4772' href='#n4772'>4772</a>
<a id='n4773' href='#n4773'>4773</a>
<a id='n4774' href='#n4774'>4774</a>
<a id='n4775' href='#n4775'>4775</a>
<a id='n4776' href='#n4776'>4776</a>
<a id='n4777' href='#n4777'>4777</a>
<a id='n4778' href='#n4778'>4778</a>
<a id='n4779' href='#n4779'>4779</a>
<a id='n4780' href='#n4780'>4780</a>
<a id='n4781' href='#n4781'>4781</a>
<a id='n4782' href='#n4782'>4782</a>
<a id='n4783' href='#n4783'>4783</a>
<a id='n4784' href='#n4784'>4784</a>
<a id='n4785' href='#n4785'>4785</a>
<a id='n4786' href='#n4786'>4786</a>
<a id='n4787' href='#n4787'>4787</a>
<a id='n4788' href='#n4788'>4788</a>
<a id='n4789' href='#n4789'>4789</a>
<a id='n4790' href='#n4790'>4790</a>
<a id='n4791' href='#n4791'>4791</a>
<a id='n4792' href='#n4792'>4792</a>
<a id='n4793' href='#n4793'>4793</a>
<a id='n4794' href='#n4794'>4794</a>
<a id='n4795' href='#n4795'>4795</a>
<a id='n4796' href='#n4796'>4796</a>
<a id='n4797' href='#n4797'>4797</a>
<a id='n4798' href='#n4798'>4798</a>
<a id='n4799' href='#n4799'>4799</a>
<a id='n4800' href='#n4800'>4800</a>
<a id='n4801' href='#n4801'>4801</a>
<a id='n4802' href='#n4802'>4802</a>
<a id='n4803' href='#n4803'>4803</a>
<a id='n4804' href='#n4804'>4804</a>
<a id='n4805' href='#n4805'>4805</a>
<a id='n4806' href='#n4806'>4806</a>
<a id='n4807' href='#n4807'>4807</a>
<a id='n4808' href='#n4808'>4808</a>
<a id='n4809' href='#n4809'>4809</a>
<a id='n4810' href='#n4810'>4810</a>
<a id='n4811' href='#n4811'>4811</a>
<a id='n4812' href='#n4812'>4812</a>
<a id='n4813' href='#n4813'>4813</a>
<a id='n4814' href='#n4814'>4814</a>
<a id='n4815' href='#n4815'>4815</a>
<a id='n4816' href='#n4816'>4816</a>
<a id='n4817' href='#n4817'>4817</a>
<a id='n4818' href='#n4818'>4818</a>
<a id='n4819' href='#n4819'>4819</a>
<a id='n4820' href='#n4820'>4820</a>
<a id='n4821' href='#n4821'>4821</a>
<a id='n4822' href='#n4822'>4822</a>
<a id='n4823' href='#n4823'>4823</a>
<a id='n4824' href='#n4824'>4824</a>
<a id='n4825' href='#n4825'>4825</a>
<a id='n4826' href='#n4826'>4826</a>
<a id='n4827' href='#n4827'>4827</a>
<a id='n4828' href='#n4828'>4828</a>
<a id='n4829' href='#n4829'>4829</a>
<a id='n4830' href='#n4830'>4830</a>
<a id='n4831' href='#n4831'>4831</a>
<a id='n4832' href='#n4832'>4832</a>
<a id='n4833' href='#n4833'>4833</a>
<a id='n4834' href='#n4834'>4834</a>
<a id='n4835' href='#n4835'>4835</a>
<a id='n4836' href='#n4836'>4836</a>
<a id='n4837' href='#n4837'>4837</a>
<a id='n4838' href='#n4838'>4838</a>
<a id='n4839' href='#n4839'>4839</a>
<a id='n4840' href='#n4840'>4840</a>
<a id='n4841' href='#n4841'>4841</a>
<a id='n4842' href='#n4842'>4842</a>
<a id='n4843' href='#n4843'>4843</a>
<a id='n4844' href='#n4844'>4844</a>
<a id='n4845' href='#n4845'>4845</a>
<a id='n4846' href='#n4846'>4846</a>
<a id='n4847' href='#n4847'>4847</a>
<a id='n4848' href='#n4848'>4848</a>
<a id='n4849' href='#n4849'>4849</a>
<a id='n4850' href='#n4850'>4850</a>
<a id='n4851' href='#n4851'>4851</a>
<a id='n4852' href='#n4852'>4852</a>
<a id='n4853' href='#n4853'>4853</a>
<a id='n4854' href='#n4854'>4854</a>
<a id='n4855' href='#n4855'>4855</a>
<a id='n4856' href='#n4856'>4856</a>
<a id='n4857' href='#n4857'>4857</a>
<a id='n4858' href='#n4858'>4858</a>
<a id='n4859' href='#n4859'>4859</a>
<a id='n4860' href='#n4860'>4860</a>
<a id='n4861' href='#n4861'>4861</a>
<a id='n4862' href='#n4862'>4862</a>
<a id='n4863' href='#n4863'>4863</a>
<a id='n4864' href='#n4864'>4864</a>
<a id='n4865' href='#n4865'>4865</a>
<a id='n4866' href='#n4866'>4866</a>
<a id='n4867' href='#n4867'>4867</a>
<a id='n4868' href='#n4868'>4868</a>
<a id='n4869' href='#n4869'>4869</a>
<a id='n4870' href='#n4870'>4870</a>
<a id='n4871' href='#n4871'>4871</a>
<a id='n4872' href='#n4872'>4872</a>
<a id='n4873' href='#n4873'>4873</a>
<a id='n4874' href='#n4874'>4874</a>
<a id='n4875' href='#n4875'>4875</a>
<a id='n4876' href='#n4876'>4876</a>
<a id='n4877' href='#n4877'>4877</a>
<a id='n4878' href='#n4878'>4878</a>
<a id='n4879' href='#n4879'>4879</a>
<a id='n4880' href='#n4880'>4880</a>
<a id='n4881' href='#n4881'>4881</a>
<a id='n4882' href='#n4882'>4882</a>
<a id='n4883' href='#n4883'>4883</a>
<a id='n4884' href='#n4884'>4884</a>
<a id='n4885' href='#n4885'>4885</a>
<a id='n4886' href='#n4886'>4886</a>
<a id='n4887' href='#n4887'>4887</a>
<a id='n4888' href='#n4888'>4888</a>
<a id='n4889' href='#n4889'>4889</a>
<a id='n4890' href='#n4890'>4890</a>
<a id='n4891' href='#n4891'>4891</a>
<a id='n4892' href='#n4892'>4892</a>
<a id='n4893' href='#n4893'>4893</a>
<a id='n4894' href='#n4894'>4894</a>
<a id='n4895' href='#n4895'>4895</a>
<a id='n4896' href='#n4896'>4896</a>
<a id='n4897' href='#n4897'>4897</a>
<a id='n4898' href='#n4898'>4898</a>
<a id='n4899' href='#n4899'>4899</a>
<a id='n4900' href='#n4900'>4900</a>
<a id='n4901' href='#n4901'>4901</a>
<a id='n4902' href='#n4902'>4902</a>
<a id='n4903' href='#n4903'>4903</a>
<a id='n4904' href='#n4904'>4904</a>
<a id='n4905' href='#n4905'>4905</a>
<a id='n4906' href='#n4906'>4906</a>
<a id='n4907' href='#n4907'>4907</a>
<a id='n4908' href='#n4908'>4908</a>
<a id='n4909' href='#n4909'>4909</a>
<a id='n4910' href='#n4910'>4910</a>
<a id='n4911' href='#n4911'>4911</a>
<a id='n4912' href='#n4912'>4912</a>
<a id='n4913' href='#n4913'>4913</a>
<a id='n4914' href='#n4914'>4914</a>
<a id='n4915' href='#n4915'>4915</a>
<a id='n4916' href='#n4916'>4916</a>
<a id='n4917' href='#n4917'>4917</a>
<a id='n4918' href='#n4918'>4918</a>
<a id='n4919' href='#n4919'>4919</a>
<a id='n4920' href='#n4920'>4920</a>
<a id='n4921' href='#n4921'>4921</a>
<a id='n4922' href='#n4922'>4922</a>
<a id='n4923' href='#n4923'>4923</a>
<a id='n4924' href='#n4924'>4924</a>
<a id='n4925' href='#n4925'>4925</a>
<a id='n4926' href='#n4926'>4926</a>
<a id='n4927' href='#n4927'>4927</a>
<a id='n4928' href='#n4928'>4928</a>
<a id='n4929' href='#n4929'>4929</a>
<a id='n4930' href='#n4930'>4930</a>
<a id='n4931' href='#n4931'>4931</a>
<a id='n4932' href='#n4932'>4932</a>
<a id='n4933' href='#n4933'>4933</a>
<a id='n4934' href='#n4934'>4934</a>
<a id='n4935' href='#n4935'>4935</a>
<a id='n4936' href='#n4936'>4936</a>
<a id='n4937' href='#n4937'>4937</a>
<a id='n4938' href='#n4938'>4938</a>
<a id='n4939' href='#n4939'>4939</a>
<a id='n4940' href='#n4940'>4940</a>
<a id='n4941' href='#n4941'>4941</a>
<a id='n4942' href='#n4942'>4942</a>
<a id='n4943' href='#n4943'>4943</a>
<a id='n4944' href='#n4944'>4944</a>
<a id='n4945' href='#n4945'>4945</a>
<a id='n4946' href='#n4946'>4946</a>
<a id='n4947' href='#n4947'>4947</a>
<a id='n4948' href='#n4948'>4948</a>
<a id='n4949' href='#n4949'>4949</a>
<a id='n4950' href='#n4950'>4950</a>
<a id='n4951' href='#n4951'>4951</a>
<a id='n4952' href='#n4952'>4952</a>
<a id='n4953' href='#n4953'>4953</a>
<a id='n4954' href='#n4954'>4954</a>
<a id='n4955' href='#n4955'>4955</a>
<a id='n4956' href='#n4956'>4956</a>
<a id='n4957' href='#n4957'>4957</a>
<a id='n4958' href='#n4958'>4958</a>
<a id='n4959' href='#n4959'>4959</a>
<a id='n4960' href='#n4960'>4960</a>
<a id='n4961' href='#n4961'>4961</a>
<a id='n4962' href='#n4962'>4962</a>
<a id='n4963' href='#n4963'>4963</a>
<a id='n4964' href='#n4964'>4964</a>
<a id='n4965' href='#n4965'>4965</a>
<a id='n4966' href='#n4966'>4966</a>
<a id='n4967' href='#n4967'>4967</a>
<a id='n4968' href='#n4968'>4968</a>
<a id='n4969' href='#n4969'>4969</a>
<a id='n4970' href='#n4970'>4970</a>
<a id='n4971' href='#n4971'>4971</a>
<a id='n4972' href='#n4972'>4972</a>
<a id='n4973' href='#n4973'>4973</a>
<a id='n4974' href='#n4974'>4974</a>
<a id='n4975' href='#n4975'>4975</a>
<a id='n4976' href='#n4976'>4976</a>
<a id='n4977' href='#n4977'>4977</a>
<a id='n4978' href='#n4978'>4978</a>
<a id='n4979' href='#n4979'>4979</a>
<a id='n4980' href='#n4980'>4980</a>
<a id='n4981' href='#n4981'>4981</a>
<a id='n4982' href='#n4982'>4982</a>
<a id='n4983' href='#n4983'>4983</a>
<a id='n4984' href='#n4984'>4984</a>
<a id='n4985' href='#n4985'>4985</a>
<a id='n4986' href='#n4986'>4986</a>
<a id='n4987' href='#n4987'>4987</a>
<a id='n4988' href='#n4988'>4988</a>
<a id='n4989' href='#n4989'>4989</a>
<a id='n4990' href='#n4990'>4990</a>
<a id='n4991' href='#n4991'>4991</a>
<a id='n4992' href='#n4992'>4992</a>
<a id='n4993' href='#n4993'>4993</a>
<a id='n4994' href='#n4994'>4994</a>
<a id='n4995' href='#n4995'>4995</a>
<a id='n4996' href='#n4996'>4996</a>
<a id='n4997' href='#n4997'>4997</a>
<a id='n4998' href='#n4998'>4998</a>
<a id='n4999' href='#n4999'>4999</a>
<a id='n5000' href='#n5000'>5000</a>
<a id='n5001' href='#n5001'>5001</a>
<a id='n5002' href='#n5002'>5002</a>
<a id='n5003' href='#n5003'>5003</a>
<a id='n5004' href='#n5004'>5004</a>
<a id='n5005' href='#n5005'>5005</a>
<a id='n5006' href='#n5006'>5006</a>
<a id='n5007' href='#n5007'>5007</a>
<a id='n5008' href='#n5008'>5008</a>
<a id='n5009' href='#n5009'>5009</a>
<a id='n5010' href='#n5010'>5010</a>
<a id='n5011' href='#n5011'>5011</a>
<a id='n5012' href='#n5012'>5012</a>
<a id='n5013' href='#n5013'>5013</a>
<a id='n5014' href='#n5014'>5014</a>
<a id='n5015' href='#n5015'>5015</a>
<a id='n5016' href='#n5016'>5016</a>
<a id='n5017' href='#n5017'>5017</a>
<a id='n5018' href='#n5018'>5018</a>
<a id='n5019' href='#n5019'>5019</a>
<a id='n5020' href='#n5020'>5020</a>
<a id='n5021' href='#n5021'>5021</a>
<a id='n5022' href='#n5022'>5022</a>
<a id='n5023' href='#n5023'>5023</a>
<a id='n5024' href='#n5024'>5024</a>
<a id='n5025' href='#n5025'>5025</a>
<a id='n5026' href='#n5026'>5026</a>
<a id='n5027' href='#n5027'>5027</a>
<a id='n5028' href='#n5028'>5028</a>
<a id='n5029' href='#n5029'>5029</a>
<a id='n5030' href='#n5030'>5030</a>
<a id='n5031' href='#n5031'>5031</a>
<a id='n5032' href='#n5032'>5032</a>
<a id='n5033' href='#n5033'>5033</a>
<a id='n5034' href='#n5034'>5034</a>
<a id='n5035' href='#n5035'>5035</a>
<a id='n5036' href='#n5036'>5036</a>
<a id='n5037' href='#n5037'>5037</a>
<a id='n5038' href='#n5038'>5038</a>
<a id='n5039' href='#n5039'>5039</a>
<a id='n5040' href='#n5040'>5040</a>
<a id='n5041' href='#n5041'>5041</a>
<a id='n5042' href='#n5042'>5042</a>
<a id='n5043' href='#n5043'>5043</a>
<a id='n5044' href='#n5044'>5044</a>
<a id='n5045' href='#n5045'>5045</a>
<a id='n5046' href='#n5046'>5046</a>
<a id='n5047' href='#n5047'>5047</a>
<a id='n5048' href='#n5048'>5048</a>
<a id='n5049' href='#n5049'>5049</a>
<a id='n5050' href='#n5050'>5050</a>
<a id='n5051' href='#n5051'>5051</a>
<a id='n5052' href='#n5052'>5052</a>
<a id='n5053' href='#n5053'>5053</a>
<a id='n5054' href='#n5054'>5054</a>
<a id='n5055' href='#n5055'>5055</a>
<a id='n5056' href='#n5056'>5056</a>
<a id='n5057' href='#n5057'>5057</a>
<a id='n5058' href='#n5058'>5058</a>
<a id='n5059' href='#n5059'>5059</a>
<a id='n5060' href='#n5060'>5060</a>
<a id='n5061' href='#n5061'>5061</a>
<a id='n5062' href='#n5062'>5062</a>
<a id='n5063' href='#n5063'>5063</a>
<a id='n5064' href='#n5064'>5064</a>
<a id='n5065' href='#n5065'>5065</a>
<a id='n5066' href='#n5066'>5066</a>
<a id='n5067' href='#n5067'>5067</a>
<a id='n5068' href='#n5068'>5068</a>
<a id='n5069' href='#n5069'>5069</a>
<a id='n5070' href='#n5070'>5070</a>
<a id='n5071' href='#n5071'>5071</a>
<a id='n5072' href='#n5072'>5072</a>
<a id='n5073' href='#n5073'>5073</a>
<a id='n5074' href='#n5074'>5074</a>
<a id='n5075' href='#n5075'>5075</a>
<a id='n5076' href='#n5076'>5076</a>
<a id='n5077' href='#n5077'>5077</a>
<a id='n5078' href='#n5078'>5078</a>
<a id='n5079' href='#n5079'>5079</a>
<a id='n5080' href='#n5080'>5080</a>
<a id='n5081' href='#n5081'>5081</a>
<a id='n5082' href='#n5082'>5082</a>
<a id='n5083' href='#n5083'>5083</a>
<a id='n5084' href='#n5084'>5084</a>
<a id='n5085' href='#n5085'>5085</a>
<a id='n5086' href='#n5086'>5086</a>
<a id='n5087' href='#n5087'>5087</a>
<a id='n5088' href='#n5088'>5088</a>
<a id='n5089' href='#n5089'>5089</a>
<a id='n5090' href='#n5090'>5090</a>
<a id='n5091' href='#n5091'>5091</a>
<a id='n5092' href='#n5092'>5092</a>
<a id='n5093' href='#n5093'>5093</a>
<a id='n5094' href='#n5094'>5094</a>
<a id='n5095' href='#n5095'>5095</a>
<a id='n5096' href='#n5096'>5096</a>
<a id='n5097' href='#n5097'>5097</a>
<a id='n5098' href='#n5098'>5098</a>
<a id='n5099' href='#n5099'>5099</a>
<a id='n5100' href='#n5100'>5100</a>
<a id='n5101' href='#n5101'>5101</a>
<a id='n5102' href='#n5102'>5102</a>
<a id='n5103' href='#n5103'>5103</a>
<a id='n5104' href='#n5104'>5104</a>
<a id='n5105' href='#n5105'>5105</a>
<a id='n5106' href='#n5106'>5106</a>
<a id='n5107' href='#n5107'>5107</a>
<a id='n5108' href='#n5108'>5108</a>
<a id='n5109' href='#n5109'>5109</a>
<a id='n5110' href='#n5110'>5110</a>
<a id='n5111' href='#n5111'>5111</a>
<a id='n5112' href='#n5112'>5112</a>
<a id='n5113' href='#n5113'>5113</a>
<a id='n5114' href='#n5114'>5114</a>
<a id='n5115' href='#n5115'>5115</a>
<a id='n5116' href='#n5116'>5116</a>
<a id='n5117' href='#n5117'>5117</a>
<a id='n5118' href='#n5118'>5118</a>
<a id='n5119' href='#n5119'>5119</a>
<a id='n5120' href='#n5120'>5120</a>
<a id='n5121' href='#n5121'>5121</a>
<a id='n5122' href='#n5122'>5122</a>
<a id='n5123' href='#n5123'>5123</a>
<a id='n5124' href='#n5124'>5124</a>
<a id='n5125' href='#n5125'>5125</a>
<a id='n5126' href='#n5126'>5126</a>
<a id='n5127' href='#n5127'>5127</a>
<a id='n5128' href='#n5128'>5128</a>
<a id='n5129' href='#n5129'>5129</a>
<a id='n5130' href='#n5130'>5130</a>
<a id='n5131' href='#n5131'>5131</a>
<a id='n5132' href='#n5132'>5132</a>
<a id='n5133' href='#n5133'>5133</a>
<a id='n5134' href='#n5134'>5134</a>
<a id='n5135' href='#n5135'>5135</a>
<a id='n5136' href='#n5136'>5136</a>
<a id='n5137' href='#n5137'>5137</a>
<a id='n5138' href='#n5138'>5138</a>
<a id='n5139' href='#n5139'>5139</a>
<a id='n5140' href='#n5140'>5140</a>
<a id='n5141' href='#n5141'>5141</a>
<a id='n5142' href='#n5142'>5142</a>
<a id='n5143' href='#n5143'>5143</a>
<a id='n5144' href='#n5144'>5144</a>
<a id='n5145' href='#n5145'>5145</a>
<a id='n5146' href='#n5146'>5146</a>
<a id='n5147' href='#n5147'>5147</a>
<a id='n5148' href='#n5148'>5148</a>
<a id='n5149' href='#n5149'>5149</a>
<a id='n5150' href='#n5150'>5150</a>
<a id='n5151' href='#n5151'>5151</a>
<a id='n5152' href='#n5152'>5152</a>
<a id='n5153' href='#n5153'>5153</a>
<a id='n5154' href='#n5154'>5154</a>
<a id='n5155' href='#n5155'>5155</a>
<a id='n5156' href='#n5156'>5156</a>
<a id='n5157' href='#n5157'>5157</a>
<a id='n5158' href='#n5158'>5158</a>
<a id='n5159' href='#n5159'>5159</a>
<a id='n5160' href='#n5160'>5160</a>
<a id='n5161' href='#n5161'>5161</a>
<a id='n5162' href='#n5162'>5162</a>
<a id='n5163' href='#n5163'>5163</a>
<a id='n5164' href='#n5164'>5164</a>
<a id='n5165' href='#n5165'>5165</a>
<a id='n5166' href='#n5166'>5166</a>
<a id='n5167' href='#n5167'>5167</a>
<a id='n5168' href='#n5168'>5168</a>
<a id='n5169' href='#n5169'>5169</a>
<a id='n5170' href='#n5170'>5170</a>
<a id='n5171' href='#n5171'>5171</a>
<a id='n5172' href='#n5172'>5172</a>
<a id='n5173' href='#n5173'>5173</a>
<a id='n5174' href='#n5174'>5174</a>
<a id='n5175' href='#n5175'>5175</a>
<a id='n5176' href='#n5176'>5176</a>
<a id='n5177' href='#n5177'>5177</a>
<a id='n5178' href='#n5178'>5178</a>
<a id='n5179' href='#n5179'>5179</a>
<a id='n5180' href='#n5180'>5180</a>
<a id='n5181' href='#n5181'>5181</a>
<a id='n5182' href='#n5182'>5182</a>
<a id='n5183' href='#n5183'>5183</a>
<a id='n5184' href='#n5184'>5184</a>
<a id='n5185' href='#n5185'>5185</a>
<a id='n5186' href='#n5186'>5186</a>
<a id='n5187' href='#n5187'>5187</a>
<a id='n5188' href='#n5188'>5188</a>
<a id='n5189' href='#n5189'>5189</a>
<a id='n5190' href='#n5190'>5190</a>
<a id='n5191' href='#n5191'>5191</a>
<a id='n5192' href='#n5192'>5192</a>
<a id='n5193' href='#n5193'>5193</a>
<a id='n5194' href='#n5194'>5194</a>
<a id='n5195' href='#n5195'>5195</a>
<a id='n5196' href='#n5196'>5196</a>
<a id='n5197' href='#n5197'>5197</a>
<a id='n5198' href='#n5198'>5198</a>
<a id='n5199' href='#n5199'>5199</a>
<a id='n5200' href='#n5200'>5200</a>
<a id='n5201' href='#n5201'>5201</a>
<a id='n5202' href='#n5202'>5202</a>
<a id='n5203' href='#n5203'>5203</a>
<a id='n5204' href='#n5204'>5204</a>
<a id='n5205' href='#n5205'>5205</a>
<a id='n5206' href='#n5206'>5206</a>
<a id='n5207' href='#n5207'>5207</a>
<a id='n5208' href='#n5208'>5208</a>
<a id='n5209' href='#n5209'>5209</a>
<a id='n5210' href='#n5210'>5210</a>
<a id='n5211' href='#n5211'>5211</a>
<a id='n5212' href='#n5212'>5212</a>
<a id='n5213' href='#n5213'>5213</a>
<a id='n5214' href='#n5214'>5214</a>
<a id='n5215' href='#n5215'>5215</a>
<a id='n5216' href='#n5216'>5216</a>
<a id='n5217' href='#n5217'>5217</a>
<a id='n5218' href='#n5218'>5218</a>
<a id='n5219' href='#n5219'>5219</a>
<a id='n5220' href='#n5220'>5220</a>
<a id='n5221' href='#n5221'>5221</a>
<a id='n5222' href='#n5222'>5222</a>
<a id='n5223' href='#n5223'>5223</a>
<a id='n5224' href='#n5224'>5224</a>
<a id='n5225' href='#n5225'>5225</a>
<a id='n5226' href='#n5226'>5226</a>
<a id='n5227' href='#n5227'>5227</a>
<a id='n5228' href='#n5228'>5228</a>
<a id='n5229' href='#n5229'>5229</a>
<a id='n5230' href='#n5230'>5230</a>
<a id='n5231' href='#n5231'>5231</a>
<a id='n5232' href='#n5232'>5232</a>
<a id='n5233' href='#n5233'>5233</a>
<a id='n5234' href='#n5234'>5234</a>
<a id='n5235' href='#n5235'>5235</a>
<a id='n5236' href='#n5236'>5236</a>
<a id='n5237' href='#n5237'>5237</a>
<a id='n5238' href='#n5238'>5238</a>
<a id='n5239' href='#n5239'>5239</a>
<a id='n5240' href='#n5240'>5240</a>
<a id='n5241' href='#n5241'>5241</a>
<a id='n5242' href='#n5242'>5242</a>
<a id='n5243' href='#n5243'>5243</a>
<a id='n5244' href='#n5244'>5244</a>
<a id='n5245' href='#n5245'>5245</a>
<a id='n5246' href='#n5246'>5246</a>
<a id='n5247' href='#n5247'>5247</a>
<a id='n5248' href='#n5248'>5248</a>
<a id='n5249' href='#n5249'>5249</a>
<a id='n5250' href='#n5250'>5250</a>
<a id='n5251' href='#n5251'>5251</a>
<a id='n5252' href='#n5252'>5252</a>
<a id='n5253' href='#n5253'>5253</a>
<a id='n5254' href='#n5254'>5254</a>
<a id='n5255' href='#n5255'>5255</a>
<a id='n5256' href='#n5256'>5256</a>
<a id='n5257' href='#n5257'>5257</a>
<a id='n5258' href='#n5258'>5258</a>
<a id='n5259' href='#n5259'>5259</a>
<a id='n5260' href='#n5260'>5260</a>
<a id='n5261' href='#n5261'>5261</a>
<a id='n5262' href='#n5262'>5262</a>
<a id='n5263' href='#n5263'>5263</a>
<a id='n5264' href='#n5264'>5264</a>
<a id='n5265' href='#n5265'>5265</a>
<a id='n5266' href='#n5266'>5266</a>
<a id='n5267' href='#n5267'>5267</a>
<a id='n5268' href='#n5268'>5268</a>
<a id='n5269' href='#n5269'>5269</a>
<a id='n5270' href='#n5270'>5270</a>
<a id='n5271' href='#n5271'>5271</a>
<a id='n5272' href='#n5272'>5272</a>
<a id='n5273' href='#n5273'>5273</a>
<a id='n5274' href='#n5274'>5274</a>
<a id='n5275' href='#n5275'>5275</a>
<a id='n5276' href='#n5276'>5276</a>
<a id='n5277' href='#n5277'>5277</a>
<a id='n5278' href='#n5278'>5278</a>
<a id='n5279' href='#n5279'>5279</a>
<a id='n5280' href='#n5280'>5280</a>
<a id='n5281' href='#n5281'>5281</a>
<a id='n5282' href='#n5282'>5282</a>
<a id='n5283' href='#n5283'>5283</a>
<a id='n5284' href='#n5284'>5284</a>
<a id='n5285' href='#n5285'>5285</a>
<a id='n5286' href='#n5286'>5286</a>
<a id='n5287' href='#n5287'>5287</a>
<a id='n5288' href='#n5288'>5288</a>
<a id='n5289' href='#n5289'>5289</a>
<a id='n5290' href='#n5290'>5290</a>
<a id='n5291' href='#n5291'>5291</a>
<a id='n5292' href='#n5292'>5292</a>
<a id='n5293' href='#n5293'>5293</a>
<a id='n5294' href='#n5294'>5294</a>
<a id='n5295' href='#n5295'>5295</a>
<a id='n5296' href='#n5296'>5296</a>
<a id='n5297' href='#n5297'>5297</a>
<a id='n5298' href='#n5298'>5298</a>
<a id='n5299' href='#n5299'>5299</a>
<a id='n5300' href='#n5300'>5300</a>
<a id='n5301' href='#n5301'>5301</a>
<a id='n5302' href='#n5302'>5302</a>
<a id='n5303' href='#n5303'>5303</a>
<a id='n5304' href='#n5304'>5304</a>
<a id='n5305' href='#n5305'>5305</a>
<a id='n5306' href='#n5306'>5306</a>
<a id='n5307' href='#n5307'>5307</a>
<a id='n5308' href='#n5308'>5308</a>
<a id='n5309' href='#n5309'>5309</a>
<a id='n5310' href='#n5310'>5310</a>
<a id='n5311' href='#n5311'>5311</a>
<a id='n5312' href='#n5312'>5312</a>
<a id='n5313' href='#n5313'>5313</a>
<a id='n5314' href='#n5314'>5314</a>
<a id='n5315' href='#n5315'>5315</a>
<a id='n5316' href='#n5316'>5316</a>
<a id='n5317' href='#n5317'>5317</a>
<a id='n5318' href='#n5318'>5318</a>
<a id='n5319' href='#n5319'>5319</a>
<a id='n5320' href='#n5320'>5320</a>
<a id='n5321' href='#n5321'>5321</a>
<a id='n5322' href='#n5322'>5322</a>
<a id='n5323' href='#n5323'>5323</a>
<a id='n5324' href='#n5324'>5324</a>
<a id='n5325' href='#n5325'>5325</a>
<a id='n5326' href='#n5326'>5326</a>
<a id='n5327' href='#n5327'>5327</a>
<a id='n5328' href='#n5328'>5328</a>
<a id='n5329' href='#n5329'>5329</a>
<a id='n5330' href='#n5330'>5330</a>
<a id='n5331' href='#n5331'>5331</a>
<a id='n5332' href='#n5332'>5332</a>
<a id='n5333' href='#n5333'>5333</a>
<a id='n5334' href='#n5334'>5334</a>
<a id='n5335' href='#n5335'>5335</a>
<a id='n5336' href='#n5336'>5336</a>
<a id='n5337' href='#n5337'>5337</a>
<a id='n5338' href='#n5338'>5338</a>
<a id='n5339' href='#n5339'>5339</a>
<a id='n5340' href='#n5340'>5340</a>
<a id='n5341' href='#n5341'>5341</a>
<a id='n5342' href='#n5342'>5342</a>
<a id='n5343' href='#n5343'>5343</a>
<a id='n5344' href='#n5344'>5344</a>
<a id='n5345' href='#n5345'>5345</a>
<a id='n5346' href='#n5346'>5346</a>
<a id='n5347' href='#n5347'>5347</a>
<a id='n5348' href='#n5348'>5348</a>
<a id='n5349' href='#n5349'>5349</a>
<a id='n5350' href='#n5350'>5350</a>
<a id='n5351' href='#n5351'>5351</a>
<a id='n5352' href='#n5352'>5352</a>
<a id='n5353' href='#n5353'>5353</a>
<a id='n5354' href='#n5354'>5354</a>
<a id='n5355' href='#n5355'>5355</a>
<a id='n5356' href='#n5356'>5356</a>
<a id='n5357' href='#n5357'>5357</a>
<a id='n5358' href='#n5358'>5358</a>
<a id='n5359' href='#n5359'>5359</a>
<a id='n5360' href='#n5360'>5360</a>
<a id='n5361' href='#n5361'>5361</a>
<a id='n5362' href='#n5362'>5362</a>
<a id='n5363' href='#n5363'>5363</a>
<a id='n5364' href='#n5364'>5364</a>
<a id='n5365' href='#n5365'>5365</a>
<a id='n5366' href='#n5366'>5366</a>
<a id='n5367' href='#n5367'>5367</a>
<a id='n5368' href='#n5368'>5368</a>
<a id='n5369' href='#n5369'>5369</a>
<a id='n5370' href='#n5370'>5370</a>
<a id='n5371' href='#n5371'>5371</a>
<a id='n5372' href='#n5372'>5372</a>
<a id='n5373' href='#n5373'>5373</a>
<a id='n5374' href='#n5374'>5374</a>
<a id='n5375' href='#n5375'>5375</a>
<a id='n5376' href='#n5376'>5376</a>
<a id='n5377' href='#n5377'>5377</a>
<a id='n5378' href='#n5378'>5378</a>
<a id='n5379' href='#n5379'>5379</a>
<a id='n5380' href='#n5380'>5380</a>
<a id='n5381' href='#n5381'>5381</a>
<a id='n5382' href='#n5382'>5382</a>
<a id='n5383' href='#n5383'>5383</a>
<a id='n5384' href='#n5384'>5384</a>
<a id='n5385' href='#n5385'>5385</a>
<a id='n5386' href='#n5386'>5386</a>
<a id='n5387' href='#n5387'>5387</a>
<a id='n5388' href='#n5388'>5388</a>
<a id='n5389' href='#n5389'>5389</a>
<a id='n5390' href='#n5390'>5390</a>
<a id='n5391' href='#n5391'>5391</a>
<a id='n5392' href='#n5392'>5392</a>
<a id='n5393' href='#n5393'>5393</a>
<a id='n5394' href='#n5394'>5394</a>
<a id='n5395' href='#n5395'>5395</a>
<a id='n5396' href='#n5396'>5396</a>
<a id='n5397' href='#n5397'>5397</a>
<a id='n5398' href='#n5398'>5398</a>
<a id='n5399' href='#n5399'>5399</a>
<a id='n5400' href='#n5400'>5400</a>
<a id='n5401' href='#n5401'>5401</a>
<a id='n5402' href='#n5402'>5402</a>
<a id='n5403' href='#n5403'>5403</a>
<a id='n5404' href='#n5404'>5404</a>
<a id='n5405' href='#n5405'>5405</a>
<a id='n5406' href='#n5406'>5406</a>
<a id='n5407' href='#n5407'>5407</a>
<a id='n5408' href='#n5408'>5408</a>
<a id='n5409' href='#n5409'>5409</a>
<a id='n5410' href='#n5410'>5410</a>
<a id='n5411' href='#n5411'>5411</a>
<a id='n5412' href='#n5412'>5412</a>
<a id='n5413' href='#n5413'>5413</a>
<a id='n5414' href='#n5414'>5414</a>
<a id='n5415' href='#n5415'>5415</a>
<a id='n5416' href='#n5416'>5416</a>
<a id='n5417' href='#n5417'>5417</a>
<a id='n5418' href='#n5418'>5418</a>
<a id='n5419' href='#n5419'>5419</a>
<a id='n5420' href='#n5420'>5420</a>
<a id='n5421' href='#n5421'>5421</a>
<a id='n5422' href='#n5422'>5422</a>
<a id='n5423' href='#n5423'>5423</a>
<a id='n5424' href='#n5424'>5424</a>
<a id='n5425' href='#n5425'>5425</a>
<a id='n5426' href='#n5426'>5426</a>
<a id='n5427' href='#n5427'>5427</a>
<a id='n5428' href='#n5428'>5428</a>
<a id='n5429' href='#n5429'>5429</a>
<a id='n5430' href='#n5430'>5430</a>
<a id='n5431' href='#n5431'>5431</a>
<a id='n5432' href='#n5432'>5432</a>
<a id='n5433' href='#n5433'>5433</a>
<a id='n5434' href='#n5434'>5434</a>
<a id='n5435' href='#n5435'>5435</a>
<a id='n5436' href='#n5436'>5436</a>
<a id='n5437' href='#n5437'>5437</a>
<a id='n5438' href='#n5438'>5438</a>
<a id='n5439' href='#n5439'>5439</a>
<a id='n5440' href='#n5440'>5440</a>
<a id='n5441' href='#n5441'>5441</a>
<a id='n5442' href='#n5442'>5442</a>
<a id='n5443' href='#n5443'>5443</a>
<a id='n5444' href='#n5444'>5444</a>
<a id='n5445' href='#n5445'>5445</a>
<a id='n5446' href='#n5446'>5446</a>
<a id='n5447' href='#n5447'>5447</a>
<a id='n5448' href='#n5448'>5448</a>
<a id='n5449' href='#n5449'>5449</a>
<a id='n5450' href='#n5450'>5450</a>
<a id='n5451' href='#n5451'>5451</a>
<a id='n5452' href='#n5452'>5452</a>
<a id='n5453' href='#n5453'>5453</a>
<a id='n5454' href='#n5454'>5454</a>
<a id='n5455' href='#n5455'>5455</a>
<a id='n5456' href='#n5456'>5456</a>
<a id='n5457' href='#n5457'>5457</a>
<a id='n5458' href='#n5458'>5458</a>
<a id='n5459' href='#n5459'>5459</a>
<a id='n5460' href='#n5460'>5460</a>
<a id='n5461' href='#n5461'>5461</a>
<a id='n5462' href='#n5462'>5462</a>
<a id='n5463' href='#n5463'>5463</a>
<a id='n5464' href='#n5464'>5464</a>
<a id='n5465' href='#n5465'>5465</a>
<a id='n5466' href='#n5466'>5466</a>
<a id='n5467' href='#n5467'>5467</a>
<a id='n5468' href='#n5468'>5468</a>
<a id='n5469' href='#n5469'>5469</a>
<a id='n5470' href='#n5470'>5470</a>
<a id='n5471' href='#n5471'>5471</a>
<a id='n5472' href='#n5472'>5472</a>
<a id='n5473' href='#n5473'>5473</a>
<a id='n5474' href='#n5474'>5474</a>
<a id='n5475' href='#n5475'>5475</a>
<a id='n5476' href='#n5476'>5476</a>
<a id='n5477' href='#n5477'>5477</a>
<a id='n5478' href='#n5478'>5478</a>
<a id='n5479' href='#n5479'>5479</a>
<a id='n5480' href='#n5480'>5480</a>
<a id='n5481' href='#n5481'>5481</a>
<a id='n5482' href='#n5482'>5482</a>
<a id='n5483' href='#n5483'>5483</a>
<a id='n5484' href='#n5484'>5484</a>
<a id='n5485' href='#n5485'>5485</a>
<a id='n5486' href='#n5486'>5486</a>
<a id='n5487' href='#n5487'>5487</a>
<a id='n5488' href='#n5488'>5488</a>
<a id='n5489' href='#n5489'>5489</a>
<a id='n5490' href='#n5490'>5490</a>
<a id='n5491' href='#n5491'>5491</a>
<a id='n5492' href='#n5492'>5492</a>
<a id='n5493' href='#n5493'>5493</a>
<a id='n5494' href='#n5494'>5494</a>
<a id='n5495' href='#n5495'>5495</a>
<a id='n5496' href='#n5496'>5496</a>
<a id='n5497' href='#n5497'>5497</a>
<a id='n5498' href='#n5498'>5498</a>
<a id='n5499' href='#n5499'>5499</a>
<a id='n5500' href='#n5500'>5500</a>
<a id='n5501' href='#n5501'>5501</a>
<a id='n5502' href='#n5502'>5502</a>
<a id='n5503' href='#n5503'>5503</a>
<a id='n5504' href='#n5504'>5504</a>
<a id='n5505' href='#n5505'>5505</a>
<a id='n5506' href='#n5506'>5506</a>
<a id='n5507' href='#n5507'>5507</a>
<a id='n5508' href='#n5508'>5508</a>
<a id='n5509' href='#n5509'>5509</a>
<a id='n5510' href='#n5510'>5510</a>
<a id='n5511' href='#n5511'>5511</a>
<a id='n5512' href='#n5512'>5512</a>
<a id='n5513' href='#n5513'>5513</a>
<a id='n5514' href='#n5514'>5514</a>
<a id='n5515' href='#n5515'>5515</a>
<a id='n5516' href='#n5516'>5516</a>
<a id='n5517' href='#n5517'>5517</a>
<a id='n5518' href='#n5518'>5518</a>
<a id='n5519' href='#n5519'>5519</a>
<a id='n5520' href='#n5520'>5520</a>
<a id='n5521' href='#n5521'>5521</a>
<a id='n5522' href='#n5522'>5522</a>
<a id='n5523' href='#n5523'>5523</a>
<a id='n5524' href='#n5524'>5524</a>
<a id='n5525' href='#n5525'>5525</a>
<a id='n5526' href='#n5526'>5526</a>
<a id='n5527' href='#n5527'>5527</a>
<a id='n5528' href='#n5528'>5528</a>
<a id='n5529' href='#n5529'>5529</a>
<a id='n5530' href='#n5530'>5530</a>
<a id='n5531' href='#n5531'>5531</a>
<a id='n5532' href='#n5532'>5532</a>
<a id='n5533' href='#n5533'>5533</a>
<a id='n5534' href='#n5534'>5534</a>
<a id='n5535' href='#n5535'>5535</a>
<a id='n5536' href='#n5536'>5536</a>
<a id='n5537' href='#n5537'>5537</a>
<a id='n5538' href='#n5538'>5538</a>
<a id='n5539' href='#n5539'>5539</a>
<a id='n5540' href='#n5540'>5540</a>
<a id='n5541' href='#n5541'>5541</a>
<a id='n5542' href='#n5542'>5542</a>
<a id='n5543' href='#n5543'>5543</a>
<a id='n5544' href='#n5544'>5544</a>
<a id='n5545' href='#n5545'>5545</a>
<a id='n5546' href='#n5546'>5546</a>
<a id='n5547' href='#n5547'>5547</a>
<a id='n5548' href='#n5548'>5548</a>
<a id='n5549' href='#n5549'>5549</a>
<a id='n5550' href='#n5550'>5550</a>
<a id='n5551' href='#n5551'>5551</a>
<a id='n5552' href='#n5552'>5552</a>
<a id='n5553' href='#n5553'>5553</a>
<a id='n5554' href='#n5554'>5554</a>
<a id='n5555' href='#n5555'>5555</a>
<a id='n5556' href='#n5556'>5556</a>
<a id='n5557' href='#n5557'>5557</a>
<a id='n5558' href='#n5558'>5558</a>
<a id='n5559' href='#n5559'>5559</a>
<a id='n5560' href='#n5560'>5560</a>
<a id='n5561' href='#n5561'>5561</a>
<a id='n5562' href='#n5562'>5562</a>
<a id='n5563' href='#n5563'>5563</a>
<a id='n5564' href='#n5564'>5564</a>
<a id='n5565' href='#n5565'>5565</a>
<a id='n5566' href='#n5566'>5566</a>
<a id='n5567' href='#n5567'>5567</a>
<a id='n5568' href='#n5568'>5568</a>
<a id='n5569' href='#n5569'>5569</a>
<a id='n5570' href='#n5570'>5570</a>
<a id='n5571' href='#n5571'>5571</a>
<a id='n5572' href='#n5572'>5572</a>
<a id='n5573' href='#n5573'>5573</a>
<a id='n5574' href='#n5574'>5574</a>
<a id='n5575' href='#n5575'>5575</a>
<a id='n5576' href='#n5576'>5576</a>
<a id='n5577' href='#n5577'>5577</a>
<a id='n5578' href='#n5578'>5578</a>
<a id='n5579' href='#n5579'>5579</a>
<a id='n5580' href='#n5580'>5580</a>
<a id='n5581' href='#n5581'>5581</a>
<a id='n5582' href='#n5582'>5582</a>
<a id='n5583' href='#n5583'>5583</a>
<a id='n5584' href='#n5584'>5584</a>
<a id='n5585' href='#n5585'>5585</a>
<a id='n5586' href='#n5586'>5586</a>
<a id='n5587' href='#n5587'>5587</a>
<a id='n5588' href='#n5588'>5588</a>
<a id='n5589' href='#n5589'>5589</a>
<a id='n5590' href='#n5590'>5590</a>
<a id='n5591' href='#n5591'>5591</a>
<a id='n5592' href='#n5592'>5592</a>
<a id='n5593' href='#n5593'>5593</a>
<a id='n5594' href='#n5594'>5594</a>
<a id='n5595' href='#n5595'>5595</a>
<a id='n5596' href='#n5596'>5596</a>
<a id='n5597' href='#n5597'>5597</a>
<a id='n5598' href='#n5598'>5598</a>
<a id='n5599' href='#n5599'>5599</a>
<a id='n5600' href='#n5600'>5600</a>
<a id='n5601' href='#n5601'>5601</a>
<a id='n5602' href='#n5602'>5602</a>
<a id='n5603' href='#n5603'>5603</a>
<a id='n5604' href='#n5604'>5604</a>
<a id='n5605' href='#n5605'>5605</a>
<a id='n5606' href='#n5606'>5606</a>
<a id='n5607' href='#n5607'>5607</a>
<a id='n5608' href='#n5608'>5608</a>
<a id='n5609' href='#n5609'>5609</a>
<a id='n5610' href='#n5610'>5610</a>
<a id='n5611' href='#n5611'>5611</a>
<a id='n5612' href='#n5612'>5612</a>
<a id='n5613' href='#n5613'>5613</a>
<a id='n5614' href='#n5614'>5614</a>
<a id='n5615' href='#n5615'>5615</a>
<a id='n5616' href='#n5616'>5616</a>
<a id='n5617' href='#n5617'>5617</a>
<a id='n5618' href='#n5618'>5618</a>
<a id='n5619' href='#n5619'>5619</a>
<a id='n5620' href='#n5620'>5620</a>
<a id='n5621' href='#n5621'>5621</a>
<a id='n5622' href='#n5622'>5622</a>
<a id='n5623' href='#n5623'>5623</a>
<a id='n5624' href='#n5624'>5624</a>
<a id='n5625' href='#n5625'>5625</a>
<a id='n5626' href='#n5626'>5626</a>
<a id='n5627' href='#n5627'>5627</a>
<a id='n5628' href='#n5628'>5628</a>
<a id='n5629' href='#n5629'>5629</a>
<a id='n5630' href='#n5630'>5630</a>
<a id='n5631' href='#n5631'>5631</a>
<a id='n5632' href='#n5632'>5632</a>
<a id='n5633' href='#n5633'>5633</a>
<a id='n5634' href='#n5634'>5634</a>
<a id='n5635' href='#n5635'>5635</a>
<a id='n5636' href='#n5636'>5636</a>
<a id='n5637' href='#n5637'>5637</a>
<a id='n5638' href='#n5638'>5638</a>
<a id='n5639' href='#n5639'>5639</a>
<a id='n5640' href='#n5640'>5640</a>
<a id='n5641' href='#n5641'>5641</a>
<a id='n5642' href='#n5642'>5642</a>
<a id='n5643' href='#n5643'>5643</a>
<a id='n5644' href='#n5644'>5644</a>
<a id='n5645' href='#n5645'>5645</a>
<a id='n5646' href='#n5646'>5646</a>
<a id='n5647' href='#n5647'>5647</a>
<a id='n5648' href='#n5648'>5648</a>
<a id='n5649' href='#n5649'>5649</a>
<a id='n5650' href='#n5650'>5650</a>
<a id='n5651' href='#n5651'>5651</a>
<a id='n5652' href='#n5652'>5652</a>
<a id='n5653' href='#n5653'>5653</a>
<a id='n5654' href='#n5654'>5654</a>
<a id='n5655' href='#n5655'>5655</a>
<a id='n5656' href='#n5656'>5656</a>
<a id='n5657' href='#n5657'>5657</a>
<a id='n5658' href='#n5658'>5658</a>
<a id='n5659' href='#n5659'>5659</a>
<a id='n5660' href='#n5660'>5660</a>
<a id='n5661' href='#n5661'>5661</a>
<a id='n5662' href='#n5662'>5662</a>
<a id='n5663' href='#n5663'>5663</a>
<a id='n5664' href='#n5664'>5664</a>
<a id='n5665' href='#n5665'>5665</a>
<a id='n5666' href='#n5666'>5666</a>
<a id='n5667' href='#n5667'>5667</a>
<a id='n5668' href='#n5668'>5668</a>
<a id='n5669' href='#n5669'>5669</a>
<a id='n5670' href='#n5670'>5670</a>
<a id='n5671' href='#n5671'>5671</a>
<a id='n5672' href='#n5672'>5672</a>
<a id='n5673' href='#n5673'>5673</a>
<a id='n5674' href='#n5674'>5674</a>
<a id='n5675' href='#n5675'>5675</a>
<a id='n5676' href='#n5676'>5676</a>
<a id='n5677' href='#n5677'>5677</a>
<a id='n5678' href='#n5678'>5678</a>
<a id='n5679' href='#n5679'>5679</a>
<a id='n5680' href='#n5680'>5680</a>
<a id='n5681' href='#n5681'>5681</a>
<a id='n5682' href='#n5682'>5682</a>
<a id='n5683' href='#n5683'>5683</a>
<a id='n5684' href='#n5684'>5684</a>
<a id='n5685' href='#n5685'>5685</a>
<a id='n5686' href='#n5686'>5686</a>
<a id='n5687' href='#n5687'>5687</a>
<a id='n5688' href='#n5688'>5688</a>
<a id='n5689' href='#n5689'>5689</a>
<a id='n5690' href='#n5690'>5690</a>
<a id='n5691' href='#n5691'>5691</a>
<a id='n5692' href='#n5692'>5692</a>
<a id='n5693' href='#n5693'>5693</a>
<a id='n5694' href='#n5694'>5694</a>
<a id='n5695' href='#n5695'>5695</a>
<a id='n5696' href='#n5696'>5696</a>
<a id='n5697' href='#n5697'>5697</a>
<a id='n5698' href='#n5698'>5698</a>
<a id='n5699' href='#n5699'>5699</a>
<a id='n5700' href='#n5700'>5700</a>
<a id='n5701' href='#n5701'>5701</a>
<a id='n5702' href='#n5702'>5702</a>
<a id='n5703' href='#n5703'>5703</a>
<a id='n5704' href='#n5704'>5704</a>
<a id='n5705' href='#n5705'>5705</a>
<a id='n5706' href='#n5706'>5706</a>
<a id='n5707' href='#n5707'>5707</a>
<a id='n5708' href='#n5708'>5708</a>
<a id='n5709' href='#n5709'>5709</a>
<a id='n5710' href='#n5710'>5710</a>
<a id='n5711' href='#n5711'>5711</a>
<a id='n5712' href='#n5712'>5712</a>
<a id='n5713' href='#n5713'>5713</a>
<a id='n5714' href='#n5714'>5714</a>
<a id='n5715' href='#n5715'>5715</a>
<a id='n5716' href='#n5716'>5716</a>
<a id='n5717' href='#n5717'>5717</a>
<a id='n5718' href='#n5718'>5718</a>
<a id='n5719' href='#n5719'>5719</a>
<a id='n5720' href='#n5720'>5720</a>
<a id='n5721' href='#n5721'>5721</a>
<a id='n5722' href='#n5722'>5722</a>
<a id='n5723' href='#n5723'>5723</a>
<a id='n5724' href='#n5724'>5724</a>
<a id='n5725' href='#n5725'>5725</a>
<a id='n5726' href='#n5726'>5726</a>
<a id='n5727' href='#n5727'>5727</a>
<a id='n5728' href='#n5728'>5728</a>
<a id='n5729' href='#n5729'>5729</a>
<a id='n5730' href='#n5730'>5730</a>
<a id='n5731' href='#n5731'>5731</a>
<a id='n5732' href='#n5732'>5732</a>
<a id='n5733' href='#n5733'>5733</a>
<a id='n5734' href='#n5734'>5734</a>
<a id='n5735' href='#n5735'>5735</a>
<a id='n5736' href='#n5736'>5736</a>
<a id='n5737' href='#n5737'>5737</a>
<a id='n5738' href='#n5738'>5738</a>
<a id='n5739' href='#n5739'>5739</a>
<a id='n5740' href='#n5740'>5740</a>
<a id='n5741' href='#n5741'>5741</a>
<a id='n5742' href='#n5742'>5742</a>
<a id='n5743' href='#n5743'>5743</a>
<a id='n5744' href='#n5744'>5744</a>
<a id='n5745' href='#n5745'>5745</a>
<a id='n5746' href='#n5746'>5746</a>
<a id='n5747' href='#n5747'>5747</a>
<a id='n5748' href='#n5748'>5748</a>
<a id='n5749' href='#n5749'>5749</a>
<a id='n5750' href='#n5750'>5750</a>
<a id='n5751' href='#n5751'>5751</a>
<a id='n5752' href='#n5752'>5752</a>
<a id='n5753' href='#n5753'>5753</a>
<a id='n5754' href='#n5754'>5754</a>
<a id='n5755' href='#n5755'>5755</a>
<a id='n5756' href='#n5756'>5756</a>
<a id='n5757' href='#n5757'>5757</a>
<a id='n5758' href='#n5758'>5758</a>
<a id='n5759' href='#n5759'>5759</a>
<a id='n5760' href='#n5760'>5760</a>
<a id='n5761' href='#n5761'>5761</a>
<a id='n5762' href='#n5762'>5762</a>
<a id='n5763' href='#n5763'>5763</a>
<a id='n5764' href='#n5764'>5764</a>
<a id='n5765' href='#n5765'>5765</a>
<a id='n5766' href='#n5766'>5766</a>
<a id='n5767' href='#n5767'>5767</a>
<a id='n5768' href='#n5768'>5768</a>
<a id='n5769' href='#n5769'>5769</a>
<a id='n5770' href='#n5770'>5770</a>
<a id='n5771' href='#n5771'>5771</a>
<a id='n5772' href='#n5772'>5772</a>
<a id='n5773' href='#n5773'>5773</a>
<a id='n5774' href='#n5774'>5774</a>
<a id='n5775' href='#n5775'>5775</a>
<a id='n5776' href='#n5776'>5776</a>
<a id='n5777' href='#n5777'>5777</a>
<a id='n5778' href='#n5778'>5778</a>
<a id='n5779' href='#n5779'>5779</a>
<a id='n5780' href='#n5780'>5780</a>
<a id='n5781' href='#n5781'>5781</a>
<a id='n5782' href='#n5782'>5782</a>
<a id='n5783' href='#n5783'>5783</a>
<a id='n5784' href='#n5784'>5784</a>
<a id='n5785' href='#n5785'>5785</a>
<a id='n5786' href='#n5786'>5786</a>
<a id='n5787' href='#n5787'>5787</a>
<a id='n5788' href='#n5788'>5788</a>
<a id='n5789' href='#n5789'>5789</a>
<a id='n5790' href='#n5790'>5790</a>
<a id='n5791' href='#n5791'>5791</a>
<a id='n5792' href='#n5792'>5792</a>
<a id='n5793' href='#n5793'>5793</a>
<a id='n5794' href='#n5794'>5794</a>
<a id='n5795' href='#n5795'>5795</a>
<a id='n5796' href='#n5796'>5796</a>
<a id='n5797' href='#n5797'>5797</a>
<a id='n5798' href='#n5798'>5798</a>
<a id='n5799' href='#n5799'>5799</a>
<a id='n5800' href='#n5800'>5800</a>
<a id='n5801' href='#n5801'>5801</a>
<a id='n5802' href='#n5802'>5802</a>
<a id='n5803' href='#n5803'>5803</a>
<a id='n5804' href='#n5804'>5804</a>
<a id='n5805' href='#n5805'>5805</a>
<a id='n5806' href='#n5806'>5806</a>
<a id='n5807' href='#n5807'>5807</a>
<a id='n5808' href='#n5808'>5808</a>
<a id='n5809' href='#n5809'>5809</a>
<a id='n5810' href='#n5810'>5810</a>
<a id='n5811' href='#n5811'>5811</a>
<a id='n5812' href='#n5812'>5812</a>
<a id='n5813' href='#n5813'>5813</a>
<a id='n5814' href='#n5814'>5814</a>
<a id='n5815' href='#n5815'>5815</a>
<a id='n5816' href='#n5816'>5816</a>
<a id='n5817' href='#n5817'>5817</a>
<a id='n5818' href='#n5818'>5818</a>
<a id='n5819' href='#n5819'>5819</a>
<a id='n5820' href='#n5820'>5820</a>
<a id='n5821' href='#n5821'>5821</a>
<a id='n5822' href='#n5822'>5822</a>
<a id='n5823' href='#n5823'>5823</a>
<a id='n5824' href='#n5824'>5824</a>
<a id='n5825' href='#n5825'>5825</a>
<a id='n5826' href='#n5826'>5826</a>
<a id='n5827' href='#n5827'>5827</a>
<a id='n5828' href='#n5828'>5828</a>
<a id='n5829' href='#n5829'>5829</a>
<a id='n5830' href='#n5830'>5830</a>
<a id='n5831' href='#n5831'>5831</a>
<a id='n5832' href='#n5832'>5832</a>
<a id='n5833' href='#n5833'>5833</a>
<a id='n5834' href='#n5834'>5834</a>
<a id='n5835' href='#n5835'>5835</a>
<a id='n5836' href='#n5836'>5836</a>
<a id='n5837' href='#n5837'>5837</a>
<a id='n5838' href='#n5838'>5838</a>
<a id='n5839' href='#n5839'>5839</a>
<a id='n5840' href='#n5840'>5840</a>
<a id='n5841' href='#n5841'>5841</a>
<a id='n5842' href='#n5842'>5842</a>
<a id='n5843' href='#n5843'>5843</a>
<a id='n5844' href='#n5844'>5844</a>
<a id='n5845' href='#n5845'>5845</a>
<a id='n5846' href='#n5846'>5846</a>
<a id='n5847' href='#n5847'>5847</a>
<a id='n5848' href='#n5848'>5848</a>
<a id='n5849' href='#n5849'>5849</a>
<a id='n5850' href='#n5850'>5850</a>
<a id='n5851' href='#n5851'>5851</a>
<a id='n5852' href='#n5852'>5852</a>
<a id='n5853' href='#n5853'>5853</a>
<a id='n5854' href='#n5854'>5854</a>
<a id='n5855' href='#n5855'>5855</a>
<a id='n5856' href='#n5856'>5856</a>
<a id='n5857' href='#n5857'>5857</a>
<a id='n5858' href='#n5858'>5858</a>
<a id='n5859' href='#n5859'>5859</a>
<a id='n5860' href='#n5860'>5860</a>
<a id='n5861' href='#n5861'>5861</a>
<a id='n5862' href='#n5862'>5862</a>
<a id='n5863' href='#n5863'>5863</a>
<a id='n5864' href='#n5864'>5864</a>
<a id='n5865' href='#n5865'>5865</a>
<a id='n5866' href='#n5866'>5866</a>
<a id='n5867' href='#n5867'>5867</a>
<a id='n5868' href='#n5868'>5868</a>
<a id='n5869' href='#n5869'>5869</a>
<a id='n5870' href='#n5870'>5870</a>
<a id='n5871' href='#n5871'>5871</a>
<a id='n5872' href='#n5872'>5872</a>
<a id='n5873' href='#n5873'>5873</a>
<a id='n5874' href='#n5874'>5874</a>
<a id='n5875' href='#n5875'>5875</a>
<a id='n5876' href='#n5876'>5876</a>
<a id='n5877' href='#n5877'>5877</a>
<a id='n5878' href='#n5878'>5878</a>
<a id='n5879' href='#n5879'>5879</a>
<a id='n5880' href='#n5880'>5880</a>
<a id='n5881' href='#n5881'>5881</a>
<a id='n5882' href='#n5882'>5882</a>
<a id='n5883' href='#n5883'>5883</a>
<a id='n5884' href='#n5884'>5884</a>
<a id='n5885' href='#n5885'>5885</a>
<a id='n5886' href='#n5886'>5886</a>
<a id='n5887' href='#n5887'>5887</a>
<a id='n5888' href='#n5888'>5888</a>
<a id='n5889' href='#n5889'>5889</a>
<a id='n5890' href='#n5890'>5890</a>
<a id='n5891' href='#n5891'>5891</a>
<a id='n5892' href='#n5892'>5892</a>
<a id='n5893' href='#n5893'>5893</a>
<a id='n5894' href='#n5894'>5894</a>
<a id='n5895' href='#n5895'>5895</a>
<a id='n5896' href='#n5896'>5896</a>
<a id='n5897' href='#n5897'>5897</a>
<a id='n5898' href='#n5898'>5898</a>
<a id='n5899' href='#n5899'>5899</a>
<a id='n5900' href='#n5900'>5900</a>
<a id='n5901' href='#n5901'>5901</a>
<a id='n5902' href='#n5902'>5902</a>
<a id='n5903' href='#n5903'>5903</a>
<a id='n5904' href='#n5904'>5904</a>
<a id='n5905' href='#n5905'>5905</a>
<a id='n5906' href='#n5906'>5906</a>
<a id='n5907' href='#n5907'>5907</a>
<a id='n5908' href='#n5908'>5908</a>
<a id='n5909' href='#n5909'>5909</a>
<a id='n5910' href='#n5910'>5910</a>
<a id='n5911' href='#n5911'>5911</a>
<a id='n5912' href='#n5912'>5912</a>
<a id='n5913' href='#n5913'>5913</a>
<a id='n5914' href='#n5914'>5914</a>
<a id='n5915' href='#n5915'>5915</a>
<a id='n5916' href='#n5916'>5916</a>
<a id='n5917' href='#n5917'>5917</a>
<a id='n5918' href='#n5918'>5918</a>
<a id='n5919' href='#n5919'>5919</a>
<a id='n5920' href='#n5920'>5920</a>
<a id='n5921' href='#n5921'>5921</a>
<a id='n5922' href='#n5922'>5922</a>
<a id='n5923' href='#n5923'>5923</a>
<a id='n5924' href='#n5924'>5924</a>
<a id='n5925' href='#n5925'>5925</a>
<a id='n5926' href='#n5926'>5926</a>
<a id='n5927' href='#n5927'>5927</a>
<a id='n5928' href='#n5928'>5928</a>
<a id='n5929' href='#n5929'>5929</a>
<a id='n5930' href='#n5930'>5930</a>
<a id='n5931' href='#n5931'>5931</a>
<a id='n5932' href='#n5932'>5932</a>
<a id='n5933' href='#n5933'>5933</a>
<a id='n5934' href='#n5934'>5934</a>
<a id='n5935' href='#n5935'>5935</a>
<a id='n5936' href='#n5936'>5936</a>
<a id='n5937' href='#n5937'>5937</a>
<a id='n5938' href='#n5938'>5938</a>
<a id='n5939' href='#n5939'>5939</a>
<a id='n5940' href='#n5940'>5940</a>
<a id='n5941' href='#n5941'>5941</a>
<a id='n5942' href='#n5942'>5942</a>
<a id='n5943' href='#n5943'>5943</a>
<a id='n5944' href='#n5944'>5944</a>
<a id='n5945' href='#n5945'>5945</a>
<a id='n5946' href='#n5946'>5946</a>
<a id='n5947' href='#n5947'>5947</a>
<a id='n5948' href='#n5948'>5948</a>
<a id='n5949' href='#n5949'>5949</a>
<a id='n5950' href='#n5950'>5950</a>
<a id='n5951' href='#n5951'>5951</a>
<a id='n5952' href='#n5952'>5952</a>
<a id='n5953' href='#n5953'>5953</a>
<a id='n5954' href='#n5954'>5954</a>
<a id='n5955' href='#n5955'>5955</a>
<a id='n5956' href='#n5956'>5956</a>
<a id='n5957' href='#n5957'>5957</a>
<a id='n5958' href='#n5958'>5958</a>
<a id='n5959' href='#n5959'>5959</a>
<a id='n5960' href='#n5960'>5960</a>
<a id='n5961' href='#n5961'>5961</a>
<a id='n5962' href='#n5962'>5962</a>
<a id='n5963' href='#n5963'>5963</a>
<a id='n5964' href='#n5964'>5964</a>
<a id='n5965' href='#n5965'>5965</a>
<a id='n5966' href='#n5966'>5966</a>
<a id='n5967' href='#n5967'>5967</a>
<a id='n5968' href='#n5968'>5968</a>
<a id='n5969' href='#n5969'>5969</a>
<a id='n5970' href='#n5970'>5970</a>
<a id='n5971' href='#n5971'>5971</a>
<a id='n5972' href='#n5972'>5972</a>
<a id='n5973' href='#n5973'>5973</a>
<a id='n5974' href='#n5974'>5974</a>
<a id='n5975' href='#n5975'>5975</a>
<a id='n5976' href='#n5976'>5976</a>
<a id='n5977' href='#n5977'>5977</a>
<a id='n5978' href='#n5978'>5978</a>
<a id='n5979' href='#n5979'>5979</a>
<a id='n5980' href='#n5980'>5980</a>
<a id='n5981' href='#n5981'>5981</a>
<a id='n5982' href='#n5982'>5982</a>
<a id='n5983' href='#n5983'>5983</a>
<a id='n5984' href='#n5984'>5984</a>
<a id='n5985' href='#n5985'>5985</a>
<a id='n5986' href='#n5986'>5986</a>
<a id='n5987' href='#n5987'>5987</a>
<a id='n5988' href='#n5988'>5988</a>
<a id='n5989' href='#n5989'>5989</a>
<a id='n5990' href='#n5990'>5990</a>
<a id='n5991' href='#n5991'>5991</a>
<a id='n5992' href='#n5992'>5992</a>
<a id='n5993' href='#n5993'>5993</a>
<a id='n5994' href='#n5994'>5994</a>
<a id='n5995' href='#n5995'>5995</a>
<a id='n5996' href='#n5996'>5996</a>
<a id='n5997' href='#n5997'>5997</a>
<a id='n5998' href='#n5998'>5998</a>
<a id='n5999' href='#n5999'>5999</a>
<a id='n6000' href='#n6000'>6000</a>
<a id='n6001' href='#n6001'>6001</a>
<a id='n6002' href='#n6002'>6002</a>
<a id='n6003' href='#n6003'>6003</a>
<a id='n6004' href='#n6004'>6004</a>
<a id='n6005' href='#n6005'>6005</a>
<a id='n6006' href='#n6006'>6006</a>
<a id='n6007' href='#n6007'>6007</a>
<a id='n6008' href='#n6008'>6008</a>
<a id='n6009' href='#n6009'>6009</a>
<a id='n6010' href='#n6010'>6010</a>
<a id='n6011' href='#n6011'>6011</a>
<a id='n6012' href='#n6012'>6012</a>
<a id='n6013' href='#n6013'>6013</a>
<a id='n6014' href='#n6014'>6014</a>
<a id='n6015' href='#n6015'>6015</a>
<a id='n6016' href='#n6016'>6016</a>
<a id='n6017' href='#n6017'>6017</a>
<a id='n6018' href='#n6018'>6018</a>
<a id='n6019' href='#n6019'>6019</a>
<a id='n6020' href='#n6020'>6020</a>
<a id='n6021' href='#n6021'>6021</a>
<a id='n6022' href='#n6022'>6022</a>
<a id='n6023' href='#n6023'>6023</a>
<a id='n6024' href='#n6024'>6024</a>
<a id='n6025' href='#n6025'>6025</a>
<a id='n6026' href='#n6026'>6026</a>
<a id='n6027' href='#n6027'>6027</a>
<a id='n6028' href='#n6028'>6028</a>
<a id='n6029' href='#n6029'>6029</a>
<a id='n6030' href='#n6030'>6030</a>
<a id='n6031' href='#n6031'>6031</a>
<a id='n6032' href='#n6032'>6032</a>
<a id='n6033' href='#n6033'>6033</a>
<a id='n6034' href='#n6034'>6034</a>
<a id='n6035' href='#n6035'>6035</a>
<a id='n6036' href='#n6036'>6036</a>
<a id='n6037' href='#n6037'>6037</a>
<a id='n6038' href='#n6038'>6038</a>
<a id='n6039' href='#n6039'>6039</a>
<a id='n6040' href='#n6040'>6040</a>
<a id='n6041' href='#n6041'>6041</a>
<a id='n6042' href='#n6042'>6042</a>
<a id='n6043' href='#n6043'>6043</a>
<a id='n6044' href='#n6044'>6044</a>
<a id='n6045' href='#n6045'>6045</a>
<a id='n6046' href='#n6046'>6046</a>
<a id='n6047' href='#n6047'>6047</a>
<a id='n6048' href='#n6048'>6048</a>
<a id='n6049' href='#n6049'>6049</a>
<a id='n6050' href='#n6050'>6050</a>
<a id='n6051' href='#n6051'>6051</a>
<a id='n6052' href='#n6052'>6052</a>
<a id='n6053' href='#n6053'>6053</a>
<a id='n6054' href='#n6054'>6054</a>
<a id='n6055' href='#n6055'>6055</a>
<a id='n6056' href='#n6056'>6056</a>
<a id='n6057' href='#n6057'>6057</a>
<a id='n6058' href='#n6058'>6058</a>
<a id='n6059' href='#n6059'>6059</a>
<a id='n6060' href='#n6060'>6060</a>
<a id='n6061' href='#n6061'>6061</a>
<a id='n6062' href='#n6062'>6062</a>
<a id='n6063' href='#n6063'>6063</a>
<a id='n6064' href='#n6064'>6064</a>
<a id='n6065' href='#n6065'>6065</a>
<a id='n6066' href='#n6066'>6066</a>
<a id='n6067' href='#n6067'>6067</a>
<a id='n6068' href='#n6068'>6068</a>
<a id='n6069' href='#n6069'>6069</a>
<a id='n6070' href='#n6070'>6070</a>
<a id='n6071' href='#n6071'>6071</a>
<a id='n6072' href='#n6072'>6072</a>
<a id='n6073' href='#n6073'>6073</a>
<a id='n6074' href='#n6074'>6074</a>
<a id='n6075' href='#n6075'>6075</a>
<a id='n6076' href='#n6076'>6076</a>
<a id='n6077' href='#n6077'>6077</a>
<a id='n6078' href='#n6078'>6078</a>
<a id='n6079' href='#n6079'>6079</a>
<a id='n6080' href='#n6080'>6080</a>
<a id='n6081' href='#n6081'>6081</a>
<a id='n6082' href='#n6082'>6082</a>
<a id='n6083' href='#n6083'>6083</a>
<a id='n6084' href='#n6084'>6084</a>
<a id='n6085' href='#n6085'>6085</a>
<a id='n6086' href='#n6086'>6086</a>
<a id='n6087' href='#n6087'>6087</a>
<a id='n6088' href='#n6088'>6088</a>
<a id='n6089' href='#n6089'>6089</a>
<a id='n6090' href='#n6090'>6090</a>
<a id='n6091' href='#n6091'>6091</a>
<a id='n6092' href='#n6092'>6092</a>
<a id='n6093' href='#n6093'>6093</a>
<a id='n6094' href='#n6094'>6094</a>
<a id='n6095' href='#n6095'>6095</a>
<a id='n6096' href='#n6096'>6096</a>
<a id='n6097' href='#n6097'>6097</a>
<a id='n6098' href='#n6098'>6098</a>
<a id='n6099' href='#n6099'>6099</a>
<a id='n6100' href='#n6100'>6100</a>
<a id='n6101' href='#n6101'>6101</a>
<a id='n6102' href='#n6102'>6102</a>
<a id='n6103' href='#n6103'>6103</a>
<a id='n6104' href='#n6104'>6104</a>
<a id='n6105' href='#n6105'>6105</a>
<a id='n6106' href='#n6106'>6106</a>
<a id='n6107' href='#n6107'>6107</a>
<a id='n6108' href='#n6108'>6108</a>
<a id='n6109' href='#n6109'>6109</a>
<a id='n6110' href='#n6110'>6110</a>
<a id='n6111' href='#n6111'>6111</a>
<a id='n6112' href='#n6112'>6112</a>
<a id='n6113' href='#n6113'>6113</a>
<a id='n6114' href='#n6114'>6114</a>
<a id='n6115' href='#n6115'>6115</a>
<a id='n6116' href='#n6116'>6116</a>
<a id='n6117' href='#n6117'>6117</a>
<a id='n6118' href='#n6118'>6118</a>
<a id='n6119' href='#n6119'>6119</a>
<a id='n6120' href='#n6120'>6120</a>
<a id='n6121' href='#n6121'>6121</a>
<a id='n6122' href='#n6122'>6122</a>
<a id='n6123' href='#n6123'>6123</a>
<a id='n6124' href='#n6124'>6124</a>
<a id='n6125' href='#n6125'>6125</a>
<a id='n6126' href='#n6126'>6126</a>
<a id='n6127' href='#n6127'>6127</a>
<a id='n6128' href='#n6128'>6128</a>
<a id='n6129' href='#n6129'>6129</a>
<a id='n6130' href='#n6130'>6130</a>
<a id='n6131' href='#n6131'>6131</a>
<a id='n6132' href='#n6132'>6132</a>
<a id='n6133' href='#n6133'>6133</a>
<a id='n6134' href='#n6134'>6134</a>
<a id='n6135' href='#n6135'>6135</a>
<a id='n6136' href='#n6136'>6136</a>
<a id='n6137' href='#n6137'>6137</a>
<a id='n6138' href='#n6138'>6138</a>
<a id='n6139' href='#n6139'>6139</a>
<a id='n6140' href='#n6140'>6140</a>
<a id='n6141' href='#n6141'>6141</a>
<a id='n6142' href='#n6142'>6142</a>
<a id='n6143' href='#n6143'>6143</a>
<a id='n6144' href='#n6144'>6144</a>
<a id='n6145' href='#n6145'>6145</a>
<a id='n6146' href='#n6146'>6146</a>
<a id='n6147' href='#n6147'>6147</a>
<a id='n6148' href='#n6148'>6148</a>
<a id='n6149' href='#n6149'>6149</a>
<a id='n6150' href='#n6150'>6150</a>
<a id='n6151' href='#n6151'>6151</a>
<a id='n6152' href='#n6152'>6152</a>
<a id='n6153' href='#n6153'>6153</a>
<a id='n6154' href='#n6154'>6154</a>
<a id='n6155' href='#n6155'>6155</a>
<a id='n6156' href='#n6156'>6156</a>
<a id='n6157' href='#n6157'>6157</a>
<a id='n6158' href='#n6158'>6158</a>
<a id='n6159' href='#n6159'>6159</a>
<a id='n6160' href='#n6160'>6160</a>
<a id='n6161' href='#n6161'>6161</a>
<a id='n6162' href='#n6162'>6162</a>
<a id='n6163' href='#n6163'>6163</a>
<a id='n6164' href='#n6164'>6164</a>
<a id='n6165' href='#n6165'>6165</a>
<a id='n6166' href='#n6166'>6166</a>
<a id='n6167' href='#n6167'>6167</a>
<a id='n6168' href='#n6168'>6168</a>
<a id='n6169' href='#n6169'>6169</a>
<a id='n6170' href='#n6170'>6170</a>
<a id='n6171' href='#n6171'>6171</a>
<a id='n6172' href='#n6172'>6172</a>
<a id='n6173' href='#n6173'>6173</a>
<a id='n6174' href='#n6174'>6174</a>
<a id='n6175' href='#n6175'>6175</a>
<a id='n6176' href='#n6176'>6176</a>
<a id='n6177' href='#n6177'>6177</a>
<a id='n6178' href='#n6178'>6178</a>
<a id='n6179' href='#n6179'>6179</a>
<a id='n6180' href='#n6180'>6180</a>
<a id='n6181' href='#n6181'>6181</a>
<a id='n6182' href='#n6182'>6182</a>
<a id='n6183' href='#n6183'>6183</a>
<a id='n6184' href='#n6184'>6184</a>
<a id='n6185' href='#n6185'>6185</a>
<a id='n6186' href='#n6186'>6186</a>
<a id='n6187' href='#n6187'>6187</a>
<a id='n6188' href='#n6188'>6188</a>
<a id='n6189' href='#n6189'>6189</a>
<a id='n6190' href='#n6190'>6190</a>
<a id='n6191' href='#n6191'>6191</a>
<a id='n6192' href='#n6192'>6192</a>
<a id='n6193' href='#n6193'>6193</a>
<a id='n6194' href='#n6194'>6194</a>
<a id='n6195' href='#n6195'>6195</a>
<a id='n6196' href='#n6196'>6196</a>
<a id='n6197' href='#n6197'>6197</a>
<a id='n6198' href='#n6198'>6198</a>
<a id='n6199' href='#n6199'>6199</a>
<a id='n6200' href='#n6200'>6200</a>
<a id='n6201' href='#n6201'>6201</a>
<a id='n6202' href='#n6202'>6202</a>
<a id='n6203' href='#n6203'>6203</a>
<a id='n6204' href='#n6204'>6204</a>
<a id='n6205' href='#n6205'>6205</a>
<a id='n6206' href='#n6206'>6206</a>
<a id='n6207' href='#n6207'>6207</a>
<a id='n6208' href='#n6208'>6208</a>
<a id='n6209' href='#n6209'>6209</a>
<a id='n6210' href='#n6210'>6210</a>
<a id='n6211' href='#n6211'>6211</a>
<a id='n6212' href='#n6212'>6212</a>
<a id='n6213' href='#n6213'>6213</a>
<a id='n6214' href='#n6214'>6214</a>
<a id='n6215' href='#n6215'>6215</a>
<a id='n6216' href='#n6216'>6216</a>
<a id='n6217' href='#n6217'>6217</a>
<a id='n6218' href='#n6218'>6218</a>
<a id='n6219' href='#n6219'>6219</a>
<a id='n6220' href='#n6220'>6220</a>
<a id='n6221' href='#n6221'>6221</a>
<a id='n6222' href='#n6222'>6222</a>
<a id='n6223' href='#n6223'>6223</a>
<a id='n6224' href='#n6224'>6224</a>
<a id='n6225' href='#n6225'>6225</a>
<a id='n6226' href='#n6226'>6226</a>
<a id='n6227' href='#n6227'>6227</a>
<a id='n6228' href='#n6228'>6228</a>
<a id='n6229' href='#n6229'>6229</a>
<a id='n6230' href='#n6230'>6230</a>
<a id='n6231' href='#n6231'>6231</a>
<a id='n6232' href='#n6232'>6232</a>
<a id='n6233' href='#n6233'>6233</a>
<a id='n6234' href='#n6234'>6234</a>
<a id='n6235' href='#n6235'>6235</a>
<a id='n6236' href='#n6236'>6236</a>
<a id='n6237' href='#n6237'>6237</a>
<a id='n6238' href='#n6238'>6238</a>
<a id='n6239' href='#n6239'>6239</a>
<a id='n6240' href='#n6240'>6240</a>
<a id='n6241' href='#n6241'>6241</a>
<a id='n6242' href='#n6242'>6242</a>
<a id='n6243' href='#n6243'>6243</a>
<a id='n6244' href='#n6244'>6244</a>
<a id='n6245' href='#n6245'>6245</a>
<a id='n6246' href='#n6246'>6246</a>
<a id='n6247' href='#n6247'>6247</a>
<a id='n6248' href='#n6248'>6248</a>
<a id='n6249' href='#n6249'>6249</a>
<a id='n6250' href='#n6250'>6250</a>
<a id='n6251' href='#n6251'>6251</a>
<a id='n6252' href='#n6252'>6252</a>
<a id='n6253' href='#n6253'>6253</a>
<a id='n6254' href='#n6254'>6254</a>
<a id='n6255' href='#n6255'>6255</a>
<a id='n6256' href='#n6256'>6256</a>
<a id='n6257' href='#n6257'>6257</a>
<a id='n6258' href='#n6258'>6258</a>
<a id='n6259' href='#n6259'>6259</a>
<a id='n6260' href='#n6260'>6260</a>
<a id='n6261' href='#n6261'>6261</a>
<a id='n6262' href='#n6262'>6262</a>
<a id='n6263' href='#n6263'>6263</a>
<a id='n6264' href='#n6264'>6264</a>
<a id='n6265' href='#n6265'>6265</a>
<a id='n6266' href='#n6266'>6266</a>
<a id='n6267' href='#n6267'>6267</a>
<a id='n6268' href='#n6268'>6268</a>
<a id='n6269' href='#n6269'>6269</a>
<a id='n6270' href='#n6270'>6270</a>
<a id='n6271' href='#n6271'>6271</a>
<a id='n6272' href='#n6272'>6272</a>
<a id='n6273' href='#n6273'>6273</a>
<a id='n6274' href='#n6274'>6274</a>
<a id='n6275' href='#n6275'>6275</a>
<a id='n6276' href='#n6276'>6276</a>
<a id='n6277' href='#n6277'>6277</a>
<a id='n6278' href='#n6278'>6278</a>
<a id='n6279' href='#n6279'>6279</a>
<a id='n6280' href='#n6280'>6280</a>
<a id='n6281' href='#n6281'>6281</a>
<a id='n6282' href='#n6282'>6282</a>
<a id='n6283' href='#n6283'>6283</a>
<a id='n6284' href='#n6284'>6284</a>
<a id='n6285' href='#n6285'>6285</a>
<a id='n6286' href='#n6286'>6286</a>
<a id='n6287' href='#n6287'>6287</a>
<a id='n6288' href='#n6288'>6288</a>
<a id='n6289' href='#n6289'>6289</a>
<a id='n6290' href='#n6290'>6290</a>
<a id='n6291' href='#n6291'>6291</a>
<a id='n6292' href='#n6292'>6292</a>
<a id='n6293' href='#n6293'>6293</a>
<a id='n6294' href='#n6294'>6294</a>
<a id='n6295' href='#n6295'>6295</a>
<a id='n6296' href='#n6296'>6296</a>
<a id='n6297' href='#n6297'>6297</a>
<a id='n6298' href='#n6298'>6298</a>
<a id='n6299' href='#n6299'>6299</a>
<a id='n6300' href='#n6300'>6300</a>
<a id='n6301' href='#n6301'>6301</a>
<a id='n6302' href='#n6302'>6302</a>
<a id='n6303' href='#n6303'>6303</a>
<a id='n6304' href='#n6304'>6304</a>
<a id='n6305' href='#n6305'>6305</a>
<a id='n6306' href='#n6306'>6306</a>
<a id='n6307' href='#n6307'>6307</a>
<a id='n6308' href='#n6308'>6308</a>
<a id='n6309' href='#n6309'>6309</a>
<a id='n6310' href='#n6310'>6310</a>
<a id='n6311' href='#n6311'>6311</a>
<a id='n6312' href='#n6312'>6312</a>
<a id='n6313' href='#n6313'>6313</a>
<a id='n6314' href='#n6314'>6314</a>
<a id='n6315' href='#n6315'>6315</a>
<a id='n6316' href='#n6316'>6316</a>
<a id='n6317' href='#n6317'>6317</a>
<a id='n6318' href='#n6318'>6318</a>
<a id='n6319' href='#n6319'>6319</a>
<a id='n6320' href='#n6320'>6320</a>
<a id='n6321' href='#n6321'>6321</a>
<a id='n6322' href='#n6322'>6322</a>
<a id='n6323' href='#n6323'>6323</a>
<a id='n6324' href='#n6324'>6324</a>
<a id='n6325' href='#n6325'>6325</a>
<a id='n6326' href='#n6326'>6326</a>
<a id='n6327' href='#n6327'>6327</a>
<a id='n6328' href='#n6328'>6328</a>
<a id='n6329' href='#n6329'>6329</a>
<a id='n6330' href='#n6330'>6330</a>
<a id='n6331' href='#n6331'>6331</a>
<a id='n6332' href='#n6332'>6332</a>
<a id='n6333' href='#n6333'>6333</a>
<a id='n6334' href='#n6334'>6334</a>
<a id='n6335' href='#n6335'>6335</a>
<a id='n6336' href='#n6336'>6336</a>
<a id='n6337' href='#n6337'>6337</a>
<a id='n6338' href='#n6338'>6338</a>
<a id='n6339' href='#n6339'>6339</a>
<a id='n6340' href='#n6340'>6340</a>
<a id='n6341' href='#n6341'>6341</a>
<a id='n6342' href='#n6342'>6342</a>
<a id='n6343' href='#n6343'>6343</a>
<a id='n6344' href='#n6344'>6344</a>
<a id='n6345' href='#n6345'>6345</a>
<a id='n6346' href='#n6346'>6346</a>
<a id='n6347' href='#n6347'>6347</a>
<a id='n6348' href='#n6348'>6348</a>
<a id='n6349' href='#n6349'>6349</a>
<a id='n6350' href='#n6350'>6350</a>
<a id='n6351' href='#n6351'>6351</a>
<a id='n6352' href='#n6352'>6352</a>
<a id='n6353' href='#n6353'>6353</a>
<a id='n6354' href='#n6354'>6354</a>
<a id='n6355' href='#n6355'>6355</a>
<a id='n6356' href='#n6356'>6356</a>
<a id='n6357' href='#n6357'>6357</a>
<a id='n6358' href='#n6358'>6358</a>
<a id='n6359' href='#n6359'>6359</a>
<a id='n6360' href='#n6360'>6360</a>
<a id='n6361' href='#n6361'>6361</a>
<a id='n6362' href='#n6362'>6362</a>
<a id='n6363' href='#n6363'>6363</a>
<a id='n6364' href='#n6364'>6364</a>
<a id='n6365' href='#n6365'>6365</a>
<a id='n6366' href='#n6366'>6366</a>
<a id='n6367' href='#n6367'>6367</a>
<a id='n6368' href='#n6368'>6368</a>
<a id='n6369' href='#n6369'>6369</a>
<a id='n6370' href='#n6370'>6370</a>
<a id='n6371' href='#n6371'>6371</a>
<a id='n6372' href='#n6372'>6372</a>
<a id='n6373' href='#n6373'>6373</a>
<a id='n6374' href='#n6374'>6374</a>
<a id='n6375' href='#n6375'>6375</a>
<a id='n6376' href='#n6376'>6376</a>
<a id='n6377' href='#n6377'>6377</a>
<a id='n6378' href='#n6378'>6378</a>
<a id='n6379' href='#n6379'>6379</a>
<a id='n6380' href='#n6380'>6380</a>
<a id='n6381' href='#n6381'>6381</a>
<a id='n6382' href='#n6382'>6382</a>
<a id='n6383' href='#n6383'>6383</a>
<a id='n6384' href='#n6384'>6384</a>
<a id='n6385' href='#n6385'>6385</a>
<a id='n6386' href='#n6386'>6386</a>
<a id='n6387' href='#n6387'>6387</a>
<a id='n6388' href='#n6388'>6388</a>
<a id='n6389' href='#n6389'>6389</a>
<a id='n6390' href='#n6390'>6390</a>
<a id='n6391' href='#n6391'>6391</a>
<a id='n6392' href='#n6392'>6392</a>
<a id='n6393' href='#n6393'>6393</a>
<a id='n6394' href='#n6394'>6394</a>
<a id='n6395' href='#n6395'>6395</a>
<a id='n6396' href='#n6396'>6396</a>
<a id='n6397' href='#n6397'>6397</a>
<a id='n6398' href='#n6398'>6398</a>
<a id='n6399' href='#n6399'>6399</a>
<a id='n6400' href='#n6400'>6400</a>
<a id='n6401' href='#n6401'>6401</a>
<a id='n6402' href='#n6402'>6402</a>
<a id='n6403' href='#n6403'>6403</a>
<a id='n6404' href='#n6404'>6404</a>
<a id='n6405' href='#n6405'>6405</a>
<a id='n6406' href='#n6406'>6406</a>
<a id='n6407' href='#n6407'>6407</a>
<a id='n6408' href='#n6408'>6408</a>
<a id='n6409' href='#n6409'>6409</a>
<a id='n6410' href='#n6410'>6410</a>
<a id='n6411' href='#n6411'>6411</a>
<a id='n6412' href='#n6412'>6412</a>
<a id='n6413' href='#n6413'>6413</a>
<a id='n6414' href='#n6414'>6414</a>
<a id='n6415' href='#n6415'>6415</a>
<a id='n6416' href='#n6416'>6416</a>
<a id='n6417' href='#n6417'>6417</a>
<a id='n6418' href='#n6418'>6418</a>
<a id='n6419' href='#n6419'>6419</a>
<a id='n6420' href='#n6420'>6420</a>
<a id='n6421' href='#n6421'>6421</a>
<a id='n6422' href='#n6422'>6422</a>
<a id='n6423' href='#n6423'>6423</a>
<a id='n6424' href='#n6424'>6424</a>
<a id='n6425' href='#n6425'>6425</a>
<a id='n6426' href='#n6426'>6426</a>
<a id='n6427' href='#n6427'>6427</a>
<a id='n6428' href='#n6428'>6428</a>
<a id='n6429' href='#n6429'>6429</a>
<a id='n6430' href='#n6430'>6430</a>
<a id='n6431' href='#n6431'>6431</a>
<a id='n6432' href='#n6432'>6432</a>
<a id='n6433' href='#n6433'>6433</a>
<a id='n6434' href='#n6434'>6434</a>
<a id='n6435' href='#n6435'>6435</a>
<a id='n6436' href='#n6436'>6436</a>
<a id='n6437' href='#n6437'>6437</a>
<a id='n6438' href='#n6438'>6438</a>
<a id='n6439' href='#n6439'>6439</a>
<a id='n6440' href='#n6440'>6440</a>
<a id='n6441' href='#n6441'>6441</a>
<a id='n6442' href='#n6442'>6442</a>
<a id='n6443' href='#n6443'>6443</a>
<a id='n6444' href='#n6444'>6444</a>
<a id='n6445' href='#n6445'>6445</a>
<a id='n6446' href='#n6446'>6446</a>
<a id='n6447' href='#n6447'>6447</a>
<a id='n6448' href='#n6448'>6448</a>
<a id='n6449' href='#n6449'>6449</a>
<a id='n6450' href='#n6450'>6450</a>
<a id='n6451' href='#n6451'>6451</a>
<a id='n6452' href='#n6452'>6452</a>
<a id='n6453' href='#n6453'>6453</a>
<a id='n6454' href='#n6454'>6454</a>
<a id='n6455' href='#n6455'>6455</a>
<a id='n6456' href='#n6456'>6456</a>
<a id='n6457' href='#n6457'>6457</a>
<a id='n6458' href='#n6458'>6458</a>
<a id='n6459' href='#n6459'>6459</a>
<a id='n6460' href='#n6460'>6460</a>
<a id='n6461' href='#n6461'>6461</a>
<a id='n6462' href='#n6462'>6462</a>
<a id='n6463' href='#n6463'>6463</a>
<a id='n6464' href='#n6464'>6464</a>
<a id='n6465' href='#n6465'>6465</a>
<a id='n6466' href='#n6466'>6466</a>
<a id='n6467' href='#n6467'>6467</a>
<a id='n6468' href='#n6468'>6468</a>
<a id='n6469' href='#n6469'>6469</a>
<a id='n6470' href='#n6470'>6470</a>
<a id='n6471' href='#n6471'>6471</a>
<a id='n6472' href='#n6472'>6472</a>
<a id='n6473' href='#n6473'>6473</a>
<a id='n6474' href='#n6474'>6474</a>
<a id='n6475' href='#n6475'>6475</a>
<a id='n6476' href='#n6476'>6476</a>
<a id='n6477' href='#n6477'>6477</a>
<a id='n6478' href='#n6478'>6478</a>
<a id='n6479' href='#n6479'>6479</a>
<a id='n6480' href='#n6480'>6480</a>
<a id='n6481' href='#n6481'>6481</a>
<a id='n6482' href='#n6482'>6482</a>
<a id='n6483' href='#n6483'>6483</a>
<a id='n6484' href='#n6484'>6484</a>
<a id='n6485' href='#n6485'>6485</a>
<a id='n6486' href='#n6486'>6486</a>
<a id='n6487' href='#n6487'>6487</a>
<a id='n6488' href='#n6488'>6488</a>
<a id='n6489' href='#n6489'>6489</a>
<a id='n6490' href='#n6490'>6490</a>
<a id='n6491' href='#n6491'>6491</a>
<a id='n6492' href='#n6492'>6492</a>
<a id='n6493' href='#n6493'>6493</a>
<a id='n6494' href='#n6494'>6494</a>
<a id='n6495' href='#n6495'>6495</a>
<a id='n6496' href='#n6496'>6496</a>
<a id='n6497' href='#n6497'>6497</a>
<a id='n6498' href='#n6498'>6498</a>
<a id='n6499' href='#n6499'>6499</a>
<a id='n6500' href='#n6500'>6500</a>
<a id='n6501' href='#n6501'>6501</a>
<a id='n6502' href='#n6502'>6502</a>
<a id='n6503' href='#n6503'>6503</a>
<a id='n6504' href='#n6504'>6504</a>
<a id='n6505' href='#n6505'>6505</a>
<a id='n6506' href='#n6506'>6506</a>
<a id='n6507' href='#n6507'>6507</a>
<a id='n6508' href='#n6508'>6508</a>
<a id='n6509' href='#n6509'>6509</a>
<a id='n6510' href='#n6510'>6510</a>
<a id='n6511' href='#n6511'>6511</a>
<a id='n6512' href='#n6512'>6512</a>
<a id='n6513' href='#n6513'>6513</a>
<a id='n6514' href='#n6514'>6514</a>
<a id='n6515' href='#n6515'>6515</a>
<a id='n6516' href='#n6516'>6516</a>
<a id='n6517' href='#n6517'>6517</a>
<a id='n6518' href='#n6518'>6518</a>
<a id='n6519' href='#n6519'>6519</a>
<a id='n6520' href='#n6520'>6520</a>
<a id='n6521' href='#n6521'>6521</a>
<a id='n6522' href='#n6522'>6522</a>
<a id='n6523' href='#n6523'>6523</a>
<a id='n6524' href='#n6524'>6524</a>
<a id='n6525' href='#n6525'>6525</a>
<a id='n6526' href='#n6526'>6526</a>
<a id='n6527' href='#n6527'>6527</a>
<a id='n6528' href='#n6528'>6528</a>
<a id='n6529' href='#n6529'>6529</a>
<a id='n6530' href='#n6530'>6530</a>
<a id='n6531' href='#n6531'>6531</a>
<a id='n6532' href='#n6532'>6532</a>
<a id='n6533' href='#n6533'>6533</a>
<a id='n6534' href='#n6534'>6534</a>
<a id='n6535' href='#n6535'>6535</a>
<a id='n6536' href='#n6536'>6536</a>
<a id='n6537' href='#n6537'>6537</a>
<a id='n6538' href='#n6538'>6538</a>
<a id='n6539' href='#n6539'>6539</a>
<a id='n6540' href='#n6540'>6540</a>
<a id='n6541' href='#n6541'>6541</a>
<a id='n6542' href='#n6542'>6542</a>
<a id='n6543' href='#n6543'>6543</a>
<a id='n6544' href='#n6544'>6544</a>
<a id='n6545' href='#n6545'>6545</a>
<a id='n6546' href='#n6546'>6546</a>
<a id='n6547' href='#n6547'>6547</a>
<a id='n6548' href='#n6548'>6548</a>
<a id='n6549' href='#n6549'>6549</a>
<a id='n6550' href='#n6550'>6550</a>
<a id='n6551' href='#n6551'>6551</a>
<a id='n6552' href='#n6552'>6552</a>
<a id='n6553' href='#n6553'>6553</a>
<a id='n6554' href='#n6554'>6554</a>
<a id='n6555' href='#n6555'>6555</a>
<a id='n6556' href='#n6556'>6556</a>
<a id='n6557' href='#n6557'>6557</a>
<a id='n6558' href='#n6558'>6558</a>
<a id='n6559' href='#n6559'>6559</a>
<a id='n6560' href='#n6560'>6560</a>
<a id='n6561' href='#n6561'>6561</a>
<a id='n6562' href='#n6562'>6562</a>
<a id='n6563' href='#n6563'>6563</a>
<a id='n6564' href='#n6564'>6564</a>
<a id='n6565' href='#n6565'>6565</a>
<a id='n6566' href='#n6566'>6566</a>
<a id='n6567' href='#n6567'>6567</a>
<a id='n6568' href='#n6568'>6568</a>
<a id='n6569' href='#n6569'>6569</a>
<a id='n6570' href='#n6570'>6570</a>
<a id='n6571' href='#n6571'>6571</a>
<a id='n6572' href='#n6572'>6572</a>
<a id='n6573' href='#n6573'>6573</a>
<a id='n6574' href='#n6574'>6574</a>
<a id='n6575' href='#n6575'>6575</a>
<a id='n6576' href='#n6576'>6576</a>
<a id='n6577' href='#n6577'>6577</a>
<a id='n6578' href='#n6578'>6578</a>
<a id='n6579' href='#n6579'>6579</a>
<a id='n6580' href='#n6580'>6580</a>
<a id='n6581' href='#n6581'>6581</a>
<a id='n6582' href='#n6582'>6582</a>
<a id='n6583' href='#n6583'>6583</a>
<a id='n6584' href='#n6584'>6584</a>
<a id='n6585' href='#n6585'>6585</a>
<a id='n6586' href='#n6586'>6586</a>
<a id='n6587' href='#n6587'>6587</a>
<a id='n6588' href='#n6588'>6588</a>
<a id='n6589' href='#n6589'>6589</a>
<a id='n6590' href='#n6590'>6590</a>
<a id='n6591' href='#n6591'>6591</a>
<a id='n6592' href='#n6592'>6592</a>
<a id='n6593' href='#n6593'>6593</a>
<a id='n6594' href='#n6594'>6594</a>
<a id='n6595' href='#n6595'>6595</a>
<a id='n6596' href='#n6596'>6596</a>
<a id='n6597' href='#n6597'>6597</a>
<a id='n6598' href='#n6598'>6598</a>
<a id='n6599' href='#n6599'>6599</a>
<a id='n6600' href='#n6600'>6600</a>
<a id='n6601' href='#n6601'>6601</a>
<a id='n6602' href='#n6602'>6602</a>
<a id='n6603' href='#n6603'>6603</a>
<a id='n6604' href='#n6604'>6604</a>
<a id='n6605' href='#n6605'>6605</a>
<a id='n6606' href='#n6606'>6606</a>
<a id='n6607' href='#n6607'>6607</a>
<a id='n6608' href='#n6608'>6608</a>
<a id='n6609' href='#n6609'>6609</a>
<a id='n6610' href='#n6610'>6610</a>
<a id='n6611' href='#n6611'>6611</a>
<a id='n6612' href='#n6612'>6612</a>
<a id='n6613' href='#n6613'>6613</a>
<a id='n6614' href='#n6614'>6614</a>
<a id='n6615' href='#n6615'>6615</a>
<a id='n6616' href='#n6616'>6616</a>
<a id='n6617' href='#n6617'>6617</a>
<a id='n6618' href='#n6618'>6618</a>
<a id='n6619' href='#n6619'>6619</a>
<a id='n6620' href='#n6620'>6620</a>
<a id='n6621' href='#n6621'>6621</a>
<a id='n6622' href='#n6622'>6622</a>
<a id='n6623' href='#n6623'>6623</a>
<a id='n6624' href='#n6624'>6624</a>
<a id='n6625' href='#n6625'>6625</a>
<a id='n6626' href='#n6626'>6626</a>
<a id='n6627' href='#n6627'>6627</a>
<a id='n6628' href='#n6628'>6628</a>
<a id='n6629' href='#n6629'>6629</a>
<a id='n6630' href='#n6630'>6630</a>
<a id='n6631' href='#n6631'>6631</a>
<a id='n6632' href='#n6632'>6632</a>
<a id='n6633' href='#n6633'>6633</a>
<a id='n6634' href='#n6634'>6634</a>
<a id='n6635' href='#n6635'>6635</a>
<a id='n6636' href='#n6636'>6636</a>
<a id='n6637' href='#n6637'>6637</a>
<a id='n6638' href='#n6638'>6638</a>
<a id='n6639' href='#n6639'>6639</a>
<a id='n6640' href='#n6640'>6640</a>
<a id='n6641' href='#n6641'>6641</a>
<a id='n6642' href='#n6642'>6642</a>
<a id='n6643' href='#n6643'>6643</a>
<a id='n6644' href='#n6644'>6644</a>
<a id='n6645' href='#n6645'>6645</a>
<a id='n6646' href='#n6646'>6646</a>
<a id='n6647' href='#n6647'>6647</a>
<a id='n6648' href='#n6648'>6648</a>
<a id='n6649' href='#n6649'>6649</a>
<a id='n6650' href='#n6650'>6650</a>
<a id='n6651' href='#n6651'>6651</a>
<a id='n6652' href='#n6652'>6652</a>
<a id='n6653' href='#n6653'>6653</a>
<a id='n6654' href='#n6654'>6654</a>
<a id='n6655' href='#n6655'>6655</a>
<a id='n6656' href='#n6656'>6656</a>
<a id='n6657' href='#n6657'>6657</a>
<a id='n6658' href='#n6658'>6658</a>
<a id='n6659' href='#n6659'>6659</a>
<a id='n6660' href='#n6660'>6660</a>
<a id='n6661' href='#n6661'>6661</a>
<a id='n6662' href='#n6662'>6662</a>
<a id='n6663' href='#n6663'>6663</a>
<a id='n6664' href='#n6664'>6664</a>
<a id='n6665' href='#n6665'>6665</a>
<a id='n6666' href='#n6666'>6666</a>
<a id='n6667' href='#n6667'>6667</a>
<a id='n6668' href='#n6668'>6668</a>
<a id='n6669' href='#n6669'>6669</a>
<a id='n6670' href='#n6670'>6670</a>
<a id='n6671' href='#n6671'>6671</a>
<a id='n6672' href='#n6672'>6672</a>
<a id='n6673' href='#n6673'>6673</a>
<a id='n6674' href='#n6674'>6674</a>
<a id='n6675' href='#n6675'>6675</a>
<a id='n6676' href='#n6676'>6676</a>
<a id='n6677' href='#n6677'>6677</a>
<a id='n6678' href='#n6678'>6678</a>
<a id='n6679' href='#n6679'>6679</a>
<a id='n6680' href='#n6680'>6680</a>
<a id='n6681' href='#n6681'>6681</a>
<a id='n6682' href='#n6682'>6682</a>
<a id='n6683' href='#n6683'>6683</a>
<a id='n6684' href='#n6684'>6684</a>
<a id='n6685' href='#n6685'>6685</a>
<a id='n6686' href='#n6686'>6686</a>
<a id='n6687' href='#n6687'>6687</a>
<a id='n6688' href='#n6688'>6688</a>
<a id='n6689' href='#n6689'>6689</a>
<a id='n6690' href='#n6690'>6690</a>
<a id='n6691' href='#n6691'>6691</a>
<a id='n6692' href='#n6692'>6692</a>
<a id='n6693' href='#n6693'>6693</a>
<a id='n6694' href='#n6694'>6694</a>
<a id='n6695' href='#n6695'>6695</a>
<a id='n6696' href='#n6696'>6696</a>
<a id='n6697' href='#n6697'>6697</a>
<a id='n6698' href='#n6698'>6698</a>
<a id='n6699' href='#n6699'>6699</a>
<a id='n6700' href='#n6700'>6700</a>
<a id='n6701' href='#n6701'>6701</a>
<a id='n6702' href='#n6702'>6702</a>
<a id='n6703' href='#n6703'>6703</a>
<a id='n6704' href='#n6704'>6704</a>
<a id='n6705' href='#n6705'>6705</a>
<a id='n6706' href='#n6706'>6706</a>
<a id='n6707' href='#n6707'>6707</a>
<a id='n6708' href='#n6708'>6708</a>
<a id='n6709' href='#n6709'>6709</a>
<a id='n6710' href='#n6710'>6710</a>
<a id='n6711' href='#n6711'>6711</a>
<a id='n6712' href='#n6712'>6712</a>
<a id='n6713' href='#n6713'>6713</a>
<a id='n6714' href='#n6714'>6714</a>
<a id='n6715' href='#n6715'>6715</a>
<a id='n6716' href='#n6716'>6716</a>
<a id='n6717' href='#n6717'>6717</a>
<a id='n6718' href='#n6718'>6718</a>
<a id='n6719' href='#n6719'>6719</a>
<a id='n6720' href='#n6720'>6720</a>
<a id='n6721' href='#n6721'>6721</a>
<a id='n6722' href='#n6722'>6722</a>
<a id='n6723' href='#n6723'>6723</a>
<a id='n6724' href='#n6724'>6724</a>
<a id='n6725' href='#n6725'>6725</a>
<a id='n6726' href='#n6726'>6726</a>
<a id='n6727' href='#n6727'>6727</a>
<a id='n6728' href='#n6728'>6728</a>
<a id='n6729' href='#n6729'>6729</a>
<a id='n6730' href='#n6730'>6730</a>
<a id='n6731' href='#n6731'>6731</a>
<a id='n6732' href='#n6732'>6732</a>
<a id='n6733' href='#n6733'>6733</a>
<a id='n6734' href='#n6734'>6734</a>
<a id='n6735' href='#n6735'>6735</a>
<a id='n6736' href='#n6736'>6736</a>
<a id='n6737' href='#n6737'>6737</a>
<a id='n6738' href='#n6738'>6738</a>
<a id='n6739' href='#n6739'>6739</a>
<a id='n6740' href='#n6740'>6740</a>
<a id='n6741' href='#n6741'>6741</a>
<a id='n6742' href='#n6742'>6742</a>
<a id='n6743' href='#n6743'>6743</a>
<a id='n6744' href='#n6744'>6744</a>
<a id='n6745' href='#n6745'>6745</a>
<a id='n6746' href='#n6746'>6746</a>
<a id='n6747' href='#n6747'>6747</a>
<a id='n6748' href='#n6748'>6748</a>
<a id='n6749' href='#n6749'>6749</a>
<a id='n6750' href='#n6750'>6750</a>
<a id='n6751' href='#n6751'>6751</a>
<a id='n6752' href='#n6752'>6752</a>
<a id='n6753' href='#n6753'>6753</a>
<a id='n6754' href='#n6754'>6754</a>
<a id='n6755' href='#n6755'>6755</a>
<a id='n6756' href='#n6756'>6756</a>
<a id='n6757' href='#n6757'>6757</a>
<a id='n6758' href='#n6758'>6758</a>
<a id='n6759' href='#n6759'>6759</a>
<a id='n6760' href='#n6760'>6760</a>
<a id='n6761' href='#n6761'>6761</a>
<a id='n6762' href='#n6762'>6762</a>
<a id='n6763' href='#n6763'>6763</a>
<a id='n6764' href='#n6764'>6764</a>
<a id='n6765' href='#n6765'>6765</a>
<a id='n6766' href='#n6766'>6766</a>
<a id='n6767' href='#n6767'>6767</a>
<a id='n6768' href='#n6768'>6768</a>
<a id='n6769' href='#n6769'>6769</a>
<a id='n6770' href='#n6770'>6770</a>
<a id='n6771' href='#n6771'>6771</a>
<a id='n6772' href='#n6772'>6772</a>
<a id='n6773' href='#n6773'>6773</a>
<a id='n6774' href='#n6774'>6774</a>
<a id='n6775' href='#n6775'>6775</a>
<a id='n6776' href='#n6776'>6776</a>
<a id='n6777' href='#n6777'>6777</a>
<a id='n6778' href='#n6778'>6778</a>
<a id='n6779' href='#n6779'>6779</a>
<a id='n6780' href='#n6780'>6780</a>
<a id='n6781' href='#n6781'>6781</a>
<a id='n6782' href='#n6782'>6782</a>
<a id='n6783' href='#n6783'>6783</a>
<a id='n6784' href='#n6784'>6784</a>
<a id='n6785' href='#n6785'>6785</a>
<a id='n6786' href='#n6786'>6786</a>
<a id='n6787' href='#n6787'>6787</a>
<a id='n6788' href='#n6788'>6788</a>
<a id='n6789' href='#n6789'>6789</a>
<a id='n6790' href='#n6790'>6790</a>
<a id='n6791' href='#n6791'>6791</a>
<a id='n6792' href='#n6792'>6792</a>
<a id='n6793' href='#n6793'>6793</a>
<a id='n6794' href='#n6794'>6794</a>
<a id='n6795' href='#n6795'>6795</a>
<a id='n6796' href='#n6796'>6796</a>
<a id='n6797' href='#n6797'>6797</a>
<a id='n6798' href='#n6798'>6798</a>
<a id='n6799' href='#n6799'>6799</a>
<a id='n6800' href='#n6800'>6800</a>
<a id='n6801' href='#n6801'>6801</a>
<a id='n6802' href='#n6802'>6802</a>
<a id='n6803' href='#n6803'>6803</a>
<a id='n6804' href='#n6804'>6804</a>
<a id='n6805' href='#n6805'>6805</a>
<a id='n6806' href='#n6806'>6806</a>
<a id='n6807' href='#n6807'>6807</a>
<a id='n6808' href='#n6808'>6808</a>
<a id='n6809' href='#n6809'>6809</a>
<a id='n6810' href='#n6810'>6810</a>
<a id='n6811' href='#n6811'>6811</a>
<a id='n6812' href='#n6812'>6812</a>
<a id='n6813' href='#n6813'>6813</a>
<a id='n6814' href='#n6814'>6814</a>
<a id='n6815' href='#n6815'>6815</a>
<a id='n6816' href='#n6816'>6816</a>
<a id='n6817' href='#n6817'>6817</a>
<a id='n6818' href='#n6818'>6818</a>
<a id='n6819' href='#n6819'>6819</a>
<a id='n6820' href='#n6820'>6820</a>
<a id='n6821' href='#n6821'>6821</a>
<a id='n6822' href='#n6822'>6822</a>
<a id='n6823' href='#n6823'>6823</a>
<a id='n6824' href='#n6824'>6824</a>
<a id='n6825' href='#n6825'>6825</a>
<a id='n6826' href='#n6826'>6826</a>
<a id='n6827' href='#n6827'>6827</a>
<a id='n6828' href='#n6828'>6828</a>
<a id='n6829' href='#n6829'>6829</a>
<a id='n6830' href='#n6830'>6830</a>
<a id='n6831' href='#n6831'>6831</a>
<a id='n6832' href='#n6832'>6832</a>
<a id='n6833' href='#n6833'>6833</a>
<a id='n6834' href='#n6834'>6834</a>
<a id='n6835' href='#n6835'>6835</a>
<a id='n6836' href='#n6836'>6836</a>
<a id='n6837' href='#n6837'>6837</a>
<a id='n6838' href='#n6838'>6838</a>
<a id='n6839' href='#n6839'>6839</a>
<a id='n6840' href='#n6840'>6840</a>
<a id='n6841' href='#n6841'>6841</a>
<a id='n6842' href='#n6842'>6842</a>
<a id='n6843' href='#n6843'>6843</a>
<a id='n6844' href='#n6844'>6844</a>
<a id='n6845' href='#n6845'>6845</a>
<a id='n6846' href='#n6846'>6846</a>
<a id='n6847' href='#n6847'>6847</a>
<a id='n6848' href='#n6848'>6848</a>
<a id='n6849' href='#n6849'>6849</a>
<a id='n6850' href='#n6850'>6850</a>
<a id='n6851' href='#n6851'>6851</a>
<a id='n6852' href='#n6852'>6852</a>
<a id='n6853' href='#n6853'>6853</a>
<a id='n6854' href='#n6854'>6854</a>
<a id='n6855' href='#n6855'>6855</a>
<a id='n6856' href='#n6856'>6856</a>
<a id='n6857' href='#n6857'>6857</a>
<a id='n6858' href='#n6858'>6858</a>
<a id='n6859' href='#n6859'>6859</a>
<a id='n6860' href='#n6860'>6860</a>
<a id='n6861' href='#n6861'>6861</a>
<a id='n6862' href='#n6862'>6862</a>
<a id='n6863' href='#n6863'>6863</a>
<a id='n6864' href='#n6864'>6864</a>
<a id='n6865' href='#n6865'>6865</a>
<a id='n6866' href='#n6866'>6866</a>
<a id='n6867' href='#n6867'>6867</a>
<a id='n6868' href='#n6868'>6868</a>
<a id='n6869' href='#n6869'>6869</a>
<a id='n6870' href='#n6870'>6870</a>
<a id='n6871' href='#n6871'>6871</a>
<a id='n6872' href='#n6872'>6872</a>
<a id='n6873' href='#n6873'>6873</a>
<a id='n6874' href='#n6874'>6874</a>
<a id='n6875' href='#n6875'>6875</a>
<a id='n6876' href='#n6876'>6876</a>
<a id='n6877' href='#n6877'>6877</a>
<a id='n6878' href='#n6878'>6878</a>
<a id='n6879' href='#n6879'>6879</a>
<a id='n6880' href='#n6880'>6880</a>
<a id='n6881' href='#n6881'>6881</a>
<a id='n6882' href='#n6882'>6882</a>
<a id='n6883' href='#n6883'>6883</a>
<a id='n6884' href='#n6884'>6884</a>
<a id='n6885' href='#n6885'>6885</a>
<a id='n6886' href='#n6886'>6886</a>
<a id='n6887' href='#n6887'>6887</a>
<a id='n6888' href='#n6888'>6888</a>
<a id='n6889' href='#n6889'>6889</a>
<a id='n6890' href='#n6890'>6890</a>
<a id='n6891' href='#n6891'>6891</a>
<a id='n6892' href='#n6892'>6892</a>
<a id='n6893' href='#n6893'>6893</a>
<a id='n6894' href='#n6894'>6894</a>
<a id='n6895' href='#n6895'>6895</a>
<a id='n6896' href='#n6896'>6896</a>
<a id='n6897' href='#n6897'>6897</a>
<a id='n6898' href='#n6898'>6898</a>
<a id='n6899' href='#n6899'>6899</a>
<a id='n6900' href='#n6900'>6900</a>
<a id='n6901' href='#n6901'>6901</a>
<a id='n6902' href='#n6902'>6902</a>
<a id='n6903' href='#n6903'>6903</a>
<a id='n6904' href='#n6904'>6904</a>
<a id='n6905' href='#n6905'>6905</a>
<a id='n6906' href='#n6906'>6906</a>
<a id='n6907' href='#n6907'>6907</a>
<a id='n6908' href='#n6908'>6908</a>
<a id='n6909' href='#n6909'>6909</a>
<a id='n6910' href='#n6910'>6910</a>
<a id='n6911' href='#n6911'>6911</a>
<a id='n6912' href='#n6912'>6912</a>
<a id='n6913' href='#n6913'>6913</a>
<a id='n6914' href='#n6914'>6914</a>
<a id='n6915' href='#n6915'>6915</a>
<a id='n6916' href='#n6916'>6916</a>
<a id='n6917' href='#n6917'>6917</a>
<a id='n6918' href='#n6918'>6918</a>
<a id='n6919' href='#n6919'>6919</a>
<a id='n6920' href='#n6920'>6920</a>
<a id='n6921' href='#n6921'>6921</a>
<a id='n6922' href='#n6922'>6922</a>
<a id='n6923' href='#n6923'>6923</a>
<a id='n6924' href='#n6924'>6924</a>
<a id='n6925' href='#n6925'>6925</a>
<a id='n6926' href='#n6926'>6926</a>
<a id='n6927' href='#n6927'>6927</a>
<a id='n6928' href='#n6928'>6928</a>
<a id='n6929' href='#n6929'>6929</a>
<a id='n6930' href='#n6930'>6930</a>
<a id='n6931' href='#n6931'>6931</a>
<a id='n6932' href='#n6932'>6932</a>
<a id='n6933' href='#n6933'>6933</a>
<a id='n6934' href='#n6934'>6934</a>
<a id='n6935' href='#n6935'>6935</a>
<a id='n6936' href='#n6936'>6936</a>
<a id='n6937' href='#n6937'>6937</a>
<a id='n6938' href='#n6938'>6938</a>
<a id='n6939' href='#n6939'>6939</a>
<a id='n6940' href='#n6940'>6940</a>
<a id='n6941' href='#n6941'>6941</a>
<a id='n6942' href='#n6942'>6942</a>
<a id='n6943' href='#n6943'>6943</a>
<a id='n6944' href='#n6944'>6944</a>
<a id='n6945' href='#n6945'>6945</a>
<a id='n6946' href='#n6946'>6946</a>
<a id='n6947' href='#n6947'>6947</a>
<a id='n6948' href='#n6948'>6948</a>
<a id='n6949' href='#n6949'>6949</a>
<a id='n6950' href='#n6950'>6950</a>
<a id='n6951' href='#n6951'>6951</a>
<a id='n6952' href='#n6952'>6952</a>
<a id='n6953' href='#n6953'>6953</a>
<a id='n6954' href='#n6954'>6954</a>
<a id='n6955' href='#n6955'>6955</a>
<a id='n6956' href='#n6956'>6956</a>
<a id='n6957' href='#n6957'>6957</a>
<a id='n6958' href='#n6958'>6958</a>
<a id='n6959' href='#n6959'>6959</a>
<a id='n6960' href='#n6960'>6960</a>
<a id='n6961' href='#n6961'>6961</a>
<a id='n6962' href='#n6962'>6962</a>
<a id='n6963' href='#n6963'>6963</a>
<a id='n6964' href='#n6964'>6964</a>
<a id='n6965' href='#n6965'>6965</a>
<a id='n6966' href='#n6966'>6966</a>
<a id='n6967' href='#n6967'>6967</a>
<a id='n6968' href='#n6968'>6968</a>
<a id='n6969' href='#n6969'>6969</a>
<a id='n6970' href='#n6970'>6970</a>
<a id='n6971' href='#n6971'>6971</a>
<a id='n6972' href='#n6972'>6972</a>
<a id='n6973' href='#n6973'>6973</a>
<a id='n6974' href='#n6974'>6974</a>
<a id='n6975' href='#n6975'>6975</a>
<a id='n6976' href='#n6976'>6976</a>
<a id='n6977' href='#n6977'>6977</a>
<a id='n6978' href='#n6978'>6978</a>
<a id='n6979' href='#n6979'>6979</a>
<a id='n6980' href='#n6980'>6980</a>
<a id='n6981' href='#n6981'>6981</a>
<a id='n6982' href='#n6982'>6982</a>
<a id='n6983' href='#n6983'>6983</a>
<a id='n6984' href='#n6984'>6984</a>
<a id='n6985' href='#n6985'>6985</a>
<a id='n6986' href='#n6986'>6986</a>
<a id='n6987' href='#n6987'>6987</a>
<a id='n6988' href='#n6988'>6988</a>
<a id='n6989' href='#n6989'>6989</a>
<a id='n6990' href='#n6990'>6990</a>
<a id='n6991' href='#n6991'>6991</a>
<a id='n6992' href='#n6992'>6992</a>
<a id='n6993' href='#n6993'>6993</a>
<a id='n6994' href='#n6994'>6994</a>
<a id='n6995' href='#n6995'>6995</a>
<a id='n6996' href='#n6996'>6996</a>
<a id='n6997' href='#n6997'>6997</a>
<a id='n6998' href='#n6998'>6998</a>
<a id='n6999' href='#n6999'>6999</a>
<a id='n7000' href='#n7000'>7000</a>
<a id='n7001' href='#n7001'>7001</a>
<a id='n7002' href='#n7002'>7002</a>
<a id='n7003' href='#n7003'>7003</a>
<a id='n7004' href='#n7004'>7004</a>
<a id='n7005' href='#n7005'>7005</a>
<a id='n7006' href='#n7006'>7006</a>
<a id='n7007' href='#n7007'>7007</a>
<a id='n7008' href='#n7008'>7008</a>
<a id='n7009' href='#n7009'>7009</a>
<a id='n7010' href='#n7010'>7010</a>
<a id='n7011' href='#n7011'>7011</a>
<a id='n7012' href='#n7012'>7012</a>
<a id='n7013' href='#n7013'>7013</a>
<a id='n7014' href='#n7014'>7014</a>
<a id='n7015' href='#n7015'>7015</a>
<a id='n7016' href='#n7016'>7016</a>
<a id='n7017' href='#n7017'>7017</a>
<a id='n7018' href='#n7018'>7018</a>
<a id='n7019' href='#n7019'>7019</a>
<a id='n7020' href='#n7020'>7020</a>
<a id='n7021' href='#n7021'>7021</a>
<a id='n7022' href='#n7022'>7022</a>
<a id='n7023' href='#n7023'>7023</a>
<a id='n7024' href='#n7024'>7024</a>
<a id='n7025' href='#n7025'>7025</a>
<a id='n7026' href='#n7026'>7026</a>
<a id='n7027' href='#n7027'>7027</a>
<a id='n7028' href='#n7028'>7028</a>
<a id='n7029' href='#n7029'>7029</a>
<a id='n7030' href='#n7030'>7030</a>
<a id='n7031' href='#n7031'>7031</a>
<a id='n7032' href='#n7032'>7032</a>
<a id='n7033' href='#n7033'>7033</a>
<a id='n7034' href='#n7034'>7034</a>
<a id='n7035' href='#n7035'>7035</a>
<a id='n7036' href='#n7036'>7036</a>
<a id='n7037' href='#n7037'>7037</a>
<a id='n7038' href='#n7038'>7038</a>
<a id='n7039' href='#n7039'>7039</a>
<a id='n7040' href='#n7040'>7040</a>
<a id='n7041' href='#n7041'>7041</a>
<a id='n7042' href='#n7042'>7042</a>
<a id='n7043' href='#n7043'>7043</a>
<a id='n7044' href='#n7044'>7044</a>
<a id='n7045' href='#n7045'>7045</a>
<a id='n7046' href='#n7046'>7046</a>
<a id='n7047' href='#n7047'>7047</a>
<a id='n7048' href='#n7048'>7048</a>
<a id='n7049' href='#n7049'>7049</a>
<a id='n7050' href='#n7050'>7050</a>
<a id='n7051' href='#n7051'>7051</a>
<a id='n7052' href='#n7052'>7052</a>
<a id='n7053' href='#n7053'>7053</a>
<a id='n7054' href='#n7054'>7054</a>
<a id='n7055' href='#n7055'>7055</a>
<a id='n7056' href='#n7056'>7056</a>
<a id='n7057' href='#n7057'>7057</a>
<a id='n7058' href='#n7058'>7058</a>
<a id='n7059' href='#n7059'>7059</a>
<a id='n7060' href='#n7060'>7060</a>
<a id='n7061' href='#n7061'>7061</a>
<a id='n7062' href='#n7062'>7062</a>
<a id='n7063' href='#n7063'>7063</a>
<a id='n7064' href='#n7064'>7064</a>
<a id='n7065' href='#n7065'>7065</a>
<a id='n7066' href='#n7066'>7066</a>
<a id='n7067' href='#n7067'>7067</a>
<a id='n7068' href='#n7068'>7068</a>
<a id='n7069' href='#n7069'>7069</a>
<a id='n7070' href='#n7070'>7070</a>
<a id='n7071' href='#n7071'>7071</a>
<a id='n7072' href='#n7072'>7072</a>
<a id='n7073' href='#n7073'>7073</a>
<a id='n7074' href='#n7074'>7074</a>
<a id='n7075' href='#n7075'>7075</a>
<a id='n7076' href='#n7076'>7076</a>
<a id='n7077' href='#n7077'>7077</a>
<a id='n7078' href='#n7078'>7078</a>
<a id='n7079' href='#n7079'>7079</a>
<a id='n7080' href='#n7080'>7080</a>
<a id='n7081' href='#n7081'>7081</a>
<a id='n7082' href='#n7082'>7082</a>
<a id='n7083' href='#n7083'>7083</a>
<a id='n7084' href='#n7084'>7084</a>
<a id='n7085' href='#n7085'>7085</a>
<a id='n7086' href='#n7086'>7086</a>
<a id='n7087' href='#n7087'>7087</a>
<a id='n7088' href='#n7088'>7088</a>
<a id='n7089' href='#n7089'>7089</a>
<a id='n7090' href='#n7090'>7090</a>
<a id='n7091' href='#n7091'>7091</a>
<a id='n7092' href='#n7092'>7092</a>
<a id='n7093' href='#n7093'>7093</a>
<a id='n7094' href='#n7094'>7094</a>
<a id='n7095' href='#n7095'>7095</a>
<a id='n7096' href='#n7096'>7096</a>
<a id='n7097' href='#n7097'>7097</a>
<a id='n7098' href='#n7098'>7098</a>
<a id='n7099' href='#n7099'>7099</a>
<a id='n7100' href='#n7100'>7100</a>
<a id='n7101' href='#n7101'>7101</a>
<a id='n7102' href='#n7102'>7102</a>
<a id='n7103' href='#n7103'>7103</a>
<a id='n7104' href='#n7104'>7104</a>
<a id='n7105' href='#n7105'>7105</a>
<a id='n7106' href='#n7106'>7106</a>
<a id='n7107' href='#n7107'>7107</a>
<a id='n7108' href='#n7108'>7108</a>
<a id='n7109' href='#n7109'>7109</a>
<a id='n7110' href='#n7110'>7110</a>
<a id='n7111' href='#n7111'>7111</a>
<a id='n7112' href='#n7112'>7112</a>
<a id='n7113' href='#n7113'>7113</a>
<a id='n7114' href='#n7114'>7114</a>
<a id='n7115' href='#n7115'>7115</a>
<a id='n7116' href='#n7116'>7116</a>
<a id='n7117' href='#n7117'>7117</a>
<a id='n7118' href='#n7118'>7118</a>
<a id='n7119' href='#n7119'>7119</a>
<a id='n7120' href='#n7120'>7120</a>
<a id='n7121' href='#n7121'>7121</a>
<a id='n7122' href='#n7122'>7122</a>
<a id='n7123' href='#n7123'>7123</a>
<a id='n7124' href='#n7124'>7124</a>
<a id='n7125' href='#n7125'>7125</a>
<a id='n7126' href='#n7126'>7126</a>
<a id='n7127' href='#n7127'>7127</a>
<a id='n7128' href='#n7128'>7128</a>
<a id='n7129' href='#n7129'>7129</a>
<a id='n7130' href='#n7130'>7130</a>
<a id='n7131' href='#n7131'>7131</a>
<a id='n7132' href='#n7132'>7132</a>
<a id='n7133' href='#n7133'>7133</a>
<a id='n7134' href='#n7134'>7134</a>
<a id='n7135' href='#n7135'>7135</a>
<a id='n7136' href='#n7136'>7136</a>
<a id='n7137' href='#n7137'>7137</a>
<a id='n7138' href='#n7138'>7138</a>
<a id='n7139' href='#n7139'>7139</a>
<a id='n7140' href='#n7140'>7140</a>
<a id='n7141' href='#n7141'>7141</a>
<a id='n7142' href='#n7142'>7142</a>
<a id='n7143' href='#n7143'>7143</a>
<a id='n7144' href='#n7144'>7144</a>
<a id='n7145' href='#n7145'>7145</a>
<a id='n7146' href='#n7146'>7146</a>
<a id='n7147' href='#n7147'>7147</a>
<a id='n7148' href='#n7148'>7148</a>
<a id='n7149' href='#n7149'>7149</a>
<a id='n7150' href='#n7150'>7150</a>
<a id='n7151' href='#n7151'>7151</a>
<a id='n7152' href='#n7152'>7152</a>
<a id='n7153' href='#n7153'>7153</a>
<a id='n7154' href='#n7154'>7154</a>
<a id='n7155' href='#n7155'>7155</a>
<a id='n7156' href='#n7156'>7156</a>
<a id='n7157' href='#n7157'>7157</a>
<a id='n7158' href='#n7158'>7158</a>
<a id='n7159' href='#n7159'>7159</a>
<a id='n7160' href='#n7160'>7160</a>
<a id='n7161' href='#n7161'>7161</a>
<a id='n7162' href='#n7162'>7162</a>
<a id='n7163' href='#n7163'>7163</a>
<a id='n7164' href='#n7164'>7164</a>
<a id='n7165' href='#n7165'>7165</a>
<a id='n7166' href='#n7166'>7166</a>
<a id='n7167' href='#n7167'>7167</a>
<a id='n7168' href='#n7168'>7168</a>
<a id='n7169' href='#n7169'>7169</a>
<a id='n7170' href='#n7170'>7170</a>
<a id='n7171' href='#n7171'>7171</a>
<a id='n7172' href='#n7172'>7172</a>
<a id='n7173' href='#n7173'>7173</a>
<a id='n7174' href='#n7174'>7174</a>
<a id='n7175' href='#n7175'>7175</a>
<a id='n7176' href='#n7176'>7176</a>
<a id='n7177' href='#n7177'>7177</a>
<a id='n7178' href='#n7178'>7178</a>
<a id='n7179' href='#n7179'>7179</a>
<a id='n7180' href='#n7180'>7180</a>
<a id='n7181' href='#n7181'>7181</a>
<a id='n7182' href='#n7182'>7182</a>
<a id='n7183' href='#n7183'>7183</a>
<a id='n7184' href='#n7184'>7184</a>
<a id='n7185' href='#n7185'>7185</a>
<a id='n7186' href='#n7186'>7186</a>
<a id='n7187' href='#n7187'>7187</a>
<a id='n7188' href='#n7188'>7188</a>
<a id='n7189' href='#n7189'>7189</a>
<a id='n7190' href='#n7190'>7190</a>
<a id='n7191' href='#n7191'>7191</a>
<a id='n7192' href='#n7192'>7192</a>
<a id='n7193' href='#n7193'>7193</a>
<a id='n7194' href='#n7194'>7194</a>
<a id='n7195' href='#n7195'>7195</a>
<a id='n7196' href='#n7196'>7196</a>
<a id='n7197' href='#n7197'>7197</a>
<a id='n7198' href='#n7198'>7198</a>
<a id='n7199' href='#n7199'>7199</a>
<a id='n7200' href='#n7200'>7200</a>
<a id='n7201' href='#n7201'>7201</a>
<a id='n7202' href='#n7202'>7202</a>
<a id='n7203' href='#n7203'>7203</a>
<a id='n7204' href='#n7204'>7204</a>
<a id='n7205' href='#n7205'>7205</a>
<a id='n7206' href='#n7206'>7206</a>
<a id='n7207' href='#n7207'>7207</a>
<a id='n7208' href='#n7208'>7208</a>
<a id='n7209' href='#n7209'>7209</a>
<a id='n7210' href='#n7210'>7210</a>
<a id='n7211' href='#n7211'>7211</a>
<a id='n7212' href='#n7212'>7212</a>
<a id='n7213' href='#n7213'>7213</a>
<a id='n7214' href='#n7214'>7214</a>
<a id='n7215' href='#n7215'>7215</a>
<a id='n7216' href='#n7216'>7216</a>
<a id='n7217' href='#n7217'>7217</a>
<a id='n7218' href='#n7218'>7218</a>
<a id='n7219' href='#n7219'>7219</a>
<a id='n7220' href='#n7220'>7220</a>
<a id='n7221' href='#n7221'>7221</a>
<a id='n7222' href='#n7222'>7222</a>
<a id='n7223' href='#n7223'>7223</a>
<a id='n7224' href='#n7224'>7224</a>
<a id='n7225' href='#n7225'>7225</a>
<a id='n7226' href='#n7226'>7226</a>
<a id='n7227' href='#n7227'>7227</a>
<a id='n7228' href='#n7228'>7228</a>
<a id='n7229' href='#n7229'>7229</a>
<a id='n7230' href='#n7230'>7230</a>
<a id='n7231' href='#n7231'>7231</a>
<a id='n7232' href='#n7232'>7232</a>
<a id='n7233' href='#n7233'>7233</a>
<a id='n7234' href='#n7234'>7234</a>
<a id='n7235' href='#n7235'>7235</a>
<a id='n7236' href='#n7236'>7236</a>
<a id='n7237' href='#n7237'>7237</a>
<a id='n7238' href='#n7238'>7238</a>
<a id='n7239' href='#n7239'>7239</a>
<a id='n7240' href='#n7240'>7240</a>
<a id='n7241' href='#n7241'>7241</a>
<a id='n7242' href='#n7242'>7242</a>
<a id='n7243' href='#n7243'>7243</a>
<a id='n7244' href='#n7244'>7244</a>
<a id='n7245' href='#n7245'>7245</a>
<a id='n7246' href='#n7246'>7246</a>
<a id='n7247' href='#n7247'>7247</a>
<a id='n7248' href='#n7248'>7248</a>
<a id='n7249' href='#n7249'>7249</a>
<a id='n7250' href='#n7250'>7250</a>
<a id='n7251' href='#n7251'>7251</a>
<a id='n7252' href='#n7252'>7252</a>
<a id='n7253' href='#n7253'>7253</a>
<a id='n7254' href='#n7254'>7254</a>
<a id='n7255' href='#n7255'>7255</a>
<a id='n7256' href='#n7256'>7256</a>
<a id='n7257' href='#n7257'>7257</a>
<a id='n7258' href='#n7258'>7258</a>
<a id='n7259' href='#n7259'>7259</a>
<a id='n7260' href='#n7260'>7260</a>
<a id='n7261' href='#n7261'>7261</a>
<a id='n7262' href='#n7262'>7262</a>
<a id='n7263' href='#n7263'>7263</a>
<a id='n7264' href='#n7264'>7264</a>
<a id='n7265' href='#n7265'>7265</a>
<a id='n7266' href='#n7266'>7266</a>
<a id='n7267' href='#n7267'>7267</a>
<a id='n7268' href='#n7268'>7268</a>
<a id='n7269' href='#n7269'>7269</a>
<a id='n7270' href='#n7270'>7270</a>
<a id='n7271' href='#n7271'>7271</a>
<a id='n7272' href='#n7272'>7272</a>
<a id='n7273' href='#n7273'>7273</a>
<a id='n7274' href='#n7274'>7274</a>
<a id='n7275' href='#n7275'>7275</a>
<a id='n7276' href='#n7276'>7276</a>
<a id='n7277' href='#n7277'>7277</a>
<a id='n7278' href='#n7278'>7278</a>
<a id='n7279' href='#n7279'>7279</a>
<a id='n7280' href='#n7280'>7280</a>
<a id='n7281' href='#n7281'>7281</a>
<a id='n7282' href='#n7282'>7282</a>
<a id='n7283' href='#n7283'>7283</a>
<a id='n7284' href='#n7284'>7284</a>
<a id='n7285' href='#n7285'>7285</a>
<a id='n7286' href='#n7286'>7286</a>
<a id='n7287' href='#n7287'>7287</a>
<a id='n7288' href='#n7288'>7288</a>
<a id='n7289' href='#n7289'>7289</a>
<a id='n7290' href='#n7290'>7290</a>
<a id='n7291' href='#n7291'>7291</a>
<a id='n7292' href='#n7292'>7292</a>
<a id='n7293' href='#n7293'>7293</a>
<a id='n7294' href='#n7294'>7294</a>
<a id='n7295' href='#n7295'>7295</a>
<a id='n7296' href='#n7296'>7296</a>
<a id='n7297' href='#n7297'>7297</a>
<a id='n7298' href='#n7298'>7298</a>
<a id='n7299' href='#n7299'>7299</a>
<a id='n7300' href='#n7300'>7300</a>
<a id='n7301' href='#n7301'>7301</a>
<a id='n7302' href='#n7302'>7302</a>
<a id='n7303' href='#n7303'>7303</a>
<a id='n7304' href='#n7304'>7304</a>
<a id='n7305' href='#n7305'>7305</a>
<a id='n7306' href='#n7306'>7306</a>
<a id='n7307' href='#n7307'>7307</a>
<a id='n7308' href='#n7308'>7308</a>
<a id='n7309' href='#n7309'>7309</a>
<a id='n7310' href='#n7310'>7310</a>
<a id='n7311' href='#n7311'>7311</a>
<a id='n7312' href='#n7312'>7312</a>
<a id='n7313' href='#n7313'>7313</a>
<a id='n7314' href='#n7314'>7314</a>
<a id='n7315' href='#n7315'>7315</a>
<a id='n7316' href='#n7316'>7316</a>
<a id='n7317' href='#n7317'>7317</a>
<a id='n7318' href='#n7318'>7318</a>
<a id='n7319' href='#n7319'>7319</a>
<a id='n7320' href='#n7320'>7320</a>
<a id='n7321' href='#n7321'>7321</a>
<a id='n7322' href='#n7322'>7322</a>
<a id='n7323' href='#n7323'>7323</a>
<a id='n7324' href='#n7324'>7324</a>
<a id='n7325' href='#n7325'>7325</a>
<a id='n7326' href='#n7326'>7326</a>
<a id='n7327' href='#n7327'>7327</a>
<a id='n7328' href='#n7328'>7328</a>
<a id='n7329' href='#n7329'>7329</a>
<a id='n7330' href='#n7330'>7330</a>
<a id='n7331' href='#n7331'>7331</a>
<a id='n7332' href='#n7332'>7332</a>
<a id='n7333' href='#n7333'>7333</a>
<a id='n7334' href='#n7334'>7334</a>
<a id='n7335' href='#n7335'>7335</a>
<a id='n7336' href='#n7336'>7336</a>
<a id='n7337' href='#n7337'>7337</a>
<a id='n7338' href='#n7338'>7338</a>
<a id='n7339' href='#n7339'>7339</a>
<a id='n7340' href='#n7340'>7340</a>
<a id='n7341' href='#n7341'>7341</a>
<a id='n7342' href='#n7342'>7342</a>
<a id='n7343' href='#n7343'>7343</a>
<a id='n7344' href='#n7344'>7344</a>
<a id='n7345' href='#n7345'>7345</a>
<a id='n7346' href='#n7346'>7346</a>
<a id='n7347' href='#n7347'>7347</a>
<a id='n7348' href='#n7348'>7348</a>
<a id='n7349' href='#n7349'>7349</a>
<a id='n7350' href='#n7350'>7350</a>
<a id='n7351' href='#n7351'>7351</a>
<a id='n7352' href='#n7352'>7352</a>
<a id='n7353' href='#n7353'>7353</a>
<a id='n7354' href='#n7354'>7354</a>
<a id='n7355' href='#n7355'>7355</a>
<a id='n7356' href='#n7356'>7356</a>
<a id='n7357' href='#n7357'>7357</a>
<a id='n7358' href='#n7358'>7358</a>
<a id='n7359' href='#n7359'>7359</a>
<a id='n7360' href='#n7360'>7360</a>
<a id='n7361' href='#n7361'>7361</a>
<a id='n7362' href='#n7362'>7362</a>
<a id='n7363' href='#n7363'>7363</a>
<a id='n7364' href='#n7364'>7364</a>
<a id='n7365' href='#n7365'>7365</a>
<a id='n7366' href='#n7366'>7366</a>
<a id='n7367' href='#n7367'>7367</a>
<a id='n7368' href='#n7368'>7368</a>
<a id='n7369' href='#n7369'>7369</a>
<a id='n7370' href='#n7370'>7370</a>
<a id='n7371' href='#n7371'>7371</a>
<a id='n7372' href='#n7372'>7372</a>
<a id='n7373' href='#n7373'>7373</a>
<a id='n7374' href='#n7374'>7374</a>
<a id='n7375' href='#n7375'>7375</a>
<a id='n7376' href='#n7376'>7376</a>
<a id='n7377' href='#n7377'>7377</a>
<a id='n7378' href='#n7378'>7378</a>
<a id='n7379' href='#n7379'>7379</a>
<a id='n7380' href='#n7380'>7380</a>
<a id='n7381' href='#n7381'>7381</a>
<a id='n7382' href='#n7382'>7382</a>
<a id='n7383' href='#n7383'>7383</a>
<a id='n7384' href='#n7384'>7384</a>
<a id='n7385' href='#n7385'>7385</a>
<a id='n7386' href='#n7386'>7386</a>
<a id='n7387' href='#n7387'>7387</a>
<a id='n7388' href='#n7388'>7388</a>
<a id='n7389' href='#n7389'>7389</a>
<a id='n7390' href='#n7390'>7390</a>
<a id='n7391' href='#n7391'>7391</a>
<a id='n7392' href='#n7392'>7392</a>
<a id='n7393' href='#n7393'>7393</a>
<a id='n7394' href='#n7394'>7394</a>
<a id='n7395' href='#n7395'>7395</a>
<a id='n7396' href='#n7396'>7396</a>
<a id='n7397' href='#n7397'>7397</a>
<a id='n7398' href='#n7398'>7398</a>
<a id='n7399' href='#n7399'>7399</a>
<a id='n7400' href='#n7400'>7400</a>
<a id='n7401' href='#n7401'>7401</a>
<a id='n7402' href='#n7402'>7402</a>
<a id='n7403' href='#n7403'>7403</a>
<a id='n7404' href='#n7404'>7404</a>
<a id='n7405' href='#n7405'>7405</a>
<a id='n7406' href='#n7406'>7406</a>
<a id='n7407' href='#n7407'>7407</a>
<a id='n7408' href='#n7408'>7408</a>
<a id='n7409' href='#n7409'>7409</a>
<a id='n7410' href='#n7410'>7410</a>
<a id='n7411' href='#n7411'>7411</a>
<a id='n7412' href='#n7412'>7412</a>
<a id='n7413' href='#n7413'>7413</a>
<a id='n7414' href='#n7414'>7414</a>
<a id='n7415' href='#n7415'>7415</a>
<a id='n7416' href='#n7416'>7416</a>
<a id='n7417' href='#n7417'>7417</a>
<a id='n7418' href='#n7418'>7418</a>
<a id='n7419' href='#n7419'>7419</a>
<a id='n7420' href='#n7420'>7420</a>
<a id='n7421' href='#n7421'>7421</a>
<a id='n7422' href='#n7422'>7422</a>
<a id='n7423' href='#n7423'>7423</a>
<a id='n7424' href='#n7424'>7424</a>
<a id='n7425' href='#n7425'>7425</a>
<a id='n7426' href='#n7426'>7426</a>
<a id='n7427' href='#n7427'>7427</a>
<a id='n7428' href='#n7428'>7428</a>
<a id='n7429' href='#n7429'>7429</a>
<a id='n7430' href='#n7430'>7430</a>
<a id='n7431' href='#n7431'>7431</a>
<a id='n7432' href='#n7432'>7432</a>
<a id='n7433' href='#n7433'>7433</a>
<a id='n7434' href='#n7434'>7434</a>
<a id='n7435' href='#n7435'>7435</a>
<a id='n7436' href='#n7436'>7436</a>
<a id='n7437' href='#n7437'>7437</a>
<a id='n7438' href='#n7438'>7438</a>
<a id='n7439' href='#n7439'>7439</a>
<a id='n7440' href='#n7440'>7440</a>
<a id='n7441' href='#n7441'>7441</a>
<a id='n7442' href='#n7442'>7442</a>
<a id='n7443' href='#n7443'>7443</a>
<a id='n7444' href='#n7444'>7444</a>
<a id='n7445' href='#n7445'>7445</a>
<a id='n7446' href='#n7446'>7446</a>
<a id='n7447' href='#n7447'>7447</a>
<a id='n7448' href='#n7448'>7448</a>
<a id='n7449' href='#n7449'>7449</a>
<a id='n7450' href='#n7450'>7450</a>
<a id='n7451' href='#n7451'>7451</a>
<a id='n7452' href='#n7452'>7452</a>
<a id='n7453' href='#n7453'>7453</a>
<a id='n7454' href='#n7454'>7454</a>
<a id='n7455' href='#n7455'>7455</a>
<a id='n7456' href='#n7456'>7456</a>
<a id='n7457' href='#n7457'>7457</a>
<a id='n7458' href='#n7458'>7458</a>
<a id='n7459' href='#n7459'>7459</a>
<a id='n7460' href='#n7460'>7460</a>
<a id='n7461' href='#n7461'>7461</a>
<a id='n7462' href='#n7462'>7462</a>
<a id='n7463' href='#n7463'>7463</a>
<a id='n7464' href='#n7464'>7464</a>
<a id='n7465' href='#n7465'>7465</a>
<a id='n7466' href='#n7466'>7466</a>
<a id='n7467' href='#n7467'>7467</a>
<a id='n7468' href='#n7468'>7468</a>
<a id='n7469' href='#n7469'>7469</a>
<a id='n7470' href='#n7470'>7470</a>
<a id='n7471' href='#n7471'>7471</a>
<a id='n7472' href='#n7472'>7472</a>
<a id='n7473' href='#n7473'>7473</a>
<a id='n7474' href='#n7474'>7474</a>
<a id='n7475' href='#n7475'>7475</a>
<a id='n7476' href='#n7476'>7476</a>
<a id='n7477' href='#n7477'>7477</a>
<a id='n7478' href='#n7478'>7478</a>
<a id='n7479' href='#n7479'>7479</a>
<a id='n7480' href='#n7480'>7480</a>
<a id='n7481' href='#n7481'>7481</a>
<a id='n7482' href='#n7482'>7482</a>
<a id='n7483' href='#n7483'>7483</a>
<a id='n7484' href='#n7484'>7484</a>
<a id='n7485' href='#n7485'>7485</a>
<a id='n7486' href='#n7486'>7486</a>
<a id='n7487' href='#n7487'>7487</a>
<a id='n7488' href='#n7488'>7488</a>
<a id='n7489' href='#n7489'>7489</a>
<a id='n7490' href='#n7490'>7490</a>
<a id='n7491' href='#n7491'>7491</a>
<a id='n7492' href='#n7492'>7492</a>
<a id='n7493' href='#n7493'>7493</a>
<a id='n7494' href='#n7494'>7494</a>
<a id='n7495' href='#n7495'>7495</a>
<a id='n7496' href='#n7496'>7496</a>
<a id='n7497' href='#n7497'>7497</a>
<a id='n7498' href='#n7498'>7498</a>
<a id='n7499' href='#n7499'>7499</a>
<a id='n7500' href='#n7500'>7500</a>
<a id='n7501' href='#n7501'>7501</a>
<a id='n7502' href='#n7502'>7502</a>
<a id='n7503' href='#n7503'>7503</a>
<a id='n7504' href='#n7504'>7504</a>
<a id='n7505' href='#n7505'>7505</a>
<a id='n7506' href='#n7506'>7506</a>
<a id='n7507' href='#n7507'>7507</a>
<a id='n7508' href='#n7508'>7508</a>
<a id='n7509' href='#n7509'>7509</a>
<a id='n7510' href='#n7510'>7510</a>
<a id='n7511' href='#n7511'>7511</a>
<a id='n7512' href='#n7512'>7512</a>
<a id='n7513' href='#n7513'>7513</a>
<a id='n7514' href='#n7514'>7514</a>
<a id='n7515' href='#n7515'>7515</a>
<a id='n7516' href='#n7516'>7516</a>
<a id='n7517' href='#n7517'>7517</a>
<a id='n7518' href='#n7518'>7518</a>
<a id='n7519' href='#n7519'>7519</a>
<a id='n7520' href='#n7520'>7520</a>
<a id='n7521' href='#n7521'>7521</a>
<a id='n7522' href='#n7522'>7522</a>
<a id='n7523' href='#n7523'>7523</a>
<a id='n7524' href='#n7524'>7524</a>
<a id='n7525' href='#n7525'>7525</a>
<a id='n7526' href='#n7526'>7526</a>
<a id='n7527' href='#n7527'>7527</a>
<a id='n7528' href='#n7528'>7528</a>
<a id='n7529' href='#n7529'>7529</a>
<a id='n7530' href='#n7530'>7530</a>
<a id='n7531' href='#n7531'>7531</a>
<a id='n7532' href='#n7532'>7532</a>
<a id='n7533' href='#n7533'>7533</a>
<a id='n7534' href='#n7534'>7534</a>
<a id='n7535' href='#n7535'>7535</a>
<a id='n7536' href='#n7536'>7536</a>
<a id='n7537' href='#n7537'>7537</a>
<a id='n7538' href='#n7538'>7538</a>
<a id='n7539' href='#n7539'>7539</a>
<a id='n7540' href='#n7540'>7540</a>
<a id='n7541' href='#n7541'>7541</a>
<a id='n7542' href='#n7542'>7542</a>
<a id='n7543' href='#n7543'>7543</a>
<a id='n7544' href='#n7544'>7544</a>
<a id='n7545' href='#n7545'>7545</a>
<a id='n7546' href='#n7546'>7546</a>
<a id='n7547' href='#n7547'>7547</a>
<a id='n7548' href='#n7548'>7548</a>
<a id='n7549' href='#n7549'>7549</a>
<a id='n7550' href='#n7550'>7550</a>
<a id='n7551' href='#n7551'>7551</a>
<a id='n7552' href='#n7552'>7552</a>
<a id='n7553' href='#n7553'>7553</a>
<a id='n7554' href='#n7554'>7554</a>
<a id='n7555' href='#n7555'>7555</a>
<a id='n7556' href='#n7556'>7556</a>
<a id='n7557' href='#n7557'>7557</a>
<a id='n7558' href='#n7558'>7558</a>
<a id='n7559' href='#n7559'>7559</a>
<a id='n7560' href='#n7560'>7560</a>
<a id='n7561' href='#n7561'>7561</a>
<a id='n7562' href='#n7562'>7562</a>
<a id='n7563' href='#n7563'>7563</a>
<a id='n7564' href='#n7564'>7564</a>
<a id='n7565' href='#n7565'>7565</a>
<a id='n7566' href='#n7566'>7566</a>
<a id='n7567' href='#n7567'>7567</a>
<a id='n7568' href='#n7568'>7568</a>
<a id='n7569' href='#n7569'>7569</a>
<a id='n7570' href='#n7570'>7570</a>
<a id='n7571' href='#n7571'>7571</a>
<a id='n7572' href='#n7572'>7572</a>
<a id='n7573' href='#n7573'>7573</a>
<a id='n7574' href='#n7574'>7574</a>
<a id='n7575' href='#n7575'>7575</a>
<a id='n7576' href='#n7576'>7576</a>
<a id='n7577' href='#n7577'>7577</a>
<a id='n7578' href='#n7578'>7578</a>
<a id='n7579' href='#n7579'>7579</a>
<a id='n7580' href='#n7580'>7580</a>
<a id='n7581' href='#n7581'>7581</a>
<a id='n7582' href='#n7582'>7582</a>
<a id='n7583' href='#n7583'>7583</a>
<a id='n7584' href='#n7584'>7584</a>
<a id='n7585' href='#n7585'>7585</a>
<a id='n7586' href='#n7586'>7586</a>
<a id='n7587' href='#n7587'>7587</a>
<a id='n7588' href='#n7588'>7588</a>
<a id='n7589' href='#n7589'>7589</a>
<a id='n7590' href='#n7590'>7590</a>
<a id='n7591' href='#n7591'>7591</a>
<a id='n7592' href='#n7592'>7592</a>
<a id='n7593' href='#n7593'>7593</a>
<a id='n7594' href='#n7594'>7594</a>
<a id='n7595' href='#n7595'>7595</a>
<a id='n7596' href='#n7596'>7596</a>
<a id='n7597' href='#n7597'>7597</a>
<a id='n7598' href='#n7598'>7598</a>
<a id='n7599' href='#n7599'>7599</a>
<a id='n7600' href='#n7600'>7600</a>
<a id='n7601' href='#n7601'>7601</a>
<a id='n7602' href='#n7602'>7602</a>
<a id='n7603' href='#n7603'>7603</a>
<a id='n7604' href='#n7604'>7604</a>
<a id='n7605' href='#n7605'>7605</a>
<a id='n7606' href='#n7606'>7606</a>
<a id='n7607' href='#n7607'>7607</a>
<a id='n7608' href='#n7608'>7608</a>
<a id='n7609' href='#n7609'>7609</a>
<a id='n7610' href='#n7610'>7610</a>
<a id='n7611' href='#n7611'>7611</a>
<a id='n7612' href='#n7612'>7612</a>
<a id='n7613' href='#n7613'>7613</a>
<a id='n7614' href='#n7614'>7614</a>
<a id='n7615' href='#n7615'>7615</a>
<a id='n7616' href='#n7616'>7616</a>
<a id='n7617' href='#n7617'>7617</a>
<a id='n7618' href='#n7618'>7618</a>
<a id='n7619' href='#n7619'>7619</a>
<a id='n7620' href='#n7620'>7620</a>
<a id='n7621' href='#n7621'>7621</a>
<a id='n7622' href='#n7622'>7622</a>
<a id='n7623' href='#n7623'>7623</a>
<a id='n7624' href='#n7624'>7624</a>
<a id='n7625' href='#n7625'>7625</a>
<a id='n7626' href='#n7626'>7626</a>
<a id='n7627' href='#n7627'>7627</a>
<a id='n7628' href='#n7628'>7628</a>
<a id='n7629' href='#n7629'>7629</a>
<a id='n7630' href='#n7630'>7630</a>
<a id='n7631' href='#n7631'>7631</a>
<a id='n7632' href='#n7632'>7632</a>
<a id='n7633' href='#n7633'>7633</a>
<a id='n7634' href='#n7634'>7634</a>
<a id='n7635' href='#n7635'>7635</a>
<a id='n7636' href='#n7636'>7636</a>
<a id='n7637' href='#n7637'>7637</a>
<a id='n7638' href='#n7638'>7638</a>
<a id='n7639' href='#n7639'>7639</a>
<a id='n7640' href='#n7640'>7640</a>
<a id='n7641' href='#n7641'>7641</a>
<a id='n7642' href='#n7642'>7642</a>
<a id='n7643' href='#n7643'>7643</a>
<a id='n7644' href='#n7644'>7644</a>
<a id='n7645' href='#n7645'>7645</a>
<a id='n7646' href='#n7646'>7646</a>
<a id='n7647' href='#n7647'>7647</a>
<a id='n7648' href='#n7648'>7648</a>
<a id='n7649' href='#n7649'>7649</a>
<a id='n7650' href='#n7650'>7650</a>
<a id='n7651' href='#n7651'>7651</a>
<a id='n7652' href='#n7652'>7652</a>
<a id='n7653' href='#n7653'>7653</a>
<a id='n7654' href='#n7654'>7654</a>
<a id='n7655' href='#n7655'>7655</a>
<a id='n7656' href='#n7656'>7656</a>
<a id='n7657' href='#n7657'>7657</a>
<a id='n7658' href='#n7658'>7658</a>
<a id='n7659' href='#n7659'>7659</a>
<a id='n7660' href='#n7660'>7660</a>
<a id='n7661' href='#n7661'>7661</a>
<a id='n7662' href='#n7662'>7662</a>
<a id='n7663' href='#n7663'>7663</a>
<a id='n7664' href='#n7664'>7664</a>
<a id='n7665' href='#n7665'>7665</a>
<a id='n7666' href='#n7666'>7666</a>
<a id='n7667' href='#n7667'>7667</a>
<a id='n7668' href='#n7668'>7668</a>
<a id='n7669' href='#n7669'>7669</a>
<a id='n7670' href='#n7670'>7670</a>
<a id='n7671' href='#n7671'>7671</a>
<a id='n7672' href='#n7672'>7672</a>
<a id='n7673' href='#n7673'>7673</a>
<a id='n7674' href='#n7674'>7674</a>
<a id='n7675' href='#n7675'>7675</a>
<a id='n7676' href='#n7676'>7676</a>
<a id='n7677' href='#n7677'>7677</a>
<a id='n7678' href='#n7678'>7678</a>
<a id='n7679' href='#n7679'>7679</a>
<a id='n7680' href='#n7680'>7680</a>
<a id='n7681' href='#n7681'>7681</a>
<a id='n7682' href='#n7682'>7682</a>
<a id='n7683' href='#n7683'>7683</a>
<a id='n7684' href='#n7684'>7684</a>
<a id='n7685' href='#n7685'>7685</a>
<a id='n7686' href='#n7686'>7686</a>
<a id='n7687' href='#n7687'>7687</a>
<a id='n7688' href='#n7688'>7688</a>
<a id='n7689' href='#n7689'>7689</a>
<a id='n7690' href='#n7690'>7690</a>
<a id='n7691' href='#n7691'>7691</a>
<a id='n7692' href='#n7692'>7692</a>
<a id='n7693' href='#n7693'>7693</a>
<a id='n7694' href='#n7694'>7694</a>
<a id='n7695' href='#n7695'>7695</a>
<a id='n7696' href='#n7696'>7696</a>
<a id='n7697' href='#n7697'>7697</a>
<a id='n7698' href='#n7698'>7698</a>
<a id='n7699' href='#n7699'>7699</a>
<a id='n7700' href='#n7700'>7700</a>
<a id='n7701' href='#n7701'>7701</a>
<a id='n7702' href='#n7702'>7702</a>
<a id='n7703' href='#n7703'>7703</a>
<a id='n7704' href='#n7704'>7704</a>
<a id='n7705' href='#n7705'>7705</a>
<a id='n7706' href='#n7706'>7706</a>
<a id='n7707' href='#n7707'>7707</a>
<a id='n7708' href='#n7708'>7708</a>
<a id='n7709' href='#n7709'>7709</a>
<a id='n7710' href='#n7710'>7710</a>
<a id='n7711' href='#n7711'>7711</a>
<a id='n7712' href='#n7712'>7712</a>
<a id='n7713' href='#n7713'>7713</a>
<a id='n7714' href='#n7714'>7714</a>
<a id='n7715' href='#n7715'>7715</a>
<a id='n7716' href='#n7716'>7716</a>
<a id='n7717' href='#n7717'>7717</a>
<a id='n7718' href='#n7718'>7718</a>
<a id='n7719' href='#n7719'>7719</a>
<a id='n7720' href='#n7720'>7720</a>
<a id='n7721' href='#n7721'>7721</a>
<a id='n7722' href='#n7722'>7722</a>
<a id='n7723' href='#n7723'>7723</a>
<a id='n7724' href='#n7724'>7724</a>
<a id='n7725' href='#n7725'>7725</a>
<a id='n7726' href='#n7726'>7726</a>
<a id='n7727' href='#n7727'>7727</a>
<a id='n7728' href='#n7728'>7728</a>
<a id='n7729' href='#n7729'>7729</a>
<a id='n7730' href='#n7730'>7730</a>
<a id='n7731' href='#n7731'>7731</a>
<a id='n7732' href='#n7732'>7732</a>
<a id='n7733' href='#n7733'>7733</a>
<a id='n7734' href='#n7734'>7734</a>
<a id='n7735' href='#n7735'>7735</a>
<a id='n7736' href='#n7736'>7736</a>
<a id='n7737' href='#n7737'>7737</a>
<a id='n7738' href='#n7738'>7738</a>
<a id='n7739' href='#n7739'>7739</a>
<a id='n7740' href='#n7740'>7740</a>
<a id='n7741' href='#n7741'>7741</a>
<a id='n7742' href='#n7742'>7742</a>
<a id='n7743' href='#n7743'>7743</a>
<a id='n7744' href='#n7744'>7744</a>
<a id='n7745' href='#n7745'>7745</a>
<a id='n7746' href='#n7746'>7746</a>
<a id='n7747' href='#n7747'>7747</a>
<a id='n7748' href='#n7748'>7748</a>
<a id='n7749' href='#n7749'>7749</a>
<a id='n7750' href='#n7750'>7750</a>
<a id='n7751' href='#n7751'>7751</a>
<a id='n7752' href='#n7752'>7752</a>
<a id='n7753' href='#n7753'>7753</a>
<a id='n7754' href='#n7754'>7754</a>
<a id='n7755' href='#n7755'>7755</a>
<a id='n7756' href='#n7756'>7756</a>
<a id='n7757' href='#n7757'>7757</a>
<a id='n7758' href='#n7758'>7758</a>
<a id='n7759' href='#n7759'>7759</a>
<a id='n7760' href='#n7760'>7760</a>
<a id='n7761' href='#n7761'>7761</a>
<a id='n7762' href='#n7762'>7762</a>
<a id='n7763' href='#n7763'>7763</a>
<a id='n7764' href='#n7764'>7764</a>
<a id='n7765' href='#n7765'>7765</a>
<a id='n7766' href='#n7766'>7766</a>
<a id='n7767' href='#n7767'>7767</a>
<a id='n7768' href='#n7768'>7768</a>
<a id='n7769' href='#n7769'>7769</a>
<a id='n7770' href='#n7770'>7770</a>
<a id='n7771' href='#n7771'>7771</a>
<a id='n7772' href='#n7772'>7772</a>
<a id='n7773' href='#n7773'>7773</a>
<a id='n7774' href='#n7774'>7774</a>
<a id='n7775' href='#n7775'>7775</a>
<a id='n7776' href='#n7776'>7776</a>
<a id='n7777' href='#n7777'>7777</a>
<a id='n7778' href='#n7778'>7778</a>
<a id='n7779' href='#n7779'>7779</a>
<a id='n7780' href='#n7780'>7780</a>
<a id='n7781' href='#n7781'>7781</a>
<a id='n7782' href='#n7782'>7782</a>
<a id='n7783' href='#n7783'>7783</a>
<a id='n7784' href='#n7784'>7784</a>
<a id='n7785' href='#n7785'>7785</a>
<a id='n7786' href='#n7786'>7786</a>
<a id='n7787' href='#n7787'>7787</a>
<a id='n7788' href='#n7788'>7788</a>
<a id='n7789' href='#n7789'>7789</a>
<a id='n7790' href='#n7790'>7790</a>
<a id='n7791' href='#n7791'>7791</a>
<a id='n7792' href='#n7792'>7792</a>
<a id='n7793' href='#n7793'>7793</a>
<a id='n7794' href='#n7794'>7794</a>
<a id='n7795' href='#n7795'>7795</a>
<a id='n7796' href='#n7796'>7796</a>
<a id='n7797' href='#n7797'>7797</a>
<a id='n7798' href='#n7798'>7798</a>
<a id='n7799' href='#n7799'>7799</a>
<a id='n7800' href='#n7800'>7800</a>
<a id='n7801' href='#n7801'>7801</a>
<a id='n7802' href='#n7802'>7802</a>
<a id='n7803' href='#n7803'>7803</a>
<a id='n7804' href='#n7804'>7804</a>
<a id='n7805' href='#n7805'>7805</a>
<a id='n7806' href='#n7806'>7806</a>
<a id='n7807' href='#n7807'>7807</a>
<a id='n7808' href='#n7808'>7808</a>
<a id='n7809' href='#n7809'>7809</a>
<a id='n7810' href='#n7810'>7810</a>
<a id='n7811' href='#n7811'>7811</a>
<a id='n7812' href='#n7812'>7812</a>
<a id='n7813' href='#n7813'>7813</a>
<a id='n7814' href='#n7814'>7814</a>
<a id='n7815' href='#n7815'>7815</a>
<a id='n7816' href='#n7816'>7816</a>
<a id='n7817' href='#n7817'>7817</a>
<a id='n7818' href='#n7818'>7818</a>
<a id='n7819' href='#n7819'>7819</a>
<a id='n7820' href='#n7820'>7820</a>
<a id='n7821' href='#n7821'>7821</a>
<a id='n7822' href='#n7822'>7822</a>
<a id='n7823' href='#n7823'>7823</a>
<a id='n7824' href='#n7824'>7824</a>
<a id='n7825' href='#n7825'>7825</a>
<a id='n7826' href='#n7826'>7826</a>
<a id='n7827' href='#n7827'>7827</a>
<a id='n7828' href='#n7828'>7828</a>
<a id='n7829' href='#n7829'>7829</a>
<a id='n7830' href='#n7830'>7830</a>
<a id='n7831' href='#n7831'>7831</a>
<a id='n7832' href='#n7832'>7832</a>
<a id='n7833' href='#n7833'>7833</a>
<a id='n7834' href='#n7834'>7834</a>
<a id='n7835' href='#n7835'>7835</a>
<a id='n7836' href='#n7836'>7836</a>
<a id='n7837' href='#n7837'>7837</a>
<a id='n7838' href='#n7838'>7838</a>
<a id='n7839' href='#n7839'>7839</a>
<a id='n7840' href='#n7840'>7840</a>
<a id='n7841' href='#n7841'>7841</a>
<a id='n7842' href='#n7842'>7842</a>
<a id='n7843' href='#n7843'>7843</a>
<a id='n7844' href='#n7844'>7844</a>
<a id='n7845' href='#n7845'>7845</a>
<a id='n7846' href='#n7846'>7846</a>
<a id='n7847' href='#n7847'>7847</a>
<a id='n7848' href='#n7848'>7848</a>
<a id='n7849' href='#n7849'>7849</a>
<a id='n7850' href='#n7850'>7850</a>
<a id='n7851' href='#n7851'>7851</a>
<a id='n7852' href='#n7852'>7852</a>
<a id='n7853' href='#n7853'>7853</a>
<a id='n7854' href='#n7854'>7854</a>
<a id='n7855' href='#n7855'>7855</a>
<a id='n7856' href='#n7856'>7856</a>
<a id='n7857' href='#n7857'>7857</a>
<a id='n7858' href='#n7858'>7858</a>
<a id='n7859' href='#n7859'>7859</a>
<a id='n7860' href='#n7860'>7860</a>
<a id='n7861' href='#n7861'>7861</a>
<a id='n7862' href='#n7862'>7862</a>
<a id='n7863' href='#n7863'>7863</a>
<a id='n7864' href='#n7864'>7864</a>
<a id='n7865' href='#n7865'>7865</a>
<a id='n7866' href='#n7866'>7866</a>
<a id='n7867' href='#n7867'>7867</a>
<a id='n7868' href='#n7868'>7868</a>
<a id='n7869' href='#n7869'>7869</a>
<a id='n7870' href='#n7870'>7870</a>
<a id='n7871' href='#n7871'>7871</a>
<a id='n7872' href='#n7872'>7872</a>
<a id='n7873' href='#n7873'>7873</a>
<a id='n7874' href='#n7874'>7874</a>
<a id='n7875' href='#n7875'>7875</a>
<a id='n7876' href='#n7876'>7876</a>
<a id='n7877' href='#n7877'>7877</a>
<a id='n7878' href='#n7878'>7878</a>
<a id='n7879' href='#n7879'>7879</a>
<a id='n7880' href='#n7880'>7880</a>
<a id='n7881' href='#n7881'>7881</a>
<a id='n7882' href='#n7882'>7882</a>
<a id='n7883' href='#n7883'>7883</a>
<a id='n7884' href='#n7884'>7884</a>
<a id='n7885' href='#n7885'>7885</a>
<a id='n7886' href='#n7886'>7886</a>
<a id='n7887' href='#n7887'>7887</a>
<a id='n7888' href='#n7888'>7888</a>
<a id='n7889' href='#n7889'>7889</a>
<a id='n7890' href='#n7890'>7890</a>
<a id='n7891' href='#n7891'>7891</a>
<a id='n7892' href='#n7892'>7892</a>
<a id='n7893' href='#n7893'>7893</a>
<a id='n7894' href='#n7894'>7894</a>
<a id='n7895' href='#n7895'>7895</a>
<a id='n7896' href='#n7896'>7896</a>
<a id='n7897' href='#n7897'>7897</a>
<a id='n7898' href='#n7898'>7898</a>
<a id='n7899' href='#n7899'>7899</a>
<a id='n7900' href='#n7900'>7900</a>
<a id='n7901' href='#n7901'>7901</a>
<a id='n7902' href='#n7902'>7902</a>
<a id='n7903' href='#n7903'>7903</a>
<a id='n7904' href='#n7904'>7904</a>
<a id='n7905' href='#n7905'>7905</a>
<a id='n7906' href='#n7906'>7906</a>
<a id='n7907' href='#n7907'>7907</a>
<a id='n7908' href='#n7908'>7908</a>
<a id='n7909' href='#n7909'>7909</a>
<a id='n7910' href='#n7910'>7910</a>
<a id='n7911' href='#n7911'>7911</a>
<a id='n7912' href='#n7912'>7912</a>
<a id='n7913' href='#n7913'>7913</a>
<a id='n7914' href='#n7914'>7914</a>
<a id='n7915' href='#n7915'>7915</a>
<a id='n7916' href='#n7916'>7916</a>
<a id='n7917' href='#n7917'>7917</a>
<a id='n7918' href='#n7918'>7918</a>
<a id='n7919' href='#n7919'>7919</a>
<a id='n7920' href='#n7920'>7920</a>
<a id='n7921' href='#n7921'>7921</a>
<a id='n7922' href='#n7922'>7922</a>
<a id='n7923' href='#n7923'>7923</a>
<a id='n7924' href='#n7924'>7924</a>
<a id='n7925' href='#n7925'>7925</a>
<a id='n7926' href='#n7926'>7926</a>
<a id='n7927' href='#n7927'>7927</a>
<a id='n7928' href='#n7928'>7928</a>
<a id='n7929' href='#n7929'>7929</a>
<a id='n7930' href='#n7930'>7930</a>
<a id='n7931' href='#n7931'>7931</a>
<a id='n7932' href='#n7932'>7932</a>
<a id='n7933' href='#n7933'>7933</a>
<a id='n7934' href='#n7934'>7934</a>
<a id='n7935' href='#n7935'>7935</a>
<a id='n7936' href='#n7936'>7936</a>
<a id='n7937' href='#n7937'>7937</a>
<a id='n7938' href='#n7938'>7938</a>
<a id='n7939' href='#n7939'>7939</a>
<a id='n7940' href='#n7940'>7940</a>
<a id='n7941' href='#n7941'>7941</a>
<a id='n7942' href='#n7942'>7942</a>
<a id='n7943' href='#n7943'>7943</a>
<a id='n7944' href='#n7944'>7944</a>
<a id='n7945' href='#n7945'>7945</a>
<a id='n7946' href='#n7946'>7946</a>
<a id='n7947' href='#n7947'>7947</a>
<a id='n7948' href='#n7948'>7948</a>
<a id='n7949' href='#n7949'>7949</a>
<a id='n7950' href='#n7950'>7950</a>
<a id='n7951' href='#n7951'>7951</a>
<a id='n7952' href='#n7952'>7952</a>
<a id='n7953' href='#n7953'>7953</a>
<a id='n7954' href='#n7954'>7954</a>
<a id='n7955' href='#n7955'>7955</a>
<a id='n7956' href='#n7956'>7956</a>
<a id='n7957' href='#n7957'>7957</a>
<a id='n7958' href='#n7958'>7958</a>
<a id='n7959' href='#n7959'>7959</a>
<a id='n7960' href='#n7960'>7960</a>
<a id='n7961' href='#n7961'>7961</a>
<a id='n7962' href='#n7962'>7962</a>
<a id='n7963' href='#n7963'>7963</a>
<a id='n7964' href='#n7964'>7964</a>
<a id='n7965' href='#n7965'>7965</a>
<a id='n7966' href='#n7966'>7966</a>
<a id='n7967' href='#n7967'>7967</a>
<a id='n7968' href='#n7968'>7968</a>
<a id='n7969' href='#n7969'>7969</a>
<a id='n7970' href='#n7970'>7970</a>
<a id='n7971' href='#n7971'>7971</a>
<a id='n7972' href='#n7972'>7972</a>
<a id='n7973' href='#n7973'>7973</a>
<a id='n7974' href='#n7974'>7974</a>
<a id='n7975' href='#n7975'>7975</a>
<a id='n7976' href='#n7976'>7976</a>
<a id='n7977' href='#n7977'>7977</a>
<a id='n7978' href='#n7978'>7978</a>
<a id='n7979' href='#n7979'>7979</a>
<a id='n7980' href='#n7980'>7980</a>
<a id='n7981' href='#n7981'>7981</a>
<a id='n7982' href='#n7982'>7982</a>
<a id='n7983' href='#n7983'>7983</a>
<a id='n7984' href='#n7984'>7984</a>
<a id='n7985' href='#n7985'>7985</a>
<a id='n7986' href='#n7986'>7986</a>
<a id='n7987' href='#n7987'>7987</a>
<a id='n7988' href='#n7988'>7988</a>
<a id='n7989' href='#n7989'>7989</a>
<a id='n7990' href='#n7990'>7990</a>
<a id='n7991' href='#n7991'>7991</a>
<a id='n7992' href='#n7992'>7992</a>
<a id='n7993' href='#n7993'>7993</a>
<a id='n7994' href='#n7994'>7994</a>
<a id='n7995' href='#n7995'>7995</a>
<a id='n7996' href='#n7996'>7996</a>
<a id='n7997' href='#n7997'>7997</a>
<a id='n7998' href='#n7998'>7998</a>
<a id='n7999' href='#n7999'>7999</a>
<a id='n8000' href='#n8000'>8000</a>
<a id='n8001' href='#n8001'>8001</a>
<a id='n8002' href='#n8002'>8002</a>
<a id='n8003' href='#n8003'>8003</a>
<a id='n8004' href='#n8004'>8004</a>
<a id='n8005' href='#n8005'>8005</a>
<a id='n8006' href='#n8006'>8006</a>
<a id='n8007' href='#n8007'>8007</a>
<a id='n8008' href='#n8008'>8008</a>
<a id='n8009' href='#n8009'>8009</a>
<a id='n8010' href='#n8010'>8010</a>
<a id='n8011' href='#n8011'>8011</a>
<a id='n8012' href='#n8012'>8012</a>
<a id='n8013' href='#n8013'>8013</a>
<a id='n8014' href='#n8014'>8014</a>
<a id='n8015' href='#n8015'>8015</a>
<a id='n8016' href='#n8016'>8016</a>
<a id='n8017' href='#n8017'>8017</a>
<a id='n8018' href='#n8018'>8018</a>
<a id='n8019' href='#n8019'>8019</a>
<a id='n8020' href='#n8020'>8020</a>
<a id='n8021' href='#n8021'>8021</a>
<a id='n8022' href='#n8022'>8022</a>
<a id='n8023' href='#n8023'>8023</a>
<a id='n8024' href='#n8024'>8024</a>
<a id='n8025' href='#n8025'>8025</a>
<a id='n8026' href='#n8026'>8026</a>
<a id='n8027' href='#n8027'>8027</a>
<a id='n8028' href='#n8028'>8028</a>
<a id='n8029' href='#n8029'>8029</a>
<a id='n8030' href='#n8030'>8030</a>
<a id='n8031' href='#n8031'>8031</a>
<a id='n8032' href='#n8032'>8032</a>
<a id='n8033' href='#n8033'>8033</a>
<a id='n8034' href='#n8034'>8034</a>
<a id='n8035' href='#n8035'>8035</a>
<a id='n8036' href='#n8036'>8036</a>
<a id='n8037' href='#n8037'>8037</a>
<a id='n8038' href='#n8038'>8038</a>
<a id='n8039' href='#n8039'>8039</a>
<a id='n8040' href='#n8040'>8040</a>
<a id='n8041' href='#n8041'>8041</a>
<a id='n8042' href='#n8042'>8042</a>
<a id='n8043' href='#n8043'>8043</a>
<a id='n8044' href='#n8044'>8044</a>
<a id='n8045' href='#n8045'>8045</a>
<a id='n8046' href='#n8046'>8046</a>
<a id='n8047' href='#n8047'>8047</a>
<a id='n8048' href='#n8048'>8048</a>
<a id='n8049' href='#n8049'>8049</a>
<a id='n8050' href='#n8050'>8050</a>
<a id='n8051' href='#n8051'>8051</a>
<a id='n8052' href='#n8052'>8052</a>
<a id='n8053' href='#n8053'>8053</a>
<a id='n8054' href='#n8054'>8054</a>
<a id='n8055' href='#n8055'>8055</a>
<a id='n8056' href='#n8056'>8056</a>
<a id='n8057' href='#n8057'>8057</a>
<a id='n8058' href='#n8058'>8058</a>
<a id='n8059' href='#n8059'>8059</a>
<a id='n8060' href='#n8060'>8060</a>
<a id='n8061' href='#n8061'>8061</a>
<a id='n8062' href='#n8062'>8062</a>
<a id='n8063' href='#n8063'>8063</a>
<a id='n8064' href='#n8064'>8064</a>
<a id='n8065' href='#n8065'>8065</a>
<a id='n8066' href='#n8066'>8066</a>
<a id='n8067' href='#n8067'>8067</a>
<a id='n8068' href='#n8068'>8068</a>
<a id='n8069' href='#n8069'>8069</a>
<a id='n8070' href='#n8070'>8070</a>
<a id='n8071' href='#n8071'>8071</a>
<a id='n8072' href='#n8072'>8072</a>
<a id='n8073' href='#n8073'>8073</a>
<a id='n8074' href='#n8074'>8074</a>
<a id='n8075' href='#n8075'>8075</a>
<a id='n8076' href='#n8076'>8076</a>
<a id='n8077' href='#n8077'>8077</a>
<a id='n8078' href='#n8078'>8078</a>
<a id='n8079' href='#n8079'>8079</a>
<a id='n8080' href='#n8080'>8080</a>
<a id='n8081' href='#n8081'>8081</a>
<a id='n8082' href='#n8082'>8082</a>
<a id='n8083' href='#n8083'>8083</a>
<a id='n8084' href='#n8084'>8084</a>
<a id='n8085' href='#n8085'>8085</a>
<a id='n8086' href='#n8086'>8086</a>
<a id='n8087' href='#n8087'>8087</a>
<a id='n8088' href='#n8088'>8088</a>
<a id='n8089' href='#n8089'>8089</a>
<a id='n8090' href='#n8090'>8090</a>
<a id='n8091' href='#n8091'>8091</a>
<a id='n8092' href='#n8092'>8092</a>
<a id='n8093' href='#n8093'>8093</a>
<a id='n8094' href='#n8094'>8094</a>
<a id='n8095' href='#n8095'>8095</a>
<a id='n8096' href='#n8096'>8096</a>
<a id='n8097' href='#n8097'>8097</a>
<a id='n8098' href='#n8098'>8098</a>
<a id='n8099' href='#n8099'>8099</a>
<a id='n8100' href='#n8100'>8100</a>
<a id='n8101' href='#n8101'>8101</a>
<a id='n8102' href='#n8102'>8102</a>
<a id='n8103' href='#n8103'>8103</a>
<a id='n8104' href='#n8104'>8104</a>
<a id='n8105' href='#n8105'>8105</a>
<a id='n8106' href='#n8106'>8106</a>
<a id='n8107' href='#n8107'>8107</a>
<a id='n8108' href='#n8108'>8108</a>
<a id='n8109' href='#n8109'>8109</a>
<a id='n8110' href='#n8110'>8110</a>
<a id='n8111' href='#n8111'>8111</a>
<a id='n8112' href='#n8112'>8112</a>
<a id='n8113' href='#n8113'>8113</a>
<a id='n8114' href='#n8114'>8114</a>
<a id='n8115' href='#n8115'>8115</a>
<a id='n8116' href='#n8116'>8116</a>
<a id='n8117' href='#n8117'>8117</a>
<a id='n8118' href='#n8118'>8118</a>
<a id='n8119' href='#n8119'>8119</a>
<a id='n8120' href='#n8120'>8120</a>
<a id='n8121' href='#n8121'>8121</a>
<a id='n8122' href='#n8122'>8122</a>
<a id='n8123' href='#n8123'>8123</a>
<a id='n8124' href='#n8124'>8124</a>
<a id='n8125' href='#n8125'>8125</a>
<a id='n8126' href='#n8126'>8126</a>
<a id='n8127' href='#n8127'>8127</a>
<a id='n8128' href='#n8128'>8128</a>
<a id='n8129' href='#n8129'>8129</a>
<a id='n8130' href='#n8130'>8130</a>
<a id='n8131' href='#n8131'>8131</a>
<a id='n8132' href='#n8132'>8132</a>
<a id='n8133' href='#n8133'>8133</a>
<a id='n8134' href='#n8134'>8134</a>
<a id='n8135' href='#n8135'>8135</a>
<a id='n8136' href='#n8136'>8136</a>
<a id='n8137' href='#n8137'>8137</a>
<a id='n8138' href='#n8138'>8138</a>
<a id='n8139' href='#n8139'>8139</a>
<a id='n8140' href='#n8140'>8140</a>
<a id='n8141' href='#n8141'>8141</a>
<a id='n8142' href='#n8142'>8142</a>
<a id='n8143' href='#n8143'>8143</a>
<a id='n8144' href='#n8144'>8144</a>
<a id='n8145' href='#n8145'>8145</a>
<a id='n8146' href='#n8146'>8146</a>
<a id='n8147' href='#n8147'>8147</a>
<a id='n8148' href='#n8148'>8148</a>
<a id='n8149' href='#n8149'>8149</a>
<a id='n8150' href='#n8150'>8150</a>
<a id='n8151' href='#n8151'>8151</a>
<a id='n8152' href='#n8152'>8152</a>
<a id='n8153' href='#n8153'>8153</a>
<a id='n8154' href='#n8154'>8154</a>
<a id='n8155' href='#n8155'>8155</a>
<a id='n8156' href='#n8156'>8156</a>
<a id='n8157' href='#n8157'>8157</a>
<a id='n8158' href='#n8158'>8158</a>
<a id='n8159' href='#n8159'>8159</a>
<a id='n8160' href='#n8160'>8160</a>
<a id='n8161' href='#n8161'>8161</a>
<a id='n8162' href='#n8162'>8162</a>
<a id='n8163' href='#n8163'>8163</a>
<a id='n8164' href='#n8164'>8164</a>
<a id='n8165' href='#n8165'>8165</a>
<a id='n8166' href='#n8166'>8166</a>
<a id='n8167' href='#n8167'>8167</a>
<a id='n8168' href='#n8168'>8168</a>
<a id='n8169' href='#n8169'>8169</a>
<a id='n8170' href='#n8170'>8170</a>
<a id='n8171' href='#n8171'>8171</a>
<a id='n8172' href='#n8172'>8172</a>
<a id='n8173' href='#n8173'>8173</a>
<a id='n8174' href='#n8174'>8174</a>
<a id='n8175' href='#n8175'>8175</a>
<a id='n8176' href='#n8176'>8176</a>
<a id='n8177' href='#n8177'>8177</a>
<a id='n8178' href='#n8178'>8178</a>
<a id='n8179' href='#n8179'>8179</a>
<a id='n8180' href='#n8180'>8180</a>
<a id='n8181' href='#n8181'>8181</a>
<a id='n8182' href='#n8182'>8182</a>
<a id='n8183' href='#n8183'>8183</a>
<a id='n8184' href='#n8184'>8184</a>
<a id='n8185' href='#n8185'>8185</a>
<a id='n8186' href='#n8186'>8186</a>
<a id='n8187' href='#n8187'>8187</a>
<a id='n8188' href='#n8188'>8188</a>
<a id='n8189' href='#n8189'>8189</a>
<a id='n8190' href='#n8190'>8190</a>
<a id='n8191' href='#n8191'>8191</a>
<a id='n8192' href='#n8192'>8192</a>
<a id='n8193' href='#n8193'>8193</a>
<a id='n8194' href='#n8194'>8194</a>
<a id='n8195' href='#n8195'>8195</a>
<a id='n8196' href='#n8196'>8196</a>
<a id='n8197' href='#n8197'>8197</a>
<a id='n8198' href='#n8198'>8198</a>
<a id='n8199' href='#n8199'>8199</a>
<a id='n8200' href='#n8200'>8200</a>
<a id='n8201' href='#n8201'>8201</a>
<a id='n8202' href='#n8202'>8202</a>
<a id='n8203' href='#n8203'>8203</a>
<a id='n8204' href='#n8204'>8204</a>
<a id='n8205' href='#n8205'>8205</a>
<a id='n8206' href='#n8206'>8206</a>
<a id='n8207' href='#n8207'>8207</a>
<a id='n8208' href='#n8208'>8208</a>
<a id='n8209' href='#n8209'>8209</a>
<a id='n8210' href='#n8210'>8210</a>
<a id='n8211' href='#n8211'>8211</a>
<a id='n8212' href='#n8212'>8212</a>
<a id='n8213' href='#n8213'>8213</a>
<a id='n8214' href='#n8214'>8214</a>
<a id='n8215' href='#n8215'>8215</a>
<a id='n8216' href='#n8216'>8216</a>
<a id='n8217' href='#n8217'>8217</a>
<a id='n8218' href='#n8218'>8218</a>
<a id='n8219' href='#n8219'>8219</a>
<a id='n8220' href='#n8220'>8220</a>
<a id='n8221' href='#n8221'>8221</a>
<a id='n8222' href='#n8222'>8222</a>
<a id='n8223' href='#n8223'>8223</a>
<a id='n8224' href='#n8224'>8224</a>
<a id='n8225' href='#n8225'>8225</a>
<a id='n8226' href='#n8226'>8226</a>
<a id='n8227' href='#n8227'>8227</a>
<a id='n8228' href='#n8228'>8228</a>
<a id='n8229' href='#n8229'>8229</a>
<a id='n8230' href='#n8230'>8230</a>
<a id='n8231' href='#n8231'>8231</a>
<a id='n8232' href='#n8232'>8232</a>
<a id='n8233' href='#n8233'>8233</a>
<a id='n8234' href='#n8234'>8234</a>
<a id='n8235' href='#n8235'>8235</a>
<a id='n8236' href='#n8236'>8236</a>
<a id='n8237' href='#n8237'>8237</a>
<a id='n8238' href='#n8238'>8238</a>
<a id='n8239' href='#n8239'>8239</a>
<a id='n8240' href='#n8240'>8240</a>
<a id='n8241' href='#n8241'>8241</a>
<a id='n8242' href='#n8242'>8242</a>
<a id='n8243' href='#n8243'>8243</a>
<a id='n8244' href='#n8244'>8244</a>
<a id='n8245' href='#n8245'>8245</a>
<a id='n8246' href='#n8246'>8246</a>
<a id='n8247' href='#n8247'>8247</a>
<a id='n8248' href='#n8248'>8248</a>
<a id='n8249' href='#n8249'>8249</a>
<a id='n8250' href='#n8250'>8250</a>
<a id='n8251' href='#n8251'>8251</a>
<a id='n8252' href='#n8252'>8252</a>
<a id='n8253' href='#n8253'>8253</a>
<a id='n8254' href='#n8254'>8254</a>
<a id='n8255' href='#n8255'>8255</a>
<a id='n8256' href='#n8256'>8256</a>
<a id='n8257' href='#n8257'>8257</a>
<a id='n8258' href='#n8258'>8258</a>
<a id='n8259' href='#n8259'>8259</a>
<a id='n8260' href='#n8260'>8260</a>
<a id='n8261' href='#n8261'>8261</a>
<a id='n8262' href='#n8262'>8262</a>
<a id='n8263' href='#n8263'>8263</a>
<a id='n8264' href='#n8264'>8264</a>
<a id='n8265' href='#n8265'>8265</a>
<a id='n8266' href='#n8266'>8266</a>
<a id='n8267' href='#n8267'>8267</a>
<a id='n8268' href='#n8268'>8268</a>
<a id='n8269' href='#n8269'>8269</a>
<a id='n8270' href='#n8270'>8270</a>
<a id='n8271' href='#n8271'>8271</a>
<a id='n8272' href='#n8272'>8272</a>
<a id='n8273' href='#n8273'>8273</a>
<a id='n8274' href='#n8274'>8274</a>
<a id='n8275' href='#n8275'>8275</a>
<a id='n8276' href='#n8276'>8276</a>
<a id='n8277' href='#n8277'>8277</a>
<a id='n8278' href='#n8278'>8278</a>
<a id='n8279' href='#n8279'>8279</a>
<a id='n8280' href='#n8280'>8280</a>
<a id='n8281' href='#n8281'>8281</a>
<a id='n8282' href='#n8282'>8282</a>
<a id='n8283' href='#n8283'>8283</a>
<a id='n8284' href='#n8284'>8284</a>
<a id='n8285' href='#n8285'>8285</a>
<a id='n8286' href='#n8286'>8286</a>
<a id='n8287' href='#n8287'>8287</a>
<a id='n8288' href='#n8288'>8288</a>
<a id='n8289' href='#n8289'>8289</a>
<a id='n8290' href='#n8290'>8290</a>
<a id='n8291' href='#n8291'>8291</a>
<a id='n8292' href='#n8292'>8292</a>
<a id='n8293' href='#n8293'>8293</a>
<a id='n8294' href='#n8294'>8294</a>
<a id='n8295' href='#n8295'>8295</a>
<a id='n8296' href='#n8296'>8296</a>
<a id='n8297' href='#n8297'>8297</a>
<a id='n8298' href='#n8298'>8298</a>
<a id='n8299' href='#n8299'>8299</a>
<a id='n8300' href='#n8300'>8300</a>
<a id='n8301' href='#n8301'>8301</a>
<a id='n8302' href='#n8302'>8302</a>
<a id='n8303' href='#n8303'>8303</a>
<a id='n8304' href='#n8304'>8304</a>
<a id='n8305' href='#n8305'>8305</a>
<a id='n8306' href='#n8306'>8306</a>
<a id='n8307' href='#n8307'>8307</a>
<a id='n8308' href='#n8308'>8308</a>
<a id='n8309' href='#n8309'>8309</a>
<a id='n8310' href='#n8310'>8310</a>
<a id='n8311' href='#n8311'>8311</a>
<a id='n8312' href='#n8312'>8312</a>
<a id='n8313' href='#n8313'>8313</a>
<a id='n8314' href='#n8314'>8314</a>
<a id='n8315' href='#n8315'>8315</a>
<a id='n8316' href='#n8316'>8316</a>
<a id='n8317' href='#n8317'>8317</a>
<a id='n8318' href='#n8318'>8318</a>
<a id='n8319' href='#n8319'>8319</a>
<a id='n8320' href='#n8320'>8320</a>
<a id='n8321' href='#n8321'>8321</a>
<a id='n8322' href='#n8322'>8322</a>
<a id='n8323' href='#n8323'>8323</a>
<a id='n8324' href='#n8324'>8324</a>
<a id='n8325' href='#n8325'>8325</a>
<a id='n8326' href='#n8326'>8326</a>
<a id='n8327' href='#n8327'>8327</a>
<a id='n8328' href='#n8328'>8328</a>
<a id='n8329' href='#n8329'>8329</a>
<a id='n8330' href='#n8330'>8330</a>
<a id='n8331' href='#n8331'>8331</a>
<a id='n8332' href='#n8332'>8332</a>
<a id='n8333' href='#n8333'>8333</a>
<a id='n8334' href='#n8334'>8334</a>
<a id='n8335' href='#n8335'>8335</a>
<a id='n8336' href='#n8336'>8336</a>
<a id='n8337' href='#n8337'>8337</a>
<a id='n8338' href='#n8338'>8338</a>
<a id='n8339' href='#n8339'>8339</a>
<a id='n8340' href='#n8340'>8340</a>
<a id='n8341' href='#n8341'>8341</a>
<a id='n8342' href='#n8342'>8342</a>
<a id='n8343' href='#n8343'>8343</a>
<a id='n8344' href='#n8344'>8344</a>
<a id='n8345' href='#n8345'>8345</a>
<a id='n8346' href='#n8346'>8346</a>
<a id='n8347' href='#n8347'>8347</a>
<a id='n8348' href='#n8348'>8348</a>
<a id='n8349' href='#n8349'>8349</a>
<a id='n8350' href='#n8350'>8350</a>
<a id='n8351' href='#n8351'>8351</a>
<a id='n8352' href='#n8352'>8352</a>
<a id='n8353' href='#n8353'>8353</a>
<a id='n8354' href='#n8354'>8354</a>
<a id='n8355' href='#n8355'>8355</a>
<a id='n8356' href='#n8356'>8356</a>
<a id='n8357' href='#n8357'>8357</a>
<a id='n8358' href='#n8358'>8358</a>
<a id='n8359' href='#n8359'>8359</a>
<a id='n8360' href='#n8360'>8360</a>
<a id='n8361' href='#n8361'>8361</a>
<a id='n8362' href='#n8362'>8362</a>
<a id='n8363' href='#n8363'>8363</a>
<a id='n8364' href='#n8364'>8364</a>
<a id='n8365' href='#n8365'>8365</a>
<a id='n8366' href='#n8366'>8366</a>
<a id='n8367' href='#n8367'>8367</a>
<a id='n8368' href='#n8368'>8368</a>
<a id='n8369' href='#n8369'>8369</a>
<a id='n8370' href='#n8370'>8370</a>
<a id='n8371' href='#n8371'>8371</a>
<a id='n8372' href='#n8372'>8372</a>
<a id='n8373' href='#n8373'>8373</a>
<a id='n8374' href='#n8374'>8374</a>
<a id='n8375' href='#n8375'>8375</a>
<a id='n8376' href='#n8376'>8376</a>
<a id='n8377' href='#n8377'>8377</a>
<a id='n8378' href='#n8378'>8378</a>
<a id='n8379' href='#n8379'>8379</a>
<a id='n8380' href='#n8380'>8380</a>
<a id='n8381' href='#n8381'>8381</a>
<a id='n8382' href='#n8382'>8382</a>
<a id='n8383' href='#n8383'>8383</a>
<a id='n8384' href='#n8384'>8384</a>
<a id='n8385' href='#n8385'>8385</a>
<a id='n8386' href='#n8386'>8386</a>
<a id='n8387' href='#n8387'>8387</a>
<a id='n8388' href='#n8388'>8388</a>
<a id='n8389' href='#n8389'>8389</a>
<a id='n8390' href='#n8390'>8390</a>
<a id='n8391' href='#n8391'>8391</a>
<a id='n8392' href='#n8392'>8392</a>
<a id='n8393' href='#n8393'>8393</a>
<a id='n8394' href='#n8394'>8394</a>
<a id='n8395' href='#n8395'>8395</a>
<a id='n8396' href='#n8396'>8396</a>
<a id='n8397' href='#n8397'>8397</a>
<a id='n8398' href='#n8398'>8398</a>
<a id='n8399' href='#n8399'>8399</a>
<a id='n8400' href='#n8400'>8400</a>
<a id='n8401' href='#n8401'>8401</a>
<a id='n8402' href='#n8402'>8402</a>
<a id='n8403' href='#n8403'>8403</a>
<a id='n8404' href='#n8404'>8404</a>
<a id='n8405' href='#n8405'>8405</a>
<a id='n8406' href='#n8406'>8406</a>
<a id='n8407' href='#n8407'>8407</a>
<a id='n8408' href='#n8408'>8408</a>
<a id='n8409' href='#n8409'>8409</a>
<a id='n8410' href='#n8410'>8410</a>
<a id='n8411' href='#n8411'>8411</a>
<a id='n8412' href='#n8412'>8412</a>
<a id='n8413' href='#n8413'>8413</a>
<a id='n8414' href='#n8414'>8414</a>
<a id='n8415' href='#n8415'>8415</a>
<a id='n8416' href='#n8416'>8416</a>
<a id='n8417' href='#n8417'>8417</a>
<a id='n8418' href='#n8418'>8418</a>
<a id='n8419' href='#n8419'>8419</a>
<a id='n8420' href='#n8420'>8420</a>
<a id='n8421' href='#n8421'>8421</a>
<a id='n8422' href='#n8422'>8422</a>
<a id='n8423' href='#n8423'>8423</a>
<a id='n8424' href='#n8424'>8424</a>
<a id='n8425' href='#n8425'>8425</a>
<a id='n8426' href='#n8426'>8426</a>
<a id='n8427' href='#n8427'>8427</a>
<a id='n8428' href='#n8428'>8428</a>
<a id='n8429' href='#n8429'>8429</a>
<a id='n8430' href='#n8430'>8430</a>
<a id='n8431' href='#n8431'>8431</a>
<a id='n8432' href='#n8432'>8432</a>
<a id='n8433' href='#n8433'>8433</a>
<a id='n8434' href='#n8434'>8434</a>
<a id='n8435' href='#n8435'>8435</a>
<a id='n8436' href='#n8436'>8436</a>
<a id='n8437' href='#n8437'>8437</a>
<a id='n8438' href='#n8438'>8438</a>
<a id='n8439' href='#n8439'>8439</a>
<a id='n8440' href='#n8440'>8440</a>
<a id='n8441' href='#n8441'>8441</a>
<a id='n8442' href='#n8442'>8442</a>
<a id='n8443' href='#n8443'>8443</a>
<a id='n8444' href='#n8444'>8444</a>
<a id='n8445' href='#n8445'>8445</a>
<a id='n8446' href='#n8446'>8446</a>
<a id='n8447' href='#n8447'>8447</a>
<a id='n8448' href='#n8448'>8448</a>
<a id='n8449' href='#n8449'>8449</a>
<a id='n8450' href='#n8450'>8450</a>
<a id='n8451' href='#n8451'>8451</a>
<a id='n8452' href='#n8452'>8452</a>
<a id='n8453' href='#n8453'>8453</a>
<a id='n8454' href='#n8454'>8454</a>
<a id='n8455' href='#n8455'>8455</a>
<a id='n8456' href='#n8456'>8456</a>
<a id='n8457' href='#n8457'>8457</a>
<a id='n8458' href='#n8458'>8458</a>
<a id='n8459' href='#n8459'>8459</a>
<a id='n8460' href='#n8460'>8460</a>
<a id='n8461' href='#n8461'>8461</a>
<a id='n8462' href='#n8462'>8462</a>
<a id='n8463' href='#n8463'>8463</a>
<a id='n8464' href='#n8464'>8464</a>
<a id='n8465' href='#n8465'>8465</a>
<a id='n8466' href='#n8466'>8466</a>
<a id='n8467' href='#n8467'>8467</a>
<a id='n8468' href='#n8468'>8468</a>
<a id='n8469' href='#n8469'>8469</a>
<a id='n8470' href='#n8470'>8470</a>
<a id='n8471' href='#n8471'>8471</a>
<a id='n8472' href='#n8472'>8472</a>
<a id='n8473' href='#n8473'>8473</a>
<a id='n8474' href='#n8474'>8474</a>
<a id='n8475' href='#n8475'>8475</a>
<a id='n8476' href='#n8476'>8476</a>
<a id='n8477' href='#n8477'>8477</a>
<a id='n8478' href='#n8478'>8478</a>
<a id='n8479' href='#n8479'>8479</a>
<a id='n8480' href='#n8480'>8480</a>
<a id='n8481' href='#n8481'>8481</a>
<a id='n8482' href='#n8482'>8482</a>
<a id='n8483' href='#n8483'>8483</a>
<a id='n8484' href='#n8484'>8484</a>
<a id='n8485' href='#n8485'>8485</a>
<a id='n8486' href='#n8486'>8486</a>
<a id='n8487' href='#n8487'>8487</a>
<a id='n8488' href='#n8488'>8488</a>
<a id='n8489' href='#n8489'>8489</a>
<a id='n8490' href='#n8490'>8490</a>
<a id='n8491' href='#n8491'>8491</a>
<a id='n8492' href='#n8492'>8492</a>
<a id='n8493' href='#n8493'>8493</a>
<a id='n8494' href='#n8494'>8494</a>
<a id='n8495' href='#n8495'>8495</a>
<a id='n8496' href='#n8496'>8496</a>
<a id='n8497' href='#n8497'>8497</a>
<a id='n8498' href='#n8498'>8498</a>
<a id='n8499' href='#n8499'>8499</a>
<a id='n8500' href='#n8500'>8500</a>
<a id='n8501' href='#n8501'>8501</a>
<a id='n8502' href='#n8502'>8502</a>
<a id='n8503' href='#n8503'>8503</a>
<a id='n8504' href='#n8504'>8504</a>
<a id='n8505' href='#n8505'>8505</a>
<a id='n8506' href='#n8506'>8506</a>
<a id='n8507' href='#n8507'>8507</a>
<a id='n8508' href='#n8508'>8508</a>
<a id='n8509' href='#n8509'>8509</a>
<a id='n8510' href='#n8510'>8510</a>
<a id='n8511' href='#n8511'>8511</a>
<a id='n8512' href='#n8512'>8512</a>
<a id='n8513' href='#n8513'>8513</a>
<a id='n8514' href='#n8514'>8514</a>
<a id='n8515' href='#n8515'>8515</a>
<a id='n8516' href='#n8516'>8516</a>
<a id='n8517' href='#n8517'>8517</a>
<a id='n8518' href='#n8518'>8518</a>
<a id='n8519' href='#n8519'>8519</a>
<a id='n8520' href='#n8520'>8520</a>
<a id='n8521' href='#n8521'>8521</a>
<a id='n8522' href='#n8522'>8522</a>
<a id='n8523' href='#n8523'>8523</a>
<a id='n8524' href='#n8524'>8524</a>
<a id='n8525' href='#n8525'>8525</a>
<a id='n8526' href='#n8526'>8526</a>
<a id='n8527' href='#n8527'>8527</a>
<a id='n8528' href='#n8528'>8528</a>
<a id='n8529' href='#n8529'>8529</a>
<a id='n8530' href='#n8530'>8530</a>
<a id='n8531' href='#n8531'>8531</a>
<a id='n8532' href='#n8532'>8532</a>
<a id='n8533' href='#n8533'>8533</a>
<a id='n8534' href='#n8534'>8534</a>
<a id='n8535' href='#n8535'>8535</a>
<a id='n8536' href='#n8536'>8536</a>
<a id='n8537' href='#n8537'>8537</a>
<a id='n8538' href='#n8538'>8538</a>
<a id='n8539' href='#n8539'>8539</a>
<a id='n8540' href='#n8540'>8540</a>
<a id='n8541' href='#n8541'>8541</a>
<a id='n8542' href='#n8542'>8542</a>
<a id='n8543' href='#n8543'>8543</a>
<a id='n8544' href='#n8544'>8544</a>
<a id='n8545' href='#n8545'>8545</a>
<a id='n8546' href='#n8546'>8546</a>
<a id='n8547' href='#n8547'>8547</a>
<a id='n8548' href='#n8548'>8548</a>
<a id='n8549' href='#n8549'>8549</a>
<a id='n8550' href='#n8550'>8550</a>
<a id='n8551' href='#n8551'>8551</a>
<a id='n8552' href='#n8552'>8552</a>
<a id='n8553' href='#n8553'>8553</a>
<a id='n8554' href='#n8554'>8554</a>
<a id='n8555' href='#n8555'>8555</a>
<a id='n8556' href='#n8556'>8556</a>
<a id='n8557' href='#n8557'>8557</a>
<a id='n8558' href='#n8558'>8558</a>
<a id='n8559' href='#n8559'>8559</a>
<a id='n8560' href='#n8560'>8560</a>
<a id='n8561' href='#n8561'>8561</a>
<a id='n8562' href='#n8562'>8562</a>
<a id='n8563' href='#n8563'>8563</a>
<a id='n8564' href='#n8564'>8564</a>
<a id='n8565' href='#n8565'>8565</a>
<a id='n8566' href='#n8566'>8566</a>
<a id='n8567' href='#n8567'>8567</a>
<a id='n8568' href='#n8568'>8568</a>
<a id='n8569' href='#n8569'>8569</a>
<a id='n8570' href='#n8570'>8570</a>
<a id='n8571' href='#n8571'>8571</a>
<a id='n8572' href='#n8572'>8572</a>
<a id='n8573' href='#n8573'>8573</a>
<a id='n8574' href='#n8574'>8574</a>
<a id='n8575' href='#n8575'>8575</a>
<a id='n8576' href='#n8576'>8576</a>
<a id='n8577' href='#n8577'>8577</a>
<a id='n8578' href='#n8578'>8578</a>
<a id='n8579' href='#n8579'>8579</a>
<a id='n8580' href='#n8580'>8580</a>
<a id='n8581' href='#n8581'>8581</a>
<a id='n8582' href='#n8582'>8582</a>
<a id='n8583' href='#n8583'>8583</a>
<a id='n8584' href='#n8584'>8584</a>
<a id='n8585' href='#n8585'>8585</a>
<a id='n8586' href='#n8586'>8586</a>
<a id='n8587' href='#n8587'>8587</a>
<a id='n8588' href='#n8588'>8588</a>
<a id='n8589' href='#n8589'>8589</a>
<a id='n8590' href='#n8590'>8590</a>
<a id='n8591' href='#n8591'>8591</a>
<a id='n8592' href='#n8592'>8592</a>
<a id='n8593' href='#n8593'>8593</a>
<a id='n8594' href='#n8594'>8594</a>
<a id='n8595' href='#n8595'>8595</a>
<a id='n8596' href='#n8596'>8596</a>
<a id='n8597' href='#n8597'>8597</a>
<a id='n8598' href='#n8598'>8598</a>
<a id='n8599' href='#n8599'>8599</a>
<a id='n8600' href='#n8600'>8600</a>
<a id='n8601' href='#n8601'>8601</a>
<a id='n8602' href='#n8602'>8602</a>
<a id='n8603' href='#n8603'>8603</a>
<a id='n8604' href='#n8604'>8604</a>
<a id='n8605' href='#n8605'>8605</a>
<a id='n8606' href='#n8606'>8606</a>
<a id='n8607' href='#n8607'>8607</a>
<a id='n8608' href='#n8608'>8608</a>
<a id='n8609' href='#n8609'>8609</a>
<a id='n8610' href='#n8610'>8610</a>
<a id='n8611' href='#n8611'>8611</a>
<a id='n8612' href='#n8612'>8612</a>
<a id='n8613' href='#n8613'>8613</a>
<a id='n8614' href='#n8614'>8614</a>
<a id='n8615' href='#n8615'>8615</a>
<a id='n8616' href='#n8616'>8616</a>
<a id='n8617' href='#n8617'>8617</a>
<a id='n8618' href='#n8618'>8618</a>
<a id='n8619' href='#n8619'>8619</a>
<a id='n8620' href='#n8620'>8620</a>
<a id='n8621' href='#n8621'>8621</a>
<a id='n8622' href='#n8622'>8622</a>
<a id='n8623' href='#n8623'>8623</a>
<a id='n8624' href='#n8624'>8624</a>
<a id='n8625' href='#n8625'>8625</a>
<a id='n8626' href='#n8626'>8626</a>
<a id='n8627' href='#n8627'>8627</a>
<a id='n8628' href='#n8628'>8628</a>
<a id='n8629' href='#n8629'>8629</a>
<a id='n8630' href='#n8630'>8630</a>
<a id='n8631' href='#n8631'>8631</a>
<a id='n8632' href='#n8632'>8632</a>
<a id='n8633' href='#n8633'>8633</a>
<a id='n8634' href='#n8634'>8634</a>
<a id='n8635' href='#n8635'>8635</a>
<a id='n8636' href='#n8636'>8636</a>
<a id='n8637' href='#n8637'>8637</a>
<a id='n8638' href='#n8638'>8638</a>
<a id='n8639' href='#n8639'>8639</a>
<a id='n8640' href='#n8640'>8640</a>
<a id='n8641' href='#n8641'>8641</a>
<a id='n8642' href='#n8642'>8642</a>
<a id='n8643' href='#n8643'>8643</a>
<a id='n8644' href='#n8644'>8644</a>
<a id='n8645' href='#n8645'>8645</a>
<a id='n8646' href='#n8646'>8646</a>
<a id='n8647' href='#n8647'>8647</a>
<a id='n8648' href='#n8648'>8648</a>
<a id='n8649' href='#n8649'>8649</a>
<a id='n8650' href='#n8650'>8650</a>
<a id='n8651' href='#n8651'>8651</a>
<a id='n8652' href='#n8652'>8652</a>
<a id='n8653' href='#n8653'>8653</a>
<a id='n8654' href='#n8654'>8654</a>
<a id='n8655' href='#n8655'>8655</a>
<a id='n8656' href='#n8656'>8656</a>
<a id='n8657' href='#n8657'>8657</a>
<a id='n8658' href='#n8658'>8658</a>
<a id='n8659' href='#n8659'>8659</a>
<a id='n8660' href='#n8660'>8660</a>
<a id='n8661' href='#n8661'>8661</a>
<a id='n8662' href='#n8662'>8662</a>
<a id='n8663' href='#n8663'>8663</a>
<a id='n8664' href='#n8664'>8664</a>
<a id='n8665' href='#n8665'>8665</a>
<a id='n8666' href='#n8666'>8666</a>
<a id='n8667' href='#n8667'>8667</a>
<a id='n8668' href='#n8668'>8668</a>
<a id='n8669' href='#n8669'>8669</a>
<a id='n8670' href='#n8670'>8670</a>
<a id='n8671' href='#n8671'>8671</a>
<a id='n8672' href='#n8672'>8672</a>
<a id='n8673' href='#n8673'>8673</a>
<a id='n8674' href='#n8674'>8674</a>
<a id='n8675' href='#n8675'>8675</a>
<a id='n8676' href='#n8676'>8676</a>
<a id='n8677' href='#n8677'>8677</a>
<a id='n8678' href='#n8678'>8678</a>
<a id='n8679' href='#n8679'>8679</a>
<a id='n8680' href='#n8680'>8680</a>
<a id='n8681' href='#n8681'>8681</a>
<a id='n8682' href='#n8682'>8682</a>
<a id='n8683' href='#n8683'>8683</a>
<a id='n8684' href='#n8684'>8684</a>
<a id='n8685' href='#n8685'>8685</a>
<a id='n8686' href='#n8686'>8686</a>
<a id='n8687' href='#n8687'>8687</a>
<a id='n8688' href='#n8688'>8688</a>
<a id='n8689' href='#n8689'>8689</a>
<a id='n8690' href='#n8690'>8690</a>
<a id='n8691' href='#n8691'>8691</a>
<a id='n8692' href='#n8692'>8692</a>
<a id='n8693' href='#n8693'>8693</a>
<a id='n8694' href='#n8694'>8694</a>
<a id='n8695' href='#n8695'>8695</a>
<a id='n8696' href='#n8696'>8696</a>
<a id='n8697' href='#n8697'>8697</a>
<a id='n8698' href='#n8698'>8698</a>
<a id='n8699' href='#n8699'>8699</a>
<a id='n8700' href='#n8700'>8700</a>
<a id='n8701' href='#n8701'>8701</a>
<a id='n8702' href='#n8702'>8702</a>
<a id='n8703' href='#n8703'>8703</a>
<a id='n8704' href='#n8704'>8704</a>
<a id='n8705' href='#n8705'>8705</a>
<a id='n8706' href='#n8706'>8706</a>
<a id='n8707' href='#n8707'>8707</a>
<a id='n8708' href='#n8708'>8708</a>
<a id='n8709' href='#n8709'>8709</a>
<a id='n8710' href='#n8710'>8710</a>
<a id='n8711' href='#n8711'>8711</a>
<a id='n8712' href='#n8712'>8712</a>
<a id='n8713' href='#n8713'>8713</a>
<a id='n8714' href='#n8714'>8714</a>
<a id='n8715' href='#n8715'>8715</a>
<a id='n8716' href='#n8716'>8716</a>
<a id='n8717' href='#n8717'>8717</a>
<a id='n8718' href='#n8718'>8718</a>
<a id='n8719' href='#n8719'>8719</a>
<a id='n8720' href='#n8720'>8720</a>
<a id='n8721' href='#n8721'>8721</a>
<a id='n8722' href='#n8722'>8722</a>
<a id='n8723' href='#n8723'>8723</a>
<a id='n8724' href='#n8724'>8724</a>
<a id='n8725' href='#n8725'>8725</a>
<a id='n8726' href='#n8726'>8726</a>
<a id='n8727' href='#n8727'>8727</a>
<a id='n8728' href='#n8728'>8728</a>
<a id='n8729' href='#n8729'>8729</a>
<a id='n8730' href='#n8730'>8730</a>
<a id='n8731' href='#n8731'>8731</a>
<a id='n8732' href='#n8732'>8732</a>
<a id='n8733' href='#n8733'>8733</a>
<a id='n8734' href='#n8734'>8734</a>
<a id='n8735' href='#n8735'>8735</a>
<a id='n8736' href='#n8736'>8736</a>
<a id='n8737' href='#n8737'>8737</a>
<a id='n8738' href='#n8738'>8738</a>
<a id='n8739' href='#n8739'>8739</a>
<a id='n8740' href='#n8740'>8740</a>
<a id='n8741' href='#n8741'>8741</a>
<a id='n8742' href='#n8742'>8742</a>
<a id='n8743' href='#n8743'>8743</a>
<a id='n8744' href='#n8744'>8744</a>
<a id='n8745' href='#n8745'>8745</a>
<a id='n8746' href='#n8746'>8746</a>
<a id='n8747' href='#n8747'>8747</a>
<a id='n8748' href='#n8748'>8748</a>
<a id='n8749' href='#n8749'>8749</a>
<a id='n8750' href='#n8750'>8750</a>
<a id='n8751' href='#n8751'>8751</a>
<a id='n8752' href='#n8752'>8752</a>
<a id='n8753' href='#n8753'>8753</a>
<a id='n8754' href='#n8754'>8754</a>
<a id='n8755' href='#n8755'>8755</a>
<a id='n8756' href='#n8756'>8756</a>
<a id='n8757' href='#n8757'>8757</a>
<a id='n8758' href='#n8758'>8758</a>
<a id='n8759' href='#n8759'>8759</a>
<a id='n8760' href='#n8760'>8760</a>
<a id='n8761' href='#n8761'>8761</a>
<a id='n8762' href='#n8762'>8762</a>
<a id='n8763' href='#n8763'>8763</a>
<a id='n8764' href='#n8764'>8764</a>
<a id='n8765' href='#n8765'>8765</a>
<a id='n8766' href='#n8766'>8766</a>
<a id='n8767' href='#n8767'>8767</a>
<a id='n8768' href='#n8768'>8768</a>
<a id='n8769' href='#n8769'>8769</a>
<a id='n8770' href='#n8770'>8770</a>
<a id='n8771' href='#n8771'>8771</a>
<a id='n8772' href='#n8772'>8772</a>
<a id='n8773' href='#n8773'>8773</a>
<a id='n8774' href='#n8774'>8774</a>
<a id='n8775' href='#n8775'>8775</a>
<a id='n8776' href='#n8776'>8776</a>
<a id='n8777' href='#n8777'>8777</a>
<a id='n8778' href='#n8778'>8778</a>
<a id='n8779' href='#n8779'>8779</a>
<a id='n8780' href='#n8780'>8780</a>
<a id='n8781' href='#n8781'>8781</a>
<a id='n8782' href='#n8782'>8782</a>
<a id='n8783' href='#n8783'>8783</a>
<a id='n8784' href='#n8784'>8784</a>
<a id='n8785' href='#n8785'>8785</a>
<a id='n8786' href='#n8786'>8786</a>
<a id='n8787' href='#n8787'>8787</a>
<a id='n8788' href='#n8788'>8788</a>
<a id='n8789' href='#n8789'>8789</a>
<a id='n8790' href='#n8790'>8790</a>
<a id='n8791' href='#n8791'>8791</a>
<a id='n8792' href='#n8792'>8792</a>
<a id='n8793' href='#n8793'>8793</a>
<a id='n8794' href='#n8794'>8794</a>
<a id='n8795' href='#n8795'>8795</a>
<a id='n8796' href='#n8796'>8796</a>
<a id='n8797' href='#n8797'>8797</a>
<a id='n8798' href='#n8798'>8798</a>
<a id='n8799' href='#n8799'>8799</a>
<a id='n8800' href='#n8800'>8800</a>
<a id='n8801' href='#n8801'>8801</a>
<a id='n8802' href='#n8802'>8802</a>
<a id='n8803' href='#n8803'>8803</a>
<a id='n8804' href='#n8804'>8804</a>
<a id='n8805' href='#n8805'>8805</a>
<a id='n8806' href='#n8806'>8806</a>
<a id='n8807' href='#n8807'>8807</a>
<a id='n8808' href='#n8808'>8808</a>
<a id='n8809' href='#n8809'>8809</a>
<a id='n8810' href='#n8810'>8810</a>
<a id='n8811' href='#n8811'>8811</a>
<a id='n8812' href='#n8812'>8812</a>
<a id='n8813' href='#n8813'>8813</a>
<a id='n8814' href='#n8814'>8814</a>
<a id='n8815' href='#n8815'>8815</a>
<a id='n8816' href='#n8816'>8816</a>
<a id='n8817' href='#n8817'>8817</a>
<a id='n8818' href='#n8818'>8818</a>
<a id='n8819' href='#n8819'>8819</a>
<a id='n8820' href='#n8820'>8820</a>
<a id='n8821' href='#n8821'>8821</a>
<a id='n8822' href='#n8822'>8822</a>
<a id='n8823' href='#n8823'>8823</a>
<a id='n8824' href='#n8824'>8824</a>
<a id='n8825' href='#n8825'>8825</a>
<a id='n8826' href='#n8826'>8826</a>
<a id='n8827' href='#n8827'>8827</a>
<a id='n8828' href='#n8828'>8828</a>
<a id='n8829' href='#n8829'>8829</a>
<a id='n8830' href='#n8830'>8830</a>
<a id='n8831' href='#n8831'>8831</a>
<a id='n8832' href='#n8832'>8832</a>
<a id='n8833' href='#n8833'>8833</a>
<a id='n8834' href='#n8834'>8834</a>
<a id='n8835' href='#n8835'>8835</a>
<a id='n8836' href='#n8836'>8836</a>
<a id='n8837' href='#n8837'>8837</a>
<a id='n8838' href='#n8838'>8838</a>
<a id='n8839' href='#n8839'>8839</a>
<a id='n8840' href='#n8840'>8840</a>
<a id='n8841' href='#n8841'>8841</a>
<a id='n8842' href='#n8842'>8842</a>
<a id='n8843' href='#n8843'>8843</a>
<a id='n8844' href='#n8844'>8844</a>
<a id='n8845' href='#n8845'>8845</a>
<a id='n8846' href='#n8846'>8846</a>
<a id='n8847' href='#n8847'>8847</a>
<a id='n8848' href='#n8848'>8848</a>
<a id='n8849' href='#n8849'>8849</a>
<a id='n8850' href='#n8850'>8850</a>
<a id='n8851' href='#n8851'>8851</a>
<a id='n8852' href='#n8852'>8852</a>
<a id='n8853' href='#n8853'>8853</a>
<a id='n8854' href='#n8854'>8854</a>
<a id='n8855' href='#n8855'>8855</a>
<a id='n8856' href='#n8856'>8856</a>
<a id='n8857' href='#n8857'>8857</a>
<a id='n8858' href='#n8858'>8858</a>
<a id='n8859' href='#n8859'>8859</a>
<a id='n8860' href='#n8860'>8860</a>
<a id='n8861' href='#n8861'>8861</a>
<a id='n8862' href='#n8862'>8862</a>
<a id='n8863' href='#n8863'>8863</a>
<a id='n8864' href='#n8864'>8864</a>
<a id='n8865' href='#n8865'>8865</a>
<a id='n8866' href='#n8866'>8866</a>
<a id='n8867' href='#n8867'>8867</a>
<a id='n8868' href='#n8868'>8868</a>
<a id='n8869' href='#n8869'>8869</a>
<a id='n8870' href='#n8870'>8870</a>
<a id='n8871' href='#n8871'>8871</a>
<a id='n8872' href='#n8872'>8872</a>
<a id='n8873' href='#n8873'>8873</a>
<a id='n8874' href='#n8874'>8874</a>
<a id='n8875' href='#n8875'>8875</a>
<a id='n8876' href='#n8876'>8876</a>
<a id='n8877' href='#n8877'>8877</a>
<a id='n8878' href='#n8878'>8878</a>
<a id='n8879' href='#n8879'>8879</a>
<a id='n8880' href='#n8880'>8880</a>
<a id='n8881' href='#n8881'>8881</a>
<a id='n8882' href='#n8882'>8882</a>
<a id='n8883' href='#n8883'>8883</a>
<a id='n8884' href='#n8884'>8884</a>
<a id='n8885' href='#n8885'>8885</a>
<a id='n8886' href='#n8886'>8886</a>
<a id='n8887' href='#n8887'>8887</a>
<a id='n8888' href='#n8888'>8888</a>
<a id='n8889' href='#n8889'>8889</a>
<a id='n8890' href='#n8890'>8890</a>
<a id='n8891' href='#n8891'>8891</a>
<a id='n8892' href='#n8892'>8892</a>
<a id='n8893' href='#n8893'>8893</a>
<a id='n8894' href='#n8894'>8894</a>
<a id='n8895' href='#n8895'>8895</a>
<a id='n8896' href='#n8896'>8896</a>
<a id='n8897' href='#n8897'>8897</a>
<a id='n8898' href='#n8898'>8898</a>
<a id='n8899' href='#n8899'>8899</a>
<a id='n8900' href='#n8900'>8900</a>
<a id='n8901' href='#n8901'>8901</a>
<a id='n8902' href='#n8902'>8902</a>
<a id='n8903' href='#n8903'>8903</a>
<a id='n8904' href='#n8904'>8904</a>
<a id='n8905' href='#n8905'>8905</a>
<a id='n8906' href='#n8906'>8906</a>
<a id='n8907' href='#n8907'>8907</a>
<a id='n8908' href='#n8908'>8908</a>
<a id='n8909' href='#n8909'>8909</a>
<a id='n8910' href='#n8910'>8910</a>
<a id='n8911' href='#n8911'>8911</a>
<a id='n8912' href='#n8912'>8912</a>
<a id='n8913' href='#n8913'>8913</a>
<a id='n8914' href='#n8914'>8914</a>
<a id='n8915' href='#n8915'>8915</a>
<a id='n8916' href='#n8916'>8916</a>
<a id='n8917' href='#n8917'>8917</a>
<a id='n8918' href='#n8918'>8918</a>
<a id='n8919' href='#n8919'>8919</a>
<a id='n8920' href='#n8920'>8920</a>
<a id='n8921' href='#n8921'>8921</a>
<a id='n8922' href='#n8922'>8922</a>
<a id='n8923' href='#n8923'>8923</a>
<a id='n8924' href='#n8924'>8924</a>
<a id='n8925' href='#n8925'>8925</a>
<a id='n8926' href='#n8926'>8926</a>
<a id='n8927' href='#n8927'>8927</a>
<a id='n8928' href='#n8928'>8928</a>
<a id='n8929' href='#n8929'>8929</a>
<a id='n8930' href='#n8930'>8930</a>
<a id='n8931' href='#n8931'>8931</a>
<a id='n8932' href='#n8932'>8932</a>
<a id='n8933' href='#n8933'>8933</a>
<a id='n8934' href='#n8934'>8934</a>
<a id='n8935' href='#n8935'>8935</a>
<a id='n8936' href='#n8936'>8936</a>
<a id='n8937' href='#n8937'>8937</a>
<a id='n8938' href='#n8938'>8938</a>
<a id='n8939' href='#n8939'>8939</a>
<a id='n8940' href='#n8940'>8940</a>
<a id='n8941' href='#n8941'>8941</a>
<a id='n8942' href='#n8942'>8942</a>
<a id='n8943' href='#n8943'>8943</a>
<a id='n8944' href='#n8944'>8944</a>
<a id='n8945' href='#n8945'>8945</a>
<a id='n8946' href='#n8946'>8946</a>
<a id='n8947' href='#n8947'>8947</a>
<a id='n8948' href='#n8948'>8948</a>
<a id='n8949' href='#n8949'>8949</a>
<a id='n8950' href='#n8950'>8950</a>
<a id='n8951' href='#n8951'>8951</a>
<a id='n8952' href='#n8952'>8952</a>
<a id='n8953' href='#n8953'>8953</a>
<a id='n8954' href='#n8954'>8954</a>
<a id='n8955' href='#n8955'>8955</a>
<a id='n8956' href='#n8956'>8956</a>
<a id='n8957' href='#n8957'>8957</a>
<a id='n8958' href='#n8958'>8958</a>
<a id='n8959' href='#n8959'>8959</a>
<a id='n8960' href='#n8960'>8960</a>
<a id='n8961' href='#n8961'>8961</a>
<a id='n8962' href='#n8962'>8962</a>
<a id='n8963' href='#n8963'>8963</a>
<a id='n8964' href='#n8964'>8964</a>
<a id='n8965' href='#n8965'>8965</a>
<a id='n8966' href='#n8966'>8966</a>
<a id='n8967' href='#n8967'>8967</a>
<a id='n8968' href='#n8968'>8968</a>
<a id='n8969' href='#n8969'>8969</a>
<a id='n8970' href='#n8970'>8970</a>
<a id='n8971' href='#n8971'>8971</a>
<a id='n8972' href='#n8972'>8972</a>
<a id='n8973' href='#n8973'>8973</a>
<a id='n8974' href='#n8974'>8974</a>
<a id='n8975' href='#n8975'>8975</a>
<a id='n8976' href='#n8976'>8976</a>
<a id='n8977' href='#n8977'>8977</a>
<a id='n8978' href='#n8978'>8978</a>
<a id='n8979' href='#n8979'>8979</a>
<a id='n8980' href='#n8980'>8980</a>
<a id='n8981' href='#n8981'>8981</a>
<a id='n8982' href='#n8982'>8982</a>
<a id='n8983' href='#n8983'>8983</a>
<a id='n8984' href='#n8984'>8984</a>
<a id='n8985' href='#n8985'>8985</a>
<a id='n8986' href='#n8986'>8986</a>
<a id='n8987' href='#n8987'>8987</a>
<a id='n8988' href='#n8988'>8988</a>
<a id='n8989' href='#n8989'>8989</a>
<a id='n8990' href='#n8990'>8990</a>
<a id='n8991' href='#n8991'>8991</a>
<a id='n8992' href='#n8992'>8992</a>
<a id='n8993' href='#n8993'>8993</a>
<a id='n8994' href='#n8994'>8994</a>
<a id='n8995' href='#n8995'>8995</a>
<a id='n8996' href='#n8996'>8996</a>
<a id='n8997' href='#n8997'>8997</a>
<a id='n8998' href='#n8998'>8998</a>
<a id='n8999' href='#n8999'>8999</a>
<a id='n9000' href='#n9000'>9000</a>
<a id='n9001' href='#n9001'>9001</a>
<a id='n9002' href='#n9002'>9002</a>
<a id='n9003' href='#n9003'>9003</a>
<a id='n9004' href='#n9004'>9004</a>
<a id='n9005' href='#n9005'>9005</a>
<a id='n9006' href='#n9006'>9006</a>
<a id='n9007' href='#n9007'>9007</a>
<a id='n9008' href='#n9008'>9008</a>
<a id='n9009' href='#n9009'>9009</a>
<a id='n9010' href='#n9010'>9010</a>
<a id='n9011' href='#n9011'>9011</a>
<a id='n9012' href='#n9012'>9012</a>
<a id='n9013' href='#n9013'>9013</a>
<a id='n9014' href='#n9014'>9014</a>
<a id='n9015' href='#n9015'>9015</a>
<a id='n9016' href='#n9016'>9016</a>
<a id='n9017' href='#n9017'>9017</a>
<a id='n9018' href='#n9018'>9018</a>
<a id='n9019' href='#n9019'>9019</a>
<a id='n9020' href='#n9020'>9020</a>
<a id='n9021' href='#n9021'>9021</a>
<a id='n9022' href='#n9022'>9022</a>
<a id='n9023' href='#n9023'>9023</a>
<a id='n9024' href='#n9024'>9024</a>
<a id='n9025' href='#n9025'>9025</a>
<a id='n9026' href='#n9026'>9026</a>
<a id='n9027' href='#n9027'>9027</a>
<a id='n9028' href='#n9028'>9028</a>
<a id='n9029' href='#n9029'>9029</a>
<a id='n9030' href='#n9030'>9030</a>
<a id='n9031' href='#n9031'>9031</a>
<a id='n9032' href='#n9032'>9032</a>
<a id='n9033' href='#n9033'>9033</a>
<a id='n9034' href='#n9034'>9034</a>
<a id='n9035' href='#n9035'>9035</a>
<a id='n9036' href='#n9036'>9036</a>
<a id='n9037' href='#n9037'>9037</a>
<a id='n9038' href='#n9038'>9038</a>
<a id='n9039' href='#n9039'>9039</a>
<a id='n9040' href='#n9040'>9040</a>
<a id='n9041' href='#n9041'>9041</a>
<a id='n9042' href='#n9042'>9042</a>
<a id='n9043' href='#n9043'>9043</a>
<a id='n9044' href='#n9044'>9044</a>
<a id='n9045' href='#n9045'>9045</a>
<a id='n9046' href='#n9046'>9046</a>
<a id='n9047' href='#n9047'>9047</a>
<a id='n9048' href='#n9048'>9048</a>
<a id='n9049' href='#n9049'>9049</a>
<a id='n9050' href='#n9050'>9050</a>
<a id='n9051' href='#n9051'>9051</a>
<a id='n9052' href='#n9052'>9052</a>
<a id='n9053' href='#n9053'>9053</a>
<a id='n9054' href='#n9054'>9054</a>
<a id='n9055' href='#n9055'>9055</a>
<a id='n9056' href='#n9056'>9056</a>
<a id='n9057' href='#n9057'>9057</a>
<a id='n9058' href='#n9058'>9058</a>
<a id='n9059' href='#n9059'>9059</a>
<a id='n9060' href='#n9060'>9060</a>
<a id='n9061' href='#n9061'>9061</a>
<a id='n9062' href='#n9062'>9062</a>
<a id='n9063' href='#n9063'>9063</a>
<a id='n9064' href='#n9064'>9064</a>
<a id='n9065' href='#n9065'>9065</a>
<a id='n9066' href='#n9066'>9066</a>
<a id='n9067' href='#n9067'>9067</a>
<a id='n9068' href='#n9068'>9068</a>
<a id='n9069' href='#n9069'>9069</a>
<a id='n9070' href='#n9070'>9070</a>
<a id='n9071' href='#n9071'>9071</a>
<a id='n9072' href='#n9072'>9072</a>
<a id='n9073' href='#n9073'>9073</a>
<a id='n9074' href='#n9074'>9074</a>
<a id='n9075' href='#n9075'>9075</a>
<a id='n9076' href='#n9076'>9076</a>
<a id='n9077' href='#n9077'>9077</a>
<a id='n9078' href='#n9078'>9078</a>
<a id='n9079' href='#n9079'>9079</a>
<a id='n9080' href='#n9080'>9080</a>
<a id='n9081' href='#n9081'>9081</a>
<a id='n9082' href='#n9082'>9082</a>
<a id='n9083' href='#n9083'>9083</a>
<a id='n9084' href='#n9084'>9084</a>
<a id='n9085' href='#n9085'>9085</a>
<a id='n9086' href='#n9086'>9086</a>
<a id='n9087' href='#n9087'>9087</a>
<a id='n9088' href='#n9088'>9088</a>
<a id='n9089' href='#n9089'>9089</a>
<a id='n9090' href='#n9090'>9090</a>
<a id='n9091' href='#n9091'>9091</a>
<a id='n9092' href='#n9092'>9092</a>
<a id='n9093' href='#n9093'>9093</a>
<a id='n9094' href='#n9094'>9094</a>
<a id='n9095' href='#n9095'>9095</a>
<a id='n9096' href='#n9096'>9096</a>
<a id='n9097' href='#n9097'>9097</a>
<a id='n9098' href='#n9098'>9098</a>
<a id='n9099' href='#n9099'>9099</a>
<a id='n9100' href='#n9100'>9100</a>
<a id='n9101' href='#n9101'>9101</a>
<a id='n9102' href='#n9102'>9102</a>
<a id='n9103' href='#n9103'>9103</a>
<a id='n9104' href='#n9104'>9104</a>
<a id='n9105' href='#n9105'>9105</a>
<a id='n9106' href='#n9106'>9106</a>
<a id='n9107' href='#n9107'>9107</a>
<a id='n9108' href='#n9108'>9108</a>
<a id='n9109' href='#n9109'>9109</a>
<a id='n9110' href='#n9110'>9110</a>
<a id='n9111' href='#n9111'>9111</a>
<a id='n9112' href='#n9112'>9112</a>
<a id='n9113' href='#n9113'>9113</a>
<a id='n9114' href='#n9114'>9114</a>
<a id='n9115' href='#n9115'>9115</a>
<a id='n9116' href='#n9116'>9116</a>
<a id='n9117' href='#n9117'>9117</a>
<a id='n9118' href='#n9118'>9118</a>
<a id='n9119' href='#n9119'>9119</a>
<a id='n9120' href='#n9120'>9120</a>
<a id='n9121' href='#n9121'>9121</a>
<a id='n9122' href='#n9122'>9122</a>
<a id='n9123' href='#n9123'>9123</a>
<a id='n9124' href='#n9124'>9124</a>
<a id='n9125' href='#n9125'>9125</a>
<a id='n9126' href='#n9126'>9126</a>
<a id='n9127' href='#n9127'>9127</a>
<a id='n9128' href='#n9128'>9128</a>
<a id='n9129' href='#n9129'>9129</a>
<a id='n9130' href='#n9130'>9130</a>
<a id='n9131' href='#n9131'>9131</a>
<a id='n9132' href='#n9132'>9132</a>
<a id='n9133' href='#n9133'>9133</a>
<a id='n9134' href='#n9134'>9134</a>
<a id='n9135' href='#n9135'>9135</a>
<a id='n9136' href='#n9136'>9136</a>
<a id='n9137' href='#n9137'>9137</a>
<a id='n9138' href='#n9138'>9138</a>
<a id='n9139' href='#n9139'>9139</a>
<a id='n9140' href='#n9140'>9140</a>
<a id='n9141' href='#n9141'>9141</a>
<a id='n9142' href='#n9142'>9142</a>
<a id='n9143' href='#n9143'>9143</a>
<a id='n9144' href='#n9144'>9144</a>
<a id='n9145' href='#n9145'>9145</a>
<a id='n9146' href='#n9146'>9146</a>
<a id='n9147' href='#n9147'>9147</a>
<a id='n9148' href='#n9148'>9148</a>
<a id='n9149' href='#n9149'>9149</a>
<a id='n9150' href='#n9150'>9150</a>
<a id='n9151' href='#n9151'>9151</a>
<a id='n9152' href='#n9152'>9152</a>
<a id='n9153' href='#n9153'>9153</a>
<a id='n9154' href='#n9154'>9154</a>
<a id='n9155' href='#n9155'>9155</a>
<a id='n9156' href='#n9156'>9156</a>
<a id='n9157' href='#n9157'>9157</a>
<a id='n9158' href='#n9158'>9158</a>
<a id='n9159' href='#n9159'>9159</a>
<a id='n9160' href='#n9160'>9160</a>
<a id='n9161' href='#n9161'>9161</a>
<a id='n9162' href='#n9162'>9162</a>
<a id='n9163' href='#n9163'>9163</a>
<a id='n9164' href='#n9164'>9164</a>
<a id='n9165' href='#n9165'>9165</a>
<a id='n9166' href='#n9166'>9166</a>
<a id='n9167' href='#n9167'>9167</a>
<a id='n9168' href='#n9168'>9168</a>
<a id='n9169' href='#n9169'>9169</a>
<a id='n9170' href='#n9170'>9170</a>
<a id='n9171' href='#n9171'>9171</a>
<a id='n9172' href='#n9172'>9172</a>
<a id='n9173' href='#n9173'>9173</a>
<a id='n9174' href='#n9174'>9174</a>
<a id='n9175' href='#n9175'>9175</a>
<a id='n9176' href='#n9176'>9176</a>
<a id='n9177' href='#n9177'>9177</a>
<a id='n9178' href='#n9178'>9178</a>
<a id='n9179' href='#n9179'>9179</a>
<a id='n9180' href='#n9180'>9180</a>
<a id='n9181' href='#n9181'>9181</a>
<a id='n9182' href='#n9182'>9182</a>
<a id='n9183' href='#n9183'>9183</a>
<a id='n9184' href='#n9184'>9184</a>
<a id='n9185' href='#n9185'>9185</a>
<a id='n9186' href='#n9186'>9186</a>
<a id='n9187' href='#n9187'>9187</a>
<a id='n9188' href='#n9188'>9188</a>
<a id='n9189' href='#n9189'>9189</a>
<a id='n9190' href='#n9190'>9190</a>
<a id='n9191' href='#n9191'>9191</a>
<a id='n9192' href='#n9192'>9192</a>
<a id='n9193' href='#n9193'>9193</a>
<a id='n9194' href='#n9194'>9194</a>
<a id='n9195' href='#n9195'>9195</a>
<a id='n9196' href='#n9196'>9196</a>
<a id='n9197' href='#n9197'>9197</a>
<a id='n9198' href='#n9198'>9198</a>
<a id='n9199' href='#n9199'>9199</a>
<a id='n9200' href='#n9200'>9200</a>
<a id='n9201' href='#n9201'>9201</a>
<a id='n9202' href='#n9202'>9202</a>
<a id='n9203' href='#n9203'>9203</a>
<a id='n9204' href='#n9204'>9204</a>
<a id='n9205' href='#n9205'>9205</a>
<a id='n9206' href='#n9206'>9206</a>
<a id='n9207' href='#n9207'>9207</a>
<a id='n9208' href='#n9208'>9208</a>
<a id='n9209' href='#n9209'>9209</a>
<a id='n9210' href='#n9210'>9210</a>
<a id='n9211' href='#n9211'>9211</a>
<a id='n9212' href='#n9212'>9212</a>
<a id='n9213' href='#n9213'>9213</a>
<a id='n9214' href='#n9214'>9214</a>
<a id='n9215' href='#n9215'>9215</a>
<a id='n9216' href='#n9216'>9216</a>
<a id='n9217' href='#n9217'>9217</a>
<a id='n9218' href='#n9218'>9218</a>
<a id='n9219' href='#n9219'>9219</a>
<a id='n9220' href='#n9220'>9220</a>
<a id='n9221' href='#n9221'>9221</a>
<a id='n9222' href='#n9222'>9222</a>
<a id='n9223' href='#n9223'>9223</a>
<a id='n9224' href='#n9224'>9224</a>
<a id='n9225' href='#n9225'>9225</a>
<a id='n9226' href='#n9226'>9226</a>
<a id='n9227' href='#n9227'>9227</a>
<a id='n9228' href='#n9228'>9228</a>
<a id='n9229' href='#n9229'>9229</a>
<a id='n9230' href='#n9230'>9230</a>
<a id='n9231' href='#n9231'>9231</a>
<a id='n9232' href='#n9232'>9232</a>
<a id='n9233' href='#n9233'>9233</a>
<a id='n9234' href='#n9234'>9234</a>
<a id='n9235' href='#n9235'>9235</a>
<a id='n9236' href='#n9236'>9236</a>
<a id='n9237' href='#n9237'>9237</a>
<a id='n9238' href='#n9238'>9238</a>
<a id='n9239' href='#n9239'>9239</a>
<a id='n9240' href='#n9240'>9240</a>
<a id='n9241' href='#n9241'>9241</a>
<a id='n9242' href='#n9242'>9242</a>
<a id='n9243' href='#n9243'>9243</a>
<a id='n9244' href='#n9244'>9244</a>
<a id='n9245' href='#n9245'>9245</a>
<a id='n9246' href='#n9246'>9246</a>
<a id='n9247' href='#n9247'>9247</a>
<a id='n9248' href='#n9248'>9248</a>
<a id='n9249' href='#n9249'>9249</a>
<a id='n9250' href='#n9250'>9250</a>
<a id='n9251' href='#n9251'>9251</a>
<a id='n9252' href='#n9252'>9252</a>
<a id='n9253' href='#n9253'>9253</a>
<a id='n9254' href='#n9254'>9254</a>
<a id='n9255' href='#n9255'>9255</a>
<a id='n9256' href='#n9256'>9256</a>
<a id='n9257' href='#n9257'>9257</a>
<a id='n9258' href='#n9258'>9258</a>
<a id='n9259' href='#n9259'>9259</a>
<a id='n9260' href='#n9260'>9260</a>
<a id='n9261' href='#n9261'>9261</a>
<a id='n9262' href='#n9262'>9262</a>
<a id='n9263' href='#n9263'>9263</a>
<a id='n9264' href='#n9264'>9264</a>
<a id='n9265' href='#n9265'>9265</a>
<a id='n9266' href='#n9266'>9266</a>
<a id='n9267' href='#n9267'>9267</a>
<a id='n9268' href='#n9268'>9268</a>
<a id='n9269' href='#n9269'>9269</a>
<a id='n9270' href='#n9270'>9270</a>
<a id='n9271' href='#n9271'>9271</a>
<a id='n9272' href='#n9272'>9272</a>
<a id='n9273' href='#n9273'>9273</a>
<a id='n9274' href='#n9274'>9274</a>
<a id='n9275' href='#n9275'>9275</a>
<a id='n9276' href='#n9276'>9276</a>
<a id='n9277' href='#n9277'>9277</a>
<a id='n9278' href='#n9278'>9278</a>
<a id='n9279' href='#n9279'>9279</a>
<a id='n9280' href='#n9280'>9280</a>
<a id='n9281' href='#n9281'>9281</a>
<a id='n9282' href='#n9282'>9282</a>
<a id='n9283' href='#n9283'>9283</a>
<a id='n9284' href='#n9284'>9284</a>
<a id='n9285' href='#n9285'>9285</a>
<a id='n9286' href='#n9286'>9286</a>
<a id='n9287' href='#n9287'>9287</a>
<a id='n9288' href='#n9288'>9288</a>
<a id='n9289' href='#n9289'>9289</a>
<a id='n9290' href='#n9290'>9290</a>
<a id='n9291' href='#n9291'>9291</a>
<a id='n9292' href='#n9292'>9292</a>
<a id='n9293' href='#n9293'>9293</a>
<a id='n9294' href='#n9294'>9294</a>
<a id='n9295' href='#n9295'>9295</a>
<a id='n9296' href='#n9296'>9296</a>
<a id='n9297' href='#n9297'>9297</a>
<a id='n9298' href='#n9298'>9298</a>
<a id='n9299' href='#n9299'>9299</a>
<a id='n9300' href='#n9300'>9300</a>
<a id='n9301' href='#n9301'>9301</a>
<a id='n9302' href='#n9302'>9302</a>
<a id='n9303' href='#n9303'>9303</a>
<a id='n9304' href='#n9304'>9304</a>
<a id='n9305' href='#n9305'>9305</a>
<a id='n9306' href='#n9306'>9306</a>
<a id='n9307' href='#n9307'>9307</a>
<a id='n9308' href='#n9308'>9308</a>
<a id='n9309' href='#n9309'>9309</a>
<a id='n9310' href='#n9310'>9310</a>
<a id='n9311' href='#n9311'>9311</a>
<a id='n9312' href='#n9312'>9312</a>
<a id='n9313' href='#n9313'>9313</a>
<a id='n9314' href='#n9314'>9314</a>
<a id='n9315' href='#n9315'>9315</a>
<a id='n9316' href='#n9316'>9316</a>
<a id='n9317' href='#n9317'>9317</a>
<a id='n9318' href='#n9318'>9318</a>
<a id='n9319' href='#n9319'>9319</a>
<a id='n9320' href='#n9320'>9320</a>
<a id='n9321' href='#n9321'>9321</a>
<a id='n9322' href='#n9322'>9322</a>
<a id='n9323' href='#n9323'>9323</a>
<a id='n9324' href='#n9324'>9324</a>
<a id='n9325' href='#n9325'>9325</a>
<a id='n9326' href='#n9326'>9326</a>
<a id='n9327' href='#n9327'>9327</a>
<a id='n9328' href='#n9328'>9328</a>
<a id='n9329' href='#n9329'>9329</a>
<a id='n9330' href='#n9330'>9330</a>
<a id='n9331' href='#n9331'>9331</a>
<a id='n9332' href='#n9332'>9332</a>
<a id='n9333' href='#n9333'>9333</a>
<a id='n9334' href='#n9334'>9334</a>
<a id='n9335' href='#n9335'>9335</a>
<a id='n9336' href='#n9336'>9336</a>
<a id='n9337' href='#n9337'>9337</a>
<a id='n9338' href='#n9338'>9338</a>
<a id='n9339' href='#n9339'>9339</a>
<a id='n9340' href='#n9340'>9340</a>
<a id='n9341' href='#n9341'>9341</a>
<a id='n9342' href='#n9342'>9342</a>
<a id='n9343' href='#n9343'>9343</a>
<a id='n9344' href='#n9344'>9344</a>
<a id='n9345' href='#n9345'>9345</a>
<a id='n9346' href='#n9346'>9346</a>
<a id='n9347' href='#n9347'>9347</a>
<a id='n9348' href='#n9348'>9348</a>
<a id='n9349' href='#n9349'>9349</a>
<a id='n9350' href='#n9350'>9350</a>
<a id='n9351' href='#n9351'>9351</a>
<a id='n9352' href='#n9352'>9352</a>
<a id='n9353' href='#n9353'>9353</a>
<a id='n9354' href='#n9354'>9354</a>
<a id='n9355' href='#n9355'>9355</a>
<a id='n9356' href='#n9356'>9356</a>
<a id='n9357' href='#n9357'>9357</a>
<a id='n9358' href='#n9358'>9358</a>
<a id='n9359' href='#n9359'>9359</a>
<a id='n9360' href='#n9360'>9360</a>
<a id='n9361' href='#n9361'>9361</a>
<a id='n9362' href='#n9362'>9362</a>
<a id='n9363' href='#n9363'>9363</a>
<a id='n9364' href='#n9364'>9364</a>
<a id='n9365' href='#n9365'>9365</a>
<a id='n9366' href='#n9366'>9366</a>
<a id='n9367' href='#n9367'>9367</a>
<a id='n9368' href='#n9368'>9368</a>
<a id='n9369' href='#n9369'>9369</a>
<a id='n9370' href='#n9370'>9370</a>
<a id='n9371' href='#n9371'>9371</a>
<a id='n9372' href='#n9372'>9372</a>
<a id='n9373' href='#n9373'>9373</a>
<a id='n9374' href='#n9374'>9374</a>
<a id='n9375' href='#n9375'>9375</a>
<a id='n9376' href='#n9376'>9376</a>
<a id='n9377' href='#n9377'>9377</a>
<a id='n9378' href='#n9378'>9378</a>
<a id='n9379' href='#n9379'>9379</a>
<a id='n9380' href='#n9380'>9380</a>
<a id='n9381' href='#n9381'>9381</a>
<a id='n9382' href='#n9382'>9382</a>
<a id='n9383' href='#n9383'>9383</a>
<a id='n9384' href='#n9384'>9384</a>
<a id='n9385' href='#n9385'>9385</a>
<a id='n9386' href='#n9386'>9386</a>
<a id='n9387' href='#n9387'>9387</a>
<a id='n9388' href='#n9388'>9388</a>
<a id='n9389' href='#n9389'>9389</a>
<a id='n9390' href='#n9390'>9390</a>
<a id='n9391' href='#n9391'>9391</a>
<a id='n9392' href='#n9392'>9392</a>
<a id='n9393' href='#n9393'>9393</a>
<a id='n9394' href='#n9394'>9394</a>
<a id='n9395' href='#n9395'>9395</a>
<a id='n9396' href='#n9396'>9396</a>
<a id='n9397' href='#n9397'>9397</a>
<a id='n9398' href='#n9398'>9398</a>
<a id='n9399' href='#n9399'>9399</a>
<a id='n9400' href='#n9400'>9400</a>
<a id='n9401' href='#n9401'>9401</a>
<a id='n9402' href='#n9402'>9402</a>
<a id='n9403' href='#n9403'>9403</a>
<a id='n9404' href='#n9404'>9404</a>
<a id='n9405' href='#n9405'>9405</a>
<a id='n9406' href='#n9406'>9406</a>
<a id='n9407' href='#n9407'>9407</a>
<a id='n9408' href='#n9408'>9408</a>
<a id='n9409' href='#n9409'>9409</a>
<a id='n9410' href='#n9410'>9410</a>
<a id='n9411' href='#n9411'>9411</a>
<a id='n9412' href='#n9412'>9412</a>
<a id='n9413' href='#n9413'>9413</a>
<a id='n9414' href='#n9414'>9414</a>
<a id='n9415' href='#n9415'>9415</a>
<a id='n9416' href='#n9416'>9416</a>
<a id='n9417' href='#n9417'>9417</a>
<a id='n9418' href='#n9418'>9418</a>
<a id='n9419' href='#n9419'>9419</a>
<a id='n9420' href='#n9420'>9420</a>
<a id='n9421' href='#n9421'>9421</a>
<a id='n9422' href='#n9422'>9422</a>
<a id='n9423' href='#n9423'>9423</a>
<a id='n9424' href='#n9424'>9424</a>
<a id='n9425' href='#n9425'>9425</a>
<a id='n9426' href='#n9426'>9426</a>
<a id='n9427' href='#n9427'>9427</a>
<a id='n9428' href='#n9428'>9428</a>
<a id='n9429' href='#n9429'>9429</a>
<a id='n9430' href='#n9430'>9430</a>
<a id='n9431' href='#n9431'>9431</a>
<a id='n9432' href='#n9432'>9432</a>
<a id='n9433' href='#n9433'>9433</a>
<a id='n9434' href='#n9434'>9434</a>
<a id='n9435' href='#n9435'>9435</a>
<a id='n9436' href='#n9436'>9436</a>
<a id='n9437' href='#n9437'>9437</a>
<a id='n9438' href='#n9438'>9438</a>
<a id='n9439' href='#n9439'>9439</a>
<a id='n9440' href='#n9440'>9440</a>
<a id='n9441' href='#n9441'>9441</a>
<a id='n9442' href='#n9442'>9442</a>
<a id='n9443' href='#n9443'>9443</a>
<a id='n9444' href='#n9444'>9444</a>
<a id='n9445' href='#n9445'>9445</a>
<a id='n9446' href='#n9446'>9446</a>
<a id='n9447' href='#n9447'>9447</a>
<a id='n9448' href='#n9448'>9448</a>
<a id='n9449' href='#n9449'>9449</a>
<a id='n9450' href='#n9450'>9450</a>
<a id='n9451' href='#n9451'>9451</a>
<a id='n9452' href='#n9452'>9452</a>
<a id='n9453' href='#n9453'>9453</a>
<a id='n9454' href='#n9454'>9454</a>
<a id='n9455' href='#n9455'>9455</a>
<a id='n9456' href='#n9456'>9456</a>
<a id='n9457' href='#n9457'>9457</a>
<a id='n9458' href='#n9458'>9458</a>
<a id='n9459' href='#n9459'>9459</a>
<a id='n9460' href='#n9460'>9460</a>
<a id='n9461' href='#n9461'>9461</a>
<a id='n9462' href='#n9462'>9462</a>
<a id='n9463' href='#n9463'>9463</a>
<a id='n9464' href='#n9464'>9464</a>
<a id='n9465' href='#n9465'>9465</a>
<a id='n9466' href='#n9466'>9466</a>
<a id='n9467' href='#n9467'>9467</a>
<a id='n9468' href='#n9468'>9468</a>
<a id='n9469' href='#n9469'>9469</a>
<a id='n9470' href='#n9470'>9470</a>
<a id='n9471' href='#n9471'>9471</a>
<a id='n9472' href='#n9472'>9472</a>
<a id='n9473' href='#n9473'>9473</a>
<a id='n9474' href='#n9474'>9474</a>
<a id='n9475' href='#n9475'>9475</a>
<a id='n9476' href='#n9476'>9476</a>
<a id='n9477' href='#n9477'>9477</a>
<a id='n9478' href='#n9478'>9478</a>
<a id='n9479' href='#n9479'>9479</a>
<a id='n9480' href='#n9480'>9480</a>
<a id='n9481' href='#n9481'>9481</a>
<a id='n9482' href='#n9482'>9482</a>
<a id='n9483' href='#n9483'>9483</a>
<a id='n9484' href='#n9484'>9484</a>
<a id='n9485' href='#n9485'>9485</a>
<a id='n9486' href='#n9486'>9486</a>
<a id='n9487' href='#n9487'>9487</a>
<a id='n9488' href='#n9488'>9488</a>
<a id='n9489' href='#n9489'>9489</a>
<a id='n9490' href='#n9490'>9490</a>
<a id='n9491' href='#n9491'>9491</a>
<a id='n9492' href='#n9492'>9492</a>
<a id='n9493' href='#n9493'>9493</a>
<a id='n9494' href='#n9494'>9494</a>
<a id='n9495' href='#n9495'>9495</a>
<a id='n9496' href='#n9496'>9496</a>
<a id='n9497' href='#n9497'>9497</a>
<a id='n9498' href='#n9498'>9498</a>
<a id='n9499' href='#n9499'>9499</a>
<a id='n9500' href='#n9500'>9500</a>
<a id='n9501' href='#n9501'>9501</a>
<a id='n9502' href='#n9502'>9502</a>
<a id='n9503' href='#n9503'>9503</a>
<a id='n9504' href='#n9504'>9504</a>
<a id='n9505' href='#n9505'>9505</a>
<a id='n9506' href='#n9506'>9506</a>
<a id='n9507' href='#n9507'>9507</a>
<a id='n9508' href='#n9508'>9508</a>
<a id='n9509' href='#n9509'>9509</a>
<a id='n9510' href='#n9510'>9510</a>
<a id='n9511' href='#n9511'>9511</a>
<a id='n9512' href='#n9512'>9512</a>
<a id='n9513' href='#n9513'>9513</a>
<a id='n9514' href='#n9514'>9514</a>
<a id='n9515' href='#n9515'>9515</a>
<a id='n9516' href='#n9516'>9516</a>
<a id='n9517' href='#n9517'>9517</a>
<a id='n9518' href='#n9518'>9518</a>
<a id='n9519' href='#n9519'>9519</a>
<a id='n9520' href='#n9520'>9520</a>
<a id='n9521' href='#n9521'>9521</a>
<a id='n9522' href='#n9522'>9522</a>
<a id='n9523' href='#n9523'>9523</a>
<a id='n9524' href='#n9524'>9524</a>
<a id='n9525' href='#n9525'>9525</a>
<a id='n9526' href='#n9526'>9526</a>
<a id='n9527' href='#n9527'>9527</a>
<a id='n9528' href='#n9528'>9528</a>
<a id='n9529' href='#n9529'>9529</a>
<a id='n9530' href='#n9530'>9530</a>
<a id='n9531' href='#n9531'>9531</a>
<a id='n9532' href='#n9532'>9532</a>
<a id='n9533' href='#n9533'>9533</a>
<a id='n9534' href='#n9534'>9534</a>
<a id='n9535' href='#n9535'>9535</a>
<a id='n9536' href='#n9536'>9536</a>
<a id='n9537' href='#n9537'>9537</a>
<a id='n9538' href='#n9538'>9538</a>
<a id='n9539' href='#n9539'>9539</a>
<a id='n9540' href='#n9540'>9540</a>
<a id='n9541' href='#n9541'>9541</a>
<a id='n9542' href='#n9542'>9542</a>
<a id='n9543' href='#n9543'>9543</a>
<a id='n9544' href='#n9544'>9544</a>
<a id='n9545' href='#n9545'>9545</a>
<a id='n9546' href='#n9546'>9546</a>
<a id='n9547' href='#n9547'>9547</a>
<a id='n9548' href='#n9548'>9548</a>
<a id='n9549' href='#n9549'>9549</a>
<a id='n9550' href='#n9550'>9550</a>
<a id='n9551' href='#n9551'>9551</a>
<a id='n9552' href='#n9552'>9552</a>
<a id='n9553' href='#n9553'>9553</a>
<a id='n9554' href='#n9554'>9554</a>
<a id='n9555' href='#n9555'>9555</a>
<a id='n9556' href='#n9556'>9556</a>
<a id='n9557' href='#n9557'>9557</a>
<a id='n9558' href='#n9558'>9558</a>
<a id='n9559' href='#n9559'>9559</a>
<a id='n9560' href='#n9560'>9560</a>
<a id='n9561' href='#n9561'>9561</a>
<a id='n9562' href='#n9562'>9562</a>
<a id='n9563' href='#n9563'>9563</a>
<a id='n9564' href='#n9564'>9564</a>
<a id='n9565' href='#n9565'>9565</a>
<a id='n9566' href='#n9566'>9566</a>
<a id='n9567' href='#n9567'>9567</a>
<a id='n9568' href='#n9568'>9568</a>
<a id='n9569' href='#n9569'>9569</a>
<a id='n9570' href='#n9570'>9570</a>
<a id='n9571' href='#n9571'>9571</a>
<a id='n9572' href='#n9572'>9572</a>
<a id='n9573' href='#n9573'>9573</a>
<a id='n9574' href='#n9574'>9574</a>
<a id='n9575' href='#n9575'>9575</a>
<a id='n9576' href='#n9576'>9576</a>
<a id='n9577' href='#n9577'>9577</a>
<a id='n9578' href='#n9578'>9578</a>
<a id='n9579' href='#n9579'>9579</a>
<a id='n9580' href='#n9580'>9580</a>
<a id='n9581' href='#n9581'>9581</a>
<a id='n9582' href='#n9582'>9582</a>
<a id='n9583' href='#n9583'>9583</a>
<a id='n9584' href='#n9584'>9584</a>
<a id='n9585' href='#n9585'>9585</a>
<a id='n9586' href='#n9586'>9586</a>
<a id='n9587' href='#n9587'>9587</a>
<a id='n9588' href='#n9588'>9588</a>
<a id='n9589' href='#n9589'>9589</a>
<a id='n9590' href='#n9590'>9590</a>
<a id='n9591' href='#n9591'>9591</a>
<a id='n9592' href='#n9592'>9592</a>
<a id='n9593' href='#n9593'>9593</a>
<a id='n9594' href='#n9594'>9594</a>
<a id='n9595' href='#n9595'>9595</a>
<a id='n9596' href='#n9596'>9596</a>
<a id='n9597' href='#n9597'>9597</a>
<a id='n9598' href='#n9598'>9598</a>
<a id='n9599' href='#n9599'>9599</a>
<a id='n9600' href='#n9600'>9600</a>
<a id='n9601' href='#n9601'>9601</a>
<a id='n9602' href='#n9602'>9602</a>
<a id='n9603' href='#n9603'>9603</a>
<a id='n9604' href='#n9604'>9604</a>
<a id='n9605' href='#n9605'>9605</a>
<a id='n9606' href='#n9606'>9606</a>
<a id='n9607' href='#n9607'>9607</a>
<a id='n9608' href='#n9608'>9608</a>
<a id='n9609' href='#n9609'>9609</a>
<a id='n9610' href='#n9610'>9610</a>
<a id='n9611' href='#n9611'>9611</a>
<a id='n9612' href='#n9612'>9612</a>
<a id='n9613' href='#n9613'>9613</a>
<a id='n9614' href='#n9614'>9614</a>
<a id='n9615' href='#n9615'>9615</a>
<a id='n9616' href='#n9616'>9616</a>
<a id='n9617' href='#n9617'>9617</a>
<a id='n9618' href='#n9618'>9618</a>
<a id='n9619' href='#n9619'>9619</a>
<a id='n9620' href='#n9620'>9620</a>
<a id='n9621' href='#n9621'>9621</a>
<a id='n9622' href='#n9622'>9622</a>
<a id='n9623' href='#n9623'>9623</a>
<a id='n9624' href='#n9624'>9624</a>
<a id='n9625' href='#n9625'>9625</a>
<a id='n9626' href='#n9626'>9626</a>
<a id='n9627' href='#n9627'>9627</a>
<a id='n9628' href='#n9628'>9628</a>
<a id='n9629' href='#n9629'>9629</a>
<a id='n9630' href='#n9630'>9630</a>
<a id='n9631' href='#n9631'>9631</a>
<a id='n9632' href='#n9632'>9632</a>
<a id='n9633' href='#n9633'>9633</a>
<a id='n9634' href='#n9634'>9634</a>
<a id='n9635' href='#n9635'>9635</a>
<a id='n9636' href='#n9636'>9636</a>
<a id='n9637' href='#n9637'>9637</a>
<a id='n9638' href='#n9638'>9638</a>
<a id='n9639' href='#n9639'>9639</a>
<a id='n9640' href='#n9640'>9640</a>
<a id='n9641' href='#n9641'>9641</a>
<a id='n9642' href='#n9642'>9642</a>
<a id='n9643' href='#n9643'>9643</a>
<a id='n9644' href='#n9644'>9644</a>
<a id='n9645' href='#n9645'>9645</a>
<a id='n9646' href='#n9646'>9646</a>
<a id='n9647' href='#n9647'>9647</a>
<a id='n9648' href='#n9648'>9648</a>
<a id='n9649' href='#n9649'>9649</a>
<a id='n9650' href='#n9650'>9650</a>
<a id='n9651' href='#n9651'>9651</a>
<a id='n9652' href='#n9652'>9652</a>
<a id='n9653' href='#n9653'>9653</a>
<a id='n9654' href='#n9654'>9654</a>
<a id='n9655' href='#n9655'>9655</a>
<a id='n9656' href='#n9656'>9656</a>
<a id='n9657' href='#n9657'>9657</a>
<a id='n9658' href='#n9658'>9658</a>
<a id='n9659' href='#n9659'>9659</a>
<a id='n9660' href='#n9660'>9660</a>
<a id='n9661' href='#n9661'>9661</a>
<a id='n9662' href='#n9662'>9662</a>
<a id='n9663' href='#n9663'>9663</a>
<a id='n9664' href='#n9664'>9664</a>
<a id='n9665' href='#n9665'>9665</a>
<a id='n9666' href='#n9666'>9666</a>
<a id='n9667' href='#n9667'>9667</a>
<a id='n9668' href='#n9668'>9668</a>
<a id='n9669' href='#n9669'>9669</a>
<a id='n9670' href='#n9670'>9670</a>
<a id='n9671' href='#n9671'>9671</a>
<a id='n9672' href='#n9672'>9672</a>
<a id='n9673' href='#n9673'>9673</a>
<a id='n9674' href='#n9674'>9674</a>
<a id='n9675' href='#n9675'>9675</a>
<a id='n9676' href='#n9676'>9676</a>
<a id='n9677' href='#n9677'>9677</a>
<a id='n9678' href='#n9678'>9678</a>
<a id='n9679' href='#n9679'>9679</a>
<a id='n9680' href='#n9680'>9680</a>
<a id='n9681' href='#n9681'>9681</a>
<a id='n9682' href='#n9682'>9682</a>
<a id='n9683' href='#n9683'>9683</a>
<a id='n9684' href='#n9684'>9684</a>
<a id='n9685' href='#n9685'>9685</a>
<a id='n9686' href='#n9686'>9686</a>
<a id='n9687' href='#n9687'>9687</a>
<a id='n9688' href='#n9688'>9688</a>
<a id='n9689' href='#n9689'>9689</a>
<a id='n9690' href='#n9690'>9690</a>
<a id='n9691' href='#n9691'>9691</a>
<a id='n9692' href='#n9692'>9692</a>
<a id='n9693' href='#n9693'>9693</a>
<a id='n9694' href='#n9694'>9694</a>
<a id='n9695' href='#n9695'>9695</a>
<a id='n9696' href='#n9696'>9696</a>
<a id='n9697' href='#n9697'>9697</a>
<a id='n9698' href='#n9698'>9698</a>
<a id='n9699' href='#n9699'>9699</a>
<a id='n9700' href='#n9700'>9700</a>
<a id='n9701' href='#n9701'>9701</a>
<a id='n9702' href='#n9702'>9702</a>
<a id='n9703' href='#n9703'>9703</a>
<a id='n9704' href='#n9704'>9704</a>
<a id='n9705' href='#n9705'>9705</a>
<a id='n9706' href='#n9706'>9706</a>
<a id='n9707' href='#n9707'>9707</a>
<a id='n9708' href='#n9708'>9708</a>
<a id='n9709' href='#n9709'>9709</a>
<a id='n9710' href='#n9710'>9710</a>
<a id='n9711' href='#n9711'>9711</a>
<a id='n9712' href='#n9712'>9712</a>
<a id='n9713' href='#n9713'>9713</a>
<a id='n9714' href='#n9714'>9714</a>
<a id='n9715' href='#n9715'>9715</a>
<a id='n9716' href='#n9716'>9716</a>
<a id='n9717' href='#n9717'>9717</a>
<a id='n9718' href='#n9718'>9718</a>
<a id='n9719' href='#n9719'>9719</a>
<a id='n9720' href='#n9720'>9720</a>
<a id='n9721' href='#n9721'>9721</a>
<a id='n9722' href='#n9722'>9722</a>
<a id='n9723' href='#n9723'>9723</a>
<a id='n9724' href='#n9724'>9724</a>
<a id='n9725' href='#n9725'>9725</a>
<a id='n9726' href='#n9726'>9726</a>
<a id='n9727' href='#n9727'>9727</a>
<a id='n9728' href='#n9728'>9728</a>
<a id='n9729' href='#n9729'>9729</a>
<a id='n9730' href='#n9730'>9730</a>
<a id='n9731' href='#n9731'>9731</a>
<a id='n9732' href='#n9732'>9732</a>
<a id='n9733' href='#n9733'>9733</a>
<a id='n9734' href='#n9734'>9734</a>
<a id='n9735' href='#n9735'>9735</a>
<a id='n9736' href='#n9736'>9736</a>
<a id='n9737' href='#n9737'>9737</a>
<a id='n9738' href='#n9738'>9738</a>
<a id='n9739' href='#n9739'>9739</a>
<a id='n9740' href='#n9740'>9740</a>
<a id='n9741' href='#n9741'>9741</a>
<a id='n9742' href='#n9742'>9742</a>
<a id='n9743' href='#n9743'>9743</a>
<a id='n9744' href='#n9744'>9744</a>
<a id='n9745' href='#n9745'>9745</a>
<a id='n9746' href='#n9746'>9746</a>
<a id='n9747' href='#n9747'>9747</a>
<a id='n9748' href='#n9748'>9748</a>
<a id='n9749' href='#n9749'>9749</a>
<a id='n9750' href='#n9750'>9750</a>
<a id='n9751' href='#n9751'>9751</a>
<a id='n9752' href='#n9752'>9752</a>
<a id='n9753' href='#n9753'>9753</a>
<a id='n9754' href='#n9754'>9754</a>
<a id='n9755' href='#n9755'>9755</a>
<a id='n9756' href='#n9756'>9756</a>
<a id='n9757' href='#n9757'>9757</a>
<a id='n9758' href='#n9758'>9758</a>
<a id='n9759' href='#n9759'>9759</a>
<a id='n9760' href='#n9760'>9760</a>
<a id='n9761' href='#n9761'>9761</a>
<a id='n9762' href='#n9762'>9762</a>
<a id='n9763' href='#n9763'>9763</a>
<a id='n9764' href='#n9764'>9764</a>
<a id='n9765' href='#n9765'>9765</a>
<a id='n9766' href='#n9766'>9766</a>
<a id='n9767' href='#n9767'>9767</a>
<a id='n9768' href='#n9768'>9768</a>
<a id='n9769' href='#n9769'>9769</a>
<a id='n9770' href='#n9770'>9770</a>
<a id='n9771' href='#n9771'>9771</a>
<a id='n9772' href='#n9772'>9772</a>
<a id='n9773' href='#n9773'>9773</a>
<a id='n9774' href='#n9774'>9774</a>
<a id='n9775' href='#n9775'>9775</a>
<a id='n9776' href='#n9776'>9776</a>
<a id='n9777' href='#n9777'>9777</a>
<a id='n9778' href='#n9778'>9778</a>
<a id='n9779' href='#n9779'>9779</a>
<a id='n9780' href='#n9780'>9780</a>
<a id='n9781' href='#n9781'>9781</a>
<a id='n9782' href='#n9782'>9782</a>
<a id='n9783' href='#n9783'>9783</a>
<a id='n9784' href='#n9784'>9784</a>
<a id='n9785' href='#n9785'>9785</a>
<a id='n9786' href='#n9786'>9786</a>
<a id='n9787' href='#n9787'>9787</a>
<a id='n9788' href='#n9788'>9788</a>
<a id='n9789' href='#n9789'>9789</a>
<a id='n9790' href='#n9790'>9790</a>
<a id='n9791' href='#n9791'>9791</a>
<a id='n9792' href='#n9792'>9792</a>
<a id='n9793' href='#n9793'>9793</a>
<a id='n9794' href='#n9794'>9794</a>
<a id='n9795' href='#n9795'>9795</a>
<a id='n9796' href='#n9796'>9796</a>
<a id='n9797' href='#n9797'>9797</a>
<a id='n9798' href='#n9798'>9798</a>
<a id='n9799' href='#n9799'>9799</a>
<a id='n9800' href='#n9800'>9800</a>
<a id='n9801' href='#n9801'>9801</a>
<a id='n9802' href='#n9802'>9802</a>
<a id='n9803' href='#n9803'>9803</a>
<a id='n9804' href='#n9804'>9804</a>
<a id='n9805' href='#n9805'>9805</a>
<a id='n9806' href='#n9806'>9806</a>
<a id='n9807' href='#n9807'>9807</a>
<a id='n9808' href='#n9808'>9808</a>
<a id='n9809' href='#n9809'>9809</a>
<a id='n9810' href='#n9810'>9810</a>
<a id='n9811' href='#n9811'>9811</a>
<a id='n9812' href='#n9812'>9812</a>
<a id='n9813' href='#n9813'>9813</a>
<a id='n9814' href='#n9814'>9814</a>
<a id='n9815' href='#n9815'>9815</a>
<a id='n9816' href='#n9816'>9816</a>
<a id='n9817' href='#n9817'>9817</a>
<a id='n9818' href='#n9818'>9818</a>
<a id='n9819' href='#n9819'>9819</a>
<a id='n9820' href='#n9820'>9820</a>
<a id='n9821' href='#n9821'>9821</a>
<a id='n9822' href='#n9822'>9822</a>
<a id='n9823' href='#n9823'>9823</a>
<a id='n9824' href='#n9824'>9824</a>
<a id='n9825' href='#n9825'>9825</a>
<a id='n9826' href='#n9826'>9826</a>
<a id='n9827' href='#n9827'>9827</a>
<a id='n9828' href='#n9828'>9828</a>
<a id='n9829' href='#n9829'>9829</a>
<a id='n9830' href='#n9830'>9830</a>
<a id='n9831' href='#n9831'>9831</a>
<a id='n9832' href='#n9832'>9832</a>
<a id='n9833' href='#n9833'>9833</a>
<a id='n9834' href='#n9834'>9834</a>
<a id='n9835' href='#n9835'>9835</a>
<a id='n9836' href='#n9836'>9836</a>
<a id='n9837' href='#n9837'>9837</a>
<a id='n9838' href='#n9838'>9838</a>
<a id='n9839' href='#n9839'>9839</a>
<a id='n9840' href='#n9840'>9840</a>
<a id='n9841' href='#n9841'>9841</a>
<a id='n9842' href='#n9842'>9842</a>
<a id='n9843' href='#n9843'>9843</a>
<a id='n9844' href='#n9844'>9844</a>
<a id='n9845' href='#n9845'>9845</a>
<a id='n9846' href='#n9846'>9846</a>
<a id='n9847' href='#n9847'>9847</a>
<a id='n9848' href='#n9848'>9848</a>
<a id='n9849' href='#n9849'>9849</a>
<a id='n9850' href='#n9850'>9850</a>
<a id='n9851' href='#n9851'>9851</a>
<a id='n9852' href='#n9852'>9852</a>
<a id='n9853' href='#n9853'>9853</a>
<a id='n9854' href='#n9854'>9854</a>
<a id='n9855' href='#n9855'>9855</a>
<a id='n9856' href='#n9856'>9856</a>
<a id='n9857' href='#n9857'>9857</a>
<a id='n9858' href='#n9858'>9858</a>
<a id='n9859' href='#n9859'>9859</a>
<a id='n9860' href='#n9860'>9860</a>
<a id='n9861' href='#n9861'>9861</a>
<a id='n9862' href='#n9862'>9862</a>
<a id='n9863' href='#n9863'>9863</a>
<a id='n9864' href='#n9864'>9864</a>
<a id='n9865' href='#n9865'>9865</a>
<a id='n9866' href='#n9866'>9866</a>
<a id='n9867' href='#n9867'>9867</a>
<a id='n9868' href='#n9868'>9868</a>
<a id='n9869' href='#n9869'>9869</a>
<a id='n9870' href='#n9870'>9870</a>
<a id='n9871' href='#n9871'>9871</a>
<a id='n9872' href='#n9872'>9872</a>
<a id='n9873' href='#n9873'>9873</a>
<a id='n9874' href='#n9874'>9874</a>
<a id='n9875' href='#n9875'>9875</a>
<a id='n9876' href='#n9876'>9876</a>
<a id='n9877' href='#n9877'>9877</a>
<a id='n9878' href='#n9878'>9878</a>
<a id='n9879' href='#n9879'>9879</a>
<a id='n9880' href='#n9880'>9880</a>
<a id='n9881' href='#n9881'>9881</a>
<a id='n9882' href='#n9882'>9882</a>
<a id='n9883' href='#n9883'>9883</a>
<a id='n9884' href='#n9884'>9884</a>
<a id='n9885' href='#n9885'>9885</a>
<a id='n9886' href='#n9886'>9886</a>
<a id='n9887' href='#n9887'>9887</a>
<a id='n9888' href='#n9888'>9888</a>
<a id='n9889' href='#n9889'>9889</a>
<a id='n9890' href='#n9890'>9890</a>
<a id='n9891' href='#n9891'>9891</a>
<a id='n9892' href='#n9892'>9892</a>
<a id='n9893' href='#n9893'>9893</a>
<a id='n9894' href='#n9894'>9894</a>
<a id='n9895' href='#n9895'>9895</a>
<a id='n9896' href='#n9896'>9896</a>
<a id='n9897' href='#n9897'>9897</a>
<a id='n9898' href='#n9898'>9898</a>
<a id='n9899' href='#n9899'>9899</a>
<a id='n9900' href='#n9900'>9900</a>
<a id='n9901' href='#n9901'>9901</a>
<a id='n9902' href='#n9902'>9902</a>
<a id='n9903' href='#n9903'>9903</a>
<a id='n9904' href='#n9904'>9904</a>
<a id='n9905' href='#n9905'>9905</a>
<a id='n9906' href='#n9906'>9906</a>
<a id='n9907' href='#n9907'>9907</a>
<a id='n9908' href='#n9908'>9908</a>
<a id='n9909' href='#n9909'>9909</a>
<a id='n9910' href='#n9910'>9910</a>
<a id='n9911' href='#n9911'>9911</a>
<a id='n9912' href='#n9912'>9912</a>
<a id='n9913' href='#n9913'>9913</a>
<a id='n9914' href='#n9914'>9914</a>
<a id='n9915' href='#n9915'>9915</a>
<a id='n9916' href='#n9916'>9916</a>
<a id='n9917' href='#n9917'>9917</a>
<a id='n9918' href='#n9918'>9918</a>
<a id='n9919' href='#n9919'>9919</a>
<a id='n9920' href='#n9920'>9920</a>
<a id='n9921' href='#n9921'>9921</a>
<a id='n9922' href='#n9922'>9922</a>
<a id='n9923' href='#n9923'>9923</a>
<a id='n9924' href='#n9924'>9924</a>
<a id='n9925' href='#n9925'>9925</a>
<a id='n9926' href='#n9926'>9926</a>
<a id='n9927' href='#n9927'>9927</a>
<a id='n9928' href='#n9928'>9928</a>
<a id='n9929' href='#n9929'>9929</a>
<a id='n9930' href='#n9930'>9930</a>
<a id='n9931' href='#n9931'>9931</a>
<a id='n9932' href='#n9932'>9932</a>
<a id='n9933' href='#n9933'>9933</a>
<a id='n9934' href='#n9934'>9934</a>
<a id='n9935' href='#n9935'>9935</a>
<a id='n9936' href='#n9936'>9936</a>
<a id='n9937' href='#n9937'>9937</a>
<a id='n9938' href='#n9938'>9938</a>
<a id='n9939' href='#n9939'>9939</a>
<a id='n9940' href='#n9940'>9940</a>
<a id='n9941' href='#n9941'>9941</a>
<a id='n9942' href='#n9942'>9942</a>
<a id='n9943' href='#n9943'>9943</a>
<a id='n9944' href='#n9944'>9944</a>
<a id='n9945' href='#n9945'>9945</a>
<a id='n9946' href='#n9946'>9946</a>
<a id='n9947' href='#n9947'>9947</a>
<a id='n9948' href='#n9948'>9948</a>
<a id='n9949' href='#n9949'>9949</a>
<a id='n9950' href='#n9950'>9950</a>
<a id='n9951' href='#n9951'>9951</a>
<a id='n9952' href='#n9952'>9952</a>
<a id='n9953' href='#n9953'>9953</a>
<a id='n9954' href='#n9954'>9954</a>
<a id='n9955' href='#n9955'>9955</a>
<a id='n9956' href='#n9956'>9956</a>
<a id='n9957' href='#n9957'>9957</a>
<a id='n9958' href='#n9958'>9958</a>
<a id='n9959' href='#n9959'>9959</a>
<a id='n9960' href='#n9960'>9960</a>
<a id='n9961' href='#n9961'>9961</a>
<a id='n9962' href='#n9962'>9962</a>
<a id='n9963' href='#n9963'>9963</a>
<a id='n9964' href='#n9964'>9964</a>
<a id='n9965' href='#n9965'>9965</a>
<a id='n9966' href='#n9966'>9966</a>
<a id='n9967' href='#n9967'>9967</a>
<a id='n9968' href='#n9968'>9968</a>
<a id='n9969' href='#n9969'>9969</a>
<a id='n9970' href='#n9970'>9970</a>
<a id='n9971' href='#n9971'>9971</a>
<a id='n9972' href='#n9972'>9972</a>
<a id='n9973' href='#n9973'>9973</a>
<a id='n9974' href='#n9974'>9974</a>
<a id='n9975' href='#n9975'>9975</a>
<a id='n9976' href='#n9976'>9976</a>
<a id='n9977' href='#n9977'>9977</a>
<a id='n9978' href='#n9978'>9978</a>
<a id='n9979' href='#n9979'>9979</a>
<a id='n9980' href='#n9980'>9980</a>
<a id='n9981' href='#n9981'>9981</a>
<a id='n9982' href='#n9982'>9982</a>
<a id='n9983' href='#n9983'>9983</a>
<a id='n9984' href='#n9984'>9984</a>
<a id='n9985' href='#n9985'>9985</a>
<a id='n9986' href='#n9986'>9986</a>
<a id='n9987' href='#n9987'>9987</a>
<a id='n9988' href='#n9988'>9988</a>
<a id='n9989' href='#n9989'>9989</a>
<a id='n9990' href='#n9990'>9990</a>
<a id='n9991' href='#n9991'>9991</a>
<a id='n9992' href='#n9992'>9992</a>
<a id='n9993' href='#n9993'>9993</a>
<a id='n9994' href='#n9994'>9994</a>
<a id='n9995' href='#n9995'>9995</a>
<a id='n9996' href='#n9996'>9996</a>
<a id='n9997' href='#n9997'>9997</a>
<a id='n9998' href='#n9998'>9998</a>
<a id='n9999' href='#n9999'>9999</a>
<a id='n10000' href='#n10000'>10000</a>
<a id='n10001' href='#n10001'>10001</a>
<a id='n10002' href='#n10002'>10002</a>
<a id='n10003' href='#n10003'>10003</a>
<a id='n10004' href='#n10004'>10004</a>
<a id='n10005' href='#n10005'>10005</a>
<a id='n10006' href='#n10006'>10006</a>
<a id='n10007' href='#n10007'>10007</a>
<a id='n10008' href='#n10008'>10008</a>
<a id='n10009' href='#n10009'>10009</a>
<a id='n10010' href='#n10010'>10010</a>
<a id='n10011' href='#n10011'>10011</a>
<a id='n10012' href='#n10012'>10012</a>
<a id='n10013' href='#n10013'>10013</a>
<a id='n10014' href='#n10014'>10014</a>
<a id='n10015' href='#n10015'>10015</a>
<a id='n10016' href='#n10016'>10016</a>
<a id='n10017' href='#n10017'>10017</a>
<a id='n10018' href='#n10018'>10018</a>
<a id='n10019' href='#n10019'>10019</a>
<a id='n10020' href='#n10020'>10020</a>
<a id='n10021' href='#n10021'>10021</a>
<a id='n10022' href='#n10022'>10022</a>
<a id='n10023' href='#n10023'>10023</a>
<a id='n10024' href='#n10024'>10024</a>
<a id='n10025' href='#n10025'>10025</a>
<a id='n10026' href='#n10026'>10026</a>
<a id='n10027' href='#n10027'>10027</a>
<a id='n10028' href='#n10028'>10028</a>
<a id='n10029' href='#n10029'>10029</a>
<a id='n10030' href='#n10030'>10030</a>
<a id='n10031' href='#n10031'>10031</a>
<a id='n10032' href='#n10032'>10032</a>
<a id='n10033' href='#n10033'>10033</a>
<a id='n10034' href='#n10034'>10034</a>
<a id='n10035' href='#n10035'>10035</a>
<a id='n10036' href='#n10036'>10036</a>
<a id='n10037' href='#n10037'>10037</a>
<a id='n10038' href='#n10038'>10038</a>
<a id='n10039' href='#n10039'>10039</a>
<a id='n10040' href='#n10040'>10040</a>
<a id='n10041' href='#n10041'>10041</a>
<a id='n10042' href='#n10042'>10042</a>
<a id='n10043' href='#n10043'>10043</a>
<a id='n10044' href='#n10044'>10044</a>
<a id='n10045' href='#n10045'>10045</a>
<a id='n10046' href='#n10046'>10046</a>
<a id='n10047' href='#n10047'>10047</a>
<a id='n10048' href='#n10048'>10048</a>
<a id='n10049' href='#n10049'>10049</a>
<a id='n10050' href='#n10050'>10050</a>
<a id='n10051' href='#n10051'>10051</a>
<a id='n10052' href='#n10052'>10052</a>
<a id='n10053' href='#n10053'>10053</a>
<a id='n10054' href='#n10054'>10054</a>
<a id='n10055' href='#n10055'>10055</a>
<a id='n10056' href='#n10056'>10056</a>
<a id='n10057' href='#n10057'>10057</a>
<a id='n10058' href='#n10058'>10058</a>
<a id='n10059' href='#n10059'>10059</a>
<a id='n10060' href='#n10060'>10060</a>
<a id='n10061' href='#n10061'>10061</a>
<a id='n10062' href='#n10062'>10062</a>
<a id='n10063' href='#n10063'>10063</a>
<a id='n10064' href='#n10064'>10064</a>
<a id='n10065' href='#n10065'>10065</a>
<a id='n10066' href='#n10066'>10066</a>
<a id='n10067' href='#n10067'>10067</a>
<a id='n10068' href='#n10068'>10068</a>
<a id='n10069' href='#n10069'>10069</a>
<a id='n10070' href='#n10070'>10070</a>
<a id='n10071' href='#n10071'>10071</a>
<a id='n10072' href='#n10072'>10072</a>
<a id='n10073' href='#n10073'>10073</a>
<a id='n10074' href='#n10074'>10074</a>
<a id='n10075' href='#n10075'>10075</a>
<a id='n10076' href='#n10076'>10076</a>
<a id='n10077' href='#n10077'>10077</a>
<a id='n10078' href='#n10078'>10078</a>
<a id='n10079' href='#n10079'>10079</a>
<a id='n10080' href='#n10080'>10080</a>
<a id='n10081' href='#n10081'>10081</a>
<a id='n10082' href='#n10082'>10082</a>
<a id='n10083' href='#n10083'>10083</a>
<a id='n10084' href='#n10084'>10084</a>
<a id='n10085' href='#n10085'>10085</a>
<a id='n10086' href='#n10086'>10086</a>
<a id='n10087' href='#n10087'>10087</a>
<a id='n10088' href='#n10088'>10088</a>
<a id='n10089' href='#n10089'>10089</a>
<a id='n10090' href='#n10090'>10090</a>
<a id='n10091' href='#n10091'>10091</a>
<a id='n10092' href='#n10092'>10092</a>
<a id='n10093' href='#n10093'>10093</a>
<a id='n10094' href='#n10094'>10094</a>
<a id='n10095' href='#n10095'>10095</a>
<a id='n10096' href='#n10096'>10096</a>
<a id='n10097' href='#n10097'>10097</a>
<a id='n10098' href='#n10098'>10098</a>
<a id='n10099' href='#n10099'>10099</a>
<a id='n10100' href='#n10100'>10100</a>
<a id='n10101' href='#n10101'>10101</a>
<a id='n10102' href='#n10102'>10102</a>
<a id='n10103' href='#n10103'>10103</a>
<a id='n10104' href='#n10104'>10104</a>
<a id='n10105' href='#n10105'>10105</a>
<a id='n10106' href='#n10106'>10106</a>
<a id='n10107' href='#n10107'>10107</a>
<a id='n10108' href='#n10108'>10108</a>
<a id='n10109' href='#n10109'>10109</a>
<a id='n10110' href='#n10110'>10110</a>
<a id='n10111' href='#n10111'>10111</a>
<a id='n10112' href='#n10112'>10112</a>
<a id='n10113' href='#n10113'>10113</a>
<a id='n10114' href='#n10114'>10114</a>
<a id='n10115' href='#n10115'>10115</a>
<a id='n10116' href='#n10116'>10116</a>
<a id='n10117' href='#n10117'>10117</a>
<a id='n10118' href='#n10118'>10118</a>
<a id='n10119' href='#n10119'>10119</a>
<a id='n10120' href='#n10120'>10120</a>
<a id='n10121' href='#n10121'>10121</a>
<a id='n10122' href='#n10122'>10122</a>
<a id='n10123' href='#n10123'>10123</a>
<a id='n10124' href='#n10124'>10124</a>
<a id='n10125' href='#n10125'>10125</a>
<a id='n10126' href='#n10126'>10126</a>
<a id='n10127' href='#n10127'>10127</a>
<a id='n10128' href='#n10128'>10128</a>
<a id='n10129' href='#n10129'>10129</a>
<a id='n10130' href='#n10130'>10130</a>
<a id='n10131' href='#n10131'>10131</a>
<a id='n10132' href='#n10132'>10132</a>
<a id='n10133' href='#n10133'>10133</a>
<a id='n10134' href='#n10134'>10134</a>
<a id='n10135' href='#n10135'>10135</a>
<a id='n10136' href='#n10136'>10136</a>
<a id='n10137' href='#n10137'>10137</a>
<a id='n10138' href='#n10138'>10138</a>
<a id='n10139' href='#n10139'>10139</a>
<a id='n10140' href='#n10140'>10140</a>
<a id='n10141' href='#n10141'>10141</a>
<a id='n10142' href='#n10142'>10142</a>
<a id='n10143' href='#n10143'>10143</a>
<a id='n10144' href='#n10144'>10144</a>
<a id='n10145' href='#n10145'>10145</a>
<a id='n10146' href='#n10146'>10146</a>
<a id='n10147' href='#n10147'>10147</a>
<a id='n10148' href='#n10148'>10148</a>
<a id='n10149' href='#n10149'>10149</a>
<a id='n10150' href='#n10150'>10150</a>
<a id='n10151' href='#n10151'>10151</a>
<a id='n10152' href='#n10152'>10152</a>
<a id='n10153' href='#n10153'>10153</a>
<a id='n10154' href='#n10154'>10154</a>
<a id='n10155' href='#n10155'>10155</a>
<a id='n10156' href='#n10156'>10156</a>
<a id='n10157' href='#n10157'>10157</a>
<a id='n10158' href='#n10158'>10158</a>
<a id='n10159' href='#n10159'>10159</a>
<a id='n10160' href='#n10160'>10160</a>
<a id='n10161' href='#n10161'>10161</a>
<a id='n10162' href='#n10162'>10162</a>
<a id='n10163' href='#n10163'>10163</a>
<a id='n10164' href='#n10164'>10164</a>
<a id='n10165' href='#n10165'>10165</a>
<a id='n10166' href='#n10166'>10166</a>
<a id='n10167' href='#n10167'>10167</a>
<a id='n10168' href='#n10168'>10168</a>
<a id='n10169' href='#n10169'>10169</a>
<a id='n10170' href='#n10170'>10170</a>
<a id='n10171' href='#n10171'>10171</a>
<a id='n10172' href='#n10172'>10172</a>
<a id='n10173' href='#n10173'>10173</a>
<a id='n10174' href='#n10174'>10174</a>
<a id='n10175' href='#n10175'>10175</a>
<a id='n10176' href='#n10176'>10176</a>
<a id='n10177' href='#n10177'>10177</a>
<a id='n10178' href='#n10178'>10178</a>
<a id='n10179' href='#n10179'>10179</a>
<a id='n10180' href='#n10180'>10180</a>
<a id='n10181' href='#n10181'>10181</a>
<a id='n10182' href='#n10182'>10182</a>
<a id='n10183' href='#n10183'>10183</a>
<a id='n10184' href='#n10184'>10184</a>
<a id='n10185' href='#n10185'>10185</a>
<a id='n10186' href='#n10186'>10186</a>
<a id='n10187' href='#n10187'>10187</a>
<a id='n10188' href='#n10188'>10188</a>
<a id='n10189' href='#n10189'>10189</a>
<a id='n10190' href='#n10190'>10190</a>
<a id='n10191' href='#n10191'>10191</a>
<a id='n10192' href='#n10192'>10192</a>
<a id='n10193' href='#n10193'>10193</a>
<a id='n10194' href='#n10194'>10194</a>
<a id='n10195' href='#n10195'>10195</a>
<a id='n10196' href='#n10196'>10196</a>
<a id='n10197' href='#n10197'>10197</a>
<a id='n10198' href='#n10198'>10198</a>
<a id='n10199' href='#n10199'>10199</a>
<a id='n10200' href='#n10200'>10200</a>
<a id='n10201' href='#n10201'>10201</a>
<a id='n10202' href='#n10202'>10202</a>
<a id='n10203' href='#n10203'>10203</a>
<a id='n10204' href='#n10204'>10204</a>
<a id='n10205' href='#n10205'>10205</a>
<a id='n10206' href='#n10206'>10206</a>
<a id='n10207' href='#n10207'>10207</a>
<a id='n10208' href='#n10208'>10208</a>
<a id='n10209' href='#n10209'>10209</a>
<a id='n10210' href='#n10210'>10210</a>
<a id='n10211' href='#n10211'>10211</a>
<a id='n10212' href='#n10212'>10212</a>
<a id='n10213' href='#n10213'>10213</a>
<a id='n10214' href='#n10214'>10214</a>
<a id='n10215' href='#n10215'>10215</a>
<a id='n10216' href='#n10216'>10216</a>
<a id='n10217' href='#n10217'>10217</a>
<a id='n10218' href='#n10218'>10218</a>
<a id='n10219' href='#n10219'>10219</a>
<a id='n10220' href='#n10220'>10220</a>
<a id='n10221' href='#n10221'>10221</a>
<a id='n10222' href='#n10222'>10222</a>
<a id='n10223' href='#n10223'>10223</a>
<a id='n10224' href='#n10224'>10224</a>
<a id='n10225' href='#n10225'>10225</a>
<a id='n10226' href='#n10226'>10226</a>
<a id='n10227' href='#n10227'>10227</a>
<a id='n10228' href='#n10228'>10228</a>
<a id='n10229' href='#n10229'>10229</a>
<a id='n10230' href='#n10230'>10230</a>
<a id='n10231' href='#n10231'>10231</a>
<a id='n10232' href='#n10232'>10232</a>
<a id='n10233' href='#n10233'>10233</a>
<a id='n10234' href='#n10234'>10234</a>
<a id='n10235' href='#n10235'>10235</a>
<a id='n10236' href='#n10236'>10236</a>
<a id='n10237' href='#n10237'>10237</a>
<a id='n10238' href='#n10238'>10238</a>
<a id='n10239' href='#n10239'>10239</a>
<a id='n10240' href='#n10240'>10240</a>
<a id='n10241' href='#n10241'>10241</a>
<a id='n10242' href='#n10242'>10242</a>
<a id='n10243' href='#n10243'>10243</a>
<a id='n10244' href='#n10244'>10244</a>
<a id='n10245' href='#n10245'>10245</a>
<a id='n10246' href='#n10246'>10246</a>
<a id='n10247' href='#n10247'>10247</a>
<a id='n10248' href='#n10248'>10248</a>
<a id='n10249' href='#n10249'>10249</a>
<a id='n10250' href='#n10250'>10250</a>
<a id='n10251' href='#n10251'>10251</a>
<a id='n10252' href='#n10252'>10252</a>
<a id='n10253' href='#n10253'>10253</a>
<a id='n10254' href='#n10254'>10254</a>
<a id='n10255' href='#n10255'>10255</a>
<a id='n10256' href='#n10256'>10256</a>
<a id='n10257' href='#n10257'>10257</a>
<a id='n10258' href='#n10258'>10258</a>
<a id='n10259' href='#n10259'>10259</a>
<a id='n10260' href='#n10260'>10260</a>
<a id='n10261' href='#n10261'>10261</a>
<a id='n10262' href='#n10262'>10262</a>
<a id='n10263' href='#n10263'>10263</a>
<a id='n10264' href='#n10264'>10264</a>
<a id='n10265' href='#n10265'>10265</a>
<a id='n10266' href='#n10266'>10266</a>
<a id='n10267' href='#n10267'>10267</a>
<a id='n10268' href='#n10268'>10268</a>
<a id='n10269' href='#n10269'>10269</a>
<a id='n10270' href='#n10270'>10270</a>
<a id='n10271' href='#n10271'>10271</a>
<a id='n10272' href='#n10272'>10272</a>
<a id='n10273' href='#n10273'>10273</a>
<a id='n10274' href='#n10274'>10274</a>
<a id='n10275' href='#n10275'>10275</a>
<a id='n10276' href='#n10276'>10276</a>
<a id='n10277' href='#n10277'>10277</a>
<a id='n10278' href='#n10278'>10278</a>
<a id='n10279' href='#n10279'>10279</a>
<a id='n10280' href='#n10280'>10280</a>
<a id='n10281' href='#n10281'>10281</a>
<a id='n10282' href='#n10282'>10282</a>
<a id='n10283' href='#n10283'>10283</a>
<a id='n10284' href='#n10284'>10284</a>
<a id='n10285' href='#n10285'>10285</a>
<a id='n10286' href='#n10286'>10286</a>
<a id='n10287' href='#n10287'>10287</a>
<a id='n10288' href='#n10288'>10288</a>
<a id='n10289' href='#n10289'>10289</a>
<a id='n10290' href='#n10290'>10290</a>
<a id='n10291' href='#n10291'>10291</a>
<a id='n10292' href='#n10292'>10292</a>
<a id='n10293' href='#n10293'>10293</a>
<a id='n10294' href='#n10294'>10294</a>
<a id='n10295' href='#n10295'>10295</a>
<a id='n10296' href='#n10296'>10296</a>
<a id='n10297' href='#n10297'>10297</a>
<a id='n10298' href='#n10298'>10298</a>
<a id='n10299' href='#n10299'>10299</a>
<a id='n10300' href='#n10300'>10300</a>
<a id='n10301' href='#n10301'>10301</a>
<a id='n10302' href='#n10302'>10302</a>
<a id='n10303' href='#n10303'>10303</a>
<a id='n10304' href='#n10304'>10304</a>
<a id='n10305' href='#n10305'>10305</a>
<a id='n10306' href='#n10306'>10306</a>
<a id='n10307' href='#n10307'>10307</a>
<a id='n10308' href='#n10308'>10308</a>
<a id='n10309' href='#n10309'>10309</a>
<a id='n10310' href='#n10310'>10310</a>
<a id='n10311' href='#n10311'>10311</a>
<a id='n10312' href='#n10312'>10312</a>
<a id='n10313' href='#n10313'>10313</a>
<a id='n10314' href='#n10314'>10314</a>
<a id='n10315' href='#n10315'>10315</a>
<a id='n10316' href='#n10316'>10316</a>
<a id='n10317' href='#n10317'>10317</a>
<a id='n10318' href='#n10318'>10318</a>
<a id='n10319' href='#n10319'>10319</a>
<a id='n10320' href='#n10320'>10320</a>
<a id='n10321' href='#n10321'>10321</a>
<a id='n10322' href='#n10322'>10322</a>
<a id='n10323' href='#n10323'>10323</a>
<a id='n10324' href='#n10324'>10324</a>
<a id='n10325' href='#n10325'>10325</a>
<a id='n10326' href='#n10326'>10326</a>
<a id='n10327' href='#n10327'>10327</a>
<a id='n10328' href='#n10328'>10328</a>
<a id='n10329' href='#n10329'>10329</a>
<a id='n10330' href='#n10330'>10330</a>
<a id='n10331' href='#n10331'>10331</a>
<a id='n10332' href='#n10332'>10332</a>
<a id='n10333' href='#n10333'>10333</a>
<a id='n10334' href='#n10334'>10334</a>
<a id='n10335' href='#n10335'>10335</a>
<a id='n10336' href='#n10336'>10336</a>
<a id='n10337' href='#n10337'>10337</a>
<a id='n10338' href='#n10338'>10338</a>
<a id='n10339' href='#n10339'>10339</a>
<a id='n10340' href='#n10340'>10340</a>
<a id='n10341' href='#n10341'>10341</a>
<a id='n10342' href='#n10342'>10342</a>
<a id='n10343' href='#n10343'>10343</a>
<a id='n10344' href='#n10344'>10344</a>
<a id='n10345' href='#n10345'>10345</a>
<a id='n10346' href='#n10346'>10346</a>
<a id='n10347' href='#n10347'>10347</a>
<a id='n10348' href='#n10348'>10348</a>
<a id='n10349' href='#n10349'>10349</a>
<a id='n10350' href='#n10350'>10350</a>
<a id='n10351' href='#n10351'>10351</a>
<a id='n10352' href='#n10352'>10352</a>
<a id='n10353' href='#n10353'>10353</a>
<a id='n10354' href='#n10354'>10354</a>
<a id='n10355' href='#n10355'>10355</a>
<a id='n10356' href='#n10356'>10356</a>
<a id='n10357' href='#n10357'>10357</a>
<a id='n10358' href='#n10358'>10358</a>
<a id='n10359' href='#n10359'>10359</a>
<a id='n10360' href='#n10360'>10360</a>
<a id='n10361' href='#n10361'>10361</a>
<a id='n10362' href='#n10362'>10362</a>
<a id='n10363' href='#n10363'>10363</a>
<a id='n10364' href='#n10364'>10364</a>
<a id='n10365' href='#n10365'>10365</a>
<a id='n10366' href='#n10366'>10366</a>
<a id='n10367' href='#n10367'>10367</a>
<a id='n10368' href='#n10368'>10368</a>
<a id='n10369' href='#n10369'>10369</a>
<a id='n10370' href='#n10370'>10370</a>
<a id='n10371' href='#n10371'>10371</a>
<a id='n10372' href='#n10372'>10372</a>
<a id='n10373' href='#n10373'>10373</a>
<a id='n10374' href='#n10374'>10374</a>
<a id='n10375' href='#n10375'>10375</a>
<a id='n10376' href='#n10376'>10376</a>
<a id='n10377' href='#n10377'>10377</a>
<a id='n10378' href='#n10378'>10378</a>
<a id='n10379' href='#n10379'>10379</a>
<a id='n10380' href='#n10380'>10380</a>
<a id='n10381' href='#n10381'>10381</a>
<a id='n10382' href='#n10382'>10382</a>
<a id='n10383' href='#n10383'>10383</a>
<a id='n10384' href='#n10384'>10384</a>
<a id='n10385' href='#n10385'>10385</a>
<a id='n10386' href='#n10386'>10386</a>
<a id='n10387' href='#n10387'>10387</a>
<a id='n10388' href='#n10388'>10388</a>
<a id='n10389' href='#n10389'>10389</a>
<a id='n10390' href='#n10390'>10390</a>
<a id='n10391' href='#n10391'>10391</a>
<a id='n10392' href='#n10392'>10392</a>
<a id='n10393' href='#n10393'>10393</a>
<a id='n10394' href='#n10394'>10394</a>
<a id='n10395' href='#n10395'>10395</a>
<a id='n10396' href='#n10396'>10396</a>
<a id='n10397' href='#n10397'>10397</a>
<a id='n10398' href='#n10398'>10398</a>
<a id='n10399' href='#n10399'>10399</a>
<a id='n10400' href='#n10400'>10400</a>
<a id='n10401' href='#n10401'>10401</a>
<a id='n10402' href='#n10402'>10402</a>
<a id='n10403' href='#n10403'>10403</a>
<a id='n10404' href='#n10404'>10404</a>
<a id='n10405' href='#n10405'>10405</a>
<a id='n10406' href='#n10406'>10406</a>
<a id='n10407' href='#n10407'>10407</a>
<a id='n10408' href='#n10408'>10408</a>
<a id='n10409' href='#n10409'>10409</a>
<a id='n10410' href='#n10410'>10410</a>
<a id='n10411' href='#n10411'>10411</a>
<a id='n10412' href='#n10412'>10412</a>
<a id='n10413' href='#n10413'>10413</a>
<a id='n10414' href='#n10414'>10414</a>
<a id='n10415' href='#n10415'>10415</a>
<a id='n10416' href='#n10416'>10416</a>
<a id='n10417' href='#n10417'>10417</a>
<a id='n10418' href='#n10418'>10418</a>
<a id='n10419' href='#n10419'>10419</a>
<a id='n10420' href='#n10420'>10420</a>
<a id='n10421' href='#n10421'>10421</a>
<a id='n10422' href='#n10422'>10422</a>
<a id='n10423' href='#n10423'>10423</a>
<a id='n10424' href='#n10424'>10424</a>
<a id='n10425' href='#n10425'>10425</a>
<a id='n10426' href='#n10426'>10426</a>
<a id='n10427' href='#n10427'>10427</a>
<a id='n10428' href='#n10428'>10428</a>
<a id='n10429' href='#n10429'>10429</a>
<a id='n10430' href='#n10430'>10430</a>
<a id='n10431' href='#n10431'>10431</a>
<a id='n10432' href='#n10432'>10432</a>
<a id='n10433' href='#n10433'>10433</a>
<a id='n10434' href='#n10434'>10434</a>
<a id='n10435' href='#n10435'>10435</a>
<a id='n10436' href='#n10436'>10436</a>
<a id='n10437' href='#n10437'>10437</a>
<a id='n10438' href='#n10438'>10438</a>
<a id='n10439' href='#n10439'>10439</a>
<a id='n10440' href='#n10440'>10440</a>
<a id='n10441' href='#n10441'>10441</a>
<a id='n10442' href='#n10442'>10442</a>
<a id='n10443' href='#n10443'>10443</a>
<a id='n10444' href='#n10444'>10444</a>
<a id='n10445' href='#n10445'>10445</a>
<a id='n10446' href='#n10446'>10446</a>
<a id='n10447' href='#n10447'>10447</a>
<a id='n10448' href='#n10448'>10448</a>
<a id='n10449' href='#n10449'>10449</a>
<a id='n10450' href='#n10450'>10450</a>
<a id='n10451' href='#n10451'>10451</a>
<a id='n10452' href='#n10452'>10452</a>
<a id='n10453' href='#n10453'>10453</a>
<a id='n10454' href='#n10454'>10454</a>
<a id='n10455' href='#n10455'>10455</a>
<a id='n10456' href='#n10456'>10456</a>
<a id='n10457' href='#n10457'>10457</a>
<a id='n10458' href='#n10458'>10458</a>
<a id='n10459' href='#n10459'>10459</a>
<a id='n10460' href='#n10460'>10460</a>
<a id='n10461' href='#n10461'>10461</a>
<a id='n10462' href='#n10462'>10462</a>
<a id='n10463' href='#n10463'>10463</a>
<a id='n10464' href='#n10464'>10464</a>
<a id='n10465' href='#n10465'>10465</a>
<a id='n10466' href='#n10466'>10466</a>
<a id='n10467' href='#n10467'>10467</a>
<a id='n10468' href='#n10468'>10468</a>
<a id='n10469' href='#n10469'>10469</a>
<a id='n10470' href='#n10470'>10470</a>
<a id='n10471' href='#n10471'>10471</a>
<a id='n10472' href='#n10472'>10472</a>
<a id='n10473' href='#n10473'>10473</a>
<a id='n10474' href='#n10474'>10474</a>
<a id='n10475' href='#n10475'>10475</a>
<a id='n10476' href='#n10476'>10476</a>
<a id='n10477' href='#n10477'>10477</a>
<a id='n10478' href='#n10478'>10478</a>
<a id='n10479' href='#n10479'>10479</a>
<a id='n10480' href='#n10480'>10480</a>
<a id='n10481' href='#n10481'>10481</a>
<a id='n10482' href='#n10482'>10482</a>
<a id='n10483' href='#n10483'>10483</a>
<a id='n10484' href='#n10484'>10484</a>
<a id='n10485' href='#n10485'>10485</a>
<a id='n10486' href='#n10486'>10486</a>
<a id='n10487' href='#n10487'>10487</a>
<a id='n10488' href='#n10488'>10488</a>
<a id='n10489' href='#n10489'>10489</a>
<a id='n10490' href='#n10490'>10490</a>
<a id='n10491' href='#n10491'>10491</a>
<a id='n10492' href='#n10492'>10492</a>
<a id='n10493' href='#n10493'>10493</a>
<a id='n10494' href='#n10494'>10494</a>
<a id='n10495' href='#n10495'>10495</a>
<a id='n10496' href='#n10496'>10496</a>
<a id='n10497' href='#n10497'>10497</a>
<a id='n10498' href='#n10498'>10498</a>
<a id='n10499' href='#n10499'>10499</a>
<a id='n10500' href='#n10500'>10500</a>
<a id='n10501' href='#n10501'>10501</a>
<a id='n10502' href='#n10502'>10502</a>
<a id='n10503' href='#n10503'>10503</a>
<a id='n10504' href='#n10504'>10504</a>
<a id='n10505' href='#n10505'>10505</a>
<a id='n10506' href='#n10506'>10506</a>
<a id='n10507' href='#n10507'>10507</a>
<a id='n10508' href='#n10508'>10508</a>
<a id='n10509' href='#n10509'>10509</a>
<a id='n10510' href='#n10510'>10510</a>
<a id='n10511' href='#n10511'>10511</a>
<a id='n10512' href='#n10512'>10512</a>
<a id='n10513' href='#n10513'>10513</a>
<a id='n10514' href='#n10514'>10514</a>
<a id='n10515' href='#n10515'>10515</a>
<a id='n10516' href='#n10516'>10516</a>
<a id='n10517' href='#n10517'>10517</a>
<a id='n10518' href='#n10518'>10518</a>
<a id='n10519' href='#n10519'>10519</a>
<a id='n10520' href='#n10520'>10520</a>
<a id='n10521' href='#n10521'>10521</a>
<a id='n10522' href='#n10522'>10522</a>
<a id='n10523' href='#n10523'>10523</a>
<a id='n10524' href='#n10524'>10524</a>
<a id='n10525' href='#n10525'>10525</a>
<a id='n10526' href='#n10526'>10526</a>
<a id='n10527' href='#n10527'>10527</a>
<a id='n10528' href='#n10528'>10528</a>
<a id='n10529' href='#n10529'>10529</a>
<a id='n10530' href='#n10530'>10530</a>
<a id='n10531' href='#n10531'>10531</a>
<a id='n10532' href='#n10532'>10532</a>
<a id='n10533' href='#n10533'>10533</a>
<a id='n10534' href='#n10534'>10534</a>
<a id='n10535' href='#n10535'>10535</a>
<a id='n10536' href='#n10536'>10536</a>
<a id='n10537' href='#n10537'>10537</a>
<a id='n10538' href='#n10538'>10538</a>
<a id='n10539' href='#n10539'>10539</a>
<a id='n10540' href='#n10540'>10540</a>
<a id='n10541' href='#n10541'>10541</a>
<a id='n10542' href='#n10542'>10542</a>
<a id='n10543' href='#n10543'>10543</a>
<a id='n10544' href='#n10544'>10544</a>
<a id='n10545' href='#n10545'>10545</a>
<a id='n10546' href='#n10546'>10546</a>
<a id='n10547' href='#n10547'>10547</a>
<a id='n10548' href='#n10548'>10548</a>
<a id='n10549' href='#n10549'>10549</a>
<a id='n10550' href='#n10550'>10550</a>
<a id='n10551' href='#n10551'>10551</a>
<a id='n10552' href='#n10552'>10552</a>
<a id='n10553' href='#n10553'>10553</a>
<a id='n10554' href='#n10554'>10554</a>
<a id='n10555' href='#n10555'>10555</a>
<a id='n10556' href='#n10556'>10556</a>
<a id='n10557' href='#n10557'>10557</a>
<a id='n10558' href='#n10558'>10558</a>
<a id='n10559' href='#n10559'>10559</a>
<a id='n10560' href='#n10560'>10560</a>
<a id='n10561' href='#n10561'>10561</a>
<a id='n10562' href='#n10562'>10562</a>
<a id='n10563' href='#n10563'>10563</a>
<a id='n10564' href='#n10564'>10564</a>
<a id='n10565' href='#n10565'>10565</a>
<a id='n10566' href='#n10566'>10566</a>
<a id='n10567' href='#n10567'>10567</a>
<a id='n10568' href='#n10568'>10568</a>
<a id='n10569' href='#n10569'>10569</a>
<a id='n10570' href='#n10570'>10570</a>
<a id='n10571' href='#n10571'>10571</a>
<a id='n10572' href='#n10572'>10572</a>
<a id='n10573' href='#n10573'>10573</a>
<a id='n10574' href='#n10574'>10574</a>
<a id='n10575' href='#n10575'>10575</a>
<a id='n10576' href='#n10576'>10576</a>
<a id='n10577' href='#n10577'>10577</a>
<a id='n10578' href='#n10578'>10578</a>
<a id='n10579' href='#n10579'>10579</a>
<a id='n10580' href='#n10580'>10580</a>
<a id='n10581' href='#n10581'>10581</a>
<a id='n10582' href='#n10582'>10582</a>
<a id='n10583' href='#n10583'>10583</a>
<a id='n10584' href='#n10584'>10584</a>
<a id='n10585' href='#n10585'>10585</a>
<a id='n10586' href='#n10586'>10586</a>
<a id='n10587' href='#n10587'>10587</a>
<a id='n10588' href='#n10588'>10588</a>
<a id='n10589' href='#n10589'>10589</a>
<a id='n10590' href='#n10590'>10590</a>
<a id='n10591' href='#n10591'>10591</a>
<a id='n10592' href='#n10592'>10592</a>
<a id='n10593' href='#n10593'>10593</a>
<a id='n10594' href='#n10594'>10594</a>
<a id='n10595' href='#n10595'>10595</a>
<a id='n10596' href='#n10596'>10596</a>
<a id='n10597' href='#n10597'>10597</a>
<a id='n10598' href='#n10598'>10598</a>
<a id='n10599' href='#n10599'>10599</a>
<a id='n10600' href='#n10600'>10600</a>
<a id='n10601' href='#n10601'>10601</a>
<a id='n10602' href='#n10602'>10602</a>
<a id='n10603' href='#n10603'>10603</a>
<a id='n10604' href='#n10604'>10604</a>
<a id='n10605' href='#n10605'>10605</a>
<a id='n10606' href='#n10606'>10606</a>
<a id='n10607' href='#n10607'>10607</a>
<a id='n10608' href='#n10608'>10608</a>
<a id='n10609' href='#n10609'>10609</a>
<a id='n10610' href='#n10610'>10610</a>
<a id='n10611' href='#n10611'>10611</a>
<a id='n10612' href='#n10612'>10612</a>
<a id='n10613' href='#n10613'>10613</a>
<a id='n10614' href='#n10614'>10614</a>
<a id='n10615' href='#n10615'>10615</a>
<a id='n10616' href='#n10616'>10616</a>
<a id='n10617' href='#n10617'>10617</a>
<a id='n10618' href='#n10618'>10618</a>
<a id='n10619' href='#n10619'>10619</a>
<a id='n10620' href='#n10620'>10620</a>
<a id='n10621' href='#n10621'>10621</a>
<a id='n10622' href='#n10622'>10622</a>
<a id='n10623' href='#n10623'>10623</a>
<a id='n10624' href='#n10624'>10624</a>
<a id='n10625' href='#n10625'>10625</a>
<a id='n10626' href='#n10626'>10626</a>
<a id='n10627' href='#n10627'>10627</a>
<a id='n10628' href='#n10628'>10628</a>
<a id='n10629' href='#n10629'>10629</a>
<a id='n10630' href='#n10630'>10630</a>
<a id='n10631' href='#n10631'>10631</a>
<a id='n10632' href='#n10632'>10632</a>
<a id='n10633' href='#n10633'>10633</a>
<a id='n10634' href='#n10634'>10634</a>
<a id='n10635' href='#n10635'>10635</a>
<a id='n10636' href='#n10636'>10636</a>
<a id='n10637' href='#n10637'>10637</a>
<a id='n10638' href='#n10638'>10638</a>
<a id='n10639' href='#n10639'>10639</a>
<a id='n10640' href='#n10640'>10640</a>
<a id='n10641' href='#n10641'>10641</a>
<a id='n10642' href='#n10642'>10642</a>
<a id='n10643' href='#n10643'>10643</a>
<a id='n10644' href='#n10644'>10644</a>
<a id='n10645' href='#n10645'>10645</a>
<a id='n10646' href='#n10646'>10646</a>
<a id='n10647' href='#n10647'>10647</a>
<a id='n10648' href='#n10648'>10648</a>
<a id='n10649' href='#n10649'>10649</a>
<a id='n10650' href='#n10650'>10650</a>
<a id='n10651' href='#n10651'>10651</a>
<a id='n10652' href='#n10652'>10652</a>
<a id='n10653' href='#n10653'>10653</a>
<a id='n10654' href='#n10654'>10654</a>
<a id='n10655' href='#n10655'>10655</a>
<a id='n10656' href='#n10656'>10656</a>
<a id='n10657' href='#n10657'>10657</a>
<a id='n10658' href='#n10658'>10658</a>
<a id='n10659' href='#n10659'>10659</a>
<a id='n10660' href='#n10660'>10660</a>
<a id='n10661' href='#n10661'>10661</a>
<a id='n10662' href='#n10662'>10662</a>
<a id='n10663' href='#n10663'>10663</a>
<a id='n10664' href='#n10664'>10664</a>
<a id='n10665' href='#n10665'>10665</a>
<a id='n10666' href='#n10666'>10666</a>
<a id='n10667' href='#n10667'>10667</a>
<a id='n10668' href='#n10668'>10668</a>
<a id='n10669' href='#n10669'>10669</a>
<a id='n10670' href='#n10670'>10670</a>
<a id='n10671' href='#n10671'>10671</a>
<a id='n10672' href='#n10672'>10672</a>
<a id='n10673' href='#n10673'>10673</a>
<a id='n10674' href='#n10674'>10674</a>
<a id='n10675' href='#n10675'>10675</a>
<a id='n10676' href='#n10676'>10676</a>
<a id='n10677' href='#n10677'>10677</a>
<a id='n10678' href='#n10678'>10678</a>
<a id='n10679' href='#n10679'>10679</a>
<a id='n10680' href='#n10680'>10680</a>
<a id='n10681' href='#n10681'>10681</a>
<a id='n10682' href='#n10682'>10682</a>
<a id='n10683' href='#n10683'>10683</a>
<a id='n10684' href='#n10684'>10684</a>
<a id='n10685' href='#n10685'>10685</a>
<a id='n10686' href='#n10686'>10686</a>
<a id='n10687' href='#n10687'>10687</a>
<a id='n10688' href='#n10688'>10688</a>
<a id='n10689' href='#n10689'>10689</a>
<a id='n10690' href='#n10690'>10690</a>
<a id='n10691' href='#n10691'>10691</a>
<a id='n10692' href='#n10692'>10692</a>
<a id='n10693' href='#n10693'>10693</a>
<a id='n10694' href='#n10694'>10694</a>
<a id='n10695' href='#n10695'>10695</a>
<a id='n10696' href='#n10696'>10696</a>
<a id='n10697' href='#n10697'>10697</a>
<a id='n10698' href='#n10698'>10698</a>
<a id='n10699' href='#n10699'>10699</a>
<a id='n10700' href='#n10700'>10700</a>
<a id='n10701' href='#n10701'>10701</a>
<a id='n10702' href='#n10702'>10702</a>
<a id='n10703' href='#n10703'>10703</a>
<a id='n10704' href='#n10704'>10704</a>
<a id='n10705' href='#n10705'>10705</a>
<a id='n10706' href='#n10706'>10706</a>
<a id='n10707' href='#n10707'>10707</a>
<a id='n10708' href='#n10708'>10708</a>
<a id='n10709' href='#n10709'>10709</a>
<a id='n10710' href='#n10710'>10710</a>
<a id='n10711' href='#n10711'>10711</a>
<a id='n10712' href='#n10712'>10712</a>
<a id='n10713' href='#n10713'>10713</a>
<a id='n10714' href='#n10714'>10714</a>
<a id='n10715' href='#n10715'>10715</a>
<a id='n10716' href='#n10716'>10716</a>
<a id='n10717' href='#n10717'>10717</a>
<a id='n10718' href='#n10718'>10718</a>
<a id='n10719' href='#n10719'>10719</a>
<a id='n10720' href='#n10720'>10720</a>
<a id='n10721' href='#n10721'>10721</a>
<a id='n10722' href='#n10722'>10722</a>
<a id='n10723' href='#n10723'>10723</a>
<a id='n10724' href='#n10724'>10724</a>
<a id='n10725' href='#n10725'>10725</a>
<a id='n10726' href='#n10726'>10726</a>
<a id='n10727' href='#n10727'>10727</a>
<a id='n10728' href='#n10728'>10728</a>
<a id='n10729' href='#n10729'>10729</a>
<a id='n10730' href='#n10730'>10730</a>
<a id='n10731' href='#n10731'>10731</a>
<a id='n10732' href='#n10732'>10732</a>
<a id='n10733' href='#n10733'>10733</a>
<a id='n10734' href='#n10734'>10734</a>
<a id='n10735' href='#n10735'>10735</a>
<a id='n10736' href='#n10736'>10736</a>
<a id='n10737' href='#n10737'>10737</a>
<a id='n10738' href='#n10738'>10738</a>
<a id='n10739' href='#n10739'>10739</a>
<a id='n10740' href='#n10740'>10740</a>
<a id='n10741' href='#n10741'>10741</a>
<a id='n10742' href='#n10742'>10742</a>
<a id='n10743' href='#n10743'>10743</a>
<a id='n10744' href='#n10744'>10744</a>
<a id='n10745' href='#n10745'>10745</a>
<a id='n10746' href='#n10746'>10746</a>
<a id='n10747' href='#n10747'>10747</a>
<a id='n10748' href='#n10748'>10748</a>
<a id='n10749' href='#n10749'>10749</a>
<a id='n10750' href='#n10750'>10750</a>
<a id='n10751' href='#n10751'>10751</a>
<a id='n10752' href='#n10752'>10752</a>
<a id='n10753' href='#n10753'>10753</a>
<a id='n10754' href='#n10754'>10754</a>
<a id='n10755' href='#n10755'>10755</a>
<a id='n10756' href='#n10756'>10756</a>
<a id='n10757' href='#n10757'>10757</a>
<a id='n10758' href='#n10758'>10758</a>
<a id='n10759' href='#n10759'>10759</a>
<a id='n10760' href='#n10760'>10760</a>
<a id='n10761' href='#n10761'>10761</a>
<a id='n10762' href='#n10762'>10762</a>
<a id='n10763' href='#n10763'>10763</a>
<a id='n10764' href='#n10764'>10764</a>
<a id='n10765' href='#n10765'>10765</a>
<a id='n10766' href='#n10766'>10766</a>
<a id='n10767' href='#n10767'>10767</a>
<a id='n10768' href='#n10768'>10768</a>
<a id='n10769' href='#n10769'>10769</a>
<a id='n10770' href='#n10770'>10770</a>
<a id='n10771' href='#n10771'>10771</a>
<a id='n10772' href='#n10772'>10772</a>
<a id='n10773' href='#n10773'>10773</a>
<a id='n10774' href='#n10774'>10774</a>
<a id='n10775' href='#n10775'>10775</a>
<a id='n10776' href='#n10776'>10776</a>
<a id='n10777' href='#n10777'>10777</a>
<a id='n10778' href='#n10778'>10778</a>
<a id='n10779' href='#n10779'>10779</a>
<a id='n10780' href='#n10780'>10780</a>
<a id='n10781' href='#n10781'>10781</a>
<a id='n10782' href='#n10782'>10782</a>
<a id='n10783' href='#n10783'>10783</a>
<a id='n10784' href='#n10784'>10784</a>
<a id='n10785' href='#n10785'>10785</a>
<a id='n10786' href='#n10786'>10786</a>
<a id='n10787' href='#n10787'>10787</a>
<a id='n10788' href='#n10788'>10788</a>
<a id='n10789' href='#n10789'>10789</a>
<a id='n10790' href='#n10790'>10790</a>
<a id='n10791' href='#n10791'>10791</a>
<a id='n10792' href='#n10792'>10792</a>
<a id='n10793' href='#n10793'>10793</a>
<a id='n10794' href='#n10794'>10794</a>
<a id='n10795' href='#n10795'>10795</a>
<a id='n10796' href='#n10796'>10796</a>
<a id='n10797' href='#n10797'>10797</a>
<a id='n10798' href='#n10798'>10798</a>
<a id='n10799' href='#n10799'>10799</a>
<a id='n10800' href='#n10800'>10800</a>
<a id='n10801' href='#n10801'>10801</a>
<a id='n10802' href='#n10802'>10802</a>
<a id='n10803' href='#n10803'>10803</a>
<a id='n10804' href='#n10804'>10804</a>
<a id='n10805' href='#n10805'>10805</a>
<a id='n10806' href='#n10806'>10806</a>
<a id='n10807' href='#n10807'>10807</a>
<a id='n10808' href='#n10808'>10808</a>
<a id='n10809' href='#n10809'>10809</a>
<a id='n10810' href='#n10810'>10810</a>
<a id='n10811' href='#n10811'>10811</a>
<a id='n10812' href='#n10812'>10812</a>
<a id='n10813' href='#n10813'>10813</a>
<a id='n10814' href='#n10814'>10814</a>
<a id='n10815' href='#n10815'>10815</a>
<a id='n10816' href='#n10816'>10816</a>
<a id='n10817' href='#n10817'>10817</a>
<a id='n10818' href='#n10818'>10818</a>
<a id='n10819' href='#n10819'>10819</a>
<a id='n10820' href='#n10820'>10820</a>
<a id='n10821' href='#n10821'>10821</a>
<a id='n10822' href='#n10822'>10822</a>
<a id='n10823' href='#n10823'>10823</a>
<a id='n10824' href='#n10824'>10824</a>
<a id='n10825' href='#n10825'>10825</a>
<a id='n10826' href='#n10826'>10826</a>
<a id='n10827' href='#n10827'>10827</a>
<a id='n10828' href='#n10828'>10828</a>
<a id='n10829' href='#n10829'>10829</a>
<a id='n10830' href='#n10830'>10830</a>
<a id='n10831' href='#n10831'>10831</a>
<a id='n10832' href='#n10832'>10832</a>
<a id='n10833' href='#n10833'>10833</a>
<a id='n10834' href='#n10834'>10834</a>
<a id='n10835' href='#n10835'>10835</a>
<a id='n10836' href='#n10836'>10836</a>
<a id='n10837' href='#n10837'>10837</a>
<a id='n10838' href='#n10838'>10838</a>
<a id='n10839' href='#n10839'>10839</a>
<a id='n10840' href='#n10840'>10840</a>
<a id='n10841' href='#n10841'>10841</a>
<a id='n10842' href='#n10842'>10842</a>
<a id='n10843' href='#n10843'>10843</a>
<a id='n10844' href='#n10844'>10844</a>
<a id='n10845' href='#n10845'>10845</a>
<a id='n10846' href='#n10846'>10846</a>
<a id='n10847' href='#n10847'>10847</a>
<a id='n10848' href='#n10848'>10848</a>
<a id='n10849' href='#n10849'>10849</a>
<a id='n10850' href='#n10850'>10850</a>
<a id='n10851' href='#n10851'>10851</a>
<a id='n10852' href='#n10852'>10852</a>
<a id='n10853' href='#n10853'>10853</a>
<a id='n10854' href='#n10854'>10854</a>
<a id='n10855' href='#n10855'>10855</a>
<a id='n10856' href='#n10856'>10856</a>
<a id='n10857' href='#n10857'>10857</a>
<a id='n10858' href='#n10858'>10858</a>
<a id='n10859' href='#n10859'>10859</a>
<a id='n10860' href='#n10860'>10860</a>
<a id='n10861' href='#n10861'>10861</a>
<a id='n10862' href='#n10862'>10862</a>
<a id='n10863' href='#n10863'>10863</a>
<a id='n10864' href='#n10864'>10864</a>
<a id='n10865' href='#n10865'>10865</a>
<a id='n10866' href='#n10866'>10866</a>
<a id='n10867' href='#n10867'>10867</a>
<a id='n10868' href='#n10868'>10868</a>
<a id='n10869' href='#n10869'>10869</a>
<a id='n10870' href='#n10870'>10870</a>
<a id='n10871' href='#n10871'>10871</a>
<a id='n10872' href='#n10872'>10872</a>
<a id='n10873' href='#n10873'>10873</a>
<a id='n10874' href='#n10874'>10874</a>
<a id='n10875' href='#n10875'>10875</a>
<a id='n10876' href='#n10876'>10876</a>
<a id='n10877' href='#n10877'>10877</a>
<a id='n10878' href='#n10878'>10878</a>
<a id='n10879' href='#n10879'>10879</a>
<a id='n10880' href='#n10880'>10880</a>
<a id='n10881' href='#n10881'>10881</a>
<a id='n10882' href='#n10882'>10882</a>
<a id='n10883' href='#n10883'>10883</a>
<a id='n10884' href='#n10884'>10884</a>
<a id='n10885' href='#n10885'>10885</a>
<a id='n10886' href='#n10886'>10886</a>
<a id='n10887' href='#n10887'>10887</a>
<a id='n10888' href='#n10888'>10888</a>
<a id='n10889' href='#n10889'>10889</a>
<a id='n10890' href='#n10890'>10890</a>
<a id='n10891' href='#n10891'>10891</a>
<a id='n10892' href='#n10892'>10892</a>
<a id='n10893' href='#n10893'>10893</a>
<a id='n10894' href='#n10894'>10894</a>
<a id='n10895' href='#n10895'>10895</a>
<a id='n10896' href='#n10896'>10896</a>
<a id='n10897' href='#n10897'>10897</a>
<a id='n10898' href='#n10898'>10898</a>
<a id='n10899' href='#n10899'>10899</a>
<a id='n10900' href='#n10900'>10900</a>
<a id='n10901' href='#n10901'>10901</a>
<a id='n10902' href='#n10902'>10902</a>
<a id='n10903' href='#n10903'>10903</a>
<a id='n10904' href='#n10904'>10904</a>
<a id='n10905' href='#n10905'>10905</a>
<a id='n10906' href='#n10906'>10906</a>
<a id='n10907' href='#n10907'>10907</a>
<a id='n10908' href='#n10908'>10908</a>
<a id='n10909' href='#n10909'>10909</a>
<a id='n10910' href='#n10910'>10910</a>
<a id='n10911' href='#n10911'>10911</a>
<a id='n10912' href='#n10912'>10912</a>
<a id='n10913' href='#n10913'>10913</a>
<a id='n10914' href='#n10914'>10914</a>
<a id='n10915' href='#n10915'>10915</a>
<a id='n10916' href='#n10916'>10916</a>
<a id='n10917' href='#n10917'>10917</a>
<a id='n10918' href='#n10918'>10918</a>
<a id='n10919' href='#n10919'>10919</a>
<a id='n10920' href='#n10920'>10920</a>
<a id='n10921' href='#n10921'>10921</a>
<a id='n10922' href='#n10922'>10922</a>
<a id='n10923' href='#n10923'>10923</a>
<a id='n10924' href='#n10924'>10924</a>
<a id='n10925' href='#n10925'>10925</a>
<a id='n10926' href='#n10926'>10926</a>
<a id='n10927' href='#n10927'>10927</a>
<a id='n10928' href='#n10928'>10928</a>
<a id='n10929' href='#n10929'>10929</a>
<a id='n10930' href='#n10930'>10930</a>
<a id='n10931' href='#n10931'>10931</a>
<a id='n10932' href='#n10932'>10932</a>
<a id='n10933' href='#n10933'>10933</a>
<a id='n10934' href='#n10934'>10934</a>
<a id='n10935' href='#n10935'>10935</a>
<a id='n10936' href='#n10936'>10936</a>
<a id='n10937' href='#n10937'>10937</a>
<a id='n10938' href='#n10938'>10938</a>
<a id='n10939' href='#n10939'>10939</a>
<a id='n10940' href='#n10940'>10940</a>
<a id='n10941' href='#n10941'>10941</a>
<a id='n10942' href='#n10942'>10942</a>
<a id='n10943' href='#n10943'>10943</a>
<a id='n10944' href='#n10944'>10944</a>
<a id='n10945' href='#n10945'>10945</a>
<a id='n10946' href='#n10946'>10946</a>
<a id='n10947' href='#n10947'>10947</a>
<a id='n10948' href='#n10948'>10948</a>
<a id='n10949' href='#n10949'>10949</a>
<a id='n10950' href='#n10950'>10950</a>
<a id='n10951' href='#n10951'>10951</a>
<a id='n10952' href='#n10952'>10952</a>
<a id='n10953' href='#n10953'>10953</a>
<a id='n10954' href='#n10954'>10954</a>
<a id='n10955' href='#n10955'>10955</a>
<a id='n10956' href='#n10956'>10956</a>
<a id='n10957' href='#n10957'>10957</a>
<a id='n10958' href='#n10958'>10958</a>
<a id='n10959' href='#n10959'>10959</a>
<a id='n10960' href='#n10960'>10960</a>
<a id='n10961' href='#n10961'>10961</a>
<a id='n10962' href='#n10962'>10962</a>
<a id='n10963' href='#n10963'>10963</a>
<a id='n10964' href='#n10964'>10964</a>
<a id='n10965' href='#n10965'>10965</a>
<a id='n10966' href='#n10966'>10966</a>
<a id='n10967' href='#n10967'>10967</a>
<a id='n10968' href='#n10968'>10968</a>
<a id='n10969' href='#n10969'>10969</a>
<a id='n10970' href='#n10970'>10970</a>
<a id='n10971' href='#n10971'>10971</a>
<a id='n10972' href='#n10972'>10972</a>
<a id='n10973' href='#n10973'>10973</a>
<a id='n10974' href='#n10974'>10974</a>
<a id='n10975' href='#n10975'>10975</a>
<a id='n10976' href='#n10976'>10976</a>
<a id='n10977' href='#n10977'>10977</a>
<a id='n10978' href='#n10978'>10978</a>
<a id='n10979' href='#n10979'>10979</a>
<a id='n10980' href='#n10980'>10980</a>
<a id='n10981' href='#n10981'>10981</a>
<a id='n10982' href='#n10982'>10982</a>
<a id='n10983' href='#n10983'>10983</a>
<a id='n10984' href='#n10984'>10984</a>
<a id='n10985' href='#n10985'>10985</a>
<a id='n10986' href='#n10986'>10986</a>
<a id='n10987' href='#n10987'>10987</a>
<a id='n10988' href='#n10988'>10988</a>
<a id='n10989' href='#n10989'>10989</a>
<a id='n10990' href='#n10990'>10990</a>
<a id='n10991' href='#n10991'>10991</a>
<a id='n10992' href='#n10992'>10992</a>
<a id='n10993' href='#n10993'>10993</a>
<a id='n10994' href='#n10994'>10994</a>
<a id='n10995' href='#n10995'>10995</a>
<a id='n10996' href='#n10996'>10996</a>
<a id='n10997' href='#n10997'>10997</a>
<a id='n10998' href='#n10998'>10998</a>
<a id='n10999' href='#n10999'>10999</a>
<a id='n11000' href='#n11000'>11000</a>
<a id='n11001' href='#n11001'>11001</a>
<a id='n11002' href='#n11002'>11002</a>
<a id='n11003' href='#n11003'>11003</a>
<a id='n11004' href='#n11004'>11004</a>
<a id='n11005' href='#n11005'>11005</a>
<a id='n11006' href='#n11006'>11006</a>
<a id='n11007' href='#n11007'>11007</a>
<a id='n11008' href='#n11008'>11008</a>
<a id='n11009' href='#n11009'>11009</a>
<a id='n11010' href='#n11010'>11010</a>
<a id='n11011' href='#n11011'>11011</a>
<a id='n11012' href='#n11012'>11012</a>
<a id='n11013' href='#n11013'>11013</a>
<a id='n11014' href='#n11014'>11014</a>
<a id='n11015' href='#n11015'>11015</a>
<a id='n11016' href='#n11016'>11016</a>
<a id='n11017' href='#n11017'>11017</a>
<a id='n11018' href='#n11018'>11018</a>
<a id='n11019' href='#n11019'>11019</a>
<a id='n11020' href='#n11020'>11020</a>
<a id='n11021' href='#n11021'>11021</a>
<a id='n11022' href='#n11022'>11022</a>
<a id='n11023' href='#n11023'>11023</a>
<a id='n11024' href='#n11024'>11024</a>
<a id='n11025' href='#n11025'>11025</a>
<a id='n11026' href='#n11026'>11026</a>
<a id='n11027' href='#n11027'>11027</a>
<a id='n11028' href='#n11028'>11028</a>
<a id='n11029' href='#n11029'>11029</a>
<a id='n11030' href='#n11030'>11030</a>
<a id='n11031' href='#n11031'>11031</a>
<a id='n11032' href='#n11032'>11032</a>
<a id='n11033' href='#n11033'>11033</a>
<a id='n11034' href='#n11034'>11034</a>
<a id='n11035' href='#n11035'>11035</a>
<a id='n11036' href='#n11036'>11036</a>
<a id='n11037' href='#n11037'>11037</a>
<a id='n11038' href='#n11038'>11038</a>
<a id='n11039' href='#n11039'>11039</a>
<a id='n11040' href='#n11040'>11040</a>
<a id='n11041' href='#n11041'>11041</a>
<a id='n11042' href='#n11042'>11042</a>
<a id='n11043' href='#n11043'>11043</a>
<a id='n11044' href='#n11044'>11044</a>
<a id='n11045' href='#n11045'>11045</a>
<a id='n11046' href='#n11046'>11046</a>
<a id='n11047' href='#n11047'>11047</a>
<a id='n11048' href='#n11048'>11048</a>
<a id='n11049' href='#n11049'>11049</a>
<a id='n11050' href='#n11050'>11050</a>
<a id='n11051' href='#n11051'>11051</a>
<a id='n11052' href='#n11052'>11052</a>
<a id='n11053' href='#n11053'>11053</a>
<a id='n11054' href='#n11054'>11054</a>
<a id='n11055' href='#n11055'>11055</a>
<a id='n11056' href='#n11056'>11056</a>
<a id='n11057' href='#n11057'>11057</a>
<a id='n11058' href='#n11058'>11058</a>
<a id='n11059' href='#n11059'>11059</a>
<a id='n11060' href='#n11060'>11060</a>
<a id='n11061' href='#n11061'>11061</a>
<a id='n11062' href='#n11062'>11062</a>
<a id='n11063' href='#n11063'>11063</a>
<a id='n11064' href='#n11064'>11064</a>
<a id='n11065' href='#n11065'>11065</a>
<a id='n11066' href='#n11066'>11066</a>
<a id='n11067' href='#n11067'>11067</a>
<a id='n11068' href='#n11068'>11068</a>
<a id='n11069' href='#n11069'>11069</a>
<a id='n11070' href='#n11070'>11070</a>
<a id='n11071' href='#n11071'>11071</a>
<a id='n11072' href='#n11072'>11072</a>
<a id='n11073' href='#n11073'>11073</a>
<a id='n11074' href='#n11074'>11074</a>
<a id='n11075' href='#n11075'>11075</a>
<a id='n11076' href='#n11076'>11076</a>
<a id='n11077' href='#n11077'>11077</a>
<a id='n11078' href='#n11078'>11078</a>
<a id='n11079' href='#n11079'>11079</a>
<a id='n11080' href='#n11080'>11080</a>
<a id='n11081' href='#n11081'>11081</a>
<a id='n11082' href='#n11082'>11082</a>
<a id='n11083' href='#n11083'>11083</a>
<a id='n11084' href='#n11084'>11084</a>
<a id='n11085' href='#n11085'>11085</a>
<a id='n11086' href='#n11086'>11086</a>
<a id='n11087' href='#n11087'>11087</a>
<a id='n11088' href='#n11088'>11088</a>
<a id='n11089' href='#n11089'>11089</a>
<a id='n11090' href='#n11090'>11090</a>
<a id='n11091' href='#n11091'>11091</a>
<a id='n11092' href='#n11092'>11092</a>
<a id='n11093' href='#n11093'>11093</a>
<a id='n11094' href='#n11094'>11094</a>
<a id='n11095' href='#n11095'>11095</a>
<a id='n11096' href='#n11096'>11096</a>
<a id='n11097' href='#n11097'>11097</a>
<a id='n11098' href='#n11098'>11098</a>
<a id='n11099' href='#n11099'>11099</a>
<a id='n11100' href='#n11100'>11100</a>
<a id='n11101' href='#n11101'>11101</a>
<a id='n11102' href='#n11102'>11102</a>
<a id='n11103' href='#n11103'>11103</a>
<a id='n11104' href='#n11104'>11104</a>
<a id='n11105' href='#n11105'>11105</a>
<a id='n11106' href='#n11106'>11106</a>
<a id='n11107' href='#n11107'>11107</a>
<a id='n11108' href='#n11108'>11108</a>
<a id='n11109' href='#n11109'>11109</a>
<a id='n11110' href='#n11110'>11110</a>
<a id='n11111' href='#n11111'>11111</a>
<a id='n11112' href='#n11112'>11112</a>
<a id='n11113' href='#n11113'>11113</a>
<a id='n11114' href='#n11114'>11114</a>
<a id='n11115' href='#n11115'>11115</a>
<a id='n11116' href='#n11116'>11116</a>
<a id='n11117' href='#n11117'>11117</a>
<a id='n11118' href='#n11118'>11118</a>
<a id='n11119' href='#n11119'>11119</a>
<a id='n11120' href='#n11120'>11120</a>
<a id='n11121' href='#n11121'>11121</a>
<a id='n11122' href='#n11122'>11122</a>
<a id='n11123' href='#n11123'>11123</a>
<a id='n11124' href='#n11124'>11124</a>
<a id='n11125' href='#n11125'>11125</a>
<a id='n11126' href='#n11126'>11126</a>
<a id='n11127' href='#n11127'>11127</a>
<a id='n11128' href='#n11128'>11128</a>
<a id='n11129' href='#n11129'>11129</a>
<a id='n11130' href='#n11130'>11130</a>
<a id='n11131' href='#n11131'>11131</a>
<a id='n11132' href='#n11132'>11132</a>
<a id='n11133' href='#n11133'>11133</a>
<a id='n11134' href='#n11134'>11134</a>
<a id='n11135' href='#n11135'>11135</a>
<a id='n11136' href='#n11136'>11136</a>
<a id='n11137' href='#n11137'>11137</a>
<a id='n11138' href='#n11138'>11138</a>
<a id='n11139' href='#n11139'>11139</a>
<a id='n11140' href='#n11140'>11140</a>
<a id='n11141' href='#n11141'>11141</a>
<a id='n11142' href='#n11142'>11142</a>
<a id='n11143' href='#n11143'>11143</a>
<a id='n11144' href='#n11144'>11144</a>
<a id='n11145' href='#n11145'>11145</a>
<a id='n11146' href='#n11146'>11146</a>
<a id='n11147' href='#n11147'>11147</a>
<a id='n11148' href='#n11148'>11148</a>
<a id='n11149' href='#n11149'>11149</a>
<a id='n11150' href='#n11150'>11150</a>
<a id='n11151' href='#n11151'>11151</a>
<a id='n11152' href='#n11152'>11152</a>
<a id='n11153' href='#n11153'>11153</a>
<a id='n11154' href='#n11154'>11154</a>
<a id='n11155' href='#n11155'>11155</a>
<a id='n11156' href='#n11156'>11156</a>
<a id='n11157' href='#n11157'>11157</a>
<a id='n11158' href='#n11158'>11158</a>
<a id='n11159' href='#n11159'>11159</a>
<a id='n11160' href='#n11160'>11160</a>
<a id='n11161' href='#n11161'>11161</a>
<a id='n11162' href='#n11162'>11162</a>
<a id='n11163' href='#n11163'>11163</a>
<a id='n11164' href='#n11164'>11164</a>
<a id='n11165' href='#n11165'>11165</a>
<a id='n11166' href='#n11166'>11166</a>
<a id='n11167' href='#n11167'>11167</a>
<a id='n11168' href='#n11168'>11168</a>
<a id='n11169' href='#n11169'>11169</a>
<a id='n11170' href='#n11170'>11170</a>
<a id='n11171' href='#n11171'>11171</a>
<a id='n11172' href='#n11172'>11172</a>
<a id='n11173' href='#n11173'>11173</a>
<a id='n11174' href='#n11174'>11174</a>
<a id='n11175' href='#n11175'>11175</a>
<a id='n11176' href='#n11176'>11176</a>
<a id='n11177' href='#n11177'>11177</a>
<a id='n11178' href='#n11178'>11178</a>
<a id='n11179' href='#n11179'>11179</a>
<a id='n11180' href='#n11180'>11180</a>
<a id='n11181' href='#n11181'>11181</a>
<a id='n11182' href='#n11182'>11182</a>
<a id='n11183' href='#n11183'>11183</a>
<a id='n11184' href='#n11184'>11184</a>
<a id='n11185' href='#n11185'>11185</a>
<a id='n11186' href='#n11186'>11186</a>
<a id='n11187' href='#n11187'>11187</a>
<a id='n11188' href='#n11188'>11188</a>
<a id='n11189' href='#n11189'>11189</a>
<a id='n11190' href='#n11190'>11190</a>
<a id='n11191' href='#n11191'>11191</a>
<a id='n11192' href='#n11192'>11192</a>
<a id='n11193' href='#n11193'>11193</a>
<a id='n11194' href='#n11194'>11194</a>
<a id='n11195' href='#n11195'>11195</a>
<a id='n11196' href='#n11196'>11196</a>
<a id='n11197' href='#n11197'>11197</a>
<a id='n11198' href='#n11198'>11198</a>
<a id='n11199' href='#n11199'>11199</a>
<a id='n11200' href='#n11200'>11200</a>
<a id='n11201' href='#n11201'>11201</a>
<a id='n11202' href='#n11202'>11202</a>
<a id='n11203' href='#n11203'>11203</a>
<a id='n11204' href='#n11204'>11204</a>
<a id='n11205' href='#n11205'>11205</a>
<a id='n11206' href='#n11206'>11206</a>
<a id='n11207' href='#n11207'>11207</a>
<a id='n11208' href='#n11208'>11208</a>
<a id='n11209' href='#n11209'>11209</a>
<a id='n11210' href='#n11210'>11210</a>
<a id='n11211' href='#n11211'>11211</a>
<a id='n11212' href='#n11212'>11212</a>
<a id='n11213' href='#n11213'>11213</a>
<a id='n11214' href='#n11214'>11214</a>
<a id='n11215' href='#n11215'>11215</a>
<a id='n11216' href='#n11216'>11216</a>
<a id='n11217' href='#n11217'>11217</a>
<a id='n11218' href='#n11218'>11218</a>
<a id='n11219' href='#n11219'>11219</a>
<a id='n11220' href='#n11220'>11220</a>
<a id='n11221' href='#n11221'>11221</a>
<a id='n11222' href='#n11222'>11222</a>
<a id='n11223' href='#n11223'>11223</a>
<a id='n11224' href='#n11224'>11224</a>
<a id='n11225' href='#n11225'>11225</a>
<a id='n11226' href='#n11226'>11226</a>
<a id='n11227' href='#n11227'>11227</a>
<a id='n11228' href='#n11228'>11228</a>
<a id='n11229' href='#n11229'>11229</a>
<a id='n11230' href='#n11230'>11230</a>
<a id='n11231' href='#n11231'>11231</a>
<a id='n11232' href='#n11232'>11232</a>
<a id='n11233' href='#n11233'>11233</a>
<a id='n11234' href='#n11234'>11234</a>
<a id='n11235' href='#n11235'>11235</a>
<a id='n11236' href='#n11236'>11236</a>
<a id='n11237' href='#n11237'>11237</a>
<a id='n11238' href='#n11238'>11238</a>
<a id='n11239' href='#n11239'>11239</a>
<a id='n11240' href='#n11240'>11240</a>
<a id='n11241' href='#n11241'>11241</a>
<a id='n11242' href='#n11242'>11242</a>
<a id='n11243' href='#n11243'>11243</a>
<a id='n11244' href='#n11244'>11244</a>
<a id='n11245' href='#n11245'>11245</a>
<a id='n11246' href='#n11246'>11246</a>
<a id='n11247' href='#n11247'>11247</a>
<a id='n11248' href='#n11248'>11248</a>
<a id='n11249' href='#n11249'>11249</a>
<a id='n11250' href='#n11250'>11250</a>
<a id='n11251' href='#n11251'>11251</a>
<a id='n11252' href='#n11252'>11252</a>
<a id='n11253' href='#n11253'>11253</a>
<a id='n11254' href='#n11254'>11254</a>
<a id='n11255' href='#n11255'>11255</a>
<a id='n11256' href='#n11256'>11256</a>
<a id='n11257' href='#n11257'>11257</a>
<a id='n11258' href='#n11258'>11258</a>
<a id='n11259' href='#n11259'>11259</a>
<a id='n11260' href='#n11260'>11260</a>
<a id='n11261' href='#n11261'>11261</a>
<a id='n11262' href='#n11262'>11262</a>
<a id='n11263' href='#n11263'>11263</a>
<a id='n11264' href='#n11264'>11264</a>
<a id='n11265' href='#n11265'>11265</a>
<a id='n11266' href='#n11266'>11266</a>
<a id='n11267' href='#n11267'>11267</a>
<a id='n11268' href='#n11268'>11268</a>
<a id='n11269' href='#n11269'>11269</a>
<a id='n11270' href='#n11270'>11270</a>
<a id='n11271' href='#n11271'>11271</a>
<a id='n11272' href='#n11272'>11272</a>
<a id='n11273' href='#n11273'>11273</a>
<a id='n11274' href='#n11274'>11274</a>
<a id='n11275' href='#n11275'>11275</a>
<a id='n11276' href='#n11276'>11276</a>
<a id='n11277' href='#n11277'>11277</a>
<a id='n11278' href='#n11278'>11278</a>
<a id='n11279' href='#n11279'>11279</a>
<a id='n11280' href='#n11280'>11280</a>
<a id='n11281' href='#n11281'>11281</a>
<a id='n11282' href='#n11282'>11282</a>
<a id='n11283' href='#n11283'>11283</a>
<a id='n11284' href='#n11284'>11284</a>
<a id='n11285' href='#n11285'>11285</a>
<a id='n11286' href='#n11286'>11286</a>
<a id='n11287' href='#n11287'>11287</a>
<a id='n11288' href='#n11288'>11288</a>
<a id='n11289' href='#n11289'>11289</a>
<a id='n11290' href='#n11290'>11290</a>
<a id='n11291' href='#n11291'>11291</a>
<a id='n11292' href='#n11292'>11292</a>
<a id='n11293' href='#n11293'>11293</a>
<a id='n11294' href='#n11294'>11294</a>
<a id='n11295' href='#n11295'>11295</a>
<a id='n11296' href='#n11296'>11296</a>
<a id='n11297' href='#n11297'>11297</a>
<a id='n11298' href='#n11298'>11298</a>
<a id='n11299' href='#n11299'>11299</a>
<a id='n11300' href='#n11300'>11300</a>
<a id='n11301' href='#n11301'>11301</a>
<a id='n11302' href='#n11302'>11302</a>
<a id='n11303' href='#n11303'>11303</a>
<a id='n11304' href='#n11304'>11304</a>
<a id='n11305' href='#n11305'>11305</a>
<a id='n11306' href='#n11306'>11306</a>
<a id='n11307' href='#n11307'>11307</a>
<a id='n11308' href='#n11308'>11308</a>
<a id='n11309' href='#n11309'>11309</a>
<a id='n11310' href='#n11310'>11310</a>
<a id='n11311' href='#n11311'>11311</a>
<a id='n11312' href='#n11312'>11312</a>
<a id='n11313' href='#n11313'>11313</a>
<a id='n11314' href='#n11314'>11314</a>
<a id='n11315' href='#n11315'>11315</a>
<a id='n11316' href='#n11316'>11316</a>
<a id='n11317' href='#n11317'>11317</a>
<a id='n11318' href='#n11318'>11318</a>
<a id='n11319' href='#n11319'>11319</a>
<a id='n11320' href='#n11320'>11320</a>
<a id='n11321' href='#n11321'>11321</a>
<a id='n11322' href='#n11322'>11322</a>
<a id='n11323' href='#n11323'>11323</a>
<a id='n11324' href='#n11324'>11324</a>
<a id='n11325' href='#n11325'>11325</a>
<a id='n11326' href='#n11326'>11326</a>
<a id='n11327' href='#n11327'>11327</a>
<a id='n11328' href='#n11328'>11328</a>
<a id='n11329' href='#n11329'>11329</a>
<a id='n11330' href='#n11330'>11330</a>
<a id='n11331' href='#n11331'>11331</a>
<a id='n11332' href='#n11332'>11332</a>
<a id='n11333' href='#n11333'>11333</a>
<a id='n11334' href='#n11334'>11334</a>
<a id='n11335' href='#n11335'>11335</a>
<a id='n11336' href='#n11336'>11336</a>
<a id='n11337' href='#n11337'>11337</a>
<a id='n11338' href='#n11338'>11338</a>
<a id='n11339' href='#n11339'>11339</a>
<a id='n11340' href='#n11340'>11340</a>
<a id='n11341' href='#n11341'>11341</a>
<a id='n11342' href='#n11342'>11342</a>
<a id='n11343' href='#n11343'>11343</a>
<a id='n11344' href='#n11344'>11344</a>
<a id='n11345' href='#n11345'>11345</a>
<a id='n11346' href='#n11346'>11346</a>
<a id='n11347' href='#n11347'>11347</a>
<a id='n11348' href='#n11348'>11348</a>
<a id='n11349' href='#n11349'>11349</a>
<a id='n11350' href='#n11350'>11350</a>
<a id='n11351' href='#n11351'>11351</a>
<a id='n11352' href='#n11352'>11352</a>
<a id='n11353' href='#n11353'>11353</a>
<a id='n11354' href='#n11354'>11354</a>
<a id='n11355' href='#n11355'>11355</a>
<a id='n11356' href='#n11356'>11356</a>
<a id='n11357' href='#n11357'>11357</a>
<a id='n11358' href='#n11358'>11358</a>
<a id='n11359' href='#n11359'>11359</a>
<a id='n11360' href='#n11360'>11360</a>
<a id='n11361' href='#n11361'>11361</a>
<a id='n11362' href='#n11362'>11362</a>
<a id='n11363' href='#n11363'>11363</a>
<a id='n11364' href='#n11364'>11364</a>
<a id='n11365' href='#n11365'>11365</a>
<a id='n11366' href='#n11366'>11366</a>
<a id='n11367' href='#n11367'>11367</a>
<a id='n11368' href='#n11368'>11368</a>
<a id='n11369' href='#n11369'>11369</a>
<a id='n11370' href='#n11370'>11370</a>
<a id='n11371' href='#n11371'>11371</a>
<a id='n11372' href='#n11372'>11372</a>
<a id='n11373' href='#n11373'>11373</a>
<a id='n11374' href='#n11374'>11374</a>
<a id='n11375' href='#n11375'>11375</a>
<a id='n11376' href='#n11376'>11376</a>
<a id='n11377' href='#n11377'>11377</a>
<a id='n11378' href='#n11378'>11378</a>
<a id='n11379' href='#n11379'>11379</a>
<a id='n11380' href='#n11380'>11380</a>
<a id='n11381' href='#n11381'>11381</a>
<a id='n11382' href='#n11382'>11382</a>
<a id='n11383' href='#n11383'>11383</a>
<a id='n11384' href='#n11384'>11384</a>
<a id='n11385' href='#n11385'>11385</a>
<a id='n11386' href='#n11386'>11386</a>
<a id='n11387' href='#n11387'>11387</a>
<a id='n11388' href='#n11388'>11388</a>
<a id='n11389' href='#n11389'>11389</a>
<a id='n11390' href='#n11390'>11390</a>
<a id='n11391' href='#n11391'>11391</a>
<a id='n11392' href='#n11392'>11392</a>
<a id='n11393' href='#n11393'>11393</a>
<a id='n11394' href='#n11394'>11394</a>
<a id='n11395' href='#n11395'>11395</a>
<a id='n11396' href='#n11396'>11396</a>
<a id='n11397' href='#n11397'>11397</a>
<a id='n11398' href='#n11398'>11398</a>
<a id='n11399' href='#n11399'>11399</a>
<a id='n11400' href='#n11400'>11400</a>
<a id='n11401' href='#n11401'>11401</a>
<a id='n11402' href='#n11402'>11402</a>
<a id='n11403' href='#n11403'>11403</a>
<a id='n11404' href='#n11404'>11404</a>
<a id='n11405' href='#n11405'>11405</a>
<a id='n11406' href='#n11406'>11406</a>
<a id='n11407' href='#n11407'>11407</a>
<a id='n11408' href='#n11408'>11408</a>
<a id='n11409' href='#n11409'>11409</a>
<a id='n11410' href='#n11410'>11410</a>
<a id='n11411' href='#n11411'>11411</a>
<a id='n11412' href='#n11412'>11412</a>
<a id='n11413' href='#n11413'>11413</a>
<a id='n11414' href='#n11414'>11414</a>
<a id='n11415' href='#n11415'>11415</a>
<a id='n11416' href='#n11416'>11416</a>
<a id='n11417' href='#n11417'>11417</a>
<a id='n11418' href='#n11418'>11418</a>
<a id='n11419' href='#n11419'>11419</a>
<a id='n11420' href='#n11420'>11420</a>
<a id='n11421' href='#n11421'>11421</a>
<a id='n11422' href='#n11422'>11422</a>
<a id='n11423' href='#n11423'>11423</a>
<a id='n11424' href='#n11424'>11424</a>
<a id='n11425' href='#n11425'>11425</a>
<a id='n11426' href='#n11426'>11426</a>
<a id='n11427' href='#n11427'>11427</a>
<a id='n11428' href='#n11428'>11428</a>
<a id='n11429' href='#n11429'>11429</a>
<a id='n11430' href='#n11430'>11430</a>
<a id='n11431' href='#n11431'>11431</a>
<a id='n11432' href='#n11432'>11432</a>
<a id='n11433' href='#n11433'>11433</a>
<a id='n11434' href='#n11434'>11434</a>
<a id='n11435' href='#n11435'>11435</a>
<a id='n11436' href='#n11436'>11436</a>
<a id='n11437' href='#n11437'>11437</a>
<a id='n11438' href='#n11438'>11438</a>
<a id='n11439' href='#n11439'>11439</a>
<a id='n11440' href='#n11440'>11440</a>
<a id='n11441' href='#n11441'>11441</a>
<a id='n11442' href='#n11442'>11442</a>
<a id='n11443' href='#n11443'>11443</a>
<a id='n11444' href='#n11444'>11444</a>
<a id='n11445' href='#n11445'>11445</a>
<a id='n11446' href='#n11446'>11446</a>
<a id='n11447' href='#n11447'>11447</a>
<a id='n11448' href='#n11448'>11448</a>
<a id='n11449' href='#n11449'>11449</a>
<a id='n11450' href='#n11450'>11450</a>
<a id='n11451' href='#n11451'>11451</a>
<a id='n11452' href='#n11452'>11452</a>
<a id='n11453' href='#n11453'>11453</a>
<a id='n11454' href='#n11454'>11454</a>
<a id='n11455' href='#n11455'>11455</a>
<a id='n11456' href='#n11456'>11456</a>
<a id='n11457' href='#n11457'>11457</a>
<a id='n11458' href='#n11458'>11458</a>
<a id='n11459' href='#n11459'>11459</a>
<a id='n11460' href='#n11460'>11460</a>
<a id='n11461' href='#n11461'>11461</a>
<a id='n11462' href='#n11462'>11462</a>
<a id='n11463' href='#n11463'>11463</a>
<a id='n11464' href='#n11464'>11464</a>
<a id='n11465' href='#n11465'>11465</a>
<a id='n11466' href='#n11466'>11466</a>
<a id='n11467' href='#n11467'>11467</a>
<a id='n11468' href='#n11468'>11468</a>
<a id='n11469' href='#n11469'>11469</a>
<a id='n11470' href='#n11470'>11470</a>
<a id='n11471' href='#n11471'>11471</a>
<a id='n11472' href='#n11472'>11472</a>
<a id='n11473' href='#n11473'>11473</a>
<a id='n11474' href='#n11474'>11474</a>
<a id='n11475' href='#n11475'>11475</a>
<a id='n11476' href='#n11476'>11476</a>
<a id='n11477' href='#n11477'>11477</a>
<a id='n11478' href='#n11478'>11478</a>
<a id='n11479' href='#n11479'>11479</a>
<a id='n11480' href='#n11480'>11480</a>
<a id='n11481' href='#n11481'>11481</a>
<a id='n11482' href='#n11482'>11482</a>
<a id='n11483' href='#n11483'>11483</a>
<a id='n11484' href='#n11484'>11484</a>
<a id='n11485' href='#n11485'>11485</a>
<a id='n11486' href='#n11486'>11486</a>
<a id='n11487' href='#n11487'>11487</a>
<a id='n11488' href='#n11488'>11488</a>
<a id='n11489' href='#n11489'>11489</a>
<a id='n11490' href='#n11490'>11490</a>
<a id='n11491' href='#n11491'>11491</a>
<a id='n11492' href='#n11492'>11492</a>
<a id='n11493' href='#n11493'>11493</a>
<a id='n11494' href='#n11494'>11494</a>
<a id='n11495' href='#n11495'>11495</a>
<a id='n11496' href='#n11496'>11496</a>
<a id='n11497' href='#n11497'>11497</a>
<a id='n11498' href='#n11498'>11498</a>
<a id='n11499' href='#n11499'>11499</a>
<a id='n11500' href='#n11500'>11500</a>
<a id='n11501' href='#n11501'>11501</a>
<a id='n11502' href='#n11502'>11502</a>
<a id='n11503' href='#n11503'>11503</a>
<a id='n11504' href='#n11504'>11504</a>
<a id='n11505' href='#n11505'>11505</a>
<a id='n11506' href='#n11506'>11506</a>
<a id='n11507' href='#n11507'>11507</a>
<a id='n11508' href='#n11508'>11508</a>
<a id='n11509' href='#n11509'>11509</a>
<a id='n11510' href='#n11510'>11510</a>
<a id='n11511' href='#n11511'>11511</a>
<a id='n11512' href='#n11512'>11512</a>
<a id='n11513' href='#n11513'>11513</a>
<a id='n11514' href='#n11514'>11514</a>
<a id='n11515' href='#n11515'>11515</a>
<a id='n11516' href='#n11516'>11516</a>
<a id='n11517' href='#n11517'>11517</a>
<a id='n11518' href='#n11518'>11518</a>
<a id='n11519' href='#n11519'>11519</a>
<a id='n11520' href='#n11520'>11520</a>
<a id='n11521' href='#n11521'>11521</a>
<a id='n11522' href='#n11522'>11522</a>
<a id='n11523' href='#n11523'>11523</a>
<a id='n11524' href='#n11524'>11524</a>
<a id='n11525' href='#n11525'>11525</a>
<a id='n11526' href='#n11526'>11526</a>
<a id='n11527' href='#n11527'>11527</a>
<a id='n11528' href='#n11528'>11528</a>
<a id='n11529' href='#n11529'>11529</a>
<a id='n11530' href='#n11530'>11530</a>
<a id='n11531' href='#n11531'>11531</a>
<a id='n11532' href='#n11532'>11532</a>
<a id='n11533' href='#n11533'>11533</a>
<a id='n11534' href='#n11534'>11534</a>
<a id='n11535' href='#n11535'>11535</a>
<a id='n11536' href='#n11536'>11536</a>
<a id='n11537' href='#n11537'>11537</a>
<a id='n11538' href='#n11538'>11538</a>
<a id='n11539' href='#n11539'>11539</a>
<a id='n11540' href='#n11540'>11540</a>
<a id='n11541' href='#n11541'>11541</a>
<a id='n11542' href='#n11542'>11542</a>
<a id='n11543' href='#n11543'>11543</a>
<a id='n11544' href='#n11544'>11544</a>
<a id='n11545' href='#n11545'>11545</a>
<a id='n11546' href='#n11546'>11546</a>
<a id='n11547' href='#n11547'>11547</a>
<a id='n11548' href='#n11548'>11548</a>
<a id='n11549' href='#n11549'>11549</a>
<a id='n11550' href='#n11550'>11550</a>
<a id='n11551' href='#n11551'>11551</a>
<a id='n11552' href='#n11552'>11552</a>
<a id='n11553' href='#n11553'>11553</a>
<a id='n11554' href='#n11554'>11554</a>
<a id='n11555' href='#n11555'>11555</a>
<a id='n11556' href='#n11556'>11556</a>
<a id='n11557' href='#n11557'>11557</a>
<a id='n11558' href='#n11558'>11558</a>
<a id='n11559' href='#n11559'>11559</a>
<a id='n11560' href='#n11560'>11560</a>
<a id='n11561' href='#n11561'>11561</a>
<a id='n11562' href='#n11562'>11562</a>
<a id='n11563' href='#n11563'>11563</a>
<a id='n11564' href='#n11564'>11564</a>
<a id='n11565' href='#n11565'>11565</a>
<a id='n11566' href='#n11566'>11566</a>
<a id='n11567' href='#n11567'>11567</a>
<a id='n11568' href='#n11568'>11568</a>
<a id='n11569' href='#n11569'>11569</a>
<a id='n11570' href='#n11570'>11570</a>
<a id='n11571' href='#n11571'>11571</a>
<a id='n11572' href='#n11572'>11572</a>
<a id='n11573' href='#n11573'>11573</a>
<a id='n11574' href='#n11574'>11574</a>
<a id='n11575' href='#n11575'>11575</a>
<a id='n11576' href='#n11576'>11576</a>
<a id='n11577' href='#n11577'>11577</a>
<a id='n11578' href='#n11578'>11578</a>
<a id='n11579' href='#n11579'>11579</a>
<a id='n11580' href='#n11580'>11580</a>
<a id='n11581' href='#n11581'>11581</a>
<a id='n11582' href='#n11582'>11582</a>
<a id='n11583' href='#n11583'>11583</a>
<a id='n11584' href='#n11584'>11584</a>
<a id='n11585' href='#n11585'>11585</a>
<a id='n11586' href='#n11586'>11586</a>
<a id='n11587' href='#n11587'>11587</a>
<a id='n11588' href='#n11588'>11588</a>
<a id='n11589' href='#n11589'>11589</a>
<a id='n11590' href='#n11590'>11590</a>
<a id='n11591' href='#n11591'>11591</a>
<a id='n11592' href='#n11592'>11592</a>
<a id='n11593' href='#n11593'>11593</a>
<a id='n11594' href='#n11594'>11594</a>
<a id='n11595' href='#n11595'>11595</a>
<a id='n11596' href='#n11596'>11596</a>
<a id='n11597' href='#n11597'>11597</a>
<a id='n11598' href='#n11598'>11598</a>
<a id='n11599' href='#n11599'>11599</a>
<a id='n11600' href='#n11600'>11600</a>
<a id='n11601' href='#n11601'>11601</a>
<a id='n11602' href='#n11602'>11602</a>
<a id='n11603' href='#n11603'>11603</a>
<a id='n11604' href='#n11604'>11604</a>
<a id='n11605' href='#n11605'>11605</a>
<a id='n11606' href='#n11606'>11606</a>
<a id='n11607' href='#n11607'>11607</a>
<a id='n11608' href='#n11608'>11608</a>
<a id='n11609' href='#n11609'>11609</a>
<a id='n11610' href='#n11610'>11610</a>
<a id='n11611' href='#n11611'>11611</a>
<a id='n11612' href='#n11612'>11612</a>
<a id='n11613' href='#n11613'>11613</a>
<a id='n11614' href='#n11614'>11614</a>
<a id='n11615' href='#n11615'>11615</a>
<a id='n11616' href='#n11616'>11616</a>
<a id='n11617' href='#n11617'>11617</a>
<a id='n11618' href='#n11618'>11618</a>
<a id='n11619' href='#n11619'>11619</a>
<a id='n11620' href='#n11620'>11620</a>
<a id='n11621' href='#n11621'>11621</a>
<a id='n11622' href='#n11622'>11622</a>
<a id='n11623' href='#n11623'>11623</a>
<a id='n11624' href='#n11624'>11624</a>
<a id='n11625' href='#n11625'>11625</a>
<a id='n11626' href='#n11626'>11626</a>
<a id='n11627' href='#n11627'>11627</a>
<a id='n11628' href='#n11628'>11628</a>
<a id='n11629' href='#n11629'>11629</a>
<a id='n11630' href='#n11630'>11630</a>
<a id='n11631' href='#n11631'>11631</a>
<a id='n11632' href='#n11632'>11632</a>
<a id='n11633' href='#n11633'>11633</a>
<a id='n11634' href='#n11634'>11634</a>
<a id='n11635' href='#n11635'>11635</a>
<a id='n11636' href='#n11636'>11636</a>
<a id='n11637' href='#n11637'>11637</a>
<a id='n11638' href='#n11638'>11638</a>
<a id='n11639' href='#n11639'>11639</a>
<a id='n11640' href='#n11640'>11640</a>
<a id='n11641' href='#n11641'>11641</a>
<a id='n11642' href='#n11642'>11642</a>
<a id='n11643' href='#n11643'>11643</a>
<a id='n11644' href='#n11644'>11644</a>
<a id='n11645' href='#n11645'>11645</a>
<a id='n11646' href='#n11646'>11646</a>
<a id='n11647' href='#n11647'>11647</a>
<a id='n11648' href='#n11648'>11648</a>
<a id='n11649' href='#n11649'>11649</a>
<a id='n11650' href='#n11650'>11650</a>
<a id='n11651' href='#n11651'>11651</a>
<a id='n11652' href='#n11652'>11652</a>
<a id='n11653' href='#n11653'>11653</a>
<a id='n11654' href='#n11654'>11654</a>
<a id='n11655' href='#n11655'>11655</a>
<a id='n11656' href='#n11656'>11656</a>
<a id='n11657' href='#n11657'>11657</a>
<a id='n11658' href='#n11658'>11658</a>
<a id='n11659' href='#n11659'>11659</a>
<a id='n11660' href='#n11660'>11660</a>
<a id='n11661' href='#n11661'>11661</a>
<a id='n11662' href='#n11662'>11662</a>
<a id='n11663' href='#n11663'>11663</a>
<a id='n11664' href='#n11664'>11664</a>
<a id='n11665' href='#n11665'>11665</a>
<a id='n11666' href='#n11666'>11666</a>
<a id='n11667' href='#n11667'>11667</a>
<a id='n11668' href='#n11668'>11668</a>
<a id='n11669' href='#n11669'>11669</a>
<a id='n11670' href='#n11670'>11670</a>
<a id='n11671' href='#n11671'>11671</a>
<a id='n11672' href='#n11672'>11672</a>
<a id='n11673' href='#n11673'>11673</a>
<a id='n11674' href='#n11674'>11674</a>
<a id='n11675' href='#n11675'>11675</a>
<a id='n11676' href='#n11676'>11676</a>
<a id='n11677' href='#n11677'>11677</a>
<a id='n11678' href='#n11678'>11678</a>
<a id='n11679' href='#n11679'>11679</a>
<a id='n11680' href='#n11680'>11680</a>
<a id='n11681' href='#n11681'>11681</a>
<a id='n11682' href='#n11682'>11682</a>
<a id='n11683' href='#n11683'>11683</a>
<a id='n11684' href='#n11684'>11684</a>
<a id='n11685' href='#n11685'>11685</a>
<a id='n11686' href='#n11686'>11686</a>
<a id='n11687' href='#n11687'>11687</a>
<a id='n11688' href='#n11688'>11688</a>
<a id='n11689' href='#n11689'>11689</a>
<a id='n11690' href='#n11690'>11690</a>
<a id='n11691' href='#n11691'>11691</a>
<a id='n11692' href='#n11692'>11692</a>
<a id='n11693' href='#n11693'>11693</a>
<a id='n11694' href='#n11694'>11694</a>
<a id='n11695' href='#n11695'>11695</a>
<a id='n11696' href='#n11696'>11696</a>
<a id='n11697' href='#n11697'>11697</a>
<a id='n11698' href='#n11698'>11698</a>
<a id='n11699' href='#n11699'>11699</a>
<a id='n11700' href='#n11700'>11700</a>
<a id='n11701' href='#n11701'>11701</a>
<a id='n11702' href='#n11702'>11702</a>
<a id='n11703' href='#n11703'>11703</a>
<a id='n11704' href='#n11704'>11704</a>
<a id='n11705' href='#n11705'>11705</a>
<a id='n11706' href='#n11706'>11706</a>
<a id='n11707' href='#n11707'>11707</a>
<a id='n11708' href='#n11708'>11708</a>
<a id='n11709' href='#n11709'>11709</a>
<a id='n11710' href='#n11710'>11710</a>
<a id='n11711' href='#n11711'>11711</a>
<a id='n11712' href='#n11712'>11712</a>
<a id='n11713' href='#n11713'>11713</a>
<a id='n11714' href='#n11714'>11714</a>
<a id='n11715' href='#n11715'>11715</a>
<a id='n11716' href='#n11716'>11716</a>
<a id='n11717' href='#n11717'>11717</a>
<a id='n11718' href='#n11718'>11718</a>
<a id='n11719' href='#n11719'>11719</a>
<a id='n11720' href='#n11720'>11720</a>
<a id='n11721' href='#n11721'>11721</a>
<a id='n11722' href='#n11722'>11722</a>
<a id='n11723' href='#n11723'>11723</a>
<a id='n11724' href='#n11724'>11724</a>
<a id='n11725' href='#n11725'>11725</a>
<a id='n11726' href='#n11726'>11726</a>
<a id='n11727' href='#n11727'>11727</a>
<a id='n11728' href='#n11728'>11728</a>
<a id='n11729' href='#n11729'>11729</a>
<a id='n11730' href='#n11730'>11730</a>
<a id='n11731' href='#n11731'>11731</a>
<a id='n11732' href='#n11732'>11732</a>
<a id='n11733' href='#n11733'>11733</a>
<a id='n11734' href='#n11734'>11734</a>
<a id='n11735' href='#n11735'>11735</a>
<a id='n11736' href='#n11736'>11736</a>
<a id='n11737' href='#n11737'>11737</a>
<a id='n11738' href='#n11738'>11738</a>
<a id='n11739' href='#n11739'>11739</a>
<a id='n11740' href='#n11740'>11740</a>
<a id='n11741' href='#n11741'>11741</a>
<a id='n11742' href='#n11742'>11742</a>
<a id='n11743' href='#n11743'>11743</a>
<a id='n11744' href='#n11744'>11744</a>
<a id='n11745' href='#n11745'>11745</a>
<a id='n11746' href='#n11746'>11746</a>
<a id='n11747' href='#n11747'>11747</a>
<a id='n11748' href='#n11748'>11748</a>
<a id='n11749' href='#n11749'>11749</a>
<a id='n11750' href='#n11750'>11750</a>
<a id='n11751' href='#n11751'>11751</a>
<a id='n11752' href='#n11752'>11752</a>
<a id='n11753' href='#n11753'>11753</a>
<a id='n11754' href='#n11754'>11754</a>
<a id='n11755' href='#n11755'>11755</a>
<a id='n11756' href='#n11756'>11756</a>
<a id='n11757' href='#n11757'>11757</a>
<a id='n11758' href='#n11758'>11758</a>
<a id='n11759' href='#n11759'>11759</a>
<a id='n11760' href='#n11760'>11760</a>
<a id='n11761' href='#n11761'>11761</a>
<a id='n11762' href='#n11762'>11762</a>
<a id='n11763' href='#n11763'>11763</a>
<a id='n11764' href='#n11764'>11764</a>
<a id='n11765' href='#n11765'>11765</a>
<a id='n11766' href='#n11766'>11766</a>
<a id='n11767' href='#n11767'>11767</a>
<a id='n11768' href='#n11768'>11768</a>
<a id='n11769' href='#n11769'>11769</a>
<a id='n11770' href='#n11770'>11770</a>
<a id='n11771' href='#n11771'>11771</a>
<a id='n11772' href='#n11772'>11772</a>
<a id='n11773' href='#n11773'>11773</a>
<a id='n11774' href='#n11774'>11774</a>
<a id='n11775' href='#n11775'>11775</a>
<a id='n11776' href='#n11776'>11776</a>
<a id='n11777' href='#n11777'>11777</a>
<a id='n11778' href='#n11778'>11778</a>
<a id='n11779' href='#n11779'>11779</a>
<a id='n11780' href='#n11780'>11780</a>
<a id='n11781' href='#n11781'>11781</a>
<a id='n11782' href='#n11782'>11782</a>
<a id='n11783' href='#n11783'>11783</a>
<a id='n11784' href='#n11784'>11784</a>
<a id='n11785' href='#n11785'>11785</a>
<a id='n11786' href='#n11786'>11786</a>
<a id='n11787' href='#n11787'>11787</a>
<a id='n11788' href='#n11788'>11788</a>
<a id='n11789' href='#n11789'>11789</a>
<a id='n11790' href='#n11790'>11790</a>
<a id='n11791' href='#n11791'>11791</a>
<a id='n11792' href='#n11792'>11792</a>
<a id='n11793' href='#n11793'>11793</a>
<a id='n11794' href='#n11794'>11794</a>
<a id='n11795' href='#n11795'>11795</a>
<a id='n11796' href='#n11796'>11796</a>
<a id='n11797' href='#n11797'>11797</a>
<a id='n11798' href='#n11798'>11798</a>
<a id='n11799' href='#n11799'>11799</a>
<a id='n11800' href='#n11800'>11800</a>
<a id='n11801' href='#n11801'>11801</a>
<a id='n11802' href='#n11802'>11802</a>
<a id='n11803' href='#n11803'>11803</a>
<a id='n11804' href='#n11804'>11804</a>
<a id='n11805' href='#n11805'>11805</a>
<a id='n11806' href='#n11806'>11806</a>
<a id='n11807' href='#n11807'>11807</a>
<a id='n11808' href='#n11808'>11808</a>
<a id='n11809' href='#n11809'>11809</a>
<a id='n11810' href='#n11810'>11810</a>
<a id='n11811' href='#n11811'>11811</a>
<a id='n11812' href='#n11812'>11812</a>
<a id='n11813' href='#n11813'>11813</a>
<a id='n11814' href='#n11814'>11814</a>
<a id='n11815' href='#n11815'>11815</a>
<a id='n11816' href='#n11816'>11816</a>
<a id='n11817' href='#n11817'>11817</a>
<a id='n11818' href='#n11818'>11818</a>
<a id='n11819' href='#n11819'>11819</a>
<a id='n11820' href='#n11820'>11820</a>
<a id='n11821' href='#n11821'>11821</a>
<a id='n11822' href='#n11822'>11822</a>
<a id='n11823' href='#n11823'>11823</a>
<a id='n11824' href='#n11824'>11824</a>
<a id='n11825' href='#n11825'>11825</a>
<a id='n11826' href='#n11826'>11826</a>
<a id='n11827' href='#n11827'>11827</a>
<a id='n11828' href='#n11828'>11828</a>
<a id='n11829' href='#n11829'>11829</a>
<a id='n11830' href='#n11830'>11830</a>
<a id='n11831' href='#n11831'>11831</a>
<a id='n11832' href='#n11832'>11832</a>
<a id='n11833' href='#n11833'>11833</a>
<a id='n11834' href='#n11834'>11834</a>
<a id='n11835' href='#n11835'>11835</a>
<a id='n11836' href='#n11836'>11836</a>
<a id='n11837' href='#n11837'>11837</a>
<a id='n11838' href='#n11838'>11838</a>
<a id='n11839' href='#n11839'>11839</a>
<a id='n11840' href='#n11840'>11840</a>
<a id='n11841' href='#n11841'>11841</a>
<a id='n11842' href='#n11842'>11842</a>
<a id='n11843' href='#n11843'>11843</a>
<a id='n11844' href='#n11844'>11844</a>
<a id='n11845' href='#n11845'>11845</a>
<a id='n11846' href='#n11846'>11846</a>
<a id='n11847' href='#n11847'>11847</a>
<a id='n11848' href='#n11848'>11848</a>
<a id='n11849' href='#n11849'>11849</a>
<a id='n11850' href='#n11850'>11850</a>
<a id='n11851' href='#n11851'>11851</a>
<a id='n11852' href='#n11852'>11852</a>
<a id='n11853' href='#n11853'>11853</a>
<a id='n11854' href='#n11854'>11854</a>
<a id='n11855' href='#n11855'>11855</a>
<a id='n11856' href='#n11856'>11856</a>
<a id='n11857' href='#n11857'>11857</a>
<a id='n11858' href='#n11858'>11858</a>
<a id='n11859' href='#n11859'>11859</a>
<a id='n11860' href='#n11860'>11860</a>
<a id='n11861' href='#n11861'>11861</a>
<a id='n11862' href='#n11862'>11862</a>
<a id='n11863' href='#n11863'>11863</a>
<a id='n11864' href='#n11864'>11864</a>
<a id='n11865' href='#n11865'>11865</a>
<a id='n11866' href='#n11866'>11866</a>
<a id='n11867' href='#n11867'>11867</a>
<a id='n11868' href='#n11868'>11868</a>
<a id='n11869' href='#n11869'>11869</a>
<a id='n11870' href='#n11870'>11870</a>
<a id='n11871' href='#n11871'>11871</a>
<a id='n11872' href='#n11872'>11872</a>
<a id='n11873' href='#n11873'>11873</a>
<a id='n11874' href='#n11874'>11874</a>
<a id='n11875' href='#n11875'>11875</a>
<a id='n11876' href='#n11876'>11876</a>
<a id='n11877' href='#n11877'>11877</a>
<a id='n11878' href='#n11878'>11878</a>
<a id='n11879' href='#n11879'>11879</a>
<a id='n11880' href='#n11880'>11880</a>
<a id='n11881' href='#n11881'>11881</a>
<a id='n11882' href='#n11882'>11882</a>
<a id='n11883' href='#n11883'>11883</a>
<a id='n11884' href='#n11884'>11884</a>
<a id='n11885' href='#n11885'>11885</a>
<a id='n11886' href='#n11886'>11886</a>
<a id='n11887' href='#n11887'>11887</a>
<a id='n11888' href='#n11888'>11888</a>
<a id='n11889' href='#n11889'>11889</a>
<a id='n11890' href='#n11890'>11890</a>
<a id='n11891' href='#n11891'>11891</a>
<a id='n11892' href='#n11892'>11892</a>
<a id='n11893' href='#n11893'>11893</a>
<a id='n11894' href='#n11894'>11894</a>
<a id='n11895' href='#n11895'>11895</a>
<a id='n11896' href='#n11896'>11896</a>
<a id='n11897' href='#n11897'>11897</a>
<a id='n11898' href='#n11898'>11898</a>
<a id='n11899' href='#n11899'>11899</a>
<a id='n11900' href='#n11900'>11900</a>
<a id='n11901' href='#n11901'>11901</a>
<a id='n11902' href='#n11902'>11902</a>
<a id='n11903' href='#n11903'>11903</a>
<a id='n11904' href='#n11904'>11904</a>
<a id='n11905' href='#n11905'>11905</a>
<a id='n11906' href='#n11906'>11906</a>
<a id='n11907' href='#n11907'>11907</a>
<a id='n11908' href='#n11908'>11908</a>
<a id='n11909' href='#n11909'>11909</a>
<a id='n11910' href='#n11910'>11910</a>
<a id='n11911' href='#n11911'>11911</a>
<a id='n11912' href='#n11912'>11912</a>
<a id='n11913' href='#n11913'>11913</a>
<a id='n11914' href='#n11914'>11914</a>
<a id='n11915' href='#n11915'>11915</a>
<a id='n11916' href='#n11916'>11916</a>
<a id='n11917' href='#n11917'>11917</a>
<a id='n11918' href='#n11918'>11918</a>
<a id='n11919' href='#n11919'>11919</a>
<a id='n11920' href='#n11920'>11920</a>
<a id='n11921' href='#n11921'>11921</a>
<a id='n11922' href='#n11922'>11922</a>
<a id='n11923' href='#n11923'>11923</a>
<a id='n11924' href='#n11924'>11924</a>
<a id='n11925' href='#n11925'>11925</a>
<a id='n11926' href='#n11926'>11926</a>
<a id='n11927' href='#n11927'>11927</a>
<a id='n11928' href='#n11928'>11928</a>
<a id='n11929' href='#n11929'>11929</a>
<a id='n11930' href='#n11930'>11930</a>
<a id='n11931' href='#n11931'>11931</a>
<a id='n11932' href='#n11932'>11932</a>
<a id='n11933' href='#n11933'>11933</a>
<a id='n11934' href='#n11934'>11934</a>
<a id='n11935' href='#n11935'>11935</a>
<a id='n11936' href='#n11936'>11936</a>
<a id='n11937' href='#n11937'>11937</a>
<a id='n11938' href='#n11938'>11938</a>
<a id='n11939' href='#n11939'>11939</a>
<a id='n11940' href='#n11940'>11940</a>
<a id='n11941' href='#n11941'>11941</a>
<a id='n11942' href='#n11942'>11942</a>
<a id='n11943' href='#n11943'>11943</a>
<a id='n11944' href='#n11944'>11944</a>
<a id='n11945' href='#n11945'>11945</a>
<a id='n11946' href='#n11946'>11946</a>
<a id='n11947' href='#n11947'>11947</a>
<a id='n11948' href='#n11948'>11948</a>
<a id='n11949' href='#n11949'>11949</a>
<a id='n11950' href='#n11950'>11950</a>
<a id='n11951' href='#n11951'>11951</a>
<a id='n11952' href='#n11952'>11952</a>
<a id='n11953' href='#n11953'>11953</a>
<a id='n11954' href='#n11954'>11954</a>
<a id='n11955' href='#n11955'>11955</a>
<a id='n11956' href='#n11956'>11956</a>
<a id='n11957' href='#n11957'>11957</a>
<a id='n11958' href='#n11958'>11958</a>
<a id='n11959' href='#n11959'>11959</a>
<a id='n11960' href='#n11960'>11960</a>
<a id='n11961' href='#n11961'>11961</a>
<a id='n11962' href='#n11962'>11962</a>
<a id='n11963' href='#n11963'>11963</a>
<a id='n11964' href='#n11964'>11964</a>
<a id='n11965' href='#n11965'>11965</a>
<a id='n11966' href='#n11966'>11966</a>
<a id='n11967' href='#n11967'>11967</a>
<a id='n11968' href='#n11968'>11968</a>
<a id='n11969' href='#n11969'>11969</a>
<a id='n11970' href='#n11970'>11970</a>
<a id='n11971' href='#n11971'>11971</a>
<a id='n11972' href='#n11972'>11972</a>
<a id='n11973' href='#n11973'>11973</a>
<a id='n11974' href='#n11974'>11974</a>
<a id='n11975' href='#n11975'>11975</a>
<a id='n11976' href='#n11976'>11976</a>
<a id='n11977' href='#n11977'>11977</a>
<a id='n11978' href='#n11978'>11978</a>
<a id='n11979' href='#n11979'>11979</a>
<a id='n11980' href='#n11980'>11980</a>
<a id='n11981' href='#n11981'>11981</a>
<a id='n11982' href='#n11982'>11982</a>
<a id='n11983' href='#n11983'>11983</a>
<a id='n11984' href='#n11984'>11984</a>
<a id='n11985' href='#n11985'>11985</a>
<a id='n11986' href='#n11986'>11986</a>
<a id='n11987' href='#n11987'>11987</a>
<a id='n11988' href='#n11988'>11988</a>
<a id='n11989' href='#n11989'>11989</a>
<a id='n11990' href='#n11990'>11990</a>
<a id='n11991' href='#n11991'>11991</a>
<a id='n11992' href='#n11992'>11992</a>
<a id='n11993' href='#n11993'>11993</a>
<a id='n11994' href='#n11994'>11994</a>
<a id='n11995' href='#n11995'>11995</a>
<a id='n11996' href='#n11996'>11996</a>
<a id='n11997' href='#n11997'>11997</a>
<a id='n11998' href='#n11998'>11998</a>
<a id='n11999' href='#n11999'>11999</a>
<a id='n12000' href='#n12000'>12000</a>
<a id='n12001' href='#n12001'>12001</a>
<a id='n12002' href='#n12002'>12002</a>
<a id='n12003' href='#n12003'>12003</a>
<a id='n12004' href='#n12004'>12004</a>
<a id='n12005' href='#n12005'>12005</a>
<a id='n12006' href='#n12006'>12006</a>
<a id='n12007' href='#n12007'>12007</a>
<a id='n12008' href='#n12008'>12008</a>
<a id='n12009' href='#n12009'>12009</a>
<a id='n12010' href='#n12010'>12010</a>
<a id='n12011' href='#n12011'>12011</a>
<a id='n12012' href='#n12012'>12012</a>
<a id='n12013' href='#n12013'>12013</a>
<a id='n12014' href='#n12014'>12014</a>
<a id='n12015' href='#n12015'>12015</a>
<a id='n12016' href='#n12016'>12016</a>
<a id='n12017' href='#n12017'>12017</a>
<a id='n12018' href='#n12018'>12018</a>
<a id='n12019' href='#n12019'>12019</a>
<a id='n12020' href='#n12020'>12020</a>
<a id='n12021' href='#n12021'>12021</a>
<a id='n12022' href='#n12022'>12022</a>
<a id='n12023' href='#n12023'>12023</a>
<a id='n12024' href='#n12024'>12024</a>
<a id='n12025' href='#n12025'>12025</a>
<a id='n12026' href='#n12026'>12026</a>
<a id='n12027' href='#n12027'>12027</a>
<a id='n12028' href='#n12028'>12028</a>
<a id='n12029' href='#n12029'>12029</a>
<a id='n12030' href='#n12030'>12030</a>
<a id='n12031' href='#n12031'>12031</a>
<a id='n12032' href='#n12032'>12032</a>
<a id='n12033' href='#n12033'>12033</a>
<a id='n12034' href='#n12034'>12034</a>
<a id='n12035' href='#n12035'>12035</a>
<a id='n12036' href='#n12036'>12036</a>
<a id='n12037' href='#n12037'>12037</a>
<a id='n12038' href='#n12038'>12038</a>
<a id='n12039' href='#n12039'>12039</a>
<a id='n12040' href='#n12040'>12040</a>
<a id='n12041' href='#n12041'>12041</a>
<a id='n12042' href='#n12042'>12042</a>
<a id='n12043' href='#n12043'>12043</a>
<a id='n12044' href='#n12044'>12044</a>
<a id='n12045' href='#n12045'>12045</a>
<a id='n12046' href='#n12046'>12046</a>
<a id='n12047' href='#n12047'>12047</a>
<a id='n12048' href='#n12048'>12048</a>
<a id='n12049' href='#n12049'>12049</a>
<a id='n12050' href='#n12050'>12050</a>
<a id='n12051' href='#n12051'>12051</a>
<a id='n12052' href='#n12052'>12052</a>
<a id='n12053' href='#n12053'>12053</a>
<a id='n12054' href='#n12054'>12054</a>
<a id='n12055' href='#n12055'>12055</a>
<a id='n12056' href='#n12056'>12056</a>
<a id='n12057' href='#n12057'>12057</a>
<a id='n12058' href='#n12058'>12058</a>
<a id='n12059' href='#n12059'>12059</a>
<a id='n12060' href='#n12060'>12060</a>
<a id='n12061' href='#n12061'>12061</a>
<a id='n12062' href='#n12062'>12062</a>
<a id='n12063' href='#n12063'>12063</a>
<a id='n12064' href='#n12064'>12064</a>
<a id='n12065' href='#n12065'>12065</a>
<a id='n12066' href='#n12066'>12066</a>
<a id='n12067' href='#n12067'>12067</a>
<a id='n12068' href='#n12068'>12068</a>
<a id='n12069' href='#n12069'>12069</a>
<a id='n12070' href='#n12070'>12070</a>
<a id='n12071' href='#n12071'>12071</a>
<a id='n12072' href='#n12072'>12072</a>
<a id='n12073' href='#n12073'>12073</a>
<a id='n12074' href='#n12074'>12074</a>
<a id='n12075' href='#n12075'>12075</a>
<a id='n12076' href='#n12076'>12076</a>
<a id='n12077' href='#n12077'>12077</a>
<a id='n12078' href='#n12078'>12078</a>
<a id='n12079' href='#n12079'>12079</a>
<a id='n12080' href='#n12080'>12080</a>
<a id='n12081' href='#n12081'>12081</a>
<a id='n12082' href='#n12082'>12082</a>
<a id='n12083' href='#n12083'>12083</a>
<a id='n12084' href='#n12084'>12084</a>
<a id='n12085' href='#n12085'>12085</a>
<a id='n12086' href='#n12086'>12086</a>
<a id='n12087' href='#n12087'>12087</a>
<a id='n12088' href='#n12088'>12088</a>
<a id='n12089' href='#n12089'>12089</a>
<a id='n12090' href='#n12090'>12090</a>
<a id='n12091' href='#n12091'>12091</a>
<a id='n12092' href='#n12092'>12092</a>
<a id='n12093' href='#n12093'>12093</a>
<a id='n12094' href='#n12094'>12094</a>
<a id='n12095' href='#n12095'>12095</a>
<a id='n12096' href='#n12096'>12096</a>
<a id='n12097' href='#n12097'>12097</a>
<a id='n12098' href='#n12098'>12098</a>
<a id='n12099' href='#n12099'>12099</a>
<a id='n12100' href='#n12100'>12100</a>
<a id='n12101' href='#n12101'>12101</a>
<a id='n12102' href='#n12102'>12102</a>
<a id='n12103' href='#n12103'>12103</a>
<a id='n12104' href='#n12104'>12104</a>
<a id='n12105' href='#n12105'>12105</a>
<a id='n12106' href='#n12106'>12106</a>
<a id='n12107' href='#n12107'>12107</a>
<a id='n12108' href='#n12108'>12108</a>
<a id='n12109' href='#n12109'>12109</a>
<a id='n12110' href='#n12110'>12110</a>
<a id='n12111' href='#n12111'>12111</a>
<a id='n12112' href='#n12112'>12112</a>
<a id='n12113' href='#n12113'>12113</a>
<a id='n12114' href='#n12114'>12114</a>
<a id='n12115' href='#n12115'>12115</a>
<a id='n12116' href='#n12116'>12116</a>
<a id='n12117' href='#n12117'>12117</a>
<a id='n12118' href='#n12118'>12118</a>
<a id='n12119' href='#n12119'>12119</a>
<a id='n12120' href='#n12120'>12120</a>
<a id='n12121' href='#n12121'>12121</a>
<a id='n12122' href='#n12122'>12122</a>
<a id='n12123' href='#n12123'>12123</a>
<a id='n12124' href='#n12124'>12124</a>
<a id='n12125' href='#n12125'>12125</a>
<a id='n12126' href='#n12126'>12126</a>
<a id='n12127' href='#n12127'>12127</a>
<a id='n12128' href='#n12128'>12128</a>
<a id='n12129' href='#n12129'>12129</a>
<a id='n12130' href='#n12130'>12130</a>
<a id='n12131' href='#n12131'>12131</a>
<a id='n12132' href='#n12132'>12132</a>
<a id='n12133' href='#n12133'>12133</a>
<a id='n12134' href='#n12134'>12134</a>
<a id='n12135' href='#n12135'>12135</a>
<a id='n12136' href='#n12136'>12136</a>
<a id='n12137' href='#n12137'>12137</a>
<a id='n12138' href='#n12138'>12138</a>
<a id='n12139' href='#n12139'>12139</a>
<a id='n12140' href='#n12140'>12140</a>
<a id='n12141' href='#n12141'>12141</a>
<a id='n12142' href='#n12142'>12142</a>
<a id='n12143' href='#n12143'>12143</a>
<a id='n12144' href='#n12144'>12144</a>
<a id='n12145' href='#n12145'>12145</a>
<a id='n12146' href='#n12146'>12146</a>
<a id='n12147' href='#n12147'>12147</a>
<a id='n12148' href='#n12148'>12148</a>
<a id='n12149' href='#n12149'>12149</a>
<a id='n12150' href='#n12150'>12150</a>
<a id='n12151' href='#n12151'>12151</a>
<a id='n12152' href='#n12152'>12152</a>
<a id='n12153' href='#n12153'>12153</a>
<a id='n12154' href='#n12154'>12154</a>
<a id='n12155' href='#n12155'>12155</a>
<a id='n12156' href='#n12156'>12156</a>
<a id='n12157' href='#n12157'>12157</a>
<a id='n12158' href='#n12158'>12158</a>
<a id='n12159' href='#n12159'>12159</a>
<a id='n12160' href='#n12160'>12160</a>
<a id='n12161' href='#n12161'>12161</a>
<a id='n12162' href='#n12162'>12162</a>
<a id='n12163' href='#n12163'>12163</a>
<a id='n12164' href='#n12164'>12164</a>
<a id='n12165' href='#n12165'>12165</a>
<a id='n12166' href='#n12166'>12166</a>
<a id='n12167' href='#n12167'>12167</a>
<a id='n12168' href='#n12168'>12168</a>
<a id='n12169' href='#n12169'>12169</a>
<a id='n12170' href='#n12170'>12170</a>
<a id='n12171' href='#n12171'>12171</a>
<a id='n12172' href='#n12172'>12172</a>
<a id='n12173' href='#n12173'>12173</a>
<a id='n12174' href='#n12174'>12174</a>
<a id='n12175' href='#n12175'>12175</a>
<a id='n12176' href='#n12176'>12176</a>
<a id='n12177' href='#n12177'>12177</a>
<a id='n12178' href='#n12178'>12178</a>
<a id='n12179' href='#n12179'>12179</a>
<a id='n12180' href='#n12180'>12180</a>
<a id='n12181' href='#n12181'>12181</a>
<a id='n12182' href='#n12182'>12182</a>
<a id='n12183' href='#n12183'>12183</a>
<a id='n12184' href='#n12184'>12184</a>
<a id='n12185' href='#n12185'>12185</a>
<a id='n12186' href='#n12186'>12186</a>
<a id='n12187' href='#n12187'>12187</a>
<a id='n12188' href='#n12188'>12188</a>
<a id='n12189' href='#n12189'>12189</a>
<a id='n12190' href='#n12190'>12190</a>
<a id='n12191' href='#n12191'>12191</a>
<a id='n12192' href='#n12192'>12192</a>
<a id='n12193' href='#n12193'>12193</a>
<a id='n12194' href='#n12194'>12194</a>
<a id='n12195' href='#n12195'>12195</a>
<a id='n12196' href='#n12196'>12196</a>
<a id='n12197' href='#n12197'>12197</a>
<a id='n12198' href='#n12198'>12198</a>
<a id='n12199' href='#n12199'>12199</a>
<a id='n12200' href='#n12200'>12200</a>
<a id='n12201' href='#n12201'>12201</a>
<a id='n12202' href='#n12202'>12202</a>
<a id='n12203' href='#n12203'>12203</a>
<a id='n12204' href='#n12204'>12204</a>
<a id='n12205' href='#n12205'>12205</a>
<a id='n12206' href='#n12206'>12206</a>
<a id='n12207' href='#n12207'>12207</a>
<a id='n12208' href='#n12208'>12208</a>
<a id='n12209' href='#n12209'>12209</a>
<a id='n12210' href='#n12210'>12210</a>
<a id='n12211' href='#n12211'>12211</a>
<a id='n12212' href='#n12212'>12212</a>
<a id='n12213' href='#n12213'>12213</a>
<a id='n12214' href='#n12214'>12214</a>
<a id='n12215' href='#n12215'>12215</a>
<a id='n12216' href='#n12216'>12216</a>
<a id='n12217' href='#n12217'>12217</a>
<a id='n12218' href='#n12218'>12218</a>
<a id='n12219' href='#n12219'>12219</a>
<a id='n12220' href='#n12220'>12220</a>
<a id='n12221' href='#n12221'>12221</a>
<a id='n12222' href='#n12222'>12222</a>
<a id='n12223' href='#n12223'>12223</a>
<a id='n12224' href='#n12224'>12224</a>
<a id='n12225' href='#n12225'>12225</a>
<a id='n12226' href='#n12226'>12226</a>
<a id='n12227' href='#n12227'>12227</a>
<a id='n12228' href='#n12228'>12228</a>
<a id='n12229' href='#n12229'>12229</a>
<a id='n12230' href='#n12230'>12230</a>
<a id='n12231' href='#n12231'>12231</a>
<a id='n12232' href='#n12232'>12232</a>
<a id='n12233' href='#n12233'>12233</a>
<a id='n12234' href='#n12234'>12234</a>
<a id='n12235' href='#n12235'>12235</a>
<a id='n12236' href='#n12236'>12236</a>
<a id='n12237' href='#n12237'>12237</a>
<a id='n12238' href='#n12238'>12238</a>
<a id='n12239' href='#n12239'>12239</a>
<a id='n12240' href='#n12240'>12240</a>
<a id='n12241' href='#n12241'>12241</a>
<a id='n12242' href='#n12242'>12242</a>
<a id='n12243' href='#n12243'>12243</a>
<a id='n12244' href='#n12244'>12244</a>
<a id='n12245' href='#n12245'>12245</a>
<a id='n12246' href='#n12246'>12246</a>
<a id='n12247' href='#n12247'>12247</a>
<a id='n12248' href='#n12248'>12248</a>
<a id='n12249' href='#n12249'>12249</a>
<a id='n12250' href='#n12250'>12250</a>
<a id='n12251' href='#n12251'>12251</a>
<a id='n12252' href='#n12252'>12252</a>
<a id='n12253' href='#n12253'>12253</a>
<a id='n12254' href='#n12254'>12254</a>
<a id='n12255' href='#n12255'>12255</a>
<a id='n12256' href='#n12256'>12256</a>
<a id='n12257' href='#n12257'>12257</a>
<a id='n12258' href='#n12258'>12258</a>
<a id='n12259' href='#n12259'>12259</a>
<a id='n12260' href='#n12260'>12260</a>
<a id='n12261' href='#n12261'>12261</a>
<a id='n12262' href='#n12262'>12262</a>
<a id='n12263' href='#n12263'>12263</a>
<a id='n12264' href='#n12264'>12264</a>
<a id='n12265' href='#n12265'>12265</a>
<a id='n12266' href='#n12266'>12266</a>
<a id='n12267' href='#n12267'>12267</a>
<a id='n12268' href='#n12268'>12268</a>
<a id='n12269' href='#n12269'>12269</a>
<a id='n12270' href='#n12270'>12270</a>
<a id='n12271' href='#n12271'>12271</a>
<a id='n12272' href='#n12272'>12272</a>
<a id='n12273' href='#n12273'>12273</a>
<a id='n12274' href='#n12274'>12274</a>
<a id='n12275' href='#n12275'>12275</a>
<a id='n12276' href='#n12276'>12276</a>
<a id='n12277' href='#n12277'>12277</a>
<a id='n12278' href='#n12278'>12278</a>
<a id='n12279' href='#n12279'>12279</a>
<a id='n12280' href='#n12280'>12280</a>
<a id='n12281' href='#n12281'>12281</a>
<a id='n12282' href='#n12282'>12282</a>
<a id='n12283' href='#n12283'>12283</a>
<a id='n12284' href='#n12284'>12284</a>
<a id='n12285' href='#n12285'>12285</a>
<a id='n12286' href='#n12286'>12286</a>
<a id='n12287' href='#n12287'>12287</a>
<a id='n12288' href='#n12288'>12288</a>
<a id='n12289' href='#n12289'>12289</a>
<a id='n12290' href='#n12290'>12290</a>
<a id='n12291' href='#n12291'>12291</a>
<a id='n12292' href='#n12292'>12292</a>
<a id='n12293' href='#n12293'>12293</a>
<a id='n12294' href='#n12294'>12294</a>
<a id='n12295' href='#n12295'>12295</a>
<a id='n12296' href='#n12296'>12296</a>
<a id='n12297' href='#n12297'>12297</a>
<a id='n12298' href='#n12298'>12298</a>
<a id='n12299' href='#n12299'>12299</a>
<a id='n12300' href='#n12300'>12300</a>
<a id='n12301' href='#n12301'>12301</a>
<a id='n12302' href='#n12302'>12302</a>
<a id='n12303' href='#n12303'>12303</a>
<a id='n12304' href='#n12304'>12304</a>
<a id='n12305' href='#n12305'>12305</a>
<a id='n12306' href='#n12306'>12306</a>
<a id='n12307' href='#n12307'>12307</a>
<a id='n12308' href='#n12308'>12308</a>
<a id='n12309' href='#n12309'>12309</a>
<a id='n12310' href='#n12310'>12310</a>
<a id='n12311' href='#n12311'>12311</a>
<a id='n12312' href='#n12312'>12312</a>
<a id='n12313' href='#n12313'>12313</a>
<a id='n12314' href='#n12314'>12314</a>
<a id='n12315' href='#n12315'>12315</a>
<a id='n12316' href='#n12316'>12316</a>
<a id='n12317' href='#n12317'>12317</a>
<a id='n12318' href='#n12318'>12318</a>
<a id='n12319' href='#n12319'>12319</a>
<a id='n12320' href='#n12320'>12320</a>
<a id='n12321' href='#n12321'>12321</a>
<a id='n12322' href='#n12322'>12322</a>
<a id='n12323' href='#n12323'>12323</a>
<a id='n12324' href='#n12324'>12324</a>
<a id='n12325' href='#n12325'>12325</a>
<a id='n12326' href='#n12326'>12326</a>
<a id='n12327' href='#n12327'>12327</a>
<a id='n12328' href='#n12328'>12328</a>
<a id='n12329' href='#n12329'>12329</a>
<a id='n12330' href='#n12330'>12330</a>
<a id='n12331' href='#n12331'>12331</a>
<a id='n12332' href='#n12332'>12332</a>
<a id='n12333' href='#n12333'>12333</a>
<a id='n12334' href='#n12334'>12334</a>
<a id='n12335' href='#n12335'>12335</a>
<a id='n12336' href='#n12336'>12336</a>
<a id='n12337' href='#n12337'>12337</a>
<a id='n12338' href='#n12338'>12338</a>
<a id='n12339' href='#n12339'>12339</a>
<a id='n12340' href='#n12340'>12340</a>
<a id='n12341' href='#n12341'>12341</a>
<a id='n12342' href='#n12342'>12342</a>
<a id='n12343' href='#n12343'>12343</a>
<a id='n12344' href='#n12344'>12344</a>
<a id='n12345' href='#n12345'>12345</a>
<a id='n12346' href='#n12346'>12346</a>
<a id='n12347' href='#n12347'>12347</a>
<a id='n12348' href='#n12348'>12348</a>
<a id='n12349' href='#n12349'>12349</a>
<a id='n12350' href='#n12350'>12350</a>
<a id='n12351' href='#n12351'>12351</a>
<a id='n12352' href='#n12352'>12352</a>
<a id='n12353' href='#n12353'>12353</a>
<a id='n12354' href='#n12354'>12354</a>
<a id='n12355' href='#n12355'>12355</a>
<a id='n12356' href='#n12356'>12356</a>
<a id='n12357' href='#n12357'>12357</a>
<a id='n12358' href='#n12358'>12358</a>
<a id='n12359' href='#n12359'>12359</a>
<a id='n12360' href='#n12360'>12360</a>
<a id='n12361' href='#n12361'>12361</a>
<a id='n12362' href='#n12362'>12362</a>
<a id='n12363' href='#n12363'>12363</a>
<a id='n12364' href='#n12364'>12364</a>
<a id='n12365' href='#n12365'>12365</a>
<a id='n12366' href='#n12366'>12366</a>
<a id='n12367' href='#n12367'>12367</a>
<a id='n12368' href='#n12368'>12368</a>
<a id='n12369' href='#n12369'>12369</a>
<a id='n12370' href='#n12370'>12370</a>
<a id='n12371' href='#n12371'>12371</a>
<a id='n12372' href='#n12372'>12372</a>
<a id='n12373' href='#n12373'>12373</a>
<a id='n12374' href='#n12374'>12374</a>
<a id='n12375' href='#n12375'>12375</a>
<a id='n12376' href='#n12376'>12376</a>
<a id='n12377' href='#n12377'>12377</a>
<a id='n12378' href='#n12378'>12378</a>
<a id='n12379' href='#n12379'>12379</a>
<a id='n12380' href='#n12380'>12380</a>
<a id='n12381' href='#n12381'>12381</a>
<a id='n12382' href='#n12382'>12382</a>
<a id='n12383' href='#n12383'>12383</a>
<a id='n12384' href='#n12384'>12384</a>
<a id='n12385' href='#n12385'>12385</a>
<a id='n12386' href='#n12386'>12386</a>
<a id='n12387' href='#n12387'>12387</a>
<a id='n12388' href='#n12388'>12388</a>
<a id='n12389' href='#n12389'>12389</a>
<a id='n12390' href='#n12390'>12390</a>
<a id='n12391' href='#n12391'>12391</a>
<a id='n12392' href='#n12392'>12392</a>
<a id='n12393' href='#n12393'>12393</a>
<a id='n12394' href='#n12394'>12394</a>
<a id='n12395' href='#n12395'>12395</a>
<a id='n12396' href='#n12396'>12396</a>
<a id='n12397' href='#n12397'>12397</a>
<a id='n12398' href='#n12398'>12398</a>
<a id='n12399' href='#n12399'>12399</a>
<a id='n12400' href='#n12400'>12400</a>
<a id='n12401' href='#n12401'>12401</a>
<a id='n12402' href='#n12402'>12402</a>
<a id='n12403' href='#n12403'>12403</a>
<a id='n12404' href='#n12404'>12404</a>
<a id='n12405' href='#n12405'>12405</a>
<a id='n12406' href='#n12406'>12406</a>
<a id='n12407' href='#n12407'>12407</a>
<a id='n12408' href='#n12408'>12408</a>
<a id='n12409' href='#n12409'>12409</a>
<a id='n12410' href='#n12410'>12410</a>
<a id='n12411' href='#n12411'>12411</a>
<a id='n12412' href='#n12412'>12412</a>
<a id='n12413' href='#n12413'>12413</a>
<a id='n12414' href='#n12414'>12414</a>
<a id='n12415' href='#n12415'>12415</a>
<a id='n12416' href='#n12416'>12416</a>
<a id='n12417' href='#n12417'>12417</a>
<a id='n12418' href='#n12418'>12418</a>
<a id='n12419' href='#n12419'>12419</a>
<a id='n12420' href='#n12420'>12420</a>
<a id='n12421' href='#n12421'>12421</a>
<a id='n12422' href='#n12422'>12422</a>
<a id='n12423' href='#n12423'>12423</a>
<a id='n12424' href='#n12424'>12424</a>
<a id='n12425' href='#n12425'>12425</a>
<a id='n12426' href='#n12426'>12426</a>
<a id='n12427' href='#n12427'>12427</a>
<a id='n12428' href='#n12428'>12428</a>
<a id='n12429' href='#n12429'>12429</a>
<a id='n12430' href='#n12430'>12430</a>
<a id='n12431' href='#n12431'>12431</a>
<a id='n12432' href='#n12432'>12432</a>
<a id='n12433' href='#n12433'>12433</a>
<a id='n12434' href='#n12434'>12434</a>
<a id='n12435' href='#n12435'>12435</a>
<a id='n12436' href='#n12436'>12436</a>
<a id='n12437' href='#n12437'>12437</a>
<a id='n12438' href='#n12438'>12438</a>
<a id='n12439' href='#n12439'>12439</a>
<a id='n12440' href='#n12440'>12440</a>
<a id='n12441' href='#n12441'>12441</a>
<a id='n12442' href='#n12442'>12442</a>
<a id='n12443' href='#n12443'>12443</a>
<a id='n12444' href='#n12444'>12444</a>
<a id='n12445' href='#n12445'>12445</a>
<a id='n12446' href='#n12446'>12446</a>
<a id='n12447' href='#n12447'>12447</a>
<a id='n12448' href='#n12448'>12448</a>
<a id='n12449' href='#n12449'>12449</a>
<a id='n12450' href='#n12450'>12450</a>
<a id='n12451' href='#n12451'>12451</a>
<a id='n12452' href='#n12452'>12452</a>
<a id='n12453' href='#n12453'>12453</a>
<a id='n12454' href='#n12454'>12454</a>
<a id='n12455' href='#n12455'>12455</a>
<a id='n12456' href='#n12456'>12456</a>
<a id='n12457' href='#n12457'>12457</a>
<a id='n12458' href='#n12458'>12458</a>
<a id='n12459' href='#n12459'>12459</a>
<a id='n12460' href='#n12460'>12460</a>
<a id='n12461' href='#n12461'>12461</a>
<a id='n12462' href='#n12462'>12462</a>
<a id='n12463' href='#n12463'>12463</a>
<a id='n12464' href='#n12464'>12464</a>
<a id='n12465' href='#n12465'>12465</a>
<a id='n12466' href='#n12466'>12466</a>
<a id='n12467' href='#n12467'>12467</a>
<a id='n12468' href='#n12468'>12468</a>
<a id='n12469' href='#n12469'>12469</a>
<a id='n12470' href='#n12470'>12470</a>
<a id='n12471' href='#n12471'>12471</a>
<a id='n12472' href='#n12472'>12472</a>
<a id='n12473' href='#n12473'>12473</a>
<a id='n12474' href='#n12474'>12474</a>
<a id='n12475' href='#n12475'>12475</a>
<a id='n12476' href='#n12476'>12476</a>
<a id='n12477' href='#n12477'>12477</a>
<a id='n12478' href='#n12478'>12478</a>
<a id='n12479' href='#n12479'>12479</a>
<a id='n12480' href='#n12480'>12480</a>
<a id='n12481' href='#n12481'>12481</a>
<a id='n12482' href='#n12482'>12482</a>
<a id='n12483' href='#n12483'>12483</a>
<a id='n12484' href='#n12484'>12484</a>
<a id='n12485' href='#n12485'>12485</a>
<a id='n12486' href='#n12486'>12486</a>
<a id='n12487' href='#n12487'>12487</a>
<a id='n12488' href='#n12488'>12488</a>
<a id='n12489' href='#n12489'>12489</a>
<a id='n12490' href='#n12490'>12490</a>
<a id='n12491' href='#n12491'>12491</a>
<a id='n12492' href='#n12492'>12492</a>
<a id='n12493' href='#n12493'>12493</a>
<a id='n12494' href='#n12494'>12494</a>
<a id='n12495' href='#n12495'>12495</a>
<a id='n12496' href='#n12496'>12496</a>
<a id='n12497' href='#n12497'>12497</a>
<a id='n12498' href='#n12498'>12498</a>
<a id='n12499' href='#n12499'>12499</a>
<a id='n12500' href='#n12500'>12500</a>
<a id='n12501' href='#n12501'>12501</a>
<a id='n12502' href='#n12502'>12502</a>
<a id='n12503' href='#n12503'>12503</a>
<a id='n12504' href='#n12504'>12504</a>
<a id='n12505' href='#n12505'>12505</a>
<a id='n12506' href='#n12506'>12506</a>
<a id='n12507' href='#n12507'>12507</a>
<a id='n12508' href='#n12508'>12508</a>
<a id='n12509' href='#n12509'>12509</a>
<a id='n12510' href='#n12510'>12510</a>
<a id='n12511' href='#n12511'>12511</a>
<a id='n12512' href='#n12512'>12512</a>
<a id='n12513' href='#n12513'>12513</a>
<a id='n12514' href='#n12514'>12514</a>
<a id='n12515' href='#n12515'>12515</a>
<a id='n12516' href='#n12516'>12516</a>
<a id='n12517' href='#n12517'>12517</a>
<a id='n12518' href='#n12518'>12518</a>
<a id='n12519' href='#n12519'>12519</a>
<a id='n12520' href='#n12520'>12520</a>
<a id='n12521' href='#n12521'>12521</a>
<a id='n12522' href='#n12522'>12522</a>
<a id='n12523' href='#n12523'>12523</a>
<a id='n12524' href='#n12524'>12524</a>
<a id='n12525' href='#n12525'>12525</a>
<a id='n12526' href='#n12526'>12526</a>
<a id='n12527' href='#n12527'>12527</a>
<a id='n12528' href='#n12528'>12528</a>
<a id='n12529' href='#n12529'>12529</a>
<a id='n12530' href='#n12530'>12530</a>
<a id='n12531' href='#n12531'>12531</a>
<a id='n12532' href='#n12532'>12532</a>
<a id='n12533' href='#n12533'>12533</a>
<a id='n12534' href='#n12534'>12534</a>
<a id='n12535' href='#n12535'>12535</a>
<a id='n12536' href='#n12536'>12536</a>
<a id='n12537' href='#n12537'>12537</a>
<a id='n12538' href='#n12538'>12538</a>
<a id='n12539' href='#n12539'>12539</a>
<a id='n12540' href='#n12540'>12540</a>
<a id='n12541' href='#n12541'>12541</a>
<a id='n12542' href='#n12542'>12542</a>
<a id='n12543' href='#n12543'>12543</a>
<a id='n12544' href='#n12544'>12544</a>
<a id='n12545' href='#n12545'>12545</a>
<a id='n12546' href='#n12546'>12546</a>
<a id='n12547' href='#n12547'>12547</a>
<a id='n12548' href='#n12548'>12548</a>
<a id='n12549' href='#n12549'>12549</a>
<a id='n12550' href='#n12550'>12550</a>
<a id='n12551' href='#n12551'>12551</a>
<a id='n12552' href='#n12552'>12552</a>
<a id='n12553' href='#n12553'>12553</a>
<a id='n12554' href='#n12554'>12554</a>
<a id='n12555' href='#n12555'>12555</a>
<a id='n12556' href='#n12556'>12556</a>
<a id='n12557' href='#n12557'>12557</a>
<a id='n12558' href='#n12558'>12558</a>
<a id='n12559' href='#n12559'>12559</a>
<a id='n12560' href='#n12560'>12560</a>
<a id='n12561' href='#n12561'>12561</a>
<a id='n12562' href='#n12562'>12562</a>
<a id='n12563' href='#n12563'>12563</a>
<a id='n12564' href='#n12564'>12564</a>
<a id='n12565' href='#n12565'>12565</a>
<a id='n12566' href='#n12566'>12566</a>
<a id='n12567' href='#n12567'>12567</a>
<a id='n12568' href='#n12568'>12568</a>
<a id='n12569' href='#n12569'>12569</a>
<a id='n12570' href='#n12570'>12570</a>
<a id='n12571' href='#n12571'>12571</a>
<a id='n12572' href='#n12572'>12572</a>
<a id='n12573' href='#n12573'>12573</a>
<a id='n12574' href='#n12574'>12574</a>
<a id='n12575' href='#n12575'>12575</a>
<a id='n12576' href='#n12576'>12576</a>
<a id='n12577' href='#n12577'>12577</a>
<a id='n12578' href='#n12578'>12578</a>
<a id='n12579' href='#n12579'>12579</a>
<a id='n12580' href='#n12580'>12580</a>
<a id='n12581' href='#n12581'>12581</a>
<a id='n12582' href='#n12582'>12582</a>
<a id='n12583' href='#n12583'>12583</a>
<a id='n12584' href='#n12584'>12584</a>
<a id='n12585' href='#n12585'>12585</a>
<a id='n12586' href='#n12586'>12586</a>
<a id='n12587' href='#n12587'>12587</a>
<a id='n12588' href='#n12588'>12588</a>
<a id='n12589' href='#n12589'>12589</a>
<a id='n12590' href='#n12590'>12590</a>
<a id='n12591' href='#n12591'>12591</a>
<a id='n12592' href='#n12592'>12592</a>
<a id='n12593' href='#n12593'>12593</a>
<a id='n12594' href='#n12594'>12594</a>
<a id='n12595' href='#n12595'>12595</a>
<a id='n12596' href='#n12596'>12596</a>
<a id='n12597' href='#n12597'>12597</a>
<a id='n12598' href='#n12598'>12598</a>
<a id='n12599' href='#n12599'>12599</a>
<a id='n12600' href='#n12600'>12600</a>
<a id='n12601' href='#n12601'>12601</a>
<a id='n12602' href='#n12602'>12602</a>
<a id='n12603' href='#n12603'>12603</a>
<a id='n12604' href='#n12604'>12604</a>
<a id='n12605' href='#n12605'>12605</a>
<a id='n12606' href='#n12606'>12606</a>
<a id='n12607' href='#n12607'>12607</a>
<a id='n12608' href='#n12608'>12608</a>
<a id='n12609' href='#n12609'>12609</a>
<a id='n12610' href='#n12610'>12610</a>
<a id='n12611' href='#n12611'>12611</a>
<a id='n12612' href='#n12612'>12612</a>
<a id='n12613' href='#n12613'>12613</a>
<a id='n12614' href='#n12614'>12614</a>
<a id='n12615' href='#n12615'>12615</a>
<a id='n12616' href='#n12616'>12616</a>
<a id='n12617' href='#n12617'>12617</a>
<a id='n12618' href='#n12618'>12618</a>
<a id='n12619' href='#n12619'>12619</a>
<a id='n12620' href='#n12620'>12620</a>
<a id='n12621' href='#n12621'>12621</a>
<a id='n12622' href='#n12622'>12622</a>
<a id='n12623' href='#n12623'>12623</a>
<a id='n12624' href='#n12624'>12624</a>
<a id='n12625' href='#n12625'>12625</a>
<a id='n12626' href='#n12626'>12626</a>
<a id='n12627' href='#n12627'>12627</a>
<a id='n12628' href='#n12628'>12628</a>
<a id='n12629' href='#n12629'>12629</a>
<a id='n12630' href='#n12630'>12630</a>
<a id='n12631' href='#n12631'>12631</a>
<a id='n12632' href='#n12632'>12632</a>
<a id='n12633' href='#n12633'>12633</a>
<a id='n12634' href='#n12634'>12634</a>
<a id='n12635' href='#n12635'>12635</a>
<a id='n12636' href='#n12636'>12636</a>
<a id='n12637' href='#n12637'>12637</a>
<a id='n12638' href='#n12638'>12638</a>
<a id='n12639' href='#n12639'>12639</a>
<a id='n12640' href='#n12640'>12640</a>
<a id='n12641' href='#n12641'>12641</a>
<a id='n12642' href='#n12642'>12642</a>
<a id='n12643' href='#n12643'>12643</a>
<a id='n12644' href='#n12644'>12644</a>
<a id='n12645' href='#n12645'>12645</a>
<a id='n12646' href='#n12646'>12646</a>
<a id='n12647' href='#n12647'>12647</a>
<a id='n12648' href='#n12648'>12648</a>
<a id='n12649' href='#n12649'>12649</a>
<a id='n12650' href='#n12650'>12650</a>
<a id='n12651' href='#n12651'>12651</a>
<a id='n12652' href='#n12652'>12652</a>
<a id='n12653' href='#n12653'>12653</a>
<a id='n12654' href='#n12654'>12654</a>
<a id='n12655' href='#n12655'>12655</a>
<a id='n12656' href='#n12656'>12656</a>
<a id='n12657' href='#n12657'>12657</a>
<a id='n12658' href='#n12658'>12658</a>
<a id='n12659' href='#n12659'>12659</a>
<a id='n12660' href='#n12660'>12660</a>
<a id='n12661' href='#n12661'>12661</a>
<a id='n12662' href='#n12662'>12662</a>
<a id='n12663' href='#n12663'>12663</a>
<a id='n12664' href='#n12664'>12664</a>
<a id='n12665' href='#n12665'>12665</a>
<a id='n12666' href='#n12666'>12666</a>
<a id='n12667' href='#n12667'>12667</a>
<a id='n12668' href='#n12668'>12668</a>
<a id='n12669' href='#n12669'>12669</a>
<a id='n12670' href='#n12670'>12670</a>
<a id='n12671' href='#n12671'>12671</a>
<a id='n12672' href='#n12672'>12672</a>
<a id='n12673' href='#n12673'>12673</a>
<a id='n12674' href='#n12674'>12674</a>
<a id='n12675' href='#n12675'>12675</a>
<a id='n12676' href='#n12676'>12676</a>
<a id='n12677' href='#n12677'>12677</a>
<a id='n12678' href='#n12678'>12678</a>
<a id='n12679' href='#n12679'>12679</a>
<a id='n12680' href='#n12680'>12680</a>
<a id='n12681' href='#n12681'>12681</a>
<a id='n12682' href='#n12682'>12682</a>
<a id='n12683' href='#n12683'>12683</a>
<a id='n12684' href='#n12684'>12684</a>
<a id='n12685' href='#n12685'>12685</a>
<a id='n12686' href='#n12686'>12686</a>
<a id='n12687' href='#n12687'>12687</a>
<a id='n12688' href='#n12688'>12688</a>
<a id='n12689' href='#n12689'>12689</a>
<a id='n12690' href='#n12690'>12690</a>
<a id='n12691' href='#n12691'>12691</a>
<a id='n12692' href='#n12692'>12692</a>
<a id='n12693' href='#n12693'>12693</a>
<a id='n12694' href='#n12694'>12694</a>
<a id='n12695' href='#n12695'>12695</a>
<a id='n12696' href='#n12696'>12696</a>
<a id='n12697' href='#n12697'>12697</a>
<a id='n12698' href='#n12698'>12698</a>
<a id='n12699' href='#n12699'>12699</a>
<a id='n12700' href='#n12700'>12700</a>
<a id='n12701' href='#n12701'>12701</a>
<a id='n12702' href='#n12702'>12702</a>
<a id='n12703' href='#n12703'>12703</a>
<a id='n12704' href='#n12704'>12704</a>
<a id='n12705' href='#n12705'>12705</a>
<a id='n12706' href='#n12706'>12706</a>
<a id='n12707' href='#n12707'>12707</a>
<a id='n12708' href='#n12708'>12708</a>
<a id='n12709' href='#n12709'>12709</a>
<a id='n12710' href='#n12710'>12710</a>
<a id='n12711' href='#n12711'>12711</a>
<a id='n12712' href='#n12712'>12712</a>
<a id='n12713' href='#n12713'>12713</a>
<a id='n12714' href='#n12714'>12714</a>
<a id='n12715' href='#n12715'>12715</a>
<a id='n12716' href='#n12716'>12716</a>
<a id='n12717' href='#n12717'>12717</a>
<a id='n12718' href='#n12718'>12718</a>
<a id='n12719' href='#n12719'>12719</a>
<a id='n12720' href='#n12720'>12720</a>
<a id='n12721' href='#n12721'>12721</a>
<a id='n12722' href='#n12722'>12722</a>
<a id='n12723' href='#n12723'>12723</a>
<a id='n12724' href='#n12724'>12724</a>
<a id='n12725' href='#n12725'>12725</a>
<a id='n12726' href='#n12726'>12726</a>
<a id='n12727' href='#n12727'>12727</a>
<a id='n12728' href='#n12728'>12728</a>
<a id='n12729' href='#n12729'>12729</a>
<a id='n12730' href='#n12730'>12730</a>
<a id='n12731' href='#n12731'>12731</a>
<a id='n12732' href='#n12732'>12732</a>
<a id='n12733' href='#n12733'>12733</a>
<a id='n12734' href='#n12734'>12734</a>
<a id='n12735' href='#n12735'>12735</a>
<a id='n12736' href='#n12736'>12736</a>
<a id='n12737' href='#n12737'>12737</a>
<a id='n12738' href='#n12738'>12738</a>
<a id='n12739' href='#n12739'>12739</a>
<a id='n12740' href='#n12740'>12740</a>
<a id='n12741' href='#n12741'>12741</a>
<a id='n12742' href='#n12742'>12742</a>
<a id='n12743' href='#n12743'>12743</a>
<a id='n12744' href='#n12744'>12744</a>
<a id='n12745' href='#n12745'>12745</a>
<a id='n12746' href='#n12746'>12746</a>
<a id='n12747' href='#n12747'>12747</a>
<a id='n12748' href='#n12748'>12748</a>
<a id='n12749' href='#n12749'>12749</a>
<a id='n12750' href='#n12750'>12750</a>
<a id='n12751' href='#n12751'>12751</a>
<a id='n12752' href='#n12752'>12752</a>
<a id='n12753' href='#n12753'>12753</a>
<a id='n12754' href='#n12754'>12754</a>
<a id='n12755' href='#n12755'>12755</a>
<a id='n12756' href='#n12756'>12756</a>
<a id='n12757' href='#n12757'>12757</a>
<a id='n12758' href='#n12758'>12758</a>
<a id='n12759' href='#n12759'>12759</a>
<a id='n12760' href='#n12760'>12760</a>
<a id='n12761' href='#n12761'>12761</a>
<a id='n12762' href='#n12762'>12762</a>
<a id='n12763' href='#n12763'>12763</a>
<a id='n12764' href='#n12764'>12764</a>
<a id='n12765' href='#n12765'>12765</a>
<a id='n12766' href='#n12766'>12766</a>
<a id='n12767' href='#n12767'>12767</a>
<a id='n12768' href='#n12768'>12768</a>
<a id='n12769' href='#n12769'>12769</a>
<a id='n12770' href='#n12770'>12770</a>
<a id='n12771' href='#n12771'>12771</a>
<a id='n12772' href='#n12772'>12772</a>
<a id='n12773' href='#n12773'>12773</a>
<a id='n12774' href='#n12774'>12774</a>
<a id='n12775' href='#n12775'>12775</a>
<a id='n12776' href='#n12776'>12776</a>
<a id='n12777' href='#n12777'>12777</a>
<a id='n12778' href='#n12778'>12778</a>
<a id='n12779' href='#n12779'>12779</a>
<a id='n12780' href='#n12780'>12780</a>
<a id='n12781' href='#n12781'>12781</a>
<a id='n12782' href='#n12782'>12782</a>
<a id='n12783' href='#n12783'>12783</a>
<a id='n12784' href='#n12784'>12784</a>
<a id='n12785' href='#n12785'>12785</a>
<a id='n12786' href='#n12786'>12786</a>
<a id='n12787' href='#n12787'>12787</a>
<a id='n12788' href='#n12788'>12788</a>
<a id='n12789' href='#n12789'>12789</a>
<a id='n12790' href='#n12790'>12790</a>
<a id='n12791' href='#n12791'>12791</a>
<a id='n12792' href='#n12792'>12792</a>
<a id='n12793' href='#n12793'>12793</a>
<a id='n12794' href='#n12794'>12794</a>
<a id='n12795' href='#n12795'>12795</a>
<a id='n12796' href='#n12796'>12796</a>
<a id='n12797' href='#n12797'>12797</a>
<a id='n12798' href='#n12798'>12798</a>
<a id='n12799' href='#n12799'>12799</a>
<a id='n12800' href='#n12800'>12800</a>
<a id='n12801' href='#n12801'>12801</a>
<a id='n12802' href='#n12802'>12802</a>
<a id='n12803' href='#n12803'>12803</a>
<a id='n12804' href='#n12804'>12804</a>
<a id='n12805' href='#n12805'>12805</a>
<a id='n12806' href='#n12806'>12806</a>
<a id='n12807' href='#n12807'>12807</a>
<a id='n12808' href='#n12808'>12808</a>
<a id='n12809' href='#n12809'>12809</a>
<a id='n12810' href='#n12810'>12810</a>
<a id='n12811' href='#n12811'>12811</a>
<a id='n12812' href='#n12812'>12812</a>
<a id='n12813' href='#n12813'>12813</a>
<a id='n12814' href='#n12814'>12814</a>
<a id='n12815' href='#n12815'>12815</a>
<a id='n12816' href='#n12816'>12816</a>
<a id='n12817' href='#n12817'>12817</a>
<a id='n12818' href='#n12818'>12818</a>
<a id='n12819' href='#n12819'>12819</a>
<a id='n12820' href='#n12820'>12820</a>
<a id='n12821' href='#n12821'>12821</a>
<a id='n12822' href='#n12822'>12822</a>
<a id='n12823' href='#n12823'>12823</a>
<a id='n12824' href='#n12824'>12824</a>
<a id='n12825' href='#n12825'>12825</a>
<a id='n12826' href='#n12826'>12826</a>
<a id='n12827' href='#n12827'>12827</a>
<a id='n12828' href='#n12828'>12828</a>
<a id='n12829' href='#n12829'>12829</a>
<a id='n12830' href='#n12830'>12830</a>
<a id='n12831' href='#n12831'>12831</a>
<a id='n12832' href='#n12832'>12832</a>
<a id='n12833' href='#n12833'>12833</a>
<a id='n12834' href='#n12834'>12834</a>
<a id='n12835' href='#n12835'>12835</a>
<a id='n12836' href='#n12836'>12836</a>
<a id='n12837' href='#n12837'>12837</a>
<a id='n12838' href='#n12838'>12838</a>
<a id='n12839' href='#n12839'>12839</a>
<a id='n12840' href='#n12840'>12840</a>
<a id='n12841' href='#n12841'>12841</a>
<a id='n12842' href='#n12842'>12842</a>
<a id='n12843' href='#n12843'>12843</a>
<a id='n12844' href='#n12844'>12844</a>
<a id='n12845' href='#n12845'>12845</a>
<a id='n12846' href='#n12846'>12846</a>
<a id='n12847' href='#n12847'>12847</a>
<a id='n12848' href='#n12848'>12848</a>
<a id='n12849' href='#n12849'>12849</a>
<a id='n12850' href='#n12850'>12850</a>
<a id='n12851' href='#n12851'>12851</a>
<a id='n12852' href='#n12852'>12852</a>
<a id='n12853' href='#n12853'>12853</a>
<a id='n12854' href='#n12854'>12854</a>
<a id='n12855' href='#n12855'>12855</a>
<a id='n12856' href='#n12856'>12856</a>
<a id='n12857' href='#n12857'>12857</a>
<a id='n12858' href='#n12858'>12858</a>
<a id='n12859' href='#n12859'>12859</a>
<a id='n12860' href='#n12860'>12860</a>
<a id='n12861' href='#n12861'>12861</a>
<a id='n12862' href='#n12862'>12862</a>
<a id='n12863' href='#n12863'>12863</a>
<a id='n12864' href='#n12864'>12864</a>
<a id='n12865' href='#n12865'>12865</a>
<a id='n12866' href='#n12866'>12866</a>
<a id='n12867' href='#n12867'>12867</a>
<a id='n12868' href='#n12868'>12868</a>
<a id='n12869' href='#n12869'>12869</a>
<a id='n12870' href='#n12870'>12870</a>
<a id='n12871' href='#n12871'>12871</a>
<a id='n12872' href='#n12872'>12872</a>
<a id='n12873' href='#n12873'>12873</a>
<a id='n12874' href='#n12874'>12874</a>
<a id='n12875' href='#n12875'>12875</a>
<a id='n12876' href='#n12876'>12876</a>
<a id='n12877' href='#n12877'>12877</a>
<a id='n12878' href='#n12878'>12878</a>
<a id='n12879' href='#n12879'>12879</a>
<a id='n12880' href='#n12880'>12880</a>
<a id='n12881' href='#n12881'>12881</a>
<a id='n12882' href='#n12882'>12882</a>
<a id='n12883' href='#n12883'>12883</a>
<a id='n12884' href='#n12884'>12884</a>
<a id='n12885' href='#n12885'>12885</a>
<a id='n12886' href='#n12886'>12886</a>
<a id='n12887' href='#n12887'>12887</a>
<a id='n12888' href='#n12888'>12888</a>
<a id='n12889' href='#n12889'>12889</a>
<a id='n12890' href='#n12890'>12890</a>
<a id='n12891' href='#n12891'>12891</a>
<a id='n12892' href='#n12892'>12892</a>
<a id='n12893' href='#n12893'>12893</a>
<a id='n12894' href='#n12894'>12894</a>
<a id='n12895' href='#n12895'>12895</a>
<a id='n12896' href='#n12896'>12896</a>
<a id='n12897' href='#n12897'>12897</a>
<a id='n12898' href='#n12898'>12898</a>
<a id='n12899' href='#n12899'>12899</a>
<a id='n12900' href='#n12900'>12900</a>
<a id='n12901' href='#n12901'>12901</a>
<a id='n12902' href='#n12902'>12902</a>
<a id='n12903' href='#n12903'>12903</a>
<a id='n12904' href='#n12904'>12904</a>
<a id='n12905' href='#n12905'>12905</a>
<a id='n12906' href='#n12906'>12906</a>
<a id='n12907' href='#n12907'>12907</a>
<a id='n12908' href='#n12908'>12908</a>
<a id='n12909' href='#n12909'>12909</a>
<a id='n12910' href='#n12910'>12910</a>
<a id='n12911' href='#n12911'>12911</a>
<a id='n12912' href='#n12912'>12912</a>
<a id='n12913' href='#n12913'>12913</a>
<a id='n12914' href='#n12914'>12914</a>
<a id='n12915' href='#n12915'>12915</a>
<a id='n12916' href='#n12916'>12916</a>
<a id='n12917' href='#n12917'>12917</a>
<a id='n12918' href='#n12918'>12918</a>
<a id='n12919' href='#n12919'>12919</a>
<a id='n12920' href='#n12920'>12920</a>
<a id='n12921' href='#n12921'>12921</a>
<a id='n12922' href='#n12922'>12922</a>
<a id='n12923' href='#n12923'>12923</a>
<a id='n12924' href='#n12924'>12924</a>
<a id='n12925' href='#n12925'>12925</a>
<a id='n12926' href='#n12926'>12926</a>
<a id='n12927' href='#n12927'>12927</a>
<a id='n12928' href='#n12928'>12928</a>
<a id='n12929' href='#n12929'>12929</a>
<a id='n12930' href='#n12930'>12930</a>
<a id='n12931' href='#n12931'>12931</a>
<a id='n12932' href='#n12932'>12932</a>
<a id='n12933' href='#n12933'>12933</a>
<a id='n12934' href='#n12934'>12934</a>
<a id='n12935' href='#n12935'>12935</a>
<a id='n12936' href='#n12936'>12936</a>
<a id='n12937' href='#n12937'>12937</a>
<a id='n12938' href='#n12938'>12938</a>
<a id='n12939' href='#n12939'>12939</a>
<a id='n12940' href='#n12940'>12940</a>
<a id='n12941' href='#n12941'>12941</a>
<a id='n12942' href='#n12942'>12942</a>
<a id='n12943' href='#n12943'>12943</a>
<a id='n12944' href='#n12944'>12944</a>
<a id='n12945' href='#n12945'>12945</a>
<a id='n12946' href='#n12946'>12946</a>
<a id='n12947' href='#n12947'>12947</a>
<a id='n12948' href='#n12948'>12948</a>
<a id='n12949' href='#n12949'>12949</a>
<a id='n12950' href='#n12950'>12950</a>
<a id='n12951' href='#n12951'>12951</a>
<a id='n12952' href='#n12952'>12952</a>
<a id='n12953' href='#n12953'>12953</a>
<a id='n12954' href='#n12954'>12954</a>
<a id='n12955' href='#n12955'>12955</a>
<a id='n12956' href='#n12956'>12956</a>
<a id='n12957' href='#n12957'>12957</a>
<a id='n12958' href='#n12958'>12958</a>
<a id='n12959' href='#n12959'>12959</a>
<a id='n12960' href='#n12960'>12960</a>
<a id='n12961' href='#n12961'>12961</a>
<a id='n12962' href='#n12962'>12962</a>
<a id='n12963' href='#n12963'>12963</a>
<a id='n12964' href='#n12964'>12964</a>
<a id='n12965' href='#n12965'>12965</a>
<a id='n12966' href='#n12966'>12966</a>
<a id='n12967' href='#n12967'>12967</a>
<a id='n12968' href='#n12968'>12968</a>
<a id='n12969' href='#n12969'>12969</a>
<a id='n12970' href='#n12970'>12970</a>
<a id='n12971' href='#n12971'>12971</a>
<a id='n12972' href='#n12972'>12972</a>
<a id='n12973' href='#n12973'>12973</a>
<a id='n12974' href='#n12974'>12974</a>
<a id='n12975' href='#n12975'>12975</a>
<a id='n12976' href='#n12976'>12976</a>
<a id='n12977' href='#n12977'>12977</a>
<a id='n12978' href='#n12978'>12978</a>
<a id='n12979' href='#n12979'>12979</a>
<a id='n12980' href='#n12980'>12980</a>
<a id='n12981' href='#n12981'>12981</a>
<a id='n12982' href='#n12982'>12982</a>
<a id='n12983' href='#n12983'>12983</a>
<a id='n12984' href='#n12984'>12984</a>
<a id='n12985' href='#n12985'>12985</a>
<a id='n12986' href='#n12986'>12986</a>
<a id='n12987' href='#n12987'>12987</a>
<a id='n12988' href='#n12988'>12988</a>
<a id='n12989' href='#n12989'>12989</a>
<a id='n12990' href='#n12990'>12990</a>
<a id='n12991' href='#n12991'>12991</a>
<a id='n12992' href='#n12992'>12992</a>
<a id='n12993' href='#n12993'>12993</a>
<a id='n12994' href='#n12994'>12994</a>
<a id='n12995' href='#n12995'>12995</a>
<a id='n12996' href='#n12996'>12996</a>
<a id='n12997' href='#n12997'>12997</a>
<a id='n12998' href='#n12998'>12998</a>
<a id='n12999' href='#n12999'>12999</a>
<a id='n13000' href='#n13000'>13000</a>
<a id='n13001' href='#n13001'>13001</a>
<a id='n13002' href='#n13002'>13002</a>
<a id='n13003' href='#n13003'>13003</a>
<a id='n13004' href='#n13004'>13004</a>
<a id='n13005' href='#n13005'>13005</a>
<a id='n13006' href='#n13006'>13006</a>
<a id='n13007' href='#n13007'>13007</a>
<a id='n13008' href='#n13008'>13008</a>
<a id='n13009' href='#n13009'>13009</a>
<a id='n13010' href='#n13010'>13010</a>
<a id='n13011' href='#n13011'>13011</a>
<a id='n13012' href='#n13012'>13012</a>
<a id='n13013' href='#n13013'>13013</a>
<a id='n13014' href='#n13014'>13014</a>
<a id='n13015' href='#n13015'>13015</a>
<a id='n13016' href='#n13016'>13016</a>
<a id='n13017' href='#n13017'>13017</a>
<a id='n13018' href='#n13018'>13018</a>
<a id='n13019' href='#n13019'>13019</a>
<a id='n13020' href='#n13020'>13020</a>
<a id='n13021' href='#n13021'>13021</a>
<a id='n13022' href='#n13022'>13022</a>
<a id='n13023' href='#n13023'>13023</a>
<a id='n13024' href='#n13024'>13024</a>
<a id='n13025' href='#n13025'>13025</a>
<a id='n13026' href='#n13026'>13026</a>
<a id='n13027' href='#n13027'>13027</a>
<a id='n13028' href='#n13028'>13028</a>
<a id='n13029' href='#n13029'>13029</a>
<a id='n13030' href='#n13030'>13030</a>
<a id='n13031' href='#n13031'>13031</a>
<a id='n13032' href='#n13032'>13032</a>
<a id='n13033' href='#n13033'>13033</a>
<a id='n13034' href='#n13034'>13034</a>
<a id='n13035' href='#n13035'>13035</a>
<a id='n13036' href='#n13036'>13036</a>
<a id='n13037' href='#n13037'>13037</a>
<a id='n13038' href='#n13038'>13038</a>
<a id='n13039' href='#n13039'>13039</a>
<a id='n13040' href='#n13040'>13040</a>
<a id='n13041' href='#n13041'>13041</a>
<a id='n13042' href='#n13042'>13042</a>
<a id='n13043' href='#n13043'>13043</a>
<a id='n13044' href='#n13044'>13044</a>
<a id='n13045' href='#n13045'>13045</a>
<a id='n13046' href='#n13046'>13046</a>
<a id='n13047' href='#n13047'>13047</a>
<a id='n13048' href='#n13048'>13048</a>
<a id='n13049' href='#n13049'>13049</a>
<a id='n13050' href='#n13050'>13050</a>
<a id='n13051' href='#n13051'>13051</a>
<a id='n13052' href='#n13052'>13052</a>
<a id='n13053' href='#n13053'>13053</a>
<a id='n13054' href='#n13054'>13054</a>
<a id='n13055' href='#n13055'>13055</a>
<a id='n13056' href='#n13056'>13056</a>
<a id='n13057' href='#n13057'>13057</a>
<a id='n13058' href='#n13058'>13058</a>
<a id='n13059' href='#n13059'>13059</a>
<a id='n13060' href='#n13060'>13060</a>
<a id='n13061' href='#n13061'>13061</a>
<a id='n13062' href='#n13062'>13062</a>
<a id='n13063' href='#n13063'>13063</a>
<a id='n13064' href='#n13064'>13064</a>
<a id='n13065' href='#n13065'>13065</a>
<a id='n13066' href='#n13066'>13066</a>
<a id='n13067' href='#n13067'>13067</a>
<a id='n13068' href='#n13068'>13068</a>
<a id='n13069' href='#n13069'>13069</a>
<a id='n13070' href='#n13070'>13070</a>
<a id='n13071' href='#n13071'>13071</a>
<a id='n13072' href='#n13072'>13072</a>
<a id='n13073' href='#n13073'>13073</a>
<a id='n13074' href='#n13074'>13074</a>
<a id='n13075' href='#n13075'>13075</a>
<a id='n13076' href='#n13076'>13076</a>
<a id='n13077' href='#n13077'>13077</a>
<a id='n13078' href='#n13078'>13078</a>
<a id='n13079' href='#n13079'>13079</a>
<a id='n13080' href='#n13080'>13080</a>
<a id='n13081' href='#n13081'>13081</a>
<a id='n13082' href='#n13082'>13082</a>
<a id='n13083' href='#n13083'>13083</a>
<a id='n13084' href='#n13084'>13084</a>
<a id='n13085' href='#n13085'>13085</a>
<a id='n13086' href='#n13086'>13086</a>
<a id='n13087' href='#n13087'>13087</a>
<a id='n13088' href='#n13088'>13088</a>
<a id='n13089' href='#n13089'>13089</a>
<a id='n13090' href='#n13090'>13090</a>
<a id='n13091' href='#n13091'>13091</a>
<a id='n13092' href='#n13092'>13092</a>
<a id='n13093' href='#n13093'>13093</a>
<a id='n13094' href='#n13094'>13094</a>
<a id='n13095' href='#n13095'>13095</a>
<a id='n13096' href='#n13096'>13096</a>
<a id='n13097' href='#n13097'>13097</a>
<a id='n13098' href='#n13098'>13098</a>
<a id='n13099' href='#n13099'>13099</a>
<a id='n13100' href='#n13100'>13100</a>
<a id='n13101' href='#n13101'>13101</a>
<a id='n13102' href='#n13102'>13102</a>
<a id='n13103' href='#n13103'>13103</a>
<a id='n13104' href='#n13104'>13104</a>
<a id='n13105' href='#n13105'>13105</a>
<a id='n13106' href='#n13106'>13106</a>
<a id='n13107' href='#n13107'>13107</a>
<a id='n13108' href='#n13108'>13108</a>
<a id='n13109' href='#n13109'>13109</a>
<a id='n13110' href='#n13110'>13110</a>
<a id='n13111' href='#n13111'>13111</a>
<a id='n13112' href='#n13112'>13112</a>
<a id='n13113' href='#n13113'>13113</a>
<a id='n13114' href='#n13114'>13114</a>
<a id='n13115' href='#n13115'>13115</a>
<a id='n13116' href='#n13116'>13116</a>
<a id='n13117' href='#n13117'>13117</a>
<a id='n13118' href='#n13118'>13118</a>
<a id='n13119' href='#n13119'>13119</a>
<a id='n13120' href='#n13120'>13120</a>
<a id='n13121' href='#n13121'>13121</a>
<a id='n13122' href='#n13122'>13122</a>
<a id='n13123' href='#n13123'>13123</a>
<a id='n13124' href='#n13124'>13124</a>
<a id='n13125' href='#n13125'>13125</a>
<a id='n13126' href='#n13126'>13126</a>
<a id='n13127' href='#n13127'>13127</a>
<a id='n13128' href='#n13128'>13128</a>
<a id='n13129' href='#n13129'>13129</a>
<a id='n13130' href='#n13130'>13130</a>
<a id='n13131' href='#n13131'>13131</a>
<a id='n13132' href='#n13132'>13132</a>
<a id='n13133' href='#n13133'>13133</a>
<a id='n13134' href='#n13134'>13134</a>
<a id='n13135' href='#n13135'>13135</a>
<a id='n13136' href='#n13136'>13136</a>
<a id='n13137' href='#n13137'>13137</a>
<a id='n13138' href='#n13138'>13138</a>
<a id='n13139' href='#n13139'>13139</a>
<a id='n13140' href='#n13140'>13140</a>
<a id='n13141' href='#n13141'>13141</a>
<a id='n13142' href='#n13142'>13142</a>
<a id='n13143' href='#n13143'>13143</a>
<a id='n13144' href='#n13144'>13144</a>
<a id='n13145' href='#n13145'>13145</a>
<a id='n13146' href='#n13146'>13146</a>
<a id='n13147' href='#n13147'>13147</a>
<a id='n13148' href='#n13148'>13148</a>
<a id='n13149' href='#n13149'>13149</a>
<a id='n13150' href='#n13150'>13150</a>
<a id='n13151' href='#n13151'>13151</a>
<a id='n13152' href='#n13152'>13152</a>
<a id='n13153' href='#n13153'>13153</a>
<a id='n13154' href='#n13154'>13154</a>
<a id='n13155' href='#n13155'>13155</a>
<a id='n13156' href='#n13156'>13156</a>
<a id='n13157' href='#n13157'>13157</a>
<a id='n13158' href='#n13158'>13158</a>
<a id='n13159' href='#n13159'>13159</a>
<a id='n13160' href='#n13160'>13160</a>
<a id='n13161' href='#n13161'>13161</a>
<a id='n13162' href='#n13162'>13162</a>
<a id='n13163' href='#n13163'>13163</a>
<a id='n13164' href='#n13164'>13164</a>
<a id='n13165' href='#n13165'>13165</a>
<a id='n13166' href='#n13166'>13166</a>
<a id='n13167' href='#n13167'>13167</a>
<a id='n13168' href='#n13168'>13168</a>
<a id='n13169' href='#n13169'>13169</a>
<a id='n13170' href='#n13170'>13170</a>
<a id='n13171' href='#n13171'>13171</a>
<a id='n13172' href='#n13172'>13172</a>
<a id='n13173' href='#n13173'>13173</a>
<a id='n13174' href='#n13174'>13174</a>
<a id='n13175' href='#n13175'>13175</a>
<a id='n13176' href='#n13176'>13176</a>
<a id='n13177' href='#n13177'>13177</a>
<a id='n13178' href='#n13178'>13178</a>
<a id='n13179' href='#n13179'>13179</a>
<a id='n13180' href='#n13180'>13180</a>
<a id='n13181' href='#n13181'>13181</a>
<a id='n13182' href='#n13182'>13182</a>
<a id='n13183' href='#n13183'>13183</a>
<a id='n13184' href='#n13184'>13184</a>
<a id='n13185' href='#n13185'>13185</a>
<a id='n13186' href='#n13186'>13186</a>
<a id='n13187' href='#n13187'>13187</a>
<a id='n13188' href='#n13188'>13188</a>
<a id='n13189' href='#n13189'>13189</a>
<a id='n13190' href='#n13190'>13190</a>
<a id='n13191' href='#n13191'>13191</a>
<a id='n13192' href='#n13192'>13192</a>
<a id='n13193' href='#n13193'>13193</a>
<a id='n13194' href='#n13194'>13194</a>
<a id='n13195' href='#n13195'>13195</a>
<a id='n13196' href='#n13196'>13196</a>
<a id='n13197' href='#n13197'>13197</a>
<a id='n13198' href='#n13198'>13198</a>
<a id='n13199' href='#n13199'>13199</a>
<a id='n13200' href='#n13200'>13200</a>
<a id='n13201' href='#n13201'>13201</a>
<a id='n13202' href='#n13202'>13202</a>
<a id='n13203' href='#n13203'>13203</a>
<a id='n13204' href='#n13204'>13204</a>
<a id='n13205' href='#n13205'>13205</a>
<a id='n13206' href='#n13206'>13206</a>
<a id='n13207' href='#n13207'>13207</a>
<a id='n13208' href='#n13208'>13208</a>
<a id='n13209' href='#n13209'>13209</a>
<a id='n13210' href='#n13210'>13210</a>
<a id='n13211' href='#n13211'>13211</a>
<a id='n13212' href='#n13212'>13212</a>
<a id='n13213' href='#n13213'>13213</a>
<a id='n13214' href='#n13214'>13214</a>
<a id='n13215' href='#n13215'>13215</a>
<a id='n13216' href='#n13216'>13216</a>
<a id='n13217' href='#n13217'>13217</a>
<a id='n13218' href='#n13218'>13218</a>
<a id='n13219' href='#n13219'>13219</a>
<a id='n13220' href='#n13220'>13220</a>
<a id='n13221' href='#n13221'>13221</a>
<a id='n13222' href='#n13222'>13222</a>
<a id='n13223' href='#n13223'>13223</a>
<a id='n13224' href='#n13224'>13224</a>
<a id='n13225' href='#n13225'>13225</a>
<a id='n13226' href='#n13226'>13226</a>
<a id='n13227' href='#n13227'>13227</a>
<a id='n13228' href='#n13228'>13228</a>
<a id='n13229' href='#n13229'>13229</a>
<a id='n13230' href='#n13230'>13230</a>
<a id='n13231' href='#n13231'>13231</a>
<a id='n13232' href='#n13232'>13232</a>
<a id='n13233' href='#n13233'>13233</a>
<a id='n13234' href='#n13234'>13234</a>
<a id='n13235' href='#n13235'>13235</a>
<a id='n13236' href='#n13236'>13236</a>
<a id='n13237' href='#n13237'>13237</a>
<a id='n13238' href='#n13238'>13238</a>
<a id='n13239' href='#n13239'>13239</a>
<a id='n13240' href='#n13240'>13240</a>
<a id='n13241' href='#n13241'>13241</a>
<a id='n13242' href='#n13242'>13242</a>
<a id='n13243' href='#n13243'>13243</a>
<a id='n13244' href='#n13244'>13244</a>
<a id='n13245' href='#n13245'>13245</a>
<a id='n13246' href='#n13246'>13246</a>
<a id='n13247' href='#n13247'>13247</a>
<a id='n13248' href='#n13248'>13248</a>
<a id='n13249' href='#n13249'>13249</a>
<a id='n13250' href='#n13250'>13250</a>
<a id='n13251' href='#n13251'>13251</a>
<a id='n13252' href='#n13252'>13252</a>
<a id='n13253' href='#n13253'>13253</a>
<a id='n13254' href='#n13254'>13254</a>
<a id='n13255' href='#n13255'>13255</a>
<a id='n13256' href='#n13256'>13256</a>
<a id='n13257' href='#n13257'>13257</a>
<a id='n13258' href='#n13258'>13258</a>
<a id='n13259' href='#n13259'>13259</a>
<a id='n13260' href='#n13260'>13260</a>
<a id='n13261' href='#n13261'>13261</a>
<a id='n13262' href='#n13262'>13262</a>
<a id='n13263' href='#n13263'>13263</a>
<a id='n13264' href='#n13264'>13264</a>
<a id='n13265' href='#n13265'>13265</a>
<a id='n13266' href='#n13266'>13266</a>
<a id='n13267' href='#n13267'>13267</a>
<a id='n13268' href='#n13268'>13268</a>
<a id='n13269' href='#n13269'>13269</a>
<a id='n13270' href='#n13270'>13270</a>
<a id='n13271' href='#n13271'>13271</a>
<a id='n13272' href='#n13272'>13272</a>
<a id='n13273' href='#n13273'>13273</a>
<a id='n13274' href='#n13274'>13274</a>
<a id='n13275' href='#n13275'>13275</a>
<a id='n13276' href='#n13276'>13276</a>
<a id='n13277' href='#n13277'>13277</a>
<a id='n13278' href='#n13278'>13278</a>
<a id='n13279' href='#n13279'>13279</a>
<a id='n13280' href='#n13280'>13280</a>
<a id='n13281' href='#n13281'>13281</a>
<a id='n13282' href='#n13282'>13282</a>
<a id='n13283' href='#n13283'>13283</a>
<a id='n13284' href='#n13284'>13284</a>
<a id='n13285' href='#n13285'>13285</a>
<a id='n13286' href='#n13286'>13286</a>
<a id='n13287' href='#n13287'>13287</a>
<a id='n13288' href='#n13288'>13288</a>
<a id='n13289' href='#n13289'>13289</a>
<a id='n13290' href='#n13290'>13290</a>
<a id='n13291' href='#n13291'>13291</a>
<a id='n13292' href='#n13292'>13292</a>
<a id='n13293' href='#n13293'>13293</a>
<a id='n13294' href='#n13294'>13294</a>
<a id='n13295' href='#n13295'>13295</a>
<a id='n13296' href='#n13296'>13296</a>
<a id='n13297' href='#n13297'>13297</a>
<a id='n13298' href='#n13298'>13298</a>
<a id='n13299' href='#n13299'>13299</a>
<a id='n13300' href='#n13300'>13300</a>
<a id='n13301' href='#n13301'>13301</a>
<a id='n13302' href='#n13302'>13302</a>
<a id='n13303' href='#n13303'>13303</a>
<a id='n13304' href='#n13304'>13304</a>
<a id='n13305' href='#n13305'>13305</a>
<a id='n13306' href='#n13306'>13306</a>
<a id='n13307' href='#n13307'>13307</a>
<a id='n13308' href='#n13308'>13308</a>
<a id='n13309' href='#n13309'>13309</a>
<a id='n13310' href='#n13310'>13310</a>
<a id='n13311' href='#n13311'>13311</a>
<a id='n13312' href='#n13312'>13312</a>
<a id='n13313' href='#n13313'>13313</a>
<a id='n13314' href='#n13314'>13314</a>
<a id='n13315' href='#n13315'>13315</a>
<a id='n13316' href='#n13316'>13316</a>
<a id='n13317' href='#n13317'>13317</a>
<a id='n13318' href='#n13318'>13318</a>
<a id='n13319' href='#n13319'>13319</a>
<a id='n13320' href='#n13320'>13320</a>
<a id='n13321' href='#n13321'>13321</a>
<a id='n13322' href='#n13322'>13322</a>
<a id='n13323' href='#n13323'>13323</a>
<a id='n13324' href='#n13324'>13324</a>
<a id='n13325' href='#n13325'>13325</a>
<a id='n13326' href='#n13326'>13326</a>
<a id='n13327' href='#n13327'>13327</a>
<a id='n13328' href='#n13328'>13328</a>
<a id='n13329' href='#n13329'>13329</a>
<a id='n13330' href='#n13330'>13330</a>
<a id='n13331' href='#n13331'>13331</a>
<a id='n13332' href='#n13332'>13332</a>
<a id='n13333' href='#n13333'>13333</a>
<a id='n13334' href='#n13334'>13334</a>
<a id='n13335' href='#n13335'>13335</a>
<a id='n13336' href='#n13336'>13336</a>
<a id='n13337' href='#n13337'>13337</a>
<a id='n13338' href='#n13338'>13338</a>
<a id='n13339' href='#n13339'>13339</a>
<a id='n13340' href='#n13340'>13340</a>
<a id='n13341' href='#n13341'>13341</a>
<a id='n13342' href='#n13342'>13342</a>
<a id='n13343' href='#n13343'>13343</a>
<a id='n13344' href='#n13344'>13344</a>
<a id='n13345' href='#n13345'>13345</a>
<a id='n13346' href='#n13346'>13346</a>
<a id='n13347' href='#n13347'>13347</a>
<a id='n13348' href='#n13348'>13348</a>
<a id='n13349' href='#n13349'>13349</a>
<a id='n13350' href='#n13350'>13350</a>
<a id='n13351' href='#n13351'>13351</a>
<a id='n13352' href='#n13352'>13352</a>
<a id='n13353' href='#n13353'>13353</a>
<a id='n13354' href='#n13354'>13354</a>
<a id='n13355' href='#n13355'>13355</a>
<a id='n13356' href='#n13356'>13356</a>
<a id='n13357' href='#n13357'>13357</a>
<a id='n13358' href='#n13358'>13358</a>
<a id='n13359' href='#n13359'>13359</a>
<a id='n13360' href='#n13360'>13360</a>
<a id='n13361' href='#n13361'>13361</a>
<a id='n13362' href='#n13362'>13362</a>
<a id='n13363' href='#n13363'>13363</a>
<a id='n13364' href='#n13364'>13364</a>
<a id='n13365' href='#n13365'>13365</a>
<a id='n13366' href='#n13366'>13366</a>
<a id='n13367' href='#n13367'>13367</a>
<a id='n13368' href='#n13368'>13368</a>
<a id='n13369' href='#n13369'>13369</a>
<a id='n13370' href='#n13370'>13370</a>
<a id='n13371' href='#n13371'>13371</a>
<a id='n13372' href='#n13372'>13372</a>
<a id='n13373' href='#n13373'>13373</a>
<a id='n13374' href='#n13374'>13374</a>
<a id='n13375' href='#n13375'>13375</a>
<a id='n13376' href='#n13376'>13376</a>
<a id='n13377' href='#n13377'>13377</a>
<a id='n13378' href='#n13378'>13378</a>
<a id='n13379' href='#n13379'>13379</a>
<a id='n13380' href='#n13380'>13380</a>
<a id='n13381' href='#n13381'>13381</a>
<a id='n13382' href='#n13382'>13382</a>
<a id='n13383' href='#n13383'>13383</a>
<a id='n13384' href='#n13384'>13384</a>
<a id='n13385' href='#n13385'>13385</a>
<a id='n13386' href='#n13386'>13386</a>
<a id='n13387' href='#n13387'>13387</a>
<a id='n13388' href='#n13388'>13388</a>
<a id='n13389' href='#n13389'>13389</a>
<a id='n13390' href='#n13390'>13390</a>
<a id='n13391' href='#n13391'>13391</a>
<a id='n13392' href='#n13392'>13392</a>
<a id='n13393' href='#n13393'>13393</a>
<a id='n13394' href='#n13394'>13394</a>
<a id='n13395' href='#n13395'>13395</a>
<a id='n13396' href='#n13396'>13396</a>
<a id='n13397' href='#n13397'>13397</a>
<a id='n13398' href='#n13398'>13398</a>
<a id='n13399' href='#n13399'>13399</a>
<a id='n13400' href='#n13400'>13400</a>
<a id='n13401' href='#n13401'>13401</a>
<a id='n13402' href='#n13402'>13402</a>
<a id='n13403' href='#n13403'>13403</a>
<a id='n13404' href='#n13404'>13404</a>
<a id='n13405' href='#n13405'>13405</a>
<a id='n13406' href='#n13406'>13406</a>
<a id='n13407' href='#n13407'>13407</a>
<a id='n13408' href='#n13408'>13408</a>
<a id='n13409' href='#n13409'>13409</a>
<a id='n13410' href='#n13410'>13410</a>
<a id='n13411' href='#n13411'>13411</a>
<a id='n13412' href='#n13412'>13412</a>
<a id='n13413' href='#n13413'>13413</a>
<a id='n13414' href='#n13414'>13414</a>
<a id='n13415' href='#n13415'>13415</a>
<a id='n13416' href='#n13416'>13416</a>
<a id='n13417' href='#n13417'>13417</a>
<a id='n13418' href='#n13418'>13418</a>
<a id='n13419' href='#n13419'>13419</a>
<a id='n13420' href='#n13420'>13420</a>
<a id='n13421' href='#n13421'>13421</a>
<a id='n13422' href='#n13422'>13422</a>
<a id='n13423' href='#n13423'>13423</a>
<a id='n13424' href='#n13424'>13424</a>
<a id='n13425' href='#n13425'>13425</a>
<a id='n13426' href='#n13426'>13426</a>
<a id='n13427' href='#n13427'>13427</a>
<a id='n13428' href='#n13428'>13428</a>
<a id='n13429' href='#n13429'>13429</a>
<a id='n13430' href='#n13430'>13430</a>
<a id='n13431' href='#n13431'>13431</a>
<a id='n13432' href='#n13432'>13432</a>
<a id='n13433' href='#n13433'>13433</a>
<a id='n13434' href='#n13434'>13434</a>
<a id='n13435' href='#n13435'>13435</a>
<a id='n13436' href='#n13436'>13436</a>
<a id='n13437' href='#n13437'>13437</a>
<a id='n13438' href='#n13438'>13438</a>
<a id='n13439' href='#n13439'>13439</a>
<a id='n13440' href='#n13440'>13440</a>
<a id='n13441' href='#n13441'>13441</a>
<a id='n13442' href='#n13442'>13442</a>
<a id='n13443' href='#n13443'>13443</a>
<a id='n13444' href='#n13444'>13444</a>
<a id='n13445' href='#n13445'>13445</a>
<a id='n13446' href='#n13446'>13446</a>
<a id='n13447' href='#n13447'>13447</a>
<a id='n13448' href='#n13448'>13448</a>
<a id='n13449' href='#n13449'>13449</a>
<a id='n13450' href='#n13450'>13450</a>
<a id='n13451' href='#n13451'>13451</a>
<a id='n13452' href='#n13452'>13452</a>
<a id='n13453' href='#n13453'>13453</a>
<a id='n13454' href='#n13454'>13454</a>
<a id='n13455' href='#n13455'>13455</a>
<a id='n13456' href='#n13456'>13456</a>
<a id='n13457' href='#n13457'>13457</a>
<a id='n13458' href='#n13458'>13458</a>
<a id='n13459' href='#n13459'>13459</a>
<a id='n13460' href='#n13460'>13460</a>
<a id='n13461' href='#n13461'>13461</a>
<a id='n13462' href='#n13462'>13462</a>
<a id='n13463' href='#n13463'>13463</a>
<a id='n13464' href='#n13464'>13464</a>
<a id='n13465' href='#n13465'>13465</a>
<a id='n13466' href='#n13466'>13466</a>
<a id='n13467' href='#n13467'>13467</a>
<a id='n13468' href='#n13468'>13468</a>
<a id='n13469' href='#n13469'>13469</a>
<a id='n13470' href='#n13470'>13470</a>
<a id='n13471' href='#n13471'>13471</a>
<a id='n13472' href='#n13472'>13472</a>
<a id='n13473' href='#n13473'>13473</a>
<a id='n13474' href='#n13474'>13474</a>
<a id='n13475' href='#n13475'>13475</a>
<a id='n13476' href='#n13476'>13476</a>
<a id='n13477' href='#n13477'>13477</a>
<a id='n13478' href='#n13478'>13478</a>
<a id='n13479' href='#n13479'>13479</a>
<a id='n13480' href='#n13480'>13480</a>
<a id='n13481' href='#n13481'>13481</a>
<a id='n13482' href='#n13482'>13482</a>
<a id='n13483' href='#n13483'>13483</a>
<a id='n13484' href='#n13484'>13484</a>
<a id='n13485' href='#n13485'>13485</a>
<a id='n13486' href='#n13486'>13486</a>
<a id='n13487' href='#n13487'>13487</a>
<a id='n13488' href='#n13488'>13488</a>
<a id='n13489' href='#n13489'>13489</a>
<a id='n13490' href='#n13490'>13490</a>
<a id='n13491' href='#n13491'>13491</a>
<a id='n13492' href='#n13492'>13492</a>
<a id='n13493' href='#n13493'>13493</a>
<a id='n13494' href='#n13494'>13494</a>
<a id='n13495' href='#n13495'>13495</a>
<a id='n13496' href='#n13496'>13496</a>
<a id='n13497' href='#n13497'>13497</a>
<a id='n13498' href='#n13498'>13498</a>
<a id='n13499' href='#n13499'>13499</a>
<a id='n13500' href='#n13500'>13500</a>
<a id='n13501' href='#n13501'>13501</a>
<a id='n13502' href='#n13502'>13502</a>
<a id='n13503' href='#n13503'>13503</a>
<a id='n13504' href='#n13504'>13504</a>
<a id='n13505' href='#n13505'>13505</a>
<a id='n13506' href='#n13506'>13506</a>
<a id='n13507' href='#n13507'>13507</a>
<a id='n13508' href='#n13508'>13508</a>
<a id='n13509' href='#n13509'>13509</a>
<a id='n13510' href='#n13510'>13510</a>
<a id='n13511' href='#n13511'>13511</a>
<a id='n13512' href='#n13512'>13512</a>
<a id='n13513' href='#n13513'>13513</a>
<a id='n13514' href='#n13514'>13514</a>
<a id='n13515' href='#n13515'>13515</a>
<a id='n13516' href='#n13516'>13516</a>
<a id='n13517' href='#n13517'>13517</a>
<a id='n13518' href='#n13518'>13518</a>
<a id='n13519' href='#n13519'>13519</a>
<a id='n13520' href='#n13520'>13520</a>
<a id='n13521' href='#n13521'>13521</a>
<a id='n13522' href='#n13522'>13522</a>
<a id='n13523' href='#n13523'>13523</a>
<a id='n13524' href='#n13524'>13524</a>
<a id='n13525' href='#n13525'>13525</a>
<a id='n13526' href='#n13526'>13526</a>
<a id='n13527' href='#n13527'>13527</a>
<a id='n13528' href='#n13528'>13528</a>
<a id='n13529' href='#n13529'>13529</a>
<a id='n13530' href='#n13530'>13530</a>
<a id='n13531' href='#n13531'>13531</a>
<a id='n13532' href='#n13532'>13532</a>
<a id='n13533' href='#n13533'>13533</a>
<a id='n13534' href='#n13534'>13534</a>
<a id='n13535' href='#n13535'>13535</a>
<a id='n13536' href='#n13536'>13536</a>
<a id='n13537' href='#n13537'>13537</a>
<a id='n13538' href='#n13538'>13538</a>
<a id='n13539' href='#n13539'>13539</a>
<a id='n13540' href='#n13540'>13540</a>
<a id='n13541' href='#n13541'>13541</a>
<a id='n13542' href='#n13542'>13542</a>
<a id='n13543' href='#n13543'>13543</a>
<a id='n13544' href='#n13544'>13544</a>
<a id='n13545' href='#n13545'>13545</a>
<a id='n13546' href='#n13546'>13546</a>
<a id='n13547' href='#n13547'>13547</a>
<a id='n13548' href='#n13548'>13548</a>
<a id='n13549' href='#n13549'>13549</a>
<a id='n13550' href='#n13550'>13550</a>
<a id='n13551' href='#n13551'>13551</a>
<a id='n13552' href='#n13552'>13552</a>
<a id='n13553' href='#n13553'>13553</a>
<a id='n13554' href='#n13554'>13554</a>
<a id='n13555' href='#n13555'>13555</a>
<a id='n13556' href='#n13556'>13556</a>
<a id='n13557' href='#n13557'>13557</a>
<a id='n13558' href='#n13558'>13558</a>
<a id='n13559' href='#n13559'>13559</a>
<a id='n13560' href='#n13560'>13560</a>
<a id='n13561' href='#n13561'>13561</a>
<a id='n13562' href='#n13562'>13562</a>
<a id='n13563' href='#n13563'>13563</a>
<a id='n13564' href='#n13564'>13564</a>
<a id='n13565' href='#n13565'>13565</a>
<a id='n13566' href='#n13566'>13566</a>
<a id='n13567' href='#n13567'>13567</a>
<a id='n13568' href='#n13568'>13568</a>
<a id='n13569' href='#n13569'>13569</a>
<a id='n13570' href='#n13570'>13570</a>
<a id='n13571' href='#n13571'>13571</a>
<a id='n13572' href='#n13572'>13572</a>
<a id='n13573' href='#n13573'>13573</a>
<a id='n13574' href='#n13574'>13574</a>
<a id='n13575' href='#n13575'>13575</a>
<a id='n13576' href='#n13576'>13576</a>
<a id='n13577' href='#n13577'>13577</a>
<a id='n13578' href='#n13578'>13578</a>
<a id='n13579' href='#n13579'>13579</a>
<a id='n13580' href='#n13580'>13580</a>
<a id='n13581' href='#n13581'>13581</a>
<a id='n13582' href='#n13582'>13582</a>
<a id='n13583' href='#n13583'>13583</a>
<a id='n13584' href='#n13584'>13584</a>
<a id='n13585' href='#n13585'>13585</a>
<a id='n13586' href='#n13586'>13586</a>
<a id='n13587' href='#n13587'>13587</a>
<a id='n13588' href='#n13588'>13588</a>
<a id='n13589' href='#n13589'>13589</a>
<a id='n13590' href='#n13590'>13590</a>
<a id='n13591' href='#n13591'>13591</a>
<a id='n13592' href='#n13592'>13592</a>
<a id='n13593' href='#n13593'>13593</a>
<a id='n13594' href='#n13594'>13594</a>
<a id='n13595' href='#n13595'>13595</a>
<a id='n13596' href='#n13596'>13596</a>
<a id='n13597' href='#n13597'>13597</a>
<a id='n13598' href='#n13598'>13598</a>
<a id='n13599' href='#n13599'>13599</a>
<a id='n13600' href='#n13600'>13600</a>
<a id='n13601' href='#n13601'>13601</a>
<a id='n13602' href='#n13602'>13602</a>
<a id='n13603' href='#n13603'>13603</a>
<a id='n13604' href='#n13604'>13604</a>
<a id='n13605' href='#n13605'>13605</a>
<a id='n13606' href='#n13606'>13606</a>
<a id='n13607' href='#n13607'>13607</a>
<a id='n13608' href='#n13608'>13608</a>
<a id='n13609' href='#n13609'>13609</a>
<a id='n13610' href='#n13610'>13610</a>
<a id='n13611' href='#n13611'>13611</a>
<a id='n13612' href='#n13612'>13612</a>
<a id='n13613' href='#n13613'>13613</a>
<a id='n13614' href='#n13614'>13614</a>
<a id='n13615' href='#n13615'>13615</a>
<a id='n13616' href='#n13616'>13616</a>
<a id='n13617' href='#n13617'>13617</a>
<a id='n13618' href='#n13618'>13618</a>
<a id='n13619' href='#n13619'>13619</a>
<a id='n13620' href='#n13620'>13620</a>
<a id='n13621' href='#n13621'>13621</a>
<a id='n13622' href='#n13622'>13622</a>
<a id='n13623' href='#n13623'>13623</a>
<a id='n13624' href='#n13624'>13624</a>
<a id='n13625' href='#n13625'>13625</a>
<a id='n13626' href='#n13626'>13626</a>
<a id='n13627' href='#n13627'>13627</a>
<a id='n13628' href='#n13628'>13628</a>
<a id='n13629' href='#n13629'>13629</a>
<a id='n13630' href='#n13630'>13630</a>
<a id='n13631' href='#n13631'>13631</a>
<a id='n13632' href='#n13632'>13632</a>
<a id='n13633' href='#n13633'>13633</a>
<a id='n13634' href='#n13634'>13634</a>
<a id='n13635' href='#n13635'>13635</a>
<a id='n13636' href='#n13636'>13636</a>
<a id='n13637' href='#n13637'>13637</a>
<a id='n13638' href='#n13638'>13638</a>
<a id='n13639' href='#n13639'>13639</a>
<a id='n13640' href='#n13640'>13640</a>
<a id='n13641' href='#n13641'>13641</a>
<a id='n13642' href='#n13642'>13642</a>
<a id='n13643' href='#n13643'>13643</a>
<a id='n13644' href='#n13644'>13644</a>
<a id='n13645' href='#n13645'>13645</a>
<a id='n13646' href='#n13646'>13646</a>
<a id='n13647' href='#n13647'>13647</a>
<a id='n13648' href='#n13648'>13648</a>
<a id='n13649' href='#n13649'>13649</a>
<a id='n13650' href='#n13650'>13650</a>
<a id='n13651' href='#n13651'>13651</a>
<a id='n13652' href='#n13652'>13652</a>
<a id='n13653' href='#n13653'>13653</a>
<a id='n13654' href='#n13654'>13654</a>
<a id='n13655' href='#n13655'>13655</a>
<a id='n13656' href='#n13656'>13656</a>
<a id='n13657' href='#n13657'>13657</a>
<a id='n13658' href='#n13658'>13658</a>
<a id='n13659' href='#n13659'>13659</a>
<a id='n13660' href='#n13660'>13660</a>
<a id='n13661' href='#n13661'>13661</a>
<a id='n13662' href='#n13662'>13662</a>
<a id='n13663' href='#n13663'>13663</a>
<a id='n13664' href='#n13664'>13664</a>
<a id='n13665' href='#n13665'>13665</a>
<a id='n13666' href='#n13666'>13666</a>
<a id='n13667' href='#n13667'>13667</a>
<a id='n13668' href='#n13668'>13668</a>
<a id='n13669' href='#n13669'>13669</a>
<a id='n13670' href='#n13670'>13670</a>
<a id='n13671' href='#n13671'>13671</a>
<a id='n13672' href='#n13672'>13672</a>
<a id='n13673' href='#n13673'>13673</a>
<a id='n13674' href='#n13674'>13674</a>
<a id='n13675' href='#n13675'>13675</a>
<a id='n13676' href='#n13676'>13676</a>
<a id='n13677' href='#n13677'>13677</a>
<a id='n13678' href='#n13678'>13678</a>
<a id='n13679' href='#n13679'>13679</a>
<a id='n13680' href='#n13680'>13680</a>
<a id='n13681' href='#n13681'>13681</a>
<a id='n13682' href='#n13682'>13682</a>
<a id='n13683' href='#n13683'>13683</a>
<a id='n13684' href='#n13684'>13684</a>
<a id='n13685' href='#n13685'>13685</a>
<a id='n13686' href='#n13686'>13686</a>
<a id='n13687' href='#n13687'>13687</a>
<a id='n13688' href='#n13688'>13688</a>
<a id='n13689' href='#n13689'>13689</a>
<a id='n13690' href='#n13690'>13690</a>
<a id='n13691' href='#n13691'>13691</a>
<a id='n13692' href='#n13692'>13692</a>
<a id='n13693' href='#n13693'>13693</a>
<a id='n13694' href='#n13694'>13694</a>
<a id='n13695' href='#n13695'>13695</a>
<a id='n13696' href='#n13696'>13696</a>
<a id='n13697' href='#n13697'>13697</a>
<a id='n13698' href='#n13698'>13698</a>
<a id='n13699' href='#n13699'>13699</a>
<a id='n13700' href='#n13700'>13700</a>
<a id='n13701' href='#n13701'>13701</a>
<a id='n13702' href='#n13702'>13702</a>
<a id='n13703' href='#n13703'>13703</a>
<a id='n13704' href='#n13704'>13704</a>
<a id='n13705' href='#n13705'>13705</a>
<a id='n13706' href='#n13706'>13706</a>
<a id='n13707' href='#n13707'>13707</a>
<a id='n13708' href='#n13708'>13708</a>
<a id='n13709' href='#n13709'>13709</a>
<a id='n13710' href='#n13710'>13710</a>
<a id='n13711' href='#n13711'>13711</a>
<a id='n13712' href='#n13712'>13712</a>
<a id='n13713' href='#n13713'>13713</a>
<a id='n13714' href='#n13714'>13714</a>
<a id='n13715' href='#n13715'>13715</a>
<a id='n13716' href='#n13716'>13716</a>
<a id='n13717' href='#n13717'>13717</a>
<a id='n13718' href='#n13718'>13718</a>
<a id='n13719' href='#n13719'>13719</a>
<a id='n13720' href='#n13720'>13720</a>
<a id='n13721' href='#n13721'>13721</a>
<a id='n13722' href='#n13722'>13722</a>
<a id='n13723' href='#n13723'>13723</a>
<a id='n13724' href='#n13724'>13724</a>
<a id='n13725' href='#n13725'>13725</a>
<a id='n13726' href='#n13726'>13726</a>
<a id='n13727' href='#n13727'>13727</a>
<a id='n13728' href='#n13728'>13728</a>
<a id='n13729' href='#n13729'>13729</a>
<a id='n13730' href='#n13730'>13730</a>
<a id='n13731' href='#n13731'>13731</a>
<a id='n13732' href='#n13732'>13732</a>
<a id='n13733' href='#n13733'>13733</a>
<a id='n13734' href='#n13734'>13734</a>
<a id='n13735' href='#n13735'>13735</a>
<a id='n13736' href='#n13736'>13736</a>
<a id='n13737' href='#n13737'>13737</a>
<a id='n13738' href='#n13738'>13738</a>
<a id='n13739' href='#n13739'>13739</a>
<a id='n13740' href='#n13740'>13740</a>
<a id='n13741' href='#n13741'>13741</a>
<a id='n13742' href='#n13742'>13742</a>
<a id='n13743' href='#n13743'>13743</a>
<a id='n13744' href='#n13744'>13744</a>
<a id='n13745' href='#n13745'>13745</a>
<a id='n13746' href='#n13746'>13746</a>
<a id='n13747' href='#n13747'>13747</a>
<a id='n13748' href='#n13748'>13748</a>
<a id='n13749' href='#n13749'>13749</a>
<a id='n13750' href='#n13750'>13750</a>
<a id='n13751' href='#n13751'>13751</a>
<a id='n13752' href='#n13752'>13752</a>
<a id='n13753' href='#n13753'>13753</a>
<a id='n13754' href='#n13754'>13754</a>
<a id='n13755' href='#n13755'>13755</a>
<a id='n13756' href='#n13756'>13756</a>
<a id='n13757' href='#n13757'>13757</a>
<a id='n13758' href='#n13758'>13758</a>
<a id='n13759' href='#n13759'>13759</a>
<a id='n13760' href='#n13760'>13760</a>
<a id='n13761' href='#n13761'>13761</a>
<a id='n13762' href='#n13762'>13762</a>
<a id='n13763' href='#n13763'>13763</a>
<a id='n13764' href='#n13764'>13764</a>
<a id='n13765' href='#n13765'>13765</a>
<a id='n13766' href='#n13766'>13766</a>
<a id='n13767' href='#n13767'>13767</a>
<a id='n13768' href='#n13768'>13768</a>
<a id='n13769' href='#n13769'>13769</a>
<a id='n13770' href='#n13770'>13770</a>
<a id='n13771' href='#n13771'>13771</a>
<a id='n13772' href='#n13772'>13772</a>
<a id='n13773' href='#n13773'>13773</a>
<a id='n13774' href='#n13774'>13774</a>
<a id='n13775' href='#n13775'>13775</a>
<a id='n13776' href='#n13776'>13776</a>
<a id='n13777' href='#n13777'>13777</a>
<a id='n13778' href='#n13778'>13778</a>
<a id='n13779' href='#n13779'>13779</a>
<a id='n13780' href='#n13780'>13780</a>
<a id='n13781' href='#n13781'>13781</a>
<a id='n13782' href='#n13782'>13782</a>
<a id='n13783' href='#n13783'>13783</a>
<a id='n13784' href='#n13784'>13784</a>
<a id='n13785' href='#n13785'>13785</a>
<a id='n13786' href='#n13786'>13786</a>
<a id='n13787' href='#n13787'>13787</a>
<a id='n13788' href='#n13788'>13788</a>
<a id='n13789' href='#n13789'>13789</a>
<a id='n13790' href='#n13790'>13790</a>
<a id='n13791' href='#n13791'>13791</a>
<a id='n13792' href='#n13792'>13792</a>
<a id='n13793' href='#n13793'>13793</a>
<a id='n13794' href='#n13794'>13794</a>
<a id='n13795' href='#n13795'>13795</a>
<a id='n13796' href='#n13796'>13796</a>
<a id='n13797' href='#n13797'>13797</a>
<a id='n13798' href='#n13798'>13798</a>
<a id='n13799' href='#n13799'>13799</a>
<a id='n13800' href='#n13800'>13800</a>
<a id='n13801' href='#n13801'>13801</a>
<a id='n13802' href='#n13802'>13802</a>
<a id='n13803' href='#n13803'>13803</a>
<a id='n13804' href='#n13804'>13804</a>
<a id='n13805' href='#n13805'>13805</a>
<a id='n13806' href='#n13806'>13806</a>
<a id='n13807' href='#n13807'>13807</a>
<a id='n13808' href='#n13808'>13808</a>
<a id='n13809' href='#n13809'>13809</a>
<a id='n13810' href='#n13810'>13810</a>
<a id='n13811' href='#n13811'>13811</a>
<a id='n13812' href='#n13812'>13812</a>
<a id='n13813' href='#n13813'>13813</a>
<a id='n13814' href='#n13814'>13814</a>
<a id='n13815' href='#n13815'>13815</a>
<a id='n13816' href='#n13816'>13816</a>
<a id='n13817' href='#n13817'>13817</a>
<a id='n13818' href='#n13818'>13818</a>
<a id='n13819' href='#n13819'>13819</a>
<a id='n13820' href='#n13820'>13820</a>
<a id='n13821' href='#n13821'>13821</a>
<a id='n13822' href='#n13822'>13822</a>
<a id='n13823' href='#n13823'>13823</a>
<a id='n13824' href='#n13824'>13824</a>
<a id='n13825' href='#n13825'>13825</a>
<a id='n13826' href='#n13826'>13826</a>
<a id='n13827' href='#n13827'>13827</a>
<a id='n13828' href='#n13828'>13828</a>
<a id='n13829' href='#n13829'>13829</a>
<a id='n13830' href='#n13830'>13830</a>
<a id='n13831' href='#n13831'>13831</a>
<a id='n13832' href='#n13832'>13832</a>
<a id='n13833' href='#n13833'>13833</a>
<a id='n13834' href='#n13834'>13834</a>
<a id='n13835' href='#n13835'>13835</a>
<a id='n13836' href='#n13836'>13836</a>
<a id='n13837' href='#n13837'>13837</a>
<a id='n13838' href='#n13838'>13838</a>
<a id='n13839' href='#n13839'>13839</a>
<a id='n13840' href='#n13840'>13840</a>
<a id='n13841' href='#n13841'>13841</a>
<a id='n13842' href='#n13842'>13842</a>
<a id='n13843' href='#n13843'>13843</a>
<a id='n13844' href='#n13844'>13844</a>
<a id='n13845' href='#n13845'>13845</a>
<a id='n13846' href='#n13846'>13846</a>
<a id='n13847' href='#n13847'>13847</a>
<a id='n13848' href='#n13848'>13848</a>
<a id='n13849' href='#n13849'>13849</a>
<a id='n13850' href='#n13850'>13850</a>
<a id='n13851' href='#n13851'>13851</a>
<a id='n13852' href='#n13852'>13852</a>
<a id='n13853' href='#n13853'>13853</a>
<a id='n13854' href='#n13854'>13854</a>
<a id='n13855' href='#n13855'>13855</a>
<a id='n13856' href='#n13856'>13856</a>
<a id='n13857' href='#n13857'>13857</a>
<a id='n13858' href='#n13858'>13858</a>
<a id='n13859' href='#n13859'>13859</a>
<a id='n13860' href='#n13860'>13860</a>
<a id='n13861' href='#n13861'>13861</a>
<a id='n13862' href='#n13862'>13862</a>
<a id='n13863' href='#n13863'>13863</a>
<a id='n13864' href='#n13864'>13864</a>
<a id='n13865' href='#n13865'>13865</a>
<a id='n13866' href='#n13866'>13866</a>
<a id='n13867' href='#n13867'>13867</a>
<a id='n13868' href='#n13868'>13868</a>
<a id='n13869' href='#n13869'>13869</a>
<a id='n13870' href='#n13870'>13870</a>
<a id='n13871' href='#n13871'>13871</a>
<a id='n13872' href='#n13872'>13872</a>
<a id='n13873' href='#n13873'>13873</a>
<a id='n13874' href='#n13874'>13874</a>
<a id='n13875' href='#n13875'>13875</a>
<a id='n13876' href='#n13876'>13876</a>
<a id='n13877' href='#n13877'>13877</a>
<a id='n13878' href='#n13878'>13878</a>
<a id='n13879' href='#n13879'>13879</a>
<a id='n13880' href='#n13880'>13880</a>
<a id='n13881' href='#n13881'>13881</a>
<a id='n13882' href='#n13882'>13882</a>
<a id='n13883' href='#n13883'>13883</a>
<a id='n13884' href='#n13884'>13884</a>
<a id='n13885' href='#n13885'>13885</a>
<a id='n13886' href='#n13886'>13886</a>
<a id='n13887' href='#n13887'>13887</a>
<a id='n13888' href='#n13888'>13888</a>
<a id='n13889' href='#n13889'>13889</a>
<a id='n13890' href='#n13890'>13890</a>
<a id='n13891' href='#n13891'>13891</a>
<a id='n13892' href='#n13892'>13892</a>
<a id='n13893' href='#n13893'>13893</a>
<a id='n13894' href='#n13894'>13894</a>
<a id='n13895' href='#n13895'>13895</a>
<a id='n13896' href='#n13896'>13896</a>
<a id='n13897' href='#n13897'>13897</a>
<a id='n13898' href='#n13898'>13898</a>
<a id='n13899' href='#n13899'>13899</a>
<a id='n13900' href='#n13900'>13900</a>
<a id='n13901' href='#n13901'>13901</a>
<a id='n13902' href='#n13902'>13902</a>
<a id='n13903' href='#n13903'>13903</a>
<a id='n13904' href='#n13904'>13904</a>
<a id='n13905' href='#n13905'>13905</a>
<a id='n13906' href='#n13906'>13906</a>
<a id='n13907' href='#n13907'>13907</a>
<a id='n13908' href='#n13908'>13908</a>
<a id='n13909' href='#n13909'>13909</a>
<a id='n13910' href='#n13910'>13910</a>
<a id='n13911' href='#n13911'>13911</a>
<a id='n13912' href='#n13912'>13912</a>
<a id='n13913' href='#n13913'>13913</a>
<a id='n13914' href='#n13914'>13914</a>
<a id='n13915' href='#n13915'>13915</a>
<a id='n13916' href='#n13916'>13916</a>
<a id='n13917' href='#n13917'>13917</a>
<a id='n13918' href='#n13918'>13918</a>
<a id='n13919' href='#n13919'>13919</a>
<a id='n13920' href='#n13920'>13920</a>
<a id='n13921' href='#n13921'>13921</a>
<a id='n13922' href='#n13922'>13922</a>
<a id='n13923' href='#n13923'>13923</a>
<a id='n13924' href='#n13924'>13924</a>
<a id='n13925' href='#n13925'>13925</a>
<a id='n13926' href='#n13926'>13926</a>
<a id='n13927' href='#n13927'>13927</a>
<a id='n13928' href='#n13928'>13928</a>
<a id='n13929' href='#n13929'>13929</a>
<a id='n13930' href='#n13930'>13930</a>
<a id='n13931' href='#n13931'>13931</a>
<a id='n13932' href='#n13932'>13932</a>
<a id='n13933' href='#n13933'>13933</a>
<a id='n13934' href='#n13934'>13934</a>
<a id='n13935' href='#n13935'>13935</a>
<a id='n13936' href='#n13936'>13936</a>
<a id='n13937' href='#n13937'>13937</a>
<a id='n13938' href='#n13938'>13938</a>
<a id='n13939' href='#n13939'>13939</a>
<a id='n13940' href='#n13940'>13940</a>
<a id='n13941' href='#n13941'>13941</a>
<a id='n13942' href='#n13942'>13942</a>
<a id='n13943' href='#n13943'>13943</a>
<a id='n13944' href='#n13944'>13944</a>
<a id='n13945' href='#n13945'>13945</a>
<a id='n13946' href='#n13946'>13946</a>
<a id='n13947' href='#n13947'>13947</a>
<a id='n13948' href='#n13948'>13948</a>
<a id='n13949' href='#n13949'>13949</a>
<a id='n13950' href='#n13950'>13950</a>
<a id='n13951' href='#n13951'>13951</a>
<a id='n13952' href='#n13952'>13952</a>
<a id='n13953' href='#n13953'>13953</a>
<a id='n13954' href='#n13954'>13954</a>
<a id='n13955' href='#n13955'>13955</a>
<a id='n13956' href='#n13956'>13956</a>
<a id='n13957' href='#n13957'>13957</a>
<a id='n13958' href='#n13958'>13958</a>
<a id='n13959' href='#n13959'>13959</a>
<a id='n13960' href='#n13960'>13960</a>
<a id='n13961' href='#n13961'>13961</a>
<a id='n13962' href='#n13962'>13962</a>
<a id='n13963' href='#n13963'>13963</a>
<a id='n13964' href='#n13964'>13964</a>
<a id='n13965' href='#n13965'>13965</a>
<a id='n13966' href='#n13966'>13966</a>
<a id='n13967' href='#n13967'>13967</a>
<a id='n13968' href='#n13968'>13968</a>
<a id='n13969' href='#n13969'>13969</a>
<a id='n13970' href='#n13970'>13970</a>
<a id='n13971' href='#n13971'>13971</a>
<a id='n13972' href='#n13972'>13972</a>
<a id='n13973' href='#n13973'>13973</a>
<a id='n13974' href='#n13974'>13974</a>
<a id='n13975' href='#n13975'>13975</a>
<a id='n13976' href='#n13976'>13976</a>
<a id='n13977' href='#n13977'>13977</a>
<a id='n13978' href='#n13978'>13978</a>
<a id='n13979' href='#n13979'>13979</a>
<a id='n13980' href='#n13980'>13980</a>
<a id='n13981' href='#n13981'>13981</a>
<a id='n13982' href='#n13982'>13982</a>
<a id='n13983' href='#n13983'>13983</a>
<a id='n13984' href='#n13984'>13984</a>
<a id='n13985' href='#n13985'>13985</a>
<a id='n13986' href='#n13986'>13986</a>
<a id='n13987' href='#n13987'>13987</a>
<a id='n13988' href='#n13988'>13988</a>
<a id='n13989' href='#n13989'>13989</a>
<a id='n13990' href='#n13990'>13990</a>
<a id='n13991' href='#n13991'>13991</a>
<a id='n13992' href='#n13992'>13992</a>
<a id='n13993' href='#n13993'>13993</a>
<a id='n13994' href='#n13994'>13994</a>
<a id='n13995' href='#n13995'>13995</a>
<a id='n13996' href='#n13996'>13996</a>
<a id='n13997' href='#n13997'>13997</a>
<a id='n13998' href='#n13998'>13998</a>
<a id='n13999' href='#n13999'>13999</a>
<a id='n14000' href='#n14000'>14000</a>
<a id='n14001' href='#n14001'>14001</a>
<a id='n14002' href='#n14002'>14002</a>
<a id='n14003' href='#n14003'>14003</a>
<a id='n14004' href='#n14004'>14004</a>
<a id='n14005' href='#n14005'>14005</a>
<a id='n14006' href='#n14006'>14006</a>
<a id='n14007' href='#n14007'>14007</a>
<a id='n14008' href='#n14008'>14008</a>
<a id='n14009' href='#n14009'>14009</a>
<a id='n14010' href='#n14010'>14010</a>
<a id='n14011' href='#n14011'>14011</a>
<a id='n14012' href='#n14012'>14012</a>
<a id='n14013' href='#n14013'>14013</a>
<a id='n14014' href='#n14014'>14014</a>
<a id='n14015' href='#n14015'>14015</a>
<a id='n14016' href='#n14016'>14016</a>
<a id='n14017' href='#n14017'>14017</a>
<a id='n14018' href='#n14018'>14018</a>
<a id='n14019' href='#n14019'>14019</a>
<a id='n14020' href='#n14020'>14020</a>
<a id='n14021' href='#n14021'>14021</a>
<a id='n14022' href='#n14022'>14022</a>
<a id='n14023' href='#n14023'>14023</a>
<a id='n14024' href='#n14024'>14024</a>
<a id='n14025' href='#n14025'>14025</a>
<a id='n14026' href='#n14026'>14026</a>
<a id='n14027' href='#n14027'>14027</a>
<a id='n14028' href='#n14028'>14028</a>
<a id='n14029' href='#n14029'>14029</a>
<a id='n14030' href='#n14030'>14030</a>
<a id='n14031' href='#n14031'>14031</a>
<a id='n14032' href='#n14032'>14032</a>
<a id='n14033' href='#n14033'>14033</a>
<a id='n14034' href='#n14034'>14034</a>
<a id='n14035' href='#n14035'>14035</a>
<a id='n14036' href='#n14036'>14036</a>
<a id='n14037' href='#n14037'>14037</a>
<a id='n14038' href='#n14038'>14038</a>
<a id='n14039' href='#n14039'>14039</a>
<a id='n14040' href='#n14040'>14040</a>
<a id='n14041' href='#n14041'>14041</a>
<a id='n14042' href='#n14042'>14042</a>
<a id='n14043' href='#n14043'>14043</a>
<a id='n14044' href='#n14044'>14044</a>
<a id='n14045' href='#n14045'>14045</a>
<a id='n14046' href='#n14046'>14046</a>
<a id='n14047' href='#n14047'>14047</a>
<a id='n14048' href='#n14048'>14048</a>
<a id='n14049' href='#n14049'>14049</a>
<a id='n14050' href='#n14050'>14050</a>
<a id='n14051' href='#n14051'>14051</a>
<a id='n14052' href='#n14052'>14052</a>
<a id='n14053' href='#n14053'>14053</a>
<a id='n14054' href='#n14054'>14054</a>
<a id='n14055' href='#n14055'>14055</a>
<a id='n14056' href='#n14056'>14056</a>
<a id='n14057' href='#n14057'>14057</a>
<a id='n14058' href='#n14058'>14058</a>
<a id='n14059' href='#n14059'>14059</a>
<a id='n14060' href='#n14060'>14060</a>
<a id='n14061' href='#n14061'>14061</a>
<a id='n14062' href='#n14062'>14062</a>
<a id='n14063' href='#n14063'>14063</a>
<a id='n14064' href='#n14064'>14064</a>
<a id='n14065' href='#n14065'>14065</a>
<a id='n14066' href='#n14066'>14066</a>
<a id='n14067' href='#n14067'>14067</a>
<a id='n14068' href='#n14068'>14068</a>
<a id='n14069' href='#n14069'>14069</a>
<a id='n14070' href='#n14070'>14070</a>
<a id='n14071' href='#n14071'>14071</a>
<a id='n14072' href='#n14072'>14072</a>
<a id='n14073' href='#n14073'>14073</a>
<a id='n14074' href='#n14074'>14074</a>
<a id='n14075' href='#n14075'>14075</a>
<a id='n14076' href='#n14076'>14076</a>
<a id='n14077' href='#n14077'>14077</a>
<a id='n14078' href='#n14078'>14078</a>
<a id='n14079' href='#n14079'>14079</a>
<a id='n14080' href='#n14080'>14080</a>
<a id='n14081' href='#n14081'>14081</a>
<a id='n14082' href='#n14082'>14082</a>
<a id='n14083' href='#n14083'>14083</a>
<a id='n14084' href='#n14084'>14084</a>
<a id='n14085' href='#n14085'>14085</a>
<a id='n14086' href='#n14086'>14086</a>
<a id='n14087' href='#n14087'>14087</a>
<a id='n14088' href='#n14088'>14088</a>
<a id='n14089' href='#n14089'>14089</a>
<a id='n14090' href='#n14090'>14090</a>
<a id='n14091' href='#n14091'>14091</a>
<a id='n14092' href='#n14092'>14092</a>
<a id='n14093' href='#n14093'>14093</a>
<a id='n14094' href='#n14094'>14094</a>
<a id='n14095' href='#n14095'>14095</a>
<a id='n14096' href='#n14096'>14096</a>
<a id='n14097' href='#n14097'>14097</a>
<a id='n14098' href='#n14098'>14098</a>
<a id='n14099' href='#n14099'>14099</a>
<a id='n14100' href='#n14100'>14100</a>
<a id='n14101' href='#n14101'>14101</a>
<a id='n14102' href='#n14102'>14102</a>
<a id='n14103' href='#n14103'>14103</a>
<a id='n14104' href='#n14104'>14104</a>
<a id='n14105' href='#n14105'>14105</a>
<a id='n14106' href='#n14106'>14106</a>
<a id='n14107' href='#n14107'>14107</a>
<a id='n14108' href='#n14108'>14108</a>
<a id='n14109' href='#n14109'>14109</a>
<a id='n14110' href='#n14110'>14110</a>
<a id='n14111' href='#n14111'>14111</a>
<a id='n14112' href='#n14112'>14112</a>
<a id='n14113' href='#n14113'>14113</a>
<a id='n14114' href='#n14114'>14114</a>
<a id='n14115' href='#n14115'>14115</a>
<a id='n14116' href='#n14116'>14116</a>
<a id='n14117' href='#n14117'>14117</a>
<a id='n14118' href='#n14118'>14118</a>
<a id='n14119' href='#n14119'>14119</a>
<a id='n14120' href='#n14120'>14120</a>
<a id='n14121' href='#n14121'>14121</a>
<a id='n14122' href='#n14122'>14122</a>
<a id='n14123' href='#n14123'>14123</a>
<a id='n14124' href='#n14124'>14124</a>
<a id='n14125' href='#n14125'>14125</a>
<a id='n14126' href='#n14126'>14126</a>
<a id='n14127' href='#n14127'>14127</a>
<a id='n14128' href='#n14128'>14128</a>
<a id='n14129' href='#n14129'>14129</a>
<a id='n14130' href='#n14130'>14130</a>
<a id='n14131' href='#n14131'>14131</a>
<a id='n14132' href='#n14132'>14132</a>
<a id='n14133' href='#n14133'>14133</a>
<a id='n14134' href='#n14134'>14134</a>
<a id='n14135' href='#n14135'>14135</a>
<a id='n14136' href='#n14136'>14136</a>
<a id='n14137' href='#n14137'>14137</a>
<a id='n14138' href='#n14138'>14138</a>
<a id='n14139' href='#n14139'>14139</a>
<a id='n14140' href='#n14140'>14140</a>
<a id='n14141' href='#n14141'>14141</a>
<a id='n14142' href='#n14142'>14142</a>
<a id='n14143' href='#n14143'>14143</a>
<a id='n14144' href='#n14144'>14144</a>
<a id='n14145' href='#n14145'>14145</a>
<a id='n14146' href='#n14146'>14146</a>
<a id='n14147' href='#n14147'>14147</a>
<a id='n14148' href='#n14148'>14148</a>
<a id='n14149' href='#n14149'>14149</a>
<a id='n14150' href='#n14150'>14150</a>
<a id='n14151' href='#n14151'>14151</a>
<a id='n14152' href='#n14152'>14152</a>
<a id='n14153' href='#n14153'>14153</a>
<a id='n14154' href='#n14154'>14154</a>
<a id='n14155' href='#n14155'>14155</a>
<a id='n14156' href='#n14156'>14156</a>
<a id='n14157' href='#n14157'>14157</a>
<a id='n14158' href='#n14158'>14158</a>
<a id='n14159' href='#n14159'>14159</a>
<a id='n14160' href='#n14160'>14160</a>
<a id='n14161' href='#n14161'>14161</a>
<a id='n14162' href='#n14162'>14162</a>
<a id='n14163' href='#n14163'>14163</a>
<a id='n14164' href='#n14164'>14164</a>
<a id='n14165' href='#n14165'>14165</a>
<a id='n14166' href='#n14166'>14166</a>
<a id='n14167' href='#n14167'>14167</a>
<a id='n14168' href='#n14168'>14168</a>
<a id='n14169' href='#n14169'>14169</a>
<a id='n14170' href='#n14170'>14170</a>
<a id='n14171' href='#n14171'>14171</a>
<a id='n14172' href='#n14172'>14172</a>
<a id='n14173' href='#n14173'>14173</a>
<a id='n14174' href='#n14174'>14174</a>
<a id='n14175' href='#n14175'>14175</a>
<a id='n14176' href='#n14176'>14176</a>
<a id='n14177' href='#n14177'>14177</a>
<a id='n14178' href='#n14178'>14178</a>
<a id='n14179' href='#n14179'>14179</a>
<a id='n14180' href='#n14180'>14180</a>
<a id='n14181' href='#n14181'>14181</a>
<a id='n14182' href='#n14182'>14182</a>
<a id='n14183' href='#n14183'>14183</a>
<a id='n14184' href='#n14184'>14184</a>
<a id='n14185' href='#n14185'>14185</a>
<a id='n14186' href='#n14186'>14186</a>
<a id='n14187' href='#n14187'>14187</a>
<a id='n14188' href='#n14188'>14188</a>
<a id='n14189' href='#n14189'>14189</a>
<a id='n14190' href='#n14190'>14190</a>
<a id='n14191' href='#n14191'>14191</a>
<a id='n14192' href='#n14192'>14192</a>
<a id='n14193' href='#n14193'>14193</a>
<a id='n14194' href='#n14194'>14194</a>
<a id='n14195' href='#n14195'>14195</a>
<a id='n14196' href='#n14196'>14196</a>
<a id='n14197' href='#n14197'>14197</a>
<a id='n14198' href='#n14198'>14198</a>
<a id='n14199' href='#n14199'>14199</a>
<a id='n14200' href='#n14200'>14200</a>
<a id='n14201' href='#n14201'>14201</a>
<a id='n14202' href='#n14202'>14202</a>
<a id='n14203' href='#n14203'>14203</a>
<a id='n14204' href='#n14204'>14204</a>
<a id='n14205' href='#n14205'>14205</a>
<a id='n14206' href='#n14206'>14206</a>
<a id='n14207' href='#n14207'>14207</a>
<a id='n14208' href='#n14208'>14208</a>
<a id='n14209' href='#n14209'>14209</a>
<a id='n14210' href='#n14210'>14210</a>
<a id='n14211' href='#n14211'>14211</a>
<a id='n14212' href='#n14212'>14212</a>
<a id='n14213' href='#n14213'>14213</a>
<a id='n14214' href='#n14214'>14214</a>
<a id='n14215' href='#n14215'>14215</a>
<a id='n14216' href='#n14216'>14216</a>
<a id='n14217' href='#n14217'>14217</a>
<a id='n14218' href='#n14218'>14218</a>
<a id='n14219' href='#n14219'>14219</a>
<a id='n14220' href='#n14220'>14220</a>
<a id='n14221' href='#n14221'>14221</a>
<a id='n14222' href='#n14222'>14222</a>
<a id='n14223' href='#n14223'>14223</a>
<a id='n14224' href='#n14224'>14224</a>
<a id='n14225' href='#n14225'>14225</a>
<a id='n14226' href='#n14226'>14226</a>
<a id='n14227' href='#n14227'>14227</a>
<a id='n14228' href='#n14228'>14228</a>
<a id='n14229' href='#n14229'>14229</a>
<a id='n14230' href='#n14230'>14230</a>
<a id='n14231' href='#n14231'>14231</a>
<a id='n14232' href='#n14232'>14232</a>
<a id='n14233' href='#n14233'>14233</a>
<a id='n14234' href='#n14234'>14234</a>
<a id='n14235' href='#n14235'>14235</a>
<a id='n14236' href='#n14236'>14236</a>
<a id='n14237' href='#n14237'>14237</a>
<a id='n14238' href='#n14238'>14238</a>
<a id='n14239' href='#n14239'>14239</a>
<a id='n14240' href='#n14240'>14240</a>
<a id='n14241' href='#n14241'>14241</a>
<a id='n14242' href='#n14242'>14242</a>
<a id='n14243' href='#n14243'>14243</a>
<a id='n14244' href='#n14244'>14244</a>
<a id='n14245' href='#n14245'>14245</a>
<a id='n14246' href='#n14246'>14246</a>
<a id='n14247' href='#n14247'>14247</a>
<a id='n14248' href='#n14248'>14248</a>
<a id='n14249' href='#n14249'>14249</a>
<a id='n14250' href='#n14250'>14250</a>
<a id='n14251' href='#n14251'>14251</a>
<a id='n14252' href='#n14252'>14252</a>
<a id='n14253' href='#n14253'>14253</a>
<a id='n14254' href='#n14254'>14254</a>
<a id='n14255' href='#n14255'>14255</a>
<a id='n14256' href='#n14256'>14256</a>
<a id='n14257' href='#n14257'>14257</a>
<a id='n14258' href='#n14258'>14258</a>
<a id='n14259' href='#n14259'>14259</a>
<a id='n14260' href='#n14260'>14260</a>
<a id='n14261' href='#n14261'>14261</a>
<a id='n14262' href='#n14262'>14262</a>
<a id='n14263' href='#n14263'>14263</a>
<a id='n14264' href='#n14264'>14264</a>
<a id='n14265' href='#n14265'>14265</a>
<a id='n14266' href='#n14266'>14266</a>
<a id='n14267' href='#n14267'>14267</a>
<a id='n14268' href='#n14268'>14268</a>
<a id='n14269' href='#n14269'>14269</a>
<a id='n14270' href='#n14270'>14270</a>
<a id='n14271' href='#n14271'>14271</a>
<a id='n14272' href='#n14272'>14272</a>
<a id='n14273' href='#n14273'>14273</a>
<a id='n14274' href='#n14274'>14274</a>
<a id='n14275' href='#n14275'>14275</a>
<a id='n14276' href='#n14276'>14276</a>
<a id='n14277' href='#n14277'>14277</a>
<a id='n14278' href='#n14278'>14278</a>
<a id='n14279' href='#n14279'>14279</a>
<a id='n14280' href='#n14280'>14280</a>
<a id='n14281' href='#n14281'>14281</a>
<a id='n14282' href='#n14282'>14282</a>
<a id='n14283' href='#n14283'>14283</a>
<a id='n14284' href='#n14284'>14284</a>
<a id='n14285' href='#n14285'>14285</a>
<a id='n14286' href='#n14286'>14286</a>
<a id='n14287' href='#n14287'>14287</a>
<a id='n14288' href='#n14288'>14288</a>
<a id='n14289' href='#n14289'>14289</a>
<a id='n14290' href='#n14290'>14290</a>
<a id='n14291' href='#n14291'>14291</a>
<a id='n14292' href='#n14292'>14292</a>
<a id='n14293' href='#n14293'>14293</a>
<a id='n14294' href='#n14294'>14294</a>
<a id='n14295' href='#n14295'>14295</a>
<a id='n14296' href='#n14296'>14296</a>
<a id='n14297' href='#n14297'>14297</a>
<a id='n14298' href='#n14298'>14298</a>
<a id='n14299' href='#n14299'>14299</a>
<a id='n14300' href='#n14300'>14300</a>
<a id='n14301' href='#n14301'>14301</a>
<a id='n14302' href='#n14302'>14302</a>
<a id='n14303' href='#n14303'>14303</a>
<a id='n14304' href='#n14304'>14304</a>
<a id='n14305' href='#n14305'>14305</a>
<a id='n14306' href='#n14306'>14306</a>
<a id='n14307' href='#n14307'>14307</a>
<a id='n14308' href='#n14308'>14308</a>
<a id='n14309' href='#n14309'>14309</a>
<a id='n14310' href='#n14310'>14310</a>
<a id='n14311' href='#n14311'>14311</a>
<a id='n14312' href='#n14312'>14312</a>
<a id='n14313' href='#n14313'>14313</a>
<a id='n14314' href='#n14314'>14314</a>
<a id='n14315' href='#n14315'>14315</a>
<a id='n14316' href='#n14316'>14316</a>
<a id='n14317' href='#n14317'>14317</a>
<a id='n14318' href='#n14318'>14318</a>
<a id='n14319' href='#n14319'>14319</a>
<a id='n14320' href='#n14320'>14320</a>
<a id='n14321' href='#n14321'>14321</a>
<a id='n14322' href='#n14322'>14322</a>
<a id='n14323' href='#n14323'>14323</a>
<a id='n14324' href='#n14324'>14324</a>
<a id='n14325' href='#n14325'>14325</a>
<a id='n14326' href='#n14326'>14326</a>
<a id='n14327' href='#n14327'>14327</a>
<a id='n14328' href='#n14328'>14328</a>
<a id='n14329' href='#n14329'>14329</a>
<a id='n14330' href='#n14330'>14330</a>
<a id='n14331' href='#n14331'>14331</a>
<a id='n14332' href='#n14332'>14332</a>
<a id='n14333' href='#n14333'>14333</a>
<a id='n14334' href='#n14334'>14334</a>
<a id='n14335' href='#n14335'>14335</a>
<a id='n14336' href='#n14336'>14336</a>
<a id='n14337' href='#n14337'>14337</a>
<a id='n14338' href='#n14338'>14338</a>
<a id='n14339' href='#n14339'>14339</a>
<a id='n14340' href='#n14340'>14340</a>
<a id='n14341' href='#n14341'>14341</a>
<a id='n14342' href='#n14342'>14342</a>
<a id='n14343' href='#n14343'>14343</a>
<a id='n14344' href='#n14344'>14344</a>
<a id='n14345' href='#n14345'>14345</a>
<a id='n14346' href='#n14346'>14346</a>
<a id='n14347' href='#n14347'>14347</a>
<a id='n14348' href='#n14348'>14348</a>
<a id='n14349' href='#n14349'>14349</a>
<a id='n14350' href='#n14350'>14350</a>
<a id='n14351' href='#n14351'>14351</a>
<a id='n14352' href='#n14352'>14352</a>
<a id='n14353' href='#n14353'>14353</a>
<a id='n14354' href='#n14354'>14354</a>
<a id='n14355' href='#n14355'>14355</a>
<a id='n14356' href='#n14356'>14356</a>
<a id='n14357' href='#n14357'>14357</a>
<a id='n14358' href='#n14358'>14358</a>
<a id='n14359' href='#n14359'>14359</a>
<a id='n14360' href='#n14360'>14360</a>
<a id='n14361' href='#n14361'>14361</a>
<a id='n14362' href='#n14362'>14362</a>
<a id='n14363' href='#n14363'>14363</a>
<a id='n14364' href='#n14364'>14364</a>
<a id='n14365' href='#n14365'>14365</a>
<a id='n14366' href='#n14366'>14366</a>
<a id='n14367' href='#n14367'>14367</a>
<a id='n14368' href='#n14368'>14368</a>
<a id='n14369' href='#n14369'>14369</a>
<a id='n14370' href='#n14370'>14370</a>
<a id='n14371' href='#n14371'>14371</a>
<a id='n14372' href='#n14372'>14372</a>
<a id='n14373' href='#n14373'>14373</a>
<a id='n14374' href='#n14374'>14374</a>
<a id='n14375' href='#n14375'>14375</a>
<a id='n14376' href='#n14376'>14376</a>
<a id='n14377' href='#n14377'>14377</a>
<a id='n14378' href='#n14378'>14378</a>
<a id='n14379' href='#n14379'>14379</a>
<a id='n14380' href='#n14380'>14380</a>
<a id='n14381' href='#n14381'>14381</a>
<a id='n14382' href='#n14382'>14382</a>
<a id='n14383' href='#n14383'>14383</a>
<a id='n14384' href='#n14384'>14384</a>
<a id='n14385' href='#n14385'>14385</a>
<a id='n14386' href='#n14386'>14386</a>
<a id='n14387' href='#n14387'>14387</a>
<a id='n14388' href='#n14388'>14388</a>
<a id='n14389' href='#n14389'>14389</a>
<a id='n14390' href='#n14390'>14390</a>
<a id='n14391' href='#n14391'>14391</a>
<a id='n14392' href='#n14392'>14392</a>
<a id='n14393' href='#n14393'>14393</a>
<a id='n14394' href='#n14394'>14394</a>
<a id='n14395' href='#n14395'>14395</a>
<a id='n14396' href='#n14396'>14396</a>
<a id='n14397' href='#n14397'>14397</a>
<a id='n14398' href='#n14398'>14398</a>
<a id='n14399' href='#n14399'>14399</a>
<a id='n14400' href='#n14400'>14400</a>
<a id='n14401' href='#n14401'>14401</a>
<a id='n14402' href='#n14402'>14402</a>
<a id='n14403' href='#n14403'>14403</a>
<a id='n14404' href='#n14404'>14404</a>
<a id='n14405' href='#n14405'>14405</a>
<a id='n14406' href='#n14406'>14406</a>
<a id='n14407' href='#n14407'>14407</a>
<a id='n14408' href='#n14408'>14408</a>
<a id='n14409' href='#n14409'>14409</a>
<a id='n14410' href='#n14410'>14410</a>
<a id='n14411' href='#n14411'>14411</a>
<a id='n14412' href='#n14412'>14412</a>
<a id='n14413' href='#n14413'>14413</a>
<a id='n14414' href='#n14414'>14414</a>
<a id='n14415' href='#n14415'>14415</a>
<a id='n14416' href='#n14416'>14416</a>
<a id='n14417' href='#n14417'>14417</a>
<a id='n14418' href='#n14418'>14418</a>
<a id='n14419' href='#n14419'>14419</a>
<a id='n14420' href='#n14420'>14420</a>
<a id='n14421' href='#n14421'>14421</a>
<a id='n14422' href='#n14422'>14422</a>
<a id='n14423' href='#n14423'>14423</a>
<a id='n14424' href='#n14424'>14424</a>
<a id='n14425' href='#n14425'>14425</a>
<a id='n14426' href='#n14426'>14426</a>
<a id='n14427' href='#n14427'>14427</a>
<a id='n14428' href='#n14428'>14428</a>
<a id='n14429' href='#n14429'>14429</a>
<a id='n14430' href='#n14430'>14430</a>
<a id='n14431' href='#n14431'>14431</a>
<a id='n14432' href='#n14432'>14432</a>
<a id='n14433' href='#n14433'>14433</a>
<a id='n14434' href='#n14434'>14434</a>
<a id='n14435' href='#n14435'>14435</a>
<a id='n14436' href='#n14436'>14436</a>
<a id='n14437' href='#n14437'>14437</a>
<a id='n14438' href='#n14438'>14438</a>
<a id='n14439' href='#n14439'>14439</a>
<a id='n14440' href='#n14440'>14440</a>
<a id='n14441' href='#n14441'>14441</a>
<a id='n14442' href='#n14442'>14442</a>
<a id='n14443' href='#n14443'>14443</a>
<a id='n14444' href='#n14444'>14444</a>
<a id='n14445' href='#n14445'>14445</a>
<a id='n14446' href='#n14446'>14446</a>
<a id='n14447' href='#n14447'>14447</a>
<a id='n14448' href='#n14448'>14448</a>
<a id='n14449' href='#n14449'>14449</a>
<a id='n14450' href='#n14450'>14450</a>
<a id='n14451' href='#n14451'>14451</a>
<a id='n14452' href='#n14452'>14452</a>
<a id='n14453' href='#n14453'>14453</a>
<a id='n14454' href='#n14454'>14454</a>
<a id='n14455' href='#n14455'>14455</a>
<a id='n14456' href='#n14456'>14456</a>
<a id='n14457' href='#n14457'>14457</a>
<a id='n14458' href='#n14458'>14458</a>
<a id='n14459' href='#n14459'>14459</a>
<a id='n14460' href='#n14460'>14460</a>
<a id='n14461' href='#n14461'>14461</a>
<a id='n14462' href='#n14462'>14462</a>
<a id='n14463' href='#n14463'>14463</a>
<a id='n14464' href='#n14464'>14464</a>
<a id='n14465' href='#n14465'>14465</a>
<a id='n14466' href='#n14466'>14466</a>
<a id='n14467' href='#n14467'>14467</a>
<a id='n14468' href='#n14468'>14468</a>
<a id='n14469' href='#n14469'>14469</a>
<a id='n14470' href='#n14470'>14470</a>
<a id='n14471' href='#n14471'>14471</a>
<a id='n14472' href='#n14472'>14472</a>
<a id='n14473' href='#n14473'>14473</a>
<a id='n14474' href='#n14474'>14474</a>
<a id='n14475' href='#n14475'>14475</a>
<a id='n14476' href='#n14476'>14476</a>
<a id='n14477' href='#n14477'>14477</a>
<a id='n14478' href='#n14478'>14478</a>
<a id='n14479' href='#n14479'>14479</a>
<a id='n14480' href='#n14480'>14480</a>
<a id='n14481' href='#n14481'>14481</a>
<a id='n14482' href='#n14482'>14482</a>
<a id='n14483' href='#n14483'>14483</a>
<a id='n14484' href='#n14484'>14484</a>
<a id='n14485' href='#n14485'>14485</a>
<a id='n14486' href='#n14486'>14486</a>
<a id='n14487' href='#n14487'>14487</a>
<a id='n14488' href='#n14488'>14488</a>
<a id='n14489' href='#n14489'>14489</a>
<a id='n14490' href='#n14490'>14490</a>
<a id='n14491' href='#n14491'>14491</a>
<a id='n14492' href='#n14492'>14492</a>
<a id='n14493' href='#n14493'>14493</a>
<a id='n14494' href='#n14494'>14494</a>
<a id='n14495' href='#n14495'>14495</a>
<a id='n14496' href='#n14496'>14496</a>
<a id='n14497' href='#n14497'>14497</a>
<a id='n14498' href='#n14498'>14498</a>
<a id='n14499' href='#n14499'>14499</a>
<a id='n14500' href='#n14500'>14500</a>
<a id='n14501' href='#n14501'>14501</a>
<a id='n14502' href='#n14502'>14502</a>
<a id='n14503' href='#n14503'>14503</a>
<a id='n14504' href='#n14504'>14504</a>
<a id='n14505' href='#n14505'>14505</a>
<a id='n14506' href='#n14506'>14506</a>
<a id='n14507' href='#n14507'>14507</a>
<a id='n14508' href='#n14508'>14508</a>
<a id='n14509' href='#n14509'>14509</a>
<a id='n14510' href='#n14510'>14510</a>
<a id='n14511' href='#n14511'>14511</a>
<a id='n14512' href='#n14512'>14512</a>
<a id='n14513' href='#n14513'>14513</a>
<a id='n14514' href='#n14514'>14514</a>
<a id='n14515' href='#n14515'>14515</a>
<a id='n14516' href='#n14516'>14516</a>
<a id='n14517' href='#n14517'>14517</a>
<a id='n14518' href='#n14518'>14518</a>
<a id='n14519' href='#n14519'>14519</a>
<a id='n14520' href='#n14520'>14520</a>
<a id='n14521' href='#n14521'>14521</a>
<a id='n14522' href='#n14522'>14522</a>
<a id='n14523' href='#n14523'>14523</a>
<a id='n14524' href='#n14524'>14524</a>
<a id='n14525' href='#n14525'>14525</a>
<a id='n14526' href='#n14526'>14526</a>
<a id='n14527' href='#n14527'>14527</a>
<a id='n14528' href='#n14528'>14528</a>
<a id='n14529' href='#n14529'>14529</a>
<a id='n14530' href='#n14530'>14530</a>
<a id='n14531' href='#n14531'>14531</a>
<a id='n14532' href='#n14532'>14532</a>
<a id='n14533' href='#n14533'>14533</a>
<a id='n14534' href='#n14534'>14534</a>
<a id='n14535' href='#n14535'>14535</a>
<a id='n14536' href='#n14536'>14536</a>
<a id='n14537' href='#n14537'>14537</a>
<a id='n14538' href='#n14538'>14538</a>
<a id='n14539' href='#n14539'>14539</a>
<a id='n14540' href='#n14540'>14540</a>
<a id='n14541' href='#n14541'>14541</a>
<a id='n14542' href='#n14542'>14542</a>
<a id='n14543' href='#n14543'>14543</a>
<a id='n14544' href='#n14544'>14544</a>
<a id='n14545' href='#n14545'>14545</a>
<a id='n14546' href='#n14546'>14546</a>
<a id='n14547' href='#n14547'>14547</a>
<a id='n14548' href='#n14548'>14548</a>
<a id='n14549' href='#n14549'>14549</a>
<a id='n14550' href='#n14550'>14550</a>
<a id='n14551' href='#n14551'>14551</a>
<a id='n14552' href='#n14552'>14552</a>
<a id='n14553' href='#n14553'>14553</a>
<a id='n14554' href='#n14554'>14554</a>
<a id='n14555' href='#n14555'>14555</a>
<a id='n14556' href='#n14556'>14556</a>
<a id='n14557' href='#n14557'>14557</a>
<a id='n14558' href='#n14558'>14558</a>
<a id='n14559' href='#n14559'>14559</a>
<a id='n14560' href='#n14560'>14560</a>
<a id='n14561' href='#n14561'>14561</a>
<a id='n14562' href='#n14562'>14562</a>
<a id='n14563' href='#n14563'>14563</a>
<a id='n14564' href='#n14564'>14564</a>
<a id='n14565' href='#n14565'>14565</a>
<a id='n14566' href='#n14566'>14566</a>
<a id='n14567' href='#n14567'>14567</a>
<a id='n14568' href='#n14568'>14568</a>
<a id='n14569' href='#n14569'>14569</a>
<a id='n14570' href='#n14570'>14570</a>
<a id='n14571' href='#n14571'>14571</a>
<a id='n14572' href='#n14572'>14572</a>
<a id='n14573' href='#n14573'>14573</a>
<a id='n14574' href='#n14574'>14574</a>
<a id='n14575' href='#n14575'>14575</a>
<a id='n14576' href='#n14576'>14576</a>
<a id='n14577' href='#n14577'>14577</a>
<a id='n14578' href='#n14578'>14578</a>
<a id='n14579' href='#n14579'>14579</a>
<a id='n14580' href='#n14580'>14580</a>
<a id='n14581' href='#n14581'>14581</a>
<a id='n14582' href='#n14582'>14582</a>
<a id='n14583' href='#n14583'>14583</a>
<a id='n14584' href='#n14584'>14584</a>
<a id='n14585' href='#n14585'>14585</a>
<a id='n14586' href='#n14586'>14586</a>
<a id='n14587' href='#n14587'>14587</a>
<a id='n14588' href='#n14588'>14588</a>
<a id='n14589' href='#n14589'>14589</a>
<a id='n14590' href='#n14590'>14590</a>
<a id='n14591' href='#n14591'>14591</a>
<a id='n14592' href='#n14592'>14592</a>
<a id='n14593' href='#n14593'>14593</a>
<a id='n14594' href='#n14594'>14594</a>
<a id='n14595' href='#n14595'>14595</a>
<a id='n14596' href='#n14596'>14596</a>
<a id='n14597' href='#n14597'>14597</a>
<a id='n14598' href='#n14598'>14598</a>
<a id='n14599' href='#n14599'>14599</a>
<a id='n14600' href='#n14600'>14600</a>
<a id='n14601' href='#n14601'>14601</a>
<a id='n14602' href='#n14602'>14602</a>
<a id='n14603' href='#n14603'>14603</a>
<a id='n14604' href='#n14604'>14604</a>
<a id='n14605' href='#n14605'>14605</a>
<a id='n14606' href='#n14606'>14606</a>
<a id='n14607' href='#n14607'>14607</a>
<a id='n14608' href='#n14608'>14608</a>
<a id='n14609' href='#n14609'>14609</a>
<a id='n14610' href='#n14610'>14610</a>
<a id='n14611' href='#n14611'>14611</a>
<a id='n14612' href='#n14612'>14612</a>
<a id='n14613' href='#n14613'>14613</a>
<a id='n14614' href='#n14614'>14614</a>
<a id='n14615' href='#n14615'>14615</a>
<a id='n14616' href='#n14616'>14616</a>
<a id='n14617' href='#n14617'>14617</a>
<a id='n14618' href='#n14618'>14618</a>
<a id='n14619' href='#n14619'>14619</a>
<a id='n14620' href='#n14620'>14620</a>
<a id='n14621' href='#n14621'>14621</a>
<a id='n14622' href='#n14622'>14622</a>
<a id='n14623' href='#n14623'>14623</a>
<a id='n14624' href='#n14624'>14624</a>
<a id='n14625' href='#n14625'>14625</a>
<a id='n14626' href='#n14626'>14626</a>
<a id='n14627' href='#n14627'>14627</a>
<a id='n14628' href='#n14628'>14628</a>
<a id='n14629' href='#n14629'>14629</a>
<a id='n14630' href='#n14630'>14630</a>
<a id='n14631' href='#n14631'>14631</a>
<a id='n14632' href='#n14632'>14632</a>
<a id='n14633' href='#n14633'>14633</a>
<a id='n14634' href='#n14634'>14634</a>
<a id='n14635' href='#n14635'>14635</a>
<a id='n14636' href='#n14636'>14636</a>
<a id='n14637' href='#n14637'>14637</a>
<a id='n14638' href='#n14638'>14638</a>
<a id='n14639' href='#n14639'>14639</a>
<a id='n14640' href='#n14640'>14640</a>
<a id='n14641' href='#n14641'>14641</a>
<a id='n14642' href='#n14642'>14642</a>
<a id='n14643' href='#n14643'>14643</a>
<a id='n14644' href='#n14644'>14644</a>
<a id='n14645' href='#n14645'>14645</a>
<a id='n14646' href='#n14646'>14646</a>
<a id='n14647' href='#n14647'>14647</a>
<a id='n14648' href='#n14648'>14648</a>
<a id='n14649' href='#n14649'>14649</a>
<a id='n14650' href='#n14650'>14650</a>
<a id='n14651' href='#n14651'>14651</a>
<a id='n14652' href='#n14652'>14652</a>
<a id='n14653' href='#n14653'>14653</a>
<a id='n14654' href='#n14654'>14654</a>
<a id='n14655' href='#n14655'>14655</a>
<a id='n14656' href='#n14656'>14656</a>
<a id='n14657' href='#n14657'>14657</a>
<a id='n14658' href='#n14658'>14658</a>
<a id='n14659' href='#n14659'>14659</a>
<a id='n14660' href='#n14660'>14660</a>
<a id='n14661' href='#n14661'>14661</a>
<a id='n14662' href='#n14662'>14662</a>
<a id='n14663' href='#n14663'>14663</a>
<a id='n14664' href='#n14664'>14664</a>
<a id='n14665' href='#n14665'>14665</a>
<a id='n14666' href='#n14666'>14666</a>
<a id='n14667' href='#n14667'>14667</a>
<a id='n14668' href='#n14668'>14668</a>
<a id='n14669' href='#n14669'>14669</a>
<a id='n14670' href='#n14670'>14670</a>
<a id='n14671' href='#n14671'>14671</a>
<a id='n14672' href='#n14672'>14672</a>
<a id='n14673' href='#n14673'>14673</a>
<a id='n14674' href='#n14674'>14674</a>
<a id='n14675' href='#n14675'>14675</a>
<a id='n14676' href='#n14676'>14676</a>
<a id='n14677' href='#n14677'>14677</a>
<a id='n14678' href='#n14678'>14678</a>
<a id='n14679' href='#n14679'>14679</a>
<a id='n14680' href='#n14680'>14680</a>
<a id='n14681' href='#n14681'>14681</a>
<a id='n14682' href='#n14682'>14682</a>
<a id='n14683' href='#n14683'>14683</a>
<a id='n14684' href='#n14684'>14684</a>
<a id='n14685' href='#n14685'>14685</a>
<a id='n14686' href='#n14686'>14686</a>
<a id='n14687' href='#n14687'>14687</a>
<a id='n14688' href='#n14688'>14688</a>
<a id='n14689' href='#n14689'>14689</a>
<a id='n14690' href='#n14690'>14690</a>
<a id='n14691' href='#n14691'>14691</a>
<a id='n14692' href='#n14692'>14692</a>
<a id='n14693' href='#n14693'>14693</a>
<a id='n14694' href='#n14694'>14694</a>
<a id='n14695' href='#n14695'>14695</a>
<a id='n14696' href='#n14696'>14696</a>
<a id='n14697' href='#n14697'>14697</a>
<a id='n14698' href='#n14698'>14698</a>
<a id='n14699' href='#n14699'>14699</a>
<a id='n14700' href='#n14700'>14700</a>
<a id='n14701' href='#n14701'>14701</a>
<a id='n14702' href='#n14702'>14702</a>
<a id='n14703' href='#n14703'>14703</a>
<a id='n14704' href='#n14704'>14704</a>
<a id='n14705' href='#n14705'>14705</a>
<a id='n14706' href='#n14706'>14706</a>
<a id='n14707' href='#n14707'>14707</a>
<a id='n14708' href='#n14708'>14708</a>
<a id='n14709' href='#n14709'>14709</a>
<a id='n14710' href='#n14710'>14710</a>
<a id='n14711' href='#n14711'>14711</a>
<a id='n14712' href='#n14712'>14712</a>
<a id='n14713' href='#n14713'>14713</a>
<a id='n14714' href='#n14714'>14714</a>
<a id='n14715' href='#n14715'>14715</a>
<a id='n14716' href='#n14716'>14716</a>
<a id='n14717' href='#n14717'>14717</a>
<a id='n14718' href='#n14718'>14718</a>
<a id='n14719' href='#n14719'>14719</a>
<a id='n14720' href='#n14720'>14720</a>
<a id='n14721' href='#n14721'>14721</a>
<a id='n14722' href='#n14722'>14722</a>
<a id='n14723' href='#n14723'>14723</a>
<a id='n14724' href='#n14724'>14724</a>
<a id='n14725' href='#n14725'>14725</a>
<a id='n14726' href='#n14726'>14726</a>
<a id='n14727' href='#n14727'>14727</a>
<a id='n14728' href='#n14728'>14728</a>
<a id='n14729' href='#n14729'>14729</a>
<a id='n14730' href='#n14730'>14730</a>
<a id='n14731' href='#n14731'>14731</a>
<a id='n14732' href='#n14732'>14732</a>
<a id='n14733' href='#n14733'>14733</a>
<a id='n14734' href='#n14734'>14734</a>
<a id='n14735' href='#n14735'>14735</a>
<a id='n14736' href='#n14736'>14736</a>
<a id='n14737' href='#n14737'>14737</a>
<a id='n14738' href='#n14738'>14738</a>
<a id='n14739' href='#n14739'>14739</a>
<a id='n14740' href='#n14740'>14740</a>
<a id='n14741' href='#n14741'>14741</a>
<a id='n14742' href='#n14742'>14742</a>
<a id='n14743' href='#n14743'>14743</a>
<a id='n14744' href='#n14744'>14744</a>
<a id='n14745' href='#n14745'>14745</a>
<a id='n14746' href='#n14746'>14746</a>
<a id='n14747' href='#n14747'>14747</a>
<a id='n14748' href='#n14748'>14748</a>
<a id='n14749' href='#n14749'>14749</a>
<a id='n14750' href='#n14750'>14750</a>
<a id='n14751' href='#n14751'>14751</a>
<a id='n14752' href='#n14752'>14752</a>
<a id='n14753' href='#n14753'>14753</a>
<a id='n14754' href='#n14754'>14754</a>
<a id='n14755' href='#n14755'>14755</a>
<a id='n14756' href='#n14756'>14756</a>
<a id='n14757' href='#n14757'>14757</a>
<a id='n14758' href='#n14758'>14758</a>
<a id='n14759' href='#n14759'>14759</a>
<a id='n14760' href='#n14760'>14760</a>
<a id='n14761' href='#n14761'>14761</a>
<a id='n14762' href='#n14762'>14762</a>
<a id='n14763' href='#n14763'>14763</a>
<a id='n14764' href='#n14764'>14764</a>
<a id='n14765' href='#n14765'>14765</a>
<a id='n14766' href='#n14766'>14766</a>
<a id='n14767' href='#n14767'>14767</a>
<a id='n14768' href='#n14768'>14768</a>
<a id='n14769' href='#n14769'>14769</a>
<a id='n14770' href='#n14770'>14770</a>
<a id='n14771' href='#n14771'>14771</a>
<a id='n14772' href='#n14772'>14772</a>
<a id='n14773' href='#n14773'>14773</a>
<a id='n14774' href='#n14774'>14774</a>
<a id='n14775' href='#n14775'>14775</a>
<a id='n14776' href='#n14776'>14776</a>
<a id='n14777' href='#n14777'>14777</a>
<a id='n14778' href='#n14778'>14778</a>
<a id='n14779' href='#n14779'>14779</a>
<a id='n14780' href='#n14780'>14780</a>
<a id='n14781' href='#n14781'>14781</a>
<a id='n14782' href='#n14782'>14782</a>
<a id='n14783' href='#n14783'>14783</a>
<a id='n14784' href='#n14784'>14784</a>
<a id='n14785' href='#n14785'>14785</a>
<a id='n14786' href='#n14786'>14786</a>
<a id='n14787' href='#n14787'>14787</a>
<a id='n14788' href='#n14788'>14788</a>
<a id='n14789' href='#n14789'>14789</a>
<a id='n14790' href='#n14790'>14790</a>
<a id='n14791' href='#n14791'>14791</a>
<a id='n14792' href='#n14792'>14792</a>
<a id='n14793' href='#n14793'>14793</a>
<a id='n14794' href='#n14794'>14794</a>
<a id='n14795' href='#n14795'>14795</a>
<a id='n14796' href='#n14796'>14796</a>
<a id='n14797' href='#n14797'>14797</a>
<a id='n14798' href='#n14798'>14798</a>
<a id='n14799' href='#n14799'>14799</a>
<a id='n14800' href='#n14800'>14800</a>
<a id='n14801' href='#n14801'>14801</a>
<a id='n14802' href='#n14802'>14802</a>
<a id='n14803' href='#n14803'>14803</a>
<a id='n14804' href='#n14804'>14804</a>
<a id='n14805' href='#n14805'>14805</a>
<a id='n14806' href='#n14806'>14806</a>
<a id='n14807' href='#n14807'>14807</a>
<a id='n14808' href='#n14808'>14808</a>
<a id='n14809' href='#n14809'>14809</a>
<a id='n14810' href='#n14810'>14810</a>
<a id='n14811' href='#n14811'>14811</a>
<a id='n14812' href='#n14812'>14812</a>
<a id='n14813' href='#n14813'>14813</a>
<a id='n14814' href='#n14814'>14814</a>
<a id='n14815' href='#n14815'>14815</a>
<a id='n14816' href='#n14816'>14816</a>
<a id='n14817' href='#n14817'>14817</a>
<a id='n14818' href='#n14818'>14818</a>
<a id='n14819' href='#n14819'>14819</a>
<a id='n14820' href='#n14820'>14820</a>
<a id='n14821' href='#n14821'>14821</a>
<a id='n14822' href='#n14822'>14822</a>
<a id='n14823' href='#n14823'>14823</a>
<a id='n14824' href='#n14824'>14824</a>
<a id='n14825' href='#n14825'>14825</a>
<a id='n14826' href='#n14826'>14826</a>
<a id='n14827' href='#n14827'>14827</a>
<a id='n14828' href='#n14828'>14828</a>
<a id='n14829' href='#n14829'>14829</a>
<a id='n14830' href='#n14830'>14830</a>
<a id='n14831' href='#n14831'>14831</a>
<a id='n14832' href='#n14832'>14832</a>
<a id='n14833' href='#n14833'>14833</a>
<a id='n14834' href='#n14834'>14834</a>
<a id='n14835' href='#n14835'>14835</a>
<a id='n14836' href='#n14836'>14836</a>
<a id='n14837' href='#n14837'>14837</a>
<a id='n14838' href='#n14838'>14838</a>
<a id='n14839' href='#n14839'>14839</a>
<a id='n14840' href='#n14840'>14840</a>
<a id='n14841' href='#n14841'>14841</a>
<a id='n14842' href='#n14842'>14842</a>
<a id='n14843' href='#n14843'>14843</a>
<a id='n14844' href='#n14844'>14844</a>
<a id='n14845' href='#n14845'>14845</a>
<a id='n14846' href='#n14846'>14846</a>
<a id='n14847' href='#n14847'>14847</a>
<a id='n14848' href='#n14848'>14848</a>
<a id='n14849' href='#n14849'>14849</a>
<a id='n14850' href='#n14850'>14850</a>
<a id='n14851' href='#n14851'>14851</a>
<a id='n14852' href='#n14852'>14852</a>
<a id='n14853' href='#n14853'>14853</a>
<a id='n14854' href='#n14854'>14854</a>
<a id='n14855' href='#n14855'>14855</a>
<a id='n14856' href='#n14856'>14856</a>
<a id='n14857' href='#n14857'>14857</a>
<a id='n14858' href='#n14858'>14858</a>
<a id='n14859' href='#n14859'>14859</a>
<a id='n14860' href='#n14860'>14860</a>
<a id='n14861' href='#n14861'>14861</a>
<a id='n14862' href='#n14862'>14862</a>
<a id='n14863' href='#n14863'>14863</a>
<a id='n14864' href='#n14864'>14864</a>
<a id='n14865' href='#n14865'>14865</a>
<a id='n14866' href='#n14866'>14866</a>
<a id='n14867' href='#n14867'>14867</a>
<a id='n14868' href='#n14868'>14868</a>
<a id='n14869' href='#n14869'>14869</a>
<a id='n14870' href='#n14870'>14870</a>
<a id='n14871' href='#n14871'>14871</a>
<a id='n14872' href='#n14872'>14872</a>
<a id='n14873' href='#n14873'>14873</a>
<a id='n14874' href='#n14874'>14874</a>
<a id='n14875' href='#n14875'>14875</a>
<a id='n14876' href='#n14876'>14876</a>
<a id='n14877' href='#n14877'>14877</a>
<a id='n14878' href='#n14878'>14878</a>
<a id='n14879' href='#n14879'>14879</a>
<a id='n14880' href='#n14880'>14880</a>
<a id='n14881' href='#n14881'>14881</a>
<a id='n14882' href='#n14882'>14882</a>
<a id='n14883' href='#n14883'>14883</a>
<a id='n14884' href='#n14884'>14884</a>
<a id='n14885' href='#n14885'>14885</a>
<a id='n14886' href='#n14886'>14886</a>
<a id='n14887' href='#n14887'>14887</a>
<a id='n14888' href='#n14888'>14888</a>
<a id='n14889' href='#n14889'>14889</a>
<a id='n14890' href='#n14890'>14890</a>
<a id='n14891' href='#n14891'>14891</a>
<a id='n14892' href='#n14892'>14892</a>
<a id='n14893' href='#n14893'>14893</a>
<a id='n14894' href='#n14894'>14894</a>
<a id='n14895' href='#n14895'>14895</a>
<a id='n14896' href='#n14896'>14896</a>
<a id='n14897' href='#n14897'>14897</a>
<a id='n14898' href='#n14898'>14898</a>
<a id='n14899' href='#n14899'>14899</a>
<a id='n14900' href='#n14900'>14900</a>
<a id='n14901' href='#n14901'>14901</a>
<a id='n14902' href='#n14902'>14902</a>
<a id='n14903' href='#n14903'>14903</a>
<a id='n14904' href='#n14904'>14904</a>
<a id='n14905' href='#n14905'>14905</a>
<a id='n14906' href='#n14906'>14906</a>
<a id='n14907' href='#n14907'>14907</a>
<a id='n14908' href='#n14908'>14908</a>
<a id='n14909' href='#n14909'>14909</a>
<a id='n14910' href='#n14910'>14910</a>
<a id='n14911' href='#n14911'>14911</a>
<a id='n14912' href='#n14912'>14912</a>
<a id='n14913' href='#n14913'>14913</a>
<a id='n14914' href='#n14914'>14914</a>
<a id='n14915' href='#n14915'>14915</a>
<a id='n14916' href='#n14916'>14916</a>
<a id='n14917' href='#n14917'>14917</a>
<a id='n14918' href='#n14918'>14918</a>
<a id='n14919' href='#n14919'>14919</a>
<a id='n14920' href='#n14920'>14920</a>
<a id='n14921' href='#n14921'>14921</a>
<a id='n14922' href='#n14922'>14922</a>
<a id='n14923' href='#n14923'>14923</a>
<a id='n14924' href='#n14924'>14924</a>
<a id='n14925' href='#n14925'>14925</a>
<a id='n14926' href='#n14926'>14926</a>
<a id='n14927' href='#n14927'>14927</a>
<a id='n14928' href='#n14928'>14928</a>
<a id='n14929' href='#n14929'>14929</a>
<a id='n14930' href='#n14930'>14930</a>
<a id='n14931' href='#n14931'>14931</a>
<a id='n14932' href='#n14932'>14932</a>
<a id='n14933' href='#n14933'>14933</a>
<a id='n14934' href='#n14934'>14934</a>
<a id='n14935' href='#n14935'>14935</a>
<a id='n14936' href='#n14936'>14936</a>
<a id='n14937' href='#n14937'>14937</a>
<a id='n14938' href='#n14938'>14938</a>
<a id='n14939' href='#n14939'>14939</a>
<a id='n14940' href='#n14940'>14940</a>
<a id='n14941' href='#n14941'>14941</a>
<a id='n14942' href='#n14942'>14942</a>
<a id='n14943' href='#n14943'>14943</a>
<a id='n14944' href='#n14944'>14944</a>
<a id='n14945' href='#n14945'>14945</a>
<a id='n14946' href='#n14946'>14946</a>
<a id='n14947' href='#n14947'>14947</a>
<a id='n14948' href='#n14948'>14948</a>
<a id='n14949' href='#n14949'>14949</a>
<a id='n14950' href='#n14950'>14950</a>
<a id='n14951' href='#n14951'>14951</a>
<a id='n14952' href='#n14952'>14952</a>
<a id='n14953' href='#n14953'>14953</a>
<a id='n14954' href='#n14954'>14954</a>
<a id='n14955' href='#n14955'>14955</a>
<a id='n14956' href='#n14956'>14956</a>
<a id='n14957' href='#n14957'>14957</a>
<a id='n14958' href='#n14958'>14958</a>
<a id='n14959' href='#n14959'>14959</a>
<a id='n14960' href='#n14960'>14960</a>
<a id='n14961' href='#n14961'>14961</a>
<a id='n14962' href='#n14962'>14962</a>
<a id='n14963' href='#n14963'>14963</a>
<a id='n14964' href='#n14964'>14964</a>
<a id='n14965' href='#n14965'>14965</a>
<a id='n14966' href='#n14966'>14966</a>
<a id='n14967' href='#n14967'>14967</a>
<a id='n14968' href='#n14968'>14968</a>
<a id='n14969' href='#n14969'>14969</a>
<a id='n14970' href='#n14970'>14970</a>
<a id='n14971' href='#n14971'>14971</a>
<a id='n14972' href='#n14972'>14972</a>
<a id='n14973' href='#n14973'>14973</a>
<a id='n14974' href='#n14974'>14974</a>
<a id='n14975' href='#n14975'>14975</a>
<a id='n14976' href='#n14976'>14976</a>
<a id='n14977' href='#n14977'>14977</a>
<a id='n14978' href='#n14978'>14978</a>
<a id='n14979' href='#n14979'>14979</a>
<a id='n14980' href='#n14980'>14980</a>
<a id='n14981' href='#n14981'>14981</a>
<a id='n14982' href='#n14982'>14982</a>
<a id='n14983' href='#n14983'>14983</a>
<a id='n14984' href='#n14984'>14984</a>
<a id='n14985' href='#n14985'>14985</a>
<a id='n14986' href='#n14986'>14986</a>
<a id='n14987' href='#n14987'>14987</a>
<a id='n14988' href='#n14988'>14988</a>
<a id='n14989' href='#n14989'>14989</a>
<a id='n14990' href='#n14990'>14990</a>
<a id='n14991' href='#n14991'>14991</a>
<a id='n14992' href='#n14992'>14992</a>
<a id='n14993' href='#n14993'>14993</a>
<a id='n14994' href='#n14994'>14994</a>
<a id='n14995' href='#n14995'>14995</a>
<a id='n14996' href='#n14996'>14996</a>
<a id='n14997' href='#n14997'>14997</a>
<a id='n14998' href='#n14998'>14998</a>
<a id='n14999' href='#n14999'>14999</a>
<a id='n15000' href='#n15000'>15000</a>
<a id='n15001' href='#n15001'>15001</a>
<a id='n15002' href='#n15002'>15002</a>
<a id='n15003' href='#n15003'>15003</a>
<a id='n15004' href='#n15004'>15004</a>
<a id='n15005' href='#n15005'>15005</a>
<a id='n15006' href='#n15006'>15006</a>
<a id='n15007' href='#n15007'>15007</a>
<a id='n15008' href='#n15008'>15008</a>
<a id='n15009' href='#n15009'>15009</a>
<a id='n15010' href='#n15010'>15010</a>
<a id='n15011' href='#n15011'>15011</a>
<a id='n15012' href='#n15012'>15012</a>
<a id='n15013' href='#n15013'>15013</a>
<a id='n15014' href='#n15014'>15014</a>
<a id='n15015' href='#n15015'>15015</a>
<a id='n15016' href='#n15016'>15016</a>
<a id='n15017' href='#n15017'>15017</a>
<a id='n15018' href='#n15018'>15018</a>
<a id='n15019' href='#n15019'>15019</a>
<a id='n15020' href='#n15020'>15020</a>
<a id='n15021' href='#n15021'>15021</a>
<a id='n15022' href='#n15022'>15022</a>
<a id='n15023' href='#n15023'>15023</a>
<a id='n15024' href='#n15024'>15024</a>
<a id='n15025' href='#n15025'>15025</a>
<a id='n15026' href='#n15026'>15026</a>
<a id='n15027' href='#n15027'>15027</a>
<a id='n15028' href='#n15028'>15028</a>
<a id='n15029' href='#n15029'>15029</a>
<a id='n15030' href='#n15030'>15030</a>
<a id='n15031' href='#n15031'>15031</a>
<a id='n15032' href='#n15032'>15032</a>
<a id='n15033' href='#n15033'>15033</a>
<a id='n15034' href='#n15034'>15034</a>
<a id='n15035' href='#n15035'>15035</a>
<a id='n15036' href='#n15036'>15036</a>
<a id='n15037' href='#n15037'>15037</a>
<a id='n15038' href='#n15038'>15038</a>
<a id='n15039' href='#n15039'>15039</a>
<a id='n15040' href='#n15040'>15040</a>
<a id='n15041' href='#n15041'>15041</a>
<a id='n15042' href='#n15042'>15042</a>
<a id='n15043' href='#n15043'>15043</a>
<a id='n15044' href='#n15044'>15044</a>
<a id='n15045' href='#n15045'>15045</a>
<a id='n15046' href='#n15046'>15046</a>
<a id='n15047' href='#n15047'>15047</a>
<a id='n15048' href='#n15048'>15048</a>
<a id='n15049' href='#n15049'>15049</a>
<a id='n15050' href='#n15050'>15050</a>
<a id='n15051' href='#n15051'>15051</a>
<a id='n15052' href='#n15052'>15052</a>
<a id='n15053' href='#n15053'>15053</a>
<a id='n15054' href='#n15054'>15054</a>
<a id='n15055' href='#n15055'>15055</a>
<a id='n15056' href='#n15056'>15056</a>
<a id='n15057' href='#n15057'>15057</a>
<a id='n15058' href='#n15058'>15058</a>
<a id='n15059' href='#n15059'>15059</a>
<a id='n15060' href='#n15060'>15060</a>
<a id='n15061' href='#n15061'>15061</a>
<a id='n15062' href='#n15062'>15062</a>
<a id='n15063' href='#n15063'>15063</a>
<a id='n15064' href='#n15064'>15064</a>
<a id='n15065' href='#n15065'>15065</a>
<a id='n15066' href='#n15066'>15066</a>
<a id='n15067' href='#n15067'>15067</a>
<a id='n15068' href='#n15068'>15068</a>
<a id='n15069' href='#n15069'>15069</a>
<a id='n15070' href='#n15070'>15070</a>
<a id='n15071' href='#n15071'>15071</a>
<a id='n15072' href='#n15072'>15072</a>
<a id='n15073' href='#n15073'>15073</a>
<a id='n15074' href='#n15074'>15074</a>
<a id='n15075' href='#n15075'>15075</a>
<a id='n15076' href='#n15076'>15076</a>
<a id='n15077' href='#n15077'>15077</a>
<a id='n15078' href='#n15078'>15078</a>
<a id='n15079' href='#n15079'>15079</a>
<a id='n15080' href='#n15080'>15080</a>
<a id='n15081' href='#n15081'>15081</a>
<a id='n15082' href='#n15082'>15082</a>
<a id='n15083' href='#n15083'>15083</a>
<a id='n15084' href='#n15084'>15084</a>
<a id='n15085' href='#n15085'>15085</a>
<a id='n15086' href='#n15086'>15086</a>
<a id='n15087' href='#n15087'>15087</a>
<a id='n15088' href='#n15088'>15088</a>
<a id='n15089' href='#n15089'>15089</a>
<a id='n15090' href='#n15090'>15090</a>
<a id='n15091' href='#n15091'>15091</a>
<a id='n15092' href='#n15092'>15092</a>
<a id='n15093' href='#n15093'>15093</a>
<a id='n15094' href='#n15094'>15094</a>
<a id='n15095' href='#n15095'>15095</a>
<a id='n15096' href='#n15096'>15096</a>
<a id='n15097' href='#n15097'>15097</a>
<a id='n15098' href='#n15098'>15098</a>
<a id='n15099' href='#n15099'>15099</a>
<a id='n15100' href='#n15100'>15100</a>
<a id='n15101' href='#n15101'>15101</a>
<a id='n15102' href='#n15102'>15102</a>
<a id='n15103' href='#n15103'>15103</a>
<a id='n15104' href='#n15104'>15104</a>
<a id='n15105' href='#n15105'>15105</a>
<a id='n15106' href='#n15106'>15106</a>
<a id='n15107' href='#n15107'>15107</a>
<a id='n15108' href='#n15108'>15108</a>
<a id='n15109' href='#n15109'>15109</a>
<a id='n15110' href='#n15110'>15110</a>
<a id='n15111' href='#n15111'>15111</a>
<a id='n15112' href='#n15112'>15112</a>
<a id='n15113' href='#n15113'>15113</a>
<a id='n15114' href='#n15114'>15114</a>
<a id='n15115' href='#n15115'>15115</a>
<a id='n15116' href='#n15116'>15116</a>
<a id='n15117' href='#n15117'>15117</a>
<a id='n15118' href='#n15118'>15118</a>
<a id='n15119' href='#n15119'>15119</a>
<a id='n15120' href='#n15120'>15120</a>
<a id='n15121' href='#n15121'>15121</a>
<a id='n15122' href='#n15122'>15122</a>
<a id='n15123' href='#n15123'>15123</a>
<a id='n15124' href='#n15124'>15124</a>
<a id='n15125' href='#n15125'>15125</a>
<a id='n15126' href='#n15126'>15126</a>
<a id='n15127' href='#n15127'>15127</a>
<a id='n15128' href='#n15128'>15128</a>
<a id='n15129' href='#n15129'>15129</a>
<a id='n15130' href='#n15130'>15130</a>
<a id='n15131' href='#n15131'>15131</a>
<a id='n15132' href='#n15132'>15132</a>
<a id='n15133' href='#n15133'>15133</a>
<a id='n15134' href='#n15134'>15134</a>
<a id='n15135' href='#n15135'>15135</a>
<a id='n15136' href='#n15136'>15136</a>
<a id='n15137' href='#n15137'>15137</a>
<a id='n15138' href='#n15138'>15138</a>
<a id='n15139' href='#n15139'>15139</a>
<a id='n15140' href='#n15140'>15140</a>
<a id='n15141' href='#n15141'>15141</a>
<a id='n15142' href='#n15142'>15142</a>
<a id='n15143' href='#n15143'>15143</a>
<a id='n15144' href='#n15144'>15144</a>
<a id='n15145' href='#n15145'>15145</a>
<a id='n15146' href='#n15146'>15146</a>
<a id='n15147' href='#n15147'>15147</a>
<a id='n15148' href='#n15148'>15148</a>
<a id='n15149' href='#n15149'>15149</a>
<a id='n15150' href='#n15150'>15150</a>
<a id='n15151' href='#n15151'>15151</a>
<a id='n15152' href='#n15152'>15152</a>
<a id='n15153' href='#n15153'>15153</a>
<a id='n15154' href='#n15154'>15154</a>
<a id='n15155' href='#n15155'>15155</a>
<a id='n15156' href='#n15156'>15156</a>
<a id='n15157' href='#n15157'>15157</a>
<a id='n15158' href='#n15158'>15158</a>
<a id='n15159' href='#n15159'>15159</a>
<a id='n15160' href='#n15160'>15160</a>
<a id='n15161' href='#n15161'>15161</a>
<a id='n15162' href='#n15162'>15162</a>
<a id='n15163' href='#n15163'>15163</a>
<a id='n15164' href='#n15164'>15164</a>
<a id='n15165' href='#n15165'>15165</a>
<a id='n15166' href='#n15166'>15166</a>
<a id='n15167' href='#n15167'>15167</a>
<a id='n15168' href='#n15168'>15168</a>
<a id='n15169' href='#n15169'>15169</a>
<a id='n15170' href='#n15170'>15170</a>
<a id='n15171' href='#n15171'>15171</a>
<a id='n15172' href='#n15172'>15172</a>
<a id='n15173' href='#n15173'>15173</a>
<a id='n15174' href='#n15174'>15174</a>
<a id='n15175' href='#n15175'>15175</a>
<a id='n15176' href='#n15176'>15176</a>
<a id='n15177' href='#n15177'>15177</a>
<a id='n15178' href='#n15178'>15178</a>
<a id='n15179' href='#n15179'>15179</a>
<a id='n15180' href='#n15180'>15180</a>
<a id='n15181' href='#n15181'>15181</a>
<a id='n15182' href='#n15182'>15182</a>
<a id='n15183' href='#n15183'>15183</a>
<a id='n15184' href='#n15184'>15184</a>
<a id='n15185' href='#n15185'>15185</a>
<a id='n15186' href='#n15186'>15186</a>
<a id='n15187' href='#n15187'>15187</a>
<a id='n15188' href='#n15188'>15188</a>
<a id='n15189' href='#n15189'>15189</a>
<a id='n15190' href='#n15190'>15190</a>
<a id='n15191' href='#n15191'>15191</a>
<a id='n15192' href='#n15192'>15192</a>
<a id='n15193' href='#n15193'>15193</a>
<a id='n15194' href='#n15194'>15194</a>
<a id='n15195' href='#n15195'>15195</a>
<a id='n15196' href='#n15196'>15196</a>
<a id='n15197' href='#n15197'>15197</a>
<a id='n15198' href='#n15198'>15198</a>
<a id='n15199' href='#n15199'>15199</a>
<a id='n15200' href='#n15200'>15200</a>
<a id='n15201' href='#n15201'>15201</a>
<a id='n15202' href='#n15202'>15202</a>
<a id='n15203' href='#n15203'>15203</a>
<a id='n15204' href='#n15204'>15204</a>
<a id='n15205' href='#n15205'>15205</a>
<a id='n15206' href='#n15206'>15206</a>
<a id='n15207' href='#n15207'>15207</a>
<a id='n15208' href='#n15208'>15208</a>
<a id='n15209' href='#n15209'>15209</a>
<a id='n15210' href='#n15210'>15210</a>
<a id='n15211' href='#n15211'>15211</a>
<a id='n15212' href='#n15212'>15212</a>
<a id='n15213' href='#n15213'>15213</a>
<a id='n15214' href='#n15214'>15214</a>
<a id='n15215' href='#n15215'>15215</a>
<a id='n15216' href='#n15216'>15216</a>
<a id='n15217' href='#n15217'>15217</a>
<a id='n15218' href='#n15218'>15218</a>
<a id='n15219' href='#n15219'>15219</a>
<a id='n15220' href='#n15220'>15220</a>
<a id='n15221' href='#n15221'>15221</a>
<a id='n15222' href='#n15222'>15222</a>
<a id='n15223' href='#n15223'>15223</a>
<a id='n15224' href='#n15224'>15224</a>
<a id='n15225' href='#n15225'>15225</a>
<a id='n15226' href='#n15226'>15226</a>
<a id='n15227' href='#n15227'>15227</a>
<a id='n15228' href='#n15228'>15228</a>
<a id='n15229' href='#n15229'>15229</a>
<a id='n15230' href='#n15230'>15230</a>
<a id='n15231' href='#n15231'>15231</a>
<a id='n15232' href='#n15232'>15232</a>
<a id='n15233' href='#n15233'>15233</a>
<a id='n15234' href='#n15234'>15234</a>
<a id='n15235' href='#n15235'>15235</a>
<a id='n15236' href='#n15236'>15236</a>
<a id='n15237' href='#n15237'>15237</a>
<a id='n15238' href='#n15238'>15238</a>
<a id='n15239' href='#n15239'>15239</a>
<a id='n15240' href='#n15240'>15240</a>
<a id='n15241' href='#n15241'>15241</a>
<a id='n15242' href='#n15242'>15242</a>
<a id='n15243' href='#n15243'>15243</a>
<a id='n15244' href='#n15244'>15244</a>
<a id='n15245' href='#n15245'>15245</a>
<a id='n15246' href='#n15246'>15246</a>
<a id='n15247' href='#n15247'>15247</a>
<a id='n15248' href='#n15248'>15248</a>
<a id='n15249' href='#n15249'>15249</a>
<a id='n15250' href='#n15250'>15250</a>
<a id='n15251' href='#n15251'>15251</a>
<a id='n15252' href='#n15252'>15252</a>
<a id='n15253' href='#n15253'>15253</a>
<a id='n15254' href='#n15254'>15254</a>
<a id='n15255' href='#n15255'>15255</a>
<a id='n15256' href='#n15256'>15256</a>
<a id='n15257' href='#n15257'>15257</a>
<a id='n15258' href='#n15258'>15258</a>
<a id='n15259' href='#n15259'>15259</a>
<a id='n15260' href='#n15260'>15260</a>
<a id='n15261' href='#n15261'>15261</a>
<a id='n15262' href='#n15262'>15262</a>
<a id='n15263' href='#n15263'>15263</a>
<a id='n15264' href='#n15264'>15264</a>
<a id='n15265' href='#n15265'>15265</a>
<a id='n15266' href='#n15266'>15266</a>
<a id='n15267' href='#n15267'>15267</a>
<a id='n15268' href='#n15268'>15268</a>
<a id='n15269' href='#n15269'>15269</a>
<a id='n15270' href='#n15270'>15270</a>
<a id='n15271' href='#n15271'>15271</a>
<a id='n15272' href='#n15272'>15272</a>
<a id='n15273' href='#n15273'>15273</a>
<a id='n15274' href='#n15274'>15274</a>
<a id='n15275' href='#n15275'>15275</a>
<a id='n15276' href='#n15276'>15276</a>
<a id='n15277' href='#n15277'>15277</a>
<a id='n15278' href='#n15278'>15278</a>
<a id='n15279' href='#n15279'>15279</a>
<a id='n15280' href='#n15280'>15280</a>
<a id='n15281' href='#n15281'>15281</a>
<a id='n15282' href='#n15282'>15282</a>
<a id='n15283' href='#n15283'>15283</a>
<a id='n15284' href='#n15284'>15284</a>
<a id='n15285' href='#n15285'>15285</a>
<a id='n15286' href='#n15286'>15286</a>
<a id='n15287' href='#n15287'>15287</a>
<a id='n15288' href='#n15288'>15288</a>
<a id='n15289' href='#n15289'>15289</a>
<a id='n15290' href='#n15290'>15290</a>
<a id='n15291' href='#n15291'>15291</a>
<a id='n15292' href='#n15292'>15292</a>
<a id='n15293' href='#n15293'>15293</a>
<a id='n15294' href='#n15294'>15294</a>
<a id='n15295' href='#n15295'>15295</a>
<a id='n15296' href='#n15296'>15296</a>
<a id='n15297' href='#n15297'>15297</a>
<a id='n15298' href='#n15298'>15298</a>
<a id='n15299' href='#n15299'>15299</a>
<a id='n15300' href='#n15300'>15300</a>
<a id='n15301' href='#n15301'>15301</a>
<a id='n15302' href='#n15302'>15302</a>
<a id='n15303' href='#n15303'>15303</a>
<a id='n15304' href='#n15304'>15304</a>
<a id='n15305' href='#n15305'>15305</a>
<a id='n15306' href='#n15306'>15306</a>
<a id='n15307' href='#n15307'>15307</a>
<a id='n15308' href='#n15308'>15308</a>
<a id='n15309' href='#n15309'>15309</a>
<a id='n15310' href='#n15310'>15310</a>
<a id='n15311' href='#n15311'>15311</a>
<a id='n15312' href='#n15312'>15312</a>
<a id='n15313' href='#n15313'>15313</a>
<a id='n15314' href='#n15314'>15314</a>
<a id='n15315' href='#n15315'>15315</a>
<a id='n15316' href='#n15316'>15316</a>
<a id='n15317' href='#n15317'>15317</a>
<a id='n15318' href='#n15318'>15318</a>
<a id='n15319' href='#n15319'>15319</a>
<a id='n15320' href='#n15320'>15320</a>
<a id='n15321' href='#n15321'>15321</a>
<a id='n15322' href='#n15322'>15322</a>
<a id='n15323' href='#n15323'>15323</a>
<a id='n15324' href='#n15324'>15324</a>
<a id='n15325' href='#n15325'>15325</a>
<a id='n15326' href='#n15326'>15326</a>
<a id='n15327' href='#n15327'>15327</a>
<a id='n15328' href='#n15328'>15328</a>
<a id='n15329' href='#n15329'>15329</a>
<a id='n15330' href='#n15330'>15330</a>
<a id='n15331' href='#n15331'>15331</a>
<a id='n15332' href='#n15332'>15332</a>
<a id='n15333' href='#n15333'>15333</a>
<a id='n15334' href='#n15334'>15334</a>
<a id='n15335' href='#n15335'>15335</a>
<a id='n15336' href='#n15336'>15336</a>
<a id='n15337' href='#n15337'>15337</a>
<a id='n15338' href='#n15338'>15338</a>
<a id='n15339' href='#n15339'>15339</a>
<a id='n15340' href='#n15340'>15340</a>
<a id='n15341' href='#n15341'>15341</a>
<a id='n15342' href='#n15342'>15342</a>
<a id='n15343' href='#n15343'>15343</a>
<a id='n15344' href='#n15344'>15344</a>
<a id='n15345' href='#n15345'>15345</a>
<a id='n15346' href='#n15346'>15346</a>
<a id='n15347' href='#n15347'>15347</a>
<a id='n15348' href='#n15348'>15348</a>
<a id='n15349' href='#n15349'>15349</a>
<a id='n15350' href='#n15350'>15350</a>
<a id='n15351' href='#n15351'>15351</a>
<a id='n15352' href='#n15352'>15352</a>
<a id='n15353' href='#n15353'>15353</a>
<a id='n15354' href='#n15354'>15354</a>
<a id='n15355' href='#n15355'>15355</a>
<a id='n15356' href='#n15356'>15356</a>
<a id='n15357' href='#n15357'>15357</a>
<a id='n15358' href='#n15358'>15358</a>
<a id='n15359' href='#n15359'>15359</a>
<a id='n15360' href='#n15360'>15360</a>
<a id='n15361' href='#n15361'>15361</a>
<a id='n15362' href='#n15362'>15362</a>
<a id='n15363' href='#n15363'>15363</a>
<a id='n15364' href='#n15364'>15364</a>
<a id='n15365' href='#n15365'>15365</a>
<a id='n15366' href='#n15366'>15366</a>
<a id='n15367' href='#n15367'>15367</a>
<a id='n15368' href='#n15368'>15368</a>
<a id='n15369' href='#n15369'>15369</a>
<a id='n15370' href='#n15370'>15370</a>
<a id='n15371' href='#n15371'>15371</a>
<a id='n15372' href='#n15372'>15372</a>
<a id='n15373' href='#n15373'>15373</a>
<a id='n15374' href='#n15374'>15374</a>
<a id='n15375' href='#n15375'>15375</a>
<a id='n15376' href='#n15376'>15376</a>
<a id='n15377' href='#n15377'>15377</a>
<a id='n15378' href='#n15378'>15378</a>
<a id='n15379' href='#n15379'>15379</a>
<a id='n15380' href='#n15380'>15380</a>
<a id='n15381' href='#n15381'>15381</a>
<a id='n15382' href='#n15382'>15382</a>
<a id='n15383' href='#n15383'>15383</a>
<a id='n15384' href='#n15384'>15384</a>
<a id='n15385' href='#n15385'>15385</a>
<a id='n15386' href='#n15386'>15386</a>
<a id='n15387' href='#n15387'>15387</a>
<a id='n15388' href='#n15388'>15388</a>
<a id='n15389' href='#n15389'>15389</a>
<a id='n15390' href='#n15390'>15390</a>
<a id='n15391' href='#n15391'>15391</a>
<a id='n15392' href='#n15392'>15392</a>
<a id='n15393' href='#n15393'>15393</a>
<a id='n15394' href='#n15394'>15394</a>
<a id='n15395' href='#n15395'>15395</a>
<a id='n15396' href='#n15396'>15396</a>
<a id='n15397' href='#n15397'>15397</a>
<a id='n15398' href='#n15398'>15398</a>
<a id='n15399' href='#n15399'>15399</a>
<a id='n15400' href='#n15400'>15400</a>
<a id='n15401' href='#n15401'>15401</a>
<a id='n15402' href='#n15402'>15402</a>
<a id='n15403' href='#n15403'>15403</a>
<a id='n15404' href='#n15404'>15404</a>
<a id='n15405' href='#n15405'>15405</a>
<a id='n15406' href='#n15406'>15406</a>
<a id='n15407' href='#n15407'>15407</a>
<a id='n15408' href='#n15408'>15408</a>
<a id='n15409' href='#n15409'>15409</a>
<a id='n15410' href='#n15410'>15410</a>
<a id='n15411' href='#n15411'>15411</a>
<a id='n15412' href='#n15412'>15412</a>
<a id='n15413' href='#n15413'>15413</a>
<a id='n15414' href='#n15414'>15414</a>
<a id='n15415' href='#n15415'>15415</a>
<a id='n15416' href='#n15416'>15416</a>
<a id='n15417' href='#n15417'>15417</a>
<a id='n15418' href='#n15418'>15418</a>
<a id='n15419' href='#n15419'>15419</a>
<a id='n15420' href='#n15420'>15420</a>
<a id='n15421' href='#n15421'>15421</a>
<a id='n15422' href='#n15422'>15422</a>
<a id='n15423' href='#n15423'>15423</a>
<a id='n15424' href='#n15424'>15424</a>
<a id='n15425' href='#n15425'>15425</a>
<a id='n15426' href='#n15426'>15426</a>
<a id='n15427' href='#n15427'>15427</a>
<a id='n15428' href='#n15428'>15428</a>
<a id='n15429' href='#n15429'>15429</a>
<a id='n15430' href='#n15430'>15430</a>
<a id='n15431' href='#n15431'>15431</a>
<a id='n15432' href='#n15432'>15432</a>
<a id='n15433' href='#n15433'>15433</a>
<a id='n15434' href='#n15434'>15434</a>
<a id='n15435' href='#n15435'>15435</a>
<a id='n15436' href='#n15436'>15436</a>
<a id='n15437' href='#n15437'>15437</a>
<a id='n15438' href='#n15438'>15438</a>
<a id='n15439' href='#n15439'>15439</a>
<a id='n15440' href='#n15440'>15440</a>
<a id='n15441' href='#n15441'>15441</a>
<a id='n15442' href='#n15442'>15442</a>
<a id='n15443' href='#n15443'>15443</a>
<a id='n15444' href='#n15444'>15444</a>
<a id='n15445' href='#n15445'>15445</a>
<a id='n15446' href='#n15446'>15446</a>
<a id='n15447' href='#n15447'>15447</a>
<a id='n15448' href='#n15448'>15448</a>
<a id='n15449' href='#n15449'>15449</a>
<a id='n15450' href='#n15450'>15450</a>
<a id='n15451' href='#n15451'>15451</a>
<a id='n15452' href='#n15452'>15452</a>
<a id='n15453' href='#n15453'>15453</a>
<a id='n15454' href='#n15454'>15454</a>
<a id='n15455' href='#n15455'>15455</a>
<a id='n15456' href='#n15456'>15456</a>
<a id='n15457' href='#n15457'>15457</a>
<a id='n15458' href='#n15458'>15458</a>
<a id='n15459' href='#n15459'>15459</a>
<a id='n15460' href='#n15460'>15460</a>
<a id='n15461' href='#n15461'>15461</a>
<a id='n15462' href='#n15462'>15462</a>
<a id='n15463' href='#n15463'>15463</a>
<a id='n15464' href='#n15464'>15464</a>
<a id='n15465' href='#n15465'>15465</a>
<a id='n15466' href='#n15466'>15466</a>
<a id='n15467' href='#n15467'>15467</a>
<a id='n15468' href='#n15468'>15468</a>
<a id='n15469' href='#n15469'>15469</a>
<a id='n15470' href='#n15470'>15470</a>
<a id='n15471' href='#n15471'>15471</a>
<a id='n15472' href='#n15472'>15472</a>
<a id='n15473' href='#n15473'>15473</a>
<a id='n15474' href='#n15474'>15474</a>
<a id='n15475' href='#n15475'>15475</a>
<a id='n15476' href='#n15476'>15476</a>
<a id='n15477' href='#n15477'>15477</a>
<a id='n15478' href='#n15478'>15478</a>
<a id='n15479' href='#n15479'>15479</a>
<a id='n15480' href='#n15480'>15480</a>
<a id='n15481' href='#n15481'>15481</a>
<a id='n15482' href='#n15482'>15482</a>
<a id='n15483' href='#n15483'>15483</a>
<a id='n15484' href='#n15484'>15484</a>
<a id='n15485' href='#n15485'>15485</a>
<a id='n15486' href='#n15486'>15486</a>
<a id='n15487' href='#n15487'>15487</a>
<a id='n15488' href='#n15488'>15488</a>
<a id='n15489' href='#n15489'>15489</a>
<a id='n15490' href='#n15490'>15490</a>
<a id='n15491' href='#n15491'>15491</a>
<a id='n15492' href='#n15492'>15492</a>
<a id='n15493' href='#n15493'>15493</a>
<a id='n15494' href='#n15494'>15494</a>
<a id='n15495' href='#n15495'>15495</a>
<a id='n15496' href='#n15496'>15496</a>
<a id='n15497' href='#n15497'>15497</a>
<a id='n15498' href='#n15498'>15498</a>
<a id='n15499' href='#n15499'>15499</a>
<a id='n15500' href='#n15500'>15500</a>
<a id='n15501' href='#n15501'>15501</a>
<a id='n15502' href='#n15502'>15502</a>
<a id='n15503' href='#n15503'>15503</a>
<a id='n15504' href='#n15504'>15504</a>
<a id='n15505' href='#n15505'>15505</a>
<a id='n15506' href='#n15506'>15506</a>
<a id='n15507' href='#n15507'>15507</a>
<a id='n15508' href='#n15508'>15508</a>
<a id='n15509' href='#n15509'>15509</a>
<a id='n15510' href='#n15510'>15510</a>
<a id='n15511' href='#n15511'>15511</a>
<a id='n15512' href='#n15512'>15512</a>
<a id='n15513' href='#n15513'>15513</a>
<a id='n15514' href='#n15514'>15514</a>
<a id='n15515' href='#n15515'>15515</a>
<a id='n15516' href='#n15516'>15516</a>
<a id='n15517' href='#n15517'>15517</a>
<a id='n15518' href='#n15518'>15518</a>
<a id='n15519' href='#n15519'>15519</a>
<a id='n15520' href='#n15520'>15520</a>
<a id='n15521' href='#n15521'>15521</a>
<a id='n15522' href='#n15522'>15522</a>
<a id='n15523' href='#n15523'>15523</a>
<a id='n15524' href='#n15524'>15524</a>
<a id='n15525' href='#n15525'>15525</a>
<a id='n15526' href='#n15526'>15526</a>
<a id='n15527' href='#n15527'>15527</a>
<a id='n15528' href='#n15528'>15528</a>
<a id='n15529' href='#n15529'>15529</a>
<a id='n15530' href='#n15530'>15530</a>
<a id='n15531' href='#n15531'>15531</a>
<a id='n15532' href='#n15532'>15532</a>
<a id='n15533' href='#n15533'>15533</a>
<a id='n15534' href='#n15534'>15534</a>
<a id='n15535' href='#n15535'>15535</a>
<a id='n15536' href='#n15536'>15536</a>
<a id='n15537' href='#n15537'>15537</a>
<a id='n15538' href='#n15538'>15538</a>
<a id='n15539' href='#n15539'>15539</a>
<a id='n15540' href='#n15540'>15540</a>
<a id='n15541' href='#n15541'>15541</a>
<a id='n15542' href='#n15542'>15542</a>
<a id='n15543' href='#n15543'>15543</a>
<a id='n15544' href='#n15544'>15544</a>
<a id='n15545' href='#n15545'>15545</a>
<a id='n15546' href='#n15546'>15546</a>
<a id='n15547' href='#n15547'>15547</a>
<a id='n15548' href='#n15548'>15548</a>
<a id='n15549' href='#n15549'>15549</a>
<a id='n15550' href='#n15550'>15550</a>
<a id='n15551' href='#n15551'>15551</a>
<a id='n15552' href='#n15552'>15552</a>
<a id='n15553' href='#n15553'>15553</a>
<a id='n15554' href='#n15554'>15554</a>
<a id='n15555' href='#n15555'>15555</a>
<a id='n15556' href='#n15556'>15556</a>
<a id='n15557' href='#n15557'>15557</a>
<a id='n15558' href='#n15558'>15558</a>
<a id='n15559' href='#n15559'>15559</a>
<a id='n15560' href='#n15560'>15560</a>
<a id='n15561' href='#n15561'>15561</a>
<a id='n15562' href='#n15562'>15562</a>
<a id='n15563' href='#n15563'>15563</a>
<a id='n15564' href='#n15564'>15564</a>
<a id='n15565' href='#n15565'>15565</a>
<a id='n15566' href='#n15566'>15566</a>
<a id='n15567' href='#n15567'>15567</a>
<a id='n15568' href='#n15568'>15568</a>
<a id='n15569' href='#n15569'>15569</a>
<a id='n15570' href='#n15570'>15570</a>
<a id='n15571' href='#n15571'>15571</a>
<a id='n15572' href='#n15572'>15572</a>
<a id='n15573' href='#n15573'>15573</a>
<a id='n15574' href='#n15574'>15574</a>
<a id='n15575' href='#n15575'>15575</a>
<a id='n15576' href='#n15576'>15576</a>
<a id='n15577' href='#n15577'>15577</a>
<a id='n15578' href='#n15578'>15578</a>
<a id='n15579' href='#n15579'>15579</a>
<a id='n15580' href='#n15580'>15580</a>
<a id='n15581' href='#n15581'>15581</a>
<a id='n15582' href='#n15582'>15582</a>
<a id='n15583' href='#n15583'>15583</a>
<a id='n15584' href='#n15584'>15584</a>
<a id='n15585' href='#n15585'>15585</a>
<a id='n15586' href='#n15586'>15586</a>
<a id='n15587' href='#n15587'>15587</a>
<a id='n15588' href='#n15588'>15588</a>
<a id='n15589' href='#n15589'>15589</a>
<a id='n15590' href='#n15590'>15590</a>
<a id='n15591' href='#n15591'>15591</a>
<a id='n15592' href='#n15592'>15592</a>
<a id='n15593' href='#n15593'>15593</a>
<a id='n15594' href='#n15594'>15594</a>
<a id='n15595' href='#n15595'>15595</a>
<a id='n15596' href='#n15596'>15596</a>
<a id='n15597' href='#n15597'>15597</a>
<a id='n15598' href='#n15598'>15598</a>
<a id='n15599' href='#n15599'>15599</a>
<a id='n15600' href='#n15600'>15600</a>
<a id='n15601' href='#n15601'>15601</a>
<a id='n15602' href='#n15602'>15602</a>
<a id='n15603' href='#n15603'>15603</a>
<a id='n15604' href='#n15604'>15604</a>
<a id='n15605' href='#n15605'>15605</a>
<a id='n15606' href='#n15606'>15606</a>
<a id='n15607' href='#n15607'>15607</a>
<a id='n15608' href='#n15608'>15608</a>
<a id='n15609' href='#n15609'>15609</a>
<a id='n15610' href='#n15610'>15610</a>
<a id='n15611' href='#n15611'>15611</a>
<a id='n15612' href='#n15612'>15612</a>
<a id='n15613' href='#n15613'>15613</a>
<a id='n15614' href='#n15614'>15614</a>
<a id='n15615' href='#n15615'>15615</a>
<a id='n15616' href='#n15616'>15616</a>
<a id='n15617' href='#n15617'>15617</a>
<a id='n15618' href='#n15618'>15618</a>
<a id='n15619' href='#n15619'>15619</a>
<a id='n15620' href='#n15620'>15620</a>
<a id='n15621' href='#n15621'>15621</a>
<a id='n15622' href='#n15622'>15622</a>
<a id='n15623' href='#n15623'>15623</a>
<a id='n15624' href='#n15624'>15624</a>
<a id='n15625' href='#n15625'>15625</a>
<a id='n15626' href='#n15626'>15626</a>
<a id='n15627' href='#n15627'>15627</a>
<a id='n15628' href='#n15628'>15628</a>
<a id='n15629' href='#n15629'>15629</a>
<a id='n15630' href='#n15630'>15630</a>
<a id='n15631' href='#n15631'>15631</a>
<a id='n15632' href='#n15632'>15632</a>
<a id='n15633' href='#n15633'>15633</a>
<a id='n15634' href='#n15634'>15634</a>
<a id='n15635' href='#n15635'>15635</a>
<a id='n15636' href='#n15636'>15636</a>
<a id='n15637' href='#n15637'>15637</a>
<a id='n15638' href='#n15638'>15638</a>
<a id='n15639' href='#n15639'>15639</a>
<a id='n15640' href='#n15640'>15640</a>
<a id='n15641' href='#n15641'>15641</a>
<a id='n15642' href='#n15642'>15642</a>
<a id='n15643' href='#n15643'>15643</a>
<a id='n15644' href='#n15644'>15644</a>
<a id='n15645' href='#n15645'>15645</a>
<a id='n15646' href='#n15646'>15646</a>
<a id='n15647' href='#n15647'>15647</a>
<a id='n15648' href='#n15648'>15648</a>
<a id='n15649' href='#n15649'>15649</a>
<a id='n15650' href='#n15650'>15650</a>
<a id='n15651' href='#n15651'>15651</a>
<a id='n15652' href='#n15652'>15652</a>
<a id='n15653' href='#n15653'>15653</a>
<a id='n15654' href='#n15654'>15654</a>
<a id='n15655' href='#n15655'>15655</a>
<a id='n15656' href='#n15656'>15656</a>
<a id='n15657' href='#n15657'>15657</a>
<a id='n15658' href='#n15658'>15658</a>
<a id='n15659' href='#n15659'>15659</a>
<a id='n15660' href='#n15660'>15660</a>
<a id='n15661' href='#n15661'>15661</a>
<a id='n15662' href='#n15662'>15662</a>
<a id='n15663' href='#n15663'>15663</a>
<a id='n15664' href='#n15664'>15664</a>
<a id='n15665' href='#n15665'>15665</a>
<a id='n15666' href='#n15666'>15666</a>
<a id='n15667' href='#n15667'>15667</a>
<a id='n15668' href='#n15668'>15668</a>
<a id='n15669' href='#n15669'>15669</a>
<a id='n15670' href='#n15670'>15670</a>
<a id='n15671' href='#n15671'>15671</a>
<a id='n15672' href='#n15672'>15672</a>
<a id='n15673' href='#n15673'>15673</a>
<a id='n15674' href='#n15674'>15674</a>
<a id='n15675' href='#n15675'>15675</a>
<a id='n15676' href='#n15676'>15676</a>
<a id='n15677' href='#n15677'>15677</a>
<a id='n15678' href='#n15678'>15678</a>
<a id='n15679' href='#n15679'>15679</a>
<a id='n15680' href='#n15680'>15680</a>
<a id='n15681' href='#n15681'>15681</a>
<a id='n15682' href='#n15682'>15682</a>
<a id='n15683' href='#n15683'>15683</a>
<a id='n15684' href='#n15684'>15684</a>
<a id='n15685' href='#n15685'>15685</a>
<a id='n15686' href='#n15686'>15686</a>
<a id='n15687' href='#n15687'>15687</a>
<a id='n15688' href='#n15688'>15688</a>
<a id='n15689' href='#n15689'>15689</a>
<a id='n15690' href='#n15690'>15690</a>
<a id='n15691' href='#n15691'>15691</a>
<a id='n15692' href='#n15692'>15692</a>
<a id='n15693' href='#n15693'>15693</a>
<a id='n15694' href='#n15694'>15694</a>
<a id='n15695' href='#n15695'>15695</a>
<a id='n15696' href='#n15696'>15696</a>
<a id='n15697' href='#n15697'>15697</a>
<a id='n15698' href='#n15698'>15698</a>
<a id='n15699' href='#n15699'>15699</a>
<a id='n15700' href='#n15700'>15700</a>
<a id='n15701' href='#n15701'>15701</a>
<a id='n15702' href='#n15702'>15702</a>
<a id='n15703' href='#n15703'>15703</a>
<a id='n15704' href='#n15704'>15704</a>
<a id='n15705' href='#n15705'>15705</a>
<a id='n15706' href='#n15706'>15706</a>
<a id='n15707' href='#n15707'>15707</a>
<a id='n15708' href='#n15708'>15708</a>
<a id='n15709' href='#n15709'>15709</a>
<a id='n15710' href='#n15710'>15710</a>
<a id='n15711' href='#n15711'>15711</a>
<a id='n15712' href='#n15712'>15712</a>
<a id='n15713' href='#n15713'>15713</a>
<a id='n15714' href='#n15714'>15714</a>
<a id='n15715' href='#n15715'>15715</a>
<a id='n15716' href='#n15716'>15716</a>
<a id='n15717' href='#n15717'>15717</a>
<a id='n15718' href='#n15718'>15718</a>
<a id='n15719' href='#n15719'>15719</a>
<a id='n15720' href='#n15720'>15720</a>
<a id='n15721' href='#n15721'>15721</a>
<a id='n15722' href='#n15722'>15722</a>
<a id='n15723' href='#n15723'>15723</a>
<a id='n15724' href='#n15724'>15724</a>
<a id='n15725' href='#n15725'>15725</a>
<a id='n15726' href='#n15726'>15726</a>
<a id='n15727' href='#n15727'>15727</a>
<a id='n15728' href='#n15728'>15728</a>
<a id='n15729' href='#n15729'>15729</a>
<a id='n15730' href='#n15730'>15730</a>
<a id='n15731' href='#n15731'>15731</a>
<a id='n15732' href='#n15732'>15732</a>
<a id='n15733' href='#n15733'>15733</a>
<a id='n15734' href='#n15734'>15734</a>
<a id='n15735' href='#n15735'>15735</a>
<a id='n15736' href='#n15736'>15736</a>
<a id='n15737' href='#n15737'>15737</a>
<a id='n15738' href='#n15738'>15738</a>
<a id='n15739' href='#n15739'>15739</a>
<a id='n15740' href='#n15740'>15740</a>
<a id='n15741' href='#n15741'>15741</a>
<a id='n15742' href='#n15742'>15742</a>
<a id='n15743' href='#n15743'>15743</a>
<a id='n15744' href='#n15744'>15744</a>
<a id='n15745' href='#n15745'>15745</a>
<a id='n15746' href='#n15746'>15746</a>
<a id='n15747' href='#n15747'>15747</a>
<a id='n15748' href='#n15748'>15748</a>
<a id='n15749' href='#n15749'>15749</a>
<a id='n15750' href='#n15750'>15750</a>
<a id='n15751' href='#n15751'>15751</a>
<a id='n15752' href='#n15752'>15752</a>
<a id='n15753' href='#n15753'>15753</a>
<a id='n15754' href='#n15754'>15754</a>
<a id='n15755' href='#n15755'>15755</a>
<a id='n15756' href='#n15756'>15756</a>
<a id='n15757' href='#n15757'>15757</a>
<a id='n15758' href='#n15758'>15758</a>
<a id='n15759' href='#n15759'>15759</a>
<a id='n15760' href='#n15760'>15760</a>
<a id='n15761' href='#n15761'>15761</a>
<a id='n15762' href='#n15762'>15762</a>
<a id='n15763' href='#n15763'>15763</a>
<a id='n15764' href='#n15764'>15764</a>
<a id='n15765' href='#n15765'>15765</a>
<a id='n15766' href='#n15766'>15766</a>
<a id='n15767' href='#n15767'>15767</a>
<a id='n15768' href='#n15768'>15768</a>
<a id='n15769' href='#n15769'>15769</a>
<a id='n15770' href='#n15770'>15770</a>
<a id='n15771' href='#n15771'>15771</a>
<a id='n15772' href='#n15772'>15772</a>
<a id='n15773' href='#n15773'>15773</a>
<a id='n15774' href='#n15774'>15774</a>
<a id='n15775' href='#n15775'>15775</a>
<a id='n15776' href='#n15776'>15776</a>
<a id='n15777' href='#n15777'>15777</a>
<a id='n15778' href='#n15778'>15778</a>
<a id='n15779' href='#n15779'>15779</a>
<a id='n15780' href='#n15780'>15780</a>
<a id='n15781' href='#n15781'>15781</a>
<a id='n15782' href='#n15782'>15782</a>
<a id='n15783' href='#n15783'>15783</a>
<a id='n15784' href='#n15784'>15784</a>
<a id='n15785' href='#n15785'>15785</a>
<a id='n15786' href='#n15786'>15786</a>
<a id='n15787' href='#n15787'>15787</a>
<a id='n15788' href='#n15788'>15788</a>
<a id='n15789' href='#n15789'>15789</a>
<a id='n15790' href='#n15790'>15790</a>
<a id='n15791' href='#n15791'>15791</a>
<a id='n15792' href='#n15792'>15792</a>
<a id='n15793' href='#n15793'>15793</a>
<a id='n15794' href='#n15794'>15794</a>
<a id='n15795' href='#n15795'>15795</a>
<a id='n15796' href='#n15796'>15796</a>
<a id='n15797' href='#n15797'>15797</a>
<a id='n15798' href='#n15798'>15798</a>
<a id='n15799' href='#n15799'>15799</a>
<a id='n15800' href='#n15800'>15800</a>
<a id='n15801' href='#n15801'>15801</a>
<a id='n15802' href='#n15802'>15802</a>
<a id='n15803' href='#n15803'>15803</a>
<a id='n15804' href='#n15804'>15804</a>
<a id='n15805' href='#n15805'>15805</a>
<a id='n15806' href='#n15806'>15806</a>
<a id='n15807' href='#n15807'>15807</a>
<a id='n15808' href='#n15808'>15808</a>
<a id='n15809' href='#n15809'>15809</a>
<a id='n15810' href='#n15810'>15810</a>
<a id='n15811' href='#n15811'>15811</a>
<a id='n15812' href='#n15812'>15812</a>
<a id='n15813' href='#n15813'>15813</a>
<a id='n15814' href='#n15814'>15814</a>
<a id='n15815' href='#n15815'>15815</a>
<a id='n15816' href='#n15816'>15816</a>
<a id='n15817' href='#n15817'>15817</a>
<a id='n15818' href='#n15818'>15818</a>
<a id='n15819' href='#n15819'>15819</a>
<a id='n15820' href='#n15820'>15820</a>
<a id='n15821' href='#n15821'>15821</a>
<a id='n15822' href='#n15822'>15822</a>
<a id='n15823' href='#n15823'>15823</a>
<a id='n15824' href='#n15824'>15824</a>
<a id='n15825' href='#n15825'>15825</a>
<a id='n15826' href='#n15826'>15826</a>
<a id='n15827' href='#n15827'>15827</a>
<a id='n15828' href='#n15828'>15828</a>
<a id='n15829' href='#n15829'>15829</a>
<a id='n15830' href='#n15830'>15830</a>
<a id='n15831' href='#n15831'>15831</a>
<a id='n15832' href='#n15832'>15832</a>
<a id='n15833' href='#n15833'>15833</a>
<a id='n15834' href='#n15834'>15834</a>
<a id='n15835' href='#n15835'>15835</a>
<a id='n15836' href='#n15836'>15836</a>
<a id='n15837' href='#n15837'>15837</a>
<a id='n15838' href='#n15838'>15838</a>
<a id='n15839' href='#n15839'>15839</a>
<a id='n15840' href='#n15840'>15840</a>
<a id='n15841' href='#n15841'>15841</a>
<a id='n15842' href='#n15842'>15842</a>
<a id='n15843' href='#n15843'>15843</a>
<a id='n15844' href='#n15844'>15844</a>
<a id='n15845' href='#n15845'>15845</a>
<a id='n15846' href='#n15846'>15846</a>
<a id='n15847' href='#n15847'>15847</a>
<a id='n15848' href='#n15848'>15848</a>
<a id='n15849' href='#n15849'>15849</a>
<a id='n15850' href='#n15850'>15850</a>
<a id='n15851' href='#n15851'>15851</a>
<a id='n15852' href='#n15852'>15852</a>
<a id='n15853' href='#n15853'>15853</a>
<a id='n15854' href='#n15854'>15854</a>
<a id='n15855' href='#n15855'>15855</a>
<a id='n15856' href='#n15856'>15856</a>
<a id='n15857' href='#n15857'>15857</a>
<a id='n15858' href='#n15858'>15858</a>
<a id='n15859' href='#n15859'>15859</a>
<a id='n15860' href='#n15860'>15860</a>
<a id='n15861' href='#n15861'>15861</a>
<a id='n15862' href='#n15862'>15862</a>
<a id='n15863' href='#n15863'>15863</a>
<a id='n15864' href='#n15864'>15864</a>
<a id='n15865' href='#n15865'>15865</a>
<a id='n15866' href='#n15866'>15866</a>
<a id='n15867' href='#n15867'>15867</a>
<a id='n15868' href='#n15868'>15868</a>
<a id='n15869' href='#n15869'>15869</a>
<a id='n15870' href='#n15870'>15870</a>
<a id='n15871' href='#n15871'>15871</a>
<a id='n15872' href='#n15872'>15872</a>
<a id='n15873' href='#n15873'>15873</a>
<a id='n15874' href='#n15874'>15874</a>
<a id='n15875' href='#n15875'>15875</a>
<a id='n15876' href='#n15876'>15876</a>
<a id='n15877' href='#n15877'>15877</a>
<a id='n15878' href='#n15878'>15878</a>
<a id='n15879' href='#n15879'>15879</a>
<a id='n15880' href='#n15880'>15880</a>
<a id='n15881' href='#n15881'>15881</a>
<a id='n15882' href='#n15882'>15882</a>
<a id='n15883' href='#n15883'>15883</a>
<a id='n15884' href='#n15884'>15884</a>
<a id='n15885' href='#n15885'>15885</a>
<a id='n15886' href='#n15886'>15886</a>
<a id='n15887' href='#n15887'>15887</a>
<a id='n15888' href='#n15888'>15888</a>
<a id='n15889' href='#n15889'>15889</a>
<a id='n15890' href='#n15890'>15890</a>
<a id='n15891' href='#n15891'>15891</a>
<a id='n15892' href='#n15892'>15892</a>
<a id='n15893' href='#n15893'>15893</a>
<a id='n15894' href='#n15894'>15894</a>
<a id='n15895' href='#n15895'>15895</a>
<a id='n15896' href='#n15896'>15896</a>
<a id='n15897' href='#n15897'>15897</a>
<a id='n15898' href='#n15898'>15898</a>
<a id='n15899' href='#n15899'>15899</a>
<a id='n15900' href='#n15900'>15900</a>
<a id='n15901' href='#n15901'>15901</a>
<a id='n15902' href='#n15902'>15902</a>
<a id='n15903' href='#n15903'>15903</a>
<a id='n15904' href='#n15904'>15904</a>
<a id='n15905' href='#n15905'>15905</a>
<a id='n15906' href='#n15906'>15906</a>
<a id='n15907' href='#n15907'>15907</a>
<a id='n15908' href='#n15908'>15908</a>
<a id='n15909' href='#n15909'>15909</a>
<a id='n15910' href='#n15910'>15910</a>
<a id='n15911' href='#n15911'>15911</a>
<a id='n15912' href='#n15912'>15912</a>
<a id='n15913' href='#n15913'>15913</a>
<a id='n15914' href='#n15914'>15914</a>
<a id='n15915' href='#n15915'>15915</a>
<a id='n15916' href='#n15916'>15916</a>
<a id='n15917' href='#n15917'>15917</a>
<a id='n15918' href='#n15918'>15918</a>
<a id='n15919' href='#n15919'>15919</a>
<a id='n15920' href='#n15920'>15920</a>
<a id='n15921' href='#n15921'>15921</a>
<a id='n15922' href='#n15922'>15922</a>
<a id='n15923' href='#n15923'>15923</a>
<a id='n15924' href='#n15924'>15924</a>
<a id='n15925' href='#n15925'>15925</a>
<a id='n15926' href='#n15926'>15926</a>
<a id='n15927' href='#n15927'>15927</a>
<a id='n15928' href='#n15928'>15928</a>
<a id='n15929' href='#n15929'>15929</a>
<a id='n15930' href='#n15930'>15930</a>
<a id='n15931' href='#n15931'>15931</a>
<a id='n15932' href='#n15932'>15932</a>
<a id='n15933' href='#n15933'>15933</a>
<a id='n15934' href='#n15934'>15934</a>
<a id='n15935' href='#n15935'>15935</a>
<a id='n15936' href='#n15936'>15936</a>
<a id='n15937' href='#n15937'>15937</a>
<a id='n15938' href='#n15938'>15938</a>
<a id='n15939' href='#n15939'>15939</a>
<a id='n15940' href='#n15940'>15940</a>
<a id='n15941' href='#n15941'>15941</a>
<a id='n15942' href='#n15942'>15942</a>
<a id='n15943' href='#n15943'>15943</a>
<a id='n15944' href='#n15944'>15944</a>
<a id='n15945' href='#n15945'>15945</a>
<a id='n15946' href='#n15946'>15946</a>
<a id='n15947' href='#n15947'>15947</a>
<a id='n15948' href='#n15948'>15948</a>
<a id='n15949' href='#n15949'>15949</a>
<a id='n15950' href='#n15950'>15950</a>
<a id='n15951' href='#n15951'>15951</a>
<a id='n15952' href='#n15952'>15952</a>
<a id='n15953' href='#n15953'>15953</a>
<a id='n15954' href='#n15954'>15954</a>
<a id='n15955' href='#n15955'>15955</a>
<a id='n15956' href='#n15956'>15956</a>
<a id='n15957' href='#n15957'>15957</a>
<a id='n15958' href='#n15958'>15958</a>
<a id='n15959' href='#n15959'>15959</a>
<a id='n15960' href='#n15960'>15960</a>
<a id='n15961' href='#n15961'>15961</a>
<a id='n15962' href='#n15962'>15962</a>
<a id='n15963' href='#n15963'>15963</a>
<a id='n15964' href='#n15964'>15964</a>
<a id='n15965' href='#n15965'>15965</a>
<a id='n15966' href='#n15966'>15966</a>
<a id='n15967' href='#n15967'>15967</a>
<a id='n15968' href='#n15968'>15968</a>
<a id='n15969' href='#n15969'>15969</a>
<a id='n15970' href='#n15970'>15970</a>
<a id='n15971' href='#n15971'>15971</a>
<a id='n15972' href='#n15972'>15972</a>
<a id='n15973' href='#n15973'>15973</a>
<a id='n15974' href='#n15974'>15974</a>
<a id='n15975' href='#n15975'>15975</a>
<a id='n15976' href='#n15976'>15976</a>
<a id='n15977' href='#n15977'>15977</a>
<a id='n15978' href='#n15978'>15978</a>
<a id='n15979' href='#n15979'>15979</a>
<a id='n15980' href='#n15980'>15980</a>
<a id='n15981' href='#n15981'>15981</a>
<a id='n15982' href='#n15982'>15982</a>
<a id='n15983' href='#n15983'>15983</a>
<a id='n15984' href='#n15984'>15984</a>
<a id='n15985' href='#n15985'>15985</a>
<a id='n15986' href='#n15986'>15986</a>
<a id='n15987' href='#n15987'>15987</a>
<a id='n15988' href='#n15988'>15988</a>
<a id='n15989' href='#n15989'>15989</a>
<a id='n15990' href='#n15990'>15990</a>
<a id='n15991' href='#n15991'>15991</a>
<a id='n15992' href='#n15992'>15992</a>
<a id='n15993' href='#n15993'>15993</a>
<a id='n15994' href='#n15994'>15994</a>
<a id='n15995' href='#n15995'>15995</a>
<a id='n15996' href='#n15996'>15996</a>
<a id='n15997' href='#n15997'>15997</a>
<a id='n15998' href='#n15998'>15998</a>
<a id='n15999' href='#n15999'>15999</a>
<a id='n16000' href='#n16000'>16000</a>
<a id='n16001' href='#n16001'>16001</a>
<a id='n16002' href='#n16002'>16002</a>
<a id='n16003' href='#n16003'>16003</a>
<a id='n16004' href='#n16004'>16004</a>
<a id='n16005' href='#n16005'>16005</a>
<a id='n16006' href='#n16006'>16006</a>
<a id='n16007' href='#n16007'>16007</a>
<a id='n16008' href='#n16008'>16008</a>
<a id='n16009' href='#n16009'>16009</a>
<a id='n16010' href='#n16010'>16010</a>
<a id='n16011' href='#n16011'>16011</a>
<a id='n16012' href='#n16012'>16012</a>
<a id='n16013' href='#n16013'>16013</a>
<a id='n16014' href='#n16014'>16014</a>
<a id='n16015' href='#n16015'>16015</a>
<a id='n16016' href='#n16016'>16016</a>
<a id='n16017' href='#n16017'>16017</a>
<a id='n16018' href='#n16018'>16018</a>
<a id='n16019' href='#n16019'>16019</a>
<a id='n16020' href='#n16020'>16020</a>
<a id='n16021' href='#n16021'>16021</a>
<a id='n16022' href='#n16022'>16022</a>
<a id='n16023' href='#n16023'>16023</a>
<a id='n16024' href='#n16024'>16024</a>
<a id='n16025' href='#n16025'>16025</a>
<a id='n16026' href='#n16026'>16026</a>
<a id='n16027' href='#n16027'>16027</a>
<a id='n16028' href='#n16028'>16028</a>
<a id='n16029' href='#n16029'>16029</a>
<a id='n16030' href='#n16030'>16030</a>
<a id='n16031' href='#n16031'>16031</a>
<a id='n16032' href='#n16032'>16032</a>
<a id='n16033' href='#n16033'>16033</a>
<a id='n16034' href='#n16034'>16034</a>
<a id='n16035' href='#n16035'>16035</a>
<a id='n16036' href='#n16036'>16036</a>
<a id='n16037' href='#n16037'>16037</a>
<a id='n16038' href='#n16038'>16038</a>
<a id='n16039' href='#n16039'>16039</a>
<a id='n16040' href='#n16040'>16040</a>
<a id='n16041' href='#n16041'>16041</a>
<a id='n16042' href='#n16042'>16042</a>
<a id='n16043' href='#n16043'>16043</a>
<a id='n16044' href='#n16044'>16044</a>
<a id='n16045' href='#n16045'>16045</a>
<a id='n16046' href='#n16046'>16046</a>
<a id='n16047' href='#n16047'>16047</a>
<a id='n16048' href='#n16048'>16048</a>
<a id='n16049' href='#n16049'>16049</a>
<a id='n16050' href='#n16050'>16050</a>
<a id='n16051' href='#n16051'>16051</a>
<a id='n16052' href='#n16052'>16052</a>
<a id='n16053' href='#n16053'>16053</a>
<a id='n16054' href='#n16054'>16054</a>
<a id='n16055' href='#n16055'>16055</a>
<a id='n16056' href='#n16056'>16056</a>
<a id='n16057' href='#n16057'>16057</a>
<a id='n16058' href='#n16058'>16058</a>
<a id='n16059' href='#n16059'>16059</a>
<a id='n16060' href='#n16060'>16060</a>
<a id='n16061' href='#n16061'>16061</a>
<a id='n16062' href='#n16062'>16062</a>
<a id='n16063' href='#n16063'>16063</a>
<a id='n16064' href='#n16064'>16064</a>
<a id='n16065' href='#n16065'>16065</a>
<a id='n16066' href='#n16066'>16066</a>
<a id='n16067' href='#n16067'>16067</a>
<a id='n16068' href='#n16068'>16068</a>
<a id='n16069' href='#n16069'>16069</a>
<a id='n16070' href='#n16070'>16070</a>
<a id='n16071' href='#n16071'>16071</a>
<a id='n16072' href='#n16072'>16072</a>
<a id='n16073' href='#n16073'>16073</a>
<a id='n16074' href='#n16074'>16074</a>
<a id='n16075' href='#n16075'>16075</a>
<a id='n16076' href='#n16076'>16076</a>
<a id='n16077' href='#n16077'>16077</a>
<a id='n16078' href='#n16078'>16078</a>
<a id='n16079' href='#n16079'>16079</a>
<a id='n16080' href='#n16080'>16080</a>
<a id='n16081' href='#n16081'>16081</a>
<a id='n16082' href='#n16082'>16082</a>
<a id='n16083' href='#n16083'>16083</a>
<a id='n16084' href='#n16084'>16084</a>
<a id='n16085' href='#n16085'>16085</a>
<a id='n16086' href='#n16086'>16086</a>
<a id='n16087' href='#n16087'>16087</a>
<a id='n16088' href='#n16088'>16088</a>
<a id='n16089' href='#n16089'>16089</a>
<a id='n16090' href='#n16090'>16090</a>
<a id='n16091' href='#n16091'>16091</a>
<a id='n16092' href='#n16092'>16092</a>
<a id='n16093' href='#n16093'>16093</a>
<a id='n16094' href='#n16094'>16094</a>
<a id='n16095' href='#n16095'>16095</a>
<a id='n16096' href='#n16096'>16096</a>
<a id='n16097' href='#n16097'>16097</a>
<a id='n16098' href='#n16098'>16098</a>
<a id='n16099' href='#n16099'>16099</a>
<a id='n16100' href='#n16100'>16100</a>
<a id='n16101' href='#n16101'>16101</a>
<a id='n16102' href='#n16102'>16102</a>
<a id='n16103' href='#n16103'>16103</a>
<a id='n16104' href='#n16104'>16104</a>
<a id='n16105' href='#n16105'>16105</a>
<a id='n16106' href='#n16106'>16106</a>
<a id='n16107' href='#n16107'>16107</a>
<a id='n16108' href='#n16108'>16108</a>
<a id='n16109' href='#n16109'>16109</a>
<a id='n16110' href='#n16110'>16110</a>
<a id='n16111' href='#n16111'>16111</a>
<a id='n16112' href='#n16112'>16112</a>
<a id='n16113' href='#n16113'>16113</a>
<a id='n16114' href='#n16114'>16114</a>
<a id='n16115' href='#n16115'>16115</a>
<a id='n16116' href='#n16116'>16116</a>
<a id='n16117' href='#n16117'>16117</a>
<a id='n16118' href='#n16118'>16118</a>
<a id='n16119' href='#n16119'>16119</a>
<a id='n16120' href='#n16120'>16120</a>
<a id='n16121' href='#n16121'>16121</a>
<a id='n16122' href='#n16122'>16122</a>
<a id='n16123' href='#n16123'>16123</a>
<a id='n16124' href='#n16124'>16124</a>
<a id='n16125' href='#n16125'>16125</a>
<a id='n16126' href='#n16126'>16126</a>
<a id='n16127' href='#n16127'>16127</a>
<a id='n16128' href='#n16128'>16128</a>
<a id='n16129' href='#n16129'>16129</a>
<a id='n16130' href='#n16130'>16130</a>
<a id='n16131' href='#n16131'>16131</a>
<a id='n16132' href='#n16132'>16132</a>
<a id='n16133' href='#n16133'>16133</a>
<a id='n16134' href='#n16134'>16134</a>
<a id='n16135' href='#n16135'>16135</a>
<a id='n16136' href='#n16136'>16136</a>
<a id='n16137' href='#n16137'>16137</a>
<a id='n16138' href='#n16138'>16138</a>
<a id='n16139' href='#n16139'>16139</a>
<a id='n16140' href='#n16140'>16140</a>
<a id='n16141' href='#n16141'>16141</a>
<a id='n16142' href='#n16142'>16142</a>
<a id='n16143' href='#n16143'>16143</a>
<a id='n16144' href='#n16144'>16144</a>
<a id='n16145' href='#n16145'>16145</a>
<a id='n16146' href='#n16146'>16146</a>
<a id='n16147' href='#n16147'>16147</a>
<a id='n16148' href='#n16148'>16148</a>
<a id='n16149' href='#n16149'>16149</a>
<a id='n16150' href='#n16150'>16150</a>
<a id='n16151' href='#n16151'>16151</a>
<a id='n16152' href='#n16152'>16152</a>
<a id='n16153' href='#n16153'>16153</a>
<a id='n16154' href='#n16154'>16154</a>
<a id='n16155' href='#n16155'>16155</a>
<a id='n16156' href='#n16156'>16156</a>
<a id='n16157' href='#n16157'>16157</a>
<a id='n16158' href='#n16158'>16158</a>
<a id='n16159' href='#n16159'>16159</a>
<a id='n16160' href='#n16160'>16160</a>
<a id='n16161' href='#n16161'>16161</a>
<a id='n16162' href='#n16162'>16162</a>
<a id='n16163' href='#n16163'>16163</a>
<a id='n16164' href='#n16164'>16164</a>
<a id='n16165' href='#n16165'>16165</a>
<a id='n16166' href='#n16166'>16166</a>
<a id='n16167' href='#n16167'>16167</a>
<a id='n16168' href='#n16168'>16168</a>
<a id='n16169' href='#n16169'>16169</a>
<a id='n16170' href='#n16170'>16170</a>
<a id='n16171' href='#n16171'>16171</a>
<a id='n16172' href='#n16172'>16172</a>
<a id='n16173' href='#n16173'>16173</a>
<a id='n16174' href='#n16174'>16174</a>
<a id='n16175' href='#n16175'>16175</a>
<a id='n16176' href='#n16176'>16176</a>
<a id='n16177' href='#n16177'>16177</a>
<a id='n16178' href='#n16178'>16178</a>
<a id='n16179' href='#n16179'>16179</a>
<a id='n16180' href='#n16180'>16180</a>
<a id='n16181' href='#n16181'>16181</a>
<a id='n16182' href='#n16182'>16182</a>
<a id='n16183' href='#n16183'>16183</a>
<a id='n16184' href='#n16184'>16184</a>
<a id='n16185' href='#n16185'>16185</a>
<a id='n16186' href='#n16186'>16186</a>
<a id='n16187' href='#n16187'>16187</a>
<a id='n16188' href='#n16188'>16188</a>
<a id='n16189' href='#n16189'>16189</a>
<a id='n16190' href='#n16190'>16190</a>
<a id='n16191' href='#n16191'>16191</a>
<a id='n16192' href='#n16192'>16192</a>
<a id='n16193' href='#n16193'>16193</a>
<a id='n16194' href='#n16194'>16194</a>
<a id='n16195' href='#n16195'>16195</a>
<a id='n16196' href='#n16196'>16196</a>
<a id='n16197' href='#n16197'>16197</a>
<a id='n16198' href='#n16198'>16198</a>
<a id='n16199' href='#n16199'>16199</a>
<a id='n16200' href='#n16200'>16200</a>
<a id='n16201' href='#n16201'>16201</a>
<a id='n16202' href='#n16202'>16202</a>
<a id='n16203' href='#n16203'>16203</a>
<a id='n16204' href='#n16204'>16204</a>
<a id='n16205' href='#n16205'>16205</a>
<a id='n16206' href='#n16206'>16206</a>
<a id='n16207' href='#n16207'>16207</a>
<a id='n16208' href='#n16208'>16208</a>
<a id='n16209' href='#n16209'>16209</a>
<a id='n16210' href='#n16210'>16210</a>
<a id='n16211' href='#n16211'>16211</a>
<a id='n16212' href='#n16212'>16212</a>
<a id='n16213' href='#n16213'>16213</a>
<a id='n16214' href='#n16214'>16214</a>
<a id='n16215' href='#n16215'>16215</a>
<a id='n16216' href='#n16216'>16216</a>
<a id='n16217' href='#n16217'>16217</a>
<a id='n16218' href='#n16218'>16218</a>
<a id='n16219' href='#n16219'>16219</a>
<a id='n16220' href='#n16220'>16220</a>
<a id='n16221' href='#n16221'>16221</a>
<a id='n16222' href='#n16222'>16222</a>
<a id='n16223' href='#n16223'>16223</a>
<a id='n16224' href='#n16224'>16224</a>
<a id='n16225' href='#n16225'>16225</a>
<a id='n16226' href='#n16226'>16226</a>
<a id='n16227' href='#n16227'>16227</a>
<a id='n16228' href='#n16228'>16228</a>
<a id='n16229' href='#n16229'>16229</a>
<a id='n16230' href='#n16230'>16230</a>
<a id='n16231' href='#n16231'>16231</a>
<a id='n16232' href='#n16232'>16232</a>
<a id='n16233' href='#n16233'>16233</a>
<a id='n16234' href='#n16234'>16234</a>
<a id='n16235' href='#n16235'>16235</a>
<a id='n16236' href='#n16236'>16236</a>
<a id='n16237' href='#n16237'>16237</a>
<a id='n16238' href='#n16238'>16238</a>
<a id='n16239' href='#n16239'>16239</a>
<a id='n16240' href='#n16240'>16240</a>
<a id='n16241' href='#n16241'>16241</a>
<a id='n16242' href='#n16242'>16242</a>
<a id='n16243' href='#n16243'>16243</a>
<a id='n16244' href='#n16244'>16244</a>
<a id='n16245' href='#n16245'>16245</a>
<a id='n16246' href='#n16246'>16246</a>
<a id='n16247' href='#n16247'>16247</a>
<a id='n16248' href='#n16248'>16248</a>
<a id='n16249' href='#n16249'>16249</a>
<a id='n16250' href='#n16250'>16250</a>
<a id='n16251' href='#n16251'>16251</a>
<a id='n16252' href='#n16252'>16252</a>
<a id='n16253' href='#n16253'>16253</a>
<a id='n16254' href='#n16254'>16254</a>
<a id='n16255' href='#n16255'>16255</a>
<a id='n16256' href='#n16256'>16256</a>
<a id='n16257' href='#n16257'>16257</a>
<a id='n16258' href='#n16258'>16258</a>
<a id='n16259' href='#n16259'>16259</a>
<a id='n16260' href='#n16260'>16260</a>
<a id='n16261' href='#n16261'>16261</a>
<a id='n16262' href='#n16262'>16262</a>
<a id='n16263' href='#n16263'>16263</a>
<a id='n16264' href='#n16264'>16264</a>
<a id='n16265' href='#n16265'>16265</a>
<a id='n16266' href='#n16266'>16266</a>
<a id='n16267' href='#n16267'>16267</a>
<a id='n16268' href='#n16268'>16268</a>
<a id='n16269' href='#n16269'>16269</a>
<a id='n16270' href='#n16270'>16270</a>
<a id='n16271' href='#n16271'>16271</a>
<a id='n16272' href='#n16272'>16272</a>
<a id='n16273' href='#n16273'>16273</a>
<a id='n16274' href='#n16274'>16274</a>
<a id='n16275' href='#n16275'>16275</a>
<a id='n16276' href='#n16276'>16276</a>
<a id='n16277' href='#n16277'>16277</a>
<a id='n16278' href='#n16278'>16278</a>
<a id='n16279' href='#n16279'>16279</a>
<a id='n16280' href='#n16280'>16280</a>
<a id='n16281' href='#n16281'>16281</a>
<a id='n16282' href='#n16282'>16282</a>
<a id='n16283' href='#n16283'>16283</a>
<a id='n16284' href='#n16284'>16284</a>
<a id='n16285' href='#n16285'>16285</a>
<a id='n16286' href='#n16286'>16286</a>
<a id='n16287' href='#n16287'>16287</a>
<a id='n16288' href='#n16288'>16288</a>
<a id='n16289' href='#n16289'>16289</a>
<a id='n16290' href='#n16290'>16290</a>
<a id='n16291' href='#n16291'>16291</a>
<a id='n16292' href='#n16292'>16292</a>
<a id='n16293' href='#n16293'>16293</a>
<a id='n16294' href='#n16294'>16294</a>
<a id='n16295' href='#n16295'>16295</a>
<a id='n16296' href='#n16296'>16296</a>
<a id='n16297' href='#n16297'>16297</a>
<a id='n16298' href='#n16298'>16298</a>
<a id='n16299' href='#n16299'>16299</a>
<a id='n16300' href='#n16300'>16300</a>
<a id='n16301' href='#n16301'>16301</a>
<a id='n16302' href='#n16302'>16302</a>
<a id='n16303' href='#n16303'>16303</a>
<a id='n16304' href='#n16304'>16304</a>
<a id='n16305' href='#n16305'>16305</a>
<a id='n16306' href='#n16306'>16306</a>
<a id='n16307' href='#n16307'>16307</a>
<a id='n16308' href='#n16308'>16308</a>
<a id='n16309' href='#n16309'>16309</a>
<a id='n16310' href='#n16310'>16310</a>
<a id='n16311' href='#n16311'>16311</a>
<a id='n16312' href='#n16312'>16312</a>
<a id='n16313' href='#n16313'>16313</a>
<a id='n16314' href='#n16314'>16314</a>
<a id='n16315' href='#n16315'>16315</a>
<a id='n16316' href='#n16316'>16316</a>
<a id='n16317' href='#n16317'>16317</a>
<a id='n16318' href='#n16318'>16318</a>
<a id='n16319' href='#n16319'>16319</a>
<a id='n16320' href='#n16320'>16320</a>
<a id='n16321' href='#n16321'>16321</a>
<a id='n16322' href='#n16322'>16322</a>
<a id='n16323' href='#n16323'>16323</a>
<a id='n16324' href='#n16324'>16324</a>
<a id='n16325' href='#n16325'>16325</a>
<a id='n16326' href='#n16326'>16326</a>
<a id='n16327' href='#n16327'>16327</a>
<a id='n16328' href='#n16328'>16328</a>
<a id='n16329' href='#n16329'>16329</a>
<a id='n16330' href='#n16330'>16330</a>
<a id='n16331' href='#n16331'>16331</a>
<a id='n16332' href='#n16332'>16332</a>
<a id='n16333' href='#n16333'>16333</a>
<a id='n16334' href='#n16334'>16334</a>
<a id='n16335' href='#n16335'>16335</a>
<a id='n16336' href='#n16336'>16336</a>
<a id='n16337' href='#n16337'>16337</a>
<a id='n16338' href='#n16338'>16338</a>
<a id='n16339' href='#n16339'>16339</a>
<a id='n16340' href='#n16340'>16340</a>
<a id='n16341' href='#n16341'>16341</a>
<a id='n16342' href='#n16342'>16342</a>
<a id='n16343' href='#n16343'>16343</a>
<a id='n16344' href='#n16344'>16344</a>
<a id='n16345' href='#n16345'>16345</a>
<a id='n16346' href='#n16346'>16346</a>
<a id='n16347' href='#n16347'>16347</a>
<a id='n16348' href='#n16348'>16348</a>
<a id='n16349' href='#n16349'>16349</a>
<a id='n16350' href='#n16350'>16350</a>
<a id='n16351' href='#n16351'>16351</a>
<a id='n16352' href='#n16352'>16352</a>
<a id='n16353' href='#n16353'>16353</a>
<a id='n16354' href='#n16354'>16354</a>
<a id='n16355' href='#n16355'>16355</a>
<a id='n16356' href='#n16356'>16356</a>
<a id='n16357' href='#n16357'>16357</a>
<a id='n16358' href='#n16358'>16358</a>
<a id='n16359' href='#n16359'>16359</a>
<a id='n16360' href='#n16360'>16360</a>
<a id='n16361' href='#n16361'>16361</a>
<a id='n16362' href='#n16362'>16362</a>
<a id='n16363' href='#n16363'>16363</a>
<a id='n16364' href='#n16364'>16364</a>
<a id='n16365' href='#n16365'>16365</a>
<a id='n16366' href='#n16366'>16366</a>
<a id='n16367' href='#n16367'>16367</a>
<a id='n16368' href='#n16368'>16368</a>
<a id='n16369' href='#n16369'>16369</a>
<a id='n16370' href='#n16370'>16370</a>
<a id='n16371' href='#n16371'>16371</a>
<a id='n16372' href='#n16372'>16372</a>
<a id='n16373' href='#n16373'>16373</a>
<a id='n16374' href='#n16374'>16374</a>
<a id='n16375' href='#n16375'>16375</a>
<a id='n16376' href='#n16376'>16376</a>
<a id='n16377' href='#n16377'>16377</a>
<a id='n16378' href='#n16378'>16378</a>
<a id='n16379' href='#n16379'>16379</a>
<a id='n16380' href='#n16380'>16380</a>
<a id='n16381' href='#n16381'>16381</a>
<a id='n16382' href='#n16382'>16382</a>
<a id='n16383' href='#n16383'>16383</a>
<a id='n16384' href='#n16384'>16384</a>
<a id='n16385' href='#n16385'>16385</a>
<a id='n16386' href='#n16386'>16386</a>
<a id='n16387' href='#n16387'>16387</a>
<a id='n16388' href='#n16388'>16388</a>
<a id='n16389' href='#n16389'>16389</a>
<a id='n16390' href='#n16390'>16390</a>
<a id='n16391' href='#n16391'>16391</a>
<a id='n16392' href='#n16392'>16392</a>
<a id='n16393' href='#n16393'>16393</a>
<a id='n16394' href='#n16394'>16394</a>
<a id='n16395' href='#n16395'>16395</a>
<a id='n16396' href='#n16396'>16396</a>
<a id='n16397' href='#n16397'>16397</a>
<a id='n16398' href='#n16398'>16398</a>
<a id='n16399' href='#n16399'>16399</a>
<a id='n16400' href='#n16400'>16400</a>
<a id='n16401' href='#n16401'>16401</a>
<a id='n16402' href='#n16402'>16402</a>
<a id='n16403' href='#n16403'>16403</a>
<a id='n16404' href='#n16404'>16404</a>
<a id='n16405' href='#n16405'>16405</a>
<a id='n16406' href='#n16406'>16406</a>
<a id='n16407' href='#n16407'>16407</a>
<a id='n16408' href='#n16408'>16408</a>
<a id='n16409' href='#n16409'>16409</a>
<a id='n16410' href='#n16410'>16410</a>
<a id='n16411' href='#n16411'>16411</a>
<a id='n16412' href='#n16412'>16412</a>
<a id='n16413' href='#n16413'>16413</a>
<a id='n16414' href='#n16414'>16414</a>
<a id='n16415' href='#n16415'>16415</a>
<a id='n16416' href='#n16416'>16416</a>
<a id='n16417' href='#n16417'>16417</a>
<a id='n16418' href='#n16418'>16418</a>
<a id='n16419' href='#n16419'>16419</a>
<a id='n16420' href='#n16420'>16420</a>
<a id='n16421' href='#n16421'>16421</a>
<a id='n16422' href='#n16422'>16422</a>
<a id='n16423' href='#n16423'>16423</a>
<a id='n16424' href='#n16424'>16424</a>
<a id='n16425' href='#n16425'>16425</a>
<a id='n16426' href='#n16426'>16426</a>
<a id='n16427' href='#n16427'>16427</a>
<a id='n16428' href='#n16428'>16428</a>
<a id='n16429' href='#n16429'>16429</a>
<a id='n16430' href='#n16430'>16430</a>
<a id='n16431' href='#n16431'>16431</a>
<a id='n16432' href='#n16432'>16432</a>
<a id='n16433' href='#n16433'>16433</a>
<a id='n16434' href='#n16434'>16434</a>
<a id='n16435' href='#n16435'>16435</a>
<a id='n16436' href='#n16436'>16436</a>
<a id='n16437' href='#n16437'>16437</a>
<a id='n16438' href='#n16438'>16438</a>
<a id='n16439' href='#n16439'>16439</a>
<a id='n16440' href='#n16440'>16440</a>
<a id='n16441' href='#n16441'>16441</a>
<a id='n16442' href='#n16442'>16442</a>
<a id='n16443' href='#n16443'>16443</a>
<a id='n16444' href='#n16444'>16444</a>
<a id='n16445' href='#n16445'>16445</a>
<a id='n16446' href='#n16446'>16446</a>
<a id='n16447' href='#n16447'>16447</a>
<a id='n16448' href='#n16448'>16448</a>
<a id='n16449' href='#n16449'>16449</a>
<a id='n16450' href='#n16450'>16450</a>
<a id='n16451' href='#n16451'>16451</a>
<a id='n16452' href='#n16452'>16452</a>
<a id='n16453' href='#n16453'>16453</a>
<a id='n16454' href='#n16454'>16454</a>
<a id='n16455' href='#n16455'>16455</a>
<a id='n16456' href='#n16456'>16456</a>
<a id='n16457' href='#n16457'>16457</a>
<a id='n16458' href='#n16458'>16458</a>
<a id='n16459' href='#n16459'>16459</a>
<a id='n16460' href='#n16460'>16460</a>
<a id='n16461' href='#n16461'>16461</a>
<a id='n16462' href='#n16462'>16462</a>
<a id='n16463' href='#n16463'>16463</a>
<a id='n16464' href='#n16464'>16464</a>
<a id='n16465' href='#n16465'>16465</a>
<a id='n16466' href='#n16466'>16466</a>
<a id='n16467' href='#n16467'>16467</a>
<a id='n16468' href='#n16468'>16468</a>
<a id='n16469' href='#n16469'>16469</a>
<a id='n16470' href='#n16470'>16470</a>
<a id='n16471' href='#n16471'>16471</a>
<a id='n16472' href='#n16472'>16472</a>
<a id='n16473' href='#n16473'>16473</a>
<a id='n16474' href='#n16474'>16474</a>
<a id='n16475' href='#n16475'>16475</a>
<a id='n16476' href='#n16476'>16476</a>
<a id='n16477' href='#n16477'>16477</a>
<a id='n16478' href='#n16478'>16478</a>
<a id='n16479' href='#n16479'>16479</a>
<a id='n16480' href='#n16480'>16480</a>
<a id='n16481' href='#n16481'>16481</a>
<a id='n16482' href='#n16482'>16482</a>
<a id='n16483' href='#n16483'>16483</a>
<a id='n16484' href='#n16484'>16484</a>
<a id='n16485' href='#n16485'>16485</a>
<a id='n16486' href='#n16486'>16486</a>
<a id='n16487' href='#n16487'>16487</a>
<a id='n16488' href='#n16488'>16488</a>
<a id='n16489' href='#n16489'>16489</a>
<a id='n16490' href='#n16490'>16490</a>
<a id='n16491' href='#n16491'>16491</a>
<a id='n16492' href='#n16492'>16492</a>
<a id='n16493' href='#n16493'>16493</a>
<a id='n16494' href='#n16494'>16494</a>
<a id='n16495' href='#n16495'>16495</a>
<a id='n16496' href='#n16496'>16496</a>
<a id='n16497' href='#n16497'>16497</a>
<a id='n16498' href='#n16498'>16498</a>
<a id='n16499' href='#n16499'>16499</a>
<a id='n16500' href='#n16500'>16500</a>
<a id='n16501' href='#n16501'>16501</a>
<a id='n16502' href='#n16502'>16502</a>
<a id='n16503' href='#n16503'>16503</a>
<a id='n16504' href='#n16504'>16504</a>
<a id='n16505' href='#n16505'>16505</a>
<a id='n16506' href='#n16506'>16506</a>
<a id='n16507' href='#n16507'>16507</a>
<a id='n16508' href='#n16508'>16508</a>
<a id='n16509' href='#n16509'>16509</a>
<a id='n16510' href='#n16510'>16510</a>
<a id='n16511' href='#n16511'>16511</a>
<a id='n16512' href='#n16512'>16512</a>
<a id='n16513' href='#n16513'>16513</a>
<a id='n16514' href='#n16514'>16514</a>
<a id='n16515' href='#n16515'>16515</a>
<a id='n16516' href='#n16516'>16516</a>
<a id='n16517' href='#n16517'>16517</a>
<a id='n16518' href='#n16518'>16518</a>
<a id='n16519' href='#n16519'>16519</a>
<a id='n16520' href='#n16520'>16520</a>
<a id='n16521' href='#n16521'>16521</a>
<a id='n16522' href='#n16522'>16522</a>
<a id='n16523' href='#n16523'>16523</a>
<a id='n16524' href='#n16524'>16524</a>
<a id='n16525' href='#n16525'>16525</a>
<a id='n16526' href='#n16526'>16526</a>
<a id='n16527' href='#n16527'>16527</a>
<a id='n16528' href='#n16528'>16528</a>
<a id='n16529' href='#n16529'>16529</a>
<a id='n16530' href='#n16530'>16530</a>
<a id='n16531' href='#n16531'>16531</a>
<a id='n16532' href='#n16532'>16532</a>
<a id='n16533' href='#n16533'>16533</a>
<a id='n16534' href='#n16534'>16534</a>
<a id='n16535' href='#n16535'>16535</a>
<a id='n16536' href='#n16536'>16536</a>
<a id='n16537' href='#n16537'>16537</a>
<a id='n16538' href='#n16538'>16538</a>
<a id='n16539' href='#n16539'>16539</a>
<a id='n16540' href='#n16540'>16540</a>
<a id='n16541' href='#n16541'>16541</a>
<a id='n16542' href='#n16542'>16542</a>
<a id='n16543' href='#n16543'>16543</a>
<a id='n16544' href='#n16544'>16544</a>
<a id='n16545' href='#n16545'>16545</a>
<a id='n16546' href='#n16546'>16546</a>
<a id='n16547' href='#n16547'>16547</a>
<a id='n16548' href='#n16548'>16548</a>
<a id='n16549' href='#n16549'>16549</a>
<a id='n16550' href='#n16550'>16550</a>
<a id='n16551' href='#n16551'>16551</a>
<a id='n16552' href='#n16552'>16552</a>
<a id='n16553' href='#n16553'>16553</a>
<a id='n16554' href='#n16554'>16554</a>
<a id='n16555' href='#n16555'>16555</a>
<a id='n16556' href='#n16556'>16556</a>
<a id='n16557' href='#n16557'>16557</a>
<a id='n16558' href='#n16558'>16558</a>
<a id='n16559' href='#n16559'>16559</a>
<a id='n16560' href='#n16560'>16560</a>
<a id='n16561' href='#n16561'>16561</a>
<a id='n16562' href='#n16562'>16562</a>
<a id='n16563' href='#n16563'>16563</a>
<a id='n16564' href='#n16564'>16564</a>
<a id='n16565' href='#n16565'>16565</a>
<a id='n16566' href='#n16566'>16566</a>
<a id='n16567' href='#n16567'>16567</a>
<a id='n16568' href='#n16568'>16568</a>
<a id='n16569' href='#n16569'>16569</a>
<a id='n16570' href='#n16570'>16570</a>
<a id='n16571' href='#n16571'>16571</a>
<a id='n16572' href='#n16572'>16572</a>
<a id='n16573' href='#n16573'>16573</a>
<a id='n16574' href='#n16574'>16574</a>
<a id='n16575' href='#n16575'>16575</a>
<a id='n16576' href='#n16576'>16576</a>
<a id='n16577' href='#n16577'>16577</a>
<a id='n16578' href='#n16578'>16578</a>
<a id='n16579' href='#n16579'>16579</a>
<a id='n16580' href='#n16580'>16580</a>
<a id='n16581' href='#n16581'>16581</a>
<a id='n16582' href='#n16582'>16582</a>
<a id='n16583' href='#n16583'>16583</a>
<a id='n16584' href='#n16584'>16584</a>
<a id='n16585' href='#n16585'>16585</a>
<a id='n16586' href='#n16586'>16586</a>
<a id='n16587' href='#n16587'>16587</a>
<a id='n16588' href='#n16588'>16588</a>
<a id='n16589' href='#n16589'>16589</a>
<a id='n16590' href='#n16590'>16590</a>
<a id='n16591' href='#n16591'>16591</a>
<a id='n16592' href='#n16592'>16592</a>
<a id='n16593' href='#n16593'>16593</a>
<a id='n16594' href='#n16594'>16594</a>
<a id='n16595' href='#n16595'>16595</a>
<a id='n16596' href='#n16596'>16596</a>
<a id='n16597' href='#n16597'>16597</a>
<a id='n16598' href='#n16598'>16598</a>
<a id='n16599' href='#n16599'>16599</a>
<a id='n16600' href='#n16600'>16600</a>
<a id='n16601' href='#n16601'>16601</a>
<a id='n16602' href='#n16602'>16602</a>
<a id='n16603' href='#n16603'>16603</a>
<a id='n16604' href='#n16604'>16604</a>
<a id='n16605' href='#n16605'>16605</a>
<a id='n16606' href='#n16606'>16606</a>
<a id='n16607' href='#n16607'>16607</a>
<a id='n16608' href='#n16608'>16608</a>
<a id='n16609' href='#n16609'>16609</a>
<a id='n16610' href='#n16610'>16610</a>
<a id='n16611' href='#n16611'>16611</a>
<a id='n16612' href='#n16612'>16612</a>
<a id='n16613' href='#n16613'>16613</a>
<a id='n16614' href='#n16614'>16614</a>
<a id='n16615' href='#n16615'>16615</a>
<a id='n16616' href='#n16616'>16616</a>
<a id='n16617' href='#n16617'>16617</a>
<a id='n16618' href='#n16618'>16618</a>
<a id='n16619' href='#n16619'>16619</a>
<a id='n16620' href='#n16620'>16620</a>
<a id='n16621' href='#n16621'>16621</a>
<a id='n16622' href='#n16622'>16622</a>
<a id='n16623' href='#n16623'>16623</a>
<a id='n16624' href='#n16624'>16624</a>
<a id='n16625' href='#n16625'>16625</a>
<a id='n16626' href='#n16626'>16626</a>
<a id='n16627' href='#n16627'>16627</a>
<a id='n16628' href='#n16628'>16628</a>
<a id='n16629' href='#n16629'>16629</a>
<a id='n16630' href='#n16630'>16630</a>
<a id='n16631' href='#n16631'>16631</a>
<a id='n16632' href='#n16632'>16632</a>
<a id='n16633' href='#n16633'>16633</a>
<a id='n16634' href='#n16634'>16634</a>
<a id='n16635' href='#n16635'>16635</a>
<a id='n16636' href='#n16636'>16636</a>
<a id='n16637' href='#n16637'>16637</a>
<a id='n16638' href='#n16638'>16638</a>
<a id='n16639' href='#n16639'>16639</a>
<a id='n16640' href='#n16640'>16640</a>
<a id='n16641' href='#n16641'>16641</a>
<a id='n16642' href='#n16642'>16642</a>
<a id='n16643' href='#n16643'>16643</a>
<a id='n16644' href='#n16644'>16644</a>
<a id='n16645' href='#n16645'>16645</a>
<a id='n16646' href='#n16646'>16646</a>
<a id='n16647' href='#n16647'>16647</a>
<a id='n16648' href='#n16648'>16648</a>
<a id='n16649' href='#n16649'>16649</a>
<a id='n16650' href='#n16650'>16650</a>
<a id='n16651' href='#n16651'>16651</a>
<a id='n16652' href='#n16652'>16652</a>
<a id='n16653' href='#n16653'>16653</a>
<a id='n16654' href='#n16654'>16654</a>
<a id='n16655' href='#n16655'>16655</a>
<a id='n16656' href='#n16656'>16656</a>
<a id='n16657' href='#n16657'>16657</a>
<a id='n16658' href='#n16658'>16658</a>
<a id='n16659' href='#n16659'>16659</a>
<a id='n16660' href='#n16660'>16660</a>
<a id='n16661' href='#n16661'>16661</a>
<a id='n16662' href='#n16662'>16662</a>
<a id='n16663' href='#n16663'>16663</a>
<a id='n16664' href='#n16664'>16664</a>
<a id='n16665' href='#n16665'>16665</a>
<a id='n16666' href='#n16666'>16666</a>
<a id='n16667' href='#n16667'>16667</a>
<a id='n16668' href='#n16668'>16668</a>
<a id='n16669' href='#n16669'>16669</a>
<a id='n16670' href='#n16670'>16670</a>
<a id='n16671' href='#n16671'>16671</a>
<a id='n16672' href='#n16672'>16672</a>
<a id='n16673' href='#n16673'>16673</a>
<a id='n16674' href='#n16674'>16674</a>
<a id='n16675' href='#n16675'>16675</a>
<a id='n16676' href='#n16676'>16676</a>
<a id='n16677' href='#n16677'>16677</a>
<a id='n16678' href='#n16678'>16678</a>
<a id='n16679' href='#n16679'>16679</a>
<a id='n16680' href='#n16680'>16680</a>
<a id='n16681' href='#n16681'>16681</a>
<a id='n16682' href='#n16682'>16682</a>
<a id='n16683' href='#n16683'>16683</a>
<a id='n16684' href='#n16684'>16684</a>
<a id='n16685' href='#n16685'>16685</a>
<a id='n16686' href='#n16686'>16686</a>
<a id='n16687' href='#n16687'>16687</a>
<a id='n16688' href='#n16688'>16688</a>
<a id='n16689' href='#n16689'>16689</a>
<a id='n16690' href='#n16690'>16690</a>
<a id='n16691' href='#n16691'>16691</a>
<a id='n16692' href='#n16692'>16692</a>
<a id='n16693' href='#n16693'>16693</a>
<a id='n16694' href='#n16694'>16694</a>
<a id='n16695' href='#n16695'>16695</a>
<a id='n16696' href='#n16696'>16696</a>
<a id='n16697' href='#n16697'>16697</a>
<a id='n16698' href='#n16698'>16698</a>
<a id='n16699' href='#n16699'>16699</a>
<a id='n16700' href='#n16700'>16700</a>
<a id='n16701' href='#n16701'>16701</a>
<a id='n16702' href='#n16702'>16702</a>
<a id='n16703' href='#n16703'>16703</a>
<a id='n16704' href='#n16704'>16704</a>
<a id='n16705' href='#n16705'>16705</a>
<a id='n16706' href='#n16706'>16706</a>
<a id='n16707' href='#n16707'>16707</a>
<a id='n16708' href='#n16708'>16708</a>
<a id='n16709' href='#n16709'>16709</a>
<a id='n16710' href='#n16710'>16710</a>
<a id='n16711' href='#n16711'>16711</a>
<a id='n16712' href='#n16712'>16712</a>
<a id='n16713' href='#n16713'>16713</a>
<a id='n16714' href='#n16714'>16714</a>
<a id='n16715' href='#n16715'>16715</a>
<a id='n16716' href='#n16716'>16716</a>
<a id='n16717' href='#n16717'>16717</a>
<a id='n16718' href='#n16718'>16718</a>
<a id='n16719' href='#n16719'>16719</a>
<a id='n16720' href='#n16720'>16720</a>
<a id='n16721' href='#n16721'>16721</a>
<a id='n16722' href='#n16722'>16722</a>
<a id='n16723' href='#n16723'>16723</a>
<a id='n16724' href='#n16724'>16724</a>
<a id='n16725' href='#n16725'>16725</a>
<a id='n16726' href='#n16726'>16726</a>
<a id='n16727' href='#n16727'>16727</a>
<a id='n16728' href='#n16728'>16728</a>
<a id='n16729' href='#n16729'>16729</a>
<a id='n16730' href='#n16730'>16730</a>
<a id='n16731' href='#n16731'>16731</a>
<a id='n16732' href='#n16732'>16732</a>
<a id='n16733' href='#n16733'>16733</a>
<a id='n16734' href='#n16734'>16734</a>
<a id='n16735' href='#n16735'>16735</a>
<a id='n16736' href='#n16736'>16736</a>
<a id='n16737' href='#n16737'>16737</a>
<a id='n16738' href='#n16738'>16738</a>
<a id='n16739' href='#n16739'>16739</a>
<a id='n16740' href='#n16740'>16740</a>
<a id='n16741' href='#n16741'>16741</a>
<a id='n16742' href='#n16742'>16742</a>
<a id='n16743' href='#n16743'>16743</a>
<a id='n16744' href='#n16744'>16744</a>
<a id='n16745' href='#n16745'>16745</a>
<a id='n16746' href='#n16746'>16746</a>
<a id='n16747' href='#n16747'>16747</a>
<a id='n16748' href='#n16748'>16748</a>
<a id='n16749' href='#n16749'>16749</a>
<a id='n16750' href='#n16750'>16750</a>
<a id='n16751' href='#n16751'>16751</a>
<a id='n16752' href='#n16752'>16752</a>
<a id='n16753' href='#n16753'>16753</a>
<a id='n16754' href='#n16754'>16754</a>
<a id='n16755' href='#n16755'>16755</a>
<a id='n16756' href='#n16756'>16756</a>
<a id='n16757' href='#n16757'>16757</a>
<a id='n16758' href='#n16758'>16758</a>
<a id='n16759' href='#n16759'>16759</a>
<a id='n16760' href='#n16760'>16760</a>
<a id='n16761' href='#n16761'>16761</a>
<a id='n16762' href='#n16762'>16762</a>
<a id='n16763' href='#n16763'>16763</a>
<a id='n16764' href='#n16764'>16764</a>
<a id='n16765' href='#n16765'>16765</a>
<a id='n16766' href='#n16766'>16766</a>
<a id='n16767' href='#n16767'>16767</a>
<a id='n16768' href='#n16768'>16768</a>
<a id='n16769' href='#n16769'>16769</a>
<a id='n16770' href='#n16770'>16770</a>
<a id='n16771' href='#n16771'>16771</a>
<a id='n16772' href='#n16772'>16772</a>
<a id='n16773' href='#n16773'>16773</a>
<a id='n16774' href='#n16774'>16774</a>
<a id='n16775' href='#n16775'>16775</a>
<a id='n16776' href='#n16776'>16776</a>
<a id='n16777' href='#n16777'>16777</a>
<a id='n16778' href='#n16778'>16778</a>
<a id='n16779' href='#n16779'>16779</a>
<a id='n16780' href='#n16780'>16780</a>
<a id='n16781' href='#n16781'>16781</a>
<a id='n16782' href='#n16782'>16782</a>
<a id='n16783' href='#n16783'>16783</a>
<a id='n16784' href='#n16784'>16784</a>
<a id='n16785' href='#n16785'>16785</a>
<a id='n16786' href='#n16786'>16786</a>
<a id='n16787' href='#n16787'>16787</a>
<a id='n16788' href='#n16788'>16788</a>
<a id='n16789' href='#n16789'>16789</a>
<a id='n16790' href='#n16790'>16790</a>
<a id='n16791' href='#n16791'>16791</a>
<a id='n16792' href='#n16792'>16792</a>
<a id='n16793' href='#n16793'>16793</a>
<a id='n16794' href='#n16794'>16794</a>
<a id='n16795' href='#n16795'>16795</a>
<a id='n16796' href='#n16796'>16796</a>
<a id='n16797' href='#n16797'>16797</a>
<a id='n16798' href='#n16798'>16798</a>
<a id='n16799' href='#n16799'>16799</a>
<a id='n16800' href='#n16800'>16800</a>
<a id='n16801' href='#n16801'>16801</a>
<a id='n16802' href='#n16802'>16802</a>
<a id='n16803' href='#n16803'>16803</a>
<a id='n16804' href='#n16804'>16804</a>
<a id='n16805' href='#n16805'>16805</a>
<a id='n16806' href='#n16806'>16806</a>
<a id='n16807' href='#n16807'>16807</a>
<a id='n16808' href='#n16808'>16808</a>
<a id='n16809' href='#n16809'>16809</a>
<a id='n16810' href='#n16810'>16810</a>
<a id='n16811' href='#n16811'>16811</a>
<a id='n16812' href='#n16812'>16812</a>
<a id='n16813' href='#n16813'>16813</a>
<a id='n16814' href='#n16814'>16814</a>
<a id='n16815' href='#n16815'>16815</a>
<a id='n16816' href='#n16816'>16816</a>
<a id='n16817' href='#n16817'>16817</a>
<a id='n16818' href='#n16818'>16818</a>
<a id='n16819' href='#n16819'>16819</a>
<a id='n16820' href='#n16820'>16820</a>
<a id='n16821' href='#n16821'>16821</a>
<a id='n16822' href='#n16822'>16822</a>
<a id='n16823' href='#n16823'>16823</a>
<a id='n16824' href='#n16824'>16824</a>
<a id='n16825' href='#n16825'>16825</a>
<a id='n16826' href='#n16826'>16826</a>
<a id='n16827' href='#n16827'>16827</a>
<a id='n16828' href='#n16828'>16828</a>
<a id='n16829' href='#n16829'>16829</a>
<a id='n16830' href='#n16830'>16830</a>
<a id='n16831' href='#n16831'>16831</a>
<a id='n16832' href='#n16832'>16832</a>
<a id='n16833' href='#n16833'>16833</a>
<a id='n16834' href='#n16834'>16834</a>
<a id='n16835' href='#n16835'>16835</a>
<a id='n16836' href='#n16836'>16836</a>
<a id='n16837' href='#n16837'>16837</a>
<a id='n16838' href='#n16838'>16838</a>
<a id='n16839' href='#n16839'>16839</a>
<a id='n16840' href='#n16840'>16840</a>
<a id='n16841' href='#n16841'>16841</a>
<a id='n16842' href='#n16842'>16842</a>
<a id='n16843' href='#n16843'>16843</a>
<a id='n16844' href='#n16844'>16844</a>
<a id='n16845' href='#n16845'>16845</a>
<a id='n16846' href='#n16846'>16846</a>
<a id='n16847' href='#n16847'>16847</a>
<a id='n16848' href='#n16848'>16848</a>
<a id='n16849' href='#n16849'>16849</a>
<a id='n16850' href='#n16850'>16850</a>
<a id='n16851' href='#n16851'>16851</a>
<a id='n16852' href='#n16852'>16852</a>
<a id='n16853' href='#n16853'>16853</a>
<a id='n16854' href='#n16854'>16854</a>
<a id='n16855' href='#n16855'>16855</a>
<a id='n16856' href='#n16856'>16856</a>
<a id='n16857' href='#n16857'>16857</a>
<a id='n16858' href='#n16858'>16858</a>
<a id='n16859' href='#n16859'>16859</a>
<a id='n16860' href='#n16860'>16860</a>
<a id='n16861' href='#n16861'>16861</a>
<a id='n16862' href='#n16862'>16862</a>
<a id='n16863' href='#n16863'>16863</a>
<a id='n16864' href='#n16864'>16864</a>
<a id='n16865' href='#n16865'>16865</a>
<a id='n16866' href='#n16866'>16866</a>
<a id='n16867' href='#n16867'>16867</a>
<a id='n16868' href='#n16868'>16868</a>
<a id='n16869' href='#n16869'>16869</a>
<a id='n16870' href='#n16870'>16870</a>
<a id='n16871' href='#n16871'>16871</a>
<a id='n16872' href='#n16872'>16872</a>
<a id='n16873' href='#n16873'>16873</a>
<a id='n16874' href='#n16874'>16874</a>
<a id='n16875' href='#n16875'>16875</a>
<a id='n16876' href='#n16876'>16876</a>
<a id='n16877' href='#n16877'>16877</a>
<a id='n16878' href='#n16878'>16878</a>
<a id='n16879' href='#n16879'>16879</a>
<a id='n16880' href='#n16880'>16880</a>
<a id='n16881' href='#n16881'>16881</a>
<a id='n16882' href='#n16882'>16882</a>
<a id='n16883' href='#n16883'>16883</a>
<a id='n16884' href='#n16884'>16884</a>
<a id='n16885' href='#n16885'>16885</a>
<a id='n16886' href='#n16886'>16886</a>
<a id='n16887' href='#n16887'>16887</a>
<a id='n16888' href='#n16888'>16888</a>
<a id='n16889' href='#n16889'>16889</a>
<a id='n16890' href='#n16890'>16890</a>
<a id='n16891' href='#n16891'>16891</a>
<a id='n16892' href='#n16892'>16892</a>
<a id='n16893' href='#n16893'>16893</a>
<a id='n16894' href='#n16894'>16894</a>
<a id='n16895' href='#n16895'>16895</a>
<a id='n16896' href='#n16896'>16896</a>
<a id='n16897' href='#n16897'>16897</a>
<a id='n16898' href='#n16898'>16898</a>
<a id='n16899' href='#n16899'>16899</a>
<a id='n16900' href='#n16900'>16900</a>
<a id='n16901' href='#n16901'>16901</a>
<a id='n16902' href='#n16902'>16902</a>
<a id='n16903' href='#n16903'>16903</a>
<a id='n16904' href='#n16904'>16904</a>
<a id='n16905' href='#n16905'>16905</a>
<a id='n16906' href='#n16906'>16906</a>
<a id='n16907' href='#n16907'>16907</a>
<a id='n16908' href='#n16908'>16908</a>
<a id='n16909' href='#n16909'>16909</a>
<a id='n16910' href='#n16910'>16910</a>
<a id='n16911' href='#n16911'>16911</a>
<a id='n16912' href='#n16912'>16912</a>
<a id='n16913' href='#n16913'>16913</a>
<a id='n16914' href='#n16914'>16914</a>
<a id='n16915' href='#n16915'>16915</a>
<a id='n16916' href='#n16916'>16916</a>
<a id='n16917' href='#n16917'>16917</a>
<a id='n16918' href='#n16918'>16918</a>
<a id='n16919' href='#n16919'>16919</a>
<a id='n16920' href='#n16920'>16920</a>
<a id='n16921' href='#n16921'>16921</a>
<a id='n16922' href='#n16922'>16922</a>
<a id='n16923' href='#n16923'>16923</a>
<a id='n16924' href='#n16924'>16924</a>
<a id='n16925' href='#n16925'>16925</a>
<a id='n16926' href='#n16926'>16926</a>
<a id='n16927' href='#n16927'>16927</a>
<a id='n16928' href='#n16928'>16928</a>
<a id='n16929' href='#n16929'>16929</a>
<a id='n16930' href='#n16930'>16930</a>
<a id='n16931' href='#n16931'>16931</a>
<a id='n16932' href='#n16932'>16932</a>
<a id='n16933' href='#n16933'>16933</a>
<a id='n16934' href='#n16934'>16934</a>
<a id='n16935' href='#n16935'>16935</a>
<a id='n16936' href='#n16936'>16936</a>
<a id='n16937' href='#n16937'>16937</a>
<a id='n16938' href='#n16938'>16938</a>
<a id='n16939' href='#n16939'>16939</a>
<a id='n16940' href='#n16940'>16940</a>
<a id='n16941' href='#n16941'>16941</a>
<a id='n16942' href='#n16942'>16942</a>
<a id='n16943' href='#n16943'>16943</a>
<a id='n16944' href='#n16944'>16944</a>
<a id='n16945' href='#n16945'>16945</a>
<a id='n16946' href='#n16946'>16946</a>
<a id='n16947' href='#n16947'>16947</a>
<a id='n16948' href='#n16948'>16948</a>
<a id='n16949' href='#n16949'>16949</a>
<a id='n16950' href='#n16950'>16950</a>
<a id='n16951' href='#n16951'>16951</a>
<a id='n16952' href='#n16952'>16952</a>
<a id='n16953' href='#n16953'>16953</a>
<a id='n16954' href='#n16954'>16954</a>
<a id='n16955' href='#n16955'>16955</a>
<a id='n16956' href='#n16956'>16956</a>
<a id='n16957' href='#n16957'>16957</a>
<a id='n16958' href='#n16958'>16958</a>
<a id='n16959' href='#n16959'>16959</a>
<a id='n16960' href='#n16960'>16960</a>
<a id='n16961' href='#n16961'>16961</a>
<a id='n16962' href='#n16962'>16962</a>
<a id='n16963' href='#n16963'>16963</a>
<a id='n16964' href='#n16964'>16964</a>
<a id='n16965' href='#n16965'>16965</a>
<a id='n16966' href='#n16966'>16966</a>
<a id='n16967' href='#n16967'>16967</a>
<a id='n16968' href='#n16968'>16968</a>
<a id='n16969' href='#n16969'>16969</a>
<a id='n16970' href='#n16970'>16970</a>
<a id='n16971' href='#n16971'>16971</a>
<a id='n16972' href='#n16972'>16972</a>
<a id='n16973' href='#n16973'>16973</a>
<a id='n16974' href='#n16974'>16974</a>
<a id='n16975' href='#n16975'>16975</a>
<a id='n16976' href='#n16976'>16976</a>
<a id='n16977' href='#n16977'>16977</a>
<a id='n16978' href='#n16978'>16978</a>
<a id='n16979' href='#n16979'>16979</a>
<a id='n16980' href='#n16980'>16980</a>
<a id='n16981' href='#n16981'>16981</a>
<a id='n16982' href='#n16982'>16982</a>
<a id='n16983' href='#n16983'>16983</a>
<a id='n16984' href='#n16984'>16984</a>
<a id='n16985' href='#n16985'>16985</a>
<a id='n16986' href='#n16986'>16986</a>
<a id='n16987' href='#n16987'>16987</a>
<a id='n16988' href='#n16988'>16988</a>
<a id='n16989' href='#n16989'>16989</a>
<a id='n16990' href='#n16990'>16990</a>
<a id='n16991' href='#n16991'>16991</a>
<a id='n16992' href='#n16992'>16992</a>
<a id='n16993' href='#n16993'>16993</a>
<a id='n16994' href='#n16994'>16994</a>
<a id='n16995' href='#n16995'>16995</a>
<a id='n16996' href='#n16996'>16996</a>
<a id='n16997' href='#n16997'>16997</a>
<a id='n16998' href='#n16998'>16998</a>
<a id='n16999' href='#n16999'>16999</a>
<a id='n17000' href='#n17000'>17000</a>
<a id='n17001' href='#n17001'>17001</a>
<a id='n17002' href='#n17002'>17002</a>
<a id='n17003' href='#n17003'>17003</a>
<a id='n17004' href='#n17004'>17004</a>
<a id='n17005' href='#n17005'>17005</a>
<a id='n17006' href='#n17006'>17006</a>
<a id='n17007' href='#n17007'>17007</a>
<a id='n17008' href='#n17008'>17008</a>
<a id='n17009' href='#n17009'>17009</a>
<a id='n17010' href='#n17010'>17010</a>
<a id='n17011' href='#n17011'>17011</a>
<a id='n17012' href='#n17012'>17012</a>
<a id='n17013' href='#n17013'>17013</a>
<a id='n17014' href='#n17014'>17014</a>
<a id='n17015' href='#n17015'>17015</a>
<a id='n17016' href='#n17016'>17016</a>
<a id='n17017' href='#n17017'>17017</a>
<a id='n17018' href='#n17018'>17018</a>
<a id='n17019' href='#n17019'>17019</a>
<a id='n17020' href='#n17020'>17020</a>
<a id='n17021' href='#n17021'>17021</a>
<a id='n17022' href='#n17022'>17022</a>
<a id='n17023' href='#n17023'>17023</a>
<a id='n17024' href='#n17024'>17024</a>
<a id='n17025' href='#n17025'>17025</a>
<a id='n17026' href='#n17026'>17026</a>
<a id='n17027' href='#n17027'>17027</a>
<a id='n17028' href='#n17028'>17028</a>
<a id='n17029' href='#n17029'>17029</a>
<a id='n17030' href='#n17030'>17030</a>
<a id='n17031' href='#n17031'>17031</a>
<a id='n17032' href='#n17032'>17032</a>
<a id='n17033' href='#n17033'>17033</a>
<a id='n17034' href='#n17034'>17034</a>
<a id='n17035' href='#n17035'>17035</a>
<a id='n17036' href='#n17036'>17036</a>
<a id='n17037' href='#n17037'>17037</a>
<a id='n17038' href='#n17038'>17038</a>
<a id='n17039' href='#n17039'>17039</a>
<a id='n17040' href='#n17040'>17040</a>
<a id='n17041' href='#n17041'>17041</a>
<a id='n17042' href='#n17042'>17042</a>
<a id='n17043' href='#n17043'>17043</a>
<a id='n17044' href='#n17044'>17044</a>
<a id='n17045' href='#n17045'>17045</a>
<a id='n17046' href='#n17046'>17046</a>
<a id='n17047' href='#n17047'>17047</a>
<a id='n17048' href='#n17048'>17048</a>
<a id='n17049' href='#n17049'>17049</a>
<a id='n17050' href='#n17050'>17050</a>
<a id='n17051' href='#n17051'>17051</a>
<a id='n17052' href='#n17052'>17052</a>
<a id='n17053' href='#n17053'>17053</a>
<a id='n17054' href='#n17054'>17054</a>
<a id='n17055' href='#n17055'>17055</a>
<a id='n17056' href='#n17056'>17056</a>
<a id='n17057' href='#n17057'>17057</a>
<a id='n17058' href='#n17058'>17058</a>
<a id='n17059' href='#n17059'>17059</a>
<a id='n17060' href='#n17060'>17060</a>
<a id='n17061' href='#n17061'>17061</a>
<a id='n17062' href='#n17062'>17062</a>
<a id='n17063' href='#n17063'>17063</a>
<a id='n17064' href='#n17064'>17064</a>
<a id='n17065' href='#n17065'>17065</a>
<a id='n17066' href='#n17066'>17066</a>
<a id='n17067' href='#n17067'>17067</a>
<a id='n17068' href='#n17068'>17068</a>
<a id='n17069' href='#n17069'>17069</a>
<a id='n17070' href='#n17070'>17070</a>
<a id='n17071' href='#n17071'>17071</a>
<a id='n17072' href='#n17072'>17072</a>
<a id='n17073' href='#n17073'>17073</a>
<a id='n17074' href='#n17074'>17074</a>
<a id='n17075' href='#n17075'>17075</a>
<a id='n17076' href='#n17076'>17076</a>
<a id='n17077' href='#n17077'>17077</a>
<a id='n17078' href='#n17078'>17078</a>
<a id='n17079' href='#n17079'>17079</a>
<a id='n17080' href='#n17080'>17080</a>
<a id='n17081' href='#n17081'>17081</a>
<a id='n17082' href='#n17082'>17082</a>
<a id='n17083' href='#n17083'>17083</a>
<a id='n17084' href='#n17084'>17084</a>
<a id='n17085' href='#n17085'>17085</a>
<a id='n17086' href='#n17086'>17086</a>
<a id='n17087' href='#n17087'>17087</a>
<a id='n17088' href='#n17088'>17088</a>
<a id='n17089' href='#n17089'>17089</a>
<a id='n17090' href='#n17090'>17090</a>
<a id='n17091' href='#n17091'>17091</a>
<a id='n17092' href='#n17092'>17092</a>
<a id='n17093' href='#n17093'>17093</a>
<a id='n17094' href='#n17094'>17094</a>
<a id='n17095' href='#n17095'>17095</a>
<a id='n17096' href='#n17096'>17096</a>
<a id='n17097' href='#n17097'>17097</a>
<a id='n17098' href='#n17098'>17098</a>
<a id='n17099' href='#n17099'>17099</a>
<a id='n17100' href='#n17100'>17100</a>
<a id='n17101' href='#n17101'>17101</a>
<a id='n17102' href='#n17102'>17102</a>
<a id='n17103' href='#n17103'>17103</a>
<a id='n17104' href='#n17104'>17104</a>
<a id='n17105' href='#n17105'>17105</a>
<a id='n17106' href='#n17106'>17106</a>
<a id='n17107' href='#n17107'>17107</a>
<a id='n17108' href='#n17108'>17108</a>
<a id='n17109' href='#n17109'>17109</a>
<a id='n17110' href='#n17110'>17110</a>
<a id='n17111' href='#n17111'>17111</a>
<a id='n17112' href='#n17112'>17112</a>
<a id='n17113' href='#n17113'>17113</a>
<a id='n17114' href='#n17114'>17114</a>
<a id='n17115' href='#n17115'>17115</a>
<a id='n17116' href='#n17116'>17116</a>
<a id='n17117' href='#n17117'>17117</a>
<a id='n17118' href='#n17118'>17118</a>
<a id='n17119' href='#n17119'>17119</a>
<a id='n17120' href='#n17120'>17120</a>
<a id='n17121' href='#n17121'>17121</a>
<a id='n17122' href='#n17122'>17122</a>
<a id='n17123' href='#n17123'>17123</a>
<a id='n17124' href='#n17124'>17124</a>
<a id='n17125' href='#n17125'>17125</a>
<a id='n17126' href='#n17126'>17126</a>
<a id='n17127' href='#n17127'>17127</a>
<a id='n17128' href='#n17128'>17128</a>
<a id='n17129' href='#n17129'>17129</a>
<a id='n17130' href='#n17130'>17130</a>
<a id='n17131' href='#n17131'>17131</a>
<a id='n17132' href='#n17132'>17132</a>
<a id='n17133' href='#n17133'>17133</a>
<a id='n17134' href='#n17134'>17134</a>
<a id='n17135' href='#n17135'>17135</a>
<a id='n17136' href='#n17136'>17136</a>
<a id='n17137' href='#n17137'>17137</a>
<a id='n17138' href='#n17138'>17138</a>
<a id='n17139' href='#n17139'>17139</a>
<a id='n17140' href='#n17140'>17140</a>
<a id='n17141' href='#n17141'>17141</a>
<a id='n17142' href='#n17142'>17142</a>
<a id='n17143' href='#n17143'>17143</a>
<a id='n17144' href='#n17144'>17144</a>
<a id='n17145' href='#n17145'>17145</a>
<a id='n17146' href='#n17146'>17146</a>
<a id='n17147' href='#n17147'>17147</a>
<a id='n17148' href='#n17148'>17148</a>
<a id='n17149' href='#n17149'>17149</a>
<a id='n17150' href='#n17150'>17150</a>
<a id='n17151' href='#n17151'>17151</a>
<a id='n17152' href='#n17152'>17152</a>
<a id='n17153' href='#n17153'>17153</a>
<a id='n17154' href='#n17154'>17154</a>
<a id='n17155' href='#n17155'>17155</a>
<a id='n17156' href='#n17156'>17156</a>
<a id='n17157' href='#n17157'>17157</a>
<a id='n17158' href='#n17158'>17158</a>
<a id='n17159' href='#n17159'>17159</a>
<a id='n17160' href='#n17160'>17160</a>
<a id='n17161' href='#n17161'>17161</a>
<a id='n17162' href='#n17162'>17162</a>
<a id='n17163' href='#n17163'>17163</a>
<a id='n17164' href='#n17164'>17164</a>
<a id='n17165' href='#n17165'>17165</a>
<a id='n17166' href='#n17166'>17166</a>
<a id='n17167' href='#n17167'>17167</a>
<a id='n17168' href='#n17168'>17168</a>
<a id='n17169' href='#n17169'>17169</a>
<a id='n17170' href='#n17170'>17170</a>
<a id='n17171' href='#n17171'>17171</a>
<a id='n17172' href='#n17172'>17172</a>
<a id='n17173' href='#n17173'>17173</a>
<a id='n17174' href='#n17174'>17174</a>
<a id='n17175' href='#n17175'>17175</a>
<a id='n17176' href='#n17176'>17176</a>
<a id='n17177' href='#n17177'>17177</a>
<a id='n17178' href='#n17178'>17178</a>
<a id='n17179' href='#n17179'>17179</a>
<a id='n17180' href='#n17180'>17180</a>
<a id='n17181' href='#n17181'>17181</a>
<a id='n17182' href='#n17182'>17182</a>
<a id='n17183' href='#n17183'>17183</a>
<a id='n17184' href='#n17184'>17184</a>
<a id='n17185' href='#n17185'>17185</a>
<a id='n17186' href='#n17186'>17186</a>
<a id='n17187' href='#n17187'>17187</a>
<a id='n17188' href='#n17188'>17188</a>
<a id='n17189' href='#n17189'>17189</a>
<a id='n17190' href='#n17190'>17190</a>
<a id='n17191' href='#n17191'>17191</a>
<a id='n17192' href='#n17192'>17192</a>
<a id='n17193' href='#n17193'>17193</a>
<a id='n17194' href='#n17194'>17194</a>
<a id='n17195' href='#n17195'>17195</a>
<a id='n17196' href='#n17196'>17196</a>
<a id='n17197' href='#n17197'>17197</a>
<a id='n17198' href='#n17198'>17198</a>
<a id='n17199' href='#n17199'>17199</a>
<a id='n17200' href='#n17200'>17200</a>
<a id='n17201' href='#n17201'>17201</a>
<a id='n17202' href='#n17202'>17202</a>
<a id='n17203' href='#n17203'>17203</a>
<a id='n17204' href='#n17204'>17204</a>
<a id='n17205' href='#n17205'>17205</a>
<a id='n17206' href='#n17206'>17206</a>
<a id='n17207' href='#n17207'>17207</a>
<a id='n17208' href='#n17208'>17208</a>
<a id='n17209' href='#n17209'>17209</a>
<a id='n17210' href='#n17210'>17210</a>
<a id='n17211' href='#n17211'>17211</a>
<a id='n17212' href='#n17212'>17212</a>
<a id='n17213' href='#n17213'>17213</a>
<a id='n17214' href='#n17214'>17214</a>
<a id='n17215' href='#n17215'>17215</a>
<a id='n17216' href='#n17216'>17216</a>
<a id='n17217' href='#n17217'>17217</a>
<a id='n17218' href='#n17218'>17218</a>
<a id='n17219' href='#n17219'>17219</a>
<a id='n17220' href='#n17220'>17220</a>
<a id='n17221' href='#n17221'>17221</a>
<a id='n17222' href='#n17222'>17222</a>
<a id='n17223' href='#n17223'>17223</a>
<a id='n17224' href='#n17224'>17224</a>
<a id='n17225' href='#n17225'>17225</a>
<a id='n17226' href='#n17226'>17226</a>
<a id='n17227' href='#n17227'>17227</a>
<a id='n17228' href='#n17228'>17228</a>
<a id='n17229' href='#n17229'>17229</a>
<a id='n17230' href='#n17230'>17230</a>
<a id='n17231' href='#n17231'>17231</a>
<a id='n17232' href='#n17232'>17232</a>
<a id='n17233' href='#n17233'>17233</a>
<a id='n17234' href='#n17234'>17234</a>
<a id='n17235' href='#n17235'>17235</a>
<a id='n17236' href='#n17236'>17236</a>
<a id='n17237' href='#n17237'>17237</a>
<a id='n17238' href='#n17238'>17238</a>
<a id='n17239' href='#n17239'>17239</a>
<a id='n17240' href='#n17240'>17240</a>
<a id='n17241' href='#n17241'>17241</a>
<a id='n17242' href='#n17242'>17242</a>
<a id='n17243' href='#n17243'>17243</a>
<a id='n17244' href='#n17244'>17244</a>
<a id='n17245' href='#n17245'>17245</a>
<a id='n17246' href='#n17246'>17246</a>
<a id='n17247' href='#n17247'>17247</a>
<a id='n17248' href='#n17248'>17248</a>
<a id='n17249' href='#n17249'>17249</a>
<a id='n17250' href='#n17250'>17250</a>
<a id='n17251' href='#n17251'>17251</a>
<a id='n17252' href='#n17252'>17252</a>
<a id='n17253' href='#n17253'>17253</a>
<a id='n17254' href='#n17254'>17254</a>
<a id='n17255' href='#n17255'>17255</a>
<a id='n17256' href='#n17256'>17256</a>
<a id='n17257' href='#n17257'>17257</a>
<a id='n17258' href='#n17258'>17258</a>
<a id='n17259' href='#n17259'>17259</a>
<a id='n17260' href='#n17260'>17260</a>
<a id='n17261' href='#n17261'>17261</a>
<a id='n17262' href='#n17262'>17262</a>
<a id='n17263' href='#n17263'>17263</a>
<a id='n17264' href='#n17264'>17264</a>
<a id='n17265' href='#n17265'>17265</a>
<a id='n17266' href='#n17266'>17266</a>
<a id='n17267' href='#n17267'>17267</a>
<a id='n17268' href='#n17268'>17268</a>
<a id='n17269' href='#n17269'>17269</a>
<a id='n17270' href='#n17270'>17270</a>
<a id='n17271' href='#n17271'>17271</a>
<a id='n17272' href='#n17272'>17272</a>
<a id='n17273' href='#n17273'>17273</a>
<a id='n17274' href='#n17274'>17274</a>
<a id='n17275' href='#n17275'>17275</a>
<a id='n17276' href='#n17276'>17276</a>
<a id='n17277' href='#n17277'>17277</a>
<a id='n17278' href='#n17278'>17278</a>
<a id='n17279' href='#n17279'>17279</a>
<a id='n17280' href='#n17280'>17280</a>
<a id='n17281' href='#n17281'>17281</a>
<a id='n17282' href='#n17282'>17282</a>
<a id='n17283' href='#n17283'>17283</a>
<a id='n17284' href='#n17284'>17284</a>
<a id='n17285' href='#n17285'>17285</a>
<a id='n17286' href='#n17286'>17286</a>
<a id='n17287' href='#n17287'>17287</a>
<a id='n17288' href='#n17288'>17288</a>
<a id='n17289' href='#n17289'>17289</a>
<a id='n17290' href='#n17290'>17290</a>
<a id='n17291' href='#n17291'>17291</a>
<a id='n17292' href='#n17292'>17292</a>
<a id='n17293' href='#n17293'>17293</a>
<a id='n17294' href='#n17294'>17294</a>
<a id='n17295' href='#n17295'>17295</a>
<a id='n17296' href='#n17296'>17296</a>
<a id='n17297' href='#n17297'>17297</a>
<a id='n17298' href='#n17298'>17298</a>
<a id='n17299' href='#n17299'>17299</a>
<a id='n17300' href='#n17300'>17300</a>
<a id='n17301' href='#n17301'>17301</a>
<a id='n17302' href='#n17302'>17302</a>
<a id='n17303' href='#n17303'>17303</a>
<a id='n17304' href='#n17304'>17304</a>
<a id='n17305' href='#n17305'>17305</a>
<a id='n17306' href='#n17306'>17306</a>
<a id='n17307' href='#n17307'>17307</a>
<a id='n17308' href='#n17308'>17308</a>
<a id='n17309' href='#n17309'>17309</a>
<a id='n17310' href='#n17310'>17310</a>
<a id='n17311' href='#n17311'>17311</a>
<a id='n17312' href='#n17312'>17312</a>
<a id='n17313' href='#n17313'>17313</a>
<a id='n17314' href='#n17314'>17314</a>
<a id='n17315' href='#n17315'>17315</a>
<a id='n17316' href='#n17316'>17316</a>
<a id='n17317' href='#n17317'>17317</a>
<a id='n17318' href='#n17318'>17318</a>
<a id='n17319' href='#n17319'>17319</a>
<a id='n17320' href='#n17320'>17320</a>
<a id='n17321' href='#n17321'>17321</a>
<a id='n17322' href='#n17322'>17322</a>
<a id='n17323' href='#n17323'>17323</a>
<a id='n17324' href='#n17324'>17324</a>
<a id='n17325' href='#n17325'>17325</a>
<a id='n17326' href='#n17326'>17326</a>
<a id='n17327' href='#n17327'>17327</a>
<a id='n17328' href='#n17328'>17328</a>
<a id='n17329' href='#n17329'>17329</a>
<a id='n17330' href='#n17330'>17330</a>
<a id='n17331' href='#n17331'>17331</a>
<a id='n17332' href='#n17332'>17332</a>
<a id='n17333' href='#n17333'>17333</a>
<a id='n17334' href='#n17334'>17334</a>
<a id='n17335' href='#n17335'>17335</a>
<a id='n17336' href='#n17336'>17336</a>
<a id='n17337' href='#n17337'>17337</a>
<a id='n17338' href='#n17338'>17338</a>
<a id='n17339' href='#n17339'>17339</a>
<a id='n17340' href='#n17340'>17340</a>
<a id='n17341' href='#n17341'>17341</a>
<a id='n17342' href='#n17342'>17342</a>
<a id='n17343' href='#n17343'>17343</a>
<a id='n17344' href='#n17344'>17344</a>
<a id='n17345' href='#n17345'>17345</a>
<a id='n17346' href='#n17346'>17346</a>
<a id='n17347' href='#n17347'>17347</a>
<a id='n17348' href='#n17348'>17348</a>
<a id='n17349' href='#n17349'>17349</a>
<a id='n17350' href='#n17350'>17350</a>
<a id='n17351' href='#n17351'>17351</a>
<a id='n17352' href='#n17352'>17352</a>
<a id='n17353' href='#n17353'>17353</a>
<a id='n17354' href='#n17354'>17354</a>
<a id='n17355' href='#n17355'>17355</a>
<a id='n17356' href='#n17356'>17356</a>
<a id='n17357' href='#n17357'>17357</a>
<a id='n17358' href='#n17358'>17358</a>
<a id='n17359' href='#n17359'>17359</a>
<a id='n17360' href='#n17360'>17360</a>
<a id='n17361' href='#n17361'>17361</a>
<a id='n17362' href='#n17362'>17362</a>
<a id='n17363' href='#n17363'>17363</a>
<a id='n17364' href='#n17364'>17364</a>
<a id='n17365' href='#n17365'>17365</a>
<a id='n17366' href='#n17366'>17366</a>
<a id='n17367' href='#n17367'>17367</a>
<a id='n17368' href='#n17368'>17368</a>
<a id='n17369' href='#n17369'>17369</a>
<a id='n17370' href='#n17370'>17370</a>
<a id='n17371' href='#n17371'>17371</a>
<a id='n17372' href='#n17372'>17372</a>
<a id='n17373' href='#n17373'>17373</a>
<a id='n17374' href='#n17374'>17374</a>
<a id='n17375' href='#n17375'>17375</a>
<a id='n17376' href='#n17376'>17376</a>
<a id='n17377' href='#n17377'>17377</a>
<a id='n17378' href='#n17378'>17378</a>
<a id='n17379' href='#n17379'>17379</a>
<a id='n17380' href='#n17380'>17380</a>
<a id='n17381' href='#n17381'>17381</a>
<a id='n17382' href='#n17382'>17382</a>
<a id='n17383' href='#n17383'>17383</a>
<a id='n17384' href='#n17384'>17384</a>
<a id='n17385' href='#n17385'>17385</a>
<a id='n17386' href='#n17386'>17386</a>
<a id='n17387' href='#n17387'>17387</a>
<a id='n17388' href='#n17388'>17388</a>
<a id='n17389' href='#n17389'>17389</a>
<a id='n17390' href='#n17390'>17390</a>
<a id='n17391' href='#n17391'>17391</a>
<a id='n17392' href='#n17392'>17392</a>
<a id='n17393' href='#n17393'>17393</a>
<a id='n17394' href='#n17394'>17394</a>
<a id='n17395' href='#n17395'>17395</a>
<a id='n17396' href='#n17396'>17396</a>
<a id='n17397' href='#n17397'>17397</a>
<a id='n17398' href='#n17398'>17398</a>
<a id='n17399' href='#n17399'>17399</a>
<a id='n17400' href='#n17400'>17400</a>
<a id='n17401' href='#n17401'>17401</a>
<a id='n17402' href='#n17402'>17402</a>
<a id='n17403' href='#n17403'>17403</a>
<a id='n17404' href='#n17404'>17404</a>
<a id='n17405' href='#n17405'>17405</a>
<a id='n17406' href='#n17406'>17406</a>
<a id='n17407' href='#n17407'>17407</a>
<a id='n17408' href='#n17408'>17408</a>
<a id='n17409' href='#n17409'>17409</a>
<a id='n17410' href='#n17410'>17410</a>
<a id='n17411' href='#n17411'>17411</a>
<a id='n17412' href='#n17412'>17412</a>
<a id='n17413' href='#n17413'>17413</a>
<a id='n17414' href='#n17414'>17414</a>
<a id='n17415' href='#n17415'>17415</a>
<a id='n17416' href='#n17416'>17416</a>
<a id='n17417' href='#n17417'>17417</a>
<a id='n17418' href='#n17418'>17418</a>
<a id='n17419' href='#n17419'>17419</a>
<a id='n17420' href='#n17420'>17420</a>
<a id='n17421' href='#n17421'>17421</a>
<a id='n17422' href='#n17422'>17422</a>
<a id='n17423' href='#n17423'>17423</a>
<a id='n17424' href='#n17424'>17424</a>
<a id='n17425' href='#n17425'>17425</a>
<a id='n17426' href='#n17426'>17426</a>
<a id='n17427' href='#n17427'>17427</a>
<a id='n17428' href='#n17428'>17428</a>
<a id='n17429' href='#n17429'>17429</a>
<a id='n17430' href='#n17430'>17430</a>
<a id='n17431' href='#n17431'>17431</a>
<a id='n17432' href='#n17432'>17432</a>
<a id='n17433' href='#n17433'>17433</a>
<a id='n17434' href='#n17434'>17434</a>
<a id='n17435' href='#n17435'>17435</a>
<a id='n17436' href='#n17436'>17436</a>
<a id='n17437' href='#n17437'>17437</a>
<a id='n17438' href='#n17438'>17438</a>
<a id='n17439' href='#n17439'>17439</a>
<a id='n17440' href='#n17440'>17440</a>
<a id='n17441' href='#n17441'>17441</a>
<a id='n17442' href='#n17442'>17442</a>
<a id='n17443' href='#n17443'>17443</a>
<a id='n17444' href='#n17444'>17444</a>
<a id='n17445' href='#n17445'>17445</a>
<a id='n17446' href='#n17446'>17446</a>
<a id='n17447' href='#n17447'>17447</a>
<a id='n17448' href='#n17448'>17448</a>
<a id='n17449' href='#n17449'>17449</a>
<a id='n17450' href='#n17450'>17450</a>
<a id='n17451' href='#n17451'>17451</a>
<a id='n17452' href='#n17452'>17452</a>
<a id='n17453' href='#n17453'>17453</a>
<a id='n17454' href='#n17454'>17454</a>
<a id='n17455' href='#n17455'>17455</a>
<a id='n17456' href='#n17456'>17456</a>
<a id='n17457' href='#n17457'>17457</a>
<a id='n17458' href='#n17458'>17458</a>
<a id='n17459' href='#n17459'>17459</a>
<a id='n17460' href='#n17460'>17460</a>
<a id='n17461' href='#n17461'>17461</a>
<a id='n17462' href='#n17462'>17462</a>
<a id='n17463' href='#n17463'>17463</a>
<a id='n17464' href='#n17464'>17464</a>
<a id='n17465' href='#n17465'>17465</a>
<a id='n17466' href='#n17466'>17466</a>
<a id='n17467' href='#n17467'>17467</a>
<a id='n17468' href='#n17468'>17468</a>
<a id='n17469' href='#n17469'>17469</a>
<a id='n17470' href='#n17470'>17470</a>
<a id='n17471' href='#n17471'>17471</a>
<a id='n17472' href='#n17472'>17472</a>
<a id='n17473' href='#n17473'>17473</a>
<a id='n17474' href='#n17474'>17474</a>
<a id='n17475' href='#n17475'>17475</a>
<a id='n17476' href='#n17476'>17476</a>
<a id='n17477' href='#n17477'>17477</a>
<a id='n17478' href='#n17478'>17478</a>
<a id='n17479' href='#n17479'>17479</a>
<a id='n17480' href='#n17480'>17480</a>
<a id='n17481' href='#n17481'>17481</a>
<a id='n17482' href='#n17482'>17482</a>
<a id='n17483' href='#n17483'>17483</a>
<a id='n17484' href='#n17484'>17484</a>
<a id='n17485' href='#n17485'>17485</a>
<a id='n17486' href='#n17486'>17486</a>
<a id='n17487' href='#n17487'>17487</a>
<a id='n17488' href='#n17488'>17488</a>
<a id='n17489' href='#n17489'>17489</a>
<a id='n17490' href='#n17490'>17490</a>
<a id='n17491' href='#n17491'>17491</a>
<a id='n17492' href='#n17492'>17492</a>
<a id='n17493' href='#n17493'>17493</a>
<a id='n17494' href='#n17494'>17494</a>
<a id='n17495' href='#n17495'>17495</a>
<a id='n17496' href='#n17496'>17496</a>
<a id='n17497' href='#n17497'>17497</a>
<a id='n17498' href='#n17498'>17498</a>
<a id='n17499' href='#n17499'>17499</a>
<a id='n17500' href='#n17500'>17500</a>
<a id='n17501' href='#n17501'>17501</a>
<a id='n17502' href='#n17502'>17502</a>
<a id='n17503' href='#n17503'>17503</a>
<a id='n17504' href='#n17504'>17504</a>
<a id='n17505' href='#n17505'>17505</a>
<a id='n17506' href='#n17506'>17506</a>
<a id='n17507' href='#n17507'>17507</a>
<a id='n17508' href='#n17508'>17508</a>
<a id='n17509' href='#n17509'>17509</a>
<a id='n17510' href='#n17510'>17510</a>
<a id='n17511' href='#n17511'>17511</a>
<a id='n17512' href='#n17512'>17512</a>
<a id='n17513' href='#n17513'>17513</a>
<a id='n17514' href='#n17514'>17514</a>
<a id='n17515' href='#n17515'>17515</a>
<a id='n17516' href='#n17516'>17516</a>
<a id='n17517' href='#n17517'>17517</a>
<a id='n17518' href='#n17518'>17518</a>
<a id='n17519' href='#n17519'>17519</a>
<a id='n17520' href='#n17520'>17520</a>
<a id='n17521' href='#n17521'>17521</a>
<a id='n17522' href='#n17522'>17522</a>
<a id='n17523' href='#n17523'>17523</a>
<a id='n17524' href='#n17524'>17524</a>
<a id='n17525' href='#n17525'>17525</a>
<a id='n17526' href='#n17526'>17526</a>
<a id='n17527' href='#n17527'>17527</a>
<a id='n17528' href='#n17528'>17528</a>
<a id='n17529' href='#n17529'>17529</a>
<a id='n17530' href='#n17530'>17530</a>
<a id='n17531' href='#n17531'>17531</a>
<a id='n17532' href='#n17532'>17532</a>
<a id='n17533' href='#n17533'>17533</a>
<a id='n17534' href='#n17534'>17534</a>
<a id='n17535' href='#n17535'>17535</a>
<a id='n17536' href='#n17536'>17536</a>
<a id='n17537' href='#n17537'>17537</a>
<a id='n17538' href='#n17538'>17538</a>
<a id='n17539' href='#n17539'>17539</a>
<a id='n17540' href='#n17540'>17540</a>
<a id='n17541' href='#n17541'>17541</a>
<a id='n17542' href='#n17542'>17542</a>
<a id='n17543' href='#n17543'>17543</a>
<a id='n17544' href='#n17544'>17544</a>
<a id='n17545' href='#n17545'>17545</a>
<a id='n17546' href='#n17546'>17546</a>
<a id='n17547' href='#n17547'>17547</a>
<a id='n17548' href='#n17548'>17548</a>
<a id='n17549' href='#n17549'>17549</a>
<a id='n17550' href='#n17550'>17550</a>
<a id='n17551' href='#n17551'>17551</a>
<a id='n17552' href='#n17552'>17552</a>
<a id='n17553' href='#n17553'>17553</a>
<a id='n17554' href='#n17554'>17554</a>
<a id='n17555' href='#n17555'>17555</a>
<a id='n17556' href='#n17556'>17556</a>
<a id='n17557' href='#n17557'>17557</a>
<a id='n17558' href='#n17558'>17558</a>
<a id='n17559' href='#n17559'>17559</a>
<a id='n17560' href='#n17560'>17560</a>
<a id='n17561' href='#n17561'>17561</a>
<a id='n17562' href='#n17562'>17562</a>
<a id='n17563' href='#n17563'>17563</a>
<a id='n17564' href='#n17564'>17564</a>
<a id='n17565' href='#n17565'>17565</a>
<a id='n17566' href='#n17566'>17566</a>
<a id='n17567' href='#n17567'>17567</a>
<a id='n17568' href='#n17568'>17568</a>
<a id='n17569' href='#n17569'>17569</a>
<a id='n17570' href='#n17570'>17570</a>
<a id='n17571' href='#n17571'>17571</a>
<a id='n17572' href='#n17572'>17572</a>
<a id='n17573' href='#n17573'>17573</a>
<a id='n17574' href='#n17574'>17574</a>
<a id='n17575' href='#n17575'>17575</a>
<a id='n17576' href='#n17576'>17576</a>
<a id='n17577' href='#n17577'>17577</a>
<a id='n17578' href='#n17578'>17578</a>
<a id='n17579' href='#n17579'>17579</a>
<a id='n17580' href='#n17580'>17580</a>
<a id='n17581' href='#n17581'>17581</a>
<a id='n17582' href='#n17582'>17582</a>
<a id='n17583' href='#n17583'>17583</a>
<a id='n17584' href='#n17584'>17584</a>
<a id='n17585' href='#n17585'>17585</a>
<a id='n17586' href='#n17586'>17586</a>
<a id='n17587' href='#n17587'>17587</a>
<a id='n17588' href='#n17588'>17588</a>
<a id='n17589' href='#n17589'>17589</a>
<a id='n17590' href='#n17590'>17590</a>
<a id='n17591' href='#n17591'>17591</a>
<a id='n17592' href='#n17592'>17592</a>
<a id='n17593' href='#n17593'>17593</a>
<a id='n17594' href='#n17594'>17594</a>
<a id='n17595' href='#n17595'>17595</a>
<a id='n17596' href='#n17596'>17596</a>
<a id='n17597' href='#n17597'>17597</a>
<a id='n17598' href='#n17598'>17598</a>
<a id='n17599' href='#n17599'>17599</a>
<a id='n17600' href='#n17600'>17600</a>
<a id='n17601' href='#n17601'>17601</a>
<a id='n17602' href='#n17602'>17602</a>
<a id='n17603' href='#n17603'>17603</a>
<a id='n17604' href='#n17604'>17604</a>
<a id='n17605' href='#n17605'>17605</a>
<a id='n17606' href='#n17606'>17606</a>
<a id='n17607' href='#n17607'>17607</a>
<a id='n17608' href='#n17608'>17608</a>
<a id='n17609' href='#n17609'>17609</a>
<a id='n17610' href='#n17610'>17610</a>
<a id='n17611' href='#n17611'>17611</a>
<a id='n17612' href='#n17612'>17612</a>
<a id='n17613' href='#n17613'>17613</a>
<a id='n17614' href='#n17614'>17614</a>
<a id='n17615' href='#n17615'>17615</a>
<a id='n17616' href='#n17616'>17616</a>
<a id='n17617' href='#n17617'>17617</a>
<a id='n17618' href='#n17618'>17618</a>
<a id='n17619' href='#n17619'>17619</a>
<a id='n17620' href='#n17620'>17620</a>
<a id='n17621' href='#n17621'>17621</a>
<a id='n17622' href='#n17622'>17622</a>
<a id='n17623' href='#n17623'>17623</a>
<a id='n17624' href='#n17624'>17624</a>
<a id='n17625' href='#n17625'>17625</a>
<a id='n17626' href='#n17626'>17626</a>
<a id='n17627' href='#n17627'>17627</a>
<a id='n17628' href='#n17628'>17628</a>
<a id='n17629' href='#n17629'>17629</a>
<a id='n17630' href='#n17630'>17630</a>
<a id='n17631' href='#n17631'>17631</a>
<a id='n17632' href='#n17632'>17632</a>
<a id='n17633' href='#n17633'>17633</a>
<a id='n17634' href='#n17634'>17634</a>
<a id='n17635' href='#n17635'>17635</a>
<a id='n17636' href='#n17636'>17636</a>
<a id='n17637' href='#n17637'>17637</a>
<a id='n17638' href='#n17638'>17638</a>
<a id='n17639' href='#n17639'>17639</a>
<a id='n17640' href='#n17640'>17640</a>
<a id='n17641' href='#n17641'>17641</a>
<a id='n17642' href='#n17642'>17642</a>
<a id='n17643' href='#n17643'>17643</a>
<a id='n17644' href='#n17644'>17644</a>
<a id='n17645' href='#n17645'>17645</a>
<a id='n17646' href='#n17646'>17646</a>
<a id='n17647' href='#n17647'>17647</a>
<a id='n17648' href='#n17648'>17648</a>
<a id='n17649' href='#n17649'>17649</a>
<a id='n17650' href='#n17650'>17650</a>
<a id='n17651' href='#n17651'>17651</a>
<a id='n17652' href='#n17652'>17652</a>
<a id='n17653' href='#n17653'>17653</a>
<a id='n17654' href='#n17654'>17654</a>
<a id='n17655' href='#n17655'>17655</a>
<a id='n17656' href='#n17656'>17656</a>
<a id='n17657' href='#n17657'>17657</a>
<a id='n17658' href='#n17658'>17658</a>
<a id='n17659' href='#n17659'>17659</a>
<a id='n17660' href='#n17660'>17660</a>
<a id='n17661' href='#n17661'>17661</a>
<a id='n17662' href='#n17662'>17662</a>
<a id='n17663' href='#n17663'>17663</a>
<a id='n17664' href='#n17664'>17664</a>
<a id='n17665' href='#n17665'>17665</a>
<a id='n17666' href='#n17666'>17666</a>
<a id='n17667' href='#n17667'>17667</a>
<a id='n17668' href='#n17668'>17668</a>
<a id='n17669' href='#n17669'>17669</a>
<a id='n17670' href='#n17670'>17670</a>
<a id='n17671' href='#n17671'>17671</a>
<a id='n17672' href='#n17672'>17672</a>
<a id='n17673' href='#n17673'>17673</a>
<a id='n17674' href='#n17674'>17674</a>
<a id='n17675' href='#n17675'>17675</a>
<a id='n17676' href='#n17676'>17676</a>
<a id='n17677' href='#n17677'>17677</a>
<a id='n17678' href='#n17678'>17678</a>
<a id='n17679' href='#n17679'>17679</a>
<a id='n17680' href='#n17680'>17680</a>
<a id='n17681' href='#n17681'>17681</a>
<a id='n17682' href='#n17682'>17682</a>
<a id='n17683' href='#n17683'>17683</a>
<a id='n17684' href='#n17684'>17684</a>
<a id='n17685' href='#n17685'>17685</a>
<a id='n17686' href='#n17686'>17686</a>
<a id='n17687' href='#n17687'>17687</a>
<a id='n17688' href='#n17688'>17688</a>
<a id='n17689' href='#n17689'>17689</a>
<a id='n17690' href='#n17690'>17690</a>
<a id='n17691' href='#n17691'>17691</a>
<a id='n17692' href='#n17692'>17692</a>
<a id='n17693' href='#n17693'>17693</a>
<a id='n17694' href='#n17694'>17694</a>
<a id='n17695' href='#n17695'>17695</a>
<a id='n17696' href='#n17696'>17696</a>
<a id='n17697' href='#n17697'>17697</a>
<a id='n17698' href='#n17698'>17698</a>
<a id='n17699' href='#n17699'>17699</a>
<a id='n17700' href='#n17700'>17700</a>
<a id='n17701' href='#n17701'>17701</a>
<a id='n17702' href='#n17702'>17702</a>
<a id='n17703' href='#n17703'>17703</a>
<a id='n17704' href='#n17704'>17704</a>
<a id='n17705' href='#n17705'>17705</a>
<a id='n17706' href='#n17706'>17706</a>
<a id='n17707' href='#n17707'>17707</a>
<a id='n17708' href='#n17708'>17708</a>
<a id='n17709' href='#n17709'>17709</a>
<a id='n17710' href='#n17710'>17710</a>
<a id='n17711' href='#n17711'>17711</a>
<a id='n17712' href='#n17712'>17712</a>
<a id='n17713' href='#n17713'>17713</a>
<a id='n17714' href='#n17714'>17714</a>
<a id='n17715' href='#n17715'>17715</a>
<a id='n17716' href='#n17716'>17716</a>
<a id='n17717' href='#n17717'>17717</a>
<a id='n17718' href='#n17718'>17718</a>
<a id='n17719' href='#n17719'>17719</a>
<a id='n17720' href='#n17720'>17720</a>
<a id='n17721' href='#n17721'>17721</a>
<a id='n17722' href='#n17722'>17722</a>
<a id='n17723' href='#n17723'>17723</a>
<a id='n17724' href='#n17724'>17724</a>
<a id='n17725' href='#n17725'>17725</a>
<a id='n17726' href='#n17726'>17726</a>
<a id='n17727' href='#n17727'>17727</a>
<a id='n17728' href='#n17728'>17728</a>
<a id='n17729' href='#n17729'>17729</a>
<a id='n17730' href='#n17730'>17730</a>
<a id='n17731' href='#n17731'>17731</a>
<a id='n17732' href='#n17732'>17732</a>
<a id='n17733' href='#n17733'>17733</a>
<a id='n17734' href='#n17734'>17734</a>
<a id='n17735' href='#n17735'>17735</a>
<a id='n17736' href='#n17736'>17736</a>
<a id='n17737' href='#n17737'>17737</a>
<a id='n17738' href='#n17738'>17738</a>
<a id='n17739' href='#n17739'>17739</a>
<a id='n17740' href='#n17740'>17740</a>
<a id='n17741' href='#n17741'>17741</a>
<a id='n17742' href='#n17742'>17742</a>
<a id='n17743' href='#n17743'>17743</a>
<a id='n17744' href='#n17744'>17744</a>
<a id='n17745' href='#n17745'>17745</a>
<a id='n17746' href='#n17746'>17746</a>
<a id='n17747' href='#n17747'>17747</a>
<a id='n17748' href='#n17748'>17748</a>
<a id='n17749' href='#n17749'>17749</a>
<a id='n17750' href='#n17750'>17750</a>
<a id='n17751' href='#n17751'>17751</a>
<a id='n17752' href='#n17752'>17752</a>
<a id='n17753' href='#n17753'>17753</a>
<a id='n17754' href='#n17754'>17754</a>
<a id='n17755' href='#n17755'>17755</a>
<a id='n17756' href='#n17756'>17756</a>
<a id='n17757' href='#n17757'>17757</a>
<a id='n17758' href='#n17758'>17758</a>
<a id='n17759' href='#n17759'>17759</a>
<a id='n17760' href='#n17760'>17760</a>
<a id='n17761' href='#n17761'>17761</a>
<a id='n17762' href='#n17762'>17762</a>
<a id='n17763' href='#n17763'>17763</a>
<a id='n17764' href='#n17764'>17764</a>
<a id='n17765' href='#n17765'>17765</a>
<a id='n17766' href='#n17766'>17766</a>
<a id='n17767' href='#n17767'>17767</a>
<a id='n17768' href='#n17768'>17768</a>
<a id='n17769' href='#n17769'>17769</a>
<a id='n17770' href='#n17770'>17770</a>
<a id='n17771' href='#n17771'>17771</a>
<a id='n17772' href='#n17772'>17772</a>
<a id='n17773' href='#n17773'>17773</a>
<a id='n17774' href='#n17774'>17774</a>
<a id='n17775' href='#n17775'>17775</a>
<a id='n17776' href='#n17776'>17776</a>
<a id='n17777' href='#n17777'>17777</a>
<a id='n17778' href='#n17778'>17778</a>
<a id='n17779' href='#n17779'>17779</a>
<a id='n17780' href='#n17780'>17780</a>
<a id='n17781' href='#n17781'>17781</a>
<a id='n17782' href='#n17782'>17782</a>
<a id='n17783' href='#n17783'>17783</a>
<a id='n17784' href='#n17784'>17784</a>
<a id='n17785' href='#n17785'>17785</a>
<a id='n17786' href='#n17786'>17786</a>
<a id='n17787' href='#n17787'>17787</a>
<a id='n17788' href='#n17788'>17788</a>
<a id='n17789' href='#n17789'>17789</a>
<a id='n17790' href='#n17790'>17790</a>
<a id='n17791' href='#n17791'>17791</a>
<a id='n17792' href='#n17792'>17792</a>
<a id='n17793' href='#n17793'>17793</a>
<a id='n17794' href='#n17794'>17794</a>
<a id='n17795' href='#n17795'>17795</a>
<a id='n17796' href='#n17796'>17796</a>
<a id='n17797' href='#n17797'>17797</a>
<a id='n17798' href='#n17798'>17798</a>
<a id='n17799' href='#n17799'>17799</a>
<a id='n17800' href='#n17800'>17800</a>
<a id='n17801' href='#n17801'>17801</a>
<a id='n17802' href='#n17802'>17802</a>
<a id='n17803' href='#n17803'>17803</a>
<a id='n17804' href='#n17804'>17804</a>
<a id='n17805' href='#n17805'>17805</a>
<a id='n17806' href='#n17806'>17806</a>
<a id='n17807' href='#n17807'>17807</a>
<a id='n17808' href='#n17808'>17808</a>
<a id='n17809' href='#n17809'>17809</a>
<a id='n17810' href='#n17810'>17810</a>
<a id='n17811' href='#n17811'>17811</a>
<a id='n17812' href='#n17812'>17812</a>
<a id='n17813' href='#n17813'>17813</a>
<a id='n17814' href='#n17814'>17814</a>
<a id='n17815' href='#n17815'>17815</a>
<a id='n17816' href='#n17816'>17816</a>
<a id='n17817' href='#n17817'>17817</a>
<a id='n17818' href='#n17818'>17818</a>
<a id='n17819' href='#n17819'>17819</a>
<a id='n17820' href='#n17820'>17820</a>
<a id='n17821' href='#n17821'>17821</a>
<a id='n17822' href='#n17822'>17822</a>
<a id='n17823' href='#n17823'>17823</a>
<a id='n17824' href='#n17824'>17824</a>
<a id='n17825' href='#n17825'>17825</a>
<a id='n17826' href='#n17826'>17826</a>
<a id='n17827' href='#n17827'>17827</a>
<a id='n17828' href='#n17828'>17828</a>
<a id='n17829' href='#n17829'>17829</a>
<a id='n17830' href='#n17830'>17830</a>
<a id='n17831' href='#n17831'>17831</a>
<a id='n17832' href='#n17832'>17832</a>
<a id='n17833' href='#n17833'>17833</a>
<a id='n17834' href='#n17834'>17834</a>
<a id='n17835' href='#n17835'>17835</a>
<a id='n17836' href='#n17836'>17836</a>
<a id='n17837' href='#n17837'>17837</a>
<a id='n17838' href='#n17838'>17838</a>
<a id='n17839' href='#n17839'>17839</a>
<a id='n17840' href='#n17840'>17840</a>
<a id='n17841' href='#n17841'>17841</a>
<a id='n17842' href='#n17842'>17842</a>
<a id='n17843' href='#n17843'>17843</a>
<a id='n17844' href='#n17844'>17844</a>
<a id='n17845' href='#n17845'>17845</a>
<a id='n17846' href='#n17846'>17846</a>
<a id='n17847' href='#n17847'>17847</a>
<a id='n17848' href='#n17848'>17848</a>
<a id='n17849' href='#n17849'>17849</a>
<a id='n17850' href='#n17850'>17850</a>
<a id='n17851' href='#n17851'>17851</a>
<a id='n17852' href='#n17852'>17852</a>
<a id='n17853' href='#n17853'>17853</a>
<a id='n17854' href='#n17854'>17854</a>
<a id='n17855' href='#n17855'>17855</a>
<a id='n17856' href='#n17856'>17856</a>
<a id='n17857' href='#n17857'>17857</a>
<a id='n17858' href='#n17858'>17858</a>
<a id='n17859' href='#n17859'>17859</a>
<a id='n17860' href='#n17860'>17860</a>
<a id='n17861' href='#n17861'>17861</a>
<a id='n17862' href='#n17862'>17862</a>
<a id='n17863' href='#n17863'>17863</a>
<a id='n17864' href='#n17864'>17864</a>
<a id='n17865' href='#n17865'>17865</a>
<a id='n17866' href='#n17866'>17866</a>
<a id='n17867' href='#n17867'>17867</a>
<a id='n17868' href='#n17868'>17868</a>
<a id='n17869' href='#n17869'>17869</a>
<a id='n17870' href='#n17870'>17870</a>
<a id='n17871' href='#n17871'>17871</a>
<a id='n17872' href='#n17872'>17872</a>
<a id='n17873' href='#n17873'>17873</a>
<a id='n17874' href='#n17874'>17874</a>
<a id='n17875' href='#n17875'>17875</a>
<a id='n17876' href='#n17876'>17876</a>
<a id='n17877' href='#n17877'>17877</a>
<a id='n17878' href='#n17878'>17878</a>
<a id='n17879' href='#n17879'>17879</a>
<a id='n17880' href='#n17880'>17880</a>
<a id='n17881' href='#n17881'>17881</a>
<a id='n17882' href='#n17882'>17882</a>
<a id='n17883' href='#n17883'>17883</a>
<a id='n17884' href='#n17884'>17884</a>
<a id='n17885' href='#n17885'>17885</a>
<a id='n17886' href='#n17886'>17886</a>
<a id='n17887' href='#n17887'>17887</a>
<a id='n17888' href='#n17888'>17888</a>
<a id='n17889' href='#n17889'>17889</a>
<a id='n17890' href='#n17890'>17890</a>
<a id='n17891' href='#n17891'>17891</a>
<a id='n17892' href='#n17892'>17892</a>
<a id='n17893' href='#n17893'>17893</a>
<a id='n17894' href='#n17894'>17894</a>
<a id='n17895' href='#n17895'>17895</a>
<a id='n17896' href='#n17896'>17896</a>
<a id='n17897' href='#n17897'>17897</a>
<a id='n17898' href='#n17898'>17898</a>
<a id='n17899' href='#n17899'>17899</a>
<a id='n17900' href='#n17900'>17900</a>
<a id='n17901' href='#n17901'>17901</a>
<a id='n17902' href='#n17902'>17902</a>
<a id='n17903' href='#n17903'>17903</a>
<a id='n17904' href='#n17904'>17904</a>
<a id='n17905' href='#n17905'>17905</a>
<a id='n17906' href='#n17906'>17906</a>
<a id='n17907' href='#n17907'>17907</a>
<a id='n17908' href='#n17908'>17908</a>
<a id='n17909' href='#n17909'>17909</a>
<a id='n17910' href='#n17910'>17910</a>
<a id='n17911' href='#n17911'>17911</a>
<a id='n17912' href='#n17912'>17912</a>
<a id='n17913' href='#n17913'>17913</a>
<a id='n17914' href='#n17914'>17914</a>
<a id='n17915' href='#n17915'>17915</a>
<a id='n17916' href='#n17916'>17916</a>
<a id='n17917' href='#n17917'>17917</a>
<a id='n17918' href='#n17918'>17918</a>
<a id='n17919' href='#n17919'>17919</a>
<a id='n17920' href='#n17920'>17920</a>
<a id='n17921' href='#n17921'>17921</a>
<a id='n17922' href='#n17922'>17922</a>
<a id='n17923' href='#n17923'>17923</a>
<a id='n17924' href='#n17924'>17924</a>
<a id='n17925' href='#n17925'>17925</a>
<a id='n17926' href='#n17926'>17926</a>
<a id='n17927' href='#n17927'>17927</a>
<a id='n17928' href='#n17928'>17928</a>
<a id='n17929' href='#n17929'>17929</a>
<a id='n17930' href='#n17930'>17930</a>
<a id='n17931' href='#n17931'>17931</a>
<a id='n17932' href='#n17932'>17932</a>
<a id='n17933' href='#n17933'>17933</a>
<a id='n17934' href='#n17934'>17934</a>
<a id='n17935' href='#n17935'>17935</a>
<a id='n17936' href='#n17936'>17936</a>
<a id='n17937' href='#n17937'>17937</a>
<a id='n17938' href='#n17938'>17938</a>
<a id='n17939' href='#n17939'>17939</a>
<a id='n17940' href='#n17940'>17940</a>
<a id='n17941' href='#n17941'>17941</a>
<a id='n17942' href='#n17942'>17942</a>
<a id='n17943' href='#n17943'>17943</a>
<a id='n17944' href='#n17944'>17944</a>
<a id='n17945' href='#n17945'>17945</a>
<a id='n17946' href='#n17946'>17946</a>
<a id='n17947' href='#n17947'>17947</a>
<a id='n17948' href='#n17948'>17948</a>
<a id='n17949' href='#n17949'>17949</a>
<a id='n17950' href='#n17950'>17950</a>
<a id='n17951' href='#n17951'>17951</a>
<a id='n17952' href='#n17952'>17952</a>
<a id='n17953' href='#n17953'>17953</a>
<a id='n17954' href='#n17954'>17954</a>
<a id='n17955' href='#n17955'>17955</a>
<a id='n17956' href='#n17956'>17956</a>
<a id='n17957' href='#n17957'>17957</a>
<a id='n17958' href='#n17958'>17958</a>
<a id='n17959' href='#n17959'>17959</a>
<a id='n17960' href='#n17960'>17960</a>
<a id='n17961' href='#n17961'>17961</a>
<a id='n17962' href='#n17962'>17962</a>
<a id='n17963' href='#n17963'>17963</a>
<a id='n17964' href='#n17964'>17964</a>
<a id='n17965' href='#n17965'>17965</a>
<a id='n17966' href='#n17966'>17966</a>
<a id='n17967' href='#n17967'>17967</a>
<a id='n17968' href='#n17968'>17968</a>
<a id='n17969' href='#n17969'>17969</a>
<a id='n17970' href='#n17970'>17970</a>
<a id='n17971' href='#n17971'>17971</a>
<a id='n17972' href='#n17972'>17972</a>
<a id='n17973' href='#n17973'>17973</a>
<a id='n17974' href='#n17974'>17974</a>
<a id='n17975' href='#n17975'>17975</a>
<a id='n17976' href='#n17976'>17976</a>
<a id='n17977' href='#n17977'>17977</a>
<a id='n17978' href='#n17978'>17978</a>
<a id='n17979' href='#n17979'>17979</a>
<a id='n17980' href='#n17980'>17980</a>
<a id='n17981' href='#n17981'>17981</a>
<a id='n17982' href='#n17982'>17982</a>
<a id='n17983' href='#n17983'>17983</a>
<a id='n17984' href='#n17984'>17984</a>
<a id='n17985' href='#n17985'>17985</a>
<a id='n17986' href='#n17986'>17986</a>
<a id='n17987' href='#n17987'>17987</a>
<a id='n17988' href='#n17988'>17988</a>
<a id='n17989' href='#n17989'>17989</a>
<a id='n17990' href='#n17990'>17990</a>
<a id='n17991' href='#n17991'>17991</a>
<a id='n17992' href='#n17992'>17992</a>
<a id='n17993' href='#n17993'>17993</a>
<a id='n17994' href='#n17994'>17994</a>
<a id='n17995' href='#n17995'>17995</a>
<a id='n17996' href='#n17996'>17996</a>
<a id='n17997' href='#n17997'>17997</a>
<a id='n17998' href='#n17998'>17998</a>
<a id='n17999' href='#n17999'>17999</a>
<a id='n18000' href='#n18000'>18000</a>
<a id='n18001' href='#n18001'>18001</a>
<a id='n18002' href='#n18002'>18002</a>
<a id='n18003' href='#n18003'>18003</a>
<a id='n18004' href='#n18004'>18004</a>
<a id='n18005' href='#n18005'>18005</a>
<a id='n18006' href='#n18006'>18006</a>
<a id='n18007' href='#n18007'>18007</a>
<a id='n18008' href='#n18008'>18008</a>
<a id='n18009' href='#n18009'>18009</a>
<a id='n18010' href='#n18010'>18010</a>
<a id='n18011' href='#n18011'>18011</a>
<a id='n18012' href='#n18012'>18012</a>
<a id='n18013' href='#n18013'>18013</a>
<a id='n18014' href='#n18014'>18014</a>
<a id='n18015' href='#n18015'>18015</a>
<a id='n18016' href='#n18016'>18016</a>
<a id='n18017' href='#n18017'>18017</a>
<a id='n18018' href='#n18018'>18018</a>
<a id='n18019' href='#n18019'>18019</a>
<a id='n18020' href='#n18020'>18020</a>
<a id='n18021' href='#n18021'>18021</a>
<a id='n18022' href='#n18022'>18022</a>
<a id='n18023' href='#n18023'>18023</a>
<a id='n18024' href='#n18024'>18024</a>
<a id='n18025' href='#n18025'>18025</a>
<a id='n18026' href='#n18026'>18026</a>
<a id='n18027' href='#n18027'>18027</a>
<a id='n18028' href='#n18028'>18028</a>
<a id='n18029' href='#n18029'>18029</a>
<a id='n18030' href='#n18030'>18030</a>
<a id='n18031' href='#n18031'>18031</a>
<a id='n18032' href='#n18032'>18032</a>
<a id='n18033' href='#n18033'>18033</a>
<a id='n18034' href='#n18034'>18034</a>
<a id='n18035' href='#n18035'>18035</a>
<a id='n18036' href='#n18036'>18036</a>
<a id='n18037' href='#n18037'>18037</a>
<a id='n18038' href='#n18038'>18038</a>
<a id='n18039' href='#n18039'>18039</a>
<a id='n18040' href='#n18040'>18040</a>
<a id='n18041' href='#n18041'>18041</a>
<a id='n18042' href='#n18042'>18042</a>
<a id='n18043' href='#n18043'>18043</a>
<a id='n18044' href='#n18044'>18044</a>
<a id='n18045' href='#n18045'>18045</a>
<a id='n18046' href='#n18046'>18046</a>
<a id='n18047' href='#n18047'>18047</a>
<a id='n18048' href='#n18048'>18048</a>
<a id='n18049' href='#n18049'>18049</a>
<a id='n18050' href='#n18050'>18050</a>
<a id='n18051' href='#n18051'>18051</a>
<a id='n18052' href='#n18052'>18052</a>
<a id='n18053' href='#n18053'>18053</a>
<a id='n18054' href='#n18054'>18054</a>
<a id='n18055' href='#n18055'>18055</a>
<a id='n18056' href='#n18056'>18056</a>
<a id='n18057' href='#n18057'>18057</a>
<a id='n18058' href='#n18058'>18058</a>
<a id='n18059' href='#n18059'>18059</a>
<a id='n18060' href='#n18060'>18060</a>
<a id='n18061' href='#n18061'>18061</a>
<a id='n18062' href='#n18062'>18062</a>
<a id='n18063' href='#n18063'>18063</a>
<a id='n18064' href='#n18064'>18064</a>
<a id='n18065' href='#n18065'>18065</a>
<a id='n18066' href='#n18066'>18066</a>
<a id='n18067' href='#n18067'>18067</a>
<a id='n18068' href='#n18068'>18068</a>
<a id='n18069' href='#n18069'>18069</a>
<a id='n18070' href='#n18070'>18070</a>
<a id='n18071' href='#n18071'>18071</a>
<a id='n18072' href='#n18072'>18072</a>
<a id='n18073' href='#n18073'>18073</a>
<a id='n18074' href='#n18074'>18074</a>
<a id='n18075' href='#n18075'>18075</a>
<a id='n18076' href='#n18076'>18076</a>
<a id='n18077' href='#n18077'>18077</a>
<a id='n18078' href='#n18078'>18078</a>
<a id='n18079' href='#n18079'>18079</a>
<a id='n18080' href='#n18080'>18080</a>
<a id='n18081' href='#n18081'>18081</a>
<a id='n18082' href='#n18082'>18082</a>
<a id='n18083' href='#n18083'>18083</a>
<a id='n18084' href='#n18084'>18084</a>
<a id='n18085' href='#n18085'>18085</a>
<a id='n18086' href='#n18086'>18086</a>
<a id='n18087' href='#n18087'>18087</a>
<a id='n18088' href='#n18088'>18088</a>
<a id='n18089' href='#n18089'>18089</a>
<a id='n18090' href='#n18090'>18090</a>
<a id='n18091' href='#n18091'>18091</a>
<a id='n18092' href='#n18092'>18092</a>
<a id='n18093' href='#n18093'>18093</a>
<a id='n18094' href='#n18094'>18094</a>
<a id='n18095' href='#n18095'>18095</a>
<a id='n18096' href='#n18096'>18096</a>
<a id='n18097' href='#n18097'>18097</a>
<a id='n18098' href='#n18098'>18098</a>
<a id='n18099' href='#n18099'>18099</a>
<a id='n18100' href='#n18100'>18100</a>
<a id='n18101' href='#n18101'>18101</a>
<a id='n18102' href='#n18102'>18102</a>
<a id='n18103' href='#n18103'>18103</a>
<a id='n18104' href='#n18104'>18104</a>
<a id='n18105' href='#n18105'>18105</a>
<a id='n18106' href='#n18106'>18106</a>
<a id='n18107' href='#n18107'>18107</a>
<a id='n18108' href='#n18108'>18108</a>
<a id='n18109' href='#n18109'>18109</a>
<a id='n18110' href='#n18110'>18110</a>
<a id='n18111' href='#n18111'>18111</a>
<a id='n18112' href='#n18112'>18112</a>
<a id='n18113' href='#n18113'>18113</a>
<a id='n18114' href='#n18114'>18114</a>
<a id='n18115' href='#n18115'>18115</a>
<a id='n18116' href='#n18116'>18116</a>
<a id='n18117' href='#n18117'>18117</a>
<a id='n18118' href='#n18118'>18118</a>
<a id='n18119' href='#n18119'>18119</a>
<a id='n18120' href='#n18120'>18120</a>
<a id='n18121' href='#n18121'>18121</a>
<a id='n18122' href='#n18122'>18122</a>
<a id='n18123' href='#n18123'>18123</a>
<a id='n18124' href='#n18124'>18124</a>
<a id='n18125' href='#n18125'>18125</a>
<a id='n18126' href='#n18126'>18126</a>
<a id='n18127' href='#n18127'>18127</a>
<a id='n18128' href='#n18128'>18128</a>
<a id='n18129' href='#n18129'>18129</a>
<a id='n18130' href='#n18130'>18130</a>
<a id='n18131' href='#n18131'>18131</a>
<a id='n18132' href='#n18132'>18132</a>
<a id='n18133' href='#n18133'>18133</a>
<a id='n18134' href='#n18134'>18134</a>
<a id='n18135' href='#n18135'>18135</a>
<a id='n18136' href='#n18136'>18136</a>
<a id='n18137' href='#n18137'>18137</a>
<a id='n18138' href='#n18138'>18138</a>
<a id='n18139' href='#n18139'>18139</a>
<a id='n18140' href='#n18140'>18140</a>
<a id='n18141' href='#n18141'>18141</a>
<a id='n18142' href='#n18142'>18142</a>
<a id='n18143' href='#n18143'>18143</a>
<a id='n18144' href='#n18144'>18144</a>
<a id='n18145' href='#n18145'>18145</a>
<a id='n18146' href='#n18146'>18146</a>
<a id='n18147' href='#n18147'>18147</a>
<a id='n18148' href='#n18148'>18148</a>
<a id='n18149' href='#n18149'>18149</a>
<a id='n18150' href='#n18150'>18150</a>
<a id='n18151' href='#n18151'>18151</a>
<a id='n18152' href='#n18152'>18152</a>
<a id='n18153' href='#n18153'>18153</a>
<a id='n18154' href='#n18154'>18154</a>
<a id='n18155' href='#n18155'>18155</a>
<a id='n18156' href='#n18156'>18156</a>
<a id='n18157' href='#n18157'>18157</a>
<a id='n18158' href='#n18158'>18158</a>
<a id='n18159' href='#n18159'>18159</a>
<a id='n18160' href='#n18160'>18160</a>
<a id='n18161' href='#n18161'>18161</a>
<a id='n18162' href='#n18162'>18162</a>
<a id='n18163' href='#n18163'>18163</a>
<a id='n18164' href='#n18164'>18164</a>
<a id='n18165' href='#n18165'>18165</a>
<a id='n18166' href='#n18166'>18166</a>
<a id='n18167' href='#n18167'>18167</a>
<a id='n18168' href='#n18168'>18168</a>
<a id='n18169' href='#n18169'>18169</a>
<a id='n18170' href='#n18170'>18170</a>
<a id='n18171' href='#n18171'>18171</a>
<a id='n18172' href='#n18172'>18172</a>
<a id='n18173' href='#n18173'>18173</a>
<a id='n18174' href='#n18174'>18174</a>
<a id='n18175' href='#n18175'>18175</a>
<a id='n18176' href='#n18176'>18176</a>
<a id='n18177' href='#n18177'>18177</a>
<a id='n18178' href='#n18178'>18178</a>
<a id='n18179' href='#n18179'>18179</a>
<a id='n18180' href='#n18180'>18180</a>
<a id='n18181' href='#n18181'>18181</a>
<a id='n18182' href='#n18182'>18182</a>
<a id='n18183' href='#n18183'>18183</a>
<a id='n18184' href='#n18184'>18184</a>
<a id='n18185' href='#n18185'>18185</a>
<a id='n18186' href='#n18186'>18186</a>
<a id='n18187' href='#n18187'>18187</a>
<a id='n18188' href='#n18188'>18188</a>
<a id='n18189' href='#n18189'>18189</a>
<a id='n18190' href='#n18190'>18190</a>
<a id='n18191' href='#n18191'>18191</a>
<a id='n18192' href='#n18192'>18192</a>
<a id='n18193' href='#n18193'>18193</a>
<a id='n18194' href='#n18194'>18194</a>
<a id='n18195' href='#n18195'>18195</a>
<a id='n18196' href='#n18196'>18196</a>
<a id='n18197' href='#n18197'>18197</a>
<a id='n18198' href='#n18198'>18198</a>
<a id='n18199' href='#n18199'>18199</a>
<a id='n18200' href='#n18200'>18200</a>
<a id='n18201' href='#n18201'>18201</a>
<a id='n18202' href='#n18202'>18202</a>
<a id='n18203' href='#n18203'>18203</a>
<a id='n18204' href='#n18204'>18204</a>
<a id='n18205' href='#n18205'>18205</a>
<a id='n18206' href='#n18206'>18206</a>
<a id='n18207' href='#n18207'>18207</a>
<a id='n18208' href='#n18208'>18208</a>
<a id='n18209' href='#n18209'>18209</a>
<a id='n18210' href='#n18210'>18210</a>
<a id='n18211' href='#n18211'>18211</a>
<a id='n18212' href='#n18212'>18212</a>
<a id='n18213' href='#n18213'>18213</a>
<a id='n18214' href='#n18214'>18214</a>
<a id='n18215' href='#n18215'>18215</a>
<a id='n18216' href='#n18216'>18216</a>
<a id='n18217' href='#n18217'>18217</a>
<a id='n18218' href='#n18218'>18218</a>
<a id='n18219' href='#n18219'>18219</a>
<a id='n18220' href='#n18220'>18220</a>
<a id='n18221' href='#n18221'>18221</a>
<a id='n18222' href='#n18222'>18222</a>
<a id='n18223' href='#n18223'>18223</a>
<a id='n18224' href='#n18224'>18224</a>
<a id='n18225' href='#n18225'>18225</a>
<a id='n18226' href='#n18226'>18226</a>
<a id='n18227' href='#n18227'>18227</a>
<a id='n18228' href='#n18228'>18228</a>
<a id='n18229' href='#n18229'>18229</a>
<a id='n18230' href='#n18230'>18230</a>
<a id='n18231' href='#n18231'>18231</a>
<a id='n18232' href='#n18232'>18232</a>
<a id='n18233' href='#n18233'>18233</a>
<a id='n18234' href='#n18234'>18234</a>
<a id='n18235' href='#n18235'>18235</a>
<a id='n18236' href='#n18236'>18236</a>
<a id='n18237' href='#n18237'>18237</a>
<a id='n18238' href='#n18238'>18238</a>
<a id='n18239' href='#n18239'>18239</a>
<a id='n18240' href='#n18240'>18240</a>
<a id='n18241' href='#n18241'>18241</a>
<a id='n18242' href='#n18242'>18242</a>
<a id='n18243' href='#n18243'>18243</a>
<a id='n18244' href='#n18244'>18244</a>
<a id='n18245' href='#n18245'>18245</a>
<a id='n18246' href='#n18246'>18246</a>
<a id='n18247' href='#n18247'>18247</a>
<a id='n18248' href='#n18248'>18248</a>
<a id='n18249' href='#n18249'>18249</a>
<a id='n18250' href='#n18250'>18250</a>
<a id='n18251' href='#n18251'>18251</a>
<a id='n18252' href='#n18252'>18252</a>
<a id='n18253' href='#n18253'>18253</a>
<a id='n18254' href='#n18254'>18254</a>
<a id='n18255' href='#n18255'>18255</a>
<a id='n18256' href='#n18256'>18256</a>
<a id='n18257' href='#n18257'>18257</a>
<a id='n18258' href='#n18258'>18258</a>
<a id='n18259' href='#n18259'>18259</a>
<a id='n18260' href='#n18260'>18260</a>
<a id='n18261' href='#n18261'>18261</a>
<a id='n18262' href='#n18262'>18262</a>
<a id='n18263' href='#n18263'>18263</a>
<a id='n18264' href='#n18264'>18264</a>
<a id='n18265' href='#n18265'>18265</a>
<a id='n18266' href='#n18266'>18266</a>
<a id='n18267' href='#n18267'>18267</a>
<a id='n18268' href='#n18268'>18268</a>
<a id='n18269' href='#n18269'>18269</a>
<a id='n18270' href='#n18270'>18270</a>
<a id='n18271' href='#n18271'>18271</a>
<a id='n18272' href='#n18272'>18272</a>
<a id='n18273' href='#n18273'>18273</a>
<a id='n18274' href='#n18274'>18274</a>
<a id='n18275' href='#n18275'>18275</a>
<a id='n18276' href='#n18276'>18276</a>
<a id='n18277' href='#n18277'>18277</a>
<a id='n18278' href='#n18278'>18278</a>
<a id='n18279' href='#n18279'>18279</a>
<a id='n18280' href='#n18280'>18280</a>
<a id='n18281' href='#n18281'>18281</a>
<a id='n18282' href='#n18282'>18282</a>
<a id='n18283' href='#n18283'>18283</a>
<a id='n18284' href='#n18284'>18284</a>
<a id='n18285' href='#n18285'>18285</a>
<a id='n18286' href='#n18286'>18286</a>
<a id='n18287' href='#n18287'>18287</a>
<a id='n18288' href='#n18288'>18288</a>
<a id='n18289' href='#n18289'>18289</a>
<a id='n18290' href='#n18290'>18290</a>
<a id='n18291' href='#n18291'>18291</a>
<a id='n18292' href='#n18292'>18292</a>
<a id='n18293' href='#n18293'>18293</a>
<a id='n18294' href='#n18294'>18294</a>
<a id='n18295' href='#n18295'>18295</a>
<a id='n18296' href='#n18296'>18296</a>
<a id='n18297' href='#n18297'>18297</a>
<a id='n18298' href='#n18298'>18298</a>
<a id='n18299' href='#n18299'>18299</a>
<a id='n18300' href='#n18300'>18300</a>
<a id='n18301' href='#n18301'>18301</a>
<a id='n18302' href='#n18302'>18302</a>
<a id='n18303' href='#n18303'>18303</a>
<a id='n18304' href='#n18304'>18304</a>
<a id='n18305' href='#n18305'>18305</a>
<a id='n18306' href='#n18306'>18306</a>
<a id='n18307' href='#n18307'>18307</a>
<a id='n18308' href='#n18308'>18308</a>
<a id='n18309' href='#n18309'>18309</a>
<a id='n18310' href='#n18310'>18310</a>
<a id='n18311' href='#n18311'>18311</a>
<a id='n18312' href='#n18312'>18312</a>
<a id='n18313' href='#n18313'>18313</a>
<a id='n18314' href='#n18314'>18314</a>
<a id='n18315' href='#n18315'>18315</a>
<a id='n18316' href='#n18316'>18316</a>
<a id='n18317' href='#n18317'>18317</a>
<a id='n18318' href='#n18318'>18318</a>
<a id='n18319' href='#n18319'>18319</a>
<a id='n18320' href='#n18320'>18320</a>
<a id='n18321' href='#n18321'>18321</a>
<a id='n18322' href='#n18322'>18322</a>
<a id='n18323' href='#n18323'>18323</a>
<a id='n18324' href='#n18324'>18324</a>
<a id='n18325' href='#n18325'>18325</a>
<a id='n18326' href='#n18326'>18326</a>
<a id='n18327' href='#n18327'>18327</a>
<a id='n18328' href='#n18328'>18328</a>
<a id='n18329' href='#n18329'>18329</a>
<a id='n18330' href='#n18330'>18330</a>
<a id='n18331' href='#n18331'>18331</a>
<a id='n18332' href='#n18332'>18332</a>
<a id='n18333' href='#n18333'>18333</a>
<a id='n18334' href='#n18334'>18334</a>
<a id='n18335' href='#n18335'>18335</a>
<a id='n18336' href='#n18336'>18336</a>
<a id='n18337' href='#n18337'>18337</a>
<a id='n18338' href='#n18338'>18338</a>
<a id='n18339' href='#n18339'>18339</a>
<a id='n18340' href='#n18340'>18340</a>
<a id='n18341' href='#n18341'>18341</a>
<a id='n18342' href='#n18342'>18342</a>
<a id='n18343' href='#n18343'>18343</a>
<a id='n18344' href='#n18344'>18344</a>
<a id='n18345' href='#n18345'>18345</a>
<a id='n18346' href='#n18346'>18346</a>
<a id='n18347' href='#n18347'>18347</a>
<a id='n18348' href='#n18348'>18348</a>
<a id='n18349' href='#n18349'>18349</a>
<a id='n18350' href='#n18350'>18350</a>
<a id='n18351' href='#n18351'>18351</a>
<a id='n18352' href='#n18352'>18352</a>
<a id='n18353' href='#n18353'>18353</a>
<a id='n18354' href='#n18354'>18354</a>
<a id='n18355' href='#n18355'>18355</a>
<a id='n18356' href='#n18356'>18356</a>
<a id='n18357' href='#n18357'>18357</a>
<a id='n18358' href='#n18358'>18358</a>
<a id='n18359' href='#n18359'>18359</a>
<a id='n18360' href='#n18360'>18360</a>
<a id='n18361' href='#n18361'>18361</a>
<a id='n18362' href='#n18362'>18362</a>
<a id='n18363' href='#n18363'>18363</a>
<a id='n18364' href='#n18364'>18364</a>
<a id='n18365' href='#n18365'>18365</a>
<a id='n18366' href='#n18366'>18366</a>
<a id='n18367' href='#n18367'>18367</a>
<a id='n18368' href='#n18368'>18368</a>
<a id='n18369' href='#n18369'>18369</a>
<a id='n18370' href='#n18370'>18370</a>
<a id='n18371' href='#n18371'>18371</a>
<a id='n18372' href='#n18372'>18372</a>
<a id='n18373' href='#n18373'>18373</a>
<a id='n18374' href='#n18374'>18374</a>
<a id='n18375' href='#n18375'>18375</a>
<a id='n18376' href='#n18376'>18376</a>
<a id='n18377' href='#n18377'>18377</a>
<a id='n18378' href='#n18378'>18378</a>
<a id='n18379' href='#n18379'>18379</a>
<a id='n18380' href='#n18380'>18380</a>
<a id='n18381' href='#n18381'>18381</a>
<a id='n18382' href='#n18382'>18382</a>
<a id='n18383' href='#n18383'>18383</a>
<a id='n18384' href='#n18384'>18384</a>
<a id='n18385' href='#n18385'>18385</a>
<a id='n18386' href='#n18386'>18386</a>
<a id='n18387' href='#n18387'>18387</a>
<a id='n18388' href='#n18388'>18388</a>
<a id='n18389' href='#n18389'>18389</a>
<a id='n18390' href='#n18390'>18390</a>
<a id='n18391' href='#n18391'>18391</a>
<a id='n18392' href='#n18392'>18392</a>
<a id='n18393' href='#n18393'>18393</a>
<a id='n18394' href='#n18394'>18394</a>
<a id='n18395' href='#n18395'>18395</a>
<a id='n18396' href='#n18396'>18396</a>
<a id='n18397' href='#n18397'>18397</a>
<a id='n18398' href='#n18398'>18398</a>
<a id='n18399' href='#n18399'>18399</a>
<a id='n18400' href='#n18400'>18400</a>
<a id='n18401' href='#n18401'>18401</a>
<a id='n18402' href='#n18402'>18402</a>
<a id='n18403' href='#n18403'>18403</a>
<a id='n18404' href='#n18404'>18404</a>
<a id='n18405' href='#n18405'>18405</a>
<a id='n18406' href='#n18406'>18406</a>
<a id='n18407' href='#n18407'>18407</a>
<a id='n18408' href='#n18408'>18408</a>
<a id='n18409' href='#n18409'>18409</a>
<a id='n18410' href='#n18410'>18410</a>
<a id='n18411' href='#n18411'>18411</a>
<a id='n18412' href='#n18412'>18412</a>
<a id='n18413' href='#n18413'>18413</a>
<a id='n18414' href='#n18414'>18414</a>
<a id='n18415' href='#n18415'>18415</a>
<a id='n18416' href='#n18416'>18416</a>
<a id='n18417' href='#n18417'>18417</a>
<a id='n18418' href='#n18418'>18418</a>
<a id='n18419' href='#n18419'>18419</a>
<a id='n18420' href='#n18420'>18420</a>
<a id='n18421' href='#n18421'>18421</a>
<a id='n18422' href='#n18422'>18422</a>
<a id='n18423' href='#n18423'>18423</a>
<a id='n18424' href='#n18424'>18424</a>
<a id='n18425' href='#n18425'>18425</a>
<a id='n18426' href='#n18426'>18426</a>
<a id='n18427' href='#n18427'>18427</a>
<a id='n18428' href='#n18428'>18428</a>
<a id='n18429' href='#n18429'>18429</a>
<a id='n18430' href='#n18430'>18430</a>
<a id='n18431' href='#n18431'>18431</a>
<a id='n18432' href='#n18432'>18432</a>
<a id='n18433' href='#n18433'>18433</a>
<a id='n18434' href='#n18434'>18434</a>
<a id='n18435' href='#n18435'>18435</a>
<a id='n18436' href='#n18436'>18436</a>
<a id='n18437' href='#n18437'>18437</a>
<a id='n18438' href='#n18438'>18438</a>
<a id='n18439' href='#n18439'>18439</a>
<a id='n18440' href='#n18440'>18440</a>
<a id='n18441' href='#n18441'>18441</a>
<a id='n18442' href='#n18442'>18442</a>
<a id='n18443' href='#n18443'>18443</a>
<a id='n18444' href='#n18444'>18444</a>
<a id='n18445' href='#n18445'>18445</a>
<a id='n18446' href='#n18446'>18446</a>
<a id='n18447' href='#n18447'>18447</a>
<a id='n18448' href='#n18448'>18448</a>
<a id='n18449' href='#n18449'>18449</a>
<a id='n18450' href='#n18450'>18450</a>
<a id='n18451' href='#n18451'>18451</a>
<a id='n18452' href='#n18452'>18452</a>
<a id='n18453' href='#n18453'>18453</a>
<a id='n18454' href='#n18454'>18454</a>
<a id='n18455' href='#n18455'>18455</a>
<a id='n18456' href='#n18456'>18456</a>
<a id='n18457' href='#n18457'>18457</a>
<a id='n18458' href='#n18458'>18458</a>
<a id='n18459' href='#n18459'>18459</a>
<a id='n18460' href='#n18460'>18460</a>
<a id='n18461' href='#n18461'>18461</a>
<a id='n18462' href='#n18462'>18462</a>
<a id='n18463' href='#n18463'>18463</a>
<a id='n18464' href='#n18464'>18464</a>
<a id='n18465' href='#n18465'>18465</a>
<a id='n18466' href='#n18466'>18466</a>
<a id='n18467' href='#n18467'>18467</a>
<a id='n18468' href='#n18468'>18468</a>
<a id='n18469' href='#n18469'>18469</a>
<a id='n18470' href='#n18470'>18470</a>
<a id='n18471' href='#n18471'>18471</a>
<a id='n18472' href='#n18472'>18472</a>
<a id='n18473' href='#n18473'>18473</a>
<a id='n18474' href='#n18474'>18474</a>
<a id='n18475' href='#n18475'>18475</a>
<a id='n18476' href='#n18476'>18476</a>
<a id='n18477' href='#n18477'>18477</a>
<a id='n18478' href='#n18478'>18478</a>
<a id='n18479' href='#n18479'>18479</a>
<a id='n18480' href='#n18480'>18480</a>
<a id='n18481' href='#n18481'>18481</a>
<a id='n18482' href='#n18482'>18482</a>
<a id='n18483' href='#n18483'>18483</a>
<a id='n18484' href='#n18484'>18484</a>
<a id='n18485' href='#n18485'>18485</a>
<a id='n18486' href='#n18486'>18486</a>
<a id='n18487' href='#n18487'>18487</a>
<a id='n18488' href='#n18488'>18488</a>
<a id='n18489' href='#n18489'>18489</a>
<a id='n18490' href='#n18490'>18490</a>
<a id='n18491' href='#n18491'>18491</a>
<a id='n18492' href='#n18492'>18492</a>
<a id='n18493' href='#n18493'>18493</a>
<a id='n18494' href='#n18494'>18494</a>
<a id='n18495' href='#n18495'>18495</a>
<a id='n18496' href='#n18496'>18496</a>
<a id='n18497' href='#n18497'>18497</a>
<a id='n18498' href='#n18498'>18498</a>
<a id='n18499' href='#n18499'>18499</a>
<a id='n18500' href='#n18500'>18500</a>
<a id='n18501' href='#n18501'>18501</a>
<a id='n18502' href='#n18502'>18502</a>
<a id='n18503' href='#n18503'>18503</a>
<a id='n18504' href='#n18504'>18504</a>
<a id='n18505' href='#n18505'>18505</a>
<a id='n18506' href='#n18506'>18506</a>
<a id='n18507' href='#n18507'>18507</a>
<a id='n18508' href='#n18508'>18508</a>
<a id='n18509' href='#n18509'>18509</a>
<a id='n18510' href='#n18510'>18510</a>
<a id='n18511' href='#n18511'>18511</a>
<a id='n18512' href='#n18512'>18512</a>
<a id='n18513' href='#n18513'>18513</a>
<a id='n18514' href='#n18514'>18514</a>
<a id='n18515' href='#n18515'>18515</a>
<a id='n18516' href='#n18516'>18516</a>
<a id='n18517' href='#n18517'>18517</a>
<a id='n18518' href='#n18518'>18518</a>
<a id='n18519' href='#n18519'>18519</a>
<a id='n18520' href='#n18520'>18520</a>
<a id='n18521' href='#n18521'>18521</a>
<a id='n18522' href='#n18522'>18522</a>
<a id='n18523' href='#n18523'>18523</a>
<a id='n18524' href='#n18524'>18524</a>
<a id='n18525' href='#n18525'>18525</a>
<a id='n18526' href='#n18526'>18526</a>
<a id='n18527' href='#n18527'>18527</a>
<a id='n18528' href='#n18528'>18528</a>
<a id='n18529' href='#n18529'>18529</a>
<a id='n18530' href='#n18530'>18530</a>
<a id='n18531' href='#n18531'>18531</a>
<a id='n18532' href='#n18532'>18532</a>
<a id='n18533' href='#n18533'>18533</a>
<a id='n18534' href='#n18534'>18534</a>
<a id='n18535' href='#n18535'>18535</a>
<a id='n18536' href='#n18536'>18536</a>
<a id='n18537' href='#n18537'>18537</a>
<a id='n18538' href='#n18538'>18538</a>
<a id='n18539' href='#n18539'>18539</a>
<a id='n18540' href='#n18540'>18540</a>
<a id='n18541' href='#n18541'>18541</a>
<a id='n18542' href='#n18542'>18542</a>
<a id='n18543' href='#n18543'>18543</a>
<a id='n18544' href='#n18544'>18544</a>
<a id='n18545' href='#n18545'>18545</a>
<a id='n18546' href='#n18546'>18546</a>
<a id='n18547' href='#n18547'>18547</a>
<a id='n18548' href='#n18548'>18548</a>
<a id='n18549' href='#n18549'>18549</a>
<a id='n18550' href='#n18550'>18550</a>
<a id='n18551' href='#n18551'>18551</a>
<a id='n18552' href='#n18552'>18552</a>
<a id='n18553' href='#n18553'>18553</a>
<a id='n18554' href='#n18554'>18554</a>
<a id='n18555' href='#n18555'>18555</a>
<a id='n18556' href='#n18556'>18556</a>
<a id='n18557' href='#n18557'>18557</a>
<a id='n18558' href='#n18558'>18558</a>
<a id='n18559' href='#n18559'>18559</a>
<a id='n18560' href='#n18560'>18560</a>
<a id='n18561' href='#n18561'>18561</a>
<a id='n18562' href='#n18562'>18562</a>
<a id='n18563' href='#n18563'>18563</a>
<a id='n18564' href='#n18564'>18564</a>
<a id='n18565' href='#n18565'>18565</a>
<a id='n18566' href='#n18566'>18566</a>
<a id='n18567' href='#n18567'>18567</a>
<a id='n18568' href='#n18568'>18568</a>
<a id='n18569' href='#n18569'>18569</a>
<a id='n18570' href='#n18570'>18570</a>
<a id='n18571' href='#n18571'>18571</a>
<a id='n18572' href='#n18572'>18572</a>
<a id='n18573' href='#n18573'>18573</a>
<a id='n18574' href='#n18574'>18574</a>
<a id='n18575' href='#n18575'>18575</a>
<a id='n18576' href='#n18576'>18576</a>
<a id='n18577' href='#n18577'>18577</a>
<a id='n18578' href='#n18578'>18578</a>
<a id='n18579' href='#n18579'>18579</a>
<a id='n18580' href='#n18580'>18580</a>
<a id='n18581' href='#n18581'>18581</a>
<a id='n18582' href='#n18582'>18582</a>
<a id='n18583' href='#n18583'>18583</a>
<a id='n18584' href='#n18584'>18584</a>
<a id='n18585' href='#n18585'>18585</a>
<a id='n18586' href='#n18586'>18586</a>
<a id='n18587' href='#n18587'>18587</a>
<a id='n18588' href='#n18588'>18588</a>
<a id='n18589' href='#n18589'>18589</a>
<a id='n18590' href='#n18590'>18590</a>
<a id='n18591' href='#n18591'>18591</a>
<a id='n18592' href='#n18592'>18592</a>
<a id='n18593' href='#n18593'>18593</a>
<a id='n18594' href='#n18594'>18594</a>
<a id='n18595' href='#n18595'>18595</a>
<a id='n18596' href='#n18596'>18596</a>
<a id='n18597' href='#n18597'>18597</a>
<a id='n18598' href='#n18598'>18598</a>
<a id='n18599' href='#n18599'>18599</a>
<a id='n18600' href='#n18600'>18600</a>
<a id='n18601' href='#n18601'>18601</a>
<a id='n18602' href='#n18602'>18602</a>
<a id='n18603' href='#n18603'>18603</a>
<a id='n18604' href='#n18604'>18604</a>
<a id='n18605' href='#n18605'>18605</a>
<a id='n18606' href='#n18606'>18606</a>
<a id='n18607' href='#n18607'>18607</a>
<a id='n18608' href='#n18608'>18608</a>
<a id='n18609' href='#n18609'>18609</a>
<a id='n18610' href='#n18610'>18610</a>
<a id='n18611' href='#n18611'>18611</a>
<a id='n18612' href='#n18612'>18612</a>
<a id='n18613' href='#n18613'>18613</a>
<a id='n18614' href='#n18614'>18614</a>
<a id='n18615' href='#n18615'>18615</a>
<a id='n18616' href='#n18616'>18616</a>
<a id='n18617' href='#n18617'>18617</a>
<a id='n18618' href='#n18618'>18618</a>
<a id='n18619' href='#n18619'>18619</a>
<a id='n18620' href='#n18620'>18620</a>
<a id='n18621' href='#n18621'>18621</a>
<a id='n18622' href='#n18622'>18622</a>
<a id='n18623' href='#n18623'>18623</a>
<a id='n18624' href='#n18624'>18624</a>
<a id='n18625' href='#n18625'>18625</a>
<a id='n18626' href='#n18626'>18626</a>
<a id='n18627' href='#n18627'>18627</a>
<a id='n18628' href='#n18628'>18628</a>
<a id='n18629' href='#n18629'>18629</a>
<a id='n18630' href='#n18630'>18630</a>
<a id='n18631' href='#n18631'>18631</a>
<a id='n18632' href='#n18632'>18632</a>
<a id='n18633' href='#n18633'>18633</a>
<a id='n18634' href='#n18634'>18634</a>
<a id='n18635' href='#n18635'>18635</a>
<a id='n18636' href='#n18636'>18636</a>
<a id='n18637' href='#n18637'>18637</a>
<a id='n18638' href='#n18638'>18638</a>
<a id='n18639' href='#n18639'>18639</a>
<a id='n18640' href='#n18640'>18640</a>
<a id='n18641' href='#n18641'>18641</a>
<a id='n18642' href='#n18642'>18642</a>
<a id='n18643' href='#n18643'>18643</a>
<a id='n18644' href='#n18644'>18644</a>
<a id='n18645' href='#n18645'>18645</a>
<a id='n18646' href='#n18646'>18646</a>
<a id='n18647' href='#n18647'>18647</a>
<a id='n18648' href='#n18648'>18648</a>
<a id='n18649' href='#n18649'>18649</a>
<a id='n18650' href='#n18650'>18650</a>
<a id='n18651' href='#n18651'>18651</a>
<a id='n18652' href='#n18652'>18652</a>
<a id='n18653' href='#n18653'>18653</a>
<a id='n18654' href='#n18654'>18654</a>
<a id='n18655' href='#n18655'>18655</a>
<a id='n18656' href='#n18656'>18656</a>
<a id='n18657' href='#n18657'>18657</a>
<a id='n18658' href='#n18658'>18658</a>
<a id='n18659' href='#n18659'>18659</a>
<a id='n18660' href='#n18660'>18660</a>
<a id='n18661' href='#n18661'>18661</a>
<a id='n18662' href='#n18662'>18662</a>
<a id='n18663' href='#n18663'>18663</a>
<a id='n18664' href='#n18664'>18664</a>
<a id='n18665' href='#n18665'>18665</a>
<a id='n18666' href='#n18666'>18666</a>
<a id='n18667' href='#n18667'>18667</a>
<a id='n18668' href='#n18668'>18668</a>
<a id='n18669' href='#n18669'>18669</a>
<a id='n18670' href='#n18670'>18670</a>
<a id='n18671' href='#n18671'>18671</a>
<a id='n18672' href='#n18672'>18672</a>
<a id='n18673' href='#n18673'>18673</a>
<a id='n18674' href='#n18674'>18674</a>
<a id='n18675' href='#n18675'>18675</a>
<a id='n18676' href='#n18676'>18676</a>
<a id='n18677' href='#n18677'>18677</a>
<a id='n18678' href='#n18678'>18678</a>
<a id='n18679' href='#n18679'>18679</a>
<a id='n18680' href='#n18680'>18680</a>
<a id='n18681' href='#n18681'>18681</a>
<a id='n18682' href='#n18682'>18682</a>
<a id='n18683' href='#n18683'>18683</a>
<a id='n18684' href='#n18684'>18684</a>
<a id='n18685' href='#n18685'>18685</a>
<a id='n18686' href='#n18686'>18686</a>
<a id='n18687' href='#n18687'>18687</a>
<a id='n18688' href='#n18688'>18688</a>
<a id='n18689' href='#n18689'>18689</a>
<a id='n18690' href='#n18690'>18690</a>
<a id='n18691' href='#n18691'>18691</a>
<a id='n18692' href='#n18692'>18692</a>
<a id='n18693' href='#n18693'>18693</a>
<a id='n18694' href='#n18694'>18694</a>
<a id='n18695' href='#n18695'>18695</a>
<a id='n18696' href='#n18696'>18696</a>
<a id='n18697' href='#n18697'>18697</a>
<a id='n18698' href='#n18698'>18698</a>
<a id='n18699' href='#n18699'>18699</a>
<a id='n18700' href='#n18700'>18700</a>
<a id='n18701' href='#n18701'>18701</a>
<a id='n18702' href='#n18702'>18702</a>
<a id='n18703' href='#n18703'>18703</a>
<a id='n18704' href='#n18704'>18704</a>
<a id='n18705' href='#n18705'>18705</a>
<a id='n18706' href='#n18706'>18706</a>
<a id='n18707' href='#n18707'>18707</a>
<a id='n18708' href='#n18708'>18708</a>
<a id='n18709' href='#n18709'>18709</a>
<a id='n18710' href='#n18710'>18710</a>
<a id='n18711' href='#n18711'>18711</a>
<a id='n18712' href='#n18712'>18712</a>
<a id='n18713' href='#n18713'>18713</a>
<a id='n18714' href='#n18714'>18714</a>
<a id='n18715' href='#n18715'>18715</a>
<a id='n18716' href='#n18716'>18716</a>
<a id='n18717' href='#n18717'>18717</a>
<a id='n18718' href='#n18718'>18718</a>
<a id='n18719' href='#n18719'>18719</a>
<a id='n18720' href='#n18720'>18720</a>
<a id='n18721' href='#n18721'>18721</a>
<a id='n18722' href='#n18722'>18722</a>
<a id='n18723' href='#n18723'>18723</a>
<a id='n18724' href='#n18724'>18724</a>
<a id='n18725' href='#n18725'>18725</a>
<a id='n18726' href='#n18726'>18726</a>
<a id='n18727' href='#n18727'>18727</a>
<a id='n18728' href='#n18728'>18728</a>
<a id='n18729' href='#n18729'>18729</a>
<a id='n18730' href='#n18730'>18730</a>
<a id='n18731' href='#n18731'>18731</a>
<a id='n18732' href='#n18732'>18732</a>
<a id='n18733' href='#n18733'>18733</a>
<a id='n18734' href='#n18734'>18734</a>
<a id='n18735' href='#n18735'>18735</a>
<a id='n18736' href='#n18736'>18736</a>
<a id='n18737' href='#n18737'>18737</a>
<a id='n18738' href='#n18738'>18738</a>
<a id='n18739' href='#n18739'>18739</a>
<a id='n18740' href='#n18740'>18740</a>
<a id='n18741' href='#n18741'>18741</a>
<a id='n18742' href='#n18742'>18742</a>
<a id='n18743' href='#n18743'>18743</a>
<a id='n18744' href='#n18744'>18744</a>
<a id='n18745' href='#n18745'>18745</a>
<a id='n18746' href='#n18746'>18746</a>
<a id='n18747' href='#n18747'>18747</a>
<a id='n18748' href='#n18748'>18748</a>
<a id='n18749' href='#n18749'>18749</a>
<a id='n18750' href='#n18750'>18750</a>
<a id='n18751' href='#n18751'>18751</a>
<a id='n18752' href='#n18752'>18752</a>
<a id='n18753' href='#n18753'>18753</a>
<a id='n18754' href='#n18754'>18754</a>
<a id='n18755' href='#n18755'>18755</a>
<a id='n18756' href='#n18756'>18756</a>
<a id='n18757' href='#n18757'>18757</a>
<a id='n18758' href='#n18758'>18758</a>
<a id='n18759' href='#n18759'>18759</a>
<a id='n18760' href='#n18760'>18760</a>
<a id='n18761' href='#n18761'>18761</a>
<a id='n18762' href='#n18762'>18762</a>
<a id='n18763' href='#n18763'>18763</a>
<a id='n18764' href='#n18764'>18764</a>
<a id='n18765' href='#n18765'>18765</a>
<a id='n18766' href='#n18766'>18766</a>
<a id='n18767' href='#n18767'>18767</a>
<a id='n18768' href='#n18768'>18768</a>
<a id='n18769' href='#n18769'>18769</a>
<a id='n18770' href='#n18770'>18770</a>
<a id='n18771' href='#n18771'>18771</a>
<a id='n18772' href='#n18772'>18772</a>
<a id='n18773' href='#n18773'>18773</a>
<a id='n18774' href='#n18774'>18774</a>
<a id='n18775' href='#n18775'>18775</a>
<a id='n18776' href='#n18776'>18776</a>
<a id='n18777' href='#n18777'>18777</a>
<a id='n18778' href='#n18778'>18778</a>
<a id='n18779' href='#n18779'>18779</a>
<a id='n18780' href='#n18780'>18780</a>
<a id='n18781' href='#n18781'>18781</a>
<a id='n18782' href='#n18782'>18782</a>
<a id='n18783' href='#n18783'>18783</a>
<a id='n18784' href='#n18784'>18784</a>
<a id='n18785' href='#n18785'>18785</a>
<a id='n18786' href='#n18786'>18786</a>
<a id='n18787' href='#n18787'>18787</a>
<a id='n18788' href='#n18788'>18788</a>
<a id='n18789' href='#n18789'>18789</a>
<a id='n18790' href='#n18790'>18790</a>
<a id='n18791' href='#n18791'>18791</a>
<a id='n18792' href='#n18792'>18792</a>
<a id='n18793' href='#n18793'>18793</a>
<a id='n18794' href='#n18794'>18794</a>
<a id='n18795' href='#n18795'>18795</a>
<a id='n18796' href='#n18796'>18796</a>
<a id='n18797' href='#n18797'>18797</a>
<a id='n18798' href='#n18798'>18798</a>
<a id='n18799' href='#n18799'>18799</a>
<a id='n18800' href='#n18800'>18800</a>
<a id='n18801' href='#n18801'>18801</a>
<a id='n18802' href='#n18802'>18802</a>
<a id='n18803' href='#n18803'>18803</a>
<a id='n18804' href='#n18804'>18804</a>
<a id='n18805' href='#n18805'>18805</a>
<a id='n18806' href='#n18806'>18806</a>
<a id='n18807' href='#n18807'>18807</a>
<a id='n18808' href='#n18808'>18808</a>
<a id='n18809' href='#n18809'>18809</a>
<a id='n18810' href='#n18810'>18810</a>
<a id='n18811' href='#n18811'>18811</a>
<a id='n18812' href='#n18812'>18812</a>
<a id='n18813' href='#n18813'>18813</a>
<a id='n18814' href='#n18814'>18814</a>
<a id='n18815' href='#n18815'>18815</a>
<a id='n18816' href='#n18816'>18816</a>
<a id='n18817' href='#n18817'>18817</a>
<a id='n18818' href='#n18818'>18818</a>
<a id='n18819' href='#n18819'>18819</a>
<a id='n18820' href='#n18820'>18820</a>
<a id='n18821' href='#n18821'>18821</a>
<a id='n18822' href='#n18822'>18822</a>
<a id='n18823' href='#n18823'>18823</a>
<a id='n18824' href='#n18824'>18824</a>
<a id='n18825' href='#n18825'>18825</a>
<a id='n18826' href='#n18826'>18826</a>
<a id='n18827' href='#n18827'>18827</a>
<a id='n18828' href='#n18828'>18828</a>
<a id='n18829' href='#n18829'>18829</a>
<a id='n18830' href='#n18830'>18830</a>
<a id='n18831' href='#n18831'>18831</a>
<a id='n18832' href='#n18832'>18832</a>
<a id='n18833' href='#n18833'>18833</a>
<a id='n18834' href='#n18834'>18834</a>
<a id='n18835' href='#n18835'>18835</a>
<a id='n18836' href='#n18836'>18836</a>
<a id='n18837' href='#n18837'>18837</a>
<a id='n18838' href='#n18838'>18838</a>
<a id='n18839' href='#n18839'>18839</a>
<a id='n18840' href='#n18840'>18840</a>
<a id='n18841' href='#n18841'>18841</a>
<a id='n18842' href='#n18842'>18842</a>
<a id='n18843' href='#n18843'>18843</a>
<a id='n18844' href='#n18844'>18844</a>
<a id='n18845' href='#n18845'>18845</a>
<a id='n18846' href='#n18846'>18846</a>
<a id='n18847' href='#n18847'>18847</a>
<a id='n18848' href='#n18848'>18848</a>
<a id='n18849' href='#n18849'>18849</a>
<a id='n18850' href='#n18850'>18850</a>
<a id='n18851' href='#n18851'>18851</a>
<a id='n18852' href='#n18852'>18852</a>
<a id='n18853' href='#n18853'>18853</a>
<a id='n18854' href='#n18854'>18854</a>
<a id='n18855' href='#n18855'>18855</a>
<a id='n18856' href='#n18856'>18856</a>
<a id='n18857' href='#n18857'>18857</a>
<a id='n18858' href='#n18858'>18858</a>
<a id='n18859' href='#n18859'>18859</a>
<a id='n18860' href='#n18860'>18860</a>
<a id='n18861' href='#n18861'>18861</a>
<a id='n18862' href='#n18862'>18862</a>
<a id='n18863' href='#n18863'>18863</a>
<a id='n18864' href='#n18864'>18864</a>
<a id='n18865' href='#n18865'>18865</a>
<a id='n18866' href='#n18866'>18866</a>
<a id='n18867' href='#n18867'>18867</a>
<a id='n18868' href='#n18868'>18868</a>
<a id='n18869' href='#n18869'>18869</a>
<a id='n18870' href='#n18870'>18870</a>
<a id='n18871' href='#n18871'>18871</a>
<a id='n18872' href='#n18872'>18872</a>
<a id='n18873' href='#n18873'>18873</a>
<a id='n18874' href='#n18874'>18874</a>
<a id='n18875' href='#n18875'>18875</a>
<a id='n18876' href='#n18876'>18876</a>
<a id='n18877' href='#n18877'>18877</a>
<a id='n18878' href='#n18878'>18878</a>
<a id='n18879' href='#n18879'>18879</a>
<a id='n18880' href='#n18880'>18880</a>
<a id='n18881' href='#n18881'>18881</a>
<a id='n18882' href='#n18882'>18882</a>
<a id='n18883' href='#n18883'>18883</a>
<a id='n18884' href='#n18884'>18884</a>
<a id='n18885' href='#n18885'>18885</a>
<a id='n18886' href='#n18886'>18886</a>
<a id='n18887' href='#n18887'>18887</a>
<a id='n18888' href='#n18888'>18888</a>
<a id='n18889' href='#n18889'>18889</a>
<a id='n18890' href='#n18890'>18890</a>
<a id='n18891' href='#n18891'>18891</a>
<a id='n18892' href='#n18892'>18892</a>
<a id='n18893' href='#n18893'>18893</a>
<a id='n18894' href='#n18894'>18894</a>
<a id='n18895' href='#n18895'>18895</a>
<a id='n18896' href='#n18896'>18896</a>
<a id='n18897' href='#n18897'>18897</a>
<a id='n18898' href='#n18898'>18898</a>
<a id='n18899' href='#n18899'>18899</a>
<a id='n18900' href='#n18900'>18900</a>
<a id='n18901' href='#n18901'>18901</a>
<a id='n18902' href='#n18902'>18902</a>
<a id='n18903' href='#n18903'>18903</a>
<a id='n18904' href='#n18904'>18904</a>
<a id='n18905' href='#n18905'>18905</a>
<a id='n18906' href='#n18906'>18906</a>
<a id='n18907' href='#n18907'>18907</a>
<a id='n18908' href='#n18908'>18908</a>
<a id='n18909' href='#n18909'>18909</a>
<a id='n18910' href='#n18910'>18910</a>
<a id='n18911' href='#n18911'>18911</a>
<a id='n18912' href='#n18912'>18912</a>
<a id='n18913' href='#n18913'>18913</a>
<a id='n18914' href='#n18914'>18914</a>
<a id='n18915' href='#n18915'>18915</a>
<a id='n18916' href='#n18916'>18916</a>
<a id='n18917' href='#n18917'>18917</a>
<a id='n18918' href='#n18918'>18918</a>
<a id='n18919' href='#n18919'>18919</a>
<a id='n18920' href='#n18920'>18920</a>
<a id='n18921' href='#n18921'>18921</a>
<a id='n18922' href='#n18922'>18922</a>
<a id='n18923' href='#n18923'>18923</a>
<a id='n18924' href='#n18924'>18924</a>
<a id='n18925' href='#n18925'>18925</a>
<a id='n18926' href='#n18926'>18926</a>
<a id='n18927' href='#n18927'>18927</a>
<a id='n18928' href='#n18928'>18928</a>
<a id='n18929' href='#n18929'>18929</a>
<a id='n18930' href='#n18930'>18930</a>
<a id='n18931' href='#n18931'>18931</a>
<a id='n18932' href='#n18932'>18932</a>
<a id='n18933' href='#n18933'>18933</a>
<a id='n18934' href='#n18934'>18934</a>
<a id='n18935' href='#n18935'>18935</a>
<a id='n18936' href='#n18936'>18936</a>
<a id='n18937' href='#n18937'>18937</a>
<a id='n18938' href='#n18938'>18938</a>
<a id='n18939' href='#n18939'>18939</a>
<a id='n18940' href='#n18940'>18940</a>
<a id='n18941' href='#n18941'>18941</a>
<a id='n18942' href='#n18942'>18942</a>
<a id='n18943' href='#n18943'>18943</a>
<a id='n18944' href='#n18944'>18944</a>
<a id='n18945' href='#n18945'>18945</a>
<a id='n18946' href='#n18946'>18946</a>
<a id='n18947' href='#n18947'>18947</a>
<a id='n18948' href='#n18948'>18948</a>
<a id='n18949' href='#n18949'>18949</a>
<a id='n18950' href='#n18950'>18950</a>
<a id='n18951' href='#n18951'>18951</a>
<a id='n18952' href='#n18952'>18952</a>
<a id='n18953' href='#n18953'>18953</a>
<a id='n18954' href='#n18954'>18954</a>
<a id='n18955' href='#n18955'>18955</a>
<a id='n18956' href='#n18956'>18956</a>
<a id='n18957' href='#n18957'>18957</a>
<a id='n18958' href='#n18958'>18958</a>
<a id='n18959' href='#n18959'>18959</a>
<a id='n18960' href='#n18960'>18960</a>
<a id='n18961' href='#n18961'>18961</a>
<a id='n18962' href='#n18962'>18962</a>
<a id='n18963' href='#n18963'>18963</a>
<a id='n18964' href='#n18964'>18964</a>
<a id='n18965' href='#n18965'>18965</a>
<a id='n18966' href='#n18966'>18966</a>
<a id='n18967' href='#n18967'>18967</a>
<a id='n18968' href='#n18968'>18968</a>
<a id='n18969' href='#n18969'>18969</a>
<a id='n18970' href='#n18970'>18970</a>
<a id='n18971' href='#n18971'>18971</a>
<a id='n18972' href='#n18972'>18972</a>
<a id='n18973' href='#n18973'>18973</a>
<a id='n18974' href='#n18974'>18974</a>
<a id='n18975' href='#n18975'>18975</a>
<a id='n18976' href='#n18976'>18976</a>
<a id='n18977' href='#n18977'>18977</a>
<a id='n18978' href='#n18978'>18978</a>
<a id='n18979' href='#n18979'>18979</a>
<a id='n18980' href='#n18980'>18980</a>
<a id='n18981' href='#n18981'>18981</a>
<a id='n18982' href='#n18982'>18982</a>
<a id='n18983' href='#n18983'>18983</a>
<a id='n18984' href='#n18984'>18984</a>
<a id='n18985' href='#n18985'>18985</a>
<a id='n18986' href='#n18986'>18986</a>
<a id='n18987' href='#n18987'>18987</a>
<a id='n18988' href='#n18988'>18988</a>
<a id='n18989' href='#n18989'>18989</a>
<a id='n18990' href='#n18990'>18990</a>
<a id='n18991' href='#n18991'>18991</a>
<a id='n18992' href='#n18992'>18992</a>
<a id='n18993' href='#n18993'>18993</a>
<a id='n18994' href='#n18994'>18994</a>
<a id='n18995' href='#n18995'>18995</a>
<a id='n18996' href='#n18996'>18996</a>
<a id='n18997' href='#n18997'>18997</a>
<a id='n18998' href='#n18998'>18998</a>
<a id='n18999' href='#n18999'>18999</a>
<a id='n19000' href='#n19000'>19000</a>
<a id='n19001' href='#n19001'>19001</a>
<a id='n19002' href='#n19002'>19002</a>
<a id='n19003' href='#n19003'>19003</a>
<a id='n19004' href='#n19004'>19004</a>
<a id='n19005' href='#n19005'>19005</a>
<a id='n19006' href='#n19006'>19006</a>
<a id='n19007' href='#n19007'>19007</a>
<a id='n19008' href='#n19008'>19008</a>
<a id='n19009' href='#n19009'>19009</a>
<a id='n19010' href='#n19010'>19010</a>
<a id='n19011' href='#n19011'>19011</a>
<a id='n19012' href='#n19012'>19012</a>
<a id='n19013' href='#n19013'>19013</a>
<a id='n19014' href='#n19014'>19014</a>
<a id='n19015' href='#n19015'>19015</a>
<a id='n19016' href='#n19016'>19016</a>
<a id='n19017' href='#n19017'>19017</a>
<a id='n19018' href='#n19018'>19018</a>
<a id='n19019' href='#n19019'>19019</a>
<a id='n19020' href='#n19020'>19020</a>
<a id='n19021' href='#n19021'>19021</a>
<a id='n19022' href='#n19022'>19022</a>
<a id='n19023' href='#n19023'>19023</a>
<a id='n19024' href='#n19024'>19024</a>
<a id='n19025' href='#n19025'>19025</a>
<a id='n19026' href='#n19026'>19026</a>
<a id='n19027' href='#n19027'>19027</a>
<a id='n19028' href='#n19028'>19028</a>
<a id='n19029' href='#n19029'>19029</a>
<a id='n19030' href='#n19030'>19030</a>
<a id='n19031' href='#n19031'>19031</a>
<a id='n19032' href='#n19032'>19032</a>
<a id='n19033' href='#n19033'>19033</a>
<a id='n19034' href='#n19034'>19034</a>
<a id='n19035' href='#n19035'>19035</a>
<a id='n19036' href='#n19036'>19036</a>
<a id='n19037' href='#n19037'>19037</a>
<a id='n19038' href='#n19038'>19038</a>
<a id='n19039' href='#n19039'>19039</a>
<a id='n19040' href='#n19040'>19040</a>
<a id='n19041' href='#n19041'>19041</a>
<a id='n19042' href='#n19042'>19042</a>
<a id='n19043' href='#n19043'>19043</a>
<a id='n19044' href='#n19044'>19044</a>
<a id='n19045' href='#n19045'>19045</a>
<a id='n19046' href='#n19046'>19046</a>
<a id='n19047' href='#n19047'>19047</a>
<a id='n19048' href='#n19048'>19048</a>
<a id='n19049' href='#n19049'>19049</a>
<a id='n19050' href='#n19050'>19050</a>
<a id='n19051' href='#n19051'>19051</a>
<a id='n19052' href='#n19052'>19052</a>
<a id='n19053' href='#n19053'>19053</a>
<a id='n19054' href='#n19054'>19054</a>
<a id='n19055' href='#n19055'>19055</a>
<a id='n19056' href='#n19056'>19056</a>
<a id='n19057' href='#n19057'>19057</a>
<a id='n19058' href='#n19058'>19058</a>
<a id='n19059' href='#n19059'>19059</a>
<a id='n19060' href='#n19060'>19060</a>
<a id='n19061' href='#n19061'>19061</a>
<a id='n19062' href='#n19062'>19062</a>
<a id='n19063' href='#n19063'>19063</a>
<a id='n19064' href='#n19064'>19064</a>
<a id='n19065' href='#n19065'>19065</a>
<a id='n19066' href='#n19066'>19066</a>
<a id='n19067' href='#n19067'>19067</a>
<a id='n19068' href='#n19068'>19068</a>
<a id='n19069' href='#n19069'>19069</a>
<a id='n19070' href='#n19070'>19070</a>
<a id='n19071' href='#n19071'>19071</a>
<a id='n19072' href='#n19072'>19072</a>
<a id='n19073' href='#n19073'>19073</a>
<a id='n19074' href='#n19074'>19074</a>
<a id='n19075' href='#n19075'>19075</a>
<a id='n19076' href='#n19076'>19076</a>
<a id='n19077' href='#n19077'>19077</a>
<a id='n19078' href='#n19078'>19078</a>
<a id='n19079' href='#n19079'>19079</a>
<a id='n19080' href='#n19080'>19080</a>
<a id='n19081' href='#n19081'>19081</a>
<a id='n19082' href='#n19082'>19082</a>
<a id='n19083' href='#n19083'>19083</a>
<a id='n19084' href='#n19084'>19084</a>
<a id='n19085' href='#n19085'>19085</a>
<a id='n19086' href='#n19086'>19086</a>
<a id='n19087' href='#n19087'>19087</a>
<a id='n19088' href='#n19088'>19088</a>
<a id='n19089' href='#n19089'>19089</a>
<a id='n19090' href='#n19090'>19090</a>
<a id='n19091' href='#n19091'>19091</a>
<a id='n19092' href='#n19092'>19092</a>
<a id='n19093' href='#n19093'>19093</a>
<a id='n19094' href='#n19094'>19094</a>
<a id='n19095' href='#n19095'>19095</a>
<a id='n19096' href='#n19096'>19096</a>
<a id='n19097' href='#n19097'>19097</a>
<a id='n19098' href='#n19098'>19098</a>
<a id='n19099' href='#n19099'>19099</a>
<a id='n19100' href='#n19100'>19100</a>
<a id='n19101' href='#n19101'>19101</a>
<a id='n19102' href='#n19102'>19102</a>
<a id='n19103' href='#n19103'>19103</a>
<a id='n19104' href='#n19104'>19104</a>
<a id='n19105' href='#n19105'>19105</a>
<a id='n19106' href='#n19106'>19106</a>
<a id='n19107' href='#n19107'>19107</a>
<a id='n19108' href='#n19108'>19108</a>
<a id='n19109' href='#n19109'>19109</a>
<a id='n19110' href='#n19110'>19110</a>
<a id='n19111' href='#n19111'>19111</a>
<a id='n19112' href='#n19112'>19112</a>
<a id='n19113' href='#n19113'>19113</a>
<a id='n19114' href='#n19114'>19114</a>
<a id='n19115' href='#n19115'>19115</a>
<a id='n19116' href='#n19116'>19116</a>
<a id='n19117' href='#n19117'>19117</a>
<a id='n19118' href='#n19118'>19118</a>
<a id='n19119' href='#n19119'>19119</a>
<a id='n19120' href='#n19120'>19120</a>
<a id='n19121' href='#n19121'>19121</a>
<a id='n19122' href='#n19122'>19122</a>
<a id='n19123' href='#n19123'>19123</a>
<a id='n19124' href='#n19124'>19124</a>
<a id='n19125' href='#n19125'>19125</a>
<a id='n19126' href='#n19126'>19126</a>
<a id='n19127' href='#n19127'>19127</a>
<a id='n19128' href='#n19128'>19128</a>
<a id='n19129' href='#n19129'>19129</a>
<a id='n19130' href='#n19130'>19130</a>
<a id='n19131' href='#n19131'>19131</a>
<a id='n19132' href='#n19132'>19132</a>
<a id='n19133' href='#n19133'>19133</a>
<a id='n19134' href='#n19134'>19134</a>
<a id='n19135' href='#n19135'>19135</a>
<a id='n19136' href='#n19136'>19136</a>
<a id='n19137' href='#n19137'>19137</a>
<a id='n19138' href='#n19138'>19138</a>
<a id='n19139' href='#n19139'>19139</a>
<a id='n19140' href='#n19140'>19140</a>
<a id='n19141' href='#n19141'>19141</a>
<a id='n19142' href='#n19142'>19142</a>
<a id='n19143' href='#n19143'>19143</a>
<a id='n19144' href='#n19144'>19144</a>
<a id='n19145' href='#n19145'>19145</a>
<a id='n19146' href='#n19146'>19146</a>
<a id='n19147' href='#n19147'>19147</a>
<a id='n19148' href='#n19148'>19148</a>
<a id='n19149' href='#n19149'>19149</a>
<a id='n19150' href='#n19150'>19150</a>
<a id='n19151' href='#n19151'>19151</a>
<a id='n19152' href='#n19152'>19152</a>
<a id='n19153' href='#n19153'>19153</a>
<a id='n19154' href='#n19154'>19154</a>
<a id='n19155' href='#n19155'>19155</a>
<a id='n19156' href='#n19156'>19156</a>
<a id='n19157' href='#n19157'>19157</a>
<a id='n19158' href='#n19158'>19158</a>
<a id='n19159' href='#n19159'>19159</a>
<a id='n19160' href='#n19160'>19160</a>
<a id='n19161' href='#n19161'>19161</a>
<a id='n19162' href='#n19162'>19162</a>
<a id='n19163' href='#n19163'>19163</a>
<a id='n19164' href='#n19164'>19164</a>
<a id='n19165' href='#n19165'>19165</a>
<a id='n19166' href='#n19166'>19166</a>
<a id='n19167' href='#n19167'>19167</a>
<a id='n19168' href='#n19168'>19168</a>
<a id='n19169' href='#n19169'>19169</a>
<a id='n19170' href='#n19170'>19170</a>
<a id='n19171' href='#n19171'>19171</a>
<a id='n19172' href='#n19172'>19172</a>
<a id='n19173' href='#n19173'>19173</a>
<a id='n19174' href='#n19174'>19174</a>
<a id='n19175' href='#n19175'>19175</a>
<a id='n19176' href='#n19176'>19176</a>
<a id='n19177' href='#n19177'>19177</a>
<a id='n19178' href='#n19178'>19178</a>
<a id='n19179' href='#n19179'>19179</a>
<a id='n19180' href='#n19180'>19180</a>
<a id='n19181' href='#n19181'>19181</a>
<a id='n19182' href='#n19182'>19182</a>
<a id='n19183' href='#n19183'>19183</a>
<a id='n19184' href='#n19184'>19184</a>
<a id='n19185' href='#n19185'>19185</a>
<a id='n19186' href='#n19186'>19186</a>
<a id='n19187' href='#n19187'>19187</a>
<a id='n19188' href='#n19188'>19188</a>
<a id='n19189' href='#n19189'>19189</a>
<a id='n19190' href='#n19190'>19190</a>
<a id='n19191' href='#n19191'>19191</a>
<a id='n19192' href='#n19192'>19192</a>
<a id='n19193' href='#n19193'>19193</a>
<a id='n19194' href='#n19194'>19194</a>
<a id='n19195' href='#n19195'>19195</a>
<a id='n19196' href='#n19196'>19196</a>
<a id='n19197' href='#n19197'>19197</a>
<a id='n19198' href='#n19198'>19198</a>
<a id='n19199' href='#n19199'>19199</a>
<a id='n19200' href='#n19200'>19200</a>
<a id='n19201' href='#n19201'>19201</a>
<a id='n19202' href='#n19202'>19202</a>
<a id='n19203' href='#n19203'>19203</a>
<a id='n19204' href='#n19204'>19204</a>
<a id='n19205' href='#n19205'>19205</a>
<a id='n19206' href='#n19206'>19206</a>
<a id='n19207' href='#n19207'>19207</a>
<a id='n19208' href='#n19208'>19208</a>
<a id='n19209' href='#n19209'>19209</a>
<a id='n19210' href='#n19210'>19210</a>
<a id='n19211' href='#n19211'>19211</a>
<a id='n19212' href='#n19212'>19212</a>
<a id='n19213' href='#n19213'>19213</a>
<a id='n19214' href='#n19214'>19214</a>
<a id='n19215' href='#n19215'>19215</a>
<a id='n19216' href='#n19216'>19216</a>
<a id='n19217' href='#n19217'>19217</a>
<a id='n19218' href='#n19218'>19218</a>
<a id='n19219' href='#n19219'>19219</a>
<a id='n19220' href='#n19220'>19220</a>
<a id='n19221' href='#n19221'>19221</a>
<a id='n19222' href='#n19222'>19222</a>
<a id='n19223' href='#n19223'>19223</a>
<a id='n19224' href='#n19224'>19224</a>
<a id='n19225' href='#n19225'>19225</a>
<a id='n19226' href='#n19226'>19226</a>
<a id='n19227' href='#n19227'>19227</a>
<a id='n19228' href='#n19228'>19228</a>
<a id='n19229' href='#n19229'>19229</a>
<a id='n19230' href='#n19230'>19230</a>
<a id='n19231' href='#n19231'>19231</a>
<a id='n19232' href='#n19232'>19232</a>
<a id='n19233' href='#n19233'>19233</a>
<a id='n19234' href='#n19234'>19234</a>
<a id='n19235' href='#n19235'>19235</a>
<a id='n19236' href='#n19236'>19236</a>
<a id='n19237' href='#n19237'>19237</a>
<a id='n19238' href='#n19238'>19238</a>
<a id='n19239' href='#n19239'>19239</a>
<a id='n19240' href='#n19240'>19240</a>
<a id='n19241' href='#n19241'>19241</a>
<a id='n19242' href='#n19242'>19242</a>
<a id='n19243' href='#n19243'>19243</a>
<a id='n19244' href='#n19244'>19244</a>
<a id='n19245' href='#n19245'>19245</a>
<a id='n19246' href='#n19246'>19246</a>
<a id='n19247' href='#n19247'>19247</a>
<a id='n19248' href='#n19248'>19248</a>
<a id='n19249' href='#n19249'>19249</a>
<a id='n19250' href='#n19250'>19250</a>
<a id='n19251' href='#n19251'>19251</a>
<a id='n19252' href='#n19252'>19252</a>
<a id='n19253' href='#n19253'>19253</a>
<a id='n19254' href='#n19254'>19254</a>
<a id='n19255' href='#n19255'>19255</a>
<a id='n19256' href='#n19256'>19256</a>
<a id='n19257' href='#n19257'>19257</a>
<a id='n19258' href='#n19258'>19258</a>
<a id='n19259' href='#n19259'>19259</a>
<a id='n19260' href='#n19260'>19260</a>
<a id='n19261' href='#n19261'>19261</a>
<a id='n19262' href='#n19262'>19262</a>
<a id='n19263' href='#n19263'>19263</a>
<a id='n19264' href='#n19264'>19264</a>
<a id='n19265' href='#n19265'>19265</a>
<a id='n19266' href='#n19266'>19266</a>
<a id='n19267' href='#n19267'>19267</a>
<a id='n19268' href='#n19268'>19268</a>
<a id='n19269' href='#n19269'>19269</a>
<a id='n19270' href='#n19270'>19270</a>
<a id='n19271' href='#n19271'>19271</a>
<a id='n19272' href='#n19272'>19272</a>
<a id='n19273' href='#n19273'>19273</a>
<a id='n19274' href='#n19274'>19274</a>
<a id='n19275' href='#n19275'>19275</a>
<a id='n19276' href='#n19276'>19276</a>
<a id='n19277' href='#n19277'>19277</a>
<a id='n19278' href='#n19278'>19278</a>
<a id='n19279' href='#n19279'>19279</a>
<a id='n19280' href='#n19280'>19280</a>
<a id='n19281' href='#n19281'>19281</a>
<a id='n19282' href='#n19282'>19282</a>
<a id='n19283' href='#n19283'>19283</a>
<a id='n19284' href='#n19284'>19284</a>
<a id='n19285' href='#n19285'>19285</a>
<a id='n19286' href='#n19286'>19286</a>
<a id='n19287' href='#n19287'>19287</a>
<a id='n19288' href='#n19288'>19288</a>
<a id='n19289' href='#n19289'>19289</a>
<a id='n19290' href='#n19290'>19290</a>
<a id='n19291' href='#n19291'>19291</a>
<a id='n19292' href='#n19292'>19292</a>
<a id='n19293' href='#n19293'>19293</a>
<a id='n19294' href='#n19294'>19294</a>
<a id='n19295' href='#n19295'>19295</a>
<a id='n19296' href='#n19296'>19296</a>
<a id='n19297' href='#n19297'>19297</a>
<a id='n19298' href='#n19298'>19298</a>
<a id='n19299' href='#n19299'>19299</a>
<a id='n19300' href='#n19300'>19300</a>
<a id='n19301' href='#n19301'>19301</a>
<a id='n19302' href='#n19302'>19302</a>
<a id='n19303' href='#n19303'>19303</a>
<a id='n19304' href='#n19304'>19304</a>
<a id='n19305' href='#n19305'>19305</a>
<a id='n19306' href='#n19306'>19306</a>
<a id='n19307' href='#n19307'>19307</a>
<a id='n19308' href='#n19308'>19308</a>
<a id='n19309' href='#n19309'>19309</a>
<a id='n19310' href='#n19310'>19310</a>
<a id='n19311' href='#n19311'>19311</a>
<a id='n19312' href='#n19312'>19312</a>
<a id='n19313' href='#n19313'>19313</a>
<a id='n19314' href='#n19314'>19314</a>
<a id='n19315' href='#n19315'>19315</a>
<a id='n19316' href='#n19316'>19316</a>
<a id='n19317' href='#n19317'>19317</a>
<a id='n19318' href='#n19318'>19318</a>
<a id='n19319' href='#n19319'>19319</a>
<a id='n19320' href='#n19320'>19320</a>
<a id='n19321' href='#n19321'>19321</a>
<a id='n19322' href='#n19322'>19322</a>
<a id='n19323' href='#n19323'>19323</a>
<a id='n19324' href='#n19324'>19324</a>
<a id='n19325' href='#n19325'>19325</a>
<a id='n19326' href='#n19326'>19326</a>
<a id='n19327' href='#n19327'>19327</a>
<a id='n19328' href='#n19328'>19328</a>
<a id='n19329' href='#n19329'>19329</a>
<a id='n19330' href='#n19330'>19330</a>
<a id='n19331' href='#n19331'>19331</a>
<a id='n19332' href='#n19332'>19332</a>
<a id='n19333' href='#n19333'>19333</a>
<a id='n19334' href='#n19334'>19334</a>
<a id='n19335' href='#n19335'>19335</a>
<a id='n19336' href='#n19336'>19336</a>
<a id='n19337' href='#n19337'>19337</a>
<a id='n19338' href='#n19338'>19338</a>
<a id='n19339' href='#n19339'>19339</a>
<a id='n19340' href='#n19340'>19340</a>
<a id='n19341' href='#n19341'>19341</a>
<a id='n19342' href='#n19342'>19342</a>
<a id='n19343' href='#n19343'>19343</a>
<a id='n19344' href='#n19344'>19344</a>
<a id='n19345' href='#n19345'>19345</a>
<a id='n19346' href='#n19346'>19346</a>
<a id='n19347' href='#n19347'>19347</a>
<a id='n19348' href='#n19348'>19348</a>
<a id='n19349' href='#n19349'>19349</a>
<a id='n19350' href='#n19350'>19350</a>
<a id='n19351' href='#n19351'>19351</a>
<a id='n19352' href='#n19352'>19352</a>
<a id='n19353' href='#n19353'>19353</a>
<a id='n19354' href='#n19354'>19354</a>
<a id='n19355' href='#n19355'>19355</a>
<a id='n19356' href='#n19356'>19356</a>
<a id='n19357' href='#n19357'>19357</a>
<a id='n19358' href='#n19358'>19358</a>
<a id='n19359' href='#n19359'>19359</a>
<a id='n19360' href='#n19360'>19360</a>
<a id='n19361' href='#n19361'>19361</a>
<a id='n19362' href='#n19362'>19362</a>
<a id='n19363' href='#n19363'>19363</a>
<a id='n19364' href='#n19364'>19364</a>
<a id='n19365' href='#n19365'>19365</a>
<a id='n19366' href='#n19366'>19366</a>
<a id='n19367' href='#n19367'>19367</a>
<a id='n19368' href='#n19368'>19368</a>
<a id='n19369' href='#n19369'>19369</a>
<a id='n19370' href='#n19370'>19370</a>
<a id='n19371' href='#n19371'>19371</a>
<a id='n19372' href='#n19372'>19372</a>
<a id='n19373' href='#n19373'>19373</a>
<a id='n19374' href='#n19374'>19374</a>
<a id='n19375' href='#n19375'>19375</a>
<a id='n19376' href='#n19376'>19376</a>
<a id='n19377' href='#n19377'>19377</a>
<a id='n19378' href='#n19378'>19378</a>
<a id='n19379' href='#n19379'>19379</a>
<a id='n19380' href='#n19380'>19380</a>
<a id='n19381' href='#n19381'>19381</a>
<a id='n19382' href='#n19382'>19382</a>
<a id='n19383' href='#n19383'>19383</a>
<a id='n19384' href='#n19384'>19384</a>
<a id='n19385' href='#n19385'>19385</a>
<a id='n19386' href='#n19386'>19386</a>
<a id='n19387' href='#n19387'>19387</a>
<a id='n19388' href='#n19388'>19388</a>
<a id='n19389' href='#n19389'>19389</a>
<a id='n19390' href='#n19390'>19390</a>
<a id='n19391' href='#n19391'>19391</a>
<a id='n19392' href='#n19392'>19392</a>
<a id='n19393' href='#n19393'>19393</a>
<a id='n19394' href='#n19394'>19394</a>
<a id='n19395' href='#n19395'>19395</a>
<a id='n19396' href='#n19396'>19396</a>
<a id='n19397' href='#n19397'>19397</a>
<a id='n19398' href='#n19398'>19398</a>
<a id='n19399' href='#n19399'>19399</a>
<a id='n19400' href='#n19400'>19400</a>
<a id='n19401' href='#n19401'>19401</a>
<a id='n19402' href='#n19402'>19402</a>
<a id='n19403' href='#n19403'>19403</a>
<a id='n19404' href='#n19404'>19404</a>
<a id='n19405' href='#n19405'>19405</a>
<a id='n19406' href='#n19406'>19406</a>
<a id='n19407' href='#n19407'>19407</a>
<a id='n19408' href='#n19408'>19408</a>
<a id='n19409' href='#n19409'>19409</a>
<a id='n19410' href='#n19410'>19410</a>
<a id='n19411' href='#n19411'>19411</a>
<a id='n19412' href='#n19412'>19412</a>
<a id='n19413' href='#n19413'>19413</a>
<a id='n19414' href='#n19414'>19414</a>
<a id='n19415' href='#n19415'>19415</a>
<a id='n19416' href='#n19416'>19416</a>
<a id='n19417' href='#n19417'>19417</a>
<a id='n19418' href='#n19418'>19418</a>
<a id='n19419' href='#n19419'>19419</a>
<a id='n19420' href='#n19420'>19420</a>
<a id='n19421' href='#n19421'>19421</a>
<a id='n19422' href='#n19422'>19422</a>
<a id='n19423' href='#n19423'>19423</a>
<a id='n19424' href='#n19424'>19424</a>
<a id='n19425' href='#n19425'>19425</a>
<a id='n19426' href='#n19426'>19426</a>
<a id='n19427' href='#n19427'>19427</a>
<a id='n19428' href='#n19428'>19428</a>
<a id='n19429' href='#n19429'>19429</a>
<a id='n19430' href='#n19430'>19430</a>
<a id='n19431' href='#n19431'>19431</a>
<a id='n19432' href='#n19432'>19432</a>
<a id='n19433' href='#n19433'>19433</a>
<a id='n19434' href='#n19434'>19434</a>
<a id='n19435' href='#n19435'>19435</a>
<a id='n19436' href='#n19436'>19436</a>
<a id='n19437' href='#n19437'>19437</a>
<a id='n19438' href='#n19438'>19438</a>
<a id='n19439' href='#n19439'>19439</a>
<a id='n19440' href='#n19440'>19440</a>
<a id='n19441' href='#n19441'>19441</a>
<a id='n19442' href='#n19442'>19442</a>
<a id='n19443' href='#n19443'>19443</a>
<a id='n19444' href='#n19444'>19444</a>
<a id='n19445' href='#n19445'>19445</a>
<a id='n19446' href='#n19446'>19446</a>
<a id='n19447' href='#n19447'>19447</a>
<a id='n19448' href='#n19448'>19448</a>
<a id='n19449' href='#n19449'>19449</a>
<a id='n19450' href='#n19450'>19450</a>
<a id='n19451' href='#n19451'>19451</a>
<a id='n19452' href='#n19452'>19452</a>
<a id='n19453' href='#n19453'>19453</a>
<a id='n19454' href='#n19454'>19454</a>
<a id='n19455' href='#n19455'>19455</a>
<a id='n19456' href='#n19456'>19456</a>
<a id='n19457' href='#n19457'>19457</a>
<a id='n19458' href='#n19458'>19458</a>
<a id='n19459' href='#n19459'>19459</a>
<a id='n19460' href='#n19460'>19460</a>
<a id='n19461' href='#n19461'>19461</a>
<a id='n19462' href='#n19462'>19462</a>
<a id='n19463' href='#n19463'>19463</a>
<a id='n19464' href='#n19464'>19464</a>
<a id='n19465' href='#n19465'>19465</a>
<a id='n19466' href='#n19466'>19466</a>
<a id='n19467' href='#n19467'>19467</a>
<a id='n19468' href='#n19468'>19468</a>
<a id='n19469' href='#n19469'>19469</a>
<a id='n19470' href='#n19470'>19470</a>
<a id='n19471' href='#n19471'>19471</a>
<a id='n19472' href='#n19472'>19472</a>
<a id='n19473' href='#n19473'>19473</a>
<a id='n19474' href='#n19474'>19474</a>
<a id='n19475' href='#n19475'>19475</a>
<a id='n19476' href='#n19476'>19476</a>
<a id='n19477' href='#n19477'>19477</a>
<a id='n19478' href='#n19478'>19478</a>
<a id='n19479' href='#n19479'>19479</a>
<a id='n19480' href='#n19480'>19480</a>
<a id='n19481' href='#n19481'>19481</a>
<a id='n19482' href='#n19482'>19482</a>
<a id='n19483' href='#n19483'>19483</a>
<a id='n19484' href='#n19484'>19484</a>
<a id='n19485' href='#n19485'>19485</a>
<a id='n19486' href='#n19486'>19486</a>
<a id='n19487' href='#n19487'>19487</a>
<a id='n19488' href='#n19488'>19488</a>
<a id='n19489' href='#n19489'>19489</a>
<a id='n19490' href='#n19490'>19490</a>
<a id='n19491' href='#n19491'>19491</a>
<a id='n19492' href='#n19492'>19492</a>
<a id='n19493' href='#n19493'>19493</a>
<a id='n19494' href='#n19494'>19494</a>
<a id='n19495' href='#n19495'>19495</a>
<a id='n19496' href='#n19496'>19496</a>
<a id='n19497' href='#n19497'>19497</a>
<a id='n19498' href='#n19498'>19498</a>
<a id='n19499' href='#n19499'>19499</a>
<a id='n19500' href='#n19500'>19500</a>
<a id='n19501' href='#n19501'>19501</a>
<a id='n19502' href='#n19502'>19502</a>
<a id='n19503' href='#n19503'>19503</a>
<a id='n19504' href='#n19504'>19504</a>
<a id='n19505' href='#n19505'>19505</a>
<a id='n19506' href='#n19506'>19506</a>
<a id='n19507' href='#n19507'>19507</a>
<a id='n19508' href='#n19508'>19508</a>
<a id='n19509' href='#n19509'>19509</a>
<a id='n19510' href='#n19510'>19510</a>
<a id='n19511' href='#n19511'>19511</a>
<a id='n19512' href='#n19512'>19512</a>
<a id='n19513' href='#n19513'>19513</a>
<a id='n19514' href='#n19514'>19514</a>
<a id='n19515' href='#n19515'>19515</a>
<a id='n19516' href='#n19516'>19516</a>
<a id='n19517' href='#n19517'>19517</a>
<a id='n19518' href='#n19518'>19518</a>
<a id='n19519' href='#n19519'>19519</a>
<a id='n19520' href='#n19520'>19520</a>
<a id='n19521' href='#n19521'>19521</a>
<a id='n19522' href='#n19522'>19522</a>
<a id='n19523' href='#n19523'>19523</a>
<a id='n19524' href='#n19524'>19524</a>
<a id='n19525' href='#n19525'>19525</a>
<a id='n19526' href='#n19526'>19526</a>
<a id='n19527' href='#n19527'>19527</a>
<a id='n19528' href='#n19528'>19528</a>
<a id='n19529' href='#n19529'>19529</a>
<a id='n19530' href='#n19530'>19530</a>
<a id='n19531' href='#n19531'>19531</a>
<a id='n19532' href='#n19532'>19532</a>
<a id='n19533' href='#n19533'>19533</a>
<a id='n19534' href='#n19534'>19534</a>
<a id='n19535' href='#n19535'>19535</a>
<a id='n19536' href='#n19536'>19536</a>
<a id='n19537' href='#n19537'>19537</a>
<a id='n19538' href='#n19538'>19538</a>
<a id='n19539' href='#n19539'>19539</a>
<a id='n19540' href='#n19540'>19540</a>
<a id='n19541' href='#n19541'>19541</a>
<a id='n19542' href='#n19542'>19542</a>
<a id='n19543' href='#n19543'>19543</a>
<a id='n19544' href='#n19544'>19544</a>
<a id='n19545' href='#n19545'>19545</a>
<a id='n19546' href='#n19546'>19546</a>
<a id='n19547' href='#n19547'>19547</a>
<a id='n19548' href='#n19548'>19548</a>
<a id='n19549' href='#n19549'>19549</a>
<a id='n19550' href='#n19550'>19550</a>
<a id='n19551' href='#n19551'>19551</a>
<a id='n19552' href='#n19552'>19552</a>
<a id='n19553' href='#n19553'>19553</a>
<a id='n19554' href='#n19554'>19554</a>
<a id='n19555' href='#n19555'>19555</a>
<a id='n19556' href='#n19556'>19556</a>
<a id='n19557' href='#n19557'>19557</a>
<a id='n19558' href='#n19558'>19558</a>
<a id='n19559' href='#n19559'>19559</a>
<a id='n19560' href='#n19560'>19560</a>
<a id='n19561' href='#n19561'>19561</a>
<a id='n19562' href='#n19562'>19562</a>
<a id='n19563' href='#n19563'>19563</a>
<a id='n19564' href='#n19564'>19564</a>
<a id='n19565' href='#n19565'>19565</a>
<a id='n19566' href='#n19566'>19566</a>
<a id='n19567' href='#n19567'>19567</a>
<a id='n19568' href='#n19568'>19568</a>
<a id='n19569' href='#n19569'>19569</a>
<a id='n19570' href='#n19570'>19570</a>
<a id='n19571' href='#n19571'>19571</a>
<a id='n19572' href='#n19572'>19572</a>
<a id='n19573' href='#n19573'>19573</a>
<a id='n19574' href='#n19574'>19574</a>
<a id='n19575' href='#n19575'>19575</a>
<a id='n19576' href='#n19576'>19576</a>
<a id='n19577' href='#n19577'>19577</a>
<a id='n19578' href='#n19578'>19578</a>
<a id='n19579' href='#n19579'>19579</a>
<a id='n19580' href='#n19580'>19580</a>
<a id='n19581' href='#n19581'>19581</a>
<a id='n19582' href='#n19582'>19582</a>
<a id='n19583' href='#n19583'>19583</a>
<a id='n19584' href='#n19584'>19584</a>
<a id='n19585' href='#n19585'>19585</a>
<a id='n19586' href='#n19586'>19586</a>
<a id='n19587' href='#n19587'>19587</a>
<a id='n19588' href='#n19588'>19588</a>
<a id='n19589' href='#n19589'>19589</a>
<a id='n19590' href='#n19590'>19590</a>
<a id='n19591' href='#n19591'>19591</a>
<a id='n19592' href='#n19592'>19592</a>
<a id='n19593' href='#n19593'>19593</a>
<a id='n19594' href='#n19594'>19594</a>
<a id='n19595' href='#n19595'>19595</a>
<a id='n19596' href='#n19596'>19596</a>
<a id='n19597' href='#n19597'>19597</a>
<a id='n19598' href='#n19598'>19598</a>
<a id='n19599' href='#n19599'>19599</a>
<a id='n19600' href='#n19600'>19600</a>
<a id='n19601' href='#n19601'>19601</a>
<a id='n19602' href='#n19602'>19602</a>
<a id='n19603' href='#n19603'>19603</a>
<a id='n19604' href='#n19604'>19604</a>
<a id='n19605' href='#n19605'>19605</a>
<a id='n19606' href='#n19606'>19606</a>
<a id='n19607' href='#n19607'>19607</a>
<a id='n19608' href='#n19608'>19608</a>
<a id='n19609' href='#n19609'>19609</a>
<a id='n19610' href='#n19610'>19610</a>
<a id='n19611' href='#n19611'>19611</a>
<a id='n19612' href='#n19612'>19612</a>
<a id='n19613' href='#n19613'>19613</a>
<a id='n19614' href='#n19614'>19614</a>
<a id='n19615' href='#n19615'>19615</a>
<a id='n19616' href='#n19616'>19616</a>
<a id='n19617' href='#n19617'>19617</a>
<a id='n19618' href='#n19618'>19618</a>
<a id='n19619' href='#n19619'>19619</a>
<a id='n19620' href='#n19620'>19620</a>
<a id='n19621' href='#n19621'>19621</a>
<a id='n19622' href='#n19622'>19622</a>
<a id='n19623' href='#n19623'>19623</a>
<a id='n19624' href='#n19624'>19624</a>
<a id='n19625' href='#n19625'>19625</a>
<a id='n19626' href='#n19626'>19626</a>
<a id='n19627' href='#n19627'>19627</a>
<a id='n19628' href='#n19628'>19628</a>
<a id='n19629' href='#n19629'>19629</a>
<a id='n19630' href='#n19630'>19630</a>
<a id='n19631' href='#n19631'>19631</a>
<a id='n19632' href='#n19632'>19632</a>
<a id='n19633' href='#n19633'>19633</a>
<a id='n19634' href='#n19634'>19634</a>
<a id='n19635' href='#n19635'>19635</a>
<a id='n19636' href='#n19636'>19636</a>
<a id='n19637' href='#n19637'>19637</a>
<a id='n19638' href='#n19638'>19638</a>
<a id='n19639' href='#n19639'>19639</a>
<a id='n19640' href='#n19640'>19640</a>
<a id='n19641' href='#n19641'>19641</a>
<a id='n19642' href='#n19642'>19642</a>
<a id='n19643' href='#n19643'>19643</a>
<a id='n19644' href='#n19644'>19644</a>
<a id='n19645' href='#n19645'>19645</a>
<a id='n19646' href='#n19646'>19646</a>
<a id='n19647' href='#n19647'>19647</a>
<a id='n19648' href='#n19648'>19648</a>
<a id='n19649' href='#n19649'>19649</a>
<a id='n19650' href='#n19650'>19650</a>
<a id='n19651' href='#n19651'>19651</a>
<a id='n19652' href='#n19652'>19652</a>
<a id='n19653' href='#n19653'>19653</a>
<a id='n19654' href='#n19654'>19654</a>
<a id='n19655' href='#n19655'>19655</a>
<a id='n19656' href='#n19656'>19656</a>
<a id='n19657' href='#n19657'>19657</a>
<a id='n19658' href='#n19658'>19658</a>
<a id='n19659' href='#n19659'>19659</a>
<a id='n19660' href='#n19660'>19660</a>
<a id='n19661' href='#n19661'>19661</a>
<a id='n19662' href='#n19662'>19662</a>
<a id='n19663' href='#n19663'>19663</a>
<a id='n19664' href='#n19664'>19664</a>
<a id='n19665' href='#n19665'>19665</a>
<a id='n19666' href='#n19666'>19666</a>
<a id='n19667' href='#n19667'>19667</a>
<a id='n19668' href='#n19668'>19668</a>
<a id='n19669' href='#n19669'>19669</a>
<a id='n19670' href='#n19670'>19670</a>
<a id='n19671' href='#n19671'>19671</a>
<a id='n19672' href='#n19672'>19672</a>
<a id='n19673' href='#n19673'>19673</a>
<a id='n19674' href='#n19674'>19674</a>
<a id='n19675' href='#n19675'>19675</a>
<a id='n19676' href='#n19676'>19676</a>
<a id='n19677' href='#n19677'>19677</a>
<a id='n19678' href='#n19678'>19678</a>
<a id='n19679' href='#n19679'>19679</a>
<a id='n19680' href='#n19680'>19680</a>
<a id='n19681' href='#n19681'>19681</a>
<a id='n19682' href='#n19682'>19682</a>
<a id='n19683' href='#n19683'>19683</a>
<a id='n19684' href='#n19684'>19684</a>
<a id='n19685' href='#n19685'>19685</a>
<a id='n19686' href='#n19686'>19686</a>
<a id='n19687' href='#n19687'>19687</a>
<a id='n19688' href='#n19688'>19688</a>
<a id='n19689' href='#n19689'>19689</a>
<a id='n19690' href='#n19690'>19690</a>
<a id='n19691' href='#n19691'>19691</a>
<a id='n19692' href='#n19692'>19692</a>
<a id='n19693' href='#n19693'>19693</a>
<a id='n19694' href='#n19694'>19694</a>
<a id='n19695' href='#n19695'>19695</a>
<a id='n19696' href='#n19696'>19696</a>
<a id='n19697' href='#n19697'>19697</a>
<a id='n19698' href='#n19698'>19698</a>
<a id='n19699' href='#n19699'>19699</a>
<a id='n19700' href='#n19700'>19700</a>
<a id='n19701' href='#n19701'>19701</a>
<a id='n19702' href='#n19702'>19702</a>
<a id='n19703' href='#n19703'>19703</a>
<a id='n19704' href='#n19704'>19704</a>
<a id='n19705' href='#n19705'>19705</a>
<a id='n19706' href='#n19706'>19706</a>
<a id='n19707' href='#n19707'>19707</a>
<a id='n19708' href='#n19708'>19708</a>
<a id='n19709' href='#n19709'>19709</a>
<a id='n19710' href='#n19710'>19710</a>
<a id='n19711' href='#n19711'>19711</a>
<a id='n19712' href='#n19712'>19712</a>
<a id='n19713' href='#n19713'>19713</a>
<a id='n19714' href='#n19714'>19714</a>
<a id='n19715' href='#n19715'>19715</a>
<a id='n19716' href='#n19716'>19716</a>
<a id='n19717' href='#n19717'>19717</a>
<a id='n19718' href='#n19718'>19718</a>
<a id='n19719' href='#n19719'>19719</a>
<a id='n19720' href='#n19720'>19720</a>
<a id='n19721' href='#n19721'>19721</a>
<a id='n19722' href='#n19722'>19722</a>
<a id='n19723' href='#n19723'>19723</a>
<a id='n19724' href='#n19724'>19724</a>
<a id='n19725' href='#n19725'>19725</a>
<a id='n19726' href='#n19726'>19726</a>
<a id='n19727' href='#n19727'>19727</a>
<a id='n19728' href='#n19728'>19728</a>
<a id='n19729' href='#n19729'>19729</a>
<a id='n19730' href='#n19730'>19730</a>
<a id='n19731' href='#n19731'>19731</a>
<a id='n19732' href='#n19732'>19732</a>
<a id='n19733' href='#n19733'>19733</a>
<a id='n19734' href='#n19734'>19734</a>
<a id='n19735' href='#n19735'>19735</a>
<a id='n19736' href='#n19736'>19736</a>
<a id='n19737' href='#n19737'>19737</a>
<a id='n19738' href='#n19738'>19738</a>
<a id='n19739' href='#n19739'>19739</a>
<a id='n19740' href='#n19740'>19740</a>
<a id='n19741' href='#n19741'>19741</a>
<a id='n19742' href='#n19742'>19742</a>
<a id='n19743' href='#n19743'>19743</a>
<a id='n19744' href='#n19744'>19744</a>
<a id='n19745' href='#n19745'>19745</a>
<a id='n19746' href='#n19746'>19746</a>
<a id='n19747' href='#n19747'>19747</a>
<a id='n19748' href='#n19748'>19748</a>
<a id='n19749' href='#n19749'>19749</a>
<a id='n19750' href='#n19750'>19750</a>
<a id='n19751' href='#n19751'>19751</a>
<a id='n19752' href='#n19752'>19752</a>
<a id='n19753' href='#n19753'>19753</a>
<a id='n19754' href='#n19754'>19754</a>
<a id='n19755' href='#n19755'>19755</a>
<a id='n19756' href='#n19756'>19756</a>
<a id='n19757' href='#n19757'>19757</a>
<a id='n19758' href='#n19758'>19758</a>
<a id='n19759' href='#n19759'>19759</a>
<a id='n19760' href='#n19760'>19760</a>
<a id='n19761' href='#n19761'>19761</a>
<a id='n19762' href='#n19762'>19762</a>
<a id='n19763' href='#n19763'>19763</a>
<a id='n19764' href='#n19764'>19764</a>
<a id='n19765' href='#n19765'>19765</a>
<a id='n19766' href='#n19766'>19766</a>
<a id='n19767' href='#n19767'>19767</a>
<a id='n19768' href='#n19768'>19768</a>
<a id='n19769' href='#n19769'>19769</a>
<a id='n19770' href='#n19770'>19770</a>
<a id='n19771' href='#n19771'>19771</a>
<a id='n19772' href='#n19772'>19772</a>
<a id='n19773' href='#n19773'>19773</a>
<a id='n19774' href='#n19774'>19774</a>
<a id='n19775' href='#n19775'>19775</a>
<a id='n19776' href='#n19776'>19776</a>
<a id='n19777' href='#n19777'>19777</a>
<a id='n19778' href='#n19778'>19778</a>
<a id='n19779' href='#n19779'>19779</a>
<a id='n19780' href='#n19780'>19780</a>
<a id='n19781' href='#n19781'>19781</a>
<a id='n19782' href='#n19782'>19782</a>
<a id='n19783' href='#n19783'>19783</a>
<a id='n19784' href='#n19784'>19784</a>
<a id='n19785' href='#n19785'>19785</a>
<a id='n19786' href='#n19786'>19786</a>
<a id='n19787' href='#n19787'>19787</a>
<a id='n19788' href='#n19788'>19788</a>
<a id='n19789' href='#n19789'>19789</a>
<a id='n19790' href='#n19790'>19790</a>
<a id='n19791' href='#n19791'>19791</a>
<a id='n19792' href='#n19792'>19792</a>
<a id='n19793' href='#n19793'>19793</a>
<a id='n19794' href='#n19794'>19794</a>
<a id='n19795' href='#n19795'>19795</a>
<a id='n19796' href='#n19796'>19796</a>
<a id='n19797' href='#n19797'>19797</a>
<a id='n19798' href='#n19798'>19798</a>
<a id='n19799' href='#n19799'>19799</a>
<a id='n19800' href='#n19800'>19800</a>
<a id='n19801' href='#n19801'>19801</a>
<a id='n19802' href='#n19802'>19802</a>
<a id='n19803' href='#n19803'>19803</a>
<a id='n19804' href='#n19804'>19804</a>
<a id='n19805' href='#n19805'>19805</a>
<a id='n19806' href='#n19806'>19806</a>
<a id='n19807' href='#n19807'>19807</a>
<a id='n19808' href='#n19808'>19808</a>
<a id='n19809' href='#n19809'>19809</a>
<a id='n19810' href='#n19810'>19810</a>
<a id='n19811' href='#n19811'>19811</a>
<a id='n19812' href='#n19812'>19812</a>
<a id='n19813' href='#n19813'>19813</a>
<a id='n19814' href='#n19814'>19814</a>
<a id='n19815' href='#n19815'>19815</a>
<a id='n19816' href='#n19816'>19816</a>
<a id='n19817' href='#n19817'>19817</a>
<a id='n19818' href='#n19818'>19818</a>
<a id='n19819' href='#n19819'>19819</a>
<a id='n19820' href='#n19820'>19820</a>
<a id='n19821' href='#n19821'>19821</a>
<a id='n19822' href='#n19822'>19822</a>
<a id='n19823' href='#n19823'>19823</a>
<a id='n19824' href='#n19824'>19824</a>
<a id='n19825' href='#n19825'>19825</a>
<a id='n19826' href='#n19826'>19826</a>
<a id='n19827' href='#n19827'>19827</a>
<a id='n19828' href='#n19828'>19828</a>
<a id='n19829' href='#n19829'>19829</a>
<a id='n19830' href='#n19830'>19830</a>
<a id='n19831' href='#n19831'>19831</a>
<a id='n19832' href='#n19832'>19832</a>
<a id='n19833' href='#n19833'>19833</a>
<a id='n19834' href='#n19834'>19834</a>
<a id='n19835' href='#n19835'>19835</a>
<a id='n19836' href='#n19836'>19836</a>
<a id='n19837' href='#n19837'>19837</a>
<a id='n19838' href='#n19838'>19838</a>
<a id='n19839' href='#n19839'>19839</a>
<a id='n19840' href='#n19840'>19840</a>
<a id='n19841' href='#n19841'>19841</a>
<a id='n19842' href='#n19842'>19842</a>
<a id='n19843' href='#n19843'>19843</a>
<a id='n19844' href='#n19844'>19844</a>
<a id='n19845' href='#n19845'>19845</a>
<a id='n19846' href='#n19846'>19846</a>
<a id='n19847' href='#n19847'>19847</a>
<a id='n19848' href='#n19848'>19848</a>
<a id='n19849' href='#n19849'>19849</a>
<a id='n19850' href='#n19850'>19850</a>
<a id='n19851' href='#n19851'>19851</a>
<a id='n19852' href='#n19852'>19852</a>
<a id='n19853' href='#n19853'>19853</a>
<a id='n19854' href='#n19854'>19854</a>
<a id='n19855' href='#n19855'>19855</a>
<a id='n19856' href='#n19856'>19856</a>
<a id='n19857' href='#n19857'>19857</a>
<a id='n19858' href='#n19858'>19858</a>
<a id='n19859' href='#n19859'>19859</a>
<a id='n19860' href='#n19860'>19860</a>
<a id='n19861' href='#n19861'>19861</a>
<a id='n19862' href='#n19862'>19862</a>
<a id='n19863' href='#n19863'>19863</a>
<a id='n19864' href='#n19864'>19864</a>
<a id='n19865' href='#n19865'>19865</a>
<a id='n19866' href='#n19866'>19866</a>
<a id='n19867' href='#n19867'>19867</a>
<a id='n19868' href='#n19868'>19868</a>
<a id='n19869' href='#n19869'>19869</a>
<a id='n19870' href='#n19870'>19870</a>
<a id='n19871' href='#n19871'>19871</a>
<a id='n19872' href='#n19872'>19872</a>
<a id='n19873' href='#n19873'>19873</a>
<a id='n19874' href='#n19874'>19874</a>
<a id='n19875' href='#n19875'>19875</a>
<a id='n19876' href='#n19876'>19876</a>
<a id='n19877' href='#n19877'>19877</a>
<a id='n19878' href='#n19878'>19878</a>
<a id='n19879' href='#n19879'>19879</a>
<a id='n19880' href='#n19880'>19880</a>
<a id='n19881' href='#n19881'>19881</a>
<a id='n19882' href='#n19882'>19882</a>
<a id='n19883' href='#n19883'>19883</a>
<a id='n19884' href='#n19884'>19884</a>
<a id='n19885' href='#n19885'>19885</a>
<a id='n19886' href='#n19886'>19886</a>
<a id='n19887' href='#n19887'>19887</a>
<a id='n19888' href='#n19888'>19888</a>
<a id='n19889' href='#n19889'>19889</a>
<a id='n19890' href='#n19890'>19890</a>
<a id='n19891' href='#n19891'>19891</a>
<a id='n19892' href='#n19892'>19892</a>
<a id='n19893' href='#n19893'>19893</a>
<a id='n19894' href='#n19894'>19894</a>
<a id='n19895' href='#n19895'>19895</a>
<a id='n19896' href='#n19896'>19896</a>
<a id='n19897' href='#n19897'>19897</a>
<a id='n19898' href='#n19898'>19898</a>
<a id='n19899' href='#n19899'>19899</a>
<a id='n19900' href='#n19900'>19900</a>
<a id='n19901' href='#n19901'>19901</a>
<a id='n19902' href='#n19902'>19902</a>
<a id='n19903' href='#n19903'>19903</a>
<a id='n19904' href='#n19904'>19904</a>
<a id='n19905' href='#n19905'>19905</a>
<a id='n19906' href='#n19906'>19906</a>
<a id='n19907' href='#n19907'>19907</a>
<a id='n19908' href='#n19908'>19908</a>
<a id='n19909' href='#n19909'>19909</a>
<a id='n19910' href='#n19910'>19910</a>
<a id='n19911' href='#n19911'>19911</a>
<a id='n19912' href='#n19912'>19912</a>
<a id='n19913' href='#n19913'>19913</a>
<a id='n19914' href='#n19914'>19914</a>
<a id='n19915' href='#n19915'>19915</a>
<a id='n19916' href='#n19916'>19916</a>
<a id='n19917' href='#n19917'>19917</a>
<a id='n19918' href='#n19918'>19918</a>
<a id='n19919' href='#n19919'>19919</a>
<a id='n19920' href='#n19920'>19920</a>
<a id='n19921' href='#n19921'>19921</a>
<a id='n19922' href='#n19922'>19922</a>
<a id='n19923' href='#n19923'>19923</a>
<a id='n19924' href='#n19924'>19924</a>
<a id='n19925' href='#n19925'>19925</a>
<a id='n19926' href='#n19926'>19926</a>
<a id='n19927' href='#n19927'>19927</a>
<a id='n19928' href='#n19928'>19928</a>
<a id='n19929' href='#n19929'>19929</a>
<a id='n19930' href='#n19930'>19930</a>
<a id='n19931' href='#n19931'>19931</a>
<a id='n19932' href='#n19932'>19932</a>
<a id='n19933' href='#n19933'>19933</a>
<a id='n19934' href='#n19934'>19934</a>
<a id='n19935' href='#n19935'>19935</a>
<a id='n19936' href='#n19936'>19936</a>
<a id='n19937' href='#n19937'>19937</a>
<a id='n19938' href='#n19938'>19938</a>
<a id='n19939' href='#n19939'>19939</a>
<a id='n19940' href='#n19940'>19940</a>
<a id='n19941' href='#n19941'>19941</a>
<a id='n19942' href='#n19942'>19942</a>
<a id='n19943' href='#n19943'>19943</a>
<a id='n19944' href='#n19944'>19944</a>
<a id='n19945' href='#n19945'>19945</a>
<a id='n19946' href='#n19946'>19946</a>
<a id='n19947' href='#n19947'>19947</a>
<a id='n19948' href='#n19948'>19948</a>
<a id='n19949' href='#n19949'>19949</a>
<a id='n19950' href='#n19950'>19950</a>
<a id='n19951' href='#n19951'>19951</a>
<a id='n19952' href='#n19952'>19952</a>
<a id='n19953' href='#n19953'>19953</a>
<a id='n19954' href='#n19954'>19954</a>
<a id='n19955' href='#n19955'>19955</a>
<a id='n19956' href='#n19956'>19956</a>
<a id='n19957' href='#n19957'>19957</a>
<a id='n19958' href='#n19958'>19958</a>
<a id='n19959' href='#n19959'>19959</a>
<a id='n19960' href='#n19960'>19960</a>
<a id='n19961' href='#n19961'>19961</a>
<a id='n19962' href='#n19962'>19962</a>
<a id='n19963' href='#n19963'>19963</a>
<a id='n19964' href='#n19964'>19964</a>
<a id='n19965' href='#n19965'>19965</a>
<a id='n19966' href='#n19966'>19966</a>
<a id='n19967' href='#n19967'>19967</a>
<a id='n19968' href='#n19968'>19968</a>
<a id='n19969' href='#n19969'>19969</a>
<a id='n19970' href='#n19970'>19970</a>
<a id='n19971' href='#n19971'>19971</a>
<a id='n19972' href='#n19972'>19972</a>
<a id='n19973' href='#n19973'>19973</a>
<a id='n19974' href='#n19974'>19974</a>
<a id='n19975' href='#n19975'>19975</a>
<a id='n19976' href='#n19976'>19976</a>
<a id='n19977' href='#n19977'>19977</a>
<a id='n19978' href='#n19978'>19978</a>
<a id='n19979' href='#n19979'>19979</a>
<a id='n19980' href='#n19980'>19980</a>
<a id='n19981' href='#n19981'>19981</a>
<a id='n19982' href='#n19982'>19982</a>
<a id='n19983' href='#n19983'>19983</a>
<a id='n19984' href='#n19984'>19984</a>
<a id='n19985' href='#n19985'>19985</a>
<a id='n19986' href='#n19986'>19986</a>
<a id='n19987' href='#n19987'>19987</a>
<a id='n19988' href='#n19988'>19988</a>
<a id='n19989' href='#n19989'>19989</a>
<a id='n19990' href='#n19990'>19990</a>
<a id='n19991' href='#n19991'>19991</a>
<a id='n19992' href='#n19992'>19992</a>
<a id='n19993' href='#n19993'>19993</a>
<a id='n19994' href='#n19994'>19994</a>
<a id='n19995' href='#n19995'>19995</a>
<a id='n19996' href='#n19996'>19996</a>
<a id='n19997' href='#n19997'>19997</a>
<a id='n19998' href='#n19998'>19998</a>
<a id='n19999' href='#n19999'>19999</a>
<a id='n20000' href='#n20000'>20000</a>
<a id='n20001' href='#n20001'>20001</a>
<a id='n20002' href='#n20002'>20002</a>
<a id='n20003' href='#n20003'>20003</a>
<a id='n20004' href='#n20004'>20004</a>
<a id='n20005' href='#n20005'>20005</a>
<a id='n20006' href='#n20006'>20006</a>
<a id='n20007' href='#n20007'>20007</a>
<a id='n20008' href='#n20008'>20008</a>
<a id='n20009' href='#n20009'>20009</a>
<a id='n20010' href='#n20010'>20010</a>
<a id='n20011' href='#n20011'>20011</a>
<a id='n20012' href='#n20012'>20012</a>
<a id='n20013' href='#n20013'>20013</a>
<a id='n20014' href='#n20014'>20014</a>
<a id='n20015' href='#n20015'>20015</a>
<a id='n20016' href='#n20016'>20016</a>
<a id='n20017' href='#n20017'>20017</a>
<a id='n20018' href='#n20018'>20018</a>
<a id='n20019' href='#n20019'>20019</a>
<a id='n20020' href='#n20020'>20020</a>
<a id='n20021' href='#n20021'>20021</a>
<a id='n20022' href='#n20022'>20022</a>
<a id='n20023' href='#n20023'>20023</a>
<a id='n20024' href='#n20024'>20024</a>
<a id='n20025' href='#n20025'>20025</a>
<a id='n20026' href='#n20026'>20026</a>
<a id='n20027' href='#n20027'>20027</a>
<a id='n20028' href='#n20028'>20028</a>
<a id='n20029' href='#n20029'>20029</a>
<a id='n20030' href='#n20030'>20030</a>
<a id='n20031' href='#n20031'>20031</a>
<a id='n20032' href='#n20032'>20032</a>
<a id='n20033' href='#n20033'>20033</a>
<a id='n20034' href='#n20034'>20034</a>
<a id='n20035' href='#n20035'>20035</a>
<a id='n20036' href='#n20036'>20036</a>
<a id='n20037' href='#n20037'>20037</a>
<a id='n20038' href='#n20038'>20038</a>
<a id='n20039' href='#n20039'>20039</a>
<a id='n20040' href='#n20040'>20040</a>
<a id='n20041' href='#n20041'>20041</a>
<a id='n20042' href='#n20042'>20042</a>
<a id='n20043' href='#n20043'>20043</a>
<a id='n20044' href='#n20044'>20044</a>
<a id='n20045' href='#n20045'>20045</a>
<a id='n20046' href='#n20046'>20046</a>
<a id='n20047' href='#n20047'>20047</a>
<a id='n20048' href='#n20048'>20048</a>
<a id='n20049' href='#n20049'>20049</a>
<a id='n20050' href='#n20050'>20050</a>
<a id='n20051' href='#n20051'>20051</a>
<a id='n20052' href='#n20052'>20052</a>
<a id='n20053' href='#n20053'>20053</a>
<a id='n20054' href='#n20054'>20054</a>
<a id='n20055' href='#n20055'>20055</a>
<a id='n20056' href='#n20056'>20056</a>
<a id='n20057' href='#n20057'>20057</a>
<a id='n20058' href='#n20058'>20058</a>
<a id='n20059' href='#n20059'>20059</a>
<a id='n20060' href='#n20060'>20060</a>
<a id='n20061' href='#n20061'>20061</a>
<a id='n20062' href='#n20062'>20062</a>
<a id='n20063' href='#n20063'>20063</a>
<a id='n20064' href='#n20064'>20064</a>
<a id='n20065' href='#n20065'>20065</a>
<a id='n20066' href='#n20066'>20066</a>
<a id='n20067' href='#n20067'>20067</a>
<a id='n20068' href='#n20068'>20068</a>
<a id='n20069' href='#n20069'>20069</a>
<a id='n20070' href='#n20070'>20070</a>
<a id='n20071' href='#n20071'>20071</a>
<a id='n20072' href='#n20072'>20072</a>
<a id='n20073' href='#n20073'>20073</a>
<a id='n20074' href='#n20074'>20074</a>
<a id='n20075' href='#n20075'>20075</a>
<a id='n20076' href='#n20076'>20076</a>
<a id='n20077' href='#n20077'>20077</a>
<a id='n20078' href='#n20078'>20078</a>
<a id='n20079' href='#n20079'>20079</a>
<a id='n20080' href='#n20080'>20080</a>
<a id='n20081' href='#n20081'>20081</a>
<a id='n20082' href='#n20082'>20082</a>
<a id='n20083' href='#n20083'>20083</a>
<a id='n20084' href='#n20084'>20084</a>
<a id='n20085' href='#n20085'>20085</a>
<a id='n20086' href='#n20086'>20086</a>
<a id='n20087' href='#n20087'>20087</a>
<a id='n20088' href='#n20088'>20088</a>
<a id='n20089' href='#n20089'>20089</a>
<a id='n20090' href='#n20090'>20090</a>
<a id='n20091' href='#n20091'>20091</a>
<a id='n20092' href='#n20092'>20092</a>
<a id='n20093' href='#n20093'>20093</a>
<a id='n20094' href='#n20094'>20094</a>
<a id='n20095' href='#n20095'>20095</a>
<a id='n20096' href='#n20096'>20096</a>
<a id='n20097' href='#n20097'>20097</a>
<a id='n20098' href='#n20098'>20098</a>
<a id='n20099' href='#n20099'>20099</a>
<a id='n20100' href='#n20100'>20100</a>
<a id='n20101' href='#n20101'>20101</a>
<a id='n20102' href='#n20102'>20102</a>
<a id='n20103' href='#n20103'>20103</a>
<a id='n20104' href='#n20104'>20104</a>
<a id='n20105' href='#n20105'>20105</a>
<a id='n20106' href='#n20106'>20106</a>
<a id='n20107' href='#n20107'>20107</a>
<a id='n20108' href='#n20108'>20108</a>
<a id='n20109' href='#n20109'>20109</a>
<a id='n20110' href='#n20110'>20110</a>
<a id='n20111' href='#n20111'>20111</a>
<a id='n20112' href='#n20112'>20112</a>
<a id='n20113' href='#n20113'>20113</a>
<a id='n20114' href='#n20114'>20114</a>
<a id='n20115' href='#n20115'>20115</a>
<a id='n20116' href='#n20116'>20116</a>
<a id='n20117' href='#n20117'>20117</a>
<a id='n20118' href='#n20118'>20118</a>
<a id='n20119' href='#n20119'>20119</a>
<a id='n20120' href='#n20120'>20120</a>
<a id='n20121' href='#n20121'>20121</a>
<a id='n20122' href='#n20122'>20122</a>
<a id='n20123' href='#n20123'>20123</a>
<a id='n20124' href='#n20124'>20124</a>
<a id='n20125' href='#n20125'>20125</a>
<a id='n20126' href='#n20126'>20126</a>
<a id='n20127' href='#n20127'>20127</a>
<a id='n20128' href='#n20128'>20128</a>
<a id='n20129' href='#n20129'>20129</a>
<a id='n20130' href='#n20130'>20130</a>
<a id='n20131' href='#n20131'>20131</a>
<a id='n20132' href='#n20132'>20132</a>
<a id='n20133' href='#n20133'>20133</a>
<a id='n20134' href='#n20134'>20134</a>
<a id='n20135' href='#n20135'>20135</a>
<a id='n20136' href='#n20136'>20136</a>
<a id='n20137' href='#n20137'>20137</a>
<a id='n20138' href='#n20138'>20138</a>
<a id='n20139' href='#n20139'>20139</a>
<a id='n20140' href='#n20140'>20140</a>
<a id='n20141' href='#n20141'>20141</a>
<a id='n20142' href='#n20142'>20142</a>
<a id='n20143' href='#n20143'>20143</a>
<a id='n20144' href='#n20144'>20144</a>
<a id='n20145' href='#n20145'>20145</a>
<a id='n20146' href='#n20146'>20146</a>
<a id='n20147' href='#n20147'>20147</a>
<a id='n20148' href='#n20148'>20148</a>
<a id='n20149' href='#n20149'>20149</a>
<a id='n20150' href='#n20150'>20150</a>
<a id='n20151' href='#n20151'>20151</a>
<a id='n20152' href='#n20152'>20152</a>
<a id='n20153' href='#n20153'>20153</a>
<a id='n20154' href='#n20154'>20154</a>
<a id='n20155' href='#n20155'>20155</a>
<a id='n20156' href='#n20156'>20156</a>
<a id='n20157' href='#n20157'>20157</a>
<a id='n20158' href='#n20158'>20158</a>
<a id='n20159' href='#n20159'>20159</a>
<a id='n20160' href='#n20160'>20160</a>
<a id='n20161' href='#n20161'>20161</a>
<a id='n20162' href='#n20162'>20162</a>
<a id='n20163' href='#n20163'>20163</a>
<a id='n20164' href='#n20164'>20164</a>
<a id='n20165' href='#n20165'>20165</a>
<a id='n20166' href='#n20166'>20166</a>
<a id='n20167' href='#n20167'>20167</a>
<a id='n20168' href='#n20168'>20168</a>
<a id='n20169' href='#n20169'>20169</a>
<a id='n20170' href='#n20170'>20170</a>
<a id='n20171' href='#n20171'>20171</a>
<a id='n20172' href='#n20172'>20172</a>
<a id='n20173' href='#n20173'>20173</a>
<a id='n20174' href='#n20174'>20174</a>
<a id='n20175' href='#n20175'>20175</a>
<a id='n20176' href='#n20176'>20176</a>
<a id='n20177' href='#n20177'>20177</a>
<a id='n20178' href='#n20178'>20178</a>
<a id='n20179' href='#n20179'>20179</a>
<a id='n20180' href='#n20180'>20180</a>
<a id='n20181' href='#n20181'>20181</a>
<a id='n20182' href='#n20182'>20182</a>
<a id='n20183' href='#n20183'>20183</a>
<a id='n20184' href='#n20184'>20184</a>
<a id='n20185' href='#n20185'>20185</a>
<a id='n20186' href='#n20186'>20186</a>
<a id='n20187' href='#n20187'>20187</a>
<a id='n20188' href='#n20188'>20188</a>
<a id='n20189' href='#n20189'>20189</a>
<a id='n20190' href='#n20190'>20190</a>
<a id='n20191' href='#n20191'>20191</a>
<a id='n20192' href='#n20192'>20192</a>
<a id='n20193' href='#n20193'>20193</a>
<a id='n20194' href='#n20194'>20194</a>
<a id='n20195' href='#n20195'>20195</a>
<a id='n20196' href='#n20196'>20196</a>
<a id='n20197' href='#n20197'>20197</a>
<a id='n20198' href='#n20198'>20198</a>
<a id='n20199' href='#n20199'>20199</a>
<a id='n20200' href='#n20200'>20200</a>
<a id='n20201' href='#n20201'>20201</a>
<a id='n20202' href='#n20202'>20202</a>
<a id='n20203' href='#n20203'>20203</a>
<a id='n20204' href='#n20204'>20204</a>
<a id='n20205' href='#n20205'>20205</a>
<a id='n20206' href='#n20206'>20206</a>
<a id='n20207' href='#n20207'>20207</a>
<a id='n20208' href='#n20208'>20208</a>
<a id='n20209' href='#n20209'>20209</a>
<a id='n20210' href='#n20210'>20210</a>
<a id='n20211' href='#n20211'>20211</a>
<a id='n20212' href='#n20212'>20212</a>
<a id='n20213' href='#n20213'>20213</a>
<a id='n20214' href='#n20214'>20214</a>
<a id='n20215' href='#n20215'>20215</a>
<a id='n20216' href='#n20216'>20216</a>
<a id='n20217' href='#n20217'>20217</a>
<a id='n20218' href='#n20218'>20218</a>
<a id='n20219' href='#n20219'>20219</a>
<a id='n20220' href='#n20220'>20220</a>
<a id='n20221' href='#n20221'>20221</a>
<a id='n20222' href='#n20222'>20222</a>
<a id='n20223' href='#n20223'>20223</a>
<a id='n20224' href='#n20224'>20224</a>
<a id='n20225' href='#n20225'>20225</a>
<a id='n20226' href='#n20226'>20226</a>
<a id='n20227' href='#n20227'>20227</a>
<a id='n20228' href='#n20228'>20228</a>
<a id='n20229' href='#n20229'>20229</a>
<a id='n20230' href='#n20230'>20230</a>
<a id='n20231' href='#n20231'>20231</a>
<a id='n20232' href='#n20232'>20232</a>
<a id='n20233' href='#n20233'>20233</a>
<a id='n20234' href='#n20234'>20234</a>
<a id='n20235' href='#n20235'>20235</a>
<a id='n20236' href='#n20236'>20236</a>
<a id='n20237' href='#n20237'>20237</a>
<a id='n20238' href='#n20238'>20238</a>
<a id='n20239' href='#n20239'>20239</a>
<a id='n20240' href='#n20240'>20240</a>
<a id='n20241' href='#n20241'>20241</a>
<a id='n20242' href='#n20242'>20242</a>
<a id='n20243' href='#n20243'>20243</a>
<a id='n20244' href='#n20244'>20244</a>
<a id='n20245' href='#n20245'>20245</a>
<a id='n20246' href='#n20246'>20246</a>
<a id='n20247' href='#n20247'>20247</a>
<a id='n20248' href='#n20248'>20248</a>
<a id='n20249' href='#n20249'>20249</a>
<a id='n20250' href='#n20250'>20250</a>
<a id='n20251' href='#n20251'>20251</a>
<a id='n20252' href='#n20252'>20252</a>
<a id='n20253' href='#n20253'>20253</a>
<a id='n20254' href='#n20254'>20254</a>
<a id='n20255' href='#n20255'>20255</a>
<a id='n20256' href='#n20256'>20256</a>
<a id='n20257' href='#n20257'>20257</a>
<a id='n20258' href='#n20258'>20258</a>
<a id='n20259' href='#n20259'>20259</a>
<a id='n20260' href='#n20260'>20260</a>
<a id='n20261' href='#n20261'>20261</a>
<a id='n20262' href='#n20262'>20262</a>
<a id='n20263' href='#n20263'>20263</a>
<a id='n20264' href='#n20264'>20264</a>
<a id='n20265' href='#n20265'>20265</a>
<a id='n20266' href='#n20266'>20266</a>
<a id='n20267' href='#n20267'>20267</a>
<a id='n20268' href='#n20268'>20268</a>
<a id='n20269' href='#n20269'>20269</a>
<a id='n20270' href='#n20270'>20270</a>
<a id='n20271' href='#n20271'>20271</a>
<a id='n20272' href='#n20272'>20272</a>
<a id='n20273' href='#n20273'>20273</a>
<a id='n20274' href='#n20274'>20274</a>
<a id='n20275' href='#n20275'>20275</a>
<a id='n20276' href='#n20276'>20276</a>
<a id='n20277' href='#n20277'>20277</a>
<a id='n20278' href='#n20278'>20278</a>
<a id='n20279' href='#n20279'>20279</a>
<a id='n20280' href='#n20280'>20280</a>
<a id='n20281' href='#n20281'>20281</a>
<a id='n20282' href='#n20282'>20282</a>
<a id='n20283' href='#n20283'>20283</a>
<a id='n20284' href='#n20284'>20284</a>
<a id='n20285' href='#n20285'>20285</a>
<a id='n20286' href='#n20286'>20286</a>
<a id='n20287' href='#n20287'>20287</a>
<a id='n20288' href='#n20288'>20288</a>
<a id='n20289' href='#n20289'>20289</a>
<a id='n20290' href='#n20290'>20290</a>
<a id='n20291' href='#n20291'>20291</a>
<a id='n20292' href='#n20292'>20292</a>
<a id='n20293' href='#n20293'>20293</a>
<a id='n20294' href='#n20294'>20294</a>
<a id='n20295' href='#n20295'>20295</a>
<a id='n20296' href='#n20296'>20296</a>
<a id='n20297' href='#n20297'>20297</a>
<a id='n20298' href='#n20298'>20298</a>
<a id='n20299' href='#n20299'>20299</a>
<a id='n20300' href='#n20300'>20300</a>
<a id='n20301' href='#n20301'>20301</a>
<a id='n20302' href='#n20302'>20302</a>
<a id='n20303' href='#n20303'>20303</a>
<a id='n20304' href='#n20304'>20304</a>
<a id='n20305' href='#n20305'>20305</a>
<a id='n20306' href='#n20306'>20306</a>
<a id='n20307' href='#n20307'>20307</a>
<a id='n20308' href='#n20308'>20308</a>
<a id='n20309' href='#n20309'>20309</a>
<a id='n20310' href='#n20310'>20310</a>
<a id='n20311' href='#n20311'>20311</a>
<a id='n20312' href='#n20312'>20312</a>
<a id='n20313' href='#n20313'>20313</a>
<a id='n20314' href='#n20314'>20314</a>
<a id='n20315' href='#n20315'>20315</a>
<a id='n20316' href='#n20316'>20316</a>
<a id='n20317' href='#n20317'>20317</a>
<a id='n20318' href='#n20318'>20318</a>
<a id='n20319' href='#n20319'>20319</a>
<a id='n20320' href='#n20320'>20320</a>
<a id='n20321' href='#n20321'>20321</a>
<a id='n20322' href='#n20322'>20322</a>
<a id='n20323' href='#n20323'>20323</a>
<a id='n20324' href='#n20324'>20324</a>
<a id='n20325' href='#n20325'>20325</a>
<a id='n20326' href='#n20326'>20326</a>
<a id='n20327' href='#n20327'>20327</a>
<a id='n20328' href='#n20328'>20328</a>
<a id='n20329' href='#n20329'>20329</a>
<a id='n20330' href='#n20330'>20330</a>
<a id='n20331' href='#n20331'>20331</a>
<a id='n20332' href='#n20332'>20332</a>
<a id='n20333' href='#n20333'>20333</a>
<a id='n20334' href='#n20334'>20334</a>
<a id='n20335' href='#n20335'>20335</a>
<a id='n20336' href='#n20336'>20336</a>
<a id='n20337' href='#n20337'>20337</a>
<a id='n20338' href='#n20338'>20338</a>
<a id='n20339' href='#n20339'>20339</a>
<a id='n20340' href='#n20340'>20340</a>
<a id='n20341' href='#n20341'>20341</a>
<a id='n20342' href='#n20342'>20342</a>
<a id='n20343' href='#n20343'>20343</a>
<a id='n20344' href='#n20344'>20344</a>
<a id='n20345' href='#n20345'>20345</a>
<a id='n20346' href='#n20346'>20346</a>
<a id='n20347' href='#n20347'>20347</a>
<a id='n20348' href='#n20348'>20348</a>
<a id='n20349' href='#n20349'>20349</a>
<a id='n20350' href='#n20350'>20350</a>
<a id='n20351' href='#n20351'>20351</a>
<a id='n20352' href='#n20352'>20352</a>
<a id='n20353' href='#n20353'>20353</a>
<a id='n20354' href='#n20354'>20354</a>
<a id='n20355' href='#n20355'>20355</a>
<a id='n20356' href='#n20356'>20356</a>
<a id='n20357' href='#n20357'>20357</a>
<a id='n20358' href='#n20358'>20358</a>
<a id='n20359' href='#n20359'>20359</a>
<a id='n20360' href='#n20360'>20360</a>
<a id='n20361' href='#n20361'>20361</a>
<a id='n20362' href='#n20362'>20362</a>
<a id='n20363' href='#n20363'>20363</a>
<a id='n20364' href='#n20364'>20364</a>
<a id='n20365' href='#n20365'>20365</a>
<a id='n20366' href='#n20366'>20366</a>
<a id='n20367' href='#n20367'>20367</a>
<a id='n20368' href='#n20368'>20368</a>
<a id='n20369' href='#n20369'>20369</a>
<a id='n20370' href='#n20370'>20370</a>
<a id='n20371' href='#n20371'>20371</a>
<a id='n20372' href='#n20372'>20372</a>
<a id='n20373' href='#n20373'>20373</a>
<a id='n20374' href='#n20374'>20374</a>
<a id='n20375' href='#n20375'>20375</a>
<a id='n20376' href='#n20376'>20376</a>
<a id='n20377' href='#n20377'>20377</a>
<a id='n20378' href='#n20378'>20378</a>
<a id='n20379' href='#n20379'>20379</a>
<a id='n20380' href='#n20380'>20380</a>
<a id='n20381' href='#n20381'>20381</a>
<a id='n20382' href='#n20382'>20382</a>
<a id='n20383' href='#n20383'>20383</a>
<a id='n20384' href='#n20384'>20384</a>
<a id='n20385' href='#n20385'>20385</a>
<a id='n20386' href='#n20386'>20386</a>
<a id='n20387' href='#n20387'>20387</a>
<a id='n20388' href='#n20388'>20388</a>
<a id='n20389' href='#n20389'>20389</a>
<a id='n20390' href='#n20390'>20390</a>
<a id='n20391' href='#n20391'>20391</a>
<a id='n20392' href='#n20392'>20392</a>
<a id='n20393' href='#n20393'>20393</a>
<a id='n20394' href='#n20394'>20394</a>
<a id='n20395' href='#n20395'>20395</a>
<a id='n20396' href='#n20396'>20396</a>
<a id='n20397' href='#n20397'>20397</a>
<a id='n20398' href='#n20398'>20398</a>
<a id='n20399' href='#n20399'>20399</a>
<a id='n20400' href='#n20400'>20400</a>
<a id='n20401' href='#n20401'>20401</a>
<a id='n20402' href='#n20402'>20402</a>
<a id='n20403' href='#n20403'>20403</a>
<a id='n20404' href='#n20404'>20404</a>
<a id='n20405' href='#n20405'>20405</a>
<a id='n20406' href='#n20406'>20406</a>
<a id='n20407' href='#n20407'>20407</a>
<a id='n20408' href='#n20408'>20408</a>
<a id='n20409' href='#n20409'>20409</a>
<a id='n20410' href='#n20410'>20410</a>
<a id='n20411' href='#n20411'>20411</a>
<a id='n20412' href='#n20412'>20412</a>
<a id='n20413' href='#n20413'>20413</a>
<a id='n20414' href='#n20414'>20414</a>
<a id='n20415' href='#n20415'>20415</a>
<a id='n20416' href='#n20416'>20416</a>
<a id='n20417' href='#n20417'>20417</a>
<a id='n20418' href='#n20418'>20418</a>
<a id='n20419' href='#n20419'>20419</a>
<a id='n20420' href='#n20420'>20420</a>
<a id='n20421' href='#n20421'>20421</a>
<a id='n20422' href='#n20422'>20422</a>
<a id='n20423' href='#n20423'>20423</a>
<a id='n20424' href='#n20424'>20424</a>
<a id='n20425' href='#n20425'>20425</a>
<a id='n20426' href='#n20426'>20426</a>
<a id='n20427' href='#n20427'>20427</a>
<a id='n20428' href='#n20428'>20428</a>
<a id='n20429' href='#n20429'>20429</a>
<a id='n20430' href='#n20430'>20430</a>
<a id='n20431' href='#n20431'>20431</a>
<a id='n20432' href='#n20432'>20432</a>
<a id='n20433' href='#n20433'>20433</a>
<a id='n20434' href='#n20434'>20434</a>
<a id='n20435' href='#n20435'>20435</a>
<a id='n20436' href='#n20436'>20436</a>
<a id='n20437' href='#n20437'>20437</a>
<a id='n20438' href='#n20438'>20438</a>
<a id='n20439' href='#n20439'>20439</a>
<a id='n20440' href='#n20440'>20440</a>
<a id='n20441' href='#n20441'>20441</a>
<a id='n20442' href='#n20442'>20442</a>
<a id='n20443' href='#n20443'>20443</a>
<a id='n20444' href='#n20444'>20444</a>
<a id='n20445' href='#n20445'>20445</a>
<a id='n20446' href='#n20446'>20446</a>
<a id='n20447' href='#n20447'>20447</a>
<a id='n20448' href='#n20448'>20448</a>
<a id='n20449' href='#n20449'>20449</a>
<a id='n20450' href='#n20450'>20450</a>
<a id='n20451' href='#n20451'>20451</a>
<a id='n20452' href='#n20452'>20452</a>
<a id='n20453' href='#n20453'>20453</a>
<a id='n20454' href='#n20454'>20454</a>
<a id='n20455' href='#n20455'>20455</a>
<a id='n20456' href='#n20456'>20456</a>
<a id='n20457' href='#n20457'>20457</a>
<a id='n20458' href='#n20458'>20458</a>
<a id='n20459' href='#n20459'>20459</a>
<a id='n20460' href='#n20460'>20460</a>
<a id='n20461' href='#n20461'>20461</a>
<a id='n20462' href='#n20462'>20462</a>
<a id='n20463' href='#n20463'>20463</a>
<a id='n20464' href='#n20464'>20464</a>
<a id='n20465' href='#n20465'>20465</a>
<a id='n20466' href='#n20466'>20466</a>
<a id='n20467' href='#n20467'>20467</a>
<a id='n20468' href='#n20468'>20468</a>
<a id='n20469' href='#n20469'>20469</a>
<a id='n20470' href='#n20470'>20470</a>
<a id='n20471' href='#n20471'>20471</a>
<a id='n20472' href='#n20472'>20472</a>
<a id='n20473' href='#n20473'>20473</a>
<a id='n20474' href='#n20474'>20474</a>
<a id='n20475' href='#n20475'>20475</a>
<a id='n20476' href='#n20476'>20476</a>
<a id='n20477' href='#n20477'>20477</a>
<a id='n20478' href='#n20478'>20478</a>
<a id='n20479' href='#n20479'>20479</a>
<a id='n20480' href='#n20480'>20480</a>
<a id='n20481' href='#n20481'>20481</a>
<a id='n20482' href='#n20482'>20482</a>
<a id='n20483' href='#n20483'>20483</a>
<a id='n20484' href='#n20484'>20484</a>
<a id='n20485' href='#n20485'>20485</a>
<a id='n20486' href='#n20486'>20486</a>
<a id='n20487' href='#n20487'>20487</a>
<a id='n20488' href='#n20488'>20488</a>
<a id='n20489' href='#n20489'>20489</a>
<a id='n20490' href='#n20490'>20490</a>
<a id='n20491' href='#n20491'>20491</a>
<a id='n20492' href='#n20492'>20492</a>
<a id='n20493' href='#n20493'>20493</a>
<a id='n20494' href='#n20494'>20494</a>
<a id='n20495' href='#n20495'>20495</a>
<a id='n20496' href='#n20496'>20496</a>
<a id='n20497' href='#n20497'>20497</a>
<a id='n20498' href='#n20498'>20498</a>
<a id='n20499' href='#n20499'>20499</a>
<a id='n20500' href='#n20500'>20500</a>
<a id='n20501' href='#n20501'>20501</a>
<a id='n20502' href='#n20502'>20502</a>
<a id='n20503' href='#n20503'>20503</a>
<a id='n20504' href='#n20504'>20504</a>
<a id='n20505' href='#n20505'>20505</a>
<a id='n20506' href='#n20506'>20506</a>
<a id='n20507' href='#n20507'>20507</a>
<a id='n20508' href='#n20508'>20508</a>
<a id='n20509' href='#n20509'>20509</a>
<a id='n20510' href='#n20510'>20510</a>
<a id='n20511' href='#n20511'>20511</a>
<a id='n20512' href='#n20512'>20512</a>
<a id='n20513' href='#n20513'>20513</a>
<a id='n20514' href='#n20514'>20514</a>
<a id='n20515' href='#n20515'>20515</a>
<a id='n20516' href='#n20516'>20516</a>
<a id='n20517' href='#n20517'>20517</a>
<a id='n20518' href='#n20518'>20518</a>
<a id='n20519' href='#n20519'>20519</a>
<a id='n20520' href='#n20520'>20520</a>
<a id='n20521' href='#n20521'>20521</a>
<a id='n20522' href='#n20522'>20522</a>
<a id='n20523' href='#n20523'>20523</a>
<a id='n20524' href='#n20524'>20524</a>
<a id='n20525' href='#n20525'>20525</a>
<a id='n20526' href='#n20526'>20526</a>
<a id='n20527' href='#n20527'>20527</a>
<a id='n20528' href='#n20528'>20528</a>
<a id='n20529' href='#n20529'>20529</a>
<a id='n20530' href='#n20530'>20530</a>
<a id='n20531' href='#n20531'>20531</a>
<a id='n20532' href='#n20532'>20532</a>
<a id='n20533' href='#n20533'>20533</a>
<a id='n20534' href='#n20534'>20534</a>
<a id='n20535' href='#n20535'>20535</a>
<a id='n20536' href='#n20536'>20536</a>
<a id='n20537' href='#n20537'>20537</a>
<a id='n20538' href='#n20538'>20538</a>
<a id='n20539' href='#n20539'>20539</a>
<a id='n20540' href='#n20540'>20540</a>
<a id='n20541' href='#n20541'>20541</a>
<a id='n20542' href='#n20542'>20542</a>
<a id='n20543' href='#n20543'>20543</a>
<a id='n20544' href='#n20544'>20544</a>
<a id='n20545' href='#n20545'>20545</a>
<a id='n20546' href='#n20546'>20546</a>
<a id='n20547' href='#n20547'>20547</a>
<a id='n20548' href='#n20548'>20548</a>
<a id='n20549' href='#n20549'>20549</a>
<a id='n20550' href='#n20550'>20550</a>
<a id='n20551' href='#n20551'>20551</a>
<a id='n20552' href='#n20552'>20552</a>
<a id='n20553' href='#n20553'>20553</a>
<a id='n20554' href='#n20554'>20554</a>
<a id='n20555' href='#n20555'>20555</a>
<a id='n20556' href='#n20556'>20556</a>
<a id='n20557' href='#n20557'>20557</a>
<a id='n20558' href='#n20558'>20558</a>
<a id='n20559' href='#n20559'>20559</a>
<a id='n20560' href='#n20560'>20560</a>
<a id='n20561' href='#n20561'>20561</a>
<a id='n20562' href='#n20562'>20562</a>
<a id='n20563' href='#n20563'>20563</a>
<a id='n20564' href='#n20564'>20564</a>
<a id='n20565' href='#n20565'>20565</a>
<a id='n20566' href='#n20566'>20566</a>
<a id='n20567' href='#n20567'>20567</a>
<a id='n20568' href='#n20568'>20568</a>
<a id='n20569' href='#n20569'>20569</a>
<a id='n20570' href='#n20570'>20570</a>
<a id='n20571' href='#n20571'>20571</a>
<a id='n20572' href='#n20572'>20572</a>
<a id='n20573' href='#n20573'>20573</a>
<a id='n20574' href='#n20574'>20574</a>
<a id='n20575' href='#n20575'>20575</a>
<a id='n20576' href='#n20576'>20576</a>
<a id='n20577' href='#n20577'>20577</a>
<a id='n20578' href='#n20578'>20578</a>
<a id='n20579' href='#n20579'>20579</a>
<a id='n20580' href='#n20580'>20580</a>
<a id='n20581' href='#n20581'>20581</a>
<a id='n20582' href='#n20582'>20582</a>
<a id='n20583' href='#n20583'>20583</a>
<a id='n20584' href='#n20584'>20584</a>
<a id='n20585' href='#n20585'>20585</a>
<a id='n20586' href='#n20586'>20586</a>
<a id='n20587' href='#n20587'>20587</a>
<a id='n20588' href='#n20588'>20588</a>
<a id='n20589' href='#n20589'>20589</a>
<a id='n20590' href='#n20590'>20590</a>
<a id='n20591' href='#n20591'>20591</a>
<a id='n20592' href='#n20592'>20592</a>
<a id='n20593' href='#n20593'>20593</a>
<a id='n20594' href='#n20594'>20594</a>
<a id='n20595' href='#n20595'>20595</a>
<a id='n20596' href='#n20596'>20596</a>
<a id='n20597' href='#n20597'>20597</a>
<a id='n20598' href='#n20598'>20598</a>
<a id='n20599' href='#n20599'>20599</a>
<a id='n20600' href='#n20600'>20600</a>
<a id='n20601' href='#n20601'>20601</a>
<a id='n20602' href='#n20602'>20602</a>
<a id='n20603' href='#n20603'>20603</a>
<a id='n20604' href='#n20604'>20604</a>
<a id='n20605' href='#n20605'>20605</a>
<a id='n20606' href='#n20606'>20606</a>
<a id='n20607' href='#n20607'>20607</a>
<a id='n20608' href='#n20608'>20608</a>
<a id='n20609' href='#n20609'>20609</a>
<a id='n20610' href='#n20610'>20610</a>
<a id='n20611' href='#n20611'>20611</a>
<a id='n20612' href='#n20612'>20612</a>
<a id='n20613' href='#n20613'>20613</a>
<a id='n20614' href='#n20614'>20614</a>
<a id='n20615' href='#n20615'>20615</a>
<a id='n20616' href='#n20616'>20616</a>
<a id='n20617' href='#n20617'>20617</a>
<a id='n20618' href='#n20618'>20618</a>
<a id='n20619' href='#n20619'>20619</a>
<a id='n20620' href='#n20620'>20620</a>
<a id='n20621' href='#n20621'>20621</a>
<a id='n20622' href='#n20622'>20622</a>
<a id='n20623' href='#n20623'>20623</a>
<a id='n20624' href='#n20624'>20624</a>
<a id='n20625' href='#n20625'>20625</a>
<a id='n20626' href='#n20626'>20626</a>
<a id='n20627' href='#n20627'>20627</a>
<a id='n20628' href='#n20628'>20628</a>
<a id='n20629' href='#n20629'>20629</a>
<a id='n20630' href='#n20630'>20630</a>
<a id='n20631' href='#n20631'>20631</a>
<a id='n20632' href='#n20632'>20632</a>
<a id='n20633' href='#n20633'>20633</a>
<a id='n20634' href='#n20634'>20634</a>
<a id='n20635' href='#n20635'>20635</a>
<a id='n20636' href='#n20636'>20636</a>
<a id='n20637' href='#n20637'>20637</a>
<a id='n20638' href='#n20638'>20638</a>
<a id='n20639' href='#n20639'>20639</a>
<a id='n20640' href='#n20640'>20640</a>
<a id='n20641' href='#n20641'>20641</a>
<a id='n20642' href='#n20642'>20642</a>
<a id='n20643' href='#n20643'>20643</a>
<a id='n20644' href='#n20644'>20644</a>
<a id='n20645' href='#n20645'>20645</a>
<a id='n20646' href='#n20646'>20646</a>
<a id='n20647' href='#n20647'>20647</a>
<a id='n20648' href='#n20648'>20648</a>
<a id='n20649' href='#n20649'>20649</a>
<a id='n20650' href='#n20650'>20650</a>
<a id='n20651' href='#n20651'>20651</a>
<a id='n20652' href='#n20652'>20652</a>
<a id='n20653' href='#n20653'>20653</a>
<a id='n20654' href='#n20654'>20654</a>
<a id='n20655' href='#n20655'>20655</a>
<a id='n20656' href='#n20656'>20656</a>
<a id='n20657' href='#n20657'>20657</a>
<a id='n20658' href='#n20658'>20658</a>
<a id='n20659' href='#n20659'>20659</a>
<a id='n20660' href='#n20660'>20660</a>
<a id='n20661' href='#n20661'>20661</a>
<a id='n20662' href='#n20662'>20662</a>
<a id='n20663' href='#n20663'>20663</a>
<a id='n20664' href='#n20664'>20664</a>
<a id='n20665' href='#n20665'>20665</a>
<a id='n20666' href='#n20666'>20666</a>
<a id='n20667' href='#n20667'>20667</a>
<a id='n20668' href='#n20668'>20668</a>
<a id='n20669' href='#n20669'>20669</a>
<a id='n20670' href='#n20670'>20670</a>
<a id='n20671' href='#n20671'>20671</a>
<a id='n20672' href='#n20672'>20672</a>
<a id='n20673' href='#n20673'>20673</a>
<a id='n20674' href='#n20674'>20674</a>
<a id='n20675' href='#n20675'>20675</a>
<a id='n20676' href='#n20676'>20676</a>
<a id='n20677' href='#n20677'>20677</a>
<a id='n20678' href='#n20678'>20678</a>
<a id='n20679' href='#n20679'>20679</a>
<a id='n20680' href='#n20680'>20680</a>
<a id='n20681' href='#n20681'>20681</a>
<a id='n20682' href='#n20682'>20682</a>
<a id='n20683' href='#n20683'>20683</a>
<a id='n20684' href='#n20684'>20684</a>
<a id='n20685' href='#n20685'>20685</a>
<a id='n20686' href='#n20686'>20686</a>
<a id='n20687' href='#n20687'>20687</a>
<a id='n20688' href='#n20688'>20688</a>
<a id='n20689' href='#n20689'>20689</a>
<a id='n20690' href='#n20690'>20690</a>
<a id='n20691' href='#n20691'>20691</a>
<a id='n20692' href='#n20692'>20692</a>
<a id='n20693' href='#n20693'>20693</a>
<a id='n20694' href='#n20694'>20694</a>
<a id='n20695' href='#n20695'>20695</a>
<a id='n20696' href='#n20696'>20696</a>
<a id='n20697' href='#n20697'>20697</a>
<a id='n20698' href='#n20698'>20698</a>
<a id='n20699' href='#n20699'>20699</a>
<a id='n20700' href='#n20700'>20700</a>
<a id='n20701' href='#n20701'>20701</a>
<a id='n20702' href='#n20702'>20702</a>
<a id='n20703' href='#n20703'>20703</a>
<a id='n20704' href='#n20704'>20704</a>
<a id='n20705' href='#n20705'>20705</a>
<a id='n20706' href='#n20706'>20706</a>
<a id='n20707' href='#n20707'>20707</a>
<a id='n20708' href='#n20708'>20708</a>
<a id='n20709' href='#n20709'>20709</a>
<a id='n20710' href='#n20710'>20710</a>
<a id='n20711' href='#n20711'>20711</a>
<a id='n20712' href='#n20712'>20712</a>
<a id='n20713' href='#n20713'>20713</a>
<a id='n20714' href='#n20714'>20714</a>
<a id='n20715' href='#n20715'>20715</a>
<a id='n20716' href='#n20716'>20716</a>
<a id='n20717' href='#n20717'>20717</a>
<a id='n20718' href='#n20718'>20718</a>
<a id='n20719' href='#n20719'>20719</a>
<a id='n20720' href='#n20720'>20720</a>
<a id='n20721' href='#n20721'>20721</a>
<a id='n20722' href='#n20722'>20722</a>
<a id='n20723' href='#n20723'>20723</a>
<a id='n20724' href='#n20724'>20724</a>
<a id='n20725' href='#n20725'>20725</a>
<a id='n20726' href='#n20726'>20726</a>
<a id='n20727' href='#n20727'>20727</a>
<a id='n20728' href='#n20728'>20728</a>
<a id='n20729' href='#n20729'>20729</a>
<a id='n20730' href='#n20730'>20730</a>
<a id='n20731' href='#n20731'>20731</a>
<a id='n20732' href='#n20732'>20732</a>
<a id='n20733' href='#n20733'>20733</a>
<a id='n20734' href='#n20734'>20734</a>
<a id='n20735' href='#n20735'>20735</a>
<a id='n20736' href='#n20736'>20736</a>
<a id='n20737' href='#n20737'>20737</a>
<a id='n20738' href='#n20738'>20738</a>
<a id='n20739' href='#n20739'>20739</a>
<a id='n20740' href='#n20740'>20740</a>
<a id='n20741' href='#n20741'>20741</a>
<a id='n20742' href='#n20742'>20742</a>
<a id='n20743' href='#n20743'>20743</a>
<a id='n20744' href='#n20744'>20744</a>
<a id='n20745' href='#n20745'>20745</a>
<a id='n20746' href='#n20746'>20746</a>
<a id='n20747' href='#n20747'>20747</a>
<a id='n20748' href='#n20748'>20748</a>
<a id='n20749' href='#n20749'>20749</a>
<a id='n20750' href='#n20750'>20750</a>
<a id='n20751' href='#n20751'>20751</a>
<a id='n20752' href='#n20752'>20752</a>
<a id='n20753' href='#n20753'>20753</a>
<a id='n20754' href='#n20754'>20754</a>
<a id='n20755' href='#n20755'>20755</a>
<a id='n20756' href='#n20756'>20756</a>
<a id='n20757' href='#n20757'>20757</a>
<a id='n20758' href='#n20758'>20758</a>
<a id='n20759' href='#n20759'>20759</a>
<a id='n20760' href='#n20760'>20760</a>
<a id='n20761' href='#n20761'>20761</a>
<a id='n20762' href='#n20762'>20762</a>
<a id='n20763' href='#n20763'>20763</a>
<a id='n20764' href='#n20764'>20764</a>
<a id='n20765' href='#n20765'>20765</a>
<a id='n20766' href='#n20766'>20766</a>
<a id='n20767' href='#n20767'>20767</a>
<a id='n20768' href='#n20768'>20768</a>
<a id='n20769' href='#n20769'>20769</a>
<a id='n20770' href='#n20770'>20770</a>
<a id='n20771' href='#n20771'>20771</a>
<a id='n20772' href='#n20772'>20772</a>
<a id='n20773' href='#n20773'>20773</a>
<a id='n20774' href='#n20774'>20774</a>
<a id='n20775' href='#n20775'>20775</a>
<a id='n20776' href='#n20776'>20776</a>
<a id='n20777' href='#n20777'>20777</a>
<a id='n20778' href='#n20778'>20778</a>
<a id='n20779' href='#n20779'>20779</a>
<a id='n20780' href='#n20780'>20780</a>
<a id='n20781' href='#n20781'>20781</a>
<a id='n20782' href='#n20782'>20782</a>
<a id='n20783' href='#n20783'>20783</a>
<a id='n20784' href='#n20784'>20784</a>
<a id='n20785' href='#n20785'>20785</a>
<a id='n20786' href='#n20786'>20786</a>
<a id='n20787' href='#n20787'>20787</a>
<a id='n20788' href='#n20788'>20788</a>
<a id='n20789' href='#n20789'>20789</a>
<a id='n20790' href='#n20790'>20790</a>
<a id='n20791' href='#n20791'>20791</a>
<a id='n20792' href='#n20792'>20792</a>
<a id='n20793' href='#n20793'>20793</a>
<a id='n20794' href='#n20794'>20794</a>
<a id='n20795' href='#n20795'>20795</a>
<a id='n20796' href='#n20796'>20796</a>
<a id='n20797' href='#n20797'>20797</a>
<a id='n20798' href='#n20798'>20798</a>
<a id='n20799' href='#n20799'>20799</a>
<a id='n20800' href='#n20800'>20800</a>
<a id='n20801' href='#n20801'>20801</a>
<a id='n20802' href='#n20802'>20802</a>
<a id='n20803' href='#n20803'>20803</a>
<a id='n20804' href='#n20804'>20804</a>
<a id='n20805' href='#n20805'>20805</a>
<a id='n20806' href='#n20806'>20806</a>
<a id='n20807' href='#n20807'>20807</a>
<a id='n20808' href='#n20808'>20808</a>
<a id='n20809' href='#n20809'>20809</a>
<a id='n20810' href='#n20810'>20810</a>
<a id='n20811' href='#n20811'>20811</a>
<a id='n20812' href='#n20812'>20812</a>
<a id='n20813' href='#n20813'>20813</a>
<a id='n20814' href='#n20814'>20814</a>
<a id='n20815' href='#n20815'>20815</a>
<a id='n20816' href='#n20816'>20816</a>
<a id='n20817' href='#n20817'>20817</a>
<a id='n20818' href='#n20818'>20818</a>
<a id='n20819' href='#n20819'>20819</a>
<a id='n20820' href='#n20820'>20820</a>
<a id='n20821' href='#n20821'>20821</a>
<a id='n20822' href='#n20822'>20822</a>
<a id='n20823' href='#n20823'>20823</a>
<a id='n20824' href='#n20824'>20824</a>
<a id='n20825' href='#n20825'>20825</a>
<a id='n20826' href='#n20826'>20826</a>
<a id='n20827' href='#n20827'>20827</a>
<a id='n20828' href='#n20828'>20828</a>
<a id='n20829' href='#n20829'>20829</a>
<a id='n20830' href='#n20830'>20830</a>
<a id='n20831' href='#n20831'>20831</a>
<a id='n20832' href='#n20832'>20832</a>
<a id='n20833' href='#n20833'>20833</a>
<a id='n20834' href='#n20834'>20834</a>
<a id='n20835' href='#n20835'>20835</a>
<a id='n20836' href='#n20836'>20836</a>
<a id='n20837' href='#n20837'>20837</a>
<a id='n20838' href='#n20838'>20838</a>
<a id='n20839' href='#n20839'>20839</a>
<a id='n20840' href='#n20840'>20840</a>
<a id='n20841' href='#n20841'>20841</a>
<a id='n20842' href='#n20842'>20842</a>
<a id='n20843' href='#n20843'>20843</a>
<a id='n20844' href='#n20844'>20844</a>
<a id='n20845' href='#n20845'>20845</a>
<a id='n20846' href='#n20846'>20846</a>
<a id='n20847' href='#n20847'>20847</a>
<a id='n20848' href='#n20848'>20848</a>
<a id='n20849' href='#n20849'>20849</a>
<a id='n20850' href='#n20850'>20850</a>
<a id='n20851' href='#n20851'>20851</a>
<a id='n20852' href='#n20852'>20852</a>
<a id='n20853' href='#n20853'>20853</a>
<a id='n20854' href='#n20854'>20854</a>
<a id='n20855' href='#n20855'>20855</a>
<a id='n20856' href='#n20856'>20856</a>
<a id='n20857' href='#n20857'>20857</a>
<a id='n20858' href='#n20858'>20858</a>
<a id='n20859' href='#n20859'>20859</a>
<a id='n20860' href='#n20860'>20860</a>
<a id='n20861' href='#n20861'>20861</a>
<a id='n20862' href='#n20862'>20862</a>
<a id='n20863' href='#n20863'>20863</a>
<a id='n20864' href='#n20864'>20864</a>
<a id='n20865' href='#n20865'>20865</a>
<a id='n20866' href='#n20866'>20866</a>
<a id='n20867' href='#n20867'>20867</a>
<a id='n20868' href='#n20868'>20868</a>
<a id='n20869' href='#n20869'>20869</a>
<a id='n20870' href='#n20870'>20870</a>
<a id='n20871' href='#n20871'>20871</a>
<a id='n20872' href='#n20872'>20872</a>
<a id='n20873' href='#n20873'>20873</a>
<a id='n20874' href='#n20874'>20874</a>
<a id='n20875' href='#n20875'>20875</a>
<a id='n20876' href='#n20876'>20876</a>
<a id='n20877' href='#n20877'>20877</a>
<a id='n20878' href='#n20878'>20878</a>
<a id='n20879' href='#n20879'>20879</a>
<a id='n20880' href='#n20880'>20880</a>
<a id='n20881' href='#n20881'>20881</a>
<a id='n20882' href='#n20882'>20882</a>
<a id='n20883' href='#n20883'>20883</a>
<a id='n20884' href='#n20884'>20884</a>
<a id='n20885' href='#n20885'>20885</a>
<a id='n20886' href='#n20886'>20886</a>
<a id='n20887' href='#n20887'>20887</a>
<a id='n20888' href='#n20888'>20888</a>
<a id='n20889' href='#n20889'>20889</a>
<a id='n20890' href='#n20890'>20890</a>
<a id='n20891' href='#n20891'>20891</a>
<a id='n20892' href='#n20892'>20892</a>
<a id='n20893' href='#n20893'>20893</a>
<a id='n20894' href='#n20894'>20894</a>
<a id='n20895' href='#n20895'>20895</a>
<a id='n20896' href='#n20896'>20896</a>
<a id='n20897' href='#n20897'>20897</a>
<a id='n20898' href='#n20898'>20898</a>
<a id='n20899' href='#n20899'>20899</a>
<a id='n20900' href='#n20900'>20900</a>
<a id='n20901' href='#n20901'>20901</a>
<a id='n20902' href='#n20902'>20902</a>
<a id='n20903' href='#n20903'>20903</a>
<a id='n20904' href='#n20904'>20904</a>
<a id='n20905' href='#n20905'>20905</a>
<a id='n20906' href='#n20906'>20906</a>
<a id='n20907' href='#n20907'>20907</a>
<a id='n20908' href='#n20908'>20908</a>
<a id='n20909' href='#n20909'>20909</a>
<a id='n20910' href='#n20910'>20910</a>
<a id='n20911' href='#n20911'>20911</a>
<a id='n20912' href='#n20912'>20912</a>
<a id='n20913' href='#n20913'>20913</a>
<a id='n20914' href='#n20914'>20914</a>
<a id='n20915' href='#n20915'>20915</a>
<a id='n20916' href='#n20916'>20916</a>
<a id='n20917' href='#n20917'>20917</a>
<a id='n20918' href='#n20918'>20918</a>
<a id='n20919' href='#n20919'>20919</a>
<a id='n20920' href='#n20920'>20920</a>
<a id='n20921' href='#n20921'>20921</a>
<a id='n20922' href='#n20922'>20922</a>
<a id='n20923' href='#n20923'>20923</a>
<a id='n20924' href='#n20924'>20924</a>
<a id='n20925' href='#n20925'>20925</a>
<a id='n20926' href='#n20926'>20926</a>
<a id='n20927' href='#n20927'>20927</a>
<a id='n20928' href='#n20928'>20928</a>
<a id='n20929' href='#n20929'>20929</a>
<a id='n20930' href='#n20930'>20930</a>
<a id='n20931' href='#n20931'>20931</a>
<a id='n20932' href='#n20932'>20932</a>
<a id='n20933' href='#n20933'>20933</a>
<a id='n20934' href='#n20934'>20934</a>
<a id='n20935' href='#n20935'>20935</a>
<a id='n20936' href='#n20936'>20936</a>
<a id='n20937' href='#n20937'>20937</a>
<a id='n20938' href='#n20938'>20938</a>
<a id='n20939' href='#n20939'>20939</a>
<a id='n20940' href='#n20940'>20940</a>
<a id='n20941' href='#n20941'>20941</a>
<a id='n20942' href='#n20942'>20942</a>
<a id='n20943' href='#n20943'>20943</a>
<a id='n20944' href='#n20944'>20944</a>
<a id='n20945' href='#n20945'>20945</a>
<a id='n20946' href='#n20946'>20946</a>
<a id='n20947' href='#n20947'>20947</a>
<a id='n20948' href='#n20948'>20948</a>
<a id='n20949' href='#n20949'>20949</a>
<a id='n20950' href='#n20950'>20950</a>
<a id='n20951' href='#n20951'>20951</a>
<a id='n20952' href='#n20952'>20952</a>
<a id='n20953' href='#n20953'>20953</a>
<a id='n20954' href='#n20954'>20954</a>
<a id='n20955' href='#n20955'>20955</a>
<a id='n20956' href='#n20956'>20956</a>
<a id='n20957' href='#n20957'>20957</a>
<a id='n20958' href='#n20958'>20958</a>
<a id='n20959' href='#n20959'>20959</a>
<a id='n20960' href='#n20960'>20960</a>
<a id='n20961' href='#n20961'>20961</a>
<a id='n20962' href='#n20962'>20962</a>
<a id='n20963' href='#n20963'>20963</a>
<a id='n20964' href='#n20964'>20964</a>
<a id='n20965' href='#n20965'>20965</a>
<a id='n20966' href='#n20966'>20966</a>
<a id='n20967' href='#n20967'>20967</a>
<a id='n20968' href='#n20968'>20968</a>
<a id='n20969' href='#n20969'>20969</a>
<a id='n20970' href='#n20970'>20970</a>
<a id='n20971' href='#n20971'>20971</a>
<a id='n20972' href='#n20972'>20972</a>
<a id='n20973' href='#n20973'>20973</a>
<a id='n20974' href='#n20974'>20974</a>
<a id='n20975' href='#n20975'>20975</a>
<a id='n20976' href='#n20976'>20976</a>
<a id='n20977' href='#n20977'>20977</a>
<a id='n20978' href='#n20978'>20978</a>
<a id='n20979' href='#n20979'>20979</a>
<a id='n20980' href='#n20980'>20980</a>
<a id='n20981' href='#n20981'>20981</a>
<a id='n20982' href='#n20982'>20982</a>
<a id='n20983' href='#n20983'>20983</a>
<a id='n20984' href='#n20984'>20984</a>
<a id='n20985' href='#n20985'>20985</a>
<a id='n20986' href='#n20986'>20986</a>
<a id='n20987' href='#n20987'>20987</a>
<a id='n20988' href='#n20988'>20988</a>
<a id='n20989' href='#n20989'>20989</a>
<a id='n20990' href='#n20990'>20990</a>
<a id='n20991' href='#n20991'>20991</a>
<a id='n20992' href='#n20992'>20992</a>
<a id='n20993' href='#n20993'>20993</a>
<a id='n20994' href='#n20994'>20994</a>
<a id='n20995' href='#n20995'>20995</a>
<a id='n20996' href='#n20996'>20996</a>
<a id='n20997' href='#n20997'>20997</a>
<a id='n20998' href='#n20998'>20998</a>
<a id='n20999' href='#n20999'>20999</a>
<a id='n21000' href='#n21000'>21000</a>
<a id='n21001' href='#n21001'>21001</a>
<a id='n21002' href='#n21002'>21002</a>
<a id='n21003' href='#n21003'>21003</a>
<a id='n21004' href='#n21004'>21004</a>
<a id='n21005' href='#n21005'>21005</a>
<a id='n21006' href='#n21006'>21006</a>
<a id='n21007' href='#n21007'>21007</a>
<a id='n21008' href='#n21008'>21008</a>
<a id='n21009' href='#n21009'>21009</a>
<a id='n21010' href='#n21010'>21010</a>
<a id='n21011' href='#n21011'>21011</a>
<a id='n21012' href='#n21012'>21012</a>
<a id='n21013' href='#n21013'>21013</a>
<a id='n21014' href='#n21014'>21014</a>
<a id='n21015' href='#n21015'>21015</a>
<a id='n21016' href='#n21016'>21016</a>
<a id='n21017' href='#n21017'>21017</a>
<a id='n21018' href='#n21018'>21018</a>
<a id='n21019' href='#n21019'>21019</a>
<a id='n21020' href='#n21020'>21020</a>
<a id='n21021' href='#n21021'>21021</a>
<a id='n21022' href='#n21022'>21022</a>
<a id='n21023' href='#n21023'>21023</a>
<a id='n21024' href='#n21024'>21024</a>
<a id='n21025' href='#n21025'>21025</a>
<a id='n21026' href='#n21026'>21026</a>
<a id='n21027' href='#n21027'>21027</a>
<a id='n21028' href='#n21028'>21028</a>
<a id='n21029' href='#n21029'>21029</a>
<a id='n21030' href='#n21030'>21030</a>
<a id='n21031' href='#n21031'>21031</a>
<a id='n21032' href='#n21032'>21032</a>
<a id='n21033' href='#n21033'>21033</a>
<a id='n21034' href='#n21034'>21034</a>
<a id='n21035' href='#n21035'>21035</a>
<a id='n21036' href='#n21036'>21036</a>
<a id='n21037' href='#n21037'>21037</a>
<a id='n21038' href='#n21038'>21038</a>
<a id='n21039' href='#n21039'>21039</a>
<a id='n21040' href='#n21040'>21040</a>
<a id='n21041' href='#n21041'>21041</a>
<a id='n21042' href='#n21042'>21042</a>
<a id='n21043' href='#n21043'>21043</a>
<a id='n21044' href='#n21044'>21044</a>
<a id='n21045' href='#n21045'>21045</a>
<a id='n21046' href='#n21046'>21046</a>
<a id='n21047' href='#n21047'>21047</a>
<a id='n21048' href='#n21048'>21048</a>
<a id='n21049' href='#n21049'>21049</a>
<a id='n21050' href='#n21050'>21050</a>
<a id='n21051' href='#n21051'>21051</a>
<a id='n21052' href='#n21052'>21052</a>
<a id='n21053' href='#n21053'>21053</a>
<a id='n21054' href='#n21054'>21054</a>
<a id='n21055' href='#n21055'>21055</a>
<a id='n21056' href='#n21056'>21056</a>
<a id='n21057' href='#n21057'>21057</a>
<a id='n21058' href='#n21058'>21058</a>
<a id='n21059' href='#n21059'>21059</a>
<a id='n21060' href='#n21060'>21060</a>
<a id='n21061' href='#n21061'>21061</a>
<a id='n21062' href='#n21062'>21062</a>
<a id='n21063' href='#n21063'>21063</a>
<a id='n21064' href='#n21064'>21064</a>
<a id='n21065' href='#n21065'>21065</a>
<a id='n21066' href='#n21066'>21066</a>
<a id='n21067' href='#n21067'>21067</a>
<a id='n21068' href='#n21068'>21068</a>
<a id='n21069' href='#n21069'>21069</a>
<a id='n21070' href='#n21070'>21070</a>
<a id='n21071' href='#n21071'>21071</a>
<a id='n21072' href='#n21072'>21072</a>
<a id='n21073' href='#n21073'>21073</a>
<a id='n21074' href='#n21074'>21074</a>
<a id='n21075' href='#n21075'>21075</a>
<a id='n21076' href='#n21076'>21076</a>
<a id='n21077' href='#n21077'>21077</a>
<a id='n21078' href='#n21078'>21078</a>
<a id='n21079' href='#n21079'>21079</a>
<a id='n21080' href='#n21080'>21080</a>
<a id='n21081' href='#n21081'>21081</a>
<a id='n21082' href='#n21082'>21082</a>
<a id='n21083' href='#n21083'>21083</a>
<a id='n21084' href='#n21084'>21084</a>
<a id='n21085' href='#n21085'>21085</a>
<a id='n21086' href='#n21086'>21086</a>
<a id='n21087' href='#n21087'>21087</a>
<a id='n21088' href='#n21088'>21088</a>
<a id='n21089' href='#n21089'>21089</a>
<a id='n21090' href='#n21090'>21090</a>
<a id='n21091' href='#n21091'>21091</a>
<a id='n21092' href='#n21092'>21092</a>
<a id='n21093' href='#n21093'>21093</a>
<a id='n21094' href='#n21094'>21094</a>
<a id='n21095' href='#n21095'>21095</a>
<a id='n21096' href='#n21096'>21096</a>
<a id='n21097' href='#n21097'>21097</a>
<a id='n21098' href='#n21098'>21098</a>
<a id='n21099' href='#n21099'>21099</a>
<a id='n21100' href='#n21100'>21100</a>
<a id='n21101' href='#n21101'>21101</a>
<a id='n21102' href='#n21102'>21102</a>
<a id='n21103' href='#n21103'>21103</a>
<a id='n21104' href='#n21104'>21104</a>
<a id='n21105' href='#n21105'>21105</a>
<a id='n21106' href='#n21106'>21106</a>
<a id='n21107' href='#n21107'>21107</a>
<a id='n21108' href='#n21108'>21108</a>
<a id='n21109' href='#n21109'>21109</a>
<a id='n21110' href='#n21110'>21110</a>
<a id='n21111' href='#n21111'>21111</a>
<a id='n21112' href='#n21112'>21112</a>
<a id='n21113' href='#n21113'>21113</a>
<a id='n21114' href='#n21114'>21114</a>
<a id='n21115' href='#n21115'>21115</a>
<a id='n21116' href='#n21116'>21116</a>
<a id='n21117' href='#n21117'>21117</a>
<a id='n21118' href='#n21118'>21118</a>
<a id='n21119' href='#n21119'>21119</a>
<a id='n21120' href='#n21120'>21120</a>
<a id='n21121' href='#n21121'>21121</a>
<a id='n21122' href='#n21122'>21122</a>
<a id='n21123' href='#n21123'>21123</a>
<a id='n21124' href='#n21124'>21124</a>
<a id='n21125' href='#n21125'>21125</a>
<a id='n21126' href='#n21126'>21126</a>
<a id='n21127' href='#n21127'>21127</a>
<a id='n21128' href='#n21128'>21128</a>
<a id='n21129' href='#n21129'>21129</a>
<a id='n21130' href='#n21130'>21130</a>
<a id='n21131' href='#n21131'>21131</a>
<a id='n21132' href='#n21132'>21132</a>
<a id='n21133' href='#n21133'>21133</a>
<a id='n21134' href='#n21134'>21134</a>
<a id='n21135' href='#n21135'>21135</a>
<a id='n21136' href='#n21136'>21136</a>
<a id='n21137' href='#n21137'>21137</a>
<a id='n21138' href='#n21138'>21138</a>
<a id='n21139' href='#n21139'>21139</a>
<a id='n21140' href='#n21140'>21140</a>
<a id='n21141' href='#n21141'>21141</a>
<a id='n21142' href='#n21142'>21142</a>
<a id='n21143' href='#n21143'>21143</a>
<a id='n21144' href='#n21144'>21144</a>
<a id='n21145' href='#n21145'>21145</a>
<a id='n21146' href='#n21146'>21146</a>
<a id='n21147' href='#n21147'>21147</a>
<a id='n21148' href='#n21148'>21148</a>
<a id='n21149' href='#n21149'>21149</a>
<a id='n21150' href='#n21150'>21150</a>
<a id='n21151' href='#n21151'>21151</a>
<a id='n21152' href='#n21152'>21152</a>
<a id='n21153' href='#n21153'>21153</a>
<a id='n21154' href='#n21154'>21154</a>
<a id='n21155' href='#n21155'>21155</a>
<a id='n21156' href='#n21156'>21156</a>
<a id='n21157' href='#n21157'>21157</a>
<a id='n21158' href='#n21158'>21158</a>
<a id='n21159' href='#n21159'>21159</a>
<a id='n21160' href='#n21160'>21160</a>
<a id='n21161' href='#n21161'>21161</a>
<a id='n21162' href='#n21162'>21162</a>
<a id='n21163' href='#n21163'>21163</a>
<a id='n21164' href='#n21164'>21164</a>
<a id='n21165' href='#n21165'>21165</a>
<a id='n21166' href='#n21166'>21166</a>
<a id='n21167' href='#n21167'>21167</a>
<a id='n21168' href='#n21168'>21168</a>
<a id='n21169' href='#n21169'>21169</a>
<a id='n21170' href='#n21170'>21170</a>
<a id='n21171' href='#n21171'>21171</a>
<a id='n21172' href='#n21172'>21172</a>
<a id='n21173' href='#n21173'>21173</a>
<a id='n21174' href='#n21174'>21174</a>
<a id='n21175' href='#n21175'>21175</a>
<a id='n21176' href='#n21176'>21176</a>
<a id='n21177' href='#n21177'>21177</a>
<a id='n21178' href='#n21178'>21178</a>
<a id='n21179' href='#n21179'>21179</a>
<a id='n21180' href='#n21180'>21180</a>
<a id='n21181' href='#n21181'>21181</a>
<a id='n21182' href='#n21182'>21182</a>
<a id='n21183' href='#n21183'>21183</a>
<a id='n21184' href='#n21184'>21184</a>
<a id='n21185' href='#n21185'>21185</a>
<a id='n21186' href='#n21186'>21186</a>
<a id='n21187' href='#n21187'>21187</a>
<a id='n21188' href='#n21188'>21188</a>
<a id='n21189' href='#n21189'>21189</a>
<a id='n21190' href='#n21190'>21190</a>
<a id='n21191' href='#n21191'>21191</a>
<a id='n21192' href='#n21192'>21192</a>
<a id='n21193' href='#n21193'>21193</a>
<a id='n21194' href='#n21194'>21194</a>
<a id='n21195' href='#n21195'>21195</a>
<a id='n21196' href='#n21196'>21196</a>
<a id='n21197' href='#n21197'>21197</a>
<a id='n21198' href='#n21198'>21198</a>
<a id='n21199' href='#n21199'>21199</a>
<a id='n21200' href='#n21200'>21200</a>
<a id='n21201' href='#n21201'>21201</a>
<a id='n21202' href='#n21202'>21202</a>
<a id='n21203' href='#n21203'>21203</a>
<a id='n21204' href='#n21204'>21204</a>
<a id='n21205' href='#n21205'>21205</a>
<a id='n21206' href='#n21206'>21206</a>
<a id='n21207' href='#n21207'>21207</a>
<a id='n21208' href='#n21208'>21208</a>
<a id='n21209' href='#n21209'>21209</a>
<a id='n21210' href='#n21210'>21210</a>
<a id='n21211' href='#n21211'>21211</a>
<a id='n21212' href='#n21212'>21212</a>
<a id='n21213' href='#n21213'>21213</a>
<a id='n21214' href='#n21214'>21214</a>
<a id='n21215' href='#n21215'>21215</a>
<a id='n21216' href='#n21216'>21216</a>
<a id='n21217' href='#n21217'>21217</a>
<a id='n21218' href='#n21218'>21218</a>
<a id='n21219' href='#n21219'>21219</a>
<a id='n21220' href='#n21220'>21220</a>
<a id='n21221' href='#n21221'>21221</a>
<a id='n21222' href='#n21222'>21222</a>
<a id='n21223' href='#n21223'>21223</a>
<a id='n21224' href='#n21224'>21224</a>
<a id='n21225' href='#n21225'>21225</a>
<a id='n21226' href='#n21226'>21226</a>
<a id='n21227' href='#n21227'>21227</a>
<a id='n21228' href='#n21228'>21228</a>
<a id='n21229' href='#n21229'>21229</a>
<a id='n21230' href='#n21230'>21230</a>
<a id='n21231' href='#n21231'>21231</a>
<a id='n21232' href='#n21232'>21232</a>
<a id='n21233' href='#n21233'>21233</a>
<a id='n21234' href='#n21234'>21234</a>
<a id='n21235' href='#n21235'>21235</a>
<a id='n21236' href='#n21236'>21236</a>
<a id='n21237' href='#n21237'>21237</a>
<a id='n21238' href='#n21238'>21238</a>
<a id='n21239' href='#n21239'>21239</a>
<a id='n21240' href='#n21240'>21240</a>
<a id='n21241' href='#n21241'>21241</a>
<a id='n21242' href='#n21242'>21242</a>
<a id='n21243' href='#n21243'>21243</a>
<a id='n21244' href='#n21244'>21244</a>
<a id='n21245' href='#n21245'>21245</a>
<a id='n21246' href='#n21246'>21246</a>
<a id='n21247' href='#n21247'>21247</a>
<a id='n21248' href='#n21248'>21248</a>
<a id='n21249' href='#n21249'>21249</a>
<a id='n21250' href='#n21250'>21250</a>
<a id='n21251' href='#n21251'>21251</a>
<a id='n21252' href='#n21252'>21252</a>
<a id='n21253' href='#n21253'>21253</a>
<a id='n21254' href='#n21254'>21254</a>
<a id='n21255' href='#n21255'>21255</a>
<a id='n21256' href='#n21256'>21256</a>
<a id='n21257' href='#n21257'>21257</a>
<a id='n21258' href='#n21258'>21258</a>
<a id='n21259' href='#n21259'>21259</a>
<a id='n21260' href='#n21260'>21260</a>
<a id='n21261' href='#n21261'>21261</a>
<a id='n21262' href='#n21262'>21262</a>
<a id='n21263' href='#n21263'>21263</a>
<a id='n21264' href='#n21264'>21264</a>
<a id='n21265' href='#n21265'>21265</a>
<a id='n21266' href='#n21266'>21266</a>
<a id='n21267' href='#n21267'>21267</a>
<a id='n21268' href='#n21268'>21268</a>
<a id='n21269' href='#n21269'>21269</a>
<a id='n21270' href='#n21270'>21270</a>
<a id='n21271' href='#n21271'>21271</a>
<a id='n21272' href='#n21272'>21272</a>
<a id='n21273' href='#n21273'>21273</a>
<a id='n21274' href='#n21274'>21274</a>
<a id='n21275' href='#n21275'>21275</a>
<a id='n21276' href='#n21276'>21276</a>
<a id='n21277' href='#n21277'>21277</a>
<a id='n21278' href='#n21278'>21278</a>
<a id='n21279' href='#n21279'>21279</a>
<a id='n21280' href='#n21280'>21280</a>
<a id='n21281' href='#n21281'>21281</a>
<a id='n21282' href='#n21282'>21282</a>
<a id='n21283' href='#n21283'>21283</a>
<a id='n21284' href='#n21284'>21284</a>
<a id='n21285' href='#n21285'>21285</a>
<a id='n21286' href='#n21286'>21286</a>
<a id='n21287' href='#n21287'>21287</a>
<a id='n21288' href='#n21288'>21288</a>
<a id='n21289' href='#n21289'>21289</a>
<a id='n21290' href='#n21290'>21290</a>
<a id='n21291' href='#n21291'>21291</a>
<a id='n21292' href='#n21292'>21292</a>
<a id='n21293' href='#n21293'>21293</a>
<a id='n21294' href='#n21294'>21294</a>
<a id='n21295' href='#n21295'>21295</a>
<a id='n21296' href='#n21296'>21296</a>
<a id='n21297' href='#n21297'>21297</a>
<a id='n21298' href='#n21298'>21298</a>
<a id='n21299' href='#n21299'>21299</a>
<a id='n21300' href='#n21300'>21300</a>
<a id='n21301' href='#n21301'>21301</a>
<a id='n21302' href='#n21302'>21302</a>
<a id='n21303' href='#n21303'>21303</a>
<a id='n21304' href='#n21304'>21304</a>
<a id='n21305' href='#n21305'>21305</a>
<a id='n21306' href='#n21306'>21306</a>
<a id='n21307' href='#n21307'>21307</a>
<a id='n21308' href='#n21308'>21308</a>
<a id='n21309' href='#n21309'>21309</a>
<a id='n21310' href='#n21310'>21310</a>
<a id='n21311' href='#n21311'>21311</a>
<a id='n21312' href='#n21312'>21312</a>
<a id='n21313' href='#n21313'>21313</a>
<a id='n21314' href='#n21314'>21314</a>
<a id='n21315' href='#n21315'>21315</a>
<a id='n21316' href='#n21316'>21316</a>
<a id='n21317' href='#n21317'>21317</a>
<a id='n21318' href='#n21318'>21318</a>
<a id='n21319' href='#n21319'>21319</a>
<a id='n21320' href='#n21320'>21320</a>
<a id='n21321' href='#n21321'>21321</a>
<a id='n21322' href='#n21322'>21322</a>
<a id='n21323' href='#n21323'>21323</a>
<a id='n21324' href='#n21324'>21324</a>
<a id='n21325' href='#n21325'>21325</a>
<a id='n21326' href='#n21326'>21326</a>
<a id='n21327' href='#n21327'>21327</a>
<a id='n21328' href='#n21328'>21328</a>
<a id='n21329' href='#n21329'>21329</a>
<a id='n21330' href='#n21330'>21330</a>
<a id='n21331' href='#n21331'>21331</a>
<a id='n21332' href='#n21332'>21332</a>
<a id='n21333' href='#n21333'>21333</a>
<a id='n21334' href='#n21334'>21334</a>
<a id='n21335' href='#n21335'>21335</a>
<a id='n21336' href='#n21336'>21336</a>
<a id='n21337' href='#n21337'>21337</a>
<a id='n21338' href='#n21338'>21338</a>
<a id='n21339' href='#n21339'>21339</a>
<a id='n21340' href='#n21340'>21340</a>
<a id='n21341' href='#n21341'>21341</a>
<a id='n21342' href='#n21342'>21342</a>
<a id='n21343' href='#n21343'>21343</a>
<a id='n21344' href='#n21344'>21344</a>
<a id='n21345' href='#n21345'>21345</a>
<a id='n21346' href='#n21346'>21346</a>
<a id='n21347' href='#n21347'>21347</a>
<a id='n21348' href='#n21348'>21348</a>
<a id='n21349' href='#n21349'>21349</a>
<a id='n21350' href='#n21350'>21350</a>
<a id='n21351' href='#n21351'>21351</a>
<a id='n21352' href='#n21352'>21352</a>
<a id='n21353' href='#n21353'>21353</a>
<a id='n21354' href='#n21354'>21354</a>
<a id='n21355' href='#n21355'>21355</a>
<a id='n21356' href='#n21356'>21356</a>
<a id='n21357' href='#n21357'>21357</a>
<a id='n21358' href='#n21358'>21358</a>
<a id='n21359' href='#n21359'>21359</a>
<a id='n21360' href='#n21360'>21360</a>
<a id='n21361' href='#n21361'>21361</a>
<a id='n21362' href='#n21362'>21362</a>
<a id='n21363' href='#n21363'>21363</a>
<a id='n21364' href='#n21364'>21364</a>
<a id='n21365' href='#n21365'>21365</a>
<a id='n21366' href='#n21366'>21366</a>
<a id='n21367' href='#n21367'>21367</a>
<a id='n21368' href='#n21368'>21368</a>
<a id='n21369' href='#n21369'>21369</a>
<a id='n21370' href='#n21370'>21370</a>
<a id='n21371' href='#n21371'>21371</a>
<a id='n21372' href='#n21372'>21372</a>
<a id='n21373' href='#n21373'>21373</a>
<a id='n21374' href='#n21374'>21374</a>
<a id='n21375' href='#n21375'>21375</a>
<a id='n21376' href='#n21376'>21376</a>
<a id='n21377' href='#n21377'>21377</a>
<a id='n21378' href='#n21378'>21378</a>
<a id='n21379' href='#n21379'>21379</a>
<a id='n21380' href='#n21380'>21380</a>
<a id='n21381' href='#n21381'>21381</a>
<a id='n21382' href='#n21382'>21382</a>
<a id='n21383' href='#n21383'>21383</a>
<a id='n21384' href='#n21384'>21384</a>
<a id='n21385' href='#n21385'>21385</a>
<a id='n21386' href='#n21386'>21386</a>
<a id='n21387' href='#n21387'>21387</a>
<a id='n21388' href='#n21388'>21388</a>
<a id='n21389' href='#n21389'>21389</a>
<a id='n21390' href='#n21390'>21390</a>
<a id='n21391' href='#n21391'>21391</a>
<a id='n21392' href='#n21392'>21392</a>
<a id='n21393' href='#n21393'>21393</a>
<a id='n21394' href='#n21394'>21394</a>
<a id='n21395' href='#n21395'>21395</a>
<a id='n21396' href='#n21396'>21396</a>
<a id='n21397' href='#n21397'>21397</a>
<a id='n21398' href='#n21398'>21398</a>
<a id='n21399' href='#n21399'>21399</a>
<a id='n21400' href='#n21400'>21400</a>
<a id='n21401' href='#n21401'>21401</a>
<a id='n21402' href='#n21402'>21402</a>
<a id='n21403' href='#n21403'>21403</a>
<a id='n21404' href='#n21404'>21404</a>
<a id='n21405' href='#n21405'>21405</a>
<a id='n21406' href='#n21406'>21406</a>
<a id='n21407' href='#n21407'>21407</a>
<a id='n21408' href='#n21408'>21408</a>
<a id='n21409' href='#n21409'>21409</a>
<a id='n21410' href='#n21410'>21410</a>
<a id='n21411' href='#n21411'>21411</a>
<a id='n21412' href='#n21412'>21412</a>
<a id='n21413' href='#n21413'>21413</a>
<a id='n21414' href='#n21414'>21414</a>
<a id='n21415' href='#n21415'>21415</a>
<a id='n21416' href='#n21416'>21416</a>
<a id='n21417' href='#n21417'>21417</a>
<a id='n21418' href='#n21418'>21418</a>
<a id='n21419' href='#n21419'>21419</a>
<a id='n21420' href='#n21420'>21420</a>
<a id='n21421' href='#n21421'>21421</a>
<a id='n21422' href='#n21422'>21422</a>
<a id='n21423' href='#n21423'>21423</a>
<a id='n21424' href='#n21424'>21424</a>
<a id='n21425' href='#n21425'>21425</a>
<a id='n21426' href='#n21426'>21426</a>
<a id='n21427' href='#n21427'>21427</a>
<a id='n21428' href='#n21428'>21428</a>
<a id='n21429' href='#n21429'>21429</a>
<a id='n21430' href='#n21430'>21430</a>
<a id='n21431' href='#n21431'>21431</a>
<a id='n21432' href='#n21432'>21432</a>
<a id='n21433' href='#n21433'>21433</a>
<a id='n21434' href='#n21434'>21434</a>
<a id='n21435' href='#n21435'>21435</a>
<a id='n21436' href='#n21436'>21436</a>
<a id='n21437' href='#n21437'>21437</a>
<a id='n21438' href='#n21438'>21438</a>
<a id='n21439' href='#n21439'>21439</a>
<a id='n21440' href='#n21440'>21440</a>
<a id='n21441' href='#n21441'>21441</a>
<a id='n21442' href='#n21442'>21442</a>
<a id='n21443' href='#n21443'>21443</a>
<a id='n21444' href='#n21444'>21444</a>
<a id='n21445' href='#n21445'>21445</a>
<a id='n21446' href='#n21446'>21446</a>
<a id='n21447' href='#n21447'>21447</a>
<a id='n21448' href='#n21448'>21448</a>
<a id='n21449' href='#n21449'>21449</a>
<a id='n21450' href='#n21450'>21450</a>
<a id='n21451' href='#n21451'>21451</a>
<a id='n21452' href='#n21452'>21452</a>
<a id='n21453' href='#n21453'>21453</a>
<a id='n21454' href='#n21454'>21454</a>
<a id='n21455' href='#n21455'>21455</a>
<a id='n21456' href='#n21456'>21456</a>
<a id='n21457' href='#n21457'>21457</a>
<a id='n21458' href='#n21458'>21458</a>
<a id='n21459' href='#n21459'>21459</a>
<a id='n21460' href='#n21460'>21460</a>
<a id='n21461' href='#n21461'>21461</a>
<a id='n21462' href='#n21462'>21462</a>
<a id='n21463' href='#n21463'>21463</a>
<a id='n21464' href='#n21464'>21464</a>
<a id='n21465' href='#n21465'>21465</a>
<a id='n21466' href='#n21466'>21466</a>
<a id='n21467' href='#n21467'>21467</a>
<a id='n21468' href='#n21468'>21468</a>
<a id='n21469' href='#n21469'>21469</a>
<a id='n21470' href='#n21470'>21470</a>
<a id='n21471' href='#n21471'>21471</a>
<a id='n21472' href='#n21472'>21472</a>
<a id='n21473' href='#n21473'>21473</a>
<a id='n21474' href='#n21474'>21474</a>
<a id='n21475' href='#n21475'>21475</a>
<a id='n21476' href='#n21476'>21476</a>
<a id='n21477' href='#n21477'>21477</a>
<a id='n21478' href='#n21478'>21478</a>
<a id='n21479' href='#n21479'>21479</a>
<a id='n21480' href='#n21480'>21480</a>
<a id='n21481' href='#n21481'>21481</a>
<a id='n21482' href='#n21482'>21482</a>
<a id='n21483' href='#n21483'>21483</a>
<a id='n21484' href='#n21484'>21484</a>
<a id='n21485' href='#n21485'>21485</a>
<a id='n21486' href='#n21486'>21486</a>
<a id='n21487' href='#n21487'>21487</a>
<a id='n21488' href='#n21488'>21488</a>
<a id='n21489' href='#n21489'>21489</a>
<a id='n21490' href='#n21490'>21490</a>
<a id='n21491' href='#n21491'>21491</a>
<a id='n21492' href='#n21492'>21492</a>
<a id='n21493' href='#n21493'>21493</a>
<a id='n21494' href='#n21494'>21494</a>
<a id='n21495' href='#n21495'>21495</a>
<a id='n21496' href='#n21496'>21496</a>
<a id='n21497' href='#n21497'>21497</a>
<a id='n21498' href='#n21498'>21498</a>
<a id='n21499' href='#n21499'>21499</a>
<a id='n21500' href='#n21500'>21500</a>
<a id='n21501' href='#n21501'>21501</a>
<a id='n21502' href='#n21502'>21502</a>
<a id='n21503' href='#n21503'>21503</a>
<a id='n21504' href='#n21504'>21504</a>
<a id='n21505' href='#n21505'>21505</a>
<a id='n21506' href='#n21506'>21506</a>
<a id='n21507' href='#n21507'>21507</a>
<a id='n21508' href='#n21508'>21508</a>
<a id='n21509' href='#n21509'>21509</a>
<a id='n21510' href='#n21510'>21510</a>
<a id='n21511' href='#n21511'>21511</a>
<a id='n21512' href='#n21512'>21512</a>
<a id='n21513' href='#n21513'>21513</a>
<a id='n21514' href='#n21514'>21514</a>
<a id='n21515' href='#n21515'>21515</a>
<a id='n21516' href='#n21516'>21516</a>
<a id='n21517' href='#n21517'>21517</a>
<a id='n21518' href='#n21518'>21518</a>
<a id='n21519' href='#n21519'>21519</a>
<a id='n21520' href='#n21520'>21520</a>
<a id='n21521' href='#n21521'>21521</a>
<a id='n21522' href='#n21522'>21522</a>
<a id='n21523' href='#n21523'>21523</a>
<a id='n21524' href='#n21524'>21524</a>
<a id='n21525' href='#n21525'>21525</a>
<a id='n21526' href='#n21526'>21526</a>
<a id='n21527' href='#n21527'>21527</a>
<a id='n21528' href='#n21528'>21528</a>
<a id='n21529' href='#n21529'>21529</a>
<a id='n21530' href='#n21530'>21530</a>
<a id='n21531' href='#n21531'>21531</a>
<a id='n21532' href='#n21532'>21532</a>
<a id='n21533' href='#n21533'>21533</a>
<a id='n21534' href='#n21534'>21534</a>
<a id='n21535' href='#n21535'>21535</a>
<a id='n21536' href='#n21536'>21536</a>
<a id='n21537' href='#n21537'>21537</a>
<a id='n21538' href='#n21538'>21538</a>
<a id='n21539' href='#n21539'>21539</a>
<a id='n21540' href='#n21540'>21540</a>
<a id='n21541' href='#n21541'>21541</a>
<a id='n21542' href='#n21542'>21542</a>
<a id='n21543' href='#n21543'>21543</a>
<a id='n21544' href='#n21544'>21544</a>
<a id='n21545' href='#n21545'>21545</a>
<a id='n21546' href='#n21546'>21546</a>
<a id='n21547' href='#n21547'>21547</a>
<a id='n21548' href='#n21548'>21548</a>
<a id='n21549' href='#n21549'>21549</a>
<a id='n21550' href='#n21550'>21550</a>
<a id='n21551' href='#n21551'>21551</a>
<a id='n21552' href='#n21552'>21552</a>
<a id='n21553' href='#n21553'>21553</a>
<a id='n21554' href='#n21554'>21554</a>
<a id='n21555' href='#n21555'>21555</a>
<a id='n21556' href='#n21556'>21556</a>
<a id='n21557' href='#n21557'>21557</a>
<a id='n21558' href='#n21558'>21558</a>
<a id='n21559' href='#n21559'>21559</a>
<a id='n21560' href='#n21560'>21560</a>
<a id='n21561' href='#n21561'>21561</a>
<a id='n21562' href='#n21562'>21562</a>
<a id='n21563' href='#n21563'>21563</a>
<a id='n21564' href='#n21564'>21564</a>
<a id='n21565' href='#n21565'>21565</a>
<a id='n21566' href='#n21566'>21566</a>
<a id='n21567' href='#n21567'>21567</a>
<a id='n21568' href='#n21568'>21568</a>
<a id='n21569' href='#n21569'>21569</a>
<a id='n21570' href='#n21570'>21570</a>
<a id='n21571' href='#n21571'>21571</a>
<a id='n21572' href='#n21572'>21572</a>
<a id='n21573' href='#n21573'>21573</a>
<a id='n21574' href='#n21574'>21574</a>
<a id='n21575' href='#n21575'>21575</a>
<a id='n21576' href='#n21576'>21576</a>
<a id='n21577' href='#n21577'>21577</a>
<a id='n21578' href='#n21578'>21578</a>
<a id='n21579' href='#n21579'>21579</a>
<a id='n21580' href='#n21580'>21580</a>
<a id='n21581' href='#n21581'>21581</a>
<a id='n21582' href='#n21582'>21582</a>
<a id='n21583' href='#n21583'>21583</a>
<a id='n21584' href='#n21584'>21584</a>
<a id='n21585' href='#n21585'>21585</a>
<a id='n21586' href='#n21586'>21586</a>
<a id='n21587' href='#n21587'>21587</a>
<a id='n21588' href='#n21588'>21588</a>
<a id='n21589' href='#n21589'>21589</a>
<a id='n21590' href='#n21590'>21590</a>
<a id='n21591' href='#n21591'>21591</a>
<a id='n21592' href='#n21592'>21592</a>
<a id='n21593' href='#n21593'>21593</a>
<a id='n21594' href='#n21594'>21594</a>
<a id='n21595' href='#n21595'>21595</a>
<a id='n21596' href='#n21596'>21596</a>
<a id='n21597' href='#n21597'>21597</a>
<a id='n21598' href='#n21598'>21598</a>
<a id='n21599' href='#n21599'>21599</a>
<a id='n21600' href='#n21600'>21600</a>
<a id='n21601' href='#n21601'>21601</a>
<a id='n21602' href='#n21602'>21602</a>
<a id='n21603' href='#n21603'>21603</a>
<a id='n21604' href='#n21604'>21604</a>
<a id='n21605' href='#n21605'>21605</a>
<a id='n21606' href='#n21606'>21606</a>
<a id='n21607' href='#n21607'>21607</a>
<a id='n21608' href='#n21608'>21608</a>
<a id='n21609' href='#n21609'>21609</a>
<a id='n21610' href='#n21610'>21610</a>
<a id='n21611' href='#n21611'>21611</a>
<a id='n21612' href='#n21612'>21612</a>
<a id='n21613' href='#n21613'>21613</a>
<a id='n21614' href='#n21614'>21614</a>
<a id='n21615' href='#n21615'>21615</a>
<a id='n21616' href='#n21616'>21616</a>
<a id='n21617' href='#n21617'>21617</a>
<a id='n21618' href='#n21618'>21618</a>
<a id='n21619' href='#n21619'>21619</a>
<a id='n21620' href='#n21620'>21620</a>
<a id='n21621' href='#n21621'>21621</a>
<a id='n21622' href='#n21622'>21622</a>
<a id='n21623' href='#n21623'>21623</a>
<a id='n21624' href='#n21624'>21624</a>
<a id='n21625' href='#n21625'>21625</a>
<a id='n21626' href='#n21626'>21626</a>
<a id='n21627' href='#n21627'>21627</a>
<a id='n21628' href='#n21628'>21628</a>
<a id='n21629' href='#n21629'>21629</a>
<a id='n21630' href='#n21630'>21630</a>
<a id='n21631' href='#n21631'>21631</a>
<a id='n21632' href='#n21632'>21632</a>
<a id='n21633' href='#n21633'>21633</a>
<a id='n21634' href='#n21634'>21634</a>
<a id='n21635' href='#n21635'>21635</a>
<a id='n21636' href='#n21636'>21636</a>
<a id='n21637' href='#n21637'>21637</a>
<a id='n21638' href='#n21638'>21638</a>
<a id='n21639' href='#n21639'>21639</a>
<a id='n21640' href='#n21640'>21640</a>
<a id='n21641' href='#n21641'>21641</a>
<a id='n21642' href='#n21642'>21642</a>
<a id='n21643' href='#n21643'>21643</a>
<a id='n21644' href='#n21644'>21644</a>
<a id='n21645' href='#n21645'>21645</a>
<a id='n21646' href='#n21646'>21646</a>
<a id='n21647' href='#n21647'>21647</a>
<a id='n21648' href='#n21648'>21648</a>
<a id='n21649' href='#n21649'>21649</a>
<a id='n21650' href='#n21650'>21650</a>
<a id='n21651' href='#n21651'>21651</a>
<a id='n21652' href='#n21652'>21652</a>
<a id='n21653' href='#n21653'>21653</a>
<a id='n21654' href='#n21654'>21654</a>
<a id='n21655' href='#n21655'>21655</a>
<a id='n21656' href='#n21656'>21656</a>
<a id='n21657' href='#n21657'>21657</a>
<a id='n21658' href='#n21658'>21658</a>
<a id='n21659' href='#n21659'>21659</a>
<a id='n21660' href='#n21660'>21660</a>
<a id='n21661' href='#n21661'>21661</a>
<a id='n21662' href='#n21662'>21662</a>
<a id='n21663' href='#n21663'>21663</a>
<a id='n21664' href='#n21664'>21664</a>
<a id='n21665' href='#n21665'>21665</a>
<a id='n21666' href='#n21666'>21666</a>
<a id='n21667' href='#n21667'>21667</a>
<a id='n21668' href='#n21668'>21668</a>
<a id='n21669' href='#n21669'>21669</a>
<a id='n21670' href='#n21670'>21670</a>
<a id='n21671' href='#n21671'>21671</a>
<a id='n21672' href='#n21672'>21672</a>
<a id='n21673' href='#n21673'>21673</a>
<a id='n21674' href='#n21674'>21674</a>
<a id='n21675' href='#n21675'>21675</a>
<a id='n21676' href='#n21676'>21676</a>
<a id='n21677' href='#n21677'>21677</a>
<a id='n21678' href='#n21678'>21678</a>
<a id='n21679' href='#n21679'>21679</a>
<a id='n21680' href='#n21680'>21680</a>
<a id='n21681' href='#n21681'>21681</a>
<a id='n21682' href='#n21682'>21682</a>
<a id='n21683' href='#n21683'>21683</a>
<a id='n21684' href='#n21684'>21684</a>
<a id='n21685' href='#n21685'>21685</a>
<a id='n21686' href='#n21686'>21686</a>
<a id='n21687' href='#n21687'>21687</a>
<a id='n21688' href='#n21688'>21688</a>
<a id='n21689' href='#n21689'>21689</a>
<a id='n21690' href='#n21690'>21690</a>
<a id='n21691' href='#n21691'>21691</a>
<a id='n21692' href='#n21692'>21692</a>
<a id='n21693' href='#n21693'>21693</a>
<a id='n21694' href='#n21694'>21694</a>
<a id='n21695' href='#n21695'>21695</a>
<a id='n21696' href='#n21696'>21696</a>
<a id='n21697' href='#n21697'>21697</a>
<a id='n21698' href='#n21698'>21698</a>
<a id='n21699' href='#n21699'>21699</a>
<a id='n21700' href='#n21700'>21700</a>
<a id='n21701' href='#n21701'>21701</a>
<a id='n21702' href='#n21702'>21702</a>
<a id='n21703' href='#n21703'>21703</a>
<a id='n21704' href='#n21704'>21704</a>
<a id='n21705' href='#n21705'>21705</a>
<a id='n21706' href='#n21706'>21706</a>
<a id='n21707' href='#n21707'>21707</a>
<a id='n21708' href='#n21708'>21708</a>
<a id='n21709' href='#n21709'>21709</a>
<a id='n21710' href='#n21710'>21710</a>
<a id='n21711' href='#n21711'>21711</a>
<a id='n21712' href='#n21712'>21712</a>
<a id='n21713' href='#n21713'>21713</a>
<a id='n21714' href='#n21714'>21714</a>
<a id='n21715' href='#n21715'>21715</a>
<a id='n21716' href='#n21716'>21716</a>
<a id='n21717' href='#n21717'>21717</a>
<a id='n21718' href='#n21718'>21718</a>
<a id='n21719' href='#n21719'>21719</a>
<a id='n21720' href='#n21720'>21720</a>
<a id='n21721' href='#n21721'>21721</a>
<a id='n21722' href='#n21722'>21722</a>
<a id='n21723' href='#n21723'>21723</a>
<a id='n21724' href='#n21724'>21724</a>
<a id='n21725' href='#n21725'>21725</a>
<a id='n21726' href='#n21726'>21726</a>
<a id='n21727' href='#n21727'>21727</a>
<a id='n21728' href='#n21728'>21728</a>
<a id='n21729' href='#n21729'>21729</a>
<a id='n21730' href='#n21730'>21730</a>
<a id='n21731' href='#n21731'>21731</a>
<a id='n21732' href='#n21732'>21732</a>
<a id='n21733' href='#n21733'>21733</a>
<a id='n21734' href='#n21734'>21734</a>
<a id='n21735' href='#n21735'>21735</a>
<a id='n21736' href='#n21736'>21736</a>
<a id='n21737' href='#n21737'>21737</a>
<a id='n21738' href='#n21738'>21738</a>
<a id='n21739' href='#n21739'>21739</a>
<a id='n21740' href='#n21740'>21740</a>
<a id='n21741' href='#n21741'>21741</a>
<a id='n21742' href='#n21742'>21742</a>
<a id='n21743' href='#n21743'>21743</a>
<a id='n21744' href='#n21744'>21744</a>
<a id='n21745' href='#n21745'>21745</a>
<a id='n21746' href='#n21746'>21746</a>
<a id='n21747' href='#n21747'>21747</a>
<a id='n21748' href='#n21748'>21748</a>
<a id='n21749' href='#n21749'>21749</a>
<a id='n21750' href='#n21750'>21750</a>
<a id='n21751' href='#n21751'>21751</a>
<a id='n21752' href='#n21752'>21752</a>
<a id='n21753' href='#n21753'>21753</a>
<a id='n21754' href='#n21754'>21754</a>
<a id='n21755' href='#n21755'>21755</a>
<a id='n21756' href='#n21756'>21756</a>
<a id='n21757' href='#n21757'>21757</a>
<a id='n21758' href='#n21758'>21758</a>
<a id='n21759' href='#n21759'>21759</a>
<a id='n21760' href='#n21760'>21760</a>
<a id='n21761' href='#n21761'>21761</a>
<a id='n21762' href='#n21762'>21762</a>
<a id='n21763' href='#n21763'>21763</a>
<a id='n21764' href='#n21764'>21764</a>
<a id='n21765' href='#n21765'>21765</a>
<a id='n21766' href='#n21766'>21766</a>
<a id='n21767' href='#n21767'>21767</a>
<a id='n21768' href='#n21768'>21768</a>
<a id='n21769' href='#n21769'>21769</a>
<a id='n21770' href='#n21770'>21770</a>
<a id='n21771' href='#n21771'>21771</a>
<a id='n21772' href='#n21772'>21772</a>
<a id='n21773' href='#n21773'>21773</a>
<a id='n21774' href='#n21774'>21774</a>
<a id='n21775' href='#n21775'>21775</a>
<a id='n21776' href='#n21776'>21776</a>
<a id='n21777' href='#n21777'>21777</a>
<a id='n21778' href='#n21778'>21778</a>
<a id='n21779' href='#n21779'>21779</a>
<a id='n21780' href='#n21780'>21780</a>
<a id='n21781' href='#n21781'>21781</a>
<a id='n21782' href='#n21782'>21782</a>
<a id='n21783' href='#n21783'>21783</a>
<a id='n21784' href='#n21784'>21784</a>
<a id='n21785' href='#n21785'>21785</a>
<a id='n21786' href='#n21786'>21786</a>
<a id='n21787' href='#n21787'>21787</a>
<a id='n21788' href='#n21788'>21788</a>
<a id='n21789' href='#n21789'>21789</a>
<a id='n21790' href='#n21790'>21790</a>
<a id='n21791' href='#n21791'>21791</a>
<a id='n21792' href='#n21792'>21792</a>
<a id='n21793' href='#n21793'>21793</a>
<a id='n21794' href='#n21794'>21794</a>
<a id='n21795' href='#n21795'>21795</a>
<a id='n21796' href='#n21796'>21796</a>
<a id='n21797' href='#n21797'>21797</a>
<a id='n21798' href='#n21798'>21798</a>
<a id='n21799' href='#n21799'>21799</a>
<a id='n21800' href='#n21800'>21800</a>
<a id='n21801' href='#n21801'>21801</a>
<a id='n21802' href='#n21802'>21802</a>
<a id='n21803' href='#n21803'>21803</a>
<a id='n21804' href='#n21804'>21804</a>
<a id='n21805' href='#n21805'>21805</a>
<a id='n21806' href='#n21806'>21806</a>
<a id='n21807' href='#n21807'>21807</a>
<a id='n21808' href='#n21808'>21808</a>
<a id='n21809' href='#n21809'>21809</a>
<a id='n21810' href='#n21810'>21810</a>
<a id='n21811' href='#n21811'>21811</a>
<a id='n21812' href='#n21812'>21812</a>
<a id='n21813' href='#n21813'>21813</a>
<a id='n21814' href='#n21814'>21814</a>
<a id='n21815' href='#n21815'>21815</a>
<a id='n21816' href='#n21816'>21816</a>
<a id='n21817' href='#n21817'>21817</a>
<a id='n21818' href='#n21818'>21818</a>
<a id='n21819' href='#n21819'>21819</a>
<a id='n21820' href='#n21820'>21820</a>
<a id='n21821' href='#n21821'>21821</a>
<a id='n21822' href='#n21822'>21822</a>
<a id='n21823' href='#n21823'>21823</a>
<a id='n21824' href='#n21824'>21824</a>
<a id='n21825' href='#n21825'>21825</a>
<a id='n21826' href='#n21826'>21826</a>
<a id='n21827' href='#n21827'>21827</a>
<a id='n21828' href='#n21828'>21828</a>
<a id='n21829' href='#n21829'>21829</a>
<a id='n21830' href='#n21830'>21830</a>
<a id='n21831' href='#n21831'>21831</a>
<a id='n21832' href='#n21832'>21832</a>
<a id='n21833' href='#n21833'>21833</a>
<a id='n21834' href='#n21834'>21834</a>
<a id='n21835' href='#n21835'>21835</a>
<a id='n21836' href='#n21836'>21836</a>
<a id='n21837' href='#n21837'>21837</a>
<a id='n21838' href='#n21838'>21838</a>
<a id='n21839' href='#n21839'>21839</a>
<a id='n21840' href='#n21840'>21840</a>
<a id='n21841' href='#n21841'>21841</a>
<a id='n21842' href='#n21842'>21842</a>
<a id='n21843' href='#n21843'>21843</a>
<a id='n21844' href='#n21844'>21844</a>
<a id='n21845' href='#n21845'>21845</a>
<a id='n21846' href='#n21846'>21846</a>
<a id='n21847' href='#n21847'>21847</a>
<a id='n21848' href='#n21848'>21848</a>
<a id='n21849' href='#n21849'>21849</a>
<a id='n21850' href='#n21850'>21850</a>
<a id='n21851' href='#n21851'>21851</a>
<a id='n21852' href='#n21852'>21852</a>
<a id='n21853' href='#n21853'>21853</a>
<a id='n21854' href='#n21854'>21854</a>
<a id='n21855' href='#n21855'>21855</a>
<a id='n21856' href='#n21856'>21856</a>
<a id='n21857' href='#n21857'>21857</a>
<a id='n21858' href='#n21858'>21858</a>
<a id='n21859' href='#n21859'>21859</a>
<a id='n21860' href='#n21860'>21860</a>
<a id='n21861' href='#n21861'>21861</a>
<a id='n21862' href='#n21862'>21862</a>
<a id='n21863' href='#n21863'>21863</a>
<a id='n21864' href='#n21864'>21864</a>
<a id='n21865' href='#n21865'>21865</a>
<a id='n21866' href='#n21866'>21866</a>
<a id='n21867' href='#n21867'>21867</a>
<a id='n21868' href='#n21868'>21868</a>
<a id='n21869' href='#n21869'>21869</a>
<a id='n21870' href='#n21870'>21870</a>
<a id='n21871' href='#n21871'>21871</a>
<a id='n21872' href='#n21872'>21872</a>
<a id='n21873' href='#n21873'>21873</a>
<a id='n21874' href='#n21874'>21874</a>
<a id='n21875' href='#n21875'>21875</a>
<a id='n21876' href='#n21876'>21876</a>
<a id='n21877' href='#n21877'>21877</a>
<a id='n21878' href='#n21878'>21878</a>
<a id='n21879' href='#n21879'>21879</a>
<a id='n21880' href='#n21880'>21880</a>
<a id='n21881' href='#n21881'>21881</a>
<a id='n21882' href='#n21882'>21882</a>
<a id='n21883' href='#n21883'>21883</a>
<a id='n21884' href='#n21884'>21884</a>
<a id='n21885' href='#n21885'>21885</a>
<a id='n21886' href='#n21886'>21886</a>
<a id='n21887' href='#n21887'>21887</a>
<a id='n21888' href='#n21888'>21888</a>
<a id='n21889' href='#n21889'>21889</a>
<a id='n21890' href='#n21890'>21890</a>
<a id='n21891' href='#n21891'>21891</a>
<a id='n21892' href='#n21892'>21892</a>
<a id='n21893' href='#n21893'>21893</a>
<a id='n21894' href='#n21894'>21894</a>
<a id='n21895' href='#n21895'>21895</a>
<a id='n21896' href='#n21896'>21896</a>
<a id='n21897' href='#n21897'>21897</a>
<a id='n21898' href='#n21898'>21898</a>
<a id='n21899' href='#n21899'>21899</a>
<a id='n21900' href='#n21900'>21900</a>
<a id='n21901' href='#n21901'>21901</a>
<a id='n21902' href='#n21902'>21902</a>
<a id='n21903' href='#n21903'>21903</a>
<a id='n21904' href='#n21904'>21904</a>
<a id='n21905' href='#n21905'>21905</a>
<a id='n21906' href='#n21906'>21906</a>
<a id='n21907' href='#n21907'>21907</a>
<a id='n21908' href='#n21908'>21908</a>
<a id='n21909' href='#n21909'>21909</a>
<a id='n21910' href='#n21910'>21910</a>
<a id='n21911' href='#n21911'>21911</a>
<a id='n21912' href='#n21912'>21912</a>
<a id='n21913' href='#n21913'>21913</a>
<a id='n21914' href='#n21914'>21914</a>
<a id='n21915' href='#n21915'>21915</a>
<a id='n21916' href='#n21916'>21916</a>
<a id='n21917' href='#n21917'>21917</a>
<a id='n21918' href='#n21918'>21918</a>
<a id='n21919' href='#n21919'>21919</a>
<a id='n21920' href='#n21920'>21920</a>
<a id='n21921' href='#n21921'>21921</a>
<a id='n21922' href='#n21922'>21922</a>
<a id='n21923' href='#n21923'>21923</a>
<a id='n21924' href='#n21924'>21924</a>
<a id='n21925' href='#n21925'>21925</a>
<a id='n21926' href='#n21926'>21926</a>
<a id='n21927' href='#n21927'>21927</a>
<a id='n21928' href='#n21928'>21928</a>
<a id='n21929' href='#n21929'>21929</a>
<a id='n21930' href='#n21930'>21930</a>
<a id='n21931' href='#n21931'>21931</a>
<a id='n21932' href='#n21932'>21932</a>
<a id='n21933' href='#n21933'>21933</a>
<a id='n21934' href='#n21934'>21934</a>
<a id='n21935' href='#n21935'>21935</a>
<a id='n21936' href='#n21936'>21936</a>
<a id='n21937' href='#n21937'>21937</a>
<a id='n21938' href='#n21938'>21938</a>
<a id='n21939' href='#n21939'>21939</a>
<a id='n21940' href='#n21940'>21940</a>
<a id='n21941' href='#n21941'>21941</a>
<a id='n21942' href='#n21942'>21942</a>
<a id='n21943' href='#n21943'>21943</a>
<a id='n21944' href='#n21944'>21944</a>
<a id='n21945' href='#n21945'>21945</a>
<a id='n21946' href='#n21946'>21946</a>
<a id='n21947' href='#n21947'>21947</a>
<a id='n21948' href='#n21948'>21948</a>
<a id='n21949' href='#n21949'>21949</a>
<a id='n21950' href='#n21950'>21950</a>
<a id='n21951' href='#n21951'>21951</a>
<a id='n21952' href='#n21952'>21952</a>
<a id='n21953' href='#n21953'>21953</a>
<a id='n21954' href='#n21954'>21954</a>
<a id='n21955' href='#n21955'>21955</a>
<a id='n21956' href='#n21956'>21956</a>
<a id='n21957' href='#n21957'>21957</a>
<a id='n21958' href='#n21958'>21958</a>
<a id='n21959' href='#n21959'>21959</a>
<a id='n21960' href='#n21960'>21960</a>
<a id='n21961' href='#n21961'>21961</a>
<a id='n21962' href='#n21962'>21962</a>
<a id='n21963' href='#n21963'>21963</a>
<a id='n21964' href='#n21964'>21964</a>
<a id='n21965' href='#n21965'>21965</a>
<a id='n21966' href='#n21966'>21966</a>
<a id='n21967' href='#n21967'>21967</a>
<a id='n21968' href='#n21968'>21968</a>
<a id='n21969' href='#n21969'>21969</a>
<a id='n21970' href='#n21970'>21970</a>
<a id='n21971' href='#n21971'>21971</a>
<a id='n21972' href='#n21972'>21972</a>
<a id='n21973' href='#n21973'>21973</a>
<a id='n21974' href='#n21974'>21974</a>
<a id='n21975' href='#n21975'>21975</a>
<a id='n21976' href='#n21976'>21976</a>
<a id='n21977' href='#n21977'>21977</a>
<a id='n21978' href='#n21978'>21978</a>
<a id='n21979' href='#n21979'>21979</a>
<a id='n21980' href='#n21980'>21980</a>
<a id='n21981' href='#n21981'>21981</a>
<a id='n21982' href='#n21982'>21982</a>
<a id='n21983' href='#n21983'>21983</a>
<a id='n21984' href='#n21984'>21984</a>
<a id='n21985' href='#n21985'>21985</a>
<a id='n21986' href='#n21986'>21986</a>
<a id='n21987' href='#n21987'>21987</a>
<a id='n21988' href='#n21988'>21988</a>
<a id='n21989' href='#n21989'>21989</a>
<a id='n21990' href='#n21990'>21990</a>
<a id='n21991' href='#n21991'>21991</a>
<a id='n21992' href='#n21992'>21992</a>
<a id='n21993' href='#n21993'>21993</a>
<a id='n21994' href='#n21994'>21994</a>
<a id='n21995' href='#n21995'>21995</a>
<a id='n21996' href='#n21996'>21996</a>
<a id='n21997' href='#n21997'>21997</a>
<a id='n21998' href='#n21998'>21998</a>
<a id='n21999' href='#n21999'>21999</a>
<a id='n22000' href='#n22000'>22000</a>
<a id='n22001' href='#n22001'>22001</a>
<a id='n22002' href='#n22002'>22002</a>
<a id='n22003' href='#n22003'>22003</a>
<a id='n22004' href='#n22004'>22004</a>
<a id='n22005' href='#n22005'>22005</a>
<a id='n22006' href='#n22006'>22006</a>
<a id='n22007' href='#n22007'>22007</a>
<a id='n22008' href='#n22008'>22008</a>
<a id='n22009' href='#n22009'>22009</a>
<a id='n22010' href='#n22010'>22010</a>
<a id='n22011' href='#n22011'>22011</a>
<a id='n22012' href='#n22012'>22012</a>
<a id='n22013' href='#n22013'>22013</a>
<a id='n22014' href='#n22014'>22014</a>
<a id='n22015' href='#n22015'>22015</a>
<a id='n22016' href='#n22016'>22016</a>
<a id='n22017' href='#n22017'>22017</a>
<a id='n22018' href='#n22018'>22018</a>
<a id='n22019' href='#n22019'>22019</a>
<a id='n22020' href='#n22020'>22020</a>
<a id='n22021' href='#n22021'>22021</a>
<a id='n22022' href='#n22022'>22022</a>
<a id='n22023' href='#n22023'>22023</a>
<a id='n22024' href='#n22024'>22024</a>
<a id='n22025' href='#n22025'>22025</a>
<a id='n22026' href='#n22026'>22026</a>
<a id='n22027' href='#n22027'>22027</a>
<a id='n22028' href='#n22028'>22028</a>
<a id='n22029' href='#n22029'>22029</a>
<a id='n22030' href='#n22030'>22030</a>
<a id='n22031' href='#n22031'>22031</a>
<a id='n22032' href='#n22032'>22032</a>
<a id='n22033' href='#n22033'>22033</a>
<a id='n22034' href='#n22034'>22034</a>
<a id='n22035' href='#n22035'>22035</a>
<a id='n22036' href='#n22036'>22036</a>
<a id='n22037' href='#n22037'>22037</a>
<a id='n22038' href='#n22038'>22038</a>
<a id='n22039' href='#n22039'>22039</a>
<a id='n22040' href='#n22040'>22040</a>
<a id='n22041' href='#n22041'>22041</a>
<a id='n22042' href='#n22042'>22042</a>
<a id='n22043' href='#n22043'>22043</a>
<a id='n22044' href='#n22044'>22044</a>
<a id='n22045' href='#n22045'>22045</a>
<a id='n22046' href='#n22046'>22046</a>
<a id='n22047' href='#n22047'>22047</a>
<a id='n22048' href='#n22048'>22048</a>
<a id='n22049' href='#n22049'>22049</a>
<a id='n22050' href='#n22050'>22050</a>
<a id='n22051' href='#n22051'>22051</a>
<a id='n22052' href='#n22052'>22052</a>
<a id='n22053' href='#n22053'>22053</a>
<a id='n22054' href='#n22054'>22054</a>
<a id='n22055' href='#n22055'>22055</a>
<a id='n22056' href='#n22056'>22056</a>
<a id='n22057' href='#n22057'>22057</a>
<a id='n22058' href='#n22058'>22058</a>
<a id='n22059' href='#n22059'>22059</a>
<a id='n22060' href='#n22060'>22060</a>
<a id='n22061' href='#n22061'>22061</a>
<a id='n22062' href='#n22062'>22062</a>
<a id='n22063' href='#n22063'>22063</a>
<a id='n22064' href='#n22064'>22064</a>
<a id='n22065' href='#n22065'>22065</a>
<a id='n22066' href='#n22066'>22066</a>
<a id='n22067' href='#n22067'>22067</a>
<a id='n22068' href='#n22068'>22068</a>
<a id='n22069' href='#n22069'>22069</a>
<a id='n22070' href='#n22070'>22070</a>
<a id='n22071' href='#n22071'>22071</a>
<a id='n22072' href='#n22072'>22072</a>
<a id='n22073' href='#n22073'>22073</a>
<a id='n22074' href='#n22074'>22074</a>
<a id='n22075' href='#n22075'>22075</a>
<a id='n22076' href='#n22076'>22076</a>
<a id='n22077' href='#n22077'>22077</a>
<a id='n22078' href='#n22078'>22078</a>
<a id='n22079' href='#n22079'>22079</a>
<a id='n22080' href='#n22080'>22080</a>
<a id='n22081' href='#n22081'>22081</a>
<a id='n22082' href='#n22082'>22082</a>
<a id='n22083' href='#n22083'>22083</a>
<a id='n22084' href='#n22084'>22084</a>
<a id='n22085' href='#n22085'>22085</a>
<a id='n22086' href='#n22086'>22086</a>
<a id='n22087' href='#n22087'>22087</a>
<a id='n22088' href='#n22088'>22088</a>
<a id='n22089' href='#n22089'>22089</a>
<a id='n22090' href='#n22090'>22090</a>
<a id='n22091' href='#n22091'>22091</a>
<a id='n22092' href='#n22092'>22092</a>
<a id='n22093' href='#n22093'>22093</a>
<a id='n22094' href='#n22094'>22094</a>
<a id='n22095' href='#n22095'>22095</a>
<a id='n22096' href='#n22096'>22096</a>
<a id='n22097' href='#n22097'>22097</a>
<a id='n22098' href='#n22098'>22098</a>
<a id='n22099' href='#n22099'>22099</a>
<a id='n22100' href='#n22100'>22100</a>
<a id='n22101' href='#n22101'>22101</a>
<a id='n22102' href='#n22102'>22102</a>
<a id='n22103' href='#n22103'>22103</a>
<a id='n22104' href='#n22104'>22104</a>
<a id='n22105' href='#n22105'>22105</a>
<a id='n22106' href='#n22106'>22106</a>
<a id='n22107' href='#n22107'>22107</a>
<a id='n22108' href='#n22108'>22108</a>
<a id='n22109' href='#n22109'>22109</a>
<a id='n22110' href='#n22110'>22110</a>
<a id='n22111' href='#n22111'>22111</a>
<a id='n22112' href='#n22112'>22112</a>
<a id='n22113' href='#n22113'>22113</a>
<a id='n22114' href='#n22114'>22114</a>
<a id='n22115' href='#n22115'>22115</a>
<a id='n22116' href='#n22116'>22116</a>
<a id='n22117' href='#n22117'>22117</a>
<a id='n22118' href='#n22118'>22118</a>
<a id='n22119' href='#n22119'>22119</a>
<a id='n22120' href='#n22120'>22120</a>
<a id='n22121' href='#n22121'>22121</a>
<a id='n22122' href='#n22122'>22122</a>
<a id='n22123' href='#n22123'>22123</a>
<a id='n22124' href='#n22124'>22124</a>
<a id='n22125' href='#n22125'>22125</a>
<a id='n22126' href='#n22126'>22126</a>
<a id='n22127' href='#n22127'>22127</a>
<a id='n22128' href='#n22128'>22128</a>
<a id='n22129' href='#n22129'>22129</a>
<a id='n22130' href='#n22130'>22130</a>
<a id='n22131' href='#n22131'>22131</a>
<a id='n22132' href='#n22132'>22132</a>
<a id='n22133' href='#n22133'>22133</a>
<a id='n22134' href='#n22134'>22134</a>
<a id='n22135' href='#n22135'>22135</a>
<a id='n22136' href='#n22136'>22136</a>
<a id='n22137' href='#n22137'>22137</a>
<a id='n22138' href='#n22138'>22138</a>
<a id='n22139' href='#n22139'>22139</a>
<a id='n22140' href='#n22140'>22140</a>
<a id='n22141' href='#n22141'>22141</a>
<a id='n22142' href='#n22142'>22142</a>
<a id='n22143' href='#n22143'>22143</a>
<a id='n22144' href='#n22144'>22144</a>
<a id='n22145' href='#n22145'>22145</a>
<a id='n22146' href='#n22146'>22146</a>
<a id='n22147' href='#n22147'>22147</a>
<a id='n22148' href='#n22148'>22148</a>
<a id='n22149' href='#n22149'>22149</a>
<a id='n22150' href='#n22150'>22150</a>
<a id='n22151' href='#n22151'>22151</a>
<a id='n22152' href='#n22152'>22152</a>
<a id='n22153' href='#n22153'>22153</a>
<a id='n22154' href='#n22154'>22154</a>
<a id='n22155' href='#n22155'>22155</a>
<a id='n22156' href='#n22156'>22156</a>
<a id='n22157' href='#n22157'>22157</a>
<a id='n22158' href='#n22158'>22158</a>
<a id='n22159' href='#n22159'>22159</a>
<a id='n22160' href='#n22160'>22160</a>
<a id='n22161' href='#n22161'>22161</a>
<a id='n22162' href='#n22162'>22162</a>
<a id='n22163' href='#n22163'>22163</a>
<a id='n22164' href='#n22164'>22164</a>
<a id='n22165' href='#n22165'>22165</a>
<a id='n22166' href='#n22166'>22166</a>
<a id='n22167' href='#n22167'>22167</a>
<a id='n22168' href='#n22168'>22168</a>
<a id='n22169' href='#n22169'>22169</a>
<a id='n22170' href='#n22170'>22170</a>
<a id='n22171' href='#n22171'>22171</a>
<a id='n22172' href='#n22172'>22172</a>
<a id='n22173' href='#n22173'>22173</a>
<a id='n22174' href='#n22174'>22174</a>
<a id='n22175' href='#n22175'>22175</a>
<a id='n22176' href='#n22176'>22176</a>
<a id='n22177' href='#n22177'>22177</a>
<a id='n22178' href='#n22178'>22178</a>
<a id='n22179' href='#n22179'>22179</a>
<a id='n22180' href='#n22180'>22180</a>
<a id='n22181' href='#n22181'>22181</a>
<a id='n22182' href='#n22182'>22182</a>
<a id='n22183' href='#n22183'>22183</a>
<a id='n22184' href='#n22184'>22184</a>
<a id='n22185' href='#n22185'>22185</a>
<a id='n22186' href='#n22186'>22186</a>
<a id='n22187' href='#n22187'>22187</a>
<a id='n22188' href='#n22188'>22188</a>
<a id='n22189' href='#n22189'>22189</a>
<a id='n22190' href='#n22190'>22190</a>
<a id='n22191' href='#n22191'>22191</a>
<a id='n22192' href='#n22192'>22192</a>
<a id='n22193' href='#n22193'>22193</a>
<a id='n22194' href='#n22194'>22194</a>
<a id='n22195' href='#n22195'>22195</a>
<a id='n22196' href='#n22196'>22196</a>
<a id='n22197' href='#n22197'>22197</a>
<a id='n22198' href='#n22198'>22198</a>
<a id='n22199' href='#n22199'>22199</a>
<a id='n22200' href='#n22200'>22200</a>
<a id='n22201' href='#n22201'>22201</a>
<a id='n22202' href='#n22202'>22202</a>
<a id='n22203' href='#n22203'>22203</a>
<a id='n22204' href='#n22204'>22204</a>
<a id='n22205' href='#n22205'>22205</a>
<a id='n22206' href='#n22206'>22206</a>
<a id='n22207' href='#n22207'>22207</a>
<a id='n22208' href='#n22208'>22208</a>
<a id='n22209' href='#n22209'>22209</a>
<a id='n22210' href='#n22210'>22210</a>
<a id='n22211' href='#n22211'>22211</a>
<a id='n22212' href='#n22212'>22212</a>
<a id='n22213' href='#n22213'>22213</a>
<a id='n22214' href='#n22214'>22214</a>
<a id='n22215' href='#n22215'>22215</a>
<a id='n22216' href='#n22216'>22216</a>
<a id='n22217' href='#n22217'>22217</a>
<a id='n22218' href='#n22218'>22218</a>
<a id='n22219' href='#n22219'>22219</a>
<a id='n22220' href='#n22220'>22220</a>
<a id='n22221' href='#n22221'>22221</a>
<a id='n22222' href='#n22222'>22222</a>
<a id='n22223' href='#n22223'>22223</a>
<a id='n22224' href='#n22224'>22224</a>
<a id='n22225' href='#n22225'>22225</a>
<a id='n22226' href='#n22226'>22226</a>
<a id='n22227' href='#n22227'>22227</a>
<a id='n22228' href='#n22228'>22228</a>
<a id='n22229' href='#n22229'>22229</a>
<a id='n22230' href='#n22230'>22230</a>
<a id='n22231' href='#n22231'>22231</a>
<a id='n22232' href='#n22232'>22232</a>
<a id='n22233' href='#n22233'>22233</a>
<a id='n22234' href='#n22234'>22234</a>
<a id='n22235' href='#n22235'>22235</a>
<a id='n22236' href='#n22236'>22236</a>
<a id='n22237' href='#n22237'>22237</a>
<a id='n22238' href='#n22238'>22238</a>
<a id='n22239' href='#n22239'>22239</a>
<a id='n22240' href='#n22240'>22240</a>
<a id='n22241' href='#n22241'>22241</a>
<a id='n22242' href='#n22242'>22242</a>
<a id='n22243' href='#n22243'>22243</a>
<a id='n22244' href='#n22244'>22244</a>
<a id='n22245' href='#n22245'>22245</a>
<a id='n22246' href='#n22246'>22246</a>
<a id='n22247' href='#n22247'>22247</a>
<a id='n22248' href='#n22248'>22248</a>
<a id='n22249' href='#n22249'>22249</a>
<a id='n22250' href='#n22250'>22250</a>
<a id='n22251' href='#n22251'>22251</a>
<a id='n22252' href='#n22252'>22252</a>
<a id='n22253' href='#n22253'>22253</a>
<a id='n22254' href='#n22254'>22254</a>
<a id='n22255' href='#n22255'>22255</a>
<a id='n22256' href='#n22256'>22256</a>
<a id='n22257' href='#n22257'>22257</a>
<a id='n22258' href='#n22258'>22258</a>
<a id='n22259' href='#n22259'>22259</a>
<a id='n22260' href='#n22260'>22260</a>
<a id='n22261' href='#n22261'>22261</a>
<a id='n22262' href='#n22262'>22262</a>
<a id='n22263' href='#n22263'>22263</a>
<a id='n22264' href='#n22264'>22264</a>
<a id='n22265' href='#n22265'>22265</a>
<a id='n22266' href='#n22266'>22266</a>
<a id='n22267' href='#n22267'>22267</a>
<a id='n22268' href='#n22268'>22268</a>
<a id='n22269' href='#n22269'>22269</a>
<a id='n22270' href='#n22270'>22270</a>
<a id='n22271' href='#n22271'>22271</a>
<a id='n22272' href='#n22272'>22272</a>
<a id='n22273' href='#n22273'>22273</a>
<a id='n22274' href='#n22274'>22274</a>
<a id='n22275' href='#n22275'>22275</a>
<a id='n22276' href='#n22276'>22276</a>
<a id='n22277' href='#n22277'>22277</a>
<a id='n22278' href='#n22278'>22278</a>
<a id='n22279' href='#n22279'>22279</a>
<a id='n22280' href='#n22280'>22280</a>
<a id='n22281' href='#n22281'>22281</a>
<a id='n22282' href='#n22282'>22282</a>
<a id='n22283' href='#n22283'>22283</a>
<a id='n22284' href='#n22284'>22284</a>
<a id='n22285' href='#n22285'>22285</a>
<a id='n22286' href='#n22286'>22286</a>
<a id='n22287' href='#n22287'>22287</a>
<a id='n22288' href='#n22288'>22288</a>
<a id='n22289' href='#n22289'>22289</a>
<a id='n22290' href='#n22290'>22290</a>
<a id='n22291' href='#n22291'>22291</a>
<a id='n22292' href='#n22292'>22292</a>
<a id='n22293' href='#n22293'>22293</a>
<a id='n22294' href='#n22294'>22294</a>
<a id='n22295' href='#n22295'>22295</a>
<a id='n22296' href='#n22296'>22296</a>
<a id='n22297' href='#n22297'>22297</a>
<a id='n22298' href='#n22298'>22298</a>
<a id='n22299' href='#n22299'>22299</a>
<a id='n22300' href='#n22300'>22300</a>
<a id='n22301' href='#n22301'>22301</a>
<a id='n22302' href='#n22302'>22302</a>
<a id='n22303' href='#n22303'>22303</a>
<a id='n22304' href='#n22304'>22304</a>
<a id='n22305' href='#n22305'>22305</a>
<a id='n22306' href='#n22306'>22306</a>
<a id='n22307' href='#n22307'>22307</a>
<a id='n22308' href='#n22308'>22308</a>
<a id='n22309' href='#n22309'>22309</a>
<a id='n22310' href='#n22310'>22310</a>
<a id='n22311' href='#n22311'>22311</a>
<a id='n22312' href='#n22312'>22312</a>
<a id='n22313' href='#n22313'>22313</a>
<a id='n22314' href='#n22314'>22314</a>
<a id='n22315' href='#n22315'>22315</a>
<a id='n22316' href='#n22316'>22316</a>
<a id='n22317' href='#n22317'>22317</a>
<a id='n22318' href='#n22318'>22318</a>
<a id='n22319' href='#n22319'>22319</a>
<a id='n22320' href='#n22320'>22320</a>
<a id='n22321' href='#n22321'>22321</a>
<a id='n22322' href='#n22322'>22322</a>
<a id='n22323' href='#n22323'>22323</a>
<a id='n22324' href='#n22324'>22324</a>
<a id='n22325' href='#n22325'>22325</a>
<a id='n22326' href='#n22326'>22326</a>
<a id='n22327' href='#n22327'>22327</a>
<a id='n22328' href='#n22328'>22328</a>
<a id='n22329' href='#n22329'>22329</a>
<a id='n22330' href='#n22330'>22330</a>
<a id='n22331' href='#n22331'>22331</a>
<a id='n22332' href='#n22332'>22332</a>
<a id='n22333' href='#n22333'>22333</a>
<a id='n22334' href='#n22334'>22334</a>
<a id='n22335' href='#n22335'>22335</a>
<a id='n22336' href='#n22336'>22336</a>
<a id='n22337' href='#n22337'>22337</a>
<a id='n22338' href='#n22338'>22338</a>
<a id='n22339' href='#n22339'>22339</a>
<a id='n22340' href='#n22340'>22340</a>
<a id='n22341' href='#n22341'>22341</a>
<a id='n22342' href='#n22342'>22342</a>
<a id='n22343' href='#n22343'>22343</a>
<a id='n22344' href='#n22344'>22344</a>
<a id='n22345' href='#n22345'>22345</a>
<a id='n22346' href='#n22346'>22346</a>
<a id='n22347' href='#n22347'>22347</a>
<a id='n22348' href='#n22348'>22348</a>
<a id='n22349' href='#n22349'>22349</a>
<a id='n22350' href='#n22350'>22350</a>
<a id='n22351' href='#n22351'>22351</a>
<a id='n22352' href='#n22352'>22352</a>
<a id='n22353' href='#n22353'>22353</a>
<a id='n22354' href='#n22354'>22354</a>
<a id='n22355' href='#n22355'>22355</a>
<a id='n22356' href='#n22356'>22356</a>
<a id='n22357' href='#n22357'>22357</a>
<a id='n22358' href='#n22358'>22358</a>
<a id='n22359' href='#n22359'>22359</a>
<a id='n22360' href='#n22360'>22360</a>
<a id='n22361' href='#n22361'>22361</a>
<a id='n22362' href='#n22362'>22362</a>
<a id='n22363' href='#n22363'>22363</a>
<a id='n22364' href='#n22364'>22364</a>
<a id='n22365' href='#n22365'>22365</a>
<a id='n22366' href='#n22366'>22366</a>
<a id='n22367' href='#n22367'>22367</a>
<a id='n22368' href='#n22368'>22368</a>
<a id='n22369' href='#n22369'>22369</a>
<a id='n22370' href='#n22370'>22370</a>
<a id='n22371' href='#n22371'>22371</a>
<a id='n22372' href='#n22372'>22372</a>
<a id='n22373' href='#n22373'>22373</a>
<a id='n22374' href='#n22374'>22374</a>
<a id='n22375' href='#n22375'>22375</a>
<a id='n22376' href='#n22376'>22376</a>
<a id='n22377' href='#n22377'>22377</a>
<a id='n22378' href='#n22378'>22378</a>
<a id='n22379' href='#n22379'>22379</a>
<a id='n22380' href='#n22380'>22380</a>
<a id='n22381' href='#n22381'>22381</a>
<a id='n22382' href='#n22382'>22382</a>
<a id='n22383' href='#n22383'>22383</a>
<a id='n22384' href='#n22384'>22384</a>
<a id='n22385' href='#n22385'>22385</a>
<a id='n22386' href='#n22386'>22386</a>
<a id='n22387' href='#n22387'>22387</a>
<a id='n22388' href='#n22388'>22388</a>
<a id='n22389' href='#n22389'>22389</a>
<a id='n22390' href='#n22390'>22390</a>
<a id='n22391' href='#n22391'>22391</a>
<a id='n22392' href='#n22392'>22392</a>
<a id='n22393' href='#n22393'>22393</a>
<a id='n22394' href='#n22394'>22394</a>
<a id='n22395' href='#n22395'>22395</a>
<a id='n22396' href='#n22396'>22396</a>
<a id='n22397' href='#n22397'>22397</a>
<a id='n22398' href='#n22398'>22398</a>
<a id='n22399' href='#n22399'>22399</a>
<a id='n22400' href='#n22400'>22400</a>
<a id='n22401' href='#n22401'>22401</a>
<a id='n22402' href='#n22402'>22402</a>
<a id='n22403' href='#n22403'>22403</a>
<a id='n22404' href='#n22404'>22404</a>
<a id='n22405' href='#n22405'>22405</a>
<a id='n22406' href='#n22406'>22406</a>
<a id='n22407' href='#n22407'>22407</a>
<a id='n22408' href='#n22408'>22408</a>
<a id='n22409' href='#n22409'>22409</a>
<a id='n22410' href='#n22410'>22410</a>
<a id='n22411' href='#n22411'>22411</a>
<a id='n22412' href='#n22412'>22412</a>
<a id='n22413' href='#n22413'>22413</a>
<a id='n22414' href='#n22414'>22414</a>
<a id='n22415' href='#n22415'>22415</a>
<a id='n22416' href='#n22416'>22416</a>
<a id='n22417' href='#n22417'>22417</a>
<a id='n22418' href='#n22418'>22418</a>
<a id='n22419' href='#n22419'>22419</a>
<a id='n22420' href='#n22420'>22420</a>
<a id='n22421' href='#n22421'>22421</a>
<a id='n22422' href='#n22422'>22422</a>
<a id='n22423' href='#n22423'>22423</a>
<a id='n22424' href='#n22424'>22424</a>
<a id='n22425' href='#n22425'>22425</a>
<a id='n22426' href='#n22426'>22426</a>
<a id='n22427' href='#n22427'>22427</a>
<a id='n22428' href='#n22428'>22428</a>
<a id='n22429' href='#n22429'>22429</a>
<a id='n22430' href='#n22430'>22430</a>
<a id='n22431' href='#n22431'>22431</a>
<a id='n22432' href='#n22432'>22432</a>
<a id='n22433' href='#n22433'>22433</a>
<a id='n22434' href='#n22434'>22434</a>
<a id='n22435' href='#n22435'>22435</a>
<a id='n22436' href='#n22436'>22436</a>
<a id='n22437' href='#n22437'>22437</a>
<a id='n22438' href='#n22438'>22438</a>
<a id='n22439' href='#n22439'>22439</a>
<a id='n22440' href='#n22440'>22440</a>
<a id='n22441' href='#n22441'>22441</a>
<a id='n22442' href='#n22442'>22442</a>
<a id='n22443' href='#n22443'>22443</a>
<a id='n22444' href='#n22444'>22444</a>
<a id='n22445' href='#n22445'>22445</a>
<a id='n22446' href='#n22446'>22446</a>
<a id='n22447' href='#n22447'>22447</a>
<a id='n22448' href='#n22448'>22448</a>
<a id='n22449' href='#n22449'>22449</a>
<a id='n22450' href='#n22450'>22450</a>
<a id='n22451' href='#n22451'>22451</a>
<a id='n22452' href='#n22452'>22452</a>
<a id='n22453' href='#n22453'>22453</a>
<a id='n22454' href='#n22454'>22454</a>
<a id='n22455' href='#n22455'>22455</a>
<a id='n22456' href='#n22456'>22456</a>
<a id='n22457' href='#n22457'>22457</a>
<a id='n22458' href='#n22458'>22458</a>
<a id='n22459' href='#n22459'>22459</a>
<a id='n22460' href='#n22460'>22460</a>
<a id='n22461' href='#n22461'>22461</a>
<a id='n22462' href='#n22462'>22462</a>
<a id='n22463' href='#n22463'>22463</a>
<a id='n22464' href='#n22464'>22464</a>
<a id='n22465' href='#n22465'>22465</a>
<a id='n22466' href='#n22466'>22466</a>
<a id='n22467' href='#n22467'>22467</a>
<a id='n22468' href='#n22468'>22468</a>
<a id='n22469' href='#n22469'>22469</a>
<a id='n22470' href='#n22470'>22470</a>
<a id='n22471' href='#n22471'>22471</a>
<a id='n22472' href='#n22472'>22472</a>
<a id='n22473' href='#n22473'>22473</a>
<a id='n22474' href='#n22474'>22474</a>
<a id='n22475' href='#n22475'>22475</a>
<a id='n22476' href='#n22476'>22476</a>
<a id='n22477' href='#n22477'>22477</a>
<a id='n22478' href='#n22478'>22478</a>
<a id='n22479' href='#n22479'>22479</a>
<a id='n22480' href='#n22480'>22480</a>
<a id='n22481' href='#n22481'>22481</a>
<a id='n22482' href='#n22482'>22482</a>
<a id='n22483' href='#n22483'>22483</a>
<a id='n22484' href='#n22484'>22484</a>
<a id='n22485' href='#n22485'>22485</a>
<a id='n22486' href='#n22486'>22486</a>
<a id='n22487' href='#n22487'>22487</a>
<a id='n22488' href='#n22488'>22488</a>
<a id='n22489' href='#n22489'>22489</a>
<a id='n22490' href='#n22490'>22490</a>
<a id='n22491' href='#n22491'>22491</a>
<a id='n22492' href='#n22492'>22492</a>
<a id='n22493' href='#n22493'>22493</a>
<a id='n22494' href='#n22494'>22494</a>
<a id='n22495' href='#n22495'>22495</a>
<a id='n22496' href='#n22496'>22496</a>
<a id='n22497' href='#n22497'>22497</a>
<a id='n22498' href='#n22498'>22498</a>
<a id='n22499' href='#n22499'>22499</a>
<a id='n22500' href='#n22500'>22500</a>
<a id='n22501' href='#n22501'>22501</a>
<a id='n22502' href='#n22502'>22502</a>
<a id='n22503' href='#n22503'>22503</a>
<a id='n22504' href='#n22504'>22504</a>
<a id='n22505' href='#n22505'>22505</a>
<a id='n22506' href='#n22506'>22506</a>
<a id='n22507' href='#n22507'>22507</a>
<a id='n22508' href='#n22508'>22508</a>
<a id='n22509' href='#n22509'>22509</a>
<a id='n22510' href='#n22510'>22510</a>
<a id='n22511' href='#n22511'>22511</a>
<a id='n22512' href='#n22512'>22512</a>
<a id='n22513' href='#n22513'>22513</a>
<a id='n22514' href='#n22514'>22514</a>
<a id='n22515' href='#n22515'>22515</a>
<a id='n22516' href='#n22516'>22516</a>
<a id='n22517' href='#n22517'>22517</a>
<a id='n22518' href='#n22518'>22518</a>
<a id='n22519' href='#n22519'>22519</a>
<a id='n22520' href='#n22520'>22520</a>
<a id='n22521' href='#n22521'>22521</a>
<a id='n22522' href='#n22522'>22522</a>
<a id='n22523' href='#n22523'>22523</a>
<a id='n22524' href='#n22524'>22524</a>
<a id='n22525' href='#n22525'>22525</a>
<a id='n22526' href='#n22526'>22526</a>
<a id='n22527' href='#n22527'>22527</a>
<a id='n22528' href='#n22528'>22528</a>
<a id='n22529' href='#n22529'>22529</a>
<a id='n22530' href='#n22530'>22530</a>
<a id='n22531' href='#n22531'>22531</a>
<a id='n22532' href='#n22532'>22532</a>
<a id='n22533' href='#n22533'>22533</a>
<a id='n22534' href='#n22534'>22534</a>
<a id='n22535' href='#n22535'>22535</a>
<a id='n22536' href='#n22536'>22536</a>
<a id='n22537' href='#n22537'>22537</a>
<a id='n22538' href='#n22538'>22538</a>
<a id='n22539' href='#n22539'>22539</a>
<a id='n22540' href='#n22540'>22540</a>
<a id='n22541' href='#n22541'>22541</a>
<a id='n22542' href='#n22542'>22542</a>
<a id='n22543' href='#n22543'>22543</a>
<a id='n22544' href='#n22544'>22544</a>
<a id='n22545' href='#n22545'>22545</a>
<a id='n22546' href='#n22546'>22546</a>
<a id='n22547' href='#n22547'>22547</a>
<a id='n22548' href='#n22548'>22548</a>
<a id='n22549' href='#n22549'>22549</a>
<a id='n22550' href='#n22550'>22550</a>
<a id='n22551' href='#n22551'>22551</a>
<a id='n22552' href='#n22552'>22552</a>
<a id='n22553' href='#n22553'>22553</a>
<a id='n22554' href='#n22554'>22554</a>
<a id='n22555' href='#n22555'>22555</a>
<a id='n22556' href='#n22556'>22556</a>
<a id='n22557' href='#n22557'>22557</a>
<a id='n22558' href='#n22558'>22558</a>
<a id='n22559' href='#n22559'>22559</a>
<a id='n22560' href='#n22560'>22560</a>
<a id='n22561' href='#n22561'>22561</a>
<a id='n22562' href='#n22562'>22562</a>
<a id='n22563' href='#n22563'>22563</a>
<a id='n22564' href='#n22564'>22564</a>
<a id='n22565' href='#n22565'>22565</a>
<a id='n22566' href='#n22566'>22566</a>
<a id='n22567' href='#n22567'>22567</a>
<a id='n22568' href='#n22568'>22568</a>
<a id='n22569' href='#n22569'>22569</a>
<a id='n22570' href='#n22570'>22570</a>
<a id='n22571' href='#n22571'>22571</a>
<a id='n22572' href='#n22572'>22572</a>
<a id='n22573' href='#n22573'>22573</a>
<a id='n22574' href='#n22574'>22574</a>
<a id='n22575' href='#n22575'>22575</a>
<a id='n22576' href='#n22576'>22576</a>
<a id='n22577' href='#n22577'>22577</a>
<a id='n22578' href='#n22578'>22578</a>
<a id='n22579' href='#n22579'>22579</a>
<a id='n22580' href='#n22580'>22580</a>
<a id='n22581' href='#n22581'>22581</a>
<a id='n22582' href='#n22582'>22582</a>
<a id='n22583' href='#n22583'>22583</a>
<a id='n22584' href='#n22584'>22584</a>
<a id='n22585' href='#n22585'>22585</a>
<a id='n22586' href='#n22586'>22586</a>
<a id='n22587' href='#n22587'>22587</a>
<a id='n22588' href='#n22588'>22588</a>
<a id='n22589' href='#n22589'>22589</a>
<a id='n22590' href='#n22590'>22590</a>
<a id='n22591' href='#n22591'>22591</a>
<a id='n22592' href='#n22592'>22592</a>
<a id='n22593' href='#n22593'>22593</a>
<a id='n22594' href='#n22594'>22594</a>
<a id='n22595' href='#n22595'>22595</a>
<a id='n22596' href='#n22596'>22596</a>
<a id='n22597' href='#n22597'>22597</a>
<a id='n22598' href='#n22598'>22598</a>
<a id='n22599' href='#n22599'>22599</a>
<a id='n22600' href='#n22600'>22600</a>
<a id='n22601' href='#n22601'>22601</a>
<a id='n22602' href='#n22602'>22602</a>
<a id='n22603' href='#n22603'>22603</a>
<a id='n22604' href='#n22604'>22604</a>
<a id='n22605' href='#n22605'>22605</a>
<a id='n22606' href='#n22606'>22606</a>
<a id='n22607' href='#n22607'>22607</a>
<a id='n22608' href='#n22608'>22608</a>
<a id='n22609' href='#n22609'>22609</a>
<a id='n22610' href='#n22610'>22610</a>
<a id='n22611' href='#n22611'>22611</a>
<a id='n22612' href='#n22612'>22612</a>
<a id='n22613' href='#n22613'>22613</a>
<a id='n22614' href='#n22614'>22614</a>
<a id='n22615' href='#n22615'>22615</a>
<a id='n22616' href='#n22616'>22616</a>
<a id='n22617' href='#n22617'>22617</a>
<a id='n22618' href='#n22618'>22618</a>
<a id='n22619' href='#n22619'>22619</a>
<a id='n22620' href='#n22620'>22620</a>
<a id='n22621' href='#n22621'>22621</a>
<a id='n22622' href='#n22622'>22622</a>
<a id='n22623' href='#n22623'>22623</a>
<a id='n22624' href='#n22624'>22624</a>
<a id='n22625' href='#n22625'>22625</a>
<a id='n22626' href='#n22626'>22626</a>
<a id='n22627' href='#n22627'>22627</a>
<a id='n22628' href='#n22628'>22628</a>
<a id='n22629' href='#n22629'>22629</a>
<a id='n22630' href='#n22630'>22630</a>
<a id='n22631' href='#n22631'>22631</a>
<a id='n22632' href='#n22632'>22632</a>
<a id='n22633' href='#n22633'>22633</a>
<a id='n22634' href='#n22634'>22634</a>
<a id='n22635' href='#n22635'>22635</a>
<a id='n22636' href='#n22636'>22636</a>
<a id='n22637' href='#n22637'>22637</a>
<a id='n22638' href='#n22638'>22638</a>
<a id='n22639' href='#n22639'>22639</a>
<a id='n22640' href='#n22640'>22640</a>
<a id='n22641' href='#n22641'>22641</a>
<a id='n22642' href='#n22642'>22642</a>
<a id='n22643' href='#n22643'>22643</a>
<a id='n22644' href='#n22644'>22644</a>
<a id='n22645' href='#n22645'>22645</a>
<a id='n22646' href='#n22646'>22646</a>
<a id='n22647' href='#n22647'>22647</a>
<a id='n22648' href='#n22648'>22648</a>
<a id='n22649' href='#n22649'>22649</a>
<a id='n22650' href='#n22650'>22650</a>
<a id='n22651' href='#n22651'>22651</a>
<a id='n22652' href='#n22652'>22652</a>
<a id='n22653' href='#n22653'>22653</a>
<a id='n22654' href='#n22654'>22654</a>
<a id='n22655' href='#n22655'>22655</a>
<a id='n22656' href='#n22656'>22656</a>
<a id='n22657' href='#n22657'>22657</a>
<a id='n22658' href='#n22658'>22658</a>
<a id='n22659' href='#n22659'>22659</a>
<a id='n22660' href='#n22660'>22660</a>
<a id='n22661' href='#n22661'>22661</a>
<a id='n22662' href='#n22662'>22662</a>
<a id='n22663' href='#n22663'>22663</a>
<a id='n22664' href='#n22664'>22664</a>
<a id='n22665' href='#n22665'>22665</a>
<a id='n22666' href='#n22666'>22666</a>
<a id='n22667' href='#n22667'>22667</a>
<a id='n22668' href='#n22668'>22668</a>
<a id='n22669' href='#n22669'>22669</a>
<a id='n22670' href='#n22670'>22670</a>
<a id='n22671' href='#n22671'>22671</a>
<a id='n22672' href='#n22672'>22672</a>
<a id='n22673' href='#n22673'>22673</a>
<a id='n22674' href='#n22674'>22674</a>
<a id='n22675' href='#n22675'>22675</a>
<a id='n22676' href='#n22676'>22676</a>
<a id='n22677' href='#n22677'>22677</a>
<a id='n22678' href='#n22678'>22678</a>
<a id='n22679' href='#n22679'>22679</a>
<a id='n22680' href='#n22680'>22680</a>
<a id='n22681' href='#n22681'>22681</a>
<a id='n22682' href='#n22682'>22682</a>
<a id='n22683' href='#n22683'>22683</a>
<a id='n22684' href='#n22684'>22684</a>
<a id='n22685' href='#n22685'>22685</a>
<a id='n22686' href='#n22686'>22686</a>
<a id='n22687' href='#n22687'>22687</a>
<a id='n22688' href='#n22688'>22688</a>
<a id='n22689' href='#n22689'>22689</a>
<a id='n22690' href='#n22690'>22690</a>
<a id='n22691' href='#n22691'>22691</a>
<a id='n22692' href='#n22692'>22692</a>
<a id='n22693' href='#n22693'>22693</a>
<a id='n22694' href='#n22694'>22694</a>
<a id='n22695' href='#n22695'>22695</a>
<a id='n22696' href='#n22696'>22696</a>
<a id='n22697' href='#n22697'>22697</a>
<a id='n22698' href='#n22698'>22698</a>
<a id='n22699' href='#n22699'>22699</a>
<a id='n22700' href='#n22700'>22700</a>
<a id='n22701' href='#n22701'>22701</a>
<a id='n22702' href='#n22702'>22702</a>
<a id='n22703' href='#n22703'>22703</a>
<a id='n22704' href='#n22704'>22704</a>
<a id='n22705' href='#n22705'>22705</a>
<a id='n22706' href='#n22706'>22706</a>
<a id='n22707' href='#n22707'>22707</a>
<a id='n22708' href='#n22708'>22708</a>
<a id='n22709' href='#n22709'>22709</a>
<a id='n22710' href='#n22710'>22710</a>
<a id='n22711' href='#n22711'>22711</a>
<a id='n22712' href='#n22712'>22712</a>
<a id='n22713' href='#n22713'>22713</a>
<a id='n22714' href='#n22714'>22714</a>
<a id='n22715' href='#n22715'>22715</a>
<a id='n22716' href='#n22716'>22716</a>
<a id='n22717' href='#n22717'>22717</a>
<a id='n22718' href='#n22718'>22718</a>
<a id='n22719' href='#n22719'>22719</a>
<a id='n22720' href='#n22720'>22720</a>
<a id='n22721' href='#n22721'>22721</a>
<a id='n22722' href='#n22722'>22722</a>
<a id='n22723' href='#n22723'>22723</a>
<a id='n22724' href='#n22724'>22724</a>
<a id='n22725' href='#n22725'>22725</a>
<a id='n22726' href='#n22726'>22726</a>
<a id='n22727' href='#n22727'>22727</a>
<a id='n22728' href='#n22728'>22728</a>
<a id='n22729' href='#n22729'>22729</a>
<a id='n22730' href='#n22730'>22730</a>
<a id='n22731' href='#n22731'>22731</a>
<a id='n22732' href='#n22732'>22732</a>
<a id='n22733' href='#n22733'>22733</a>
<a id='n22734' href='#n22734'>22734</a>
<a id='n22735' href='#n22735'>22735</a>
<a id='n22736' href='#n22736'>22736</a>
<a id='n22737' href='#n22737'>22737</a>
<a id='n22738' href='#n22738'>22738</a>
<a id='n22739' href='#n22739'>22739</a>
<a id='n22740' href='#n22740'>22740</a>
<a id='n22741' href='#n22741'>22741</a>
<a id='n22742' href='#n22742'>22742</a>
<a id='n22743' href='#n22743'>22743</a>
<a id='n22744' href='#n22744'>22744</a>
<a id='n22745' href='#n22745'>22745</a>
<a id='n22746' href='#n22746'>22746</a>
<a id='n22747' href='#n22747'>22747</a>
<a id='n22748' href='#n22748'>22748</a>
<a id='n22749' href='#n22749'>22749</a>
<a id='n22750' href='#n22750'>22750</a>
<a id='n22751' href='#n22751'>22751</a>
<a id='n22752' href='#n22752'>22752</a>
<a id='n22753' href='#n22753'>22753</a>
<a id='n22754' href='#n22754'>22754</a>
<a id='n22755' href='#n22755'>22755</a>
<a id='n22756' href='#n22756'>22756</a>
<a id='n22757' href='#n22757'>22757</a>
<a id='n22758' href='#n22758'>22758</a>
<a id='n22759' href='#n22759'>22759</a>
<a id='n22760' href='#n22760'>22760</a>
<a id='n22761' href='#n22761'>22761</a>
<a id='n22762' href='#n22762'>22762</a>
<a id='n22763' href='#n22763'>22763</a>
<a id='n22764' href='#n22764'>22764</a>
<a id='n22765' href='#n22765'>22765</a>
<a id='n22766' href='#n22766'>22766</a>
<a id='n22767' href='#n22767'>22767</a>
<a id='n22768' href='#n22768'>22768</a>
<a id='n22769' href='#n22769'>22769</a>
<a id='n22770' href='#n22770'>22770</a>
<a id='n22771' href='#n22771'>22771</a>
<a id='n22772' href='#n22772'>22772</a>
<a id='n22773' href='#n22773'>22773</a>
<a id='n22774' href='#n22774'>22774</a>
<a id='n22775' href='#n22775'>22775</a>
<a id='n22776' href='#n22776'>22776</a>
<a id='n22777' href='#n22777'>22777</a>
<a id='n22778' href='#n22778'>22778</a>
<a id='n22779' href='#n22779'>22779</a>
<a id='n22780' href='#n22780'>22780</a>
<a id='n22781' href='#n22781'>22781</a>
<a id='n22782' href='#n22782'>22782</a>
<a id='n22783' href='#n22783'>22783</a>
<a id='n22784' href='#n22784'>22784</a>
<a id='n22785' href='#n22785'>22785</a>
<a id='n22786' href='#n22786'>22786</a>
<a id='n22787' href='#n22787'>22787</a>
<a id='n22788' href='#n22788'>22788</a>
<a id='n22789' href='#n22789'>22789</a>
<a id='n22790' href='#n22790'>22790</a>
<a id='n22791' href='#n22791'>22791</a>
<a id='n22792' href='#n22792'>22792</a>
<a id='n22793' href='#n22793'>22793</a>
<a id='n22794' href='#n22794'>22794</a>
<a id='n22795' href='#n22795'>22795</a>
<a id='n22796' href='#n22796'>22796</a>
<a id='n22797' href='#n22797'>22797</a>
<a id='n22798' href='#n22798'>22798</a>
<a id='n22799' href='#n22799'>22799</a>
<a id='n22800' href='#n22800'>22800</a>
<a id='n22801' href='#n22801'>22801</a>
<a id='n22802' href='#n22802'>22802</a>
<a id='n22803' href='#n22803'>22803</a>
<a id='n22804' href='#n22804'>22804</a>
<a id='n22805' href='#n22805'>22805</a>
<a id='n22806' href='#n22806'>22806</a>
<a id='n22807' href='#n22807'>22807</a>
<a id='n22808' href='#n22808'>22808</a>
<a id='n22809' href='#n22809'>22809</a>
<a id='n22810' href='#n22810'>22810</a>
<a id='n22811' href='#n22811'>22811</a>
<a id='n22812' href='#n22812'>22812</a>
<a id='n22813' href='#n22813'>22813</a>
<a id='n22814' href='#n22814'>22814</a>
<a id='n22815' href='#n22815'>22815</a>
<a id='n22816' href='#n22816'>22816</a>
<a id='n22817' href='#n22817'>22817</a>
<a id='n22818' href='#n22818'>22818</a>
<a id='n22819' href='#n22819'>22819</a>
<a id='n22820' href='#n22820'>22820</a>
<a id='n22821' href='#n22821'>22821</a>
<a id='n22822' href='#n22822'>22822</a>
<a id='n22823' href='#n22823'>22823</a>
<a id='n22824' href='#n22824'>22824</a>
<a id='n22825' href='#n22825'>22825</a>
<a id='n22826' href='#n22826'>22826</a>
<a id='n22827' href='#n22827'>22827</a>
<a id='n22828' href='#n22828'>22828</a>
<a id='n22829' href='#n22829'>22829</a>
<a id='n22830' href='#n22830'>22830</a>
<a id='n22831' href='#n22831'>22831</a>
<a id='n22832' href='#n22832'>22832</a>
<a id='n22833' href='#n22833'>22833</a>
<a id='n22834' href='#n22834'>22834</a>
<a id='n22835' href='#n22835'>22835</a>
<a id='n22836' href='#n22836'>22836</a>
<a id='n22837' href='#n22837'>22837</a>
<a id='n22838' href='#n22838'>22838</a>
<a id='n22839' href='#n22839'>22839</a>
<a id='n22840' href='#n22840'>22840</a>
<a id='n22841' href='#n22841'>22841</a>
<a id='n22842' href='#n22842'>22842</a>
<a id='n22843' href='#n22843'>22843</a>
<a id='n22844' href='#n22844'>22844</a>
<a id='n22845' href='#n22845'>22845</a>
<a id='n22846' href='#n22846'>22846</a>
<a id='n22847' href='#n22847'>22847</a>
<a id='n22848' href='#n22848'>22848</a>
<a id='n22849' href='#n22849'>22849</a>
<a id='n22850' href='#n22850'>22850</a>
<a id='n22851' href='#n22851'>22851</a>
<a id='n22852' href='#n22852'>22852</a>
<a id='n22853' href='#n22853'>22853</a>
<a id='n22854' href='#n22854'>22854</a>
<a id='n22855' href='#n22855'>22855</a>
<a id='n22856' href='#n22856'>22856</a>
<a id='n22857' href='#n22857'>22857</a>
<a id='n22858' href='#n22858'>22858</a>
<a id='n22859' href='#n22859'>22859</a>
<a id='n22860' href='#n22860'>22860</a>
<a id='n22861' href='#n22861'>22861</a>
<a id='n22862' href='#n22862'>22862</a>
<a id='n22863' href='#n22863'>22863</a>
<a id='n22864' href='#n22864'>22864</a>
<a id='n22865' href='#n22865'>22865</a>
<a id='n22866' href='#n22866'>22866</a>
<a id='n22867' href='#n22867'>22867</a>
<a id='n22868' href='#n22868'>22868</a>
<a id='n22869' href='#n22869'>22869</a>
<a id='n22870' href='#n22870'>22870</a>
<a id='n22871' href='#n22871'>22871</a>
<a id='n22872' href='#n22872'>22872</a>
<a id='n22873' href='#n22873'>22873</a>
<a id='n22874' href='#n22874'>22874</a>
<a id='n22875' href='#n22875'>22875</a>
<a id='n22876' href='#n22876'>22876</a>
<a id='n22877' href='#n22877'>22877</a>
<a id='n22878' href='#n22878'>22878</a>
<a id='n22879' href='#n22879'>22879</a>
<a id='n22880' href='#n22880'>22880</a>
<a id='n22881' href='#n22881'>22881</a>
<a id='n22882' href='#n22882'>22882</a>
<a id='n22883' href='#n22883'>22883</a>
<a id='n22884' href='#n22884'>22884</a>
<a id='n22885' href='#n22885'>22885</a>
<a id='n22886' href='#n22886'>22886</a>
<a id='n22887' href='#n22887'>22887</a>
<a id='n22888' href='#n22888'>22888</a>
<a id='n22889' href='#n22889'>22889</a>
<a id='n22890' href='#n22890'>22890</a>
<a id='n22891' href='#n22891'>22891</a>
<a id='n22892' href='#n22892'>22892</a>
<a id='n22893' href='#n22893'>22893</a>
<a id='n22894' href='#n22894'>22894</a>
<a id='n22895' href='#n22895'>22895</a>
<a id='n22896' href='#n22896'>22896</a>
<a id='n22897' href='#n22897'>22897</a>
<a id='n22898' href='#n22898'>22898</a>
<a id='n22899' href='#n22899'>22899</a>
<a id='n22900' href='#n22900'>22900</a>
<a id='n22901' href='#n22901'>22901</a>
<a id='n22902' href='#n22902'>22902</a>
<a id='n22903' href='#n22903'>22903</a>
<a id='n22904' href='#n22904'>22904</a>
<a id='n22905' href='#n22905'>22905</a>
<a id='n22906' href='#n22906'>22906</a>
<a id='n22907' href='#n22907'>22907</a>
<a id='n22908' href='#n22908'>22908</a>
<a id='n22909' href='#n22909'>22909</a>
<a id='n22910' href='#n22910'>22910</a>
<a id='n22911' href='#n22911'>22911</a>
<a id='n22912' href='#n22912'>22912</a>
<a id='n22913' href='#n22913'>22913</a>
<a id='n22914' href='#n22914'>22914</a>
<a id='n22915' href='#n22915'>22915</a>
<a id='n22916' href='#n22916'>22916</a>
<a id='n22917' href='#n22917'>22917</a>
<a id='n22918' href='#n22918'>22918</a>
<a id='n22919' href='#n22919'>22919</a>
<a id='n22920' href='#n22920'>22920</a>
<a id='n22921' href='#n22921'>22921</a>
<a id='n22922' href='#n22922'>22922</a>
<a id='n22923' href='#n22923'>22923</a>
<a id='n22924' href='#n22924'>22924</a>
<a id='n22925' href='#n22925'>22925</a>
<a id='n22926' href='#n22926'>22926</a>
<a id='n22927' href='#n22927'>22927</a>
<a id='n22928' href='#n22928'>22928</a>
<a id='n22929' href='#n22929'>22929</a>
<a id='n22930' href='#n22930'>22930</a>
<a id='n22931' href='#n22931'>22931</a>
<a id='n22932' href='#n22932'>22932</a>
<a id='n22933' href='#n22933'>22933</a>
<a id='n22934' href='#n22934'>22934</a>
<a id='n22935' href='#n22935'>22935</a>
<a id='n22936' href='#n22936'>22936</a>
<a id='n22937' href='#n22937'>22937</a>
<a id='n22938' href='#n22938'>22938</a>
<a id='n22939' href='#n22939'>22939</a>
<a id='n22940' href='#n22940'>22940</a>
<a id='n22941' href='#n22941'>22941</a>
<a id='n22942' href='#n22942'>22942</a>
<a id='n22943' href='#n22943'>22943</a>
<a id='n22944' href='#n22944'>22944</a>
<a id='n22945' href='#n22945'>22945</a>
<a id='n22946' href='#n22946'>22946</a>
<a id='n22947' href='#n22947'>22947</a>
<a id='n22948' href='#n22948'>22948</a>
<a id='n22949' href='#n22949'>22949</a>
<a id='n22950' href='#n22950'>22950</a>
<a id='n22951' href='#n22951'>22951</a>
<a id='n22952' href='#n22952'>22952</a>
<a id='n22953' href='#n22953'>22953</a>
<a id='n22954' href='#n22954'>22954</a>
<a id='n22955' href='#n22955'>22955</a>
<a id='n22956' href='#n22956'>22956</a>
<a id='n22957' href='#n22957'>22957</a>
<a id='n22958' href='#n22958'>22958</a>
<a id='n22959' href='#n22959'>22959</a>
<a id='n22960' href='#n22960'>22960</a>
<a id='n22961' href='#n22961'>22961</a>
<a id='n22962' href='#n22962'>22962</a>
<a id='n22963' href='#n22963'>22963</a>
<a id='n22964' href='#n22964'>22964</a>
<a id='n22965' href='#n22965'>22965</a>
<a id='n22966' href='#n22966'>22966</a>
<a id='n22967' href='#n22967'>22967</a>
<a id='n22968' href='#n22968'>22968</a>
<a id='n22969' href='#n22969'>22969</a>
<a id='n22970' href='#n22970'>22970</a>
<a id='n22971' href='#n22971'>22971</a>
<a id='n22972' href='#n22972'>22972</a>
<a id='n22973' href='#n22973'>22973</a>
<a id='n22974' href='#n22974'>22974</a>
<a id='n22975' href='#n22975'>22975</a>
<a id='n22976' href='#n22976'>22976</a>
<a id='n22977' href='#n22977'>22977</a>
<a id='n22978' href='#n22978'>22978</a>
<a id='n22979' href='#n22979'>22979</a>
<a id='n22980' href='#n22980'>22980</a>
<a id='n22981' href='#n22981'>22981</a>
<a id='n22982' href='#n22982'>22982</a>
<a id='n22983' href='#n22983'>22983</a>
<a id='n22984' href='#n22984'>22984</a>
<a id='n22985' href='#n22985'>22985</a>
<a id='n22986' href='#n22986'>22986</a>
<a id='n22987' href='#n22987'>22987</a>
<a id='n22988' href='#n22988'>22988</a>
<a id='n22989' href='#n22989'>22989</a>
<a id='n22990' href='#n22990'>22990</a>
<a id='n22991' href='#n22991'>22991</a>
<a id='n22992' href='#n22992'>22992</a>
<a id='n22993' href='#n22993'>22993</a>
<a id='n22994' href='#n22994'>22994</a>
<a id='n22995' href='#n22995'>22995</a>
<a id='n22996' href='#n22996'>22996</a>
<a id='n22997' href='#n22997'>22997</a>
<a id='n22998' href='#n22998'>22998</a>
<a id='n22999' href='#n22999'>22999</a>
<a id='n23000' href='#n23000'>23000</a>
<a id='n23001' href='#n23001'>23001</a>
<a id='n23002' href='#n23002'>23002</a>
<a id='n23003' href='#n23003'>23003</a>
<a id='n23004' href='#n23004'>23004</a>
<a id='n23005' href='#n23005'>23005</a>
<a id='n23006' href='#n23006'>23006</a>
<a id='n23007' href='#n23007'>23007</a>
<a id='n23008' href='#n23008'>23008</a>
<a id='n23009' href='#n23009'>23009</a>
<a id='n23010' href='#n23010'>23010</a>
<a id='n23011' href='#n23011'>23011</a>
<a id='n23012' href='#n23012'>23012</a>
<a id='n23013' href='#n23013'>23013</a>
<a id='n23014' href='#n23014'>23014</a>
<a id='n23015' href='#n23015'>23015</a>
<a id='n23016' href='#n23016'>23016</a>
<a id='n23017' href='#n23017'>23017</a>
<a id='n23018' href='#n23018'>23018</a>
<a id='n23019' href='#n23019'>23019</a>
<a id='n23020' href='#n23020'>23020</a>
<a id='n23021' href='#n23021'>23021</a>
<a id='n23022' href='#n23022'>23022</a>
<a id='n23023' href='#n23023'>23023</a>
<a id='n23024' href='#n23024'>23024</a>
<a id='n23025' href='#n23025'>23025</a>
<a id='n23026' href='#n23026'>23026</a>
<a id='n23027' href='#n23027'>23027</a>
<a id='n23028' href='#n23028'>23028</a>
<a id='n23029' href='#n23029'>23029</a>
<a id='n23030' href='#n23030'>23030</a>
<a id='n23031' href='#n23031'>23031</a>
<a id='n23032' href='#n23032'>23032</a>
<a id='n23033' href='#n23033'>23033</a>
<a id='n23034' href='#n23034'>23034</a>
<a id='n23035' href='#n23035'>23035</a>
<a id='n23036' href='#n23036'>23036</a>
<a id='n23037' href='#n23037'>23037</a>
<a id='n23038' href='#n23038'>23038</a>
<a id='n23039' href='#n23039'>23039</a>
<a id='n23040' href='#n23040'>23040</a>
<a id='n23041' href='#n23041'>23041</a>
<a id='n23042' href='#n23042'>23042</a>
<a id='n23043' href='#n23043'>23043</a>
<a id='n23044' href='#n23044'>23044</a>
<a id='n23045' href='#n23045'>23045</a>
<a id='n23046' href='#n23046'>23046</a>
<a id='n23047' href='#n23047'>23047</a>
<a id='n23048' href='#n23048'>23048</a>
<a id='n23049' href='#n23049'>23049</a>
<a id='n23050' href='#n23050'>23050</a>
<a id='n23051' href='#n23051'>23051</a>
<a id='n23052' href='#n23052'>23052</a>
<a id='n23053' href='#n23053'>23053</a>
<a id='n23054' href='#n23054'>23054</a>
<a id='n23055' href='#n23055'>23055</a>
<a id='n23056' href='#n23056'>23056</a>
<a id='n23057' href='#n23057'>23057</a>
<a id='n23058' href='#n23058'>23058</a>
<a id='n23059' href='#n23059'>23059</a>
<a id='n23060' href='#n23060'>23060</a>
<a id='n23061' href='#n23061'>23061</a>
<a id='n23062' href='#n23062'>23062</a>
<a id='n23063' href='#n23063'>23063</a>
<a id='n23064' href='#n23064'>23064</a>
<a id='n23065' href='#n23065'>23065</a>
<a id='n23066' href='#n23066'>23066</a>
<a id='n23067' href='#n23067'>23067</a>
<a id='n23068' href='#n23068'>23068</a>
<a id='n23069' href='#n23069'>23069</a>
<a id='n23070' href='#n23070'>23070</a>
<a id='n23071' href='#n23071'>23071</a>
<a id='n23072' href='#n23072'>23072</a>
<a id='n23073' href='#n23073'>23073</a>
<a id='n23074' href='#n23074'>23074</a>
<a id='n23075' href='#n23075'>23075</a>
<a id='n23076' href='#n23076'>23076</a>
<a id='n23077' href='#n23077'>23077</a>
<a id='n23078' href='#n23078'>23078</a>
<a id='n23079' href='#n23079'>23079</a>
<a id='n23080' href='#n23080'>23080</a>
<a id='n23081' href='#n23081'>23081</a>
<a id='n23082' href='#n23082'>23082</a>
<a id='n23083' href='#n23083'>23083</a>
<a id='n23084' href='#n23084'>23084</a>
<a id='n23085' href='#n23085'>23085</a>
<a id='n23086' href='#n23086'>23086</a>
<a id='n23087' href='#n23087'>23087</a>
<a id='n23088' href='#n23088'>23088</a>
<a id='n23089' href='#n23089'>23089</a>
<a id='n23090' href='#n23090'>23090</a>
<a id='n23091' href='#n23091'>23091</a>
<a id='n23092' href='#n23092'>23092</a>
<a id='n23093' href='#n23093'>23093</a>
<a id='n23094' href='#n23094'>23094</a>
<a id='n23095' href='#n23095'>23095</a>
<a id='n23096' href='#n23096'>23096</a>
<a id='n23097' href='#n23097'>23097</a>
<a id='n23098' href='#n23098'>23098</a>
<a id='n23099' href='#n23099'>23099</a>
<a id='n23100' href='#n23100'>23100</a>
<a id='n23101' href='#n23101'>23101</a>
<a id='n23102' href='#n23102'>23102</a>
<a id='n23103' href='#n23103'>23103</a>
<a id='n23104' href='#n23104'>23104</a>
<a id='n23105' href='#n23105'>23105</a>
<a id='n23106' href='#n23106'>23106</a>
<a id='n23107' href='#n23107'>23107</a>
<a id='n23108' href='#n23108'>23108</a>
<a id='n23109' href='#n23109'>23109</a>
<a id='n23110' href='#n23110'>23110</a>
<a id='n23111' href='#n23111'>23111</a>
<a id='n23112' href='#n23112'>23112</a>
<a id='n23113' href='#n23113'>23113</a>
<a id='n23114' href='#n23114'>23114</a>
<a id='n23115' href='#n23115'>23115</a>
<a id='n23116' href='#n23116'>23116</a>
<a id='n23117' href='#n23117'>23117</a>
<a id='n23118' href='#n23118'>23118</a>
<a id='n23119' href='#n23119'>23119</a>
<a id='n23120' href='#n23120'>23120</a>
<a id='n23121' href='#n23121'>23121</a>
<a id='n23122' href='#n23122'>23122</a>
<a id='n23123' href='#n23123'>23123</a>
<a id='n23124' href='#n23124'>23124</a>
<a id='n23125' href='#n23125'>23125</a>
<a id='n23126' href='#n23126'>23126</a>
<a id='n23127' href='#n23127'>23127</a>
<a id='n23128' href='#n23128'>23128</a>
<a id='n23129' href='#n23129'>23129</a>
<a id='n23130' href='#n23130'>23130</a>
<a id='n23131' href='#n23131'>23131</a>
<a id='n23132' href='#n23132'>23132</a>
<a id='n23133' href='#n23133'>23133</a>
<a id='n23134' href='#n23134'>23134</a>
<a id='n23135' href='#n23135'>23135</a>
<a id='n23136' href='#n23136'>23136</a>
<a id='n23137' href='#n23137'>23137</a>
<a id='n23138' href='#n23138'>23138</a>
<a id='n23139' href='#n23139'>23139</a>
<a id='n23140' href='#n23140'>23140</a>
<a id='n23141' href='#n23141'>23141</a>
<a id='n23142' href='#n23142'>23142</a>
<a id='n23143' href='#n23143'>23143</a>
<a id='n23144' href='#n23144'>23144</a>
<a id='n23145' href='#n23145'>23145</a>
<a id='n23146' href='#n23146'>23146</a>
<a id='n23147' href='#n23147'>23147</a>
<a id='n23148' href='#n23148'>23148</a>
<a id='n23149' href='#n23149'>23149</a>
<a id='n23150' href='#n23150'>23150</a>
<a id='n23151' href='#n23151'>23151</a>
<a id='n23152' href='#n23152'>23152</a>
<a id='n23153' href='#n23153'>23153</a>
<a id='n23154' href='#n23154'>23154</a>
<a id='n23155' href='#n23155'>23155</a>
<a id='n23156' href='#n23156'>23156</a>
<a id='n23157' href='#n23157'>23157</a>
<a id='n23158' href='#n23158'>23158</a>
<a id='n23159' href='#n23159'>23159</a>
<a id='n23160' href='#n23160'>23160</a>
<a id='n23161' href='#n23161'>23161</a>
<a id='n23162' href='#n23162'>23162</a>
<a id='n23163' href='#n23163'>23163</a>
<a id='n23164' href='#n23164'>23164</a>
<a id='n23165' href='#n23165'>23165</a>
<a id='n23166' href='#n23166'>23166</a>
<a id='n23167' href='#n23167'>23167</a>
<a id='n23168' href='#n23168'>23168</a>
<a id='n23169' href='#n23169'>23169</a>
<a id='n23170' href='#n23170'>23170</a>
<a id='n23171' href='#n23171'>23171</a>
<a id='n23172' href='#n23172'>23172</a>
<a id='n23173' href='#n23173'>23173</a>
<a id='n23174' href='#n23174'>23174</a>
<a id='n23175' href='#n23175'>23175</a>
<a id='n23176' href='#n23176'>23176</a>
<a id='n23177' href='#n23177'>23177</a>
<a id='n23178' href='#n23178'>23178</a>
<a id='n23179' href='#n23179'>23179</a>
<a id='n23180' href='#n23180'>23180</a>
<a id='n23181' href='#n23181'>23181</a>
<a id='n23182' href='#n23182'>23182</a>
<a id='n23183' href='#n23183'>23183</a>
<a id='n23184' href='#n23184'>23184</a>
<a id='n23185' href='#n23185'>23185</a>
<a id='n23186' href='#n23186'>23186</a>
<a id='n23187' href='#n23187'>23187</a>
<a id='n23188' href='#n23188'>23188</a>
<a id='n23189' href='#n23189'>23189</a>
<a id='n23190' href='#n23190'>23190</a>
<a id='n23191' href='#n23191'>23191</a>
<a id='n23192' href='#n23192'>23192</a>
<a id='n23193' href='#n23193'>23193</a>
<a id='n23194' href='#n23194'>23194</a>
<a id='n23195' href='#n23195'>23195</a>
<a id='n23196' href='#n23196'>23196</a>
<a id='n23197' href='#n23197'>23197</a>
<a id='n23198' href='#n23198'>23198</a>
<a id='n23199' href='#n23199'>23199</a>
<a id='n23200' href='#n23200'>23200</a>
<a id='n23201' href='#n23201'>23201</a>
<a id='n23202' href='#n23202'>23202</a>
<a id='n23203' href='#n23203'>23203</a>
<a id='n23204' href='#n23204'>23204</a>
<a id='n23205' href='#n23205'>23205</a>
<a id='n23206' href='#n23206'>23206</a>
<a id='n23207' href='#n23207'>23207</a>
<a id='n23208' href='#n23208'>23208</a>
<a id='n23209' href='#n23209'>23209</a>
<a id='n23210' href='#n23210'>23210</a>
<a id='n23211' href='#n23211'>23211</a>
<a id='n23212' href='#n23212'>23212</a>
<a id='n23213' href='#n23213'>23213</a>
<a id='n23214' href='#n23214'>23214</a>
<a id='n23215' href='#n23215'>23215</a>
<a id='n23216' href='#n23216'>23216</a>
<a id='n23217' href='#n23217'>23217</a>
<a id='n23218' href='#n23218'>23218</a>
<a id='n23219' href='#n23219'>23219</a>
<a id='n23220' href='#n23220'>23220</a>
<a id='n23221' href='#n23221'>23221</a>
<a id='n23222' href='#n23222'>23222</a>
<a id='n23223' href='#n23223'>23223</a>
<a id='n23224' href='#n23224'>23224</a>
<a id='n23225' href='#n23225'>23225</a>
<a id='n23226' href='#n23226'>23226</a>
<a id='n23227' href='#n23227'>23227</a>
<a id='n23228' href='#n23228'>23228</a>
<a id='n23229' href='#n23229'>23229</a>
<a id='n23230' href='#n23230'>23230</a>
<a id='n23231' href='#n23231'>23231</a>
<a id='n23232' href='#n23232'>23232</a>
<a id='n23233' href='#n23233'>23233</a>
<a id='n23234' href='#n23234'>23234</a>
<a id='n23235' href='#n23235'>23235</a>
<a id='n23236' href='#n23236'>23236</a>
<a id='n23237' href='#n23237'>23237</a>
<a id='n23238' href='#n23238'>23238</a>
<a id='n23239' href='#n23239'>23239</a>
<a id='n23240' href='#n23240'>23240</a>
<a id='n23241' href='#n23241'>23241</a>
<a id='n23242' href='#n23242'>23242</a>
<a id='n23243' href='#n23243'>23243</a>
<a id='n23244' href='#n23244'>23244</a>
<a id='n23245' href='#n23245'>23245</a>
<a id='n23246' href='#n23246'>23246</a>
<a id='n23247' href='#n23247'>23247</a>
<a id='n23248' href='#n23248'>23248</a>
<a id='n23249' href='#n23249'>23249</a>
<a id='n23250' href='#n23250'>23250</a>
<a id='n23251' href='#n23251'>23251</a>
<a id='n23252' href='#n23252'>23252</a>
<a id='n23253' href='#n23253'>23253</a>
<a id='n23254' href='#n23254'>23254</a>
<a id='n23255' href='#n23255'>23255</a>
<a id='n23256' href='#n23256'>23256</a>
<a id='n23257' href='#n23257'>23257</a>
<a id='n23258' href='#n23258'>23258</a>
<a id='n23259' href='#n23259'>23259</a>
<a id='n23260' href='#n23260'>23260</a>
<a id='n23261' href='#n23261'>23261</a>
<a id='n23262' href='#n23262'>23262</a>
<a id='n23263' href='#n23263'>23263</a>
<a id='n23264' href='#n23264'>23264</a>
<a id='n23265' href='#n23265'>23265</a>
<a id='n23266' href='#n23266'>23266</a>
<a id='n23267' href='#n23267'>23267</a>
<a id='n23268' href='#n23268'>23268</a>
<a id='n23269' href='#n23269'>23269</a>
<a id='n23270' href='#n23270'>23270</a>
<a id='n23271' href='#n23271'>23271</a>
<a id='n23272' href='#n23272'>23272</a>
<a id='n23273' href='#n23273'>23273</a>
<a id='n23274' href='#n23274'>23274</a>
<a id='n23275' href='#n23275'>23275</a>
<a id='n23276' href='#n23276'>23276</a>
<a id='n23277' href='#n23277'>23277</a>
<a id='n23278' href='#n23278'>23278</a>
<a id='n23279' href='#n23279'>23279</a>
<a id='n23280' href='#n23280'>23280</a>
<a id='n23281' href='#n23281'>23281</a>
<a id='n23282' href='#n23282'>23282</a>
<a id='n23283' href='#n23283'>23283</a>
<a id='n23284' href='#n23284'>23284</a>
<a id='n23285' href='#n23285'>23285</a>
<a id='n23286' href='#n23286'>23286</a>
<a id='n23287' href='#n23287'>23287</a>
<a id='n23288' href='#n23288'>23288</a>
<a id='n23289' href='#n23289'>23289</a>
<a id='n23290' href='#n23290'>23290</a>
<a id='n23291' href='#n23291'>23291</a>
<a id='n23292' href='#n23292'>23292</a>
<a id='n23293' href='#n23293'>23293</a>
<a id='n23294' href='#n23294'>23294</a>
<a id='n23295' href='#n23295'>23295</a>
<a id='n23296' href='#n23296'>23296</a>
<a id='n23297' href='#n23297'>23297</a>
<a id='n23298' href='#n23298'>23298</a>
<a id='n23299' href='#n23299'>23299</a>
<a id='n23300' href='#n23300'>23300</a>
<a id='n23301' href='#n23301'>23301</a>
<a id='n23302' href='#n23302'>23302</a>
<a id='n23303' href='#n23303'>23303</a>
<a id='n23304' href='#n23304'>23304</a>
<a id='n23305' href='#n23305'>23305</a>
<a id='n23306' href='#n23306'>23306</a>
<a id='n23307' href='#n23307'>23307</a>
<a id='n23308' href='#n23308'>23308</a>
<a id='n23309' href='#n23309'>23309</a>
<a id='n23310' href='#n23310'>23310</a>
<a id='n23311' href='#n23311'>23311</a>
<a id='n23312' href='#n23312'>23312</a>
<a id='n23313' href='#n23313'>23313</a>
<a id='n23314' href='#n23314'>23314</a>
<a id='n23315' href='#n23315'>23315</a>
<a id='n23316' href='#n23316'>23316</a>
<a id='n23317' href='#n23317'>23317</a>
<a id='n23318' href='#n23318'>23318</a>
<a id='n23319' href='#n23319'>23319</a>
<a id='n23320' href='#n23320'>23320</a>
<a id='n23321' href='#n23321'>23321</a>
<a id='n23322' href='#n23322'>23322</a>
<a id='n23323' href='#n23323'>23323</a>
<a id='n23324' href='#n23324'>23324</a>
<a id='n23325' href='#n23325'>23325</a>
<a id='n23326' href='#n23326'>23326</a>
<a id='n23327' href='#n23327'>23327</a>
<a id='n23328' href='#n23328'>23328</a>
<a id='n23329' href='#n23329'>23329</a>
<a id='n23330' href='#n23330'>23330</a>
<a id='n23331' href='#n23331'>23331</a>
<a id='n23332' href='#n23332'>23332</a>
<a id='n23333' href='#n23333'>23333</a>
<a id='n23334' href='#n23334'>23334</a>
<a id='n23335' href='#n23335'>23335</a>
<a id='n23336' href='#n23336'>23336</a>
<a id='n23337' href='#n23337'>23337</a>
<a id='n23338' href='#n23338'>23338</a>
<a id='n23339' href='#n23339'>23339</a>
<a id='n23340' href='#n23340'>23340</a>
<a id='n23341' href='#n23341'>23341</a>
<a id='n23342' href='#n23342'>23342</a>
<a id='n23343' href='#n23343'>23343</a>
<a id='n23344' href='#n23344'>23344</a>
<a id='n23345' href='#n23345'>23345</a>
<a id='n23346' href='#n23346'>23346</a>
<a id='n23347' href='#n23347'>23347</a>
<a id='n23348' href='#n23348'>23348</a>
<a id='n23349' href='#n23349'>23349</a>
<a id='n23350' href='#n23350'>23350</a>
<a id='n23351' href='#n23351'>23351</a>
<a id='n23352' href='#n23352'>23352</a>
<a id='n23353' href='#n23353'>23353</a>
<a id='n23354' href='#n23354'>23354</a>
<a id='n23355' href='#n23355'>23355</a>
<a id='n23356' href='#n23356'>23356</a>
<a id='n23357' href='#n23357'>23357</a>
<a id='n23358' href='#n23358'>23358</a>
<a id='n23359' href='#n23359'>23359</a>
<a id='n23360' href='#n23360'>23360</a>
<a id='n23361' href='#n23361'>23361</a>
<a id='n23362' href='#n23362'>23362</a>
<a id='n23363' href='#n23363'>23363</a>
<a id='n23364' href='#n23364'>23364</a>
<a id='n23365' href='#n23365'>23365</a>
<a id='n23366' href='#n23366'>23366</a>
<a id='n23367' href='#n23367'>23367</a>
<a id='n23368' href='#n23368'>23368</a>
<a id='n23369' href='#n23369'>23369</a>
<a id='n23370' href='#n23370'>23370</a>
<a id='n23371' href='#n23371'>23371</a>
<a id='n23372' href='#n23372'>23372</a>
<a id='n23373' href='#n23373'>23373</a>
<a id='n23374' href='#n23374'>23374</a>
<a id='n23375' href='#n23375'>23375</a>
<a id='n23376' href='#n23376'>23376</a>
<a id='n23377' href='#n23377'>23377</a>
<a id='n23378' href='#n23378'>23378</a>
<a id='n23379' href='#n23379'>23379</a>
<a id='n23380' href='#n23380'>23380</a>
<a id='n23381' href='#n23381'>23381</a>
<a id='n23382' href='#n23382'>23382</a>
<a id='n23383' href='#n23383'>23383</a>
<a id='n23384' href='#n23384'>23384</a>
<a id='n23385' href='#n23385'>23385</a>
<a id='n23386' href='#n23386'>23386</a>
<a id='n23387' href='#n23387'>23387</a>
<a id='n23388' href='#n23388'>23388</a>
<a id='n23389' href='#n23389'>23389</a>
<a id='n23390' href='#n23390'>23390</a>
<a id='n23391' href='#n23391'>23391</a>
<a id='n23392' href='#n23392'>23392</a>
<a id='n23393' href='#n23393'>23393</a>
<a id='n23394' href='#n23394'>23394</a>
<a id='n23395' href='#n23395'>23395</a>
<a id='n23396' href='#n23396'>23396</a>
<a id='n23397' href='#n23397'>23397</a>
<a id='n23398' href='#n23398'>23398</a>
<a id='n23399' href='#n23399'>23399</a>
<a id='n23400' href='#n23400'>23400</a>
<a id='n23401' href='#n23401'>23401</a>
<a id='n23402' href='#n23402'>23402</a>
<a id='n23403' href='#n23403'>23403</a>
<a id='n23404' href='#n23404'>23404</a>
<a id='n23405' href='#n23405'>23405</a>
<a id='n23406' href='#n23406'>23406</a>
<a id='n23407' href='#n23407'>23407</a>
<a id='n23408' href='#n23408'>23408</a>
<a id='n23409' href='#n23409'>23409</a>
<a id='n23410' href='#n23410'>23410</a>
<a id='n23411' href='#n23411'>23411</a>
<a id='n23412' href='#n23412'>23412</a>
<a id='n23413' href='#n23413'>23413</a>
<a id='n23414' href='#n23414'>23414</a>
<a id='n23415' href='#n23415'>23415</a>
<a id='n23416' href='#n23416'>23416</a>
<a id='n23417' href='#n23417'>23417</a>
<a id='n23418' href='#n23418'>23418</a>
<a id='n23419' href='#n23419'>23419</a>
<a id='n23420' href='#n23420'>23420</a>
<a id='n23421' href='#n23421'>23421</a>
<a id='n23422' href='#n23422'>23422</a>
<a id='n23423' href='#n23423'>23423</a>
<a id='n23424' href='#n23424'>23424</a>
<a id='n23425' href='#n23425'>23425</a>
<a id='n23426' href='#n23426'>23426</a>
<a id='n23427' href='#n23427'>23427</a>
<a id='n23428' href='#n23428'>23428</a>
<a id='n23429' href='#n23429'>23429</a>
<a id='n23430' href='#n23430'>23430</a>
<a id='n23431' href='#n23431'>23431</a>
<a id='n23432' href='#n23432'>23432</a>
<a id='n23433' href='#n23433'>23433</a>
<a id='n23434' href='#n23434'>23434</a>
<a id='n23435' href='#n23435'>23435</a>
<a id='n23436' href='#n23436'>23436</a>
<a id='n23437' href='#n23437'>23437</a>
<a id='n23438' href='#n23438'>23438</a>
<a id='n23439' href='#n23439'>23439</a>
<a id='n23440' href='#n23440'>23440</a>
<a id='n23441' href='#n23441'>23441</a>
<a id='n23442' href='#n23442'>23442</a>
<a id='n23443' href='#n23443'>23443</a>
<a id='n23444' href='#n23444'>23444</a>
<a id='n23445' href='#n23445'>23445</a>
<a id='n23446' href='#n23446'>23446</a>
<a id='n23447' href='#n23447'>23447</a>
<a id='n23448' href='#n23448'>23448</a>
<a id='n23449' href='#n23449'>23449</a>
<a id='n23450' href='#n23450'>23450</a>
<a id='n23451' href='#n23451'>23451</a>
<a id='n23452' href='#n23452'>23452</a>
<a id='n23453' href='#n23453'>23453</a>
<a id='n23454' href='#n23454'>23454</a>
<a id='n23455' href='#n23455'>23455</a>
<a id='n23456' href='#n23456'>23456</a>
<a id='n23457' href='#n23457'>23457</a>
<a id='n23458' href='#n23458'>23458</a>
<a id='n23459' href='#n23459'>23459</a>
<a id='n23460' href='#n23460'>23460</a>
<a id='n23461' href='#n23461'>23461</a>
<a id='n23462' href='#n23462'>23462</a>
<a id='n23463' href='#n23463'>23463</a>
<a id='n23464' href='#n23464'>23464</a>
<a id='n23465' href='#n23465'>23465</a>
<a id='n23466' href='#n23466'>23466</a>
<a id='n23467' href='#n23467'>23467</a>
<a id='n23468' href='#n23468'>23468</a>
<a id='n23469' href='#n23469'>23469</a>
<a id='n23470' href='#n23470'>23470</a>
<a id='n23471' href='#n23471'>23471</a>
<a id='n23472' href='#n23472'>23472</a>
<a id='n23473' href='#n23473'>23473</a>
<a id='n23474' href='#n23474'>23474</a>
<a id='n23475' href='#n23475'>23475</a>
<a id='n23476' href='#n23476'>23476</a>
<a id='n23477' href='#n23477'>23477</a>
<a id='n23478' href='#n23478'>23478</a>
<a id='n23479' href='#n23479'>23479</a>
<a id='n23480' href='#n23480'>23480</a>
<a id='n23481' href='#n23481'>23481</a>
<a id='n23482' href='#n23482'>23482</a>
<a id='n23483' href='#n23483'>23483</a>
<a id='n23484' href='#n23484'>23484</a>
<a id='n23485' href='#n23485'>23485</a>
<a id='n23486' href='#n23486'>23486</a>
<a id='n23487' href='#n23487'>23487</a>
<a id='n23488' href='#n23488'>23488</a>
<a id='n23489' href='#n23489'>23489</a>
<a id='n23490' href='#n23490'>23490</a>
<a id='n23491' href='#n23491'>23491</a>
<a id='n23492' href='#n23492'>23492</a>
<a id='n23493' href='#n23493'>23493</a>
<a id='n23494' href='#n23494'>23494</a>
<a id='n23495' href='#n23495'>23495</a>
<a id='n23496' href='#n23496'>23496</a>
<a id='n23497' href='#n23497'>23497</a>
<a id='n23498' href='#n23498'>23498</a>
<a id='n23499' href='#n23499'>23499</a>
<a id='n23500' href='#n23500'>23500</a>
<a id='n23501' href='#n23501'>23501</a>
<a id='n23502' href='#n23502'>23502</a>
<a id='n23503' href='#n23503'>23503</a>
<a id='n23504' href='#n23504'>23504</a>
<a id='n23505' href='#n23505'>23505</a>
<a id='n23506' href='#n23506'>23506</a>
<a id='n23507' href='#n23507'>23507</a>
<a id='n23508' href='#n23508'>23508</a>
<a id='n23509' href='#n23509'>23509</a>
<a id='n23510' href='#n23510'>23510</a>
<a id='n23511' href='#n23511'>23511</a>
<a id='n23512' href='#n23512'>23512</a>
<a id='n23513' href='#n23513'>23513</a>
<a id='n23514' href='#n23514'>23514</a>
<a id='n23515' href='#n23515'>23515</a>
<a id='n23516' href='#n23516'>23516</a>
<a id='n23517' href='#n23517'>23517</a>
<a id='n23518' href='#n23518'>23518</a>
<a id='n23519' href='#n23519'>23519</a>
<a id='n23520' href='#n23520'>23520</a>
<a id='n23521' href='#n23521'>23521</a>
<a id='n23522' href='#n23522'>23522</a>
<a id='n23523' href='#n23523'>23523</a>
<a id='n23524' href='#n23524'>23524</a>
<a id='n23525' href='#n23525'>23525</a>
<a id='n23526' href='#n23526'>23526</a>
<a id='n23527' href='#n23527'>23527</a>
<a id='n23528' href='#n23528'>23528</a>
<a id='n23529' href='#n23529'>23529</a>
<a id='n23530' href='#n23530'>23530</a>
<a id='n23531' href='#n23531'>23531</a>
<a id='n23532' href='#n23532'>23532</a>
<a id='n23533' href='#n23533'>23533</a>
<a id='n23534' href='#n23534'>23534</a>
<a id='n23535' href='#n23535'>23535</a>
<a id='n23536' href='#n23536'>23536</a>
<a id='n23537' href='#n23537'>23537</a>
<a id='n23538' href='#n23538'>23538</a>
<a id='n23539' href='#n23539'>23539</a>
<a id='n23540' href='#n23540'>23540</a>
<a id='n23541' href='#n23541'>23541</a>
<a id='n23542' href='#n23542'>23542</a>
<a id='n23543' href='#n23543'>23543</a>
<a id='n23544' href='#n23544'>23544</a>
<a id='n23545' href='#n23545'>23545</a>
<a id='n23546' href='#n23546'>23546</a>
<a id='n23547' href='#n23547'>23547</a>
<a id='n23548' href='#n23548'>23548</a>
<a id='n23549' href='#n23549'>23549</a>
<a id='n23550' href='#n23550'>23550</a>
<a id='n23551' href='#n23551'>23551</a>
<a id='n23552' href='#n23552'>23552</a>
<a id='n23553' href='#n23553'>23553</a>
<a id='n23554' href='#n23554'>23554</a>
<a id='n23555' href='#n23555'>23555</a>
<a id='n23556' href='#n23556'>23556</a>
<a id='n23557' href='#n23557'>23557</a>
<a id='n23558' href='#n23558'>23558</a>
<a id='n23559' href='#n23559'>23559</a>
<a id='n23560' href='#n23560'>23560</a>
<a id='n23561' href='#n23561'>23561</a>
<a id='n23562' href='#n23562'>23562</a>
<a id='n23563' href='#n23563'>23563</a>
<a id='n23564' href='#n23564'>23564</a>
<a id='n23565' href='#n23565'>23565</a>
<a id='n23566' href='#n23566'>23566</a>
<a id='n23567' href='#n23567'>23567</a>
<a id='n23568' href='#n23568'>23568</a>
<a id='n23569' href='#n23569'>23569</a>
<a id='n23570' href='#n23570'>23570</a>
<a id='n23571' href='#n23571'>23571</a>
<a id='n23572' href='#n23572'>23572</a>
<a id='n23573' href='#n23573'>23573</a>
<a id='n23574' href='#n23574'>23574</a>
<a id='n23575' href='#n23575'>23575</a>
<a id='n23576' href='#n23576'>23576</a>
<a id='n23577' href='#n23577'>23577</a>
<a id='n23578' href='#n23578'>23578</a>
<a id='n23579' href='#n23579'>23579</a>
<a id='n23580' href='#n23580'>23580</a>
<a id='n23581' href='#n23581'>23581</a>
<a id='n23582' href='#n23582'>23582</a>
<a id='n23583' href='#n23583'>23583</a>
<a id='n23584' href='#n23584'>23584</a>
<a id='n23585' href='#n23585'>23585</a>
<a id='n23586' href='#n23586'>23586</a>
<a id='n23587' href='#n23587'>23587</a>
<a id='n23588' href='#n23588'>23588</a>
<a id='n23589' href='#n23589'>23589</a>
<a id='n23590' href='#n23590'>23590</a>
<a id='n23591' href='#n23591'>23591</a>
<a id='n23592' href='#n23592'>23592</a>
<a id='n23593' href='#n23593'>23593</a>
<a id='n23594' href='#n23594'>23594</a>
<a id='n23595' href='#n23595'>23595</a>
<a id='n23596' href='#n23596'>23596</a>
<a id='n23597' href='#n23597'>23597</a>
<a id='n23598' href='#n23598'>23598</a>
<a id='n23599' href='#n23599'>23599</a>
<a id='n23600' href='#n23600'>23600</a>
<a id='n23601' href='#n23601'>23601</a>
<a id='n23602' href='#n23602'>23602</a>
<a id='n23603' href='#n23603'>23603</a>
<a id='n23604' href='#n23604'>23604</a>
<a id='n23605' href='#n23605'>23605</a>
<a id='n23606' href='#n23606'>23606</a>
<a id='n23607' href='#n23607'>23607</a>
<a id='n23608' href='#n23608'>23608</a>
<a id='n23609' href='#n23609'>23609</a>
<a id='n23610' href='#n23610'>23610</a>
<a id='n23611' href='#n23611'>23611</a>
<a id='n23612' href='#n23612'>23612</a>
<a id='n23613' href='#n23613'>23613</a>
<a id='n23614' href='#n23614'>23614</a>
<a id='n23615' href='#n23615'>23615</a>
<a id='n23616' href='#n23616'>23616</a>
<a id='n23617' href='#n23617'>23617</a>
<a id='n23618' href='#n23618'>23618</a>
<a id='n23619' href='#n23619'>23619</a>
<a id='n23620' href='#n23620'>23620</a>
<a id='n23621' href='#n23621'>23621</a>
<a id='n23622' href='#n23622'>23622</a>
<a id='n23623' href='#n23623'>23623</a>
<a id='n23624' href='#n23624'>23624</a>
<a id='n23625' href='#n23625'>23625</a>
<a id='n23626' href='#n23626'>23626</a>
<a id='n23627' href='#n23627'>23627</a>
<a id='n23628' href='#n23628'>23628</a>
<a id='n23629' href='#n23629'>23629</a>
<a id='n23630' href='#n23630'>23630</a>
<a id='n23631' href='#n23631'>23631</a>
<a id='n23632' href='#n23632'>23632</a>
<a id='n23633' href='#n23633'>23633</a>
<a id='n23634' href='#n23634'>23634</a>
<a id='n23635' href='#n23635'>23635</a>
<a id='n23636' href='#n23636'>23636</a>
<a id='n23637' href='#n23637'>23637</a>
<a id='n23638' href='#n23638'>23638</a>
<a id='n23639' href='#n23639'>23639</a>
<a id='n23640' href='#n23640'>23640</a>
<a id='n23641' href='#n23641'>23641</a>
<a id='n23642' href='#n23642'>23642</a>
<a id='n23643' href='#n23643'>23643</a>
<a id='n23644' href='#n23644'>23644</a>
<a id='n23645' href='#n23645'>23645</a>
<a id='n23646' href='#n23646'>23646</a>
<a id='n23647' href='#n23647'>23647</a>
<a id='n23648' href='#n23648'>23648</a>
<a id='n23649' href='#n23649'>23649</a>
<a id='n23650' href='#n23650'>23650</a>
<a id='n23651' href='#n23651'>23651</a>
<a id='n23652' href='#n23652'>23652</a>
<a id='n23653' href='#n23653'>23653</a>
<a id='n23654' href='#n23654'>23654</a>
<a id='n23655' href='#n23655'>23655</a>
<a id='n23656' href='#n23656'>23656</a>
<a id='n23657' href='#n23657'>23657</a>
<a id='n23658' href='#n23658'>23658</a>
<a id='n23659' href='#n23659'>23659</a>
<a id='n23660' href='#n23660'>23660</a>
<a id='n23661' href='#n23661'>23661</a>
<a id='n23662' href='#n23662'>23662</a>
<a id='n23663' href='#n23663'>23663</a>
<a id='n23664' href='#n23664'>23664</a>
<a id='n23665' href='#n23665'>23665</a>
<a id='n23666' href='#n23666'>23666</a>
<a id='n23667' href='#n23667'>23667</a>
<a id='n23668' href='#n23668'>23668</a>
<a id='n23669' href='#n23669'>23669</a>
<a id='n23670' href='#n23670'>23670</a>
<a id='n23671' href='#n23671'>23671</a>
<a id='n23672' href='#n23672'>23672</a>
<a id='n23673' href='#n23673'>23673</a>
<a id='n23674' href='#n23674'>23674</a>
<a id='n23675' href='#n23675'>23675</a>
<a id='n23676' href='#n23676'>23676</a>
<a id='n23677' href='#n23677'>23677</a>
<a id='n23678' href='#n23678'>23678</a>
<a id='n23679' href='#n23679'>23679</a>
<a id='n23680' href='#n23680'>23680</a>
<a id='n23681' href='#n23681'>23681</a>
<a id='n23682' href='#n23682'>23682</a>
<a id='n23683' href='#n23683'>23683</a>
<a id='n23684' href='#n23684'>23684</a>
<a id='n23685' href='#n23685'>23685</a>
<a id='n23686' href='#n23686'>23686</a>
<a id='n23687' href='#n23687'>23687</a>
<a id='n23688' href='#n23688'>23688</a>
<a id='n23689' href='#n23689'>23689</a>
<a id='n23690' href='#n23690'>23690</a>
<a id='n23691' href='#n23691'>23691</a>
<a id='n23692' href='#n23692'>23692</a>
<a id='n23693' href='#n23693'>23693</a>
<a id='n23694' href='#n23694'>23694</a>
<a id='n23695' href='#n23695'>23695</a>
<a id='n23696' href='#n23696'>23696</a>
<a id='n23697' href='#n23697'>23697</a>
<a id='n23698' href='#n23698'>23698</a>
<a id='n23699' href='#n23699'>23699</a>
<a id='n23700' href='#n23700'>23700</a>
<a id='n23701' href='#n23701'>23701</a>
<a id='n23702' href='#n23702'>23702</a>
<a id='n23703' href='#n23703'>23703</a>
<a id='n23704' href='#n23704'>23704</a>
<a id='n23705' href='#n23705'>23705</a>
<a id='n23706' href='#n23706'>23706</a>
<a id='n23707' href='#n23707'>23707</a>
<a id='n23708' href='#n23708'>23708</a>
<a id='n23709' href='#n23709'>23709</a>
<a id='n23710' href='#n23710'>23710</a>
<a id='n23711' href='#n23711'>23711</a>
<a id='n23712' href='#n23712'>23712</a>
<a id='n23713' href='#n23713'>23713</a>
<a id='n23714' href='#n23714'>23714</a>
<a id='n23715' href='#n23715'>23715</a>
<a id='n23716' href='#n23716'>23716</a>
<a id='n23717' href='#n23717'>23717</a>
<a id='n23718' href='#n23718'>23718</a>
<a id='n23719' href='#n23719'>23719</a>
<a id='n23720' href='#n23720'>23720</a>
<a id='n23721' href='#n23721'>23721</a>
<a id='n23722' href='#n23722'>23722</a>
<a id='n23723' href='#n23723'>23723</a>
<a id='n23724' href='#n23724'>23724</a>
<a id='n23725' href='#n23725'>23725</a>
<a id='n23726' href='#n23726'>23726</a>
<a id='n23727' href='#n23727'>23727</a>
<a id='n23728' href='#n23728'>23728</a>
<a id='n23729' href='#n23729'>23729</a>
<a id='n23730' href='#n23730'>23730</a>
<a id='n23731' href='#n23731'>23731</a>
<a id='n23732' href='#n23732'>23732</a>
<a id='n23733' href='#n23733'>23733</a>
<a id='n23734' href='#n23734'>23734</a>
<a id='n23735' href='#n23735'>23735</a>
<a id='n23736' href='#n23736'>23736</a>
<a id='n23737' href='#n23737'>23737</a>
<a id='n23738' href='#n23738'>23738</a>
<a id='n23739' href='#n23739'>23739</a>
<a id='n23740' href='#n23740'>23740</a>
<a id='n23741' href='#n23741'>23741</a>
<a id='n23742' href='#n23742'>23742</a>
<a id='n23743' href='#n23743'>23743</a>
<a id='n23744' href='#n23744'>23744</a>
<a id='n23745' href='#n23745'>23745</a>
<a id='n23746' href='#n23746'>23746</a>
<a id='n23747' href='#n23747'>23747</a>
<a id='n23748' href='#n23748'>23748</a>
<a id='n23749' href='#n23749'>23749</a>
<a id='n23750' href='#n23750'>23750</a>
<a id='n23751' href='#n23751'>23751</a>
<a id='n23752' href='#n23752'>23752</a>
<a id='n23753' href='#n23753'>23753</a>
<a id='n23754' href='#n23754'>23754</a>
<a id='n23755' href='#n23755'>23755</a>
<a id='n23756' href='#n23756'>23756</a>
<a id='n23757' href='#n23757'>23757</a>
<a id='n23758' href='#n23758'>23758</a>
<a id='n23759' href='#n23759'>23759</a>
<a id='n23760' href='#n23760'>23760</a>
<a id='n23761' href='#n23761'>23761</a>
<a id='n23762' href='#n23762'>23762</a>
<a id='n23763' href='#n23763'>23763</a>
<a id='n23764' href='#n23764'>23764</a>
<a id='n23765' href='#n23765'>23765</a>
<a id='n23766' href='#n23766'>23766</a>
<a id='n23767' href='#n23767'>23767</a>
<a id='n23768' href='#n23768'>23768</a>
<a id='n23769' href='#n23769'>23769</a>
<a id='n23770' href='#n23770'>23770</a>
<a id='n23771' href='#n23771'>23771</a>
<a id='n23772' href='#n23772'>23772</a>
<a id='n23773' href='#n23773'>23773</a>
<a id='n23774' href='#n23774'>23774</a>
<a id='n23775' href='#n23775'>23775</a>
<a id='n23776' href='#n23776'>23776</a>
<a id='n23777' href='#n23777'>23777</a>
<a id='n23778' href='#n23778'>23778</a>
<a id='n23779' href='#n23779'>23779</a>
<a id='n23780' href='#n23780'>23780</a>
<a id='n23781' href='#n23781'>23781</a>
<a id='n23782' href='#n23782'>23782</a>
<a id='n23783' href='#n23783'>23783</a>
<a id='n23784' href='#n23784'>23784</a>
<a id='n23785' href='#n23785'>23785</a>
<a id='n23786' href='#n23786'>23786</a>
<a id='n23787' href='#n23787'>23787</a>
<a id='n23788' href='#n23788'>23788</a>
<a id='n23789' href='#n23789'>23789</a>
<a id='n23790' href='#n23790'>23790</a>
<a id='n23791' href='#n23791'>23791</a>
<a id='n23792' href='#n23792'>23792</a>
<a id='n23793' href='#n23793'>23793</a>
<a id='n23794' href='#n23794'>23794</a>
<a id='n23795' href='#n23795'>23795</a>
<a id='n23796' href='#n23796'>23796</a>
<a id='n23797' href='#n23797'>23797</a>
<a id='n23798' href='#n23798'>23798</a>
<a id='n23799' href='#n23799'>23799</a>
<a id='n23800' href='#n23800'>23800</a>
<a id='n23801' href='#n23801'>23801</a>
<a id='n23802' href='#n23802'>23802</a>
<a id='n23803' href='#n23803'>23803</a>
<a id='n23804' href='#n23804'>23804</a>
<a id='n23805' href='#n23805'>23805</a>
<a id='n23806' href='#n23806'>23806</a>
<a id='n23807' href='#n23807'>23807</a>
<a id='n23808' href='#n23808'>23808</a>
<a id='n23809' href='#n23809'>23809</a>
<a id='n23810' href='#n23810'>23810</a>
<a id='n23811' href='#n23811'>23811</a>
<a id='n23812' href='#n23812'>23812</a>
<a id='n23813' href='#n23813'>23813</a>
<a id='n23814' href='#n23814'>23814</a>
<a id='n23815' href='#n23815'>23815</a>
<a id='n23816' href='#n23816'>23816</a>
<a id='n23817' href='#n23817'>23817</a>
<a id='n23818' href='#n23818'>23818</a>
<a id='n23819' href='#n23819'>23819</a>
<a id='n23820' href='#n23820'>23820</a>
<a id='n23821' href='#n23821'>23821</a>
<a id='n23822' href='#n23822'>23822</a>
<a id='n23823' href='#n23823'>23823</a>
<a id='n23824' href='#n23824'>23824</a>
<a id='n23825' href='#n23825'>23825</a>
<a id='n23826' href='#n23826'>23826</a>
<a id='n23827' href='#n23827'>23827</a>
<a id='n23828' href='#n23828'>23828</a>
<a id='n23829' href='#n23829'>23829</a>
<a id='n23830' href='#n23830'>23830</a>
<a id='n23831' href='#n23831'>23831</a>
<a id='n23832' href='#n23832'>23832</a>
<a id='n23833' href='#n23833'>23833</a>
<a id='n23834' href='#n23834'>23834</a>
<a id='n23835' href='#n23835'>23835</a>
<a id='n23836' href='#n23836'>23836</a>
<a id='n23837' href='#n23837'>23837</a>
<a id='n23838' href='#n23838'>23838</a>
<a id='n23839' href='#n23839'>23839</a>
<a id='n23840' href='#n23840'>23840</a>
<a id='n23841' href='#n23841'>23841</a>
<a id='n23842' href='#n23842'>23842</a>
<a id='n23843' href='#n23843'>23843</a>
<a id='n23844' href='#n23844'>23844</a>
<a id='n23845' href='#n23845'>23845</a>
<a id='n23846' href='#n23846'>23846</a>
<a id='n23847' href='#n23847'>23847</a>
<a id='n23848' href='#n23848'>23848</a>
<a id='n23849' href='#n23849'>23849</a>
<a id='n23850' href='#n23850'>23850</a>
<a id='n23851' href='#n23851'>23851</a>
<a id='n23852' href='#n23852'>23852</a>
<a id='n23853' href='#n23853'>23853</a>
<a id='n23854' href='#n23854'>23854</a>
<a id='n23855' href='#n23855'>23855</a>
<a id='n23856' href='#n23856'>23856</a>
<a id='n23857' href='#n23857'>23857</a>
<a id='n23858' href='#n23858'>23858</a>
<a id='n23859' href='#n23859'>23859</a>
<a id='n23860' href='#n23860'>23860</a>
<a id='n23861' href='#n23861'>23861</a>
<a id='n23862' href='#n23862'>23862</a>
<a id='n23863' href='#n23863'>23863</a>
<a id='n23864' href='#n23864'>23864</a>
<a id='n23865' href='#n23865'>23865</a>
<a id='n23866' href='#n23866'>23866</a>
<a id='n23867' href='#n23867'>23867</a>
<a id='n23868' href='#n23868'>23868</a>
<a id='n23869' href='#n23869'>23869</a>
<a id='n23870' href='#n23870'>23870</a>
<a id='n23871' href='#n23871'>23871</a>
<a id='n23872' href='#n23872'>23872</a>
<a id='n23873' href='#n23873'>23873</a>
<a id='n23874' href='#n23874'>23874</a>
<a id='n23875' href='#n23875'>23875</a>
<a id='n23876' href='#n23876'>23876</a>
<a id='n23877' href='#n23877'>23877</a>
<a id='n23878' href='#n23878'>23878</a>
<a id='n23879' href='#n23879'>23879</a>
<a id='n23880' href='#n23880'>23880</a>
<a id='n23881' href='#n23881'>23881</a>
<a id='n23882' href='#n23882'>23882</a>
<a id='n23883' href='#n23883'>23883</a>
<a id='n23884' href='#n23884'>23884</a>
<a id='n23885' href='#n23885'>23885</a>
<a id='n23886' href='#n23886'>23886</a>
<a id='n23887' href='#n23887'>23887</a>
<a id='n23888' href='#n23888'>23888</a>
<a id='n23889' href='#n23889'>23889</a>
<a id='n23890' href='#n23890'>23890</a>
<a id='n23891' href='#n23891'>23891</a>
<a id='n23892' href='#n23892'>23892</a>
<a id='n23893' href='#n23893'>23893</a>
<a id='n23894' href='#n23894'>23894</a>
<a id='n23895' href='#n23895'>23895</a>
<a id='n23896' href='#n23896'>23896</a>
<a id='n23897' href='#n23897'>23897</a>
<a id='n23898' href='#n23898'>23898</a>
<a id='n23899' href='#n23899'>23899</a>
<a id='n23900' href='#n23900'>23900</a>
<a id='n23901' href='#n23901'>23901</a>
<a id='n23902' href='#n23902'>23902</a>
<a id='n23903' href='#n23903'>23903</a>
<a id='n23904' href='#n23904'>23904</a>
<a id='n23905' href='#n23905'>23905</a>
<a id='n23906' href='#n23906'>23906</a>
<a id='n23907' href='#n23907'>23907</a>
<a id='n23908' href='#n23908'>23908</a>
<a id='n23909' href='#n23909'>23909</a>
<a id='n23910' href='#n23910'>23910</a>
<a id='n23911' href='#n23911'>23911</a>
<a id='n23912' href='#n23912'>23912</a>
<a id='n23913' href='#n23913'>23913</a>
<a id='n23914' href='#n23914'>23914</a>
<a id='n23915' href='#n23915'>23915</a>
<a id='n23916' href='#n23916'>23916</a>
<a id='n23917' href='#n23917'>23917</a>
<a id='n23918' href='#n23918'>23918</a>
<a id='n23919' href='#n23919'>23919</a>
<a id='n23920' href='#n23920'>23920</a>
<a id='n23921' href='#n23921'>23921</a>
<a id='n23922' href='#n23922'>23922</a>
<a id='n23923' href='#n23923'>23923</a>
<a id='n23924' href='#n23924'>23924</a>
<a id='n23925' href='#n23925'>23925</a>
<a id='n23926' href='#n23926'>23926</a>
<a id='n23927' href='#n23927'>23927</a>
<a id='n23928' href='#n23928'>23928</a>
<a id='n23929' href='#n23929'>23929</a>
<a id='n23930' href='#n23930'>23930</a>
<a id='n23931' href='#n23931'>23931</a>
<a id='n23932' href='#n23932'>23932</a>
<a id='n23933' href='#n23933'>23933</a>
<a id='n23934' href='#n23934'>23934</a>
<a id='n23935' href='#n23935'>23935</a>
<a id='n23936' href='#n23936'>23936</a>
<a id='n23937' href='#n23937'>23937</a>
<a id='n23938' href='#n23938'>23938</a>
<a id='n23939' href='#n23939'>23939</a>
<a id='n23940' href='#n23940'>23940</a>
<a id='n23941' href='#n23941'>23941</a>
<a id='n23942' href='#n23942'>23942</a>
<a id='n23943' href='#n23943'>23943</a>
<a id='n23944' href='#n23944'>23944</a>
<a id='n23945' href='#n23945'>23945</a>
<a id='n23946' href='#n23946'>23946</a>
<a id='n23947' href='#n23947'>23947</a>
<a id='n23948' href='#n23948'>23948</a>
<a id='n23949' href='#n23949'>23949</a>
<a id='n23950' href='#n23950'>23950</a>
<a id='n23951' href='#n23951'>23951</a>
<a id='n23952' href='#n23952'>23952</a>
<a id='n23953' href='#n23953'>23953</a>
<a id='n23954' href='#n23954'>23954</a>
<a id='n23955' href='#n23955'>23955</a>
<a id='n23956' href='#n23956'>23956</a>
<a id='n23957' href='#n23957'>23957</a>
<a id='n23958' href='#n23958'>23958</a>
<a id='n23959' href='#n23959'>23959</a>
<a id='n23960' href='#n23960'>23960</a>
<a id='n23961' href='#n23961'>23961</a>
<a id='n23962' href='#n23962'>23962</a>
<a id='n23963' href='#n23963'>23963</a>
<a id='n23964' href='#n23964'>23964</a>
<a id='n23965' href='#n23965'>23965</a>
<a id='n23966' href='#n23966'>23966</a>
<a id='n23967' href='#n23967'>23967</a>
<a id='n23968' href='#n23968'>23968</a>
<a id='n23969' href='#n23969'>23969</a>
<a id='n23970' href='#n23970'>23970</a>
<a id='n23971' href='#n23971'>23971</a>
<a id='n23972' href='#n23972'>23972</a>
<a id='n23973' href='#n23973'>23973</a>
<a id='n23974' href='#n23974'>23974</a>
<a id='n23975' href='#n23975'>23975</a>
<a id='n23976' href='#n23976'>23976</a>
<a id='n23977' href='#n23977'>23977</a>
<a id='n23978' href='#n23978'>23978</a>
<a id='n23979' href='#n23979'>23979</a>
<a id='n23980' href='#n23980'>23980</a>
<a id='n23981' href='#n23981'>23981</a>
<a id='n23982' href='#n23982'>23982</a>
<a id='n23983' href='#n23983'>23983</a>
<a id='n23984' href='#n23984'>23984</a>
<a id='n23985' href='#n23985'>23985</a>
<a id='n23986' href='#n23986'>23986</a>
<a id='n23987' href='#n23987'>23987</a>
<a id='n23988' href='#n23988'>23988</a>
<a id='n23989' href='#n23989'>23989</a>
<a id='n23990' href='#n23990'>23990</a>
<a id='n23991' href='#n23991'>23991</a>
<a id='n23992' href='#n23992'>23992</a>
<a id='n23993' href='#n23993'>23993</a>
<a id='n23994' href='#n23994'>23994</a>
<a id='n23995' href='#n23995'>23995</a>
<a id='n23996' href='#n23996'>23996</a>
<a id='n23997' href='#n23997'>23997</a>
<a id='n23998' href='#n23998'>23998</a>
<a id='n23999' href='#n23999'>23999</a>
<a id='n24000' href='#n24000'>24000</a>
<a id='n24001' href='#n24001'>24001</a>
<a id='n24002' href='#n24002'>24002</a>
<a id='n24003' href='#n24003'>24003</a>
<a id='n24004' href='#n24004'>24004</a>
<a id='n24005' href='#n24005'>24005</a>
<a id='n24006' href='#n24006'>24006</a>
<a id='n24007' href='#n24007'>24007</a>
<a id='n24008' href='#n24008'>24008</a>
<a id='n24009' href='#n24009'>24009</a>
<a id='n24010' href='#n24010'>24010</a>
<a id='n24011' href='#n24011'>24011</a>
<a id='n24012' href='#n24012'>24012</a>
<a id='n24013' href='#n24013'>24013</a>
<a id='n24014' href='#n24014'>24014</a>
<a id='n24015' href='#n24015'>24015</a>
<a id='n24016' href='#n24016'>24016</a>
<a id='n24017' href='#n24017'>24017</a>
<a id='n24018' href='#n24018'>24018</a>
<a id='n24019' href='#n24019'>24019</a>
<a id='n24020' href='#n24020'>24020</a>
<a id='n24021' href='#n24021'>24021</a>
<a id='n24022' href='#n24022'>24022</a>
<a id='n24023' href='#n24023'>24023</a>
<a id='n24024' href='#n24024'>24024</a>
<a id='n24025' href='#n24025'>24025</a>
<a id='n24026' href='#n24026'>24026</a>
<a id='n24027' href='#n24027'>24027</a>
<a id='n24028' href='#n24028'>24028</a>
<a id='n24029' href='#n24029'>24029</a>
<a id='n24030' href='#n24030'>24030</a>
<a id='n24031' href='#n24031'>24031</a>
<a id='n24032' href='#n24032'>24032</a>
<a id='n24033' href='#n24033'>24033</a>
<a id='n24034' href='#n24034'>24034</a>
<a id='n24035' href='#n24035'>24035</a>
<a id='n24036' href='#n24036'>24036</a>
<a id='n24037' href='#n24037'>24037</a>
<a id='n24038' href='#n24038'>24038</a>
<a id='n24039' href='#n24039'>24039</a>
<a id='n24040' href='#n24040'>24040</a>
<a id='n24041' href='#n24041'>24041</a>
<a id='n24042' href='#n24042'>24042</a>
<a id='n24043' href='#n24043'>24043</a>
<a id='n24044' href='#n24044'>24044</a>
<a id='n24045' href='#n24045'>24045</a>
<a id='n24046' href='#n24046'>24046</a>
<a id='n24047' href='#n24047'>24047</a>
<a id='n24048' href='#n24048'>24048</a>
<a id='n24049' href='#n24049'>24049</a>
<a id='n24050' href='#n24050'>24050</a>
<a id='n24051' href='#n24051'>24051</a>
<a id='n24052' href='#n24052'>24052</a>
<a id='n24053' href='#n24053'>24053</a>
<a id='n24054' href='#n24054'>24054</a>
<a id='n24055' href='#n24055'>24055</a>
<a id='n24056' href='#n24056'>24056</a>
<a id='n24057' href='#n24057'>24057</a>
<a id='n24058' href='#n24058'>24058</a>
<a id='n24059' href='#n24059'>24059</a>
<a id='n24060' href='#n24060'>24060</a>
<a id='n24061' href='#n24061'>24061</a>
<a id='n24062' href='#n24062'>24062</a>
<a id='n24063' href='#n24063'>24063</a>
<a id='n24064' href='#n24064'>24064</a>
<a id='n24065' href='#n24065'>24065</a>
<a id='n24066' href='#n24066'>24066</a>
<a id='n24067' href='#n24067'>24067</a>
<a id='n24068' href='#n24068'>24068</a>
<a id='n24069' href='#n24069'>24069</a>
<a id='n24070' href='#n24070'>24070</a>
<a id='n24071' href='#n24071'>24071</a>
<a id='n24072' href='#n24072'>24072</a>
<a id='n24073' href='#n24073'>24073</a>
<a id='n24074' href='#n24074'>24074</a>
<a id='n24075' href='#n24075'>24075</a>
<a id='n24076' href='#n24076'>24076</a>
<a id='n24077' href='#n24077'>24077</a>
<a id='n24078' href='#n24078'>24078</a>
<a id='n24079' href='#n24079'>24079</a>
<a id='n24080' href='#n24080'>24080</a>
<a id='n24081' href='#n24081'>24081</a>
<a id='n24082' href='#n24082'>24082</a>
<a id='n24083' href='#n24083'>24083</a>
<a id='n24084' href='#n24084'>24084</a>
<a id='n24085' href='#n24085'>24085</a>
<a id='n24086' href='#n24086'>24086</a>
<a id='n24087' href='#n24087'>24087</a>
<a id='n24088' href='#n24088'>24088</a>
<a id='n24089' href='#n24089'>24089</a>
<a id='n24090' href='#n24090'>24090</a>
<a id='n24091' href='#n24091'>24091</a>
<a id='n24092' href='#n24092'>24092</a>
<a id='n24093' href='#n24093'>24093</a>
<a id='n24094' href='#n24094'>24094</a>
<a id='n24095' href='#n24095'>24095</a>
<a id='n24096' href='#n24096'>24096</a>
<a id='n24097' href='#n24097'>24097</a>
<a id='n24098' href='#n24098'>24098</a>
<a id='n24099' href='#n24099'>24099</a>
<a id='n24100' href='#n24100'>24100</a>
<a id='n24101' href='#n24101'>24101</a>
<a id='n24102' href='#n24102'>24102</a>
<a id='n24103' href='#n24103'>24103</a>
<a id='n24104' href='#n24104'>24104</a>
<a id='n24105' href='#n24105'>24105</a>
<a id='n24106' href='#n24106'>24106</a>
<a id='n24107' href='#n24107'>24107</a>
<a id='n24108' href='#n24108'>24108</a>
<a id='n24109' href='#n24109'>24109</a>
<a id='n24110' href='#n24110'>24110</a>
<a id='n24111' href='#n24111'>24111</a>
<a id='n24112' href='#n24112'>24112</a>
<a id='n24113' href='#n24113'>24113</a>
<a id='n24114' href='#n24114'>24114</a>
<a id='n24115' href='#n24115'>24115</a>
<a id='n24116' href='#n24116'>24116</a>
<a id='n24117' href='#n24117'>24117</a>
<a id='n24118' href='#n24118'>24118</a>
<a id='n24119' href='#n24119'>24119</a>
<a id='n24120' href='#n24120'>24120</a>
<a id='n24121' href='#n24121'>24121</a>
<a id='n24122' href='#n24122'>24122</a>
<a id='n24123' href='#n24123'>24123</a>
<a id='n24124' href='#n24124'>24124</a>
<a id='n24125' href='#n24125'>24125</a>
<a id='n24126' href='#n24126'>24126</a>
<a id='n24127' href='#n24127'>24127</a>
<a id='n24128' href='#n24128'>24128</a>
<a id='n24129' href='#n24129'>24129</a>
<a id='n24130' href='#n24130'>24130</a>
<a id='n24131' href='#n24131'>24131</a>
<a id='n24132' href='#n24132'>24132</a>
<a id='n24133' href='#n24133'>24133</a>
<a id='n24134' href='#n24134'>24134</a>
<a id='n24135' href='#n24135'>24135</a>
<a id='n24136' href='#n24136'>24136</a>
<a id='n24137' href='#n24137'>24137</a>
<a id='n24138' href='#n24138'>24138</a>
<a id='n24139' href='#n24139'>24139</a>
<a id='n24140' href='#n24140'>24140</a>
<a id='n24141' href='#n24141'>24141</a>
<a id='n24142' href='#n24142'>24142</a>
<a id='n24143' href='#n24143'>24143</a>
<a id='n24144' href='#n24144'>24144</a>
<a id='n24145' href='#n24145'>24145</a>
<a id='n24146' href='#n24146'>24146</a>
<a id='n24147' href='#n24147'>24147</a>
<a id='n24148' href='#n24148'>24148</a>
<a id='n24149' href='#n24149'>24149</a>
<a id='n24150' href='#n24150'>24150</a>
<a id='n24151' href='#n24151'>24151</a>
<a id='n24152' href='#n24152'>24152</a>
<a id='n24153' href='#n24153'>24153</a>
<a id='n24154' href='#n24154'>24154</a>
<a id='n24155' href='#n24155'>24155</a>
<a id='n24156' href='#n24156'>24156</a>
<a id='n24157' href='#n24157'>24157</a>
<a id='n24158' href='#n24158'>24158</a>
<a id='n24159' href='#n24159'>24159</a>
<a id='n24160' href='#n24160'>24160</a>
<a id='n24161' href='#n24161'>24161</a>
<a id='n24162' href='#n24162'>24162</a>
<a id='n24163' href='#n24163'>24163</a>
<a id='n24164' href='#n24164'>24164</a>
<a id='n24165' href='#n24165'>24165</a>
<a id='n24166' href='#n24166'>24166</a>
<a id='n24167' href='#n24167'>24167</a>
<a id='n24168' href='#n24168'>24168</a>
<a id='n24169' href='#n24169'>24169</a>
<a id='n24170' href='#n24170'>24170</a>
<a id='n24171' href='#n24171'>24171</a>
<a id='n24172' href='#n24172'>24172</a>
<a id='n24173' href='#n24173'>24173</a>
<a id='n24174' href='#n24174'>24174</a>
<a id='n24175' href='#n24175'>24175</a>
<a id='n24176' href='#n24176'>24176</a>
<a id='n24177' href='#n24177'>24177</a>
<a id='n24178' href='#n24178'>24178</a>
<a id='n24179' href='#n24179'>24179</a>
<a id='n24180' href='#n24180'>24180</a>
<a id='n24181' href='#n24181'>24181</a>
<a id='n24182' href='#n24182'>24182</a>
<a id='n24183' href='#n24183'>24183</a>
<a id='n24184' href='#n24184'>24184</a>
<a id='n24185' href='#n24185'>24185</a>
<a id='n24186' href='#n24186'>24186</a>
<a id='n24187' href='#n24187'>24187</a>
<a id='n24188' href='#n24188'>24188</a>
<a id='n24189' href='#n24189'>24189</a>
<a id='n24190' href='#n24190'>24190</a>
<a id='n24191' href='#n24191'>24191</a>
<a id='n24192' href='#n24192'>24192</a>
<a id='n24193' href='#n24193'>24193</a>
<a id='n24194' href='#n24194'>24194</a>
<a id='n24195' href='#n24195'>24195</a>
<a id='n24196' href='#n24196'>24196</a>
<a id='n24197' href='#n24197'>24197</a>
<a id='n24198' href='#n24198'>24198</a>
<a id='n24199' href='#n24199'>24199</a>
<a id='n24200' href='#n24200'>24200</a>
<a id='n24201' href='#n24201'>24201</a>
<a id='n24202' href='#n24202'>24202</a>
<a id='n24203' href='#n24203'>24203</a>
<a id='n24204' href='#n24204'>24204</a>
<a id='n24205' href='#n24205'>24205</a>
<a id='n24206' href='#n24206'>24206</a>
<a id='n24207' href='#n24207'>24207</a>
<a id='n24208' href='#n24208'>24208</a>
<a id='n24209' href='#n24209'>24209</a>
<a id='n24210' href='#n24210'>24210</a>
<a id='n24211' href='#n24211'>24211</a>
<a id='n24212' href='#n24212'>24212</a>
<a id='n24213' href='#n24213'>24213</a>
<a id='n24214' href='#n24214'>24214</a>
<a id='n24215' href='#n24215'>24215</a>
<a id='n24216' href='#n24216'>24216</a>
<a id='n24217' href='#n24217'>24217</a>
<a id='n24218' href='#n24218'>24218</a>
<a id='n24219' href='#n24219'>24219</a>
<a id='n24220' href='#n24220'>24220</a>
<a id='n24221' href='#n24221'>24221</a>
<a id='n24222' href='#n24222'>24222</a>
<a id='n24223' href='#n24223'>24223</a>
<a id='n24224' href='#n24224'>24224</a>
<a id='n24225' href='#n24225'>24225</a>
<a id='n24226' href='#n24226'>24226</a>
<a id='n24227' href='#n24227'>24227</a>
<a id='n24228' href='#n24228'>24228</a>
<a id='n24229' href='#n24229'>24229</a>
<a id='n24230' href='#n24230'>24230</a>
<a id='n24231' href='#n24231'>24231</a>
<a id='n24232' href='#n24232'>24232</a>
<a id='n24233' href='#n24233'>24233</a>
<a id='n24234' href='#n24234'>24234</a>
<a id='n24235' href='#n24235'>24235</a>
<a id='n24236' href='#n24236'>24236</a>
<a id='n24237' href='#n24237'>24237</a>
<a id='n24238' href='#n24238'>24238</a>
<a id='n24239' href='#n24239'>24239</a>
<a id='n24240' href='#n24240'>24240</a>
<a id='n24241' href='#n24241'>24241</a>
<a id='n24242' href='#n24242'>24242</a>
<a id='n24243' href='#n24243'>24243</a>
<a id='n24244' href='#n24244'>24244</a>
<a id='n24245' href='#n24245'>24245</a>
<a id='n24246' href='#n24246'>24246</a>
<a id='n24247' href='#n24247'>24247</a>
<a id='n24248' href='#n24248'>24248</a>
<a id='n24249' href='#n24249'>24249</a>
<a id='n24250' href='#n24250'>24250</a>
<a id='n24251' href='#n24251'>24251</a>
<a id='n24252' href='#n24252'>24252</a>
<a id='n24253' href='#n24253'>24253</a>
<a id='n24254' href='#n24254'>24254</a>
<a id='n24255' href='#n24255'>24255</a>
<a id='n24256' href='#n24256'>24256</a>
<a id='n24257' href='#n24257'>24257</a>
<a id='n24258' href='#n24258'>24258</a>
<a id='n24259' href='#n24259'>24259</a>
<a id='n24260' href='#n24260'>24260</a>
<a id='n24261' href='#n24261'>24261</a>
<a id='n24262' href='#n24262'>24262</a>
<a id='n24263' href='#n24263'>24263</a>
<a id='n24264' href='#n24264'>24264</a>
<a id='n24265' href='#n24265'>24265</a>
<a id='n24266' href='#n24266'>24266</a>
<a id='n24267' href='#n24267'>24267</a>
<a id='n24268' href='#n24268'>24268</a>
<a id='n24269' href='#n24269'>24269</a>
<a id='n24270' href='#n24270'>24270</a>
<a id='n24271' href='#n24271'>24271</a>
<a id='n24272' href='#n24272'>24272</a>
<a id='n24273' href='#n24273'>24273</a>
<a id='n24274' href='#n24274'>24274</a>
<a id='n24275' href='#n24275'>24275</a>
<a id='n24276' href='#n24276'>24276</a>
<a id='n24277' href='#n24277'>24277</a>
<a id='n24278' href='#n24278'>24278</a>
<a id='n24279' href='#n24279'>24279</a>
<a id='n24280' href='#n24280'>24280</a>
<a id='n24281' href='#n24281'>24281</a>
<a id='n24282' href='#n24282'>24282</a>
<a id='n24283' href='#n24283'>24283</a>
<a id='n24284' href='#n24284'>24284</a>
<a id='n24285' href='#n24285'>24285</a>
<a id='n24286' href='#n24286'>24286</a>
<a id='n24287' href='#n24287'>24287</a>
<a id='n24288' href='#n24288'>24288</a>
<a id='n24289' href='#n24289'>24289</a>
<a id='n24290' href='#n24290'>24290</a>
<a id='n24291' href='#n24291'>24291</a>
<a id='n24292' href='#n24292'>24292</a>
<a id='n24293' href='#n24293'>24293</a>
<a id='n24294' href='#n24294'>24294</a>
<a id='n24295' href='#n24295'>24295</a>
<a id='n24296' href='#n24296'>24296</a>
<a id='n24297' href='#n24297'>24297</a>
<a id='n24298' href='#n24298'>24298</a>
<a id='n24299' href='#n24299'>24299</a>
<a id='n24300' href='#n24300'>24300</a>
<a id='n24301' href='#n24301'>24301</a>
<a id='n24302' href='#n24302'>24302</a>
<a id='n24303' href='#n24303'>24303</a>
<a id='n24304' href='#n24304'>24304</a>
<a id='n24305' href='#n24305'>24305</a>
<a id='n24306' href='#n24306'>24306</a>
<a id='n24307' href='#n24307'>24307</a>
<a id='n24308' href='#n24308'>24308</a>
<a id='n24309' href='#n24309'>24309</a>
<a id='n24310' href='#n24310'>24310</a>
<a id='n24311' href='#n24311'>24311</a>
<a id='n24312' href='#n24312'>24312</a>
<a id='n24313' href='#n24313'>24313</a>
<a id='n24314' href='#n24314'>24314</a>
<a id='n24315' href='#n24315'>24315</a>
<a id='n24316' href='#n24316'>24316</a>
<a id='n24317' href='#n24317'>24317</a>
<a id='n24318' href='#n24318'>24318</a>
<a id='n24319' href='#n24319'>24319</a>
<a id='n24320' href='#n24320'>24320</a>
<a id='n24321' href='#n24321'>24321</a>
<a id='n24322' href='#n24322'>24322</a>
<a id='n24323' href='#n24323'>24323</a>
<a id='n24324' href='#n24324'>24324</a>
<a id='n24325' href='#n24325'>24325</a>
<a id='n24326' href='#n24326'>24326</a>
<a id='n24327' href='#n24327'>24327</a>
<a id='n24328' href='#n24328'>24328</a>
<a id='n24329' href='#n24329'>24329</a>
<a id='n24330' href='#n24330'>24330</a>
<a id='n24331' href='#n24331'>24331</a>
<a id='n24332' href='#n24332'>24332</a>
<a id='n24333' href='#n24333'>24333</a>
<a id='n24334' href='#n24334'>24334</a>
<a id='n24335' href='#n24335'>24335</a>
<a id='n24336' href='#n24336'>24336</a>
<a id='n24337' href='#n24337'>24337</a>
<a id='n24338' href='#n24338'>24338</a>
<a id='n24339' href='#n24339'>24339</a>
<a id='n24340' href='#n24340'>24340</a>
<a id='n24341' href='#n24341'>24341</a>
<a id='n24342' href='#n24342'>24342</a>
<a id='n24343' href='#n24343'>24343</a>
<a id='n24344' href='#n24344'>24344</a>
<a id='n24345' href='#n24345'>24345</a>
<a id='n24346' href='#n24346'>24346</a>
<a id='n24347' href='#n24347'>24347</a>
<a id='n24348' href='#n24348'>24348</a>
<a id='n24349' href='#n24349'>24349</a>
<a id='n24350' href='#n24350'>24350</a>
<a id='n24351' href='#n24351'>24351</a>
<a id='n24352' href='#n24352'>24352</a>
<a id='n24353' href='#n24353'>24353</a>
<a id='n24354' href='#n24354'>24354</a>
<a id='n24355' href='#n24355'>24355</a>
<a id='n24356' href='#n24356'>24356</a>
<a id='n24357' href='#n24357'>24357</a>
<a id='n24358' href='#n24358'>24358</a>
<a id='n24359' href='#n24359'>24359</a>
<a id='n24360' href='#n24360'>24360</a>
<a id='n24361' href='#n24361'>24361</a>
<a id='n24362' href='#n24362'>24362</a>
<a id='n24363' href='#n24363'>24363</a>
<a id='n24364' href='#n24364'>24364</a>
<a id='n24365' href='#n24365'>24365</a>
<a id='n24366' href='#n24366'>24366</a>
<a id='n24367' href='#n24367'>24367</a>
<a id='n24368' href='#n24368'>24368</a>
<a id='n24369' href='#n24369'>24369</a>
<a id='n24370' href='#n24370'>24370</a>
<a id='n24371' href='#n24371'>24371</a>
<a id='n24372' href='#n24372'>24372</a>
<a id='n24373' href='#n24373'>24373</a>
<a id='n24374' href='#n24374'>24374</a>
<a id='n24375' href='#n24375'>24375</a>
<a id='n24376' href='#n24376'>24376</a>
<a id='n24377' href='#n24377'>24377</a>
<a id='n24378' href='#n24378'>24378</a>
<a id='n24379' href='#n24379'>24379</a>
<a id='n24380' href='#n24380'>24380</a>
<a id='n24381' href='#n24381'>24381</a>
<a id='n24382' href='#n24382'>24382</a>
<a id='n24383' href='#n24383'>24383</a>
<a id='n24384' href='#n24384'>24384</a>
<a id='n24385' href='#n24385'>24385</a>
<a id='n24386' href='#n24386'>24386</a>
<a id='n24387' href='#n24387'>24387</a>
<a id='n24388' href='#n24388'>24388</a>
<a id='n24389' href='#n24389'>24389</a>
<a id='n24390' href='#n24390'>24390</a>
<a id='n24391' href='#n24391'>24391</a>
<a id='n24392' href='#n24392'>24392</a>
<a id='n24393' href='#n24393'>24393</a>
<a id='n24394' href='#n24394'>24394</a>
<a id='n24395' href='#n24395'>24395</a>
<a id='n24396' href='#n24396'>24396</a>
<a id='n24397' href='#n24397'>24397</a>
<a id='n24398' href='#n24398'>24398</a>
<a id='n24399' href='#n24399'>24399</a>
<a id='n24400' href='#n24400'>24400</a>
<a id='n24401' href='#n24401'>24401</a>
<a id='n24402' href='#n24402'>24402</a>
<a id='n24403' href='#n24403'>24403</a>
<a id='n24404' href='#n24404'>24404</a>
<a id='n24405' href='#n24405'>24405</a>
<a id='n24406' href='#n24406'>24406</a>
<a id='n24407' href='#n24407'>24407</a>
<a id='n24408' href='#n24408'>24408</a>
<a id='n24409' href='#n24409'>24409</a>
<a id='n24410' href='#n24410'>24410</a>
<a id='n24411' href='#n24411'>24411</a>
<a id='n24412' href='#n24412'>24412</a>
<a id='n24413' href='#n24413'>24413</a>
<a id='n24414' href='#n24414'>24414</a>
<a id='n24415' href='#n24415'>24415</a>
<a id='n24416' href='#n24416'>24416</a>
<a id='n24417' href='#n24417'>24417</a>
<a id='n24418' href='#n24418'>24418</a>
<a id='n24419' href='#n24419'>24419</a>
<a id='n24420' href='#n24420'>24420</a>
<a id='n24421' href='#n24421'>24421</a>
<a id='n24422' href='#n24422'>24422</a>
<a id='n24423' href='#n24423'>24423</a>
<a id='n24424' href='#n24424'>24424</a>
<a id='n24425' href='#n24425'>24425</a>
<a id='n24426' href='#n24426'>24426</a>
<a id='n24427' href='#n24427'>24427</a>
<a id='n24428' href='#n24428'>24428</a>
<a id='n24429' href='#n24429'>24429</a>
<a id='n24430' href='#n24430'>24430</a>
<a id='n24431' href='#n24431'>24431</a>
<a id='n24432' href='#n24432'>24432</a>
<a id='n24433' href='#n24433'>24433</a>
<a id='n24434' href='#n24434'>24434</a>
<a id='n24435' href='#n24435'>24435</a>
<a id='n24436' href='#n24436'>24436</a>
<a id='n24437' href='#n24437'>24437</a>
<a id='n24438' href='#n24438'>24438</a>
<a id='n24439' href='#n24439'>24439</a>
<a id='n24440' href='#n24440'>24440</a>
<a id='n24441' href='#n24441'>24441</a>
<a id='n24442' href='#n24442'>24442</a>
<a id='n24443' href='#n24443'>24443</a>
<a id='n24444' href='#n24444'>24444</a>
<a id='n24445' href='#n24445'>24445</a>
<a id='n24446' href='#n24446'>24446</a>
<a id='n24447' href='#n24447'>24447</a>
<a id='n24448' href='#n24448'>24448</a>
<a id='n24449' href='#n24449'>24449</a>
<a id='n24450' href='#n24450'>24450</a>
<a id='n24451' href='#n24451'>24451</a>
<a id='n24452' href='#n24452'>24452</a>
<a id='n24453' href='#n24453'>24453</a>
<a id='n24454' href='#n24454'>24454</a>
<a id='n24455' href='#n24455'>24455</a>
<a id='n24456' href='#n24456'>24456</a>
<a id='n24457' href='#n24457'>24457</a>
<a id='n24458' href='#n24458'>24458</a>
<a id='n24459' href='#n24459'>24459</a>
<a id='n24460' href='#n24460'>24460</a>
<a id='n24461' href='#n24461'>24461</a>
<a id='n24462' href='#n24462'>24462</a>
<a id='n24463' href='#n24463'>24463</a>
<a id='n24464' href='#n24464'>24464</a>
<a id='n24465' href='#n24465'>24465</a>
<a id='n24466' href='#n24466'>24466</a>
<a id='n24467' href='#n24467'>24467</a>
<a id='n24468' href='#n24468'>24468</a>
<a id='n24469' href='#n24469'>24469</a>
<a id='n24470' href='#n24470'>24470</a>
<a id='n24471' href='#n24471'>24471</a>
<a id='n24472' href='#n24472'>24472</a>
<a id='n24473' href='#n24473'>24473</a>
<a id='n24474' href='#n24474'>24474</a>
<a id='n24475' href='#n24475'>24475</a>
<a id='n24476' href='#n24476'>24476</a>
<a id='n24477' href='#n24477'>24477</a>
<a id='n24478' href='#n24478'>24478</a>
<a id='n24479' href='#n24479'>24479</a>
<a id='n24480' href='#n24480'>24480</a>
<a id='n24481' href='#n24481'>24481</a>
<a id='n24482' href='#n24482'>24482</a>
<a id='n24483' href='#n24483'>24483</a>
<a id='n24484' href='#n24484'>24484</a>
<a id='n24485' href='#n24485'>24485</a>
<a id='n24486' href='#n24486'>24486</a>
<a id='n24487' href='#n24487'>24487</a>
<a id='n24488' href='#n24488'>24488</a>
<a id='n24489' href='#n24489'>24489</a>
<a id='n24490' href='#n24490'>24490</a>
<a id='n24491' href='#n24491'>24491</a>
<a id='n24492' href='#n24492'>24492</a>
<a id='n24493' href='#n24493'>24493</a>
<a id='n24494' href='#n24494'>24494</a>
<a id='n24495' href='#n24495'>24495</a>
<a id='n24496' href='#n24496'>24496</a>
<a id='n24497' href='#n24497'>24497</a>
<a id='n24498' href='#n24498'>24498</a>
<a id='n24499' href='#n24499'>24499</a>
<a id='n24500' href='#n24500'>24500</a>
<a id='n24501' href='#n24501'>24501</a>
<a id='n24502' href='#n24502'>24502</a>
<a id='n24503' href='#n24503'>24503</a>
<a id='n24504' href='#n24504'>24504</a>
<a id='n24505' href='#n24505'>24505</a>
<a id='n24506' href='#n24506'>24506</a>
<a id='n24507' href='#n24507'>24507</a>
<a id='n24508' href='#n24508'>24508</a>
<a id='n24509' href='#n24509'>24509</a>
<a id='n24510' href='#n24510'>24510</a>
<a id='n24511' href='#n24511'>24511</a>
<a id='n24512' href='#n24512'>24512</a>
<a id='n24513' href='#n24513'>24513</a>
<a id='n24514' href='#n24514'>24514</a>
<a id='n24515' href='#n24515'>24515</a>
<a id='n24516' href='#n24516'>24516</a>
<a id='n24517' href='#n24517'>24517</a>
<a id='n24518' href='#n24518'>24518</a>
<a id='n24519' href='#n24519'>24519</a>
<a id='n24520' href='#n24520'>24520</a>
<a id='n24521' href='#n24521'>24521</a>
<a id='n24522' href='#n24522'>24522</a>
<a id='n24523' href='#n24523'>24523</a>
<a id='n24524' href='#n24524'>24524</a>
<a id='n24525' href='#n24525'>24525</a>
<a id='n24526' href='#n24526'>24526</a>
<a id='n24527' href='#n24527'>24527</a>
<a id='n24528' href='#n24528'>24528</a>
<a id='n24529' href='#n24529'>24529</a>
<a id='n24530' href='#n24530'>24530</a>
<a id='n24531' href='#n24531'>24531</a>
<a id='n24532' href='#n24532'>24532</a>
<a id='n24533' href='#n24533'>24533</a>
<a id='n24534' href='#n24534'>24534</a>
<a id='n24535' href='#n24535'>24535</a>
<a id='n24536' href='#n24536'>24536</a>
<a id='n24537' href='#n24537'>24537</a>
<a id='n24538' href='#n24538'>24538</a>
<a id='n24539' href='#n24539'>24539</a>
<a id='n24540' href='#n24540'>24540</a>
<a id='n24541' href='#n24541'>24541</a>
<a id='n24542' href='#n24542'>24542</a>
<a id='n24543' href='#n24543'>24543</a>
<a id='n24544' href='#n24544'>24544</a>
<a id='n24545' href='#n24545'>24545</a>
<a id='n24546' href='#n24546'>24546</a>
<a id='n24547' href='#n24547'>24547</a>
<a id='n24548' href='#n24548'>24548</a>
<a id='n24549' href='#n24549'>24549</a>
<a id='n24550' href='#n24550'>24550</a>
<a id='n24551' href='#n24551'>24551</a>
<a id='n24552' href='#n24552'>24552</a>
<a id='n24553' href='#n24553'>24553</a>
<a id='n24554' href='#n24554'>24554</a>
<a id='n24555' href='#n24555'>24555</a>
<a id='n24556' href='#n24556'>24556</a>
<a id='n24557' href='#n24557'>24557</a>
<a id='n24558' href='#n24558'>24558</a>
<a id='n24559' href='#n24559'>24559</a>
<a id='n24560' href='#n24560'>24560</a>
<a id='n24561' href='#n24561'>24561</a>
<a id='n24562' href='#n24562'>24562</a>
<a id='n24563' href='#n24563'>24563</a>
<a id='n24564' href='#n24564'>24564</a>
<a id='n24565' href='#n24565'>24565</a>
<a id='n24566' href='#n24566'>24566</a>
<a id='n24567' href='#n24567'>24567</a>
<a id='n24568' href='#n24568'>24568</a>
<a id='n24569' href='#n24569'>24569</a>
<a id='n24570' href='#n24570'>24570</a>
<a id='n24571' href='#n24571'>24571</a>
<a id='n24572' href='#n24572'>24572</a>
<a id='n24573' href='#n24573'>24573</a>
<a id='n24574' href='#n24574'>24574</a>
<a id='n24575' href='#n24575'>24575</a>
<a id='n24576' href='#n24576'>24576</a>
<a id='n24577' href='#n24577'>24577</a>
<a id='n24578' href='#n24578'>24578</a>
<a id='n24579' href='#n24579'>24579</a>
<a id='n24580' href='#n24580'>24580</a>
<a id='n24581' href='#n24581'>24581</a>
<a id='n24582' href='#n24582'>24582</a>
<a id='n24583' href='#n24583'>24583</a>
<a id='n24584' href='#n24584'>24584</a>
<a id='n24585' href='#n24585'>24585</a>
<a id='n24586' href='#n24586'>24586</a>
<a id='n24587' href='#n24587'>24587</a>
<a id='n24588' href='#n24588'>24588</a>
<a id='n24589' href='#n24589'>24589</a>
<a id='n24590' href='#n24590'>24590</a>
<a id='n24591' href='#n24591'>24591</a>
<a id='n24592' href='#n24592'>24592</a>
<a id='n24593' href='#n24593'>24593</a>
<a id='n24594' href='#n24594'>24594</a>
<a id='n24595' href='#n24595'>24595</a>
<a id='n24596' href='#n24596'>24596</a>
<a id='n24597' href='#n24597'>24597</a>
<a id='n24598' href='#n24598'>24598</a>
<a id='n24599' href='#n24599'>24599</a>
<a id='n24600' href='#n24600'>24600</a>
<a id='n24601' href='#n24601'>24601</a>
<a id='n24602' href='#n24602'>24602</a>
<a id='n24603' href='#n24603'>24603</a>
<a id='n24604' href='#n24604'>24604</a>
<a id='n24605' href='#n24605'>24605</a>
<a id='n24606' href='#n24606'>24606</a>
<a id='n24607' href='#n24607'>24607</a>
<a id='n24608' href='#n24608'>24608</a>
<a id='n24609' href='#n24609'>24609</a>
<a id='n24610' href='#n24610'>24610</a>
<a id='n24611' href='#n24611'>24611</a>
<a id='n24612' href='#n24612'>24612</a>
<a id='n24613' href='#n24613'>24613</a>
<a id='n24614' href='#n24614'>24614</a>
<a id='n24615' href='#n24615'>24615</a>
<a id='n24616' href='#n24616'>24616</a>
<a id='n24617' href='#n24617'>24617</a>
<a id='n24618' href='#n24618'>24618</a>
<a id='n24619' href='#n24619'>24619</a>
<a id='n24620' href='#n24620'>24620</a>
<a id='n24621' href='#n24621'>24621</a>
<a id='n24622' href='#n24622'>24622</a>
<a id='n24623' href='#n24623'>24623</a>
<a id='n24624' href='#n24624'>24624</a>
<a id='n24625' href='#n24625'>24625</a>
<a id='n24626' href='#n24626'>24626</a>
<a id='n24627' href='#n24627'>24627</a>
<a id='n24628' href='#n24628'>24628</a>
<a id='n24629' href='#n24629'>24629</a>
<a id='n24630' href='#n24630'>24630</a>
<a id='n24631' href='#n24631'>24631</a>
<a id='n24632' href='#n24632'>24632</a>
<a id='n24633' href='#n24633'>24633</a>
<a id='n24634' href='#n24634'>24634</a>
<a id='n24635' href='#n24635'>24635</a>
<a id='n24636' href='#n24636'>24636</a>
<a id='n24637' href='#n24637'>24637</a>
<a id='n24638' href='#n24638'>24638</a>
<a id='n24639' href='#n24639'>24639</a>
<a id='n24640' href='#n24640'>24640</a>
<a id='n24641' href='#n24641'>24641</a>
<a id='n24642' href='#n24642'>24642</a>
<a id='n24643' href='#n24643'>24643</a>
<a id='n24644' href='#n24644'>24644</a>
<a id='n24645' href='#n24645'>24645</a>
<a id='n24646' href='#n24646'>24646</a>
<a id='n24647' href='#n24647'>24647</a>
<a id='n24648' href='#n24648'>24648</a>
<a id='n24649' href='#n24649'>24649</a>
<a id='n24650' href='#n24650'>24650</a>
<a id='n24651' href='#n24651'>24651</a>
<a id='n24652' href='#n24652'>24652</a>
<a id='n24653' href='#n24653'>24653</a>
<a id='n24654' href='#n24654'>24654</a>
<a id='n24655' href='#n24655'>24655</a>
<a id='n24656' href='#n24656'>24656</a>
<a id='n24657' href='#n24657'>24657</a>
<a id='n24658' href='#n24658'>24658</a>
<a id='n24659' href='#n24659'>24659</a>
<a id='n24660' href='#n24660'>24660</a>
<a id='n24661' href='#n24661'>24661</a>
<a id='n24662' href='#n24662'>24662</a>
<a id='n24663' href='#n24663'>24663</a>
<a id='n24664' href='#n24664'>24664</a>
<a id='n24665' href='#n24665'>24665</a>
<a id='n24666' href='#n24666'>24666</a>
<a id='n24667' href='#n24667'>24667</a>
<a id='n24668' href='#n24668'>24668</a>
<a id='n24669' href='#n24669'>24669</a>
<a id='n24670' href='#n24670'>24670</a>
<a id='n24671' href='#n24671'>24671</a>
<a id='n24672' href='#n24672'>24672</a>
<a id='n24673' href='#n24673'>24673</a>
<a id='n24674' href='#n24674'>24674</a>
<a id='n24675' href='#n24675'>24675</a>
<a id='n24676' href='#n24676'>24676</a>
<a id='n24677' href='#n24677'>24677</a>
<a id='n24678' href='#n24678'>24678</a>
<a id='n24679' href='#n24679'>24679</a>
<a id='n24680' href='#n24680'>24680</a>
<a id='n24681' href='#n24681'>24681</a>
<a id='n24682' href='#n24682'>24682</a>
<a id='n24683' href='#n24683'>24683</a>
<a id='n24684' href='#n24684'>24684</a>
<a id='n24685' href='#n24685'>24685</a>
<a id='n24686' href='#n24686'>24686</a>
<a id='n24687' href='#n24687'>24687</a>
<a id='n24688' href='#n24688'>24688</a>
<a id='n24689' href='#n24689'>24689</a>
<a id='n24690' href='#n24690'>24690</a>
<a id='n24691' href='#n24691'>24691</a>
<a id='n24692' href='#n24692'>24692</a>
<a id='n24693' href='#n24693'>24693</a>
<a id='n24694' href='#n24694'>24694</a>
<a id='n24695' href='#n24695'>24695</a>
<a id='n24696' href='#n24696'>24696</a>
<a id='n24697' href='#n24697'>24697</a>
<a id='n24698' href='#n24698'>24698</a>
<a id='n24699' href='#n24699'>24699</a>
<a id='n24700' href='#n24700'>24700</a>
<a id='n24701' href='#n24701'>24701</a>
<a id='n24702' href='#n24702'>24702</a>
<a id='n24703' href='#n24703'>24703</a>
<a id='n24704' href='#n24704'>24704</a>
<a id='n24705' href='#n24705'>24705</a>
<a id='n24706' href='#n24706'>24706</a>
<a id='n24707' href='#n24707'>24707</a>
<a id='n24708' href='#n24708'>24708</a>
<a id='n24709' href='#n24709'>24709</a>
<a id='n24710' href='#n24710'>24710</a>
<a id='n24711' href='#n24711'>24711</a>
<a id='n24712' href='#n24712'>24712</a>
<a id='n24713' href='#n24713'>24713</a>
<a id='n24714' href='#n24714'>24714</a>
<a id='n24715' href='#n24715'>24715</a>
<a id='n24716' href='#n24716'>24716</a>
<a id='n24717' href='#n24717'>24717</a>
<a id='n24718' href='#n24718'>24718</a>
<a id='n24719' href='#n24719'>24719</a>
<a id='n24720' href='#n24720'>24720</a>
<a id='n24721' href='#n24721'>24721</a>
<a id='n24722' href='#n24722'>24722</a>
<a id='n24723' href='#n24723'>24723</a>
<a id='n24724' href='#n24724'>24724</a>
<a id='n24725' href='#n24725'>24725</a>
<a id='n24726' href='#n24726'>24726</a>
<a id='n24727' href='#n24727'>24727</a>
<a id='n24728' href='#n24728'>24728</a>
<a id='n24729' href='#n24729'>24729</a>
<a id='n24730' href='#n24730'>24730</a>
<a id='n24731' href='#n24731'>24731</a>
<a id='n24732' href='#n24732'>24732</a>
<a id='n24733' href='#n24733'>24733</a>
<a id='n24734' href='#n24734'>24734</a>
<a id='n24735' href='#n24735'>24735</a>
<a id='n24736' href='#n24736'>24736</a>
<a id='n24737' href='#n24737'>24737</a>
<a id='n24738' href='#n24738'>24738</a>
<a id='n24739' href='#n24739'>24739</a>
<a id='n24740' href='#n24740'>24740</a>
<a id='n24741' href='#n24741'>24741</a>
<a id='n24742' href='#n24742'>24742</a>
<a id='n24743' href='#n24743'>24743</a>
<a id='n24744' href='#n24744'>24744</a>
<a id='n24745' href='#n24745'>24745</a>
<a id='n24746' href='#n24746'>24746</a>
<a id='n24747' href='#n24747'>24747</a>
<a id='n24748' href='#n24748'>24748</a>
<a id='n24749' href='#n24749'>24749</a>
<a id='n24750' href='#n24750'>24750</a>
<a id='n24751' href='#n24751'>24751</a>
<a id='n24752' href='#n24752'>24752</a>
<a id='n24753' href='#n24753'>24753</a>
<a id='n24754' href='#n24754'>24754</a>
<a id='n24755' href='#n24755'>24755</a>
<a id='n24756' href='#n24756'>24756</a>
<a id='n24757' href='#n24757'>24757</a>
<a id='n24758' href='#n24758'>24758</a>
<a id='n24759' href='#n24759'>24759</a>
<a id='n24760' href='#n24760'>24760</a>
<a id='n24761' href='#n24761'>24761</a>
<a id='n24762' href='#n24762'>24762</a>
<a id='n24763' href='#n24763'>24763</a>
<a id='n24764' href='#n24764'>24764</a>
<a id='n24765' href='#n24765'>24765</a>
<a id='n24766' href='#n24766'>24766</a>
<a id='n24767' href='#n24767'>24767</a>
<a id='n24768' href='#n24768'>24768</a>
<a id='n24769' href='#n24769'>24769</a>
<a id='n24770' href='#n24770'>24770</a>
<a id='n24771' href='#n24771'>24771</a>
<a id='n24772' href='#n24772'>24772</a>
<a id='n24773' href='#n24773'>24773</a>
<a id='n24774' href='#n24774'>24774</a>
<a id='n24775' href='#n24775'>24775</a>
<a id='n24776' href='#n24776'>24776</a>
<a id='n24777' href='#n24777'>24777</a>
<a id='n24778' href='#n24778'>24778</a>
<a id='n24779' href='#n24779'>24779</a>
<a id='n24780' href='#n24780'>24780</a>
<a id='n24781' href='#n24781'>24781</a>
<a id='n24782' href='#n24782'>24782</a>
<a id='n24783' href='#n24783'>24783</a>
<a id='n24784' href='#n24784'>24784</a>
<a id='n24785' href='#n24785'>24785</a>
<a id='n24786' href='#n24786'>24786</a>
<a id='n24787' href='#n24787'>24787</a>
<a id='n24788' href='#n24788'>24788</a>
<a id='n24789' href='#n24789'>24789</a>
<a id='n24790' href='#n24790'>24790</a>
<a id='n24791' href='#n24791'>24791</a>
<a id='n24792' href='#n24792'>24792</a>
<a id='n24793' href='#n24793'>24793</a>
<a id='n24794' href='#n24794'>24794</a>
<a id='n24795' href='#n24795'>24795</a>
<a id='n24796' href='#n24796'>24796</a>
<a id='n24797' href='#n24797'>24797</a>
<a id='n24798' href='#n24798'>24798</a>
<a id='n24799' href='#n24799'>24799</a>
<a id='n24800' href='#n24800'>24800</a>
<a id='n24801' href='#n24801'>24801</a>
<a id='n24802' href='#n24802'>24802</a>
<a id='n24803' href='#n24803'>24803</a>
<a id='n24804' href='#n24804'>24804</a>
<a id='n24805' href='#n24805'>24805</a>
<a id='n24806' href='#n24806'>24806</a>
<a id='n24807' href='#n24807'>24807</a>
<a id='n24808' href='#n24808'>24808</a>
<a id='n24809' href='#n24809'>24809</a>
<a id='n24810' href='#n24810'>24810</a>
<a id='n24811' href='#n24811'>24811</a>
<a id='n24812' href='#n24812'>24812</a>
<a id='n24813' href='#n24813'>24813</a>
<a id='n24814' href='#n24814'>24814</a>
<a id='n24815' href='#n24815'>24815</a>
<a id='n24816' href='#n24816'>24816</a>
<a id='n24817' href='#n24817'>24817</a>
<a id='n24818' href='#n24818'>24818</a>
<a id='n24819' href='#n24819'>24819</a>
<a id='n24820' href='#n24820'>24820</a>
<a id='n24821' href='#n24821'>24821</a>
<a id='n24822' href='#n24822'>24822</a>
<a id='n24823' href='#n24823'>24823</a>
<a id='n24824' href='#n24824'>24824</a>
<a id='n24825' href='#n24825'>24825</a>
<a id='n24826' href='#n24826'>24826</a>
<a id='n24827' href='#n24827'>24827</a>
<a id='n24828' href='#n24828'>24828</a>
<a id='n24829' href='#n24829'>24829</a>
<a id='n24830' href='#n24830'>24830</a>
<a id='n24831' href='#n24831'>24831</a>
<a id='n24832' href='#n24832'>24832</a>
<a id='n24833' href='#n24833'>24833</a>
<a id='n24834' href='#n24834'>24834</a>
<a id='n24835' href='#n24835'>24835</a>
<a id='n24836' href='#n24836'>24836</a>
<a id='n24837' href='#n24837'>24837</a>
<a id='n24838' href='#n24838'>24838</a>
<a id='n24839' href='#n24839'>24839</a>
<a id='n24840' href='#n24840'>24840</a>
<a id='n24841' href='#n24841'>24841</a>
<a id='n24842' href='#n24842'>24842</a>
<a id='n24843' href='#n24843'>24843</a>
<a id='n24844' href='#n24844'>24844</a>
<a id='n24845' href='#n24845'>24845</a>
<a id='n24846' href='#n24846'>24846</a>
<a id='n24847' href='#n24847'>24847</a>
<a id='n24848' href='#n24848'>24848</a>
<a id='n24849' href='#n24849'>24849</a>
<a id='n24850' href='#n24850'>24850</a>
<a id='n24851' href='#n24851'>24851</a>
<a id='n24852' href='#n24852'>24852</a>
<a id='n24853' href='#n24853'>24853</a>
<a id='n24854' href='#n24854'>24854</a>
<a id='n24855' href='#n24855'>24855</a>
<a id='n24856' href='#n24856'>24856</a>
<a id='n24857' href='#n24857'>24857</a>
<a id='n24858' href='#n24858'>24858</a>
<a id='n24859' href='#n24859'>24859</a>
<a id='n24860' href='#n24860'>24860</a>
<a id='n24861' href='#n24861'>24861</a>
<a id='n24862' href='#n24862'>24862</a>
<a id='n24863' href='#n24863'>24863</a>
<a id='n24864' href='#n24864'>24864</a>
<a id='n24865' href='#n24865'>24865</a>
<a id='n24866' href='#n24866'>24866</a>
<a id='n24867' href='#n24867'>24867</a>
<a id='n24868' href='#n24868'>24868</a>
<a id='n24869' href='#n24869'>24869</a>
<a id='n24870' href='#n24870'>24870</a>
<a id='n24871' href='#n24871'>24871</a>
<a id='n24872' href='#n24872'>24872</a>
<a id='n24873' href='#n24873'>24873</a>
<a id='n24874' href='#n24874'>24874</a>
<a id='n24875' href='#n24875'>24875</a>
<a id='n24876' href='#n24876'>24876</a>
<a id='n24877' href='#n24877'>24877</a>
<a id='n24878' href='#n24878'>24878</a>
<a id='n24879' href='#n24879'>24879</a>
<a id='n24880' href='#n24880'>24880</a>
<a id='n24881' href='#n24881'>24881</a>
<a id='n24882' href='#n24882'>24882</a>
<a id='n24883' href='#n24883'>24883</a>
<a id='n24884' href='#n24884'>24884</a>
<a id='n24885' href='#n24885'>24885</a>
<a id='n24886' href='#n24886'>24886</a>
<a id='n24887' href='#n24887'>24887</a>
<a id='n24888' href='#n24888'>24888</a>
<a id='n24889' href='#n24889'>24889</a>
<a id='n24890' href='#n24890'>24890</a>
<a id='n24891' href='#n24891'>24891</a>
<a id='n24892' href='#n24892'>24892</a>
<a id='n24893' href='#n24893'>24893</a>
<a id='n24894' href='#n24894'>24894</a>
<a id='n24895' href='#n24895'>24895</a>
<a id='n24896' href='#n24896'>24896</a>
<a id='n24897' href='#n24897'>24897</a>
<a id='n24898' href='#n24898'>24898</a>
<a id='n24899' href='#n24899'>24899</a>
<a id='n24900' href='#n24900'>24900</a>
<a id='n24901' href='#n24901'>24901</a>
<a id='n24902' href='#n24902'>24902</a>
<a id='n24903' href='#n24903'>24903</a>
<a id='n24904' href='#n24904'>24904</a>
<a id='n24905' href='#n24905'>24905</a>
<a id='n24906' href='#n24906'>24906</a>
<a id='n24907' href='#n24907'>24907</a>
<a id='n24908' href='#n24908'>24908</a>
<a id='n24909' href='#n24909'>24909</a>
<a id='n24910' href='#n24910'>24910</a>
<a id='n24911' href='#n24911'>24911</a>
<a id='n24912' href='#n24912'>24912</a>
<a id='n24913' href='#n24913'>24913</a>
<a id='n24914' href='#n24914'>24914</a>
<a id='n24915' href='#n24915'>24915</a>
<a id='n24916' href='#n24916'>24916</a>
<a id='n24917' href='#n24917'>24917</a>
<a id='n24918' href='#n24918'>24918</a>
<a id='n24919' href='#n24919'>24919</a>
<a id='n24920' href='#n24920'>24920</a>
<a id='n24921' href='#n24921'>24921</a>
<a id='n24922' href='#n24922'>24922</a>
<a id='n24923' href='#n24923'>24923</a>
<a id='n24924' href='#n24924'>24924</a>
<a id='n24925' href='#n24925'>24925</a>
<a id='n24926' href='#n24926'>24926</a>
<a id='n24927' href='#n24927'>24927</a>
<a id='n24928' href='#n24928'>24928</a>
<a id='n24929' href='#n24929'>24929</a>
<a id='n24930' href='#n24930'>24930</a>
<a id='n24931' href='#n24931'>24931</a>
<a id='n24932' href='#n24932'>24932</a>
<a id='n24933' href='#n24933'>24933</a>
<a id='n24934' href='#n24934'>24934</a>
<a id='n24935' href='#n24935'>24935</a>
<a id='n24936' href='#n24936'>24936</a>
<a id='n24937' href='#n24937'>24937</a>
<a id='n24938' href='#n24938'>24938</a>
<a id='n24939' href='#n24939'>24939</a>
<a id='n24940' href='#n24940'>24940</a>
<a id='n24941' href='#n24941'>24941</a>
<a id='n24942' href='#n24942'>24942</a>
<a id='n24943' href='#n24943'>24943</a>
<a id='n24944' href='#n24944'>24944</a>
<a id='n24945' href='#n24945'>24945</a>
<a id='n24946' href='#n24946'>24946</a>
<a id='n24947' href='#n24947'>24947</a>
<a id='n24948' href='#n24948'>24948</a>
<a id='n24949' href='#n24949'>24949</a>
<a id='n24950' href='#n24950'>24950</a>
<a id='n24951' href='#n24951'>24951</a>
<a id='n24952' href='#n24952'>24952</a>
<a id='n24953' href='#n24953'>24953</a>
<a id='n24954' href='#n24954'>24954</a>
<a id='n24955' href='#n24955'>24955</a>
<a id='n24956' href='#n24956'>24956</a>
<a id='n24957' href='#n24957'>24957</a>
<a id='n24958' href='#n24958'>24958</a>
<a id='n24959' href='#n24959'>24959</a>
<a id='n24960' href='#n24960'>24960</a>
<a id='n24961' href='#n24961'>24961</a>
<a id='n24962' href='#n24962'>24962</a>
<a id='n24963' href='#n24963'>24963</a>
<a id='n24964' href='#n24964'>24964</a>
<a id='n24965' href='#n24965'>24965</a>
<a id='n24966' href='#n24966'>24966</a>
<a id='n24967' href='#n24967'>24967</a>
<a id='n24968' href='#n24968'>24968</a>
<a id='n24969' href='#n24969'>24969</a>
<a id='n24970' href='#n24970'>24970</a>
<a id='n24971' href='#n24971'>24971</a>
<a id='n24972' href='#n24972'>24972</a>
<a id='n24973' href='#n24973'>24973</a>
<a id='n24974' href='#n24974'>24974</a>
<a id='n24975' href='#n24975'>24975</a>
<a id='n24976' href='#n24976'>24976</a>
<a id='n24977' href='#n24977'>24977</a>
<a id='n24978' href='#n24978'>24978</a>
<a id='n24979' href='#n24979'>24979</a>
<a id='n24980' href='#n24980'>24980</a>
<a id='n24981' href='#n24981'>24981</a>
<a id='n24982' href='#n24982'>24982</a>
<a id='n24983' href='#n24983'>24983</a>
<a id='n24984' href='#n24984'>24984</a>
<a id='n24985' href='#n24985'>24985</a>
<a id='n24986' href='#n24986'>24986</a>
<a id='n24987' href='#n24987'>24987</a>
<a id='n24988' href='#n24988'>24988</a>
<a id='n24989' href='#n24989'>24989</a>
<a id='n24990' href='#n24990'>24990</a>
<a id='n24991' href='#n24991'>24991</a>
<a id='n24992' href='#n24992'>24992</a>
<a id='n24993' href='#n24993'>24993</a>
<a id='n24994' href='#n24994'>24994</a>
<a id='n24995' href='#n24995'>24995</a>
<a id='n24996' href='#n24996'>24996</a>
<a id='n24997' href='#n24997'>24997</a>
<a id='n24998' href='#n24998'>24998</a>
<a id='n24999' href='#n24999'>24999</a>
<a id='n25000' href='#n25000'>25000</a>
<a id='n25001' href='#n25001'>25001</a>
<a id='n25002' href='#n25002'>25002</a>
<a id='n25003' href='#n25003'>25003</a>
<a id='n25004' href='#n25004'>25004</a>
<a id='n25005' href='#n25005'>25005</a>
<a id='n25006' href='#n25006'>25006</a>
<a id='n25007' href='#n25007'>25007</a>
<a id='n25008' href='#n25008'>25008</a>
<a id='n25009' href='#n25009'>25009</a>
<a id='n25010' href='#n25010'>25010</a>
<a id='n25011' href='#n25011'>25011</a>
<a id='n25012' href='#n25012'>25012</a>
<a id='n25013' href='#n25013'>25013</a>
<a id='n25014' href='#n25014'>25014</a>
<a id='n25015' href='#n25015'>25015</a>
<a id='n25016' href='#n25016'>25016</a>
<a id='n25017' href='#n25017'>25017</a>
<a id='n25018' href='#n25018'>25018</a>
<a id='n25019' href='#n25019'>25019</a>
<a id='n25020' href='#n25020'>25020</a>
<a id='n25021' href='#n25021'>25021</a>
<a id='n25022' href='#n25022'>25022</a>
<a id='n25023' href='#n25023'>25023</a>
<a id='n25024' href='#n25024'>25024</a>
<a id='n25025' href='#n25025'>25025</a>
<a id='n25026' href='#n25026'>25026</a>
<a id='n25027' href='#n25027'>25027</a>
<a id='n25028' href='#n25028'>25028</a>
<a id='n25029' href='#n25029'>25029</a>
<a id='n25030' href='#n25030'>25030</a>
<a id='n25031' href='#n25031'>25031</a>
<a id='n25032' href='#n25032'>25032</a>
<a id='n25033' href='#n25033'>25033</a>
<a id='n25034' href='#n25034'>25034</a>
<a id='n25035' href='#n25035'>25035</a>
<a id='n25036' href='#n25036'>25036</a>
<a id='n25037' href='#n25037'>25037</a>
<a id='n25038' href='#n25038'>25038</a>
<a id='n25039' href='#n25039'>25039</a>
<a id='n25040' href='#n25040'>25040</a>
<a id='n25041' href='#n25041'>25041</a>
<a id='n25042' href='#n25042'>25042</a>
<a id='n25043' href='#n25043'>25043</a>
<a id='n25044' href='#n25044'>25044</a>
<a id='n25045' href='#n25045'>25045</a>
<a id='n25046' href='#n25046'>25046</a>
<a id='n25047' href='#n25047'>25047</a>
<a id='n25048' href='#n25048'>25048</a>
<a id='n25049' href='#n25049'>25049</a>
<a id='n25050' href='#n25050'>25050</a>
<a id='n25051' href='#n25051'>25051</a>
<a id='n25052' href='#n25052'>25052</a>
<a id='n25053' href='#n25053'>25053</a>
<a id='n25054' href='#n25054'>25054</a>
<a id='n25055' href='#n25055'>25055</a>
<a id='n25056' href='#n25056'>25056</a>
<a id='n25057' href='#n25057'>25057</a>
<a id='n25058' href='#n25058'>25058</a>
<a id='n25059' href='#n25059'>25059</a>
<a id='n25060' href='#n25060'>25060</a>
<a id='n25061' href='#n25061'>25061</a>
<a id='n25062' href='#n25062'>25062</a>
<a id='n25063' href='#n25063'>25063</a>
<a id='n25064' href='#n25064'>25064</a>
<a id='n25065' href='#n25065'>25065</a>
<a id='n25066' href='#n25066'>25066</a>
<a id='n25067' href='#n25067'>25067</a>
<a id='n25068' href='#n25068'>25068</a>
<a id='n25069' href='#n25069'>25069</a>
<a id='n25070' href='#n25070'>25070</a>
<a id='n25071' href='#n25071'>25071</a>
<a id='n25072' href='#n25072'>25072</a>
<a id='n25073' href='#n25073'>25073</a>
<a id='n25074' href='#n25074'>25074</a>
<a id='n25075' href='#n25075'>25075</a>
<a id='n25076' href='#n25076'>25076</a>
<a id='n25077' href='#n25077'>25077</a>
<a id='n25078' href='#n25078'>25078</a>
<a id='n25079' href='#n25079'>25079</a>
<a id='n25080' href='#n25080'>25080</a>
<a id='n25081' href='#n25081'>25081</a>
<a id='n25082' href='#n25082'>25082</a>
<a id='n25083' href='#n25083'>25083</a>
<a id='n25084' href='#n25084'>25084</a>
<a id='n25085' href='#n25085'>25085</a>
<a id='n25086' href='#n25086'>25086</a>
<a id='n25087' href='#n25087'>25087</a>
<a id='n25088' href='#n25088'>25088</a>
<a id='n25089' href='#n25089'>25089</a>
<a id='n25090' href='#n25090'>25090</a>
<a id='n25091' href='#n25091'>25091</a>
<a id='n25092' href='#n25092'>25092</a>
<a id='n25093' href='#n25093'>25093</a>
<a id='n25094' href='#n25094'>25094</a>
<a id='n25095' href='#n25095'>25095</a>
<a id='n25096' href='#n25096'>25096</a>
<a id='n25097' href='#n25097'>25097</a>
<a id='n25098' href='#n25098'>25098</a>
<a id='n25099' href='#n25099'>25099</a>
<a id='n25100' href='#n25100'>25100</a>
<a id='n25101' href='#n25101'>25101</a>
<a id='n25102' href='#n25102'>25102</a>
<a id='n25103' href='#n25103'>25103</a>
<a id='n25104' href='#n25104'>25104</a>
<a id='n25105' href='#n25105'>25105</a>
<a id='n25106' href='#n25106'>25106</a>
<a id='n25107' href='#n25107'>25107</a>
<a id='n25108' href='#n25108'>25108</a>
<a id='n25109' href='#n25109'>25109</a>
<a id='n25110' href='#n25110'>25110</a>
<a id='n25111' href='#n25111'>25111</a>
<a id='n25112' href='#n25112'>25112</a>
<a id='n25113' href='#n25113'>25113</a>
<a id='n25114' href='#n25114'>25114</a>
<a id='n25115' href='#n25115'>25115</a>
<a id='n25116' href='#n25116'>25116</a>
<a id='n25117' href='#n25117'>25117</a>
<a id='n25118' href='#n25118'>25118</a>
<a id='n25119' href='#n25119'>25119</a>
<a id='n25120' href='#n25120'>25120</a>
<a id='n25121' href='#n25121'>25121</a>
<a id='n25122' href='#n25122'>25122</a>
<a id='n25123' href='#n25123'>25123</a>
<a id='n25124' href='#n25124'>25124</a>
<a id='n25125' href='#n25125'>25125</a>
<a id='n25126' href='#n25126'>25126</a>
<a id='n25127' href='#n25127'>25127</a>
<a id='n25128' href='#n25128'>25128</a>
<a id='n25129' href='#n25129'>25129</a>
<a id='n25130' href='#n25130'>25130</a>
<a id='n25131' href='#n25131'>25131</a>
<a id='n25132' href='#n25132'>25132</a>
<a id='n25133' href='#n25133'>25133</a>
<a id='n25134' href='#n25134'>25134</a>
<a id='n25135' href='#n25135'>25135</a>
<a id='n25136' href='#n25136'>25136</a>
<a id='n25137' href='#n25137'>25137</a>
<a id='n25138' href='#n25138'>25138</a>
<a id='n25139' href='#n25139'>25139</a>
<a id='n25140' href='#n25140'>25140</a>
<a id='n25141' href='#n25141'>25141</a>
<a id='n25142' href='#n25142'>25142</a>
<a id='n25143' href='#n25143'>25143</a>
<a id='n25144' href='#n25144'>25144</a>
<a id='n25145' href='#n25145'>25145</a>
<a id='n25146' href='#n25146'>25146</a>
<a id='n25147' href='#n25147'>25147</a>
<a id='n25148' href='#n25148'>25148</a>
<a id='n25149' href='#n25149'>25149</a>
<a id='n25150' href='#n25150'>25150</a>
<a id='n25151' href='#n25151'>25151</a>
<a id='n25152' href='#n25152'>25152</a>
<a id='n25153' href='#n25153'>25153</a>
<a id='n25154' href='#n25154'>25154</a>
<a id='n25155' href='#n25155'>25155</a>
<a id='n25156' href='#n25156'>25156</a>
<a id='n25157' href='#n25157'>25157</a>
<a id='n25158' href='#n25158'>25158</a>
<a id='n25159' href='#n25159'>25159</a>
<a id='n25160' href='#n25160'>25160</a>
<a id='n25161' href='#n25161'>25161</a>
<a id='n25162' href='#n25162'>25162</a>
<a id='n25163' href='#n25163'>25163</a>
<a id='n25164' href='#n25164'>25164</a>
<a id='n25165' href='#n25165'>25165</a>
<a id='n25166' href='#n25166'>25166</a>
<a id='n25167' href='#n25167'>25167</a>
<a id='n25168' href='#n25168'>25168</a>
<a id='n25169' href='#n25169'>25169</a>
<a id='n25170' href='#n25170'>25170</a>
<a id='n25171' href='#n25171'>25171</a>
<a id='n25172' href='#n25172'>25172</a>
<a id='n25173' href='#n25173'>25173</a>
<a id='n25174' href='#n25174'>25174</a>
<a id='n25175' href='#n25175'>25175</a>
<a id='n25176' href='#n25176'>25176</a>
<a id='n25177' href='#n25177'>25177</a>
<a id='n25178' href='#n25178'>25178</a>
<a id='n25179' href='#n25179'>25179</a>
<a id='n25180' href='#n25180'>25180</a>
<a id='n25181' href='#n25181'>25181</a>
<a id='n25182' href='#n25182'>25182</a>
<a id='n25183' href='#n25183'>25183</a>
<a id='n25184' href='#n25184'>25184</a>
<a id='n25185' href='#n25185'>25185</a>
<a id='n25186' href='#n25186'>25186</a>
<a id='n25187' href='#n25187'>25187</a>
<a id='n25188' href='#n25188'>25188</a>
<a id='n25189' href='#n25189'>25189</a>
<a id='n25190' href='#n25190'>25190</a>
<a id='n25191' href='#n25191'>25191</a>
<a id='n25192' href='#n25192'>25192</a>
<a id='n25193' href='#n25193'>25193</a>
<a id='n25194' href='#n25194'>25194</a>
<a id='n25195' href='#n25195'>25195</a>
<a id='n25196' href='#n25196'>25196</a>
<a id='n25197' href='#n25197'>25197</a>
<a id='n25198' href='#n25198'>25198</a>
<a id='n25199' href='#n25199'>25199</a>
<a id='n25200' href='#n25200'>25200</a>
<a id='n25201' href='#n25201'>25201</a>
<a id='n25202' href='#n25202'>25202</a>
<a id='n25203' href='#n25203'>25203</a>
<a id='n25204' href='#n25204'>25204</a>
<a id='n25205' href='#n25205'>25205</a>
<a id='n25206' href='#n25206'>25206</a>
<a id='n25207' href='#n25207'>25207</a>
<a id='n25208' href='#n25208'>25208</a>
<a id='n25209' href='#n25209'>25209</a>
<a id='n25210' href='#n25210'>25210</a>
<a id='n25211' href='#n25211'>25211</a>
<a id='n25212' href='#n25212'>25212</a>
<a id='n25213' href='#n25213'>25213</a>
<a id='n25214' href='#n25214'>25214</a>
<a id='n25215' href='#n25215'>25215</a>
<a id='n25216' href='#n25216'>25216</a>
<a id='n25217' href='#n25217'>25217</a>
<a id='n25218' href='#n25218'>25218</a>
<a id='n25219' href='#n25219'>25219</a>
<a id='n25220' href='#n25220'>25220</a>
<a id='n25221' href='#n25221'>25221</a>
<a id='n25222' href='#n25222'>25222</a>
<a id='n25223' href='#n25223'>25223</a>
<a id='n25224' href='#n25224'>25224</a>
<a id='n25225' href='#n25225'>25225</a>
<a id='n25226' href='#n25226'>25226</a>
<a id='n25227' href='#n25227'>25227</a>
<a id='n25228' href='#n25228'>25228</a>
<a id='n25229' href='#n25229'>25229</a>
<a id='n25230' href='#n25230'>25230</a>
<a id='n25231' href='#n25231'>25231</a>
<a id='n25232' href='#n25232'>25232</a>
<a id='n25233' href='#n25233'>25233</a>
<a id='n25234' href='#n25234'>25234</a>
<a id='n25235' href='#n25235'>25235</a>
<a id='n25236' href='#n25236'>25236</a>
<a id='n25237' href='#n25237'>25237</a>
<a id='n25238' href='#n25238'>25238</a>
<a id='n25239' href='#n25239'>25239</a>
<a id='n25240' href='#n25240'>25240</a>
<a id='n25241' href='#n25241'>25241</a>
<a id='n25242' href='#n25242'>25242</a>
<a id='n25243' href='#n25243'>25243</a>
<a id='n25244' href='#n25244'>25244</a>
<a id='n25245' href='#n25245'>25245</a>
<a id='n25246' href='#n25246'>25246</a>
<a id='n25247' href='#n25247'>25247</a>
<a id='n25248' href='#n25248'>25248</a>
<a id='n25249' href='#n25249'>25249</a>
<a id='n25250' href='#n25250'>25250</a>
<a id='n25251' href='#n25251'>25251</a>
<a id='n25252' href='#n25252'>25252</a>
<a id='n25253' href='#n25253'>25253</a>
<a id='n25254' href='#n25254'>25254</a>
<a id='n25255' href='#n25255'>25255</a>
<a id='n25256' href='#n25256'>25256</a>
<a id='n25257' href='#n25257'>25257</a>
<a id='n25258' href='#n25258'>25258</a>
<a id='n25259' href='#n25259'>25259</a>
<a id='n25260' href='#n25260'>25260</a>
<a id='n25261' href='#n25261'>25261</a>
<a id='n25262' href='#n25262'>25262</a>
<a id='n25263' href='#n25263'>25263</a>
<a id='n25264' href='#n25264'>25264</a>
<a id='n25265' href='#n25265'>25265</a>
<a id='n25266' href='#n25266'>25266</a>
<a id='n25267' href='#n25267'>25267</a>
<a id='n25268' href='#n25268'>25268</a>
<a id='n25269' href='#n25269'>25269</a>
<a id='n25270' href='#n25270'>25270</a>
<a id='n25271' href='#n25271'>25271</a>
<a id='n25272' href='#n25272'>25272</a>
<a id='n25273' href='#n25273'>25273</a>
<a id='n25274' href='#n25274'>25274</a>
<a id='n25275' href='#n25275'>25275</a>
<a id='n25276' href='#n25276'>25276</a>
<a id='n25277' href='#n25277'>25277</a>
<a id='n25278' href='#n25278'>25278</a>
<a id='n25279' href='#n25279'>25279</a>
<a id='n25280' href='#n25280'>25280</a>
<a id='n25281' href='#n25281'>25281</a>
<a id='n25282' href='#n25282'>25282</a>
<a id='n25283' href='#n25283'>25283</a>
<a id='n25284' href='#n25284'>25284</a>
<a id='n25285' href='#n25285'>25285</a>
<a id='n25286' href='#n25286'>25286</a>
<a id='n25287' href='#n25287'>25287</a>
<a id='n25288' href='#n25288'>25288</a>
<a id='n25289' href='#n25289'>25289</a>
<a id='n25290' href='#n25290'>25290</a>
<a id='n25291' href='#n25291'>25291</a>
<a id='n25292' href='#n25292'>25292</a>
<a id='n25293' href='#n25293'>25293</a>
<a id='n25294' href='#n25294'>25294</a>
<a id='n25295' href='#n25295'>25295</a>
<a id='n25296' href='#n25296'>25296</a>
<a id='n25297' href='#n25297'>25297</a>
<a id='n25298' href='#n25298'>25298</a>
<a id='n25299' href='#n25299'>25299</a>
<a id='n25300' href='#n25300'>25300</a>
<a id='n25301' href='#n25301'>25301</a>
<a id='n25302' href='#n25302'>25302</a>
<a id='n25303' href='#n25303'>25303</a>
<a id='n25304' href='#n25304'>25304</a>
<a id='n25305' href='#n25305'>25305</a>
<a id='n25306' href='#n25306'>25306</a>
<a id='n25307' href='#n25307'>25307</a>
<a id='n25308' href='#n25308'>25308</a>
<a id='n25309' href='#n25309'>25309</a>
<a id='n25310' href='#n25310'>25310</a>
<a id='n25311' href='#n25311'>25311</a>
<a id='n25312' href='#n25312'>25312</a>
<a id='n25313' href='#n25313'>25313</a>
<a id='n25314' href='#n25314'>25314</a>
<a id='n25315' href='#n25315'>25315</a>
<a id='n25316' href='#n25316'>25316</a>
<a id='n25317' href='#n25317'>25317</a>
<a id='n25318' href='#n25318'>25318</a>
<a id='n25319' href='#n25319'>25319</a>
<a id='n25320' href='#n25320'>25320</a>
<a id='n25321' href='#n25321'>25321</a>
<a id='n25322' href='#n25322'>25322</a>
<a id='n25323' href='#n25323'>25323</a>
<a id='n25324' href='#n25324'>25324</a>
<a id='n25325' href='#n25325'>25325</a>
<a id='n25326' href='#n25326'>25326</a>
<a id='n25327' href='#n25327'>25327</a>
<a id='n25328' href='#n25328'>25328</a>
<a id='n25329' href='#n25329'>25329</a>
<a id='n25330' href='#n25330'>25330</a>
<a id='n25331' href='#n25331'>25331</a>
<a id='n25332' href='#n25332'>25332</a>
<a id='n25333' href='#n25333'>25333</a>
<a id='n25334' href='#n25334'>25334</a>
<a id='n25335' href='#n25335'>25335</a>
<a id='n25336' href='#n25336'>25336</a>
<a id='n25337' href='#n25337'>25337</a>
<a id='n25338' href='#n25338'>25338</a>
<a id='n25339' href='#n25339'>25339</a>
<a id='n25340' href='#n25340'>25340</a>
<a id='n25341' href='#n25341'>25341</a>
<a id='n25342' href='#n25342'>25342</a>
<a id='n25343' href='#n25343'>25343</a>
<a id='n25344' href='#n25344'>25344</a>
<a id='n25345' href='#n25345'>25345</a>
<a id='n25346' href='#n25346'>25346</a>
<a id='n25347' href='#n25347'>25347</a>
<a id='n25348' href='#n25348'>25348</a>
<a id='n25349' href='#n25349'>25349</a>
<a id='n25350' href='#n25350'>25350</a>
<a id='n25351' href='#n25351'>25351</a>
<a id='n25352' href='#n25352'>25352</a>
<a id='n25353' href='#n25353'>25353</a>
<a id='n25354' href='#n25354'>25354</a>
<a id='n25355' href='#n25355'>25355</a>
<a id='n25356' href='#n25356'>25356</a>
<a id='n25357' href='#n25357'>25357</a>
<a id='n25358' href='#n25358'>25358</a>
<a id='n25359' href='#n25359'>25359</a>
<a id='n25360' href='#n25360'>25360</a>
<a id='n25361' href='#n25361'>25361</a>
<a id='n25362' href='#n25362'>25362</a>
<a id='n25363' href='#n25363'>25363</a>
<a id='n25364' href='#n25364'>25364</a>
<a id='n25365' href='#n25365'>25365</a>
<a id='n25366' href='#n25366'>25366</a>
<a id='n25367' href='#n25367'>25367</a>
<a id='n25368' href='#n25368'>25368</a>
<a id='n25369' href='#n25369'>25369</a>
<a id='n25370' href='#n25370'>25370</a>
<a id='n25371' href='#n25371'>25371</a>
<a id='n25372' href='#n25372'>25372</a>
<a id='n25373' href='#n25373'>25373</a>
<a id='n25374' href='#n25374'>25374</a>
<a id='n25375' href='#n25375'>25375</a>
<a id='n25376' href='#n25376'>25376</a>
<a id='n25377' href='#n25377'>25377</a>
<a id='n25378' href='#n25378'>25378</a>
<a id='n25379' href='#n25379'>25379</a>
<a id='n25380' href='#n25380'>25380</a>
<a id='n25381' href='#n25381'>25381</a>
<a id='n25382' href='#n25382'>25382</a>
<a id='n25383' href='#n25383'>25383</a>
<a id='n25384' href='#n25384'>25384</a>
<a id='n25385' href='#n25385'>25385</a>
<a id='n25386' href='#n25386'>25386</a>
<a id='n25387' href='#n25387'>25387</a>
<a id='n25388' href='#n25388'>25388</a>
<a id='n25389' href='#n25389'>25389</a>
<a id='n25390' href='#n25390'>25390</a>
<a id='n25391' href='#n25391'>25391</a>
<a id='n25392' href='#n25392'>25392</a>
<a id='n25393' href='#n25393'>25393</a>
<a id='n25394' href='#n25394'>25394</a>
<a id='n25395' href='#n25395'>25395</a>
<a id='n25396' href='#n25396'>25396</a>
<a id='n25397' href='#n25397'>25397</a>
<a id='n25398' href='#n25398'>25398</a>
<a id='n25399' href='#n25399'>25399</a>
<a id='n25400' href='#n25400'>25400</a>
<a id='n25401' href='#n25401'>25401</a>
<a id='n25402' href='#n25402'>25402</a>
<a id='n25403' href='#n25403'>25403</a>
<a id='n25404' href='#n25404'>25404</a>
<a id='n25405' href='#n25405'>25405</a>
<a id='n25406' href='#n25406'>25406</a>
<a id='n25407' href='#n25407'>25407</a>
<a id='n25408' href='#n25408'>25408</a>
<a id='n25409' href='#n25409'>25409</a>
<a id='n25410' href='#n25410'>25410</a>
<a id='n25411' href='#n25411'>25411</a>
<a id='n25412' href='#n25412'>25412</a>
<a id='n25413' href='#n25413'>25413</a>
<a id='n25414' href='#n25414'>25414</a>
<a id='n25415' href='#n25415'>25415</a>
<a id='n25416' href='#n25416'>25416</a>
<a id='n25417' href='#n25417'>25417</a>
<a id='n25418' href='#n25418'>25418</a>
<a id='n25419' href='#n25419'>25419</a>
<a id='n25420' href='#n25420'>25420</a>
<a id='n25421' href='#n25421'>25421</a>
<a id='n25422' href='#n25422'>25422</a>
<a id='n25423' href='#n25423'>25423</a>
<a id='n25424' href='#n25424'>25424</a>
<a id='n25425' href='#n25425'>25425</a>
<a id='n25426' href='#n25426'>25426</a>
<a id='n25427' href='#n25427'>25427</a>
<a id='n25428' href='#n25428'>25428</a>
<a id='n25429' href='#n25429'>25429</a>
<a id='n25430' href='#n25430'>25430</a>
<a id='n25431' href='#n25431'>25431</a>
<a id='n25432' href='#n25432'>25432</a>
<a id='n25433' href='#n25433'>25433</a>
<a id='n25434' href='#n25434'>25434</a>
<a id='n25435' href='#n25435'>25435</a>
<a id='n25436' href='#n25436'>25436</a>
<a id='n25437' href='#n25437'>25437</a>
<a id='n25438' href='#n25438'>25438</a>
<a id='n25439' href='#n25439'>25439</a>
<a id='n25440' href='#n25440'>25440</a>
<a id='n25441' href='#n25441'>25441</a>
<a id='n25442' href='#n25442'>25442</a>
<a id='n25443' href='#n25443'>25443</a>
<a id='n25444' href='#n25444'>25444</a>
<a id='n25445' href='#n25445'>25445</a>
<a id='n25446' href='#n25446'>25446</a>
<a id='n25447' href='#n25447'>25447</a>
<a id='n25448' href='#n25448'>25448</a>
<a id='n25449' href='#n25449'>25449</a>
<a id='n25450' href='#n25450'>25450</a>
<a id='n25451' href='#n25451'>25451</a>
<a id='n25452' href='#n25452'>25452</a>
<a id='n25453' href='#n25453'>25453</a>
<a id='n25454' href='#n25454'>25454</a>
<a id='n25455' href='#n25455'>25455</a>
<a id='n25456' href='#n25456'>25456</a>
<a id='n25457' href='#n25457'>25457</a>
<a id='n25458' href='#n25458'>25458</a>
<a id='n25459' href='#n25459'>25459</a>
<a id='n25460' href='#n25460'>25460</a>
<a id='n25461' href='#n25461'>25461</a>
<a id='n25462' href='#n25462'>25462</a>
<a id='n25463' href='#n25463'>25463</a>
<a id='n25464' href='#n25464'>25464</a>
<a id='n25465' href='#n25465'>25465</a>
<a id='n25466' href='#n25466'>25466</a>
<a id='n25467' href='#n25467'>25467</a>
<a id='n25468' href='#n25468'>25468</a>
<a id='n25469' href='#n25469'>25469</a>
<a id='n25470' href='#n25470'>25470</a>
<a id='n25471' href='#n25471'>25471</a>
<a id='n25472' href='#n25472'>25472</a>
<a id='n25473' href='#n25473'>25473</a>
<a id='n25474' href='#n25474'>25474</a>
<a id='n25475' href='#n25475'>25475</a>
<a id='n25476' href='#n25476'>25476</a>
<a id='n25477' href='#n25477'>25477</a>
<a id='n25478' href='#n25478'>25478</a>
<a id='n25479' href='#n25479'>25479</a>
<a id='n25480' href='#n25480'>25480</a>
<a id='n25481' href='#n25481'>25481</a>
<a id='n25482' href='#n25482'>25482</a>
<a id='n25483' href='#n25483'>25483</a>
<a id='n25484' href='#n25484'>25484</a>
<a id='n25485' href='#n25485'>25485</a>
<a id='n25486' href='#n25486'>25486</a>
<a id='n25487' href='#n25487'>25487</a>
<a id='n25488' href='#n25488'>25488</a>
<a id='n25489' href='#n25489'>25489</a>
<a id='n25490' href='#n25490'>25490</a>
<a id='n25491' href='#n25491'>25491</a>
<a id='n25492' href='#n25492'>25492</a>
<a id='n25493' href='#n25493'>25493</a>
<a id='n25494' href='#n25494'>25494</a>
<a id='n25495' href='#n25495'>25495</a>
<a id='n25496' href='#n25496'>25496</a>
<a id='n25497' href='#n25497'>25497</a>
<a id='n25498' href='#n25498'>25498</a>
<a id='n25499' href='#n25499'>25499</a>
<a id='n25500' href='#n25500'>25500</a>
<a id='n25501' href='#n25501'>25501</a>
<a id='n25502' href='#n25502'>25502</a>
<a id='n25503' href='#n25503'>25503</a>
<a id='n25504' href='#n25504'>25504</a>
<a id='n25505' href='#n25505'>25505</a>
<a id='n25506' href='#n25506'>25506</a>
<a id='n25507' href='#n25507'>25507</a>
<a id='n25508' href='#n25508'>25508</a>
<a id='n25509' href='#n25509'>25509</a>
<a id='n25510' href='#n25510'>25510</a>
<a id='n25511' href='#n25511'>25511</a>
<a id='n25512' href='#n25512'>25512</a>
<a id='n25513' href='#n25513'>25513</a>
<a id='n25514' href='#n25514'>25514</a>
<a id='n25515' href='#n25515'>25515</a>
<a id='n25516' href='#n25516'>25516</a>
<a id='n25517' href='#n25517'>25517</a>
<a id='n25518' href='#n25518'>25518</a>
<a id='n25519' href='#n25519'>25519</a>
<a id='n25520' href='#n25520'>25520</a>
<a id='n25521' href='#n25521'>25521</a>
<a id='n25522' href='#n25522'>25522</a>
<a id='n25523' href='#n25523'>25523</a>
<a id='n25524' href='#n25524'>25524</a>
<a id='n25525' href='#n25525'>25525</a>
<a id='n25526' href='#n25526'>25526</a>
<a id='n25527' href='#n25527'>25527</a>
<a id='n25528' href='#n25528'>25528</a>
<a id='n25529' href='#n25529'>25529</a>
<a id='n25530' href='#n25530'>25530</a>
<a id='n25531' href='#n25531'>25531</a>
<a id='n25532' href='#n25532'>25532</a>
<a id='n25533' href='#n25533'>25533</a>
<a id='n25534' href='#n25534'>25534</a>
<a id='n25535' href='#n25535'>25535</a>
<a id='n25536' href='#n25536'>25536</a>
<a id='n25537' href='#n25537'>25537</a>
<a id='n25538' href='#n25538'>25538</a>
<a id='n25539' href='#n25539'>25539</a>
<a id='n25540' href='#n25540'>25540</a>
<a id='n25541' href='#n25541'>25541</a>
<a id='n25542' href='#n25542'>25542</a>
<a id='n25543' href='#n25543'>25543</a>
<a id='n25544' href='#n25544'>25544</a>
<a id='n25545' href='#n25545'>25545</a>
<a id='n25546' href='#n25546'>25546</a>
<a id='n25547' href='#n25547'>25547</a>
<a id='n25548' href='#n25548'>25548</a>
<a id='n25549' href='#n25549'>25549</a>
<a id='n25550' href='#n25550'>25550</a>
<a id='n25551' href='#n25551'>25551</a>
<a id='n25552' href='#n25552'>25552</a>
<a id='n25553' href='#n25553'>25553</a>
<a id='n25554' href='#n25554'>25554</a>
<a id='n25555' href='#n25555'>25555</a>
<a id='n25556' href='#n25556'>25556</a>
<a id='n25557' href='#n25557'>25557</a>
<a id='n25558' href='#n25558'>25558</a>
<a id='n25559' href='#n25559'>25559</a>
<a id='n25560' href='#n25560'>25560</a>
<a id='n25561' href='#n25561'>25561</a>
<a id='n25562' href='#n25562'>25562</a>
<a id='n25563' href='#n25563'>25563</a>
<a id='n25564' href='#n25564'>25564</a>
<a id='n25565' href='#n25565'>25565</a>
<a id='n25566' href='#n25566'>25566</a>
<a id='n25567' href='#n25567'>25567</a>
<a id='n25568' href='#n25568'>25568</a>
<a id='n25569' href='#n25569'>25569</a>
<a id='n25570' href='#n25570'>25570</a>
<a id='n25571' href='#n25571'>25571</a>
<a id='n25572' href='#n25572'>25572</a>
<a id='n25573' href='#n25573'>25573</a>
<a id='n25574' href='#n25574'>25574</a>
<a id='n25575' href='#n25575'>25575</a>
<a id='n25576' href='#n25576'>25576</a>
<a id='n25577' href='#n25577'>25577</a>
<a id='n25578' href='#n25578'>25578</a>
<a id='n25579' href='#n25579'>25579</a>
<a id='n25580' href='#n25580'>25580</a>
<a id='n25581' href='#n25581'>25581</a>
<a id='n25582' href='#n25582'>25582</a>
<a id='n25583' href='#n25583'>25583</a>
<a id='n25584' href='#n25584'>25584</a>
<a id='n25585' href='#n25585'>25585</a>
<a id='n25586' href='#n25586'>25586</a>
<a id='n25587' href='#n25587'>25587</a>
<a id='n25588' href='#n25588'>25588</a>
<a id='n25589' href='#n25589'>25589</a>
<a id='n25590' href='#n25590'>25590</a>
<a id='n25591' href='#n25591'>25591</a>
<a id='n25592' href='#n25592'>25592</a>
<a id='n25593' href='#n25593'>25593</a>
<a id='n25594' href='#n25594'>25594</a>
<a id='n25595' href='#n25595'>25595</a>
<a id='n25596' href='#n25596'>25596</a>
<a id='n25597' href='#n25597'>25597</a>
<a id='n25598' href='#n25598'>25598</a>
<a id='n25599' href='#n25599'>25599</a>
<a id='n25600' href='#n25600'>25600</a>
<a id='n25601' href='#n25601'>25601</a>
<a id='n25602' href='#n25602'>25602</a>
<a id='n25603' href='#n25603'>25603</a>
<a id='n25604' href='#n25604'>25604</a>
<a id='n25605' href='#n25605'>25605</a>
<a id='n25606' href='#n25606'>25606</a>
<a id='n25607' href='#n25607'>25607</a>
<a id='n25608' href='#n25608'>25608</a>
<a id='n25609' href='#n25609'>25609</a>
<a id='n25610' href='#n25610'>25610</a>
<a id='n25611' href='#n25611'>25611</a>
<a id='n25612' href='#n25612'>25612</a>
<a id='n25613' href='#n25613'>25613</a>
<a id='n25614' href='#n25614'>25614</a>
<a id='n25615' href='#n25615'>25615</a>
<a id='n25616' href='#n25616'>25616</a>
<a id='n25617' href='#n25617'>25617</a>
<a id='n25618' href='#n25618'>25618</a>
<a id='n25619' href='#n25619'>25619</a>
<a id='n25620' href='#n25620'>25620</a>
<a id='n25621' href='#n25621'>25621</a>
<a id='n25622' href='#n25622'>25622</a>
<a id='n25623' href='#n25623'>25623</a>
<a id='n25624' href='#n25624'>25624</a>
<a id='n25625' href='#n25625'>25625</a>
</pre></td>
<td class='lines'><pre><code><style>pre { line-height: 125%; margin: 0; }
td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="gd">--- a/drivers/usb/core/Kconfig</span>
<span class="gi">+++ b/drivers/usb/core/Kconfig</span>
<span class="gu">@@ -106,11 +106,11 @@ config USB_SUSPEND</span>
 
 	  If you are unsure about this, say N here.
 
<span class="gd">-config USB_OTG</span>
<span class="gd">-	bool</span>
<span class="gd">-	depends on USB &amp;&amp; EXPERIMENTAL</span>
<span class="gd">-	select USB_SUSPEND</span>
<span class="gd">-	default n</span>
<span class="gi">+#config USB_OTG</span>
<span class="gi">+#	bool</span>
<span class="gi">+#	depends on USB &amp;&amp; EXPERIMENTAL</span>
<span class="gi">+#	select USB_SUSPEND</span>
<span class="gi">+#	default n</span>
 
 
 config USB_OTG_WHITELIST
<span class="gd">--- a/drivers/usb/core/urb.c</span>
<span class="gi">+++ b/drivers/usb/core/urb.c</span>
<span class="gu">@@ -17,7 +17,11 @@ static void urb_destroy(struct kref *kre</span>
 
 	if (urb-&gt;transfer_flags &amp; URB_FREE_BUFFER)
 		kfree(urb-&gt;transfer_buffer);
<span class="gd">-</span>
<span class="gi">+	if(urb-&gt;aligned_transfer_buffer){</span>
<span class="gi">+		kfree(urb-&gt;aligned_transfer_buffer);</span>
<span class="gi">+		urb-&gt;aligned_transfer_buffer=0;</span>
<span class="gi">+		urb-&gt;aligned_transfer_dma=0;</span>
<span class="gi">+	}</span>
 	kfree(urb);
 }
 
<span class="gu">@@ -91,6 +95,7 @@ void usb_free_urb(struct urb *urb)</span>
 {
 	if (urb)
 		kref_put(&amp;urb-&gt;kref, urb_destroy);
<span class="gi">+</span>
 }
 EXPORT_SYMBOL_GPL(usb_free_urb);
 
<span class="gd">--- a/drivers/usb/gadget/file_storage.c</span>
<span class="gi">+++ b/drivers/usb/gadget/file_storage.c</span>
<span class="gu">@@ -225,9 +225,9 @@</span>
  * of the Gadget, USB Mass Storage, and SCSI protocols.
  */
 
<span class="gd">-</span>
<span class="gd">-/* #define VERBOSE_DEBUG */</span>
<span class="gd">-/* #define DUMP_MSGS */</span>
<span class="gi">+#define DEBUG</span>
<span class="gi">+#define VERBOSE_DEBUG</span>
<span class="gi">+#define DUMP_MSGS</span>
 
 
 #include &lt;linux/blkdev.h&gt;
<span class="gu">@@ -3086,7 +3086,9 @@ static int received_cbw(struct fsg_dev *</span>
 	if (req-&gt;actual != USB_BULK_CB_WRAP_LEN ||
 			cbw-&gt;Signature != cpu_to_le32(
 				USB_BULK_CB_SIG)) {
<span class="gd">-		DBG(fsg, &quot;invalid CBW: len %u sig 0x%x\n&quot;,</span>
<span class="gi">+		DBG(fsg, &quot;invalid CBW: bh %.8x buf %.8x len %u sig 0x%x\n&quot;,</span>
<span class="gi">+				(u32)bh,</span>
<span class="gi">+				(u32)bh-&gt;buf,</span>
 				req-&gt;actual,
 				le32_to_cpu(cbw-&gt;Signature));
 
<span class="gu">@@ -4097,6 +4099,7 @@ static int __init fsg_bind(struct usb_ga</span>
 		 * the buffer will also work with the bulk-out (and
 		 * interrupt-in) endpoint. */
 		bh-&gt;buf = kmalloc(mod_data.buflen, GFP_KERNEL);
<span class="gi">+		VDBG(fsg,&quot;%s: %d, bh=%.8x, buf=%.8x\n&quot;,__func__,i,bh,bh-&gt;buf);</span>
 		if (!bh-&gt;buf)
 			goto out;
 		bh-&gt;next = bh + 1;
<span class="gd">--- a/drivers/usb/gadget/Kconfig</span>
<span class="gi">+++ b/drivers/usb/gadget/Kconfig</span>
<span class="gu">@@ -495,6 +495,16 @@ config USB_LANGWELL</span>
 	default USB_GADGET
 	select USB_GADGET_SELECTED
 
<span class="gi">+config USB_GADGET_CNS3XXX_OTG</span>
<span class="gi">+	boolean &quot;CNS3XXX peripheral controller&quot;</span>
<span class="gi">+	depends on USB_CNS3XXX_OTG_BOTH || USB_CNS3XXX_OTG_PCD_ONLY </span>
<span class="gi">+#	select USB_OTG</span>
<span class="gi">+	select USB_GADGET_DUALSPEED</span>
<span class="gi">+	select USB_GADGET_SELECTED</span>
<span class="gi">+	select USB_GADGET_SNPS_DWC_OTG</span>
<span class="gi">+	help</span>
<span class="gi">+	   Selects the CNS3XXX Perpheral Controller driver</span>
<span class="gi">+</span>
 
 #
 # LAST -- dummy/emulated controller
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/ehci-cns3xxx.c</span>
<span class="gu">@@ -0,0 +1,171 @@</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/platform_device.h&gt;</span>
<span class="gi">+#include &lt;mach/board.h&gt;</span>
<span class="gi">+#include &lt;mach/pm.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#define cns3xxx_ioremap      ioremap</span>
<span class="gi">+#define cns3xxx_iounmap(addr) iounmap        </span>
<span class="gi">+</span>
<span class="gi">+static int cns3xxx_ehci_init(struct usb_hcd *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	struct ehci_hcd *ehci = hcd_to_ehci(hcd);</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+</span>
<span class="gi">+	printk(&quot;%s: !!WARNING!! to verify the following ehci-&gt;caps ehci-&gt;regs \n&quot;, </span>
<span class="gi">+	       __FUNCTION__);</span>
<span class="gi">+#ifdef CONFIG_SILICON</span>
<span class="gi">+	//OTG PHY</span>
<span class="gi">+	//cns3xxx_pwr_power_up(1&lt;&lt;PM_PLL_HM_PD_CTRL_REG_OFFSET_USB_PHY0);</span>
<span class="gi">+	//USB PHY</span>
<span class="gi">+	//cns3xxx_pwr_power_up(1&lt;&lt;PM_PLL_HM_PD_CTRL_REG_OFFSET_USB_PHY1);</span>
<span class="gi">+	cns3xxx_pwr_power_up(1&lt;&lt;PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_USB);</span>
<span class="gi">+	cns3xxx_pwr_clk_en(1&lt;&lt;PM_CLK_GATE_REG_OFFSET_USB_HOST);</span>
<span class="gi">+	cns3xxx_pwr_soft_rst(1&lt;&lt;PM_SOFT_RST_REG_OFFST_USB_HOST);</span>
<span class="gi">+	//cns3xxx_pwr_clk_en(1&lt;&lt;PM_CLK_GATE_REG_OFFSET_USB_OTG);</span>
<span class="gi">+	//cns3xxx_pwr_soft_rst(1&lt;&lt;PM_SOFT_RST_REG_OFFST_USB_OTG);</span>
<span class="gi">+#endif //CONFIG_SILICON</span>
<span class="gi">+</span>
<span class="gi">+	ehci-&gt;caps = hcd-&gt;regs;</span>
<span class="gi">+	ehci-&gt;regs = hcd-&gt;regs</span>
<span class="gi">+		+ HC_LENGTH(ehci_readl(ehci, &amp;ehci-&gt;caps-&gt;hc_capbase));</span>
<span class="gi">+	ehci-&gt;hcs_params = ehci_readl(ehci, &amp;ehci-&gt;caps-&gt;hcs_params);</span>
<span class="gi">+</span>
<span class="gi">+	hcd-&gt;has_tt = 0;</span>
<span class="gi">+	ehci_reset(ehci);</span>
<span class="gi">+</span>
<span class="gi">+	retval = ehci_init(hcd);</span>
<span class="gi">+	if (retval)</span>
<span class="gi">+		return retval;</span>
<span class="gi">+</span>
<span class="gi">+        /* XXX: Only for FPGA, remove it later */</span>
<span class="gi">+        ehci_writel(ehci, 0x00800080, hcd-&gt;regs + 0x94);</span>
<span class="gi">+</span>
<span class="gi">+	ehci_port_power(ehci, 0);</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static const struct hc_driver cns3xxx_ehci_hc_driver = {</span>
<span class="gi">+	.description		= hcd_name,</span>
<span class="gi">+	.product_desc		= &quot;CNS3XXX EHCI Host Controller&quot;,</span>
<span class="gi">+	.hcd_priv_size		= sizeof(struct ehci_hcd),</span>
<span class="gi">+	.irq			= ehci_irq,</span>
<span class="gi">+	.flags			= HCD_MEMORY | HCD_USB2,</span>
<span class="gi">+	.reset			= cns3xxx_ehci_init,</span>
<span class="gi">+	.start			= ehci_run,</span>
<span class="gi">+	.stop			= ehci_stop,</span>
<span class="gi">+	.shutdown		= ehci_shutdown,</span>
<span class="gi">+	.urb_enqueue		= ehci_urb_enqueue,</span>
<span class="gi">+	.urb_dequeue		= ehci_urb_dequeue,</span>
<span class="gi">+	.endpoint_disable	= ehci_endpoint_disable,</span>
<span class="gi">+	.get_frame_number	= ehci_get_frame,</span>
<span class="gi">+	.hub_status_data	= ehci_hub_status_data,</span>
<span class="gi">+	.hub_control		= ehci_hub_control,</span>
<span class="gi">+#if defined(CONFIG_PM)</span>
<span class="gi">+	.bus_suspend		= ehci_bus_suspend,</span>
<span class="gi">+	.bus_resume		= ehci_bus_resume,</span>
<span class="gi">+#endif</span>
<span class="gi">+	.relinquish_port	= ehci_relinquish_port,</span>
<span class="gi">+	.port_handed_over	= ehci_port_handed_over,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+static int cns3xxx_ehci_probe(struct platform_device *pdev)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_hcd *hcd;</span>
<span class="gi">+	const struct hc_driver *driver = &amp;cns3xxx_ehci_hc_driver;</span>
<span class="gi">+	struct resource *res;</span>
<span class="gi">+	int irq;</span>
<span class="gi">+	int retval;</span>
<span class="gi">+</span>
<span class="gi">+	if (usb_disabled())</span>
<span class="gi">+		return -ENODEV;</span>
<span class="gi">+</span>
<span class="gi">+	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);</span>
<span class="gi">+	if (!res) {</span>
<span class="gi">+		dev_err(&amp;pdev-&gt;dev,</span>
<span class="gi">+			&quot;Found HC with no IRQ. Check %s setup!\n&quot;,</span>
<span class="gi">+			dev_name(&amp;pdev-&gt;dev));</span>
<span class="gi">+		return -ENODEV;</span>
<span class="gi">+	}</span>
<span class="gi">+	irq = res-&gt;start;</span>
<span class="gi">+</span>
<span class="gi">+	hcd = usb_create_hcd(driver, &amp;pdev-&gt;dev, dev_name(&amp;pdev-&gt;dev));</span>
<span class="gi">+	if (!hcd) {</span>
<span class="gi">+		retval = -ENOMEM;</span>
<span class="gi">+		goto fail_create_hcd;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);</span>
<span class="gi">+	if (!res) {</span>
<span class="gi">+		dev_err(&amp;pdev-&gt;dev,</span>
<span class="gi">+			&quot;Found HC with no register addr. Check %s setup!\n&quot;,</span>
<span class="gi">+			dev_name(&amp;pdev-&gt;dev));</span>
<span class="gi">+		retval = -ENODEV;</span>
<span class="gi">+		goto fail_request_resource;</span>
<span class="gi">+	}</span>
<span class="gi">+	hcd-&gt;rsrc_start = res-&gt;start;</span>
<span class="gi">+	hcd-&gt;rsrc_len = res-&gt;end - res-&gt;start + 1;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef CNS3XXX_USB_BASE_VIRT</span>
<span class="gi">+	hcd-&gt;regs = (void __iomem *) CNS3XXX_USB_BASE_VIRT;</span>
<span class="gi">+#else</span>
<span class="gi">+	if (!request_mem_region(hcd-&gt;rsrc_start, hcd-&gt;rsrc_len,</span>
<span class="gi">+				driver-&gt;description)) {</span>
<span class="gi">+		dev_dbg(&amp;pdev-&gt;dev, &quot;controller already in use\n&quot;);</span>
<span class="gi">+		retval = -EBUSY;</span>
<span class="gi">+		goto fail_request_resource;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hcd-&gt;regs = cns3xxx_ioremap(hcd-&gt;rsrc_start, hcd-&gt;rsrc_len);</span>
<span class="gi">+</span>
<span class="gi">+	if (hcd-&gt;regs == NULL) {</span>
<span class="gi">+		dev_dbg(&amp;pdev-&gt;dev, &quot;error mapping memory\n&quot;);</span>
<span class="gi">+		retval = -EFAULT;</span>
<span class="gi">+		goto fail_ioremap;</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	retval = usb_add_hcd(hcd, irq, IRQF_SHARED);  /* TODO: IRQF_DISABLED if any interrupt issues */</span>
<span class="gi">+	if (retval)</span>
<span class="gi">+		goto fail_add_hcd;</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+</span>
<span class="gi">+#ifndef CNS3XXX_USB_BASE_VIRT</span>
<span class="gi">+fail_add_hcd:</span>
<span class="gi">+	cns3xxx_iounmap(hcd-&gt;regs);</span>
<span class="gi">+fail_ioremap:</span>
<span class="gi">+	release_mem_region(hcd-&gt;rsrc_start, hcd-&gt;rsrc_len);</span>
<span class="gi">+#else</span>
<span class="gi">+fail_request_resource:</span>
<span class="gi">+fail_add_hcd:</span>
<span class="gi">+#endif</span>
<span class="gi">+	usb_put_hcd(hcd);</span>
<span class="gi">+fail_create_hcd:</span>
<span class="gi">+	dev_err(&amp;pdev-&gt;dev, &quot;init %s fail, %d\n&quot;, dev_name(&amp;pdev-&gt;dev), retval);</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static int cns3xxx_ehci_remove(struct platform_device *pdev)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_hcd *hcd = platform_get_drvdata(pdev);</span>
<span class="gi">+</span>
<span class="gi">+	usb_remove_hcd(hcd);</span>
<span class="gi">+#ifndef CNS3XXX_USB_BASE_VIRT</span>
<span class="gi">+	cns3xxx_iounmap(hcd-&gt;regs);</span>
<span class="gi">+	release_mem_region(hcd-&gt;rsrc_start, hcd-&gt;rsrc_len);</span>
<span class="gi">+#endif</span>
<span class="gi">+	usb_put_hcd(hcd);</span>
<span class="gi">+</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+MODULE_ALIAS(&quot;platform:cns3xxx-ehci&quot;);</span>
<span class="gi">+</span>
<span class="gi">+static struct platform_driver cns3xxx_ehci_driver = {</span>
<span class="gi">+	.probe = cns3xxx_ehci_probe,</span>
<span class="gi">+	.remove = cns3xxx_ehci_remove,</span>
<span class="gi">+	.driver = {</span>
<span class="gi">+		.name = &quot;cns3xxx-ehci&quot;,</span>
<span class="gi">+	},</span>
<span class="gi">+};</span>
<span class="gd">--- a/drivers/usb/host/ehci.h</span>
<span class="gi">+++ b/drivers/usb/host/ehci.h</span>
<span class="gu">@@ -602,6 +602,13 @@ ehci_port_speed(struct ehci_hcd *ehci, u</span>
 #define writel_be(val, addr)	__raw_writel(val, (__force unsigned *)addr)
 #endif
 
<span class="gi">+#if defined(CONFIG_ARM) &amp;&amp; defined(CONFIG_ARCH_CNS3XXX)</span>
<span class="gi">+#undef readl</span>
<span class="gi">+#undef writel</span>
<span class="gi">+#define readl(addr)		__raw_readl((__force unsigned *)addr)</span>
<span class="gi">+#define writel(val, addr)	__raw_writel(val, (__force unsigned *)addr)</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
 static inline unsigned int ehci_readl(const struct ehci_hcd *ehci,
 		__u32 __iomem * regs)
 {
<span class="gd">--- a/drivers/usb/host/ehci-hcd.c</span>
<span class="gi">+++ b/drivers/usb/host/ehci-hcd.c</span>
<span class="gu">@@ -1120,6 +1120,11 @@ MODULE_LICENSE (&quot;GPL&quot;);</span>
 #define	PLATFORM_DRIVER		ixp4xx_ehci_driver
 #endif
 
<span class="gi">+#ifdef CONFIG_USB_CNS3XXX_EHCI</span>
<span class="gi">+#include &quot;ehci-cns3xxx.c&quot;</span>
<span class="gi">+#define PLATFORM_DRIVER     cns3xxx_ehci_driver</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
 #if !defined(PCI_DRIVER) &amp;&amp; !defined(PLATFORM_DRIVER) &amp;&amp; \
     !defined(PS3_SYSTEM_BUS_DRIVER) &amp;&amp; !defined(OF_PLATFORM_DRIVER)
 #error &quot;missing bus glue for ehci-hcd&quot;
<span class="gd">--- a/drivers/usb/host/Kconfig</span>
<span class="gi">+++ b/drivers/usb/host/Kconfig</span>
<span class="gu">@@ -153,6 +153,45 @@ config USB_ISP1760_HCD</span>
 	  To compile this driver as a module, choose M here: the
 	  module will be called isp1760.
 
<span class="gi">+config USB_CNS3XXX_EHCI</span>
<span class="gi">+	bool &quot;Cavium CNS3XXX EHCI Module&quot;</span>
<span class="gi">+	depends on USB &amp;&amp; USB_EHCI_HCD</span>
<span class="gi">+	---help---</span>
<span class="gi">+	  Cavium CNS3XXX USB EHCI Chipset support</span>
<span class="gi">+</span>
<span class="gi">+config USB_CNS3XXX_OTG</span>
<span class="gi">+	tristate &quot;Cavium CNS3XXX OTG Module&quot;</span>
<span class="gi">+	depends on USB</span>
<span class="gi">+	---help---</span>
<span class="gi">+	  Cavium CNS3XXX USB OTG Chipset support</span>
<span class="gi">+</span>
<span class="gi">+choice</span>
<span class="gi">+        prompt &quot;OTG function includes&quot;</span>
<span class="gi">+        depends on USB_CNS3XXX_OTG</span>
<span class="gi">+        default USB_CNS3XXX_OTG_BOTH</span>
<span class="gi">+</span>
<span class="gi">+config USB_CNS3XXX_OTG_BOTH</span>
<span class="gi">+	bool &quot;both HCD and PCD&quot;</span>
<span class="gi">+</span>
<span class="gi">+config USB_CNS3XXX_OTG_HCD_ONLY</span>
<span class="gi">+	bool &quot;HCD only&quot;</span>
<span class="gi">+</span>
<span class="gi">+config USB_CNS3XXX_OTG_PCD_ONLY</span>
<span class="gi">+	bool &quot;PCD only&quot;</span>
<span class="gi">+</span>
<span class="gi">+endchoice</span>
<span class="gi">+config USB_CNS3XXX_OTG_ENABLE_OTG_DRVVBUS</span>
<span class="gi">+	bool &quot;Enable OTG_DRVVBUS&quot; </span>
<span class="gi">+	depends on USB_CNS3XXX_OTG</span>
<span class="gi">+	default y</span>
<span class="gi">+	---help---</span>
<span class="gi">+	  The Power control IC (FB6862B), which is located around the OTG mini </span>
<span class="gi">+	  USB type A/B receptacle, in some early EVB board v1.0/v1.1(#1~#22) is </span>
<span class="gi">+	  incorrect(FB6862A), and need to be patched so that VBUS can be applied </span>
<span class="gi">+	  properly. In that case, we don&#39;t use the OTG_DRVVBUS to control the VBUS.</span>
<span class="gi">+	  </span>
<span class="gi">+	  Check the board that you are using, if the IC is FB6862B, say Y. Otherwise, say N.</span>
<span class="gi">+	  </span>
 config USB_OHCI_HCD
 	tristate &quot;OHCI HCD support&quot;
 	depends on USB &amp;&amp; USB_ARCH_HAS_OHCI
<span class="gu">@@ -225,6 +264,12 @@ config USB_OHCI_HCD_SSB</span>
 
 	  If unsure, say N.
 
<span class="gi">+config USB_CNS3XXX_OHCI</span>
<span class="gi">+	bool &quot;Cavium CNS3XXX OHCI Module&quot;</span>
<span class="gi">+	depends on USB_OHCI_HCD</span>
<span class="gi">+	---help---</span>
<span class="gi">+	  Cavium CNS3XXX USB OHCI Chipset support</span>
<span class="gi">+</span>
 config USB_OHCI_BIG_ENDIAN_DESC
 	bool
 	depends on USB_OHCI_HCD
<span class="gd">--- a/drivers/usb/host/Makefile</span>
<span class="gi">+++ b/drivers/usb/host/Makefile</span>
<span class="gu">@@ -31,3 +31,6 @@ obj-$(CONFIG_USB_U132_HCD)	+= u132-hcd.o</span>
 obj-$(CONFIG_USB_R8A66597_HCD)	+= r8a66597-hcd.o
 obj-$(CONFIG_USB_ISP1760_HCD)	+= isp1760.o
 obj-$(CONFIG_USB_HWA_HCD)	+= hwa-hc.o
<span class="gi">+obj-$(CONFIG_USB_CNS3XXX_OTG) += otg/</span>
<span class="gi">+obj-$(CONFIG_USB_GADGET_CNS3XXX_OTG) += otg/</span>
<span class="gi">+</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/ohci-cns3xxx.c</span>
<span class="gu">@@ -0,0 +1,143 @@</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/platform_device.h&gt;</span>
<span class="gi">+#include &lt;mach/board.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#define cns3xxx_ioremap      ioremap</span>
<span class="gi">+#define cns3xxx_iounmap(addr) iounmap        </span>
<span class="gi">+</span>
<span class="gi">+static int __devinit</span>
<span class="gi">+cns3xxx_ohci_start (struct usb_hcd *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	struct ohci_hcd		*ohci = hcd_to_ohci (hcd);</span>
<span class="gi">+	int			ret;</span>
<span class="gi">+</span>
<span class="gi">+	if ((ret = ohci_init(ohci)) &lt; 0)</span>
<span class="gi">+		return ret;</span>
<span class="gi">+</span>
<span class="gi">+	ohci-&gt;num_ports = 1;</span>
<span class="gi">+</span>
<span class="gi">+	if ((ret = ohci_run(ohci)) &lt; 0) {</span>
<span class="gi">+		err(&quot;can&#39;t start %s&quot;, hcd-&gt;self.bus_name);</span>
<span class="gi">+		ohci_stop(hcd);</span>
<span class="gi">+		return ret;</span>
<span class="gi">+	}</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static const struct hc_driver cns3xxx_ohci_hc_driver = {</span>
<span class="gi">+	.description 		= hcd_name,</span>
<span class="gi">+	.product_desc 		= &quot;CNS3XXX OHCI Host controller&quot;,</span>
<span class="gi">+	.hcd_priv_size 		= sizeof(struct ohci_hcd),</span>
<span class="gi">+	.irq 			= ohci_irq,</span>
<span class="gi">+	.flags 			= HCD_USB11 | HCD_MEMORY,</span>
<span class="gi">+	.start 			= cns3xxx_ohci_start,</span>
<span class="gi">+	.stop 			= ohci_stop,</span>
<span class="gi">+	.shutdown 		= ohci_shutdown,</span>
<span class="gi">+	.urb_enqueue 		= ohci_urb_enqueue,</span>
<span class="gi">+	.urb_dequeue 		= ohci_urb_dequeue,</span>
<span class="gi">+	.endpoint_disable 	= ohci_endpoint_disable,</span>
<span class="gi">+	.get_frame_number 	= ohci_get_frame,</span>
<span class="gi">+	.hub_status_data 	= ohci_hub_status_data,</span>
<span class="gi">+	.hub_control 		= ohci_hub_control,</span>
<span class="gi">+#ifdef CONFIG_PM</span>
<span class="gi">+	.bus_suspend 		= ohci_bus_suspend,</span>
<span class="gi">+	.bus_resume 		= ohci_bus_resume,</span>
<span class="gi">+#endif</span>
<span class="gi">+	.start_port_reset 	= ohci_start_port_reset,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+static int cns3xxx_ohci_probe(struct platform_device *pdev)</span>
<span class="gi">+{</span>
<span class="gi">+        struct usb_hcd *hcd = NULL;</span>
<span class="gi">+        const struct hc_driver *driver = &amp;cns3xxx_ohci_hc_driver;</span>
<span class="gi">+        struct resource *res;</span>
<span class="gi">+        int irq;</span>
<span class="gi">+        int retval;</span>
<span class="gi">+</span>
<span class="gi">+        if (usb_disabled())</span>
<span class="gi">+                return -ENODEV;</span>
<span class="gi">+</span>
<span class="gi">+        res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);</span>
<span class="gi">+        if (!res) {</span>
<span class="gi">+                dev_err(&amp;pdev-&gt;dev,</span>
<span class="gi">+                        &quot;Found HC with no IRQ. Check %s setup!\n&quot;,</span>
<span class="gi">+                        dev_name(&amp;pdev-&gt;dev));</span>
<span class="gi">+                return -ENODEV;</span>
<span class="gi">+        }</span>
<span class="gi">+        irq = res-&gt;start;</span>
<span class="gi">+</span>
<span class="gi">+	hcd = usb_create_hcd(driver, &amp;pdev-&gt;dev, dev_name(&amp;pdev-&gt;dev));</span>
<span class="gi">+	if (!hcd)</span>
<span class="gi">+		return -ENOMEM;</span>
<span class="gi">+</span>
<span class="gi">+        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);</span>
<span class="gi">+        if (!res) {</span>
<span class="gi">+                dev_err(&amp;pdev-&gt;dev,</span>
<span class="gi">+                        &quot;Found HC with no register addr. Check %s setup!\n&quot;,</span>
<span class="gi">+                        dev_name(&amp;pdev-&gt;dev));</span>
<span class="gi">+                retval = -ENODEV;</span>
<span class="gi">+                goto err1;</span>
<span class="gi">+        }</span>
<span class="gi">+        hcd-&gt;rsrc_start = res-&gt;start;</span>
<span class="gi">+        hcd-&gt;rsrc_len = res-&gt;end - res-&gt;start + 1;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef CNS3XXX_USB_OHCI_BASE_VIRT</span>
<span class="gi">+        hcd-&gt;regs = (void __iomem *) CNS3XXX_USB_OHCI_BASE_VIRT;</span>
<span class="gi">+#else</span>
<span class="gi">+        if (!request_mem_region(hcd-&gt;rsrc_start, hcd-&gt;rsrc_len,</span>
<span class="gi">+                                driver-&gt;description)) {</span>
<span class="gi">+                dev_dbg(&amp;pdev-&gt;dev, &quot;controller already in use\n&quot;);</span>
<span class="gi">+                retval = -EBUSY;</span>
<span class="gi">+                goto err1;</span>
<span class="gi">+        }</span>
<span class="gi">+</span>
<span class="gi">+        hcd-&gt;regs = cns3xxx_ioremap(hcd-&gt;rsrc_start, hcd-&gt;rsrc_len);</span>
<span class="gi">+</span>
<span class="gi">+        if (hcd-&gt;regs == NULL) {</span>
<span class="gi">+                dev_dbg(&amp;pdev-&gt;dev, &quot;error mapping memory\n&quot;);</span>
<span class="gi">+                retval = -EFAULT;</span>
<span class="gi">+                goto err2;</span>
<span class="gi">+        }</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	ohci_hcd_init(hcd_to_ohci(hcd));</span>
<span class="gi">+</span>
<span class="gi">+        retval = usb_add_hcd(hcd, irq, IRQF_SHARED);</span>
<span class="gi">+	if (retval == 0)</span>
<span class="gi">+		return retval;</span>
<span class="gi">+</span>
<span class="gi">+#ifndef CNS3XXX_USB_OHCI_BASE_VIRT</span>
<span class="gi">+        cns3xxx_iounmap(hcd-&gt;regs);</span>
<span class="gi">+</span>
<span class="gi">+err2:</span>
<span class="gi">+	release_mem_region(hcd-&gt;rsrc_start, hcd-&gt;rsrc_len);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+err1:</span>
<span class="gi">+	usb_put_hcd(hcd);</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static int cns3xxx_ohci_remove(struct platform_device *pdev)</span>
<span class="gi">+{</span>
<span class="gi">+        struct usb_hcd *hcd = platform_get_drvdata(pdev);</span>
<span class="gi">+</span>
<span class="gi">+        usb_remove_hcd(hcd);</span>
<span class="gi">+#ifndef CNS3XXX_USB_OHCI_BASE_VIRT</span>
<span class="gi">+        cns3xxx_iounmap(hcd-&gt;regs);</span>
<span class="gi">+        release_mem_region(hcd-&gt;rsrc_start, hcd-&gt;rsrc_len);</span>
<span class="gi">+#endif</span>
<span class="gi">+        usb_put_hcd(hcd);</span>
<span class="gi">+</span>
<span class="gi">+        return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+MODULE_ALIAS(&quot;platform:cns3xxx-ohci&quot;);</span>
<span class="gi">+</span>
<span class="gi">+static struct platform_driver ohci_hcd_cns3xxx_driver = {</span>
<span class="gi">+        .probe = cns3xxx_ohci_probe,</span>
<span class="gi">+        .remove = cns3xxx_ohci_remove,</span>
<span class="gi">+        .driver = {</span>
<span class="gi">+                .name = &quot;cns3xxx-ohci&quot;,</span>
<span class="gi">+        },</span>
<span class="gi">+};</span>
<span class="gd">--- a/drivers/usb/host/ohci.h</span>
<span class="gi">+++ b/drivers/usb/host/ohci.h</span>
<span class="gu">@@ -550,6 +550,14 @@ static inline struct usb_hcd *ohci_to_hc</span>
  * Other arches can be added if/when they&#39;re needed.
  *
  */
<span class="gi">+</span>
<span class="gi">+#if defined(CONFIG_ARM) &amp;&amp; defined(CONFIG_ARCH_CNS3XXX)</span>
<span class="gi">+#undef readl</span>
<span class="gi">+#undef writel</span>
<span class="gi">+#define readl(addr)		__raw_readl((__force unsigned *)addr)</span>
<span class="gi">+#define writel(val, addr)	__raw_writel(val, (__force unsigned *)addr)</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
 static inline unsigned int _ohci_readl (const struct ohci_hcd *ohci,
 					__hc32 __iomem * regs)
 {
<span class="gd">--- a/drivers/usb/host/ohci-hcd.c</span>
<span class="gi">+++ b/drivers/usb/host/ohci-hcd.c</span>
<span class="gu">@@ -1047,6 +1047,11 @@ MODULE_LICENSE (&quot;GPL&quot;);</span>
 #define PLATFORM_DRIVER		ohci_hcd_at91_driver
 #endif
 
<span class="gi">+#ifdef CONFIG_USB_CNS3XXX_OHCI</span>
<span class="gi">+#include &quot;ohci-cns3xxx.c&quot;</span>
<span class="gi">+#define PLATFORM_DRIVER		ohci_hcd_cns3xxx_driver</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
 #ifdef CONFIG_ARCH_PNX4008
 #include &quot;ohci-pnx4008.c&quot;
 #define PLATFORM_DRIVER		usb_hcd_pnx4008_driver
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dummy_audio.c</span>
<span class="gu">@@ -0,0 +1,1575 @@</span>
<span class="gi">+/*</span>
<span class="gi">+ * zero.c -- Gadget Zero, for USB development</span>
<span class="gi">+ *</span>
<span class="gi">+ * Copyright (C) 2003-2004 David Brownell</span>
<span class="gi">+ * All rights reserved.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Redistribution and use in source and binary forms, with or without</span>
<span class="gi">+ * modification, are permitted provided that the following conditions</span>
<span class="gi">+ * are met:</span>
<span class="gi">+ * 1. Redistributions of source code must retain the above copyright</span>
<span class="gi">+ *    notice, this list of conditions, and the following disclaimer,</span>
<span class="gi">+ *    without modification.</span>
<span class="gi">+ * 2. Redistributions in binary form must reproduce the above copyright</span>
<span class="gi">+ *    notice, this list of conditions and the following disclaimer in the</span>
<span class="gi">+ *    documentation and/or other materials provided with the distribution.</span>
<span class="gi">+ * 3. The names of the above-listed copyright holders may not be used</span>
<span class="gi">+ *    to endorse or promote products derived from this software without</span>
<span class="gi">+ *    specific prior written permission.</span>
<span class="gi">+ *</span>
<span class="gi">+ * ALTERNATIVELY, this software may be distributed under the terms of the</span>
<span class="gi">+ * GNU General Public License (&quot;GPL&quot;) as published by the Free Software</span>
<span class="gi">+ * Foundation, either version 2 of that License or (at your option) any</span>
<span class="gi">+ * later version.</span>
<span class="gi">+ *</span>
<span class="gi">+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS</span>
<span class="gi">+ * IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,</span>
<span class="gi">+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</span>
<span class="gi">+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR</span>
<span class="gi">+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,</span>
<span class="gi">+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,</span>
<span class="gi">+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR</span>
<span class="gi">+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF</span>
<span class="gi">+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING</span>
<span class="gi">+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS</span>
<span class="gi">+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * Gadget Zero only needs two bulk endpoints, and is an example of how you</span>
<span class="gi">+ * can write a hardware-agnostic gadget driver running inside a USB device.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Hardware details are visible (see CONFIG_USB_ZERO_* below) but don&#39;t</span>
<span class="gi">+ * affect most of the driver.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Use it with the Linux host/master side &quot;usbtest&quot; driver to get a basic</span>
<span class="gi">+ * functional test of your device-side usb stack, or with &quot;usb-skeleton&quot;.</span>
<span class="gi">+ *</span>
<span class="gi">+ * It supports two similar configurations.  One sinks whatever the usb host</span>
<span class="gi">+ * writes, and in return sources zeroes.  The other loops whatever the host</span>
<span class="gi">+ * writes back, so the host can read it.  Module options include:</span>
<span class="gi">+ *</span>
<span class="gi">+ *   buflen=N		default N=4096, buffer size used</span>
<span class="gi">+ *   qlen=N		default N=32, how many buffers in the loopback queue</span>
<span class="gi">+ *   loopdefault	default false, list loopback config first</span>
<span class="gi">+ *</span>
<span class="gi">+ * Many drivers will only have one configuration, letting them be much</span>
<span class="gi">+ * simpler if they also don&#39;t support high speed operation (like this</span>
<span class="gi">+ * driver does).</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/config.h&gt;</span>
<span class="gi">+#include &lt;linux/module.h&gt;</span>
<span class="gi">+#include &lt;linux/kernel.h&gt;</span>
<span class="gi">+#include &lt;linux/delay.h&gt;</span>
<span class="gi">+#include &lt;linux/ioport.h&gt;</span>
<span class="gi">+#include &lt;linux/sched.h&gt;</span>
<span class="gi">+#include &lt;linux/slab.h&gt;</span>
<span class="gi">+#include &lt;linux/smp_lock.h&gt;</span>
<span class="gi">+#include &lt;linux/errno.h&gt;</span>
<span class="gi">+#include &lt;linux/init.h&gt;</span>
<span class="gi">+#include &lt;linux/timer.h&gt;</span>
<span class="gi">+#include &lt;linux/list.h&gt;</span>
<span class="gi">+#include &lt;linux/interrupt.h&gt;</span>
<span class="gi">+#include &lt;linux/uts.h&gt;</span>
<span class="gi">+#include &lt;linux/version.h&gt;</span>
<span class="gi">+#include &lt;linux/device.h&gt;</span>
<span class="gi">+#include &lt;linux/moduleparam.h&gt;</span>
<span class="gi">+#include &lt;linux/proc_fs.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;asm/byteorder.h&gt;</span>
<span class="gi">+#include &lt;asm/io.h&gt;</span>
<span class="gi">+#include &lt;asm/irq.h&gt;</span>
<span class="gi">+#include &lt;asm/system.h&gt;</span>
<span class="gi">+#include &lt;asm/unaligned.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,21)</span>
<span class="gi">+# include &lt;linux/usb/ch9.h&gt;</span>
<span class="gi">+#else</span>
<span class="gi">+# include &lt;linux/usb_ch9.h&gt;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/usb_gadget.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+static int utf8_to_utf16le(const char *s, u16 *cp, unsigned len)</span>
<span class="gi">+{</span>
<span class="gi">+	int	count = 0;</span>
<span class="gi">+	u8	c;</span>
<span class="gi">+	u16	uchar;</span>
<span class="gi">+</span>
<span class="gi">+	/* this insists on correct encodings, though not minimal ones.</span>
<span class="gi">+	 * BUT it currently rejects legit 4-byte UTF-8 code points,</span>
<span class="gi">+	 * which need surrogate pairs.  (Unicode 3.1 can use them.)</span>
<span class="gi">+	 */</span>
<span class="gi">+	while (len != 0 &amp;&amp; (c = (u8) *s++) != 0) {</span>
<span class="gi">+		if (unlikely(c &amp; 0x80)) {</span>
<span class="gi">+			// 2-byte sequence:</span>
<span class="gi">+			// 00000yyyyyxxxxxx = 110yyyyy 10xxxxxx</span>
<span class="gi">+			if ((c &amp; 0xe0) == 0xc0) {</span>
<span class="gi">+				uchar = (c &amp; 0x1f) &lt;&lt; 6;</span>
<span class="gi">+</span>
<span class="gi">+				c = (u8) *s++;</span>
<span class="gi">+				if ((c &amp; 0xc0) != 0xc0)</span>
<span class="gi">+					goto fail;</span>
<span class="gi">+				c &amp;= 0x3f;</span>
<span class="gi">+				uchar |= c;</span>
<span class="gi">+</span>
<span class="gi">+			// 3-byte sequence (most CJKV characters):</span>
<span class="gi">+			// zzzzyyyyyyxxxxxx = 1110zzzz 10yyyyyy 10xxxxxx</span>
<span class="gi">+			} else if ((c &amp; 0xf0) == 0xe0) {</span>
<span class="gi">+				uchar = (c &amp; 0x0f) &lt;&lt; 12;</span>
<span class="gi">+</span>
<span class="gi">+				c = (u8) *s++;</span>
<span class="gi">+				if ((c &amp; 0xc0) != 0xc0)</span>
<span class="gi">+					goto fail;</span>
<span class="gi">+				c &amp;= 0x3f;</span>
<span class="gi">+				uchar |= c &lt;&lt; 6;</span>
<span class="gi">+</span>
<span class="gi">+				c = (u8) *s++;</span>
<span class="gi">+				if ((c &amp; 0xc0) != 0xc0)</span>
<span class="gi">+					goto fail;</span>
<span class="gi">+				c &amp;= 0x3f;</span>
<span class="gi">+				uchar |= c;</span>
<span class="gi">+</span>
<span class="gi">+				/* no bogus surrogates */</span>
<span class="gi">+				if (0xd800 &lt;= uchar &amp;&amp; uchar &lt;= 0xdfff)</span>
<span class="gi">+					goto fail;</span>
<span class="gi">+</span>
<span class="gi">+			// 4-byte sequence (surrogate pairs, currently rare):</span>
<span class="gi">+			// 11101110wwwwzzzzyy + 110111yyyyxxxxxx</span>
<span class="gi">+			//     = 11110uuu 10uuzzzz 10yyyyyy 10xxxxxx</span>
<span class="gi">+			// (uuuuu = wwww + 1)</span>
<span class="gi">+			// FIXME accept the surrogate code points (only)</span>
<span class="gi">+</span>
<span class="gi">+			} else</span>
<span class="gi">+				goto fail;</span>
<span class="gi">+		} else</span>
<span class="gi">+			uchar = c;</span>
<span class="gi">+		put_unaligned (cpu_to_le16 (uchar), cp++);</span>
<span class="gi">+		count++;</span>
<span class="gi">+		len--;</span>
<span class="gi">+	}</span>
<span class="gi">+	return count;</span>
<span class="gi">+fail:</span>
<span class="gi">+	return -1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * usb_gadget_get_string - fill out a string descriptor </span>
<span class="gi">+ * @table: of c strings encoded using UTF-8</span>
<span class="gi">+ * @id: string id, from low byte of wValue in get string descriptor</span>
<span class="gi">+ * @buf: at least 256 bytes</span>
<span class="gi">+ *</span>
<span class="gi">+ * Finds the UTF-8 string matching the ID, and converts it into a</span>
<span class="gi">+ * string descriptor in utf16-le.</span>
<span class="gi">+ * Returns length of descriptor (always even) or negative errno</span>
<span class="gi">+ *</span>
<span class="gi">+ * If your driver needs stings in multiple languages, you&#39;ll probably</span>
<span class="gi">+ * &quot;switch (wIndex) { ... }&quot;  in your ep0 string descriptor logic,</span>
<span class="gi">+ * using this routine after choosing which set of UTF-8 strings to use.</span>
<span class="gi">+ * Note that US-ASCII is a strict subset of UTF-8; any string bytes with</span>
<span class="gi">+ * the eighth bit set will be multibyte UTF-8 characters, not ISO-8859/1</span>
<span class="gi">+ * characters (which are also widely used in C strings).</span>
<span class="gi">+ */</span>
<span class="gi">+int</span>
<span class="gi">+usb_gadget_get_string (struct usb_gadget_strings *table, int id, u8 *buf)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_string	*s;</span>
<span class="gi">+	int			len;</span>
<span class="gi">+</span>
<span class="gi">+	/* descriptor 0 has the language id */</span>
<span class="gi">+	if (id == 0) {</span>
<span class="gi">+		buf [0] = 4;</span>
<span class="gi">+		buf [1] = USB_DT_STRING;</span>
<span class="gi">+		buf [2] = (u8) table-&gt;language;</span>
<span class="gi">+		buf [3] = (u8) (table-&gt;language &gt;&gt; 8);</span>
<span class="gi">+		return 4;</span>
<span class="gi">+	}</span>
<span class="gi">+	for (s = table-&gt;strings; s &amp;&amp; s-&gt;s; s++)</span>
<span class="gi">+		if (s-&gt;id == id)</span>
<span class="gi">+			break;</span>
<span class="gi">+</span>
<span class="gi">+	/* unrecognized: stall. */</span>
<span class="gi">+	if (!s || !s-&gt;s)</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+</span>
<span class="gi">+	/* string descriptors have length, tag, then UTF16-LE text */</span>
<span class="gi">+	len = min ((size_t) 126, strlen (s-&gt;s));</span>
<span class="gi">+	memset (buf + 2, 0, 2 * len);	/* zero all the bytes */</span>
<span class="gi">+	len = utf8_to_utf16le(s-&gt;s, (u16 *)&amp;buf[2], len);</span>
<span class="gi">+	if (len &lt; 0)</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	buf [0] = (len + 1) * 2;</span>
<span class="gi">+	buf [1] = USB_DT_STRING;</span>
<span class="gi">+	return buf [0];</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * usb_descriptor_fillbuf - fill buffer with descriptors</span>
<span class="gi">+ * @buf: Buffer to be filled</span>
<span class="gi">+ * @buflen: Size of buf</span>
<span class="gi">+ * @src: Array of descriptor pointers, terminated by null pointer.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Copies descriptors into the buffer, returning the length or a</span>
<span class="gi">+ * negative error code if they can&#39;t all be copied.  Useful when</span>
<span class="gi">+ * assembling descriptors for an associated set of interfaces used</span>
<span class="gi">+ * as part of configuring a composite device; or in other cases where</span>
<span class="gi">+ * sets of descriptors need to be marshaled.</span>
<span class="gi">+ */</span>
<span class="gi">+int</span>
<span class="gi">+usb_descriptor_fillbuf(void *buf, unsigned buflen,</span>
<span class="gi">+		const struct usb_descriptor_header **src)</span>
<span class="gi">+{</span>
<span class="gi">+	u8	*dest = buf;</span>
<span class="gi">+</span>
<span class="gi">+	if (!src)</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+</span>
<span class="gi">+	/* fill buffer from src[] until null descriptor ptr */</span>
<span class="gi">+	for (; 0 != *src; src++) {</span>
<span class="gi">+		unsigned		len = (*src)-&gt;bLength;</span>
<span class="gi">+</span>
<span class="gi">+		if (len &gt; buflen)</span>
<span class="gi">+			return -EINVAL;</span>
<span class="gi">+		memcpy(dest, *src, len);</span>
<span class="gi">+		buflen -= len;</span>
<span class="gi">+		dest += len;</span>
<span class="gi">+	}</span>
<span class="gi">+	return dest - (u8 *)buf;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * usb_gadget_config_buf - builts a complete configuration descriptor</span>
<span class="gi">+ * @config: Header for the descriptor, including characteristics such</span>
<span class="gi">+ *	as power requirements and number of interfaces.</span>
<span class="gi">+ * @desc: Null-terminated vector of pointers to the descriptors (interface,</span>
<span class="gi">+ *	endpoint, etc) defining all functions in this device configuration.</span>
<span class="gi">+ * @buf: Buffer for the resulting configuration descriptor.</span>
<span class="gi">+ * @length: Length of buffer.  If this is not big enough to hold the</span>
<span class="gi">+ *	entire configuration descriptor, an error code will be returned.</span>
<span class="gi">+ *</span>
<span class="gi">+ * This copies descriptors into the response buffer, building a descriptor</span>
<span class="gi">+ * for that configuration.  It returns the buffer length or a negative</span>
<span class="gi">+ * status code.  The config.wTotalLength field is set to match the length</span>
<span class="gi">+ * of the result, but other descriptor fields (including power usage and</span>
<span class="gi">+ * interface count) must be set by the caller.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Gadget drivers could use this when constructing a config descriptor</span>
<span class="gi">+ * in response to USB_REQ_GET_DESCRIPTOR.  They will need to patch the</span>
<span class="gi">+ * resulting bDescriptorType value if USB_DT_OTHER_SPEED_CONFIG is needed.</span>
<span class="gi">+ */</span>
<span class="gi">+int usb_gadget_config_buf(</span>
<span class="gi">+	const struct usb_config_descriptor	*config,</span>
<span class="gi">+	void					*buf,</span>
<span class="gi">+	unsigned				length,</span>
<span class="gi">+	const struct usb_descriptor_header	**desc</span>
<span class="gi">+)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_config_descriptor		*cp = buf;</span>
<span class="gi">+	int					len;</span>
<span class="gi">+</span>
<span class="gi">+	/* config descriptor first */</span>
<span class="gi">+	if (length &lt; USB_DT_CONFIG_SIZE || !desc)</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	*cp = *config; </span>
<span class="gi">+</span>
<span class="gi">+	/* then interface/endpoint/class/vendor/... */</span>
<span class="gi">+	len = usb_descriptor_fillbuf(USB_DT_CONFIG_SIZE + (u8*)buf,</span>
<span class="gi">+			length - USB_DT_CONFIG_SIZE, desc);</span>
<span class="gi">+	if (len &lt; 0)</span>
<span class="gi">+		return len;</span>
<span class="gi">+	len += USB_DT_CONFIG_SIZE;</span>
<span class="gi">+	if (len &gt; 0xffff)</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+</span>
<span class="gi">+	/* patch up the config descriptor */</span>
<span class="gi">+	cp-&gt;bLength = USB_DT_CONFIG_SIZE;</span>
<span class="gi">+	cp-&gt;bDescriptorType = USB_DT_CONFIG;</span>
<span class="gi">+	cp-&gt;wTotalLength = cpu_to_le16(len);</span>
<span class="gi">+	cp-&gt;bmAttributes |= USB_CONFIG_ATT_ONE;</span>
<span class="gi">+	return len;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#define RBUF_LEN (1024*1024)</span>
<span class="gi">+static int rbuf_start;</span>
<span class="gi">+static int rbuf_len;</span>
<span class="gi">+static __u8 rbuf[RBUF_LEN];</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+#define DRIVER_VERSION		&quot;St Patrick&#39;s Day 2004&quot;</span>
<span class="gi">+</span>
<span class="gi">+static const char shortname [] = &quot;zero&quot;;</span>
<span class="gi">+static const char longname [] = &quot;YAMAHA YST-MS35D USB Speaker  &quot;;</span>
<span class="gi">+</span>
<span class="gi">+static const char source_sink [] = &quot;source and sink data&quot;;</span>
<span class="gi">+static const char loopback [] = &quot;loop input to output&quot;;</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * driver assumes self-powered hardware, and</span>
<span class="gi">+ * has no way for users to trigger remote wakeup.</span>
<span class="gi">+ *</span>
<span class="gi">+ * this version autoconfigures as much as possible,</span>
<span class="gi">+ * which is reasonable for most &quot;bulk-only&quot; drivers.</span>
<span class="gi">+ */</span>
<span class="gi">+static const char *EP_IN_NAME;		/* source */</span>
<span class="gi">+static const char *EP_OUT_NAME;		/* sink */</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+/* big enough to hold our biggest descriptor */</span>
<span class="gi">+#define USB_BUFSIZ	512</span>
<span class="gi">+</span>
<span class="gi">+struct zero_dev {</span>
<span class="gi">+	spinlock_t		lock;</span>
<span class="gi">+	struct usb_gadget	*gadget;</span>
<span class="gi">+	struct usb_request	*req;		/* for control responses */</span>
<span class="gi">+</span>
<span class="gi">+	/* when configured, we have one of two configs:</span>
<span class="gi">+	 * - source data (in to host) and sink it (out from host)</span>
<span class="gi">+	 * - or loop it back (out from host back in to host)</span>
<span class="gi">+	 */</span>
<span class="gi">+	u8			config;</span>
<span class="gi">+	struct usb_ep		*in_ep, *out_ep;</span>
<span class="gi">+</span>
<span class="gi">+	/* autoresume timer */</span>
<span class="gi">+	struct timer_list	resume;</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+#define xprintk(d,level,fmt,args...) \</span>
<span class="gi">+	dev_printk(level , &amp;(d)-&gt;gadget-&gt;dev , fmt , ## args)</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+#define DBG(dev,fmt,args...) \</span>
<span class="gi">+	xprintk(dev , KERN_DEBUG , fmt , ## args)</span>
<span class="gi">+#else</span>
<span class="gi">+#define DBG(dev,fmt,args...) \</span>
<span class="gi">+	do { } while (0)</span>
<span class="gi">+#endif /* DEBUG */</span>
<span class="gi">+</span>
<span class="gi">+#ifdef VERBOSE</span>
<span class="gi">+#define VDBG	DBG</span>
<span class="gi">+#else</span>
<span class="gi">+#define VDBG(dev,fmt,args...) \</span>
<span class="gi">+	do { } while (0)</span>
<span class="gi">+#endif /* VERBOSE */</span>
<span class="gi">+</span>
<span class="gi">+#define ERROR(dev,fmt,args...) \</span>
<span class="gi">+	xprintk(dev , KERN_ERR , fmt , ## args)</span>
<span class="gi">+#define WARN(dev,fmt,args...) \</span>
<span class="gi">+	xprintk(dev , KERN_WARNING , fmt , ## args)</span>
<span class="gi">+#define INFO(dev,fmt,args...) \</span>
<span class="gi">+	xprintk(dev , KERN_INFO , fmt , ## args)</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+static unsigned buflen = 4096;</span>
<span class="gi">+static unsigned qlen = 32;</span>
<span class="gi">+static unsigned pattern = 0;</span>
<span class="gi">+</span>
<span class="gi">+module_param (buflen, uint, S_IRUGO|S_IWUSR);</span>
<span class="gi">+module_param (qlen, uint, S_IRUGO|S_IWUSR);</span>
<span class="gi">+module_param (pattern, uint, S_IRUGO|S_IWUSR);</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * if it&#39;s nonzero, autoresume says how many seconds to wait</span>
<span class="gi">+ * before trying to wake up the host after suspend.</span>
<span class="gi">+ */</span>
<span class="gi">+static unsigned autoresume = 0;</span>
<span class="gi">+module_param (autoresume, uint, 0);</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * Normally the &quot;loopback&quot; configuration is second (index 1) so</span>
<span class="gi">+ * it&#39;s not the default.  Here&#39;s where to change that order, to</span>
<span class="gi">+ * work better with hosts where config changes are problematic.</span>
<span class="gi">+ * Or controllers (like superh) that only support one config.</span>
<span class="gi">+ */</span>
<span class="gi">+static int loopdefault = 0;</span>
<span class="gi">+</span>
<span class="gi">+module_param (loopdefault, bool, S_IRUGO|S_IWUSR);</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+/* Thanks to NetChip Technologies for donating this product ID.</span>
<span class="gi">+ *</span>
<span class="gi">+ * DO NOT REUSE THESE IDs with a protocol-incompatible driver!!  Ever!!</span>
<span class="gi">+ * Instead:  allocate your own, using normal USB-IF procedures.</span>
<span class="gi">+ */</span>
<span class="gi">+#ifndef	CONFIG_USB_ZERO_HNPTEST</span>
<span class="gi">+#define DRIVER_VENDOR_NUM	0x0525		/* NetChip */</span>
<span class="gi">+#define DRIVER_PRODUCT_NUM	0xa4a0		/* Linux-USB &quot;Gadget Zero&quot; */</span>
<span class="gi">+#else</span>
<span class="gi">+#define DRIVER_VENDOR_NUM	0x1a0a		/* OTG test device IDs */</span>
<span class="gi">+#define DRIVER_PRODUCT_NUM	0xbadd</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * DESCRIPTORS ... most are static, but strings and (full)</span>
<span class="gi">+ * configuration descriptors are built on demand.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+#define STRING_MANUFACTURER		25</span>
<span class="gi">+#define STRING_PRODUCT			42</span>
<span class="gi">+#define STRING_SERIAL			101</span>
<span class="gi">+*/</span>
<span class="gi">+#define STRING_MANUFACTURER		1</span>
<span class="gi">+#define STRING_PRODUCT			2</span>
<span class="gi">+#define STRING_SERIAL			3</span>
<span class="gi">+</span>
<span class="gi">+#define STRING_SOURCE_SINK		250</span>
<span class="gi">+#define STRING_LOOPBACK			251</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * This device advertises two configurations; these numbers work</span>
<span class="gi">+ * on a pxa250 as well as more flexible hardware.</span>
<span class="gi">+ */</span>
<span class="gi">+#define	CONFIG_SOURCE_SINK	3</span>
<span class="gi">+#define	CONFIG_LOOPBACK		2</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+static struct usb_device_descriptor</span>
<span class="gi">+device_desc = {</span>
<span class="gi">+	.bLength =		sizeof device_desc,</span>
<span class="gi">+	.bDescriptorType =	USB_DT_DEVICE,</span>
<span class="gi">+</span>
<span class="gi">+	.bcdUSB =		__constant_cpu_to_le16 (0x0200),</span>
<span class="gi">+	.bDeviceClass =		USB_CLASS_VENDOR_SPEC,</span>
<span class="gi">+</span>
<span class="gi">+	.idVendor =		__constant_cpu_to_le16 (DRIVER_VENDOR_NUM),</span>
<span class="gi">+	.idProduct =		__constant_cpu_to_le16 (DRIVER_PRODUCT_NUM),</span>
<span class="gi">+	.iManufacturer =	STRING_MANUFACTURER,</span>
<span class="gi">+	.iProduct =		STRING_PRODUCT,</span>
<span class="gi">+	.iSerialNumber =	STRING_SERIAL,</span>
<span class="gi">+	.bNumConfigurations =	2,</span>
<span class="gi">+};</span>
<span class="gi">+*/</span>
<span class="gi">+static struct usb_device_descriptor</span>
<span class="gi">+device_desc = {</span>
<span class="gi">+	.bLength =		sizeof device_desc,</span>
<span class="gi">+	.bDescriptorType =	USB_DT_DEVICE,</span>
<span class="gi">+	.bcdUSB =		__constant_cpu_to_le16 (0x0100),</span>
<span class="gi">+	.bDeviceClass =		USB_CLASS_PER_INTERFACE,</span>
<span class="gi">+	.bDeviceSubClass =      0,</span>
<span class="gi">+	.bDeviceProtocol =      0,</span>
<span class="gi">+	.bMaxPacketSize0 =      64,</span>
<span class="gi">+	.bcdDevice =            __constant_cpu_to_le16 (0x0100),</span>
<span class="gi">+	.idVendor =		__constant_cpu_to_le16 (0x0499),</span>
<span class="gi">+	.idProduct =		__constant_cpu_to_le16 (0x3002),</span>
<span class="gi">+	.iManufacturer =	STRING_MANUFACTURER,</span>
<span class="gi">+	.iProduct =		STRING_PRODUCT,</span>
<span class="gi">+	.iSerialNumber =	STRING_SERIAL,</span>
<span class="gi">+	.bNumConfigurations =	1,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+static struct usb_config_descriptor</span>
<span class="gi">+z_config = {</span>
<span class="gi">+	.bLength =		sizeof z_config,</span>
<span class="gi">+	.bDescriptorType =	USB_DT_CONFIG,</span>
<span class="gi">+</span>
<span class="gi">+	/* compute wTotalLength on the fly */</span>
<span class="gi">+	.bNumInterfaces =	2,</span>
<span class="gi">+	.bConfigurationValue =	1,</span>
<span class="gi">+	.iConfiguration =	0,</span>
<span class="gi">+	.bmAttributes =		0x40,</span>
<span class="gi">+	.bMaxPower =		0,	/* self-powered */</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+static struct usb_otg_descriptor</span>
<span class="gi">+otg_descriptor = {</span>
<span class="gi">+	.bLength =		sizeof otg_descriptor,</span>
<span class="gi">+	.bDescriptorType =	USB_DT_OTG,</span>
<span class="gi">+</span>
<span class="gi">+	.bmAttributes =		USB_OTG_SRP,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/* one interface in each configuration */</span>
<span class="gi">+#ifdef	CONFIG_USB_GADGET_DUALSPEED</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * usb 2.0 devices need to expose both high speed and full speed</span>
<span class="gi">+ * descriptors, unless they only run at full speed.</span>
<span class="gi">+ *</span>
<span class="gi">+ * that means alternate endpoint descriptors (bigger packets)</span>
<span class="gi">+ * and a &quot;device qualifier&quot; ... plus more construction options</span>
<span class="gi">+ * for the config descriptor.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+static struct usb_qualifier_descriptor</span>
<span class="gi">+dev_qualifier = {</span>
<span class="gi">+	.bLength =		sizeof dev_qualifier,</span>
<span class="gi">+	.bDescriptorType =	USB_DT_DEVICE_QUALIFIER,</span>
<span class="gi">+</span>
<span class="gi">+	.bcdUSB =		__constant_cpu_to_le16 (0x0200),</span>
<span class="gi">+	.bDeviceClass =		USB_CLASS_VENDOR_SPEC,</span>
<span class="gi">+</span>
<span class="gi">+	.bNumConfigurations =	2,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+struct usb_cs_as_general_descriptor {</span>
<span class="gi">+	__u8  bLength;</span>
<span class="gi">+	__u8  bDescriptorType;</span>
<span class="gi">+</span>
<span class="gi">+	__u8  bDescriptorSubType;</span>
<span class="gi">+	__u8  bTerminalLink;</span>
<span class="gi">+	__u8  bDelay;</span>
<span class="gi">+	__u16  wFormatTag;</span>
<span class="gi">+} __attribute__ ((packed));</span>
<span class="gi">+</span>
<span class="gi">+struct usb_cs_as_format_descriptor {</span>
<span class="gi">+	__u8  bLength;</span>
<span class="gi">+	__u8  bDescriptorType;</span>
<span class="gi">+</span>
<span class="gi">+	__u8  bDescriptorSubType;</span>
<span class="gi">+	__u8  bFormatType;</span>
<span class="gi">+	__u8  bNrChannels;</span>
<span class="gi">+	__u8  bSubframeSize;</span>
<span class="gi">+	__u8  bBitResolution;</span>
<span class="gi">+	__u8  bSamfreqType;</span>
<span class="gi">+	__u8  tLowerSamFreq[3];</span>
<span class="gi">+	__u8  tUpperSamFreq[3];</span>
<span class="gi">+} __attribute__ ((packed));</span>
<span class="gi">+</span>
<span class="gi">+static const struct usb_interface_descriptor</span>
<span class="gi">+z_audio_control_if_desc = {</span>
<span class="gi">+	.bLength =		sizeof z_audio_control_if_desc,</span>
<span class="gi">+	.bDescriptorType =	USB_DT_INTERFACE,</span>
<span class="gi">+	.bInterfaceNumber = 0,</span>
<span class="gi">+	.bAlternateSetting = 0,</span>
<span class="gi">+	.bNumEndpoints = 0,</span>
<span class="gi">+	.bInterfaceClass = USB_CLASS_AUDIO,</span>
<span class="gi">+	.bInterfaceSubClass = 0x1,</span>
<span class="gi">+	.bInterfaceProtocol = 0,</span>
<span class="gi">+	.iInterface = 0,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+static const struct usb_interface_descriptor</span>
<span class="gi">+z_audio_if_desc = {</span>
<span class="gi">+	.bLength =		sizeof z_audio_if_desc,</span>
<span class="gi">+	.bDescriptorType =	USB_DT_INTERFACE,</span>
<span class="gi">+	.bInterfaceNumber = 1,</span>
<span class="gi">+	.bAlternateSetting = 0,</span>
<span class="gi">+	.bNumEndpoints = 0,</span>
<span class="gi">+	.bInterfaceClass = USB_CLASS_AUDIO,</span>
<span class="gi">+	.bInterfaceSubClass = 0x2,</span>
<span class="gi">+	.bInterfaceProtocol = 0,</span>
<span class="gi">+	.iInterface = 0,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+static const struct usb_interface_descriptor</span>
<span class="gi">+z_audio_if_desc2 = {</span>
<span class="gi">+	.bLength =		sizeof z_audio_if_desc,</span>
<span class="gi">+	.bDescriptorType =	USB_DT_INTERFACE,</span>
<span class="gi">+	.bInterfaceNumber = 1,</span>
<span class="gi">+	.bAlternateSetting = 1,</span>
<span class="gi">+	.bNumEndpoints = 1,</span>
<span class="gi">+	.bInterfaceClass = USB_CLASS_AUDIO,</span>
<span class="gi">+	.bInterfaceSubClass = 0x2,</span>
<span class="gi">+	.bInterfaceProtocol = 0,</span>
<span class="gi">+	.iInterface = 0,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+static const struct usb_cs_as_general_descriptor</span>
<span class="gi">+z_audio_cs_as_if_desc = {</span>
<span class="gi">+	.bLength = 7,</span>
<span class="gi">+	.bDescriptorType = 0x24,</span>
<span class="gi">+	</span>
<span class="gi">+	.bDescriptorSubType = 0x01,</span>
<span class="gi">+	.bTerminalLink = 0x01,</span>
<span class="gi">+	.bDelay = 0x0,</span>
<span class="gi">+	.wFormatTag = __constant_cpu_to_le16 (0x0001)</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+static const struct usb_cs_as_format_descriptor </span>
<span class="gi">+z_audio_cs_as_format_desc = {</span>
<span class="gi">+	.bLength = 0xe,</span>
<span class="gi">+	.bDescriptorType = 0x24,</span>
<span class="gi">+	</span>
<span class="gi">+	.bDescriptorSubType = 2,</span>
<span class="gi">+	.bFormatType = 1,</span>
<span class="gi">+	.bNrChannels = 1,</span>
<span class="gi">+	.bSubframeSize = 1,</span>
<span class="gi">+	.bBitResolution = 8,</span>
<span class="gi">+	.bSamfreqType = 0,</span>
<span class="gi">+	.tLowerSamFreq = {0x7e, 0x13, 0x00},</span>
<span class="gi">+	.tUpperSamFreq = {0xe2, 0xd6, 0x00},</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+static const struct usb_endpoint_descriptor </span>
<span class="gi">+z_iso_ep = {</span>
<span class="gi">+	.bLength = 0x09,</span>
<span class="gi">+	.bDescriptorType = 0x05,</span>
<span class="gi">+	.bEndpointAddress = 0x04,</span>
<span class="gi">+	.bmAttributes = 0x09,</span>
<span class="gi">+	.wMaxPacketSize = 0x0038,</span>
<span class="gi">+	.bInterval = 0x01,</span>
<span class="gi">+	.bRefresh = 0x00,</span>
<span class="gi">+	.bSynchAddress = 0x00,	</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+static char z_iso_ep2[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02};</span>
<span class="gi">+</span>
<span class="gi">+// 9 bytes</span>
<span class="gi">+static char z_ac_interface_header_desc[] = </span>
<span class="gi">+{ 0x09, 0x24, 0x01, 0x00, 0x01, 0x2b, 0x00, 0x01, 0x01 };</span>
<span class="gi">+</span>
<span class="gi">+// 12 bytes</span>
<span class="gi">+static char z_0[] = {0x0c, 0x24, 0x02, 0x01, 0x01, 0x01, 0x00, 0x02, </span>
<span class="gi">+		     0x03, 0x00, 0x00, 0x00};</span>
<span class="gi">+// 13 bytes</span>
<span class="gi">+static char z_1[] = {0x0d, 0x24, 0x06, 0x02, 0x01, 0x02, 0x15, 0x00, </span>
<span class="gi">+		     0x02, 0x00, 0x02, 0x00, 0x00};</span>
<span class="gi">+// 9 bytes</span>
<span class="gi">+static char z_2[] = {0x09, 0x24, 0x03, 0x03, 0x01, 0x03, 0x00, 0x02, </span>
<span class="gi">+		     0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_0[] = {0x09, 0x04, 0x01, 0x02, 0x01, 0x01, 0x02, 0x00, </span>
<span class="gi">+		      0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_1[] = {0x07, 0x24, 0x01, 0x01, 0x00, 0x01, 0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_2[] = {0x0e, 0x24, 0x02, 0x01, 0x02, 0x01, 0x08, 0x00, </span>
<span class="gi">+		      0x7e, 0x13, 0x00, 0xe2, 0xd6, 0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_3[] = {0x09, 0x05, 0x04, 0x09, 0x70, 0x00, 0x01, 0x00,</span>
<span class="gi">+		      0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_4[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02};</span>
<span class="gi">+</span>
<span class="gi">+static char za_5[] = {0x09, 0x04, 0x01, 0x03, 0x01, 0x01, 0x02, 0x00,</span>
<span class="gi">+		      0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_6[] = {0x07, 0x24, 0x01, 0x01, 0x00, 0x01, 0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_7[] = {0x0e, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x00,</span>
<span class="gi">+		      0x7e, 0x13, 0x00, 0xe2, 0xd6, 0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_8[] = {0x09, 0x05, 0x04, 0x09, 0x70, 0x00, 0x01, 0x00,</span>
<span class="gi">+		      0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_9[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02};</span>
<span class="gi">+</span>
<span class="gi">+static char za_10[] = {0x09, 0x04, 0x01, 0x04, 0x01, 0x01, 0x02, 0x00,</span>
<span class="gi">+		       0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_11[] = {0x07, 0x24, 0x01, 0x01, 0x00, 0x01, 0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_12[] = {0x0e, 0x24, 0x02, 0x01, 0x02, 0x02, 0x10, 0x00,</span>
<span class="gi">+		       0x73, 0x13, 0x00, 0xe2, 0xd6, 0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_13[] = {0x09, 0x05, 0x04, 0x09, 0xe0, 0x00, 0x01, 0x00,</span>
<span class="gi">+		       0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_14[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02};</span>
<span class="gi">+</span>
<span class="gi">+static char za_15[] = {0x09, 0x04, 0x01, 0x05, 0x01, 0x01, 0x02, 0x00, </span>
<span class="gi">+		       0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_16[] = {0x07, 0x24, 0x01, 0x01, 0x00, 0x01, 0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_17[] = {0x0e, 0x24, 0x02, 0x01, 0x01, 0x03, 0x14, 0x00, </span>
<span class="gi">+		       0x7e, 0x13, 0x00, 0xe2, 0xd6, 0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_18[] = {0x09, 0x05, 0x04, 0x09, 0xa8, 0x00, 0x01, 0x00,</span>
<span class="gi">+		       0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_19[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02};</span>
<span class="gi">+</span>
<span class="gi">+static char za_20[] = {0x09, 0x04, 0x01, 0x06, 0x01, 0x01, 0x02, 0x00,</span>
<span class="gi">+		       0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_21[] = {0x07, 0x24, 0x01, 0x01, 0x00, 0x01, 0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_22[] = {0x0e, 0x24, 0x02, 0x01, 0x02, 0x03, 0x14, 0x00, </span>
<span class="gi">+		       0x7e, 0x13, 0x00, 0xe2, 0xd6, 0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_23[] = {0x09, 0x05, 0x04, 0x09, 0x50, 0x01, 0x01, 0x00,</span>
<span class="gi">+		       0x00};</span>
<span class="gi">+</span>
<span class="gi">+static char za_24[] = {0x07, 0x25, 0x01, 0x00, 0x02, 0x00, 0x02};</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+static const struct usb_descriptor_header *z_function [] = {</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_audio_control_if_desc,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_ac_interface_header_desc,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_0,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_1,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_2,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_audio_if_desc,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_audio_if_desc2,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_audio_cs_as_if_desc,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_audio_cs_as_format_desc,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_iso_ep,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;z_iso_ep2,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_0,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_1,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_2,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_3,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_4,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_5,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_6,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_7,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_8,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_9,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_10,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_11,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_12,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_13,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_14,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_15,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_16,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_17,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_18,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_19,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_20,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_21,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_22,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_23,</span>
<span class="gi">+	(struct usb_descriptor_header *) &amp;za_24,</span>
<span class="gi">+	NULL,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/* maxpacket and other transfer characteristics vary by speed. */</span>
<span class="gi">+#define ep_desc(g,hs,fs) (((g)-&gt;speed==USB_SPEED_HIGH)?(hs):(fs))</span>
<span class="gi">+</span>
<span class="gi">+#else</span>
<span class="gi">+</span>
<span class="gi">+/* if there&#39;s no high speed support, maxpacket doesn&#39;t change. */</span>
<span class="gi">+#define ep_desc(g,hs,fs) fs</span>
<span class="gi">+</span>
<span class="gi">+#endif	/* !CONFIG_USB_GADGET_DUALSPEED */</span>
<span class="gi">+</span>
<span class="gi">+static char				manufacturer [40];</span>
<span class="gi">+//static char				serial [40];</span>
<span class="gi">+static char				serial [] = &quot;Ser 00 em&quot;;</span>
<span class="gi">+</span>
<span class="gi">+/* static strings, in UTF-8 */</span>
<span class="gi">+static struct usb_string		strings [] = {</span>
<span class="gi">+	{ STRING_MANUFACTURER, manufacturer, },</span>
<span class="gi">+	{ STRING_PRODUCT, longname, },</span>
<span class="gi">+	{ STRING_SERIAL, serial, },</span>
<span class="gi">+	{ STRING_LOOPBACK, loopback, },</span>
<span class="gi">+	{ STRING_SOURCE_SINK, source_sink, },</span>
<span class="gi">+	{  }			/* end of list */</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+static struct usb_gadget_strings	stringtab = {</span>
<span class="gi">+	.language	= 0x0409,	/* en-us */</span>
<span class="gi">+	.strings	= strings,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * config descriptors are also handcrafted.  these must agree with code</span>
<span class="gi">+ * that sets configurations, and with code managing interfaces and their</span>
<span class="gi">+ * altsettings.  other complexity may come from:</span>
<span class="gi">+ *</span>
<span class="gi">+ *  - high speed support, including &quot;other speed config&quot; rules</span>
<span class="gi">+ *  - multiple configurations</span>
<span class="gi">+ *  - interfaces with alternate settings</span>
<span class="gi">+ *  - embedded class or vendor-specific descriptors</span>
<span class="gi">+ *</span>
<span class="gi">+ * this handles high speed, and has a second config that could as easily</span>
<span class="gi">+ * have been an alternate interface setting (on most hardware).</span>
<span class="gi">+ *</span>
<span class="gi">+ * NOTE:  to demonstrate (and test) more USB capabilities, this driver</span>
<span class="gi">+ * should include an altsetting to test interrupt transfers, including</span>
<span class="gi">+ * high bandwidth modes at high speed.  (Maybe work like Intel&#39;s test</span>
<span class="gi">+ * device?)</span>
<span class="gi">+ */</span>
<span class="gi">+static int</span>
<span class="gi">+config_buf (struct usb_gadget *gadget, u8 *buf, u8 type, unsigned index)</span>
<span class="gi">+{</span>
<span class="gi">+	int len;</span>
<span class="gi">+	const struct usb_descriptor_header **function;</span>
<span class="gi">+	</span>
<span class="gi">+	function = z_function;</span>
<span class="gi">+	len = usb_gadget_config_buf (&amp;z_config, buf, USB_BUFSIZ, function);</span>
<span class="gi">+	if (len &lt; 0)</span>
<span class="gi">+		return len;</span>
<span class="gi">+	((struct usb_config_descriptor *) buf)-&gt;bDescriptorType = type;</span>
<span class="gi">+	return len;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+static struct usb_request *</span>
<span class="gi">+alloc_ep_req (struct usb_ep *ep, unsigned length)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_request	*req;</span>
<span class="gi">+</span>
<span class="gi">+	req = usb_ep_alloc_request (ep, GFP_ATOMIC);</span>
<span class="gi">+	if (req) {</span>
<span class="gi">+		req-&gt;length = length;</span>
<span class="gi">+		req-&gt;buf = usb_ep_alloc_buffer (ep, length,</span>
<span class="gi">+				&amp;req-&gt;dma, GFP_ATOMIC);</span>
<span class="gi">+		if (!req-&gt;buf) {</span>
<span class="gi">+			usb_ep_free_request (ep, req);</span>
<span class="gi">+			req = NULL;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	return req;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static void free_ep_req (struct usb_ep *ep, struct usb_request *req)</span>
<span class="gi">+{</span>
<span class="gi">+	if (req-&gt;buf)</span>
<span class="gi">+		usb_ep_free_buffer (ep, req-&gt;buf, req-&gt;dma, req-&gt;length);</span>
<span class="gi">+	usb_ep_free_request (ep, req);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+/* optionally require specific source/sink data patterns  */</span>
<span class="gi">+</span>
<span class="gi">+static int</span>
<span class="gi">+check_read_data (</span>
<span class="gi">+	struct zero_dev		*dev,</span>
<span class="gi">+	struct usb_ep		*ep,</span>
<span class="gi">+	struct usb_request	*req</span>
<span class="gi">+)</span>
<span class="gi">+{</span>
<span class="gi">+	unsigned	i;</span>
<span class="gi">+	u8		*buf = req-&gt;buf;</span>
<span class="gi">+</span>
<span class="gi">+	for (i = 0; i &lt; req-&gt;actual; i++, buf++) {</span>
<span class="gi">+		switch (pattern) {</span>
<span class="gi">+		/* all-zeroes has no synchronization issues */</span>
<span class="gi">+		case 0:</span>
<span class="gi">+			if (*buf == 0)</span>
<span class="gi">+				continue;</span>
<span class="gi">+			break;</span>
<span class="gi">+		/* mod63 stays in sync with short-terminated transfers,</span>
<span class="gi">+		 * or otherwise when host and gadget agree on how large</span>
<span class="gi">+		 * each usb transfer request should be.  resync is done</span>
<span class="gi">+		 * with set_interface or set_config.</span>
<span class="gi">+		 */</span>
<span class="gi">+		case 1:</span>
<span class="gi">+			if (*buf == (u8)(i % 63))</span>
<span class="gi">+				continue;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		ERROR (dev, &quot;bad OUT byte, buf [%d] = %d\n&quot;, i, *buf);</span>
<span class="gi">+		usb_ep_set_halt (ep);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+static void zero_reset_config (struct zero_dev *dev)</span>
<span class="gi">+{</span>
<span class="gi">+	if (dev-&gt;config == 0)</span>
<span class="gi">+		return;</span>
<span class="gi">+</span>
<span class="gi">+	DBG (dev, &quot;reset config\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	/* just disable endpoints, forcing completion of pending i/o.</span>
<span class="gi">+	 * all our completion handlers free their requests in this case.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (dev-&gt;in_ep) {</span>
<span class="gi">+		usb_ep_disable (dev-&gt;in_ep);</span>
<span class="gi">+		dev-&gt;in_ep = NULL;</span>
<span class="gi">+	}</span>
<span class="gi">+	if (dev-&gt;out_ep) {</span>
<span class="gi">+		usb_ep_disable (dev-&gt;out_ep);</span>
<span class="gi">+		dev-&gt;out_ep = NULL;</span>
<span class="gi">+	}</span>
<span class="gi">+	dev-&gt;config = 0;</span>
<span class="gi">+	del_timer (&amp;dev-&gt;resume);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#define _write(f, buf, sz) (f-&gt;f_op-&gt;write(f, buf, sz, &amp;f-&gt;f_pos))</span>
<span class="gi">+</span>
<span class="gi">+static void </span>
<span class="gi">+zero_isoc_complete (struct usb_ep *ep, struct usb_request *req)</span>
<span class="gi">+{</span>
<span class="gi">+	struct zero_dev	*dev = ep-&gt;driver_data;</span>
<span class="gi">+	int		status = req-&gt;status;</span>
<span class="gi">+	int i, j;</span>
<span class="gi">+</span>
<span class="gi">+	switch (status) {</span>
<span class="gi">+</span>
<span class="gi">+	case 0: 			/* normal completion? */</span>
<span class="gi">+		//printk (&quot;\nzero ---------------&gt; isoc normal completion %d bytes\n&quot;, req-&gt;actual);</span>
<span class="gi">+		for (i=0, j=rbuf_start; i&lt;req-&gt;actual; i++) {</span>
<span class="gi">+			//printk (&quot;%02x &quot;, ((__u8*)req-&gt;buf)[i]);</span>
<span class="gi">+			rbuf[j] = ((__u8*)req-&gt;buf)[i];</span>
<span class="gi">+			j++;</span>
<span class="gi">+			if (j &gt;= RBUF_LEN) j=0;</span>
<span class="gi">+		}</span>
<span class="gi">+		rbuf_start = j;</span>
<span class="gi">+		//printk (&quot;\n\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+		if (rbuf_len &lt; RBUF_LEN) {</span>
<span class="gi">+			rbuf_len += req-&gt;actual;</span>
<span class="gi">+			if (rbuf_len &gt; RBUF_LEN) {</span>
<span class="gi">+				rbuf_len = RBUF_LEN;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	/* this endpoint is normally active while we&#39;re configured */</span>
<span class="gi">+	case -ECONNABORTED: 		/* hardware forced ep reset */</span>
<span class="gi">+	case -ECONNRESET:		/* request dequeued */</span>
<span class="gi">+	case -ESHUTDOWN:		/* disconnect from host */</span>
<span class="gi">+		VDBG (dev, &quot;%s gone (%d), %d/%d\n&quot;, ep-&gt;name, status,</span>
<span class="gi">+				req-&gt;actual, req-&gt;length);</span>
<span class="gi">+		if (ep == dev-&gt;out_ep)</span>
<span class="gi">+			check_read_data (dev, ep, req);</span>
<span class="gi">+		free_ep_req (ep, req);</span>
<span class="gi">+		return;</span>
<span class="gi">+</span>
<span class="gi">+	case -EOVERFLOW:		/* buffer overrun on read means that</span>
<span class="gi">+					 * we didn&#39;t provide a big enough</span>
<span class="gi">+					 * buffer.</span>
<span class="gi">+					 */</span>
<span class="gi">+	default:</span>
<span class="gi">+#if 1</span>
<span class="gi">+		DBG (dev, &quot;%s complete --&gt; %d, %d/%d\n&quot;, ep-&gt;name,</span>
<span class="gi">+				status, req-&gt;actual, req-&gt;length);</span>
<span class="gi">+#endif</span>
<span class="gi">+	case -EREMOTEIO:		/* short read */</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	status = usb_ep_queue (ep, req, GFP_ATOMIC);</span>
<span class="gi">+	if (status) {</span>
<span class="gi">+		ERROR (dev, &quot;kill %s:  resubmit %d bytes --&gt; %d\n&quot;,</span>
<span class="gi">+				ep-&gt;name, req-&gt;length, status);</span>
<span class="gi">+		usb_ep_set_halt (ep);</span>
<span class="gi">+		/* FIXME recover later ... somehow */</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static struct usb_request *</span>
<span class="gi">+zero_start_isoc_ep (struct usb_ep *ep, int gfp_flags)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_request	*req;</span>
<span class="gi">+	int			status;</span>
<span class="gi">+</span>
<span class="gi">+	req = alloc_ep_req (ep, 512);</span>
<span class="gi">+	if (!req)</span>
<span class="gi">+		return NULL;</span>
<span class="gi">+</span>
<span class="gi">+	req-&gt;complete = zero_isoc_complete;</span>
<span class="gi">+</span>
<span class="gi">+	status = usb_ep_queue (ep, req, gfp_flags);</span>
<span class="gi">+	if (status) {</span>
<span class="gi">+		struct zero_dev	*dev = ep-&gt;driver_data;</span>
<span class="gi">+</span>
<span class="gi">+		ERROR (dev, &quot;start %s --&gt; %d\n&quot;, ep-&gt;name, status);</span>
<span class="gi">+		free_ep_req (ep, req);</span>
<span class="gi">+		req = NULL;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return req;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/* change our operational config.  this code must agree with the code</span>
<span class="gi">+ * that returns config descriptors, and altsetting code.</span>
<span class="gi">+ *</span>
<span class="gi">+ * it&#39;s also responsible for power management interactions. some</span>
<span class="gi">+ * configurations might not work with our current power sources.</span>
<span class="gi">+ *</span>
<span class="gi">+ * note that some device controller hardware will constrain what this</span>
<span class="gi">+ * code can do, perhaps by disallowing more than one configuration or</span>
<span class="gi">+ * by limiting configuration choices (like the pxa2xx).</span>
<span class="gi">+ */</span>
<span class="gi">+static int</span>
<span class="gi">+zero_set_config (struct zero_dev *dev, unsigned number, int gfp_flags)</span>
<span class="gi">+{</span>
<span class="gi">+	int			result = 0;</span>
<span class="gi">+	struct usb_gadget	*gadget = dev-&gt;gadget;</span>
<span class="gi">+	const struct usb_endpoint_descriptor	*d;</span>
<span class="gi">+	struct usb_ep		*ep;</span>
<span class="gi">+</span>
<span class="gi">+	if (number == dev-&gt;config)</span>
<span class="gi">+		return 0;</span>
<span class="gi">+</span>
<span class="gi">+	zero_reset_config (dev);</span>
<span class="gi">+</span>
<span class="gi">+	gadget_for_each_ep (ep, gadget) {</span>
<span class="gi">+</span>
<span class="gi">+		if (strcmp (ep-&gt;name, &quot;ep4&quot;) == 0) {</span>
<span class="gi">+</span>
<span class="gi">+			d = (struct usb_endpoint_descripter *)&amp;za_23; // isoc ep desc for audio i/f alt setting 6</span>
<span class="gi">+			result = usb_ep_enable (ep, d);</span>
<span class="gi">+</span>
<span class="gi">+			if (result == 0) {</span>
<span class="gi">+				ep-&gt;driver_data = dev;</span>
<span class="gi">+				dev-&gt;in_ep = ep;</span>
<span class="gi">+</span>
<span class="gi">+				if (zero_start_isoc_ep (ep, gfp_flags) != 0) {</span>
<span class="gi">+</span>
<span class="gi">+					dev-&gt;in_ep = ep;</span>
<span class="gi">+					continue;</span>
<span class="gi">+				}</span>
<span class="gi">+</span>
<span class="gi">+				usb_ep_disable (ep);</span>
<span class="gi">+				result = -EIO;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dev-&gt;config = number;</span>
<span class="gi">+	return result;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+static void zero_setup_complete (struct usb_ep *ep, struct usb_request *req)</span>
<span class="gi">+{</span>
<span class="gi">+	if (req-&gt;status || req-&gt;actual != req-&gt;length)</span>
<span class="gi">+		DBG ((struct zero_dev *) ep-&gt;driver_data,</span>
<span class="gi">+				&quot;setup complete --&gt; %d, %d/%d\n&quot;,</span>
<span class="gi">+				req-&gt;status, req-&gt;actual, req-&gt;length);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * The setup() callback implements all the ep0 functionality that&#39;s</span>
<span class="gi">+ * not handled lower down, in hardware or the hardware driver (like</span>
<span class="gi">+ * device and endpoint feature flags, and their status).  It&#39;s all</span>
<span class="gi">+ * housekeeping for the gadget function we&#39;re implementing.  Most of</span>
<span class="gi">+ * the work is in config-specific setup.</span>
<span class="gi">+ */</span>
<span class="gi">+static int</span>
<span class="gi">+zero_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)</span>
<span class="gi">+{</span>
<span class="gi">+	struct zero_dev		*dev = get_gadget_data (gadget);</span>
<span class="gi">+	struct usb_request	*req = dev-&gt;req;</span>
<span class="gi">+	int			value = -EOPNOTSUPP;</span>
<span class="gi">+</span>
<span class="gi">+	/* usually this stores reply data in the pre-allocated ep0 buffer,</span>
<span class="gi">+	 * but config change events will reconfigure hardware.</span>
<span class="gi">+	 */</span>
<span class="gi">+	req-&gt;zero = 0;</span>
<span class="gi">+	switch (ctrl-&gt;bRequest) {</span>
<span class="gi">+</span>
<span class="gi">+	case USB_REQ_GET_DESCRIPTOR:</span>
<span class="gi">+</span>
<span class="gi">+		switch (ctrl-&gt;wValue &gt;&gt; 8) {</span>
<span class="gi">+</span>
<span class="gi">+		case USB_DT_DEVICE:</span>
<span class="gi">+			value = min (ctrl-&gt;wLength, (u16) sizeof device_desc);</span>
<span class="gi">+			memcpy (req-&gt;buf, &amp;device_desc, value);</span>
<span class="gi">+			break;</span>
<span class="gi">+#ifdef CONFIG_USB_GADGET_DUALSPEED</span>
<span class="gi">+		case USB_DT_DEVICE_QUALIFIER:</span>
<span class="gi">+			if (!gadget-&gt;is_dualspeed)</span>
<span class="gi">+				break;</span>
<span class="gi">+			value = min (ctrl-&gt;wLength, (u16) sizeof dev_qualifier);</span>
<span class="gi">+			memcpy (req-&gt;buf, &amp;dev_qualifier, value);</span>
<span class="gi">+			break;</span>
<span class="gi">+</span>
<span class="gi">+		case USB_DT_OTHER_SPEED_CONFIG:</span>
<span class="gi">+			if (!gadget-&gt;is_dualspeed)</span>
<span class="gi">+				break;</span>
<span class="gi">+			// FALLTHROUGH</span>
<span class="gi">+#endif /* CONFIG_USB_GADGET_DUALSPEED */</span>
<span class="gi">+		case USB_DT_CONFIG:</span>
<span class="gi">+			value = config_buf (gadget, req-&gt;buf,</span>
<span class="gi">+					ctrl-&gt;wValue &gt;&gt; 8,</span>
<span class="gi">+					ctrl-&gt;wValue &amp; 0xff);</span>
<span class="gi">+			if (value &gt;= 0)</span>
<span class="gi">+				value = min (ctrl-&gt;wLength, (u16) value);</span>
<span class="gi">+			break;</span>
<span class="gi">+</span>
<span class="gi">+		case USB_DT_STRING:</span>
<span class="gi">+			/* wIndex == language code.</span>
<span class="gi">+			 * this driver only handles one language, you can</span>
<span class="gi">+			 * add string tables for other languages, using</span>
<span class="gi">+			 * any UTF-8 characters</span>
<span class="gi">+			 */</span>
<span class="gi">+			value = usb_gadget_get_string (&amp;stringtab,</span>
<span class="gi">+					ctrl-&gt;wValue &amp; 0xff, req-&gt;buf);</span>
<span class="gi">+			if (value &gt;= 0) {</span>
<span class="gi">+				value = min (ctrl-&gt;wLength, (u16) value);</span>
<span class="gi">+			}</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	/* currently two configs, two speeds */</span>
<span class="gi">+	case USB_REQ_SET_CONFIGURATION:</span>
<span class="gi">+		if (ctrl-&gt;bRequestType != 0)</span>
<span class="gi">+			goto unknown;</span>
<span class="gi">+</span>
<span class="gi">+		spin_lock (&amp;dev-&gt;lock);</span>
<span class="gi">+		value = zero_set_config (dev, ctrl-&gt;wValue, GFP_ATOMIC);</span>
<span class="gi">+		spin_unlock (&amp;dev-&gt;lock);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case USB_REQ_GET_CONFIGURATION:</span>
<span class="gi">+		if (ctrl-&gt;bRequestType != USB_DIR_IN)</span>
<span class="gi">+			goto unknown;</span>
<span class="gi">+		*(u8 *)req-&gt;buf = dev-&gt;config;</span>
<span class="gi">+		value = min (ctrl-&gt;wLength, (u16) 1);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	/* until we add altsetting support, or other interfaces,</span>
<span class="gi">+	 * only 0/0 are possible.  pxa2xx only supports 0/0 (poorly)</span>
<span class="gi">+	 * and already killed pending endpoint I/O.</span>
<span class="gi">+	 */</span>
<span class="gi">+	case USB_REQ_SET_INTERFACE:</span>
<span class="gi">+</span>
<span class="gi">+		if (ctrl-&gt;bRequestType != USB_RECIP_INTERFACE)</span>
<span class="gi">+			goto unknown;</span>
<span class="gi">+		spin_lock (&amp;dev-&gt;lock);</span>
<span class="gi">+		if (dev-&gt;config) {</span>
<span class="gi">+			u8		config = dev-&gt;config;</span>
<span class="gi">+</span>
<span class="gi">+			/* resets interface configuration, forgets about</span>
<span class="gi">+			 * previous transaction state (queued bufs, etc)</span>
<span class="gi">+			 * and re-inits endpoint state (toggle etc)</span>
<span class="gi">+			 * no response queued, just zero status == success.</span>
<span class="gi">+			 * if we had more than one interface we couldn&#39;t</span>
<span class="gi">+			 * use this &quot;reset the config&quot; shortcut.</span>
<span class="gi">+			 */</span>
<span class="gi">+			zero_reset_config (dev);</span>
<span class="gi">+			zero_set_config (dev, config, GFP_ATOMIC);</span>
<span class="gi">+			value = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+		spin_unlock (&amp;dev-&gt;lock);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case USB_REQ_GET_INTERFACE:</span>
<span class="gi">+		if ((ctrl-&gt;bRequestType == 0x21) &amp;&amp; (ctrl-&gt;wIndex == 0x02)) {</span>
<span class="gi">+			value = ctrl-&gt;wLength;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			if (ctrl-&gt;bRequestType != (USB_DIR_IN|USB_RECIP_INTERFACE))</span>
<span class="gi">+				goto unknown;</span>
<span class="gi">+			if (!dev-&gt;config)</span>
<span class="gi">+				break;</span>
<span class="gi">+			if (ctrl-&gt;wIndex != 0) {</span>
<span class="gi">+				value = -EDOM;</span>
<span class="gi">+				break;</span>
<span class="gi">+			}</span>
<span class="gi">+			*(u8 *)req-&gt;buf = 0;</span>
<span class="gi">+			value = min (ctrl-&gt;wLength, (u16) 1);</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * These are the same vendor-specific requests supported by</span>
<span class="gi">+	 * Intel&#39;s USB 2.0 compliance test devices.  We exceed that</span>
<span class="gi">+	 * device spec by allowing multiple-packet requests.</span>
<span class="gi">+	 */</span>
<span class="gi">+	case 0x5b:	/* control WRITE test -- fill the buffer */</span>
<span class="gi">+		if (ctrl-&gt;bRequestType != (USB_DIR_OUT|USB_TYPE_VENDOR))</span>
<span class="gi">+			goto unknown;</span>
<span class="gi">+		if (ctrl-&gt;wValue || ctrl-&gt;wIndex)</span>
<span class="gi">+			break;</span>
<span class="gi">+		/* just read that many bytes into the buffer */</span>
<span class="gi">+		if (ctrl-&gt;wLength &gt; USB_BUFSIZ)</span>
<span class="gi">+			break;</span>
<span class="gi">+		value = ctrl-&gt;wLength;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case 0x5c:	/* control READ test -- return the buffer */</span>
<span class="gi">+		if (ctrl-&gt;bRequestType != (USB_DIR_IN|USB_TYPE_VENDOR))</span>
<span class="gi">+			goto unknown;</span>
<span class="gi">+		if (ctrl-&gt;wValue || ctrl-&gt;wIndex)</span>
<span class="gi">+			break;</span>
<span class="gi">+		/* expect those bytes are still in the buffer; send back */</span>
<span class="gi">+		if (ctrl-&gt;wLength &gt; USB_BUFSIZ</span>
<span class="gi">+				|| ctrl-&gt;wLength != req-&gt;length)</span>
<span class="gi">+			break;</span>
<span class="gi">+		value = ctrl-&gt;wLength;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case 0x01: // SET_CUR</span>
<span class="gi">+	case 0x02:</span>
<span class="gi">+	case 0x03:</span>
<span class="gi">+	case 0x04:</span>
<span class="gi">+	case 0x05:</span>
<span class="gi">+		value = ctrl-&gt;wLength;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case 0x81:</span>
<span class="gi">+		switch (ctrl-&gt;wValue) {</span>
<span class="gi">+		case 0x0201:</span>
<span class="gi">+		case 0x0202:</span>
<span class="gi">+			((u8*)req-&gt;buf)[0] = 0x00;</span>
<span class="gi">+			((u8*)req-&gt;buf)[1] = 0xe3;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case 0x0300:</span>
<span class="gi">+		case 0x0500:</span>
<span class="gi">+			((u8*)req-&gt;buf)[0] = 0x00;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		//((u8*)req-&gt;buf)[0] = 0x81;</span>
<span class="gi">+		//((u8*)req-&gt;buf)[1] = 0x81;</span>
<span class="gi">+		value = ctrl-&gt;wLength;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case 0x82:</span>
<span class="gi">+		switch (ctrl-&gt;wValue) {</span>
<span class="gi">+		case 0x0201:</span>
<span class="gi">+		case 0x0202:</span>
<span class="gi">+			((u8*)req-&gt;buf)[0] = 0x00;</span>
<span class="gi">+			((u8*)req-&gt;buf)[1] = 0xc3;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case 0x0300:</span>
<span class="gi">+		case 0x0500:</span>
<span class="gi">+			((u8*)req-&gt;buf)[0] = 0x00;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		//((u8*)req-&gt;buf)[0] = 0x82;</span>
<span class="gi">+		//((u8*)req-&gt;buf)[1] = 0x82;</span>
<span class="gi">+		value = ctrl-&gt;wLength;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case 0x83:</span>
<span class="gi">+		switch (ctrl-&gt;wValue) {</span>
<span class="gi">+		case 0x0201:</span>
<span class="gi">+		case 0x0202:</span>
<span class="gi">+			((u8*)req-&gt;buf)[0] = 0x00;</span>
<span class="gi">+			((u8*)req-&gt;buf)[1] = 0x00;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case 0x0300:</span>
<span class="gi">+			((u8*)req-&gt;buf)[0] = 0x60;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case 0x0500:	</span>
<span class="gi">+			((u8*)req-&gt;buf)[0] = 0x18;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		//((u8*)req-&gt;buf)[0] = 0x83;</span>
<span class="gi">+		//((u8*)req-&gt;buf)[1] = 0x83;</span>
<span class="gi">+		value = ctrl-&gt;wLength;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case 0x84:</span>
<span class="gi">+		switch (ctrl-&gt;wValue) {</span>
<span class="gi">+		case 0x0201:</span>
<span class="gi">+		case 0x0202:</span>
<span class="gi">+			((u8*)req-&gt;buf)[0] = 0x00;</span>
<span class="gi">+			((u8*)req-&gt;buf)[1] = 0x01;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case 0x0300:</span>
<span class="gi">+		case 0x0500:</span>
<span class="gi">+			((u8*)req-&gt;buf)[0] = 0x08;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		//((u8*)req-&gt;buf)[0] = 0x84;</span>
<span class="gi">+		//((u8*)req-&gt;buf)[1] = 0x84;</span>
<span class="gi">+		value = ctrl-&gt;wLength;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case 0x85:</span>
<span class="gi">+		((u8*)req-&gt;buf)[0] = 0x85;</span>
<span class="gi">+		((u8*)req-&gt;buf)[1] = 0x85;</span>
<span class="gi">+		value = ctrl-&gt;wLength;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	default:</span>
<span class="gi">+unknown:</span>
<span class="gi">+		printk(&quot;unknown control req%02x.%02x v%04x i%04x l%d\n&quot;,</span>
<span class="gi">+			ctrl-&gt;bRequestType, ctrl-&gt;bRequest,</span>
<span class="gi">+			ctrl-&gt;wValue, ctrl-&gt;wIndex, ctrl-&gt;wLength);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* respond with data transfer before status phase? */</span>
<span class="gi">+	if (value &gt;= 0) {</span>
<span class="gi">+		req-&gt;length = value;</span>
<span class="gi">+		req-&gt;zero = value &lt; ctrl-&gt;wLength</span>
<span class="gi">+				&amp;&amp; (value % gadget-&gt;ep0-&gt;maxpacket) == 0;</span>
<span class="gi">+		value = usb_ep_queue (gadget-&gt;ep0, req, GFP_ATOMIC);</span>
<span class="gi">+		if (value &lt; 0) {</span>
<span class="gi">+			DBG (dev, &quot;ep_queue &lt; 0 --&gt; %d\n&quot;, value);</span>
<span class="gi">+			req-&gt;status = 0;</span>
<span class="gi">+			zero_setup_complete (gadget-&gt;ep0, req);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* device either stalls (value &lt; 0) or reports success */</span>
<span class="gi">+	return value;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static void</span>
<span class="gi">+zero_disconnect (struct usb_gadget *gadget)</span>
<span class="gi">+{</span>
<span class="gi">+	struct zero_dev		*dev = get_gadget_data (gadget);</span>
<span class="gi">+	unsigned long		flags;</span>
<span class="gi">+</span>
<span class="gi">+	spin_lock_irqsave (&amp;dev-&gt;lock, flags);</span>
<span class="gi">+	zero_reset_config (dev);</span>
<span class="gi">+</span>
<span class="gi">+	/* a more significant application might have some non-usb</span>
<span class="gi">+	 * activities to quiesce here, saving resources like power</span>
<span class="gi">+	 * or pushing the notification up a network stack.</span>
<span class="gi">+	 */</span>
<span class="gi">+	spin_unlock_irqrestore (&amp;dev-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	/* next we may get setup() calls to enumerate new connections;</span>
<span class="gi">+	 * or an unbind() during shutdown (including removing module).</span>
<span class="gi">+	 */</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static void</span>
<span class="gi">+zero_autoresume (unsigned long _dev)</span>
<span class="gi">+{</span>
<span class="gi">+	struct zero_dev	*dev = (struct zero_dev *) _dev;</span>
<span class="gi">+	int		status;</span>
<span class="gi">+</span>
<span class="gi">+	/* normally the host would be woken up for something</span>
<span class="gi">+	 * more significant than just a timer firing...</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (dev-&gt;gadget-&gt;speed != USB_SPEED_UNKNOWN) {</span>
<span class="gi">+		status = usb_gadget_wakeup (dev-&gt;gadget);</span>
<span class="gi">+		DBG (dev, &quot;wakeup --&gt; %d\n&quot;, status);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+static void</span>
<span class="gi">+zero_unbind (struct usb_gadget *gadget)</span>
<span class="gi">+{</span>
<span class="gi">+	struct zero_dev		*dev = get_gadget_data (gadget);</span>
<span class="gi">+</span>
<span class="gi">+	DBG (dev, &quot;unbind\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	/* we&#39;ve already been disconnected ... no i/o is active */</span>
<span class="gi">+	if (dev-&gt;req)</span>
<span class="gi">+		free_ep_req (gadget-&gt;ep0, dev-&gt;req);</span>
<span class="gi">+	del_timer_sync (&amp;dev-&gt;resume);</span>
<span class="gi">+	kfree (dev);</span>
<span class="gi">+	set_gadget_data (gadget, NULL);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static int</span>
<span class="gi">+zero_bind (struct usb_gadget *gadget)</span>
<span class="gi">+{</span>
<span class="gi">+	struct zero_dev		*dev;</span>
<span class="gi">+	//struct usb_ep		*ep;</span>
<span class="gi">+</span>
<span class="gi">+	printk(&quot;binding\n&quot;);</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * DRIVER POLICY CHOICE:  you may want to do this differently.</span>
<span class="gi">+	 * One thing to avoid is reusing a bcdDevice revision code</span>
<span class="gi">+	 * with different host-visible configurations or behavior</span>
<span class="gi">+	 * restrictions -- using ep1in/ep2out vs ep1out/ep3in, etc</span>
<span class="gi">+	 */</span>
<span class="gi">+	//device_desc.bcdDevice = __constant_cpu_to_le16 (0x0201);</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	/* ok, we made sense of the hardware ... */</span>
<span class="gi">+	dev = kmalloc (sizeof *dev, SLAB_KERNEL);</span>
<span class="gi">+	if (!dev)</span>
<span class="gi">+		return -ENOMEM;</span>
<span class="gi">+	memset (dev, 0, sizeof *dev);</span>
<span class="gi">+	spin_lock_init (&amp;dev-&gt;lock);</span>
<span class="gi">+	dev-&gt;gadget = gadget;</span>
<span class="gi">+	set_gadget_data (gadget, dev);</span>
<span class="gi">+</span>
<span class="gi">+	/* preallocate control response and buffer */</span>
<span class="gi">+	dev-&gt;req = usb_ep_alloc_request (gadget-&gt;ep0, GFP_KERNEL);</span>
<span class="gi">+	if (!dev-&gt;req)</span>
<span class="gi">+		goto enomem;</span>
<span class="gi">+	dev-&gt;req-&gt;buf = usb_ep_alloc_buffer (gadget-&gt;ep0, USB_BUFSIZ,</span>
<span class="gi">+				&amp;dev-&gt;req-&gt;dma, GFP_KERNEL);</span>
<span class="gi">+	if (!dev-&gt;req-&gt;buf)</span>
<span class="gi">+		goto enomem;</span>
<span class="gi">+</span>
<span class="gi">+	dev-&gt;req-&gt;complete = zero_setup_complete;</span>
<span class="gi">+</span>
<span class="gi">+	device_desc.bMaxPacketSize0 = gadget-&gt;ep0-&gt;maxpacket;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef CONFIG_USB_GADGET_DUALSPEED</span>
<span class="gi">+	/* assume ep0 uses the same value for both speeds ... */</span>
<span class="gi">+	dev_qualifier.bMaxPacketSize0 = device_desc.bMaxPacketSize0;</span>
<span class="gi">+</span>
<span class="gi">+	/* and that all endpoints are dual-speed */</span>
<span class="gi">+	//hs_source_desc.bEndpointAddress = fs_source_desc.bEndpointAddress;</span>
<span class="gi">+	//hs_sink_desc.bEndpointAddress = fs_sink_desc.bEndpointAddress;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	usb_gadget_set_selfpowered (gadget);</span>
<span class="gi">+</span>
<span class="gi">+	init_timer (&amp;dev-&gt;resume);</span>
<span class="gi">+	dev-&gt;resume.function = zero_autoresume;</span>
<span class="gi">+	dev-&gt;resume.data = (unsigned long) dev;</span>
<span class="gi">+</span>
<span class="gi">+	gadget-&gt;ep0-&gt;driver_data = dev;</span>
<span class="gi">+</span>
<span class="gi">+	INFO (dev, &quot;%s, version: &quot; DRIVER_VERSION &quot;\n&quot;, longname);</span>
<span class="gi">+	INFO (dev, &quot;using %s, OUT %s IN %s\n&quot;, gadget-&gt;name,</span>
<span class="gi">+		EP_OUT_NAME, EP_IN_NAME);</span>
<span class="gi">+</span>
<span class="gi">+	snprintf (manufacturer, sizeof manufacturer,</span>
<span class="gi">+		UTS_SYSNAME &quot; &quot; UTS_RELEASE &quot; with %s&quot;,</span>
<span class="gi">+		gadget-&gt;name);</span>
<span class="gi">+</span>
<span class="gi">+	return 0;</span>
<span class="gi">+</span>
<span class="gi">+enomem:</span>
<span class="gi">+	zero_unbind (gadget);</span>
<span class="gi">+	return -ENOMEM;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+static void</span>
<span class="gi">+zero_suspend (struct usb_gadget *gadget)</span>
<span class="gi">+{</span>
<span class="gi">+	struct zero_dev		*dev = get_gadget_data (gadget);</span>
<span class="gi">+</span>
<span class="gi">+	if (gadget-&gt;speed == USB_SPEED_UNKNOWN)</span>
<span class="gi">+		return;</span>
<span class="gi">+</span>
<span class="gi">+	if (autoresume) {</span>
<span class="gi">+		mod_timer (&amp;dev-&gt;resume, jiffies + (HZ * autoresume));</span>
<span class="gi">+		DBG (dev, &quot;suspend, wakeup in %d seconds\n&quot;, autoresume);</span>
<span class="gi">+	} else</span>
<span class="gi">+		DBG (dev, &quot;suspend\n&quot;);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static void</span>
<span class="gi">+zero_resume (struct usb_gadget *gadget)</span>
<span class="gi">+{</span>
<span class="gi">+	struct zero_dev		*dev = get_gadget_data (gadget);</span>
<span class="gi">+</span>
<span class="gi">+	DBG (dev, &quot;resume\n&quot;);</span>
<span class="gi">+	del_timer (&amp;dev-&gt;resume);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+</span>
<span class="gi">+static struct usb_gadget_driver zero_driver = {</span>
<span class="gi">+#ifdef CONFIG_USB_GADGET_DUALSPEED</span>
<span class="gi">+	.speed		= USB_SPEED_HIGH,</span>
<span class="gi">+#else</span>
<span class="gi">+	.speed		= USB_SPEED_FULL,</span>
<span class="gi">+#endif</span>
<span class="gi">+	.function	= (char *) longname,</span>
<span class="gi">+	.bind		= zero_bind,</span>
<span class="gi">+	.unbind		= zero_unbind,</span>
<span class="gi">+</span>
<span class="gi">+	.setup		= zero_setup,</span>
<span class="gi">+	.disconnect	= zero_disconnect,</span>
<span class="gi">+</span>
<span class="gi">+	.suspend	= zero_suspend,</span>
<span class="gi">+	.resume		= zero_resume,</span>
<span class="gi">+</span>
<span class="gi">+	.driver 	= {</span>
<span class="gi">+		.name		= (char *) shortname,</span>
<span class="gi">+		// .shutdown = ...</span>
<span class="gi">+		// .suspend = ...</span>
<span class="gi">+		// .resume = ...</span>
<span class="gi">+	},</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+MODULE_AUTHOR (&quot;David Brownell&quot;);</span>
<span class="gi">+MODULE_LICENSE (&quot;Dual BSD/GPL&quot;);</span>
<span class="gi">+</span>
<span class="gi">+static struct proc_dir_entry *pdir, *pfile;</span>
<span class="gi">+</span>
<span class="gi">+static int isoc_read_data (char *page, char **start,</span>
<span class="gi">+			   off_t off, int count,</span>
<span class="gi">+			   int *eof, void *data)</span>
<span class="gi">+{</span>
<span class="gi">+	int i;</span>
<span class="gi">+	static int c = 0;</span>
<span class="gi">+	static int done = 0;</span>
<span class="gi">+	static int s = 0;</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+	printk (&quot;\ncount: %d\n&quot;, count);</span>
<span class="gi">+	printk (&quot;rbuf_start: %d\n&quot;, rbuf_start);</span>
<span class="gi">+	printk (&quot;rbuf_len: %d\n&quot;, rbuf_len);</span>
<span class="gi">+	printk (&quot;off: %d\n&quot;, off);</span>
<span class="gi">+	printk (&quot;start: %p\n\n&quot;, *start);</span>
<span class="gi">+*/</span>
<span class="gi">+	if (done) {</span>
<span class="gi">+		c = 0;</span>
<span class="gi">+		done = 0;</span>
<span class="gi">+		*eof = 1;</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (c == 0) {</span>
<span class="gi">+		if (rbuf_len == RBUF_LEN)</span>
<span class="gi">+			s = rbuf_start;</span>
<span class="gi">+		else s = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	for (i=0; i&lt;count &amp;&amp; c&lt;rbuf_len; i++, c++) {</span>
<span class="gi">+		page[i] = rbuf[(c+s) % RBUF_LEN];</span>
<span class="gi">+	}</span>
<span class="gi">+	*start = page;</span>
<span class="gi">+	</span>
<span class="gi">+	if (c &gt;= rbuf_len) {</span>
<span class="gi">+		*eof = 1;</span>
<span class="gi">+		done = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	return i;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static int __init init (void)</span>
<span class="gi">+{</span>
<span class="gi">+</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+</span>
<span class="gi">+	pdir = proc_mkdir(&quot;isoc_test&quot;, NULL);</span>
<span class="gi">+	if(pdir == NULL) {</span>
<span class="gi">+		retval = -ENOMEM;</span>
<span class="gi">+		printk(&quot;Error creating dir\n&quot;);</span>
<span class="gi">+		goto done;</span>
<span class="gi">+	}</span>
<span class="gi">+	pdir-&gt;owner = THIS_MODULE;</span>
<span class="gi">+</span>
<span class="gi">+	pfile = create_proc_read_entry(&quot;isoc_data&quot;,</span>
<span class="gi">+				       0444, pdir,</span>
<span class="gi">+				       isoc_read_data,</span>
<span class="gi">+				       NULL);</span>
<span class="gi">+	if (pfile == NULL) {</span>
<span class="gi">+		retval = -ENOMEM;</span>
<span class="gi">+		printk(&quot;Error creating file\n&quot;);</span>
<span class="gi">+		goto no_file;</span>
<span class="gi">+	}</span>
<span class="gi">+	pfile-&gt;owner = THIS_MODULE;</span>
<span class="gi">+</span>
<span class="gi">+	return usb_gadget_register_driver (&amp;zero_driver);</span>
<span class="gi">+</span>
<span class="gi">+ no_file:</span>
<span class="gi">+	remove_proc_entry(&quot;isoc_data&quot;, NULL);</span>
<span class="gi">+ done:</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+module_init (init);</span>
<span class="gi">+</span>
<span class="gi">+static void __exit cleanup (void)</span>
<span class="gi">+{</span>
<span class="gi">+</span>
<span class="gi">+	usb_gadget_unregister_driver (&amp;zero_driver);</span>
<span class="gi">+	</span>
<span class="gi">+	remove_proc_entry(&quot;isoc_data&quot;, pdir);</span>
<span class="gi">+	remove_proc_entry(&quot;isoc_test&quot;, NULL);</span>
<span class="gi">+}</span>
<span class="gi">+module_exit (cleanup);</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_attr.c</span>
<span class="gu">@@ -0,0 +1,1055 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_attr.c $</span>
<span class="gi">+ * $Revision: #31 $</span>
<span class="gi">+ * $Date: 2008/07/15 $</span>
<span class="gi">+ * $Change: 1064918 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+</span>
<span class="gi">+/** @file </span>
<span class="gi">+ *</span>
<span class="gi">+ * The diagnostic interface will provide access to the controller for</span>
<span class="gi">+ * bringing up the hardware and testing.  The Linux driver attributes</span>
<span class="gi">+ * feature will be used to provide the Linux Diagnostic</span>
<span class="gi">+ * Interface. These attributes are accessed through sysfs.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+/** @page &quot;Linux Module Attributes&quot; </span>
<span class="gi">+ *</span>
<span class="gi">+ * The Linux module attributes feature is used to provide the Linux</span>
<span class="gi">+ * Diagnostic Interface.  These attributes are accessed through sysfs.</span>
<span class="gi">+ * The diagnostic interface will provide access to the controller for</span>
<span class="gi">+ * bringing up the hardware and testing.</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+ The following table shows the attributes.</span>
<span class="gi">+ &lt;table&gt;</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;&lt;b&gt; Name&lt;/b&gt;&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;&lt;b&gt; Description&lt;/b&gt;&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;&lt;b&gt; Access&lt;/b&gt;&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; mode &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Returns the current mode: 0 for device mode, 1 for host mode&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; hnpcapable &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the &quot;HNP-capable&quot; bit in the Core USB Configuraton Register.</span>
<span class="gi">+ Read returns the current value.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; srpcapable &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the &quot;SRP-capable&quot; bit in the Core USB Configuraton Register.</span>
<span class="gi">+ Read returns the current value.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; hnp &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Initiates the Host Negotiation Protocol.  Read returns the status.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; srp &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Initiates the Session Request Protocol.  Read returns the status.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; buspower &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the Power State of the bus (0 - Off or 1 - On)&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; bussuspend &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Suspends the USB bus.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; busconnected &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets the connection status of the bus&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; gotgctl &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the Core Control Status Register.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; gusbcfg &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the Core USB Configuration Register&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; grxfsiz &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the Receive FIFO Size Register&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; gnptxfsiz &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the non-periodic Transmit Size Register&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; gpvndctl &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the PHY Vendor Control Register&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; ggpio &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets the value in the lower 16-bits of the General Purpose IO Register</span>
<span class="gi">+ or sets the upper 16 bits.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; guid &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the value of the User ID Register&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; gsnpsid &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets the value of the Synopsys ID Regester&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; devspeed &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the device speed setting in the DCFG register&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; enumspeed &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets the device enumeration Speed.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; hptxfsiz &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets the value of the Host Periodic Transmit FIFO&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; hprt0 &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the value in the Host Port Control and Status Register&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; regoffset &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Sets the register offset for the next Register Access&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; regvalue &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Gets or sets the value of the register at the offset in the regoffset attribute.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; remote_wakeup &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; On read, shows the status of Remote Wakeup. On write, initiates a remote</span>
<span class="gi">+ wakeup of the host. When bit 0 is 1 and Remote Wakeup is enabled, the Remote</span>
<span class="gi">+ Wakeup signalling bit in the Device Control Register is set for 1</span>
<span class="gi">+ milli-second.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read/Write&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; regdump &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Dumps the contents of core registers.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; spramdump &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Dumps the contents of core registers.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; hcddump &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Dumps the current HCD state.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; hcd_frrem &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Shows the average value of the Frame Remaining</span>
<span class="gi">+ field in the Host Frame Number/Frame Remaining register when an SOF interrupt</span>
<span class="gi">+ occurs. This can be used to determine the average interrupt latency. Also</span>
<span class="gi">+ shows the average Frame Remaining value for start_transfer and the &quot;a&quot; and</span>
<span class="gi">+ &quot;b&quot; sample points. The &quot;a&quot; and &quot;b&quot; sample points may be used during debugging</span>
<span class="gi">+ bto determine how long it takes to execute a section of the HCD code.&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; rd_reg_test &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Displays the time required to read the GNPTXFSIZ register many times</span>
<span class="gi">+ (the output shows the number of times the register is read).</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt; wr_reg_test &lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Displays the time required to write the GNPTXFSIZ register many times</span>
<span class="gi">+ (the output shows the number of times the register is written).</span>
<span class="gi">+ &lt;td&gt; Read&lt;/td&gt;</span>
<span class="gi">+ &lt;/tr&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ &lt;/table&gt;</span>
<span class="gi">+ </span>
<span class="gi">+ Example usage:</span>
<span class="gi">+ To get the current mode:</span>
<span class="gi">+ cat /sys/devices/lm0/mode</span>
<span class="gi">+ </span>
<span class="gi">+ To power down the USB:</span>
<span class="gi">+ echo 0 &gt; /sys/devices/lm0/buspower</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/kernel.h&gt;</span>
<span class="gi">+#include &lt;linux/module.h&gt;</span>
<span class="gi">+#include &lt;linux/moduleparam.h&gt;</span>
<span class="gi">+#include &lt;linux/init.h&gt;</span>
<span class="gi">+#include &lt;linux/device.h&gt;</span>
<span class="gi">+#include &lt;linux/errno.h&gt;</span>
<span class="gi">+#include &lt;linux/types.h&gt;</span>
<span class="gi">+#include &lt;linux/stat.h&gt;  /* permission constants */</span>
<span class="gi">+#include &lt;linux/version.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;asm/sizes.h&gt;</span>
<span class="gi">+#include &lt;asm/io.h&gt;</span>
<span class="gi">+//#include &lt;asm/arch/lm.h&gt;</span>
<span class="gi">+#include &lt;mach/lm.h&gt;</span>
<span class="gi">+#include &lt;asm/sizes.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#include &quot;dwc_otg_plat.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_attr.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_driver.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_pcd.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_hcd.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+/*</span>
<span class="gi">+ * MACROs for defining sysfs attribute</span>
<span class="gi">+ */</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_BITFIELD_SHOW(_otg_attr_name_,_addr_,_mask_,_shift_,_string_) \</span>
<span class="gi">+static ssize_t _otg_attr_name_##_show (struct device *_dev, struct device_attribute *attr, char *buf) \</span>
<span class="gi">+{ \</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev); \</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);		\</span>
<span class="gi">+	uint32_t val; \</span>
<span class="gi">+	val = dwc_read_reg32 (_addr_); \</span>
<span class="gi">+	val = (val &amp; (_mask_)) &gt;&gt; _shift_; \</span>
<span class="gi">+	return sprintf (buf, &quot;%s = 0x%x\n&quot;, _string_, val); \</span>
<span class="gi">+}</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_BITFIELD_STORE(_otg_attr_name_,_addr_,_mask_,_shift_,_string_) \</span>
<span class="gi">+static ssize_t _otg_attr_name_##_store (struct device *_dev, struct device_attribute *attr, \</span>
<span class="gi">+					const char *buf, size_t count) \</span>
<span class="gi">+{ \</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev); \</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev); \</span>
<span class="gi">+	uint32_t set = simple_strtoul(buf, NULL, 16); \</span>
<span class="gi">+	uint32_t clear = set; \</span>
<span class="gi">+	clear = ((~clear) &lt;&lt; _shift_) &amp; _mask_; \</span>
<span class="gi">+	set = (set &lt;&lt; _shift_) &amp; _mask_; \</span>
<span class="gi">+	dev_dbg(_dev, &quot;Storing Address=0x%08x Set=0x%08x Clear=0x%08x\n&quot;, (uint32_t)_addr_, set, clear); \</span>
<span class="gi">+	dwc_modify_reg32(_addr_, clear, set); \</span>
<span class="gi">+	return count; \</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * MACROs for defining sysfs attribute for 32-bit registers</span>
<span class="gi">+ */</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_REG_SHOW(_otg_attr_name_,_addr_,_string_) \</span>
<span class="gi">+static ssize_t _otg_attr_name_##_show (struct device *_dev, struct device_attribute *attr, char *buf) \</span>
<span class="gi">+{ \</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev); \</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev); \</span>
<span class="gi">+	uint32_t val; \</span>
<span class="gi">+	val = dwc_read_reg32 (_addr_); \</span>
<span class="gi">+	return sprintf (buf, &quot;%s = 0x%08x\n&quot;, _string_, val); \</span>
<span class="gi">+}</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_REG_STORE(_otg_attr_name_,_addr_,_string_) \</span>
<span class="gi">+static ssize_t _otg_attr_name_##_store (struct device *_dev, struct device_attribute *attr, \</span>
<span class="gi">+					const char *buf, size_t count) \</span>
<span class="gi">+{ \</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev); \</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev); \</span>
<span class="gi">+	uint32_t val = simple_strtoul(buf, NULL, 16); \</span>
<span class="gi">+	dev_dbg(_dev, &quot;Storing Address=0x%08x Val=0x%08x\n&quot;, (uint32_t)_addr_, val); \</span>
<span class="gi">+	dwc_write_reg32(_addr_, val); \</span>
<span class="gi">+	return count; \</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#else</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * MACROs for defining sysfs attribute</span>
<span class="gi">+ */</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_BITFIELD_SHOW(_otg_attr_name_,_addr_,_mask_,_shift_,_string_) \</span>
<span class="gi">+static ssize_t _otg_attr_name_##_show (struct device *_dev, char *buf) \</span>
<span class="gi">+{ \</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);\</span>
<span class="gi">+	uint32_t val; \</span>
<span class="gi">+	val = dwc_read_reg32 (_addr_); \</span>
<span class="gi">+	val = (val &amp; (_mask_)) &gt;&gt; _shift_; \</span>
<span class="gi">+	return sprintf (buf, &quot;%s = 0x%x\n&quot;, _string_, val); \</span>
<span class="gi">+}</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_BITFIELD_STORE(_otg_attr_name_,_addr_,_mask_,_shift_,_string_) \</span>
<span class="gi">+static ssize_t _otg_attr_name_##_store (struct device *_dev, const char *buf, size_t count) \</span>
<span class="gi">+{ \</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);\</span>
<span class="gi">+	uint32_t set = simple_strtoul(buf, NULL, 16); \</span>
<span class="gi">+	uint32_t clear = set; \</span>
<span class="gi">+	clear = ((~clear) &lt;&lt; _shift_) &amp; _mask_; \</span>
<span class="gi">+	set = (set &lt;&lt; _shift_) &amp; _mask_; \</span>
<span class="gi">+	dev_dbg(_dev, &quot;Storing Address=0x%08x Set=0x%08x Clear=0x%08x\n&quot;, (uint32_t)_addr_, set, clear); \</span>
<span class="gi">+	dwc_modify_reg32(_addr_, clear, set); \</span>
<span class="gi">+	return count; \</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * MACROs for defining sysfs attribute for 32-bit registers</span>
<span class="gi">+ */</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_REG_SHOW(_otg_attr_name_,_addr_,_string_) \</span>
<span class="gi">+static ssize_t _otg_attr_name_##_show (struct device *_dev, char *buf) \</span>
<span class="gi">+{ \</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);\</span>
<span class="gi">+	uint32_t val; \</span>
<span class="gi">+	val = dwc_read_reg32 (_addr_); \</span>
<span class="gi">+	return sprintf (buf, &quot;%s = 0x%08x\n&quot;, _string_, val); \</span>
<span class="gi">+}</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_REG_STORE(_otg_attr_name_,_addr_,_string_) \</span>
<span class="gi">+static ssize_t _otg_attr_name_##_store (struct device *_dev, const char *buf, size_t count) \</span>
<span class="gi">+{ \</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);\</span>
<span class="gi">+	uint32_t val = simple_strtoul(buf, NULL, 16); \</span>
<span class="gi">+	dev_dbg(_dev, &quot;Storing Address=0x%08x Val=0x%08x\n&quot;, (uint32_t)_addr_, val); \</span>
<span class="gi">+	dwc_write_reg32(_addr_, val); \</span>
<span class="gi">+	return count; \</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_BITFIELD_RW(_otg_attr_name_,_addr_,_mask_,_shift_,_string_) \</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_BITFIELD_SHOW(_otg_attr_name_,_addr_,_mask_,_shift_,_string_) \</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_BITFIELD_STORE(_otg_attr_name_,_addr_,_mask_,_shift_,_string_) \</span>
<span class="gi">+DEVICE_ATTR(_otg_attr_name_,0644,_otg_attr_name_##_show,_otg_attr_name_##_store);</span>
<span class="gi">+</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_BITFIELD_RO(_otg_attr_name_,_addr_,_mask_,_shift_,_string_) \</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_BITFIELD_SHOW(_otg_attr_name_,_addr_,_mask_,_shift_,_string_) \</span>
<span class="gi">+DEVICE_ATTR(_otg_attr_name_,0444,_otg_attr_name_##_show,NULL);</span>
<span class="gi">+</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_REG32_RW(_otg_attr_name_,_addr_,_string_) \</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG_SHOW(_otg_attr_name_,_addr_,_string_) \</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG_STORE(_otg_attr_name_,_addr_,_string_) \</span>
<span class="gi">+DEVICE_ATTR(_otg_attr_name_,0644,_otg_attr_name_##_show,_otg_attr_name_##_store);</span>
<span class="gi">+</span>
<span class="gi">+#define DWC_OTG_DEVICE_ATTR_REG32_RO(_otg_attr_name_,_addr_,_string_) \</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG_SHOW(_otg_attr_name_,_addr_,_string_) \</span>
<span class="gi">+DEVICE_ATTR(_otg_attr_name_,0444,_otg_attr_name_##_show,NULL);</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/** @name Functions for Show/Store of Attributes */</span>
<span class="gi">+/**@{*/</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Show the register offset of the Register Access.</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t regoffset_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			       struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			       char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	return snprintf(buf, sizeof(&quot;0xFFFFFFFF\n&quot;)+1,&quot;0x%08x\n&quot;, otg_dev-&gt;reg_offset);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Set the register offset for the next Register Access 	Read/Write</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t regoffset_store( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+				const char *buf, </span>
<span class="gi">+				size_t count ) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	uint32_t offset = simple_strtoul(buf, NULL, 16);</span>
<span class="gi">+	//dev_dbg(_dev, &quot;Offset=0x%08x\n&quot;, offset);</span>
<span class="gi">+	if (offset &lt; SZ_256K ) {</span>
<span class="gi">+		otg_dev-&gt;reg_offset = offset;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		dev_err( _dev, &quot;invalid offset\n&quot; );</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return count;</span>
<span class="gi">+}</span>
<span class="gi">+DEVICE_ATTR(regoffset, S_IRUGO|S_IWUSR, (void *)regoffset_show, regoffset_store);</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Show the value of the register at the offset in the reg_offset</span>
<span class="gi">+ * attribute.</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t regvalue_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			      struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			      char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	uint32_t val;</span>
<span class="gi">+	volatile uint32_t *addr;</span>
<span class="gi">+        </span>
<span class="gi">+	if (otg_dev-&gt;reg_offset != 0xFFFFFFFF &amp;&amp; </span>
<span class="gi">+	    0 != otg_dev-&gt;base) {</span>
<span class="gi">+		/* Calculate the address */</span>
<span class="gi">+		addr = (uint32_t*)(otg_dev-&gt;reg_offset + </span>
<span class="gi">+				   (uint8_t*)otg_dev-&gt;base);</span>
<span class="gi">+		//dev_dbg(_dev, &quot;@0x%08x\n&quot;, (unsigned)addr); </span>
<span class="gi">+		val = dwc_read_reg32( addr );             </span>
<span class="gi">+		return snprintf(buf, sizeof(&quot;Reg@0xFFFFFFFF = 0xFFFFFFFF\n&quot;)+1,</span>
<span class="gi">+				&quot;Reg@0x%06x = 0x%08x\n&quot;, </span>
<span class="gi">+				otg_dev-&gt;reg_offset, val);</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		dev_err(_dev, &quot;Invalid offset (0x%0x)\n&quot;, </span>
<span class="gi">+			otg_dev-&gt;reg_offset);</span>
<span class="gi">+		return sprintf(buf, &quot;invalid offset\n&quot; );</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Store the value in the register at the offset in the reg_offset</span>
<span class="gi">+ * attribute.</span>
<span class="gi">+ * </span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t regvalue_store( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			       struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			       const char *buf, </span>
<span class="gi">+			       size_t count ) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	volatile uint32_t * addr;</span>
<span class="gi">+	uint32_t val = simple_strtoul(buf, NULL, 16);</span>
<span class="gi">+	//dev_dbg(_dev, &quot;Offset=0x%08x Val=0x%08x\n&quot;, otg_dev-&gt;reg_offset, val);</span>
<span class="gi">+	if (otg_dev-&gt;reg_offset != 0xFFFFFFFF &amp;&amp; 0 != otg_dev-&gt;base) {</span>
<span class="gi">+		/* Calculate the address */</span>
<span class="gi">+		addr = (uint32_t*)(otg_dev-&gt;reg_offset + </span>
<span class="gi">+				   (uint8_t*)otg_dev-&gt;base);</span>
<span class="gi">+		//dev_dbg(_dev, &quot;@0x%08x\n&quot;, (unsigned)addr); </span>
<span class="gi">+		dwc_write_reg32( addr, val );</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		dev_err(_dev, &quot;Invalid Register Offset (0x%08x)\n&quot;, </span>
<span class="gi">+			otg_dev-&gt;reg_offset);</span>
<span class="gi">+	}</span>
<span class="gi">+	return count;</span>
<span class="gi">+}</span>
<span class="gi">+DEVICE_ATTR(regvalue,  S_IRUGO|S_IWUSR, regvalue_show, regvalue_store);</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * Attributes</span>
<span class="gi">+ */</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_BITFIELD_RO(mode,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gotgctl),(1&lt;&lt;20),20,&quot;Mode&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_BITFIELD_RW(hnpcapable,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gusbcfg),(1&lt;&lt;9),9,&quot;Mode&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_BITFIELD_RW(srpcapable,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gusbcfg),(1&lt;&lt;8),8,&quot;Mode&quot;);</span>
<span class="gi">+</span>
<span class="gi">+//DWC_OTG_DEVICE_ATTR_BITFIELD_RW(buspower,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gotgctl),(1&lt;&lt;8),8,&quot;Mode&quot;);</span>
<span class="gi">+//DWC_OTG_DEVICE_ATTR_BITFIELD_RW(bussuspend,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gotgctl),(1&lt;&lt;8),8,&quot;Mode&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_BITFIELD_RO(busconnected,otg_dev-&gt;core_if-&gt;host_if-&gt;hprt0,0x01,0,&quot;Bus Connected&quot;);</span>
<span class="gi">+</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG32_RW(gotgctl,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gotgctl),&quot;GOTGCTL&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG32_RW(gusbcfg,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gusbcfg),&quot;GUSBCFG&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG32_RW(grxfsiz,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;grxfsiz),&quot;GRXFSIZ&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG32_RW(gnptxfsiz,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gnptxfsiz),&quot;GNPTXFSIZ&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG32_RW(gpvndctl,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gpvndctl),&quot;GPVNDCTL&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG32_RW(ggpio,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;ggpio),&quot;GGPIO&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG32_RW(guid,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;guid),&quot;GUID&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG32_RO(gsnpsid,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gsnpsid),&quot;GSNPSID&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_BITFIELD_RW(devspeed,&amp;(otg_dev-&gt;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dcfg),0x3,0,&quot;Device Speed&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_BITFIELD_RO(enumspeed,&amp;(otg_dev-&gt;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dsts),0x6,1,&quot;Device Enumeration Speed&quot;);</span>
<span class="gi">+</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG32_RO(hptxfsiz,&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;hptxfsiz),&quot;HPTXFSIZ&quot;);</span>
<span class="gi">+DWC_OTG_DEVICE_ATTR_REG32_RW(hprt0,otg_dev-&gt;core_if-&gt;host_if-&gt;hprt0,&quot;HPRT0&quot;);</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @todo Add code to initiate the HNP.</span>
<span class="gi">+ */</span>
<span class="gi">+/**</span>
<span class="gi">+ * Show the HNP status bit</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t hnp_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			 struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			 char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	gotgctl_data_t val;</span>
<span class="gi">+	val.d32 = dwc_read_reg32 (&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gotgctl));</span>
<span class="gi">+	return sprintf (buf, &quot;HstNegScs = 0x%x\n&quot;, val.b.hstnegscs);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Set the HNP Request bit</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t hnp_store( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			  struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			  const char *buf, </span>
<span class="gi">+			  size_t count ) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	uint32_t in = simple_strtoul(buf, NULL, 16);</span>
<span class="gi">+	uint32_t *addr = (uint32_t *)&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gotgctl);</span>
<span class="gi">+	gotgctl_data_t mem;</span>
<span class="gi">+	mem.d32 = dwc_read_reg32(addr);</span>
<span class="gi">+	mem.b.hnpreq = in;</span>
<span class="gi">+	dev_dbg(_dev, &quot;Storing Address=0x%08x Data=0x%08x\n&quot;, (uint32_t)addr, mem.d32);</span>
<span class="gi">+	dwc_write_reg32(addr, mem.d32);</span>
<span class="gi">+	return count;</span>
<span class="gi">+}</span>
<span class="gi">+DEVICE_ATTR(hnp, 0644, hnp_show, hnp_store);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @todo Add code to initiate the SRP.</span>
<span class="gi">+ */</span>
<span class="gi">+/**</span>
<span class="gi">+ * Show the SRP status bit</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t srp_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			 struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			 char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	gotgctl_data_t val;</span>
<span class="gi">+	val.d32 = dwc_read_reg32 (&amp;(otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gotgctl));</span>
<span class="gi">+	return sprintf (buf, &quot;SesReqScs = 0x%x\n&quot;, val.b.sesreqscs);</span>
<span class="gi">+#else</span>
<span class="gi">+	return sprintf(buf, &quot;Host Only Mode!\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Set the SRP Request bit</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t srp_store( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			  struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			  const char *buf, </span>
<span class="gi">+			  size_t count ) </span>
<span class="gi">+{</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	dwc_otg_pcd_initiate_srp(otg_dev-&gt;pcd);</span>
<span class="gi">+#endif</span>
<span class="gi">+	return count;</span>
<span class="gi">+}</span>
<span class="gi">+DEVICE_ATTR(srp, 0644, srp_show, srp_store);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @todo Need to do more for power on/off?</span>
<span class="gi">+ */</span>
<span class="gi">+/**</span>
<span class="gi">+ * Show the Bus Power status</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t buspower_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			      struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			      char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	hprt0_data_t val;</span>
<span class="gi">+	val.d32 = dwc_read_reg32 (otg_dev-&gt;core_if-&gt;host_if-&gt;hprt0);</span>
<span class="gi">+	return sprintf (buf, &quot;Bus Power = 0x%x\n&quot;, val.b.prtpwr);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Set the Bus Power status</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t buspower_store( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			       struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			       const char *buf, </span>
<span class="gi">+			       size_t count ) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	uint32_t on = simple_strtoul(buf, NULL, 16);</span>
<span class="gi">+	uint32_t *addr = (uint32_t *)otg_dev-&gt;core_if-&gt;host_if-&gt;hprt0;</span>
<span class="gi">+	hprt0_data_t mem;</span>
<span class="gi">+</span>
<span class="gi">+	mem.d32 = dwc_read_reg32(addr);</span>
<span class="gi">+	mem.b.prtpwr = on;</span>
<span class="gi">+</span>
<span class="gi">+	//dev_dbg(_dev, &quot;Storing Address=0x%08x Data=0x%08x\n&quot;, (uint32_t)addr, mem.d32);</span>
<span class="gi">+	dwc_write_reg32(addr, mem.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return count;</span>
<span class="gi">+}</span>
<span class="gi">+DEVICE_ATTR(buspower, 0644, buspower_show, buspower_store);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @todo Need to do more for suspend?</span>
<span class="gi">+ */</span>
<span class="gi">+/**</span>
<span class="gi">+ * Show the Bus Suspend status</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t bussuspend_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+				char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	hprt0_data_t val;</span>
<span class="gi">+	val.d32 = dwc_read_reg32 (otg_dev-&gt;core_if-&gt;host_if-&gt;hprt0);</span>
<span class="gi">+	return sprintf (buf, &quot;Bus Suspend = 0x%x\n&quot;, val.b.prtsusp);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Set the Bus Suspend status</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t bussuspend_store( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				 struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+				 const char *buf, </span>
<span class="gi">+				 size_t count ) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	uint32_t in = simple_strtoul(buf, NULL, 16);</span>
<span class="gi">+	uint32_t *addr = (uint32_t *)otg_dev-&gt;core_if-&gt;host_if-&gt;hprt0;</span>
<span class="gi">+	hprt0_data_t mem;</span>
<span class="gi">+	mem.d32 = dwc_read_reg32(addr);</span>
<span class="gi">+	mem.b.prtsusp = in;</span>
<span class="gi">+	dev_dbg(_dev, &quot;Storing Address=0x%08x Data=0x%08x\n&quot;, (uint32_t)addr, mem.d32);</span>
<span class="gi">+	dwc_write_reg32(addr, mem.d32);</span>
<span class="gi">+	return count;</span>
<span class="gi">+}</span>
<span class="gi">+DEVICE_ATTR(bussuspend, 0644, bussuspend_show, bussuspend_store);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Show the status of Remote Wakeup.</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t remote_wakeup_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				   struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+				   char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	dctl_data_t val;</span>
<span class="gi">+	val.d32 = </span>
<span class="gi">+		dwc_read_reg32( &amp;otg_dev-&gt;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dctl);</span>
<span class="gi">+	return sprintf( buf, &quot;Remote Wakeup = %d Enabled = %d\n&quot;, </span>
<span class="gi">+			val.b.rmtwkupsig, otg_dev-&gt;pcd-&gt;remote_wakeup_enable);</span>
<span class="gi">+#else</span>
<span class="gi">+	return sprintf(buf, &quot;Host Only Mode!\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * Initiate a remote wakeup of the host.  The Device control register</span>
<span class="gi">+ * Remote Wakeup Signal bit is written if the PCD Remote wakeup enable</span>
<span class="gi">+ * flag is set.</span>
<span class="gi">+ * </span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t remote_wakeup_store( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				    struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+				    const char *buf, </span>
<span class="gi">+				    size_t count ) </span>
<span class="gi">+{</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	uint32_t val = simple_strtoul(buf, NULL, 16);        </span>
<span class="gi">+	if (val&amp;1) {</span>
<span class="gi">+		dwc_otg_pcd_remote_wakeup(otg_dev-&gt;pcd, 1);</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		dwc_otg_pcd_remote_wakeup(otg_dev-&gt;pcd, 0);</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+	return count;</span>
<span class="gi">+}</span>
<span class="gi">+DEVICE_ATTR(remote_wakeup,  S_IRUGO|S_IWUSR, remote_wakeup_show, </span>
<span class="gi">+	    remote_wakeup_store);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Dump global registers and either host or device registers (depending on the</span>
<span class="gi">+ * current mode of the core).</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t regdump_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			     struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			     char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+        dwc_otg_dump_global_registers( otg_dev-&gt;core_if);</span>
<span class="gi">+        if (dwc_otg_is_host_mode(otg_dev-&gt;core_if)) {</span>
<span class="gi">+                dwc_otg_dump_host_registers( otg_dev-&gt;core_if);</span>
<span class="gi">+        } else {</span>
<span class="gi">+                dwc_otg_dump_dev_registers( otg_dev-&gt;core_if);</span>
<span class="gi">+</span>
<span class="gi">+        }</span>
<span class="gi">+   	return sprintf( buf, &quot;Register Dump\n&quot; );</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+DEVICE_ATTR(regdump, S_IRUGO|S_IWUSR, regdump_show, 0);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Dump global registers and either host or device registers (depending on the</span>
<span class="gi">+ * current mode of the core).</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t spramdump_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			       struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			       char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+        dwc_otg_dump_spram( otg_dev-&gt;core_if);</span>
<span class="gi">+</span>
<span class="gi">+        return sprintf( buf, &quot;SPRAM Dump\n&quot; );</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+DEVICE_ATTR(spramdump, S_IRUGO|S_IWUSR, spramdump_show, 0);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Dump the current hcd state.</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t hcddump_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			     struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			     char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#ifndef DWC_DEVICE_ONLY</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	dwc_otg_hcd_dump_state(otg_dev-&gt;hcd);</span>
<span class="gi">+#endif</span>
<span class="gi">+   	return sprintf( buf, &quot;HCD Dump\n&quot; );</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+DEVICE_ATTR(hcddump, S_IRUGO|S_IWUSR, hcddump_show, 0);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Dump the average frame remaining at SOF. This can be used to</span>
<span class="gi">+ * determine average interrupt latency. Frame remaining is also shown for</span>
<span class="gi">+ * start transfer and two additional sample points.</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t hcd_frrem_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			       struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+			       char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#ifndef DWC_DEVICE_ONLY</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	dwc_otg_hcd_dump_frrem(otg_dev-&gt;hcd);</span>
<span class="gi">+#endif</span>
<span class="gi">+   	return sprintf( buf, &quot;HCD Dump Frame Remaining\n&quot; );</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+DEVICE_ATTR(hcd_frrem, S_IRUGO|S_IWUSR, hcd_frrem_show, 0);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Displays the time required to read the GNPTXFSIZ register many times (the</span>
<span class="gi">+ * output shows the number of times the register is read).</span>
<span class="gi">+ */</span>
<span class="gi">+#define RW_REG_COUNT 10000000</span>
<span class="gi">+#define MSEC_PER_JIFFIE 1000/HZ	</span>
<span class="gi">+static ssize_t rd_reg_test_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				 struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+				 char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	int i;</span>
<span class="gi">+	int time;</span>
<span class="gi">+	int start_jiffies;</span>
<span class="gi">+</span>
<span class="gi">+	printk(&quot;HZ %d, MSEC_PER_JIFFIE %d, loops_per_jiffy %lu\n&quot;,</span>
<span class="gi">+	       HZ, MSEC_PER_JIFFIE, loops_per_jiffy);</span>
<span class="gi">+	start_jiffies = jiffies;</span>
<span class="gi">+	for (i = 0; i &lt; RW_REG_COUNT; i++) {</span>
<span class="gi">+		dwc_read_reg32(&amp;otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gnptxfsiz);</span>
<span class="gi">+	}</span>
<span class="gi">+	time = jiffies - start_jiffies;</span>
<span class="gi">+   	return sprintf( buf, &quot;Time to read GNPTXFSIZ reg %d times: %d msecs (%d jiffies)\n&quot;,</span>
<span class="gi">+			RW_REG_COUNT, time * MSEC_PER_JIFFIE, time );</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+DEVICE_ATTR(rd_reg_test, S_IRUGO|S_IWUSR, rd_reg_test_show, 0);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Displays the time required to write the GNPTXFSIZ register many times (the</span>
<span class="gi">+ * output shows the number of times the register is written).</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t wr_reg_test_show( struct device *_dev,</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				 struct device_attribute *attr,</span>
<span class="gi">+#endif</span>
<span class="gi">+				 char *buf) </span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct lm_device *lm_dev = container_of(_dev, struct lm_device, dev);</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lm_dev);</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev_get_drvdata(_dev);</span>
<span class="gi">+#endif</span>
<span class="gi">+	uint32_t reg_val;</span>
<span class="gi">+	int i;</span>
<span class="gi">+	int time;</span>
<span class="gi">+	int start_jiffies;</span>
<span class="gi">+</span>
<span class="gi">+	printk(&quot;HZ %d, MSEC_PER_JIFFIE %d, loops_per_jiffy %lu\n&quot;,</span>
<span class="gi">+	       HZ, MSEC_PER_JIFFIE, loops_per_jiffy);</span>
<span class="gi">+	reg_val = dwc_read_reg32(&amp;otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gnptxfsiz);</span>
<span class="gi">+	start_jiffies = jiffies;</span>
<span class="gi">+	for (i = 0; i &lt; RW_REG_COUNT; i++) {</span>
<span class="gi">+		dwc_write_reg32(&amp;otg_dev-&gt;core_if-&gt;core_global_regs-&gt;gnptxfsiz, reg_val);</span>
<span class="gi">+	}</span>
<span class="gi">+	time = jiffies - start_jiffies;</span>
<span class="gi">+   	return sprintf( buf, &quot;Time to write GNPTXFSIZ reg %d times: %d msecs (%d jiffies)\n&quot;,</span>
<span class="gi">+			RW_REG_COUNT, time * MSEC_PER_JIFFIE, time);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+DEVICE_ATTR(wr_reg_test, S_IRUGO|S_IWUSR, wr_reg_test_show, 0);</span>
<span class="gi">+/**@}*/</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Create the device files</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_attr_create (struct lm_device *lmdev)</span>
<span class="gi">+{</span>
<span class="gi">+	int error;</span>
<span class="gi">+	</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_regoffset);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_regvalue);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_mode);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hnpcapable);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_srpcapable);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hnp);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_srp);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_buspower);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_bussuspend);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_busconnected);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_gotgctl);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_gusbcfg);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_grxfsiz);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_gnptxfsiz);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_gpvndctl);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_ggpio);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_guid);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_gsnpsid);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_devspeed);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_enumspeed);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hptxfsiz);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hprt0);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_remote_wakeup);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_regdump);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_spramdump);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hcddump);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hcd_frrem);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_rd_reg_test);</span>
<span class="gi">+	error = device_create_file(&amp;lmdev-&gt;dev, &amp;dev_attr_wr_reg_test);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Remove the device files</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_attr_remove (struct lm_device *lmdev)</span>
<span class="gi">+{</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_regoffset);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_regvalue);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_mode);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hnpcapable);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_srpcapable);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hnp);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_srp);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_buspower);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_bussuspend);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_busconnected);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_gotgctl);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_gusbcfg);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_grxfsiz);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_gnptxfsiz);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_gpvndctl);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_ggpio);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_guid);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_gsnpsid);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_devspeed);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_enumspeed);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hptxfsiz);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hprt0);      </span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_remote_wakeup);      </span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_regdump);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_spramdump);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hcddump);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_hcd_frrem);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_rd_reg_test);</span>
<span class="gi">+	device_remove_file(&amp;lmdev-&gt;dev, &amp;dev_attr_wr_reg_test);</span>
<span class="gi">+}</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_attr.h</span>
<span class="gu">@@ -0,0 +1,67 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_attr.h $</span>
<span class="gi">+ * $Revision: #7 $</span>
<span class="gi">+ * $Date: 2005/03/28 $</span>
<span class="gi">+ * $Change: 477051 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+</span>
<span class="gi">+#if !defined(__DWC_OTG_ATTR_H__)</span>
<span class="gi">+#define __DWC_OTG_ATTR_H__</span>
<span class="gi">+</span>
<span class="gi">+/** @file</span>
<span class="gi">+ * This file contains the interface to the Linux device attributes.</span>
<span class="gi">+ */</span>
<span class="gi">+extern struct device_attribute dev_attr_regoffset;</span>
<span class="gi">+extern struct device_attribute dev_attr_regvalue;</span>
<span class="gi">+</span>
<span class="gi">+extern struct device_attribute dev_attr_mode;</span>
<span class="gi">+extern struct device_attribute dev_attr_hnpcapable;</span>
<span class="gi">+extern struct device_attribute dev_attr_srpcapable;</span>
<span class="gi">+extern struct device_attribute dev_attr_hnp;</span>
<span class="gi">+extern struct device_attribute dev_attr_srp;</span>
<span class="gi">+extern struct device_attribute dev_attr_buspower;</span>
<span class="gi">+extern struct device_attribute dev_attr_bussuspend;</span>
<span class="gi">+extern struct device_attribute dev_attr_busconnected;</span>
<span class="gi">+extern struct device_attribute dev_attr_gotgctl;</span>
<span class="gi">+extern struct device_attribute dev_attr_gusbcfg;</span>
<span class="gi">+extern struct device_attribute dev_attr_grxfsiz;</span>
<span class="gi">+extern struct device_attribute dev_attr_gnptxfsiz;</span>
<span class="gi">+extern struct device_attribute dev_attr_gpvndctl;</span>
<span class="gi">+extern struct device_attribute dev_attr_ggpio;</span>
<span class="gi">+extern struct device_attribute dev_attr_guid;</span>
<span class="gi">+extern struct device_attribute dev_attr_gsnpsid;</span>
<span class="gi">+extern struct device_attribute dev_attr_devspeed;</span>
<span class="gi">+extern struct device_attribute dev_attr_enumspeed;</span>
<span class="gi">+extern struct device_attribute dev_attr_hptxfsiz;</span>
<span class="gi">+extern struct device_attribute dev_attr_hprt0;</span>
<span class="gi">+</span>
<span class="gi">+void dwc_otg_attr_create (struct lm_device *lmdev);</span>
<span class="gi">+void dwc_otg_attr_remove (struct lm_device *lmdev);</span>
<span class="gi">+</span>
<span class="gi">+#endif</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_cil.c</span>
<span class="gu">@@ -0,0 +1,3842 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil.c $</span>
<span class="gi">+ * $Revision: #147 $</span>
<span class="gi">+ * $Date: 2008/10/16 $</span>
<span class="gi">+ * $Change: 1117667 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+</span>
<span class="gi">+/** @file </span>
<span class="gi">+ *</span>
<span class="gi">+ * The Core Interface Layer provides basic services for accessing and</span>
<span class="gi">+ * managing the DWC_otg hardware. These services are used by both the</span>
<span class="gi">+ * Host Controller Driver and the Peripheral Controller Driver.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The CIL manages the memory map for the core so that the HCD and PCD</span>
<span class="gi">+ * don&#39;t have to do this separately. It also handles basic tasks like</span>
<span class="gi">+ * reading/writing the registers and data FIFOs in the controller.</span>
<span class="gi">+ * Some of the data access functions provide encapsulation of several</span>
<span class="gi">+ * operations required to perform a task, such as writing multiple</span>
<span class="gi">+ * registers to start a transfer. Finally, the CIL performs basic</span>
<span class="gi">+ * services that are not specific to either the host or device modes</span>
<span class="gi">+ * of operation. These services include management of the OTG Host</span>
<span class="gi">+ * Negotiation Protocol (HNP) and Session Request Protocol (SRP). A</span>
<span class="gi">+ * Diagnostic API is also provided to allow testing of the controller</span>
<span class="gi">+ * hardware.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The Core Interface Layer has the following requirements:</span>
<span class="gi">+ * - Provides basic controller operations.</span>
<span class="gi">+ * - Minimal use of OS services.  </span>
<span class="gi">+ * - The OS services used will be abstracted by using inline functions</span>
<span class="gi">+ *	 or macros.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+#include &lt;asm/unaligned.h&gt;</span>
<span class="gi">+#include &lt;linux/dma-mapping.h&gt;</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+#include &lt;linux/jiffies.h&gt;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#include &quot;dwc_otg_plat.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_regs.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_cil.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_pcd.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This function is called to initialize the DWC_otg CSR data</span>
<span class="gi">+ * structures.	The register addresses in the device and host</span>
<span class="gi">+ * structures are initialized from the base address supplied by the</span>
<span class="gi">+ * caller.	The calling function must make the OS calls to get the</span>
<span class="gi">+ * base address of the DWC_otg controller registers.  The core_params</span>
<span class="gi">+ * argument holds the parameters that specify how the core should be</span>
<span class="gi">+ * configured.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] reg_base_addr Base address of DWC_otg core registers</span>
<span class="gi">+ * @param[in] core_params Pointer to the core configuration parameters </span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+dwc_otg_core_if_t *dwc_otg_cil_init(const uint32_t *reg_base_addr,</span>
<span class="gi">+					dwc_otg_core_params_t *core_params)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = 0;</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = 0;</span>
<span class="gi">+	dwc_otg_host_if_t *host_if = 0;</span>
<span class="gi">+	uint8_t *reg_base = (uint8_t *)reg_base_addr;</span>
<span class="gi">+	int i = 0;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV, &quot;%s(%p,%p)\n&quot;, __func__, reg_base_addr, core_params);</span>
<span class="gi">+</span>
<span class="gi">+	core_if = kmalloc(sizeof(dwc_otg_core_if_t), GFP_KERNEL);</span>
<span class="gi">+	</span>
<span class="gi">+	if (core_if == 0) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Allocation of dwc_otg_core_if_t failed\n&quot;);</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	memset(core_if, 0, sizeof(dwc_otg_core_if_t));</span>
<span class="gi">+	</span>
<span class="gi">+	core_if-&gt;core_params = core_params;</span>
<span class="gi">+	core_if-&gt;core_global_regs = (dwc_otg_core_global_regs_t *)reg_base;</span>
<span class="gi">+	</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Allocate the Device Mode structures.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dev_if = kmalloc(sizeof(dwc_otg_dev_if_t), GFP_KERNEL);</span>
<span class="gi">+	</span>
<span class="gi">+	if (dev_if == 0) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Allocation of dwc_otg_dev_if_t failed\n&quot;);</span>
<span class="gi">+		kfree(core_if);</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dev_if-&gt;dev_global_regs = </span>
<span class="gi">+			(dwc_otg_device_global_regs_t *)(reg_base + DWC_DEV_GLOBAL_REG_OFFSET);</span>
<span class="gi">+	</span>
<span class="gi">+	for (i=0; i&lt;MAX_EPS_CHANNELS; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		dev_if-&gt;in_ep_regs[i] = (dwc_otg_dev_in_ep_regs_t *)</span>
<span class="gi">+				(reg_base + DWC_DEV_IN_EP_REG_OFFSET +</span>
<span class="gi">+				 (i * DWC_EP_REG_OFFSET));</span>
<span class="gi">+		</span>
<span class="gi">+		dev_if-&gt;out_ep_regs[i] = (dwc_otg_dev_out_ep_regs_t *) </span>
<span class="gi">+				(reg_base + DWC_DEV_OUT_EP_REG_OFFSET +</span>
<span class="gi">+				 (i * DWC_EP_REG_OFFSET));</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CILV, &quot;in_ep_regs[%d]-&gt;diepctl=%p\n&quot;, </span>
<span class="gi">+					i, &amp;dev_if-&gt;in_ep_regs[i]-&gt;diepctl);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CILV, &quot;out_ep_regs[%d]-&gt;doepctl=%p\n&quot;, </span>
<span class="gi">+					i, &amp;dev_if-&gt;out_ep_regs[i]-&gt;doepctl);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dev_if-&gt;speed = 0; // unknown</span>
<span class="gi">+	</span>
<span class="gi">+	core_if-&gt;dev_if = dev_if;</span>
<span class="gi">+	</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Allocate the Host Mode structures.</span>
<span class="gi">+	 */</span>
<span class="gi">+	host_if = kmalloc(sizeof(dwc_otg_host_if_t), GFP_KERNEL);</span>
<span class="gi">+</span>
<span class="gi">+	if (host_if == 0) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Allocation of dwc_otg_host_if_t failed\n&quot;);</span>
<span class="gi">+		kfree(dev_if);</span>
<span class="gi">+		kfree(core_if);</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	host_if-&gt;host_global_regs = (dwc_otg_host_global_regs_t *)</span>
<span class="gi">+			(reg_base + DWC_OTG_HOST_GLOBAL_REG_OFFSET);</span>
<span class="gi">+	</span>
<span class="gi">+	host_if-&gt;hprt0 = (uint32_t*)(reg_base + DWC_OTG_HOST_PORT_REGS_OFFSET);</span>
<span class="gi">+	</span>
<span class="gi">+	for (i=0; i&lt;MAX_EPS_CHANNELS; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		host_if-&gt;hc_regs[i] = (dwc_otg_hc_regs_t *)</span>
<span class="gi">+				(reg_base + DWC_OTG_HOST_CHAN_REGS_OFFSET + </span>
<span class="gi">+				 (i * DWC_OTG_CHAN_REGS_OFFSET));</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CILV, &quot;hc_reg[%d]-&gt;hcchar=%p\n&quot;, </span>
<span class="gi">+					i, &amp;host_if-&gt;hc_regs[i]-&gt;hcchar);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	host_if-&gt;num_host_channels = MAX_EPS_CHANNELS;</span>
<span class="gi">+	core_if-&gt;host_if = host_if;</span>
<span class="gi">+	</span>
<span class="gi">+	for (i=0; i&lt;MAX_EPS_CHANNELS; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		core_if-&gt;data_fifo[i] = </span>
<span class="gi">+				(uint32_t *)(reg_base + DWC_OTG_DATA_FIFO_OFFSET + </span>
<span class="gi">+							 (i * DWC_OTG_DATA_FIFO_SIZE)); </span>
<span class="gi">+		DWC_DEBUGPL(DBG_CILV, &quot;data_fifo[%d]=0x%08x\n&quot;, </span>
<span class="gi">+					i, (unsigned)core_if-&gt;data_fifo[i]);</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	core_if-&gt;pcgcctl = (uint32_t*)(reg_base + DWC_OTG_PCGCCTL_OFFSET);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Store the contents of the hardware configuration registers here for</span>
<span class="gi">+	 * easy access later.</span>
<span class="gi">+	 */</span>
<span class="gi">+	core_if-&gt;hwcfg1.d32 = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;ghwcfg1);</span>
<span class="gi">+	core_if-&gt;hwcfg2.d32 = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;ghwcfg2);</span>
<span class="gi">+	core_if-&gt;hwcfg3.d32 = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;ghwcfg3);</span>
<span class="gi">+	core_if-&gt;hwcfg4.d32 = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;ghwcfg4);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;hwcfg1=%08x\n&quot;,core_if-&gt;hwcfg1.d32);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;hwcfg2=%08x\n&quot;,core_if-&gt;hwcfg2.d32);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;hwcfg3=%08x\n&quot;,core_if-&gt;hwcfg3.d32);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;hwcfg4=%08x\n&quot;,core_if-&gt;hwcfg4.d32);</span>
<span class="gi">+		</span>
<span class="gi">+	core_if-&gt;hcfg.d32 = dwc_read_reg32(&amp;core_if-&gt;host_if-&gt;host_global_regs-&gt;hcfg);</span>
<span class="gi">+	core_if-&gt;dcfg.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dcfg);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;hcfg=%08x\n&quot;,core_if-&gt;hcfg.d32);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;dcfg=%08x\n&quot;,core_if-&gt;dcfg.d32);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;op_mode=%0x\n&quot;,core_if-&gt;hwcfg2.b.op_mode);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;arch=%0x\n&quot;,core_if-&gt;hwcfg2.b.architecture);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;num_dev_ep=%d\n&quot;,core_if-&gt;hwcfg2.b.num_dev_ep);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;num_host_chan=%d\n&quot;,core_if-&gt;hwcfg2.b.num_host_chan);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;nonperio_tx_q_depth=0x%0x\n&quot;,core_if-&gt;hwcfg2.b.nonperio_tx_q_depth);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;host_perio_tx_q_depth=0x%0x\n&quot;,core_if-&gt;hwcfg2.b.host_perio_tx_q_depth);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;dev_token_q_depth=0x%0x\n&quot;,core_if-&gt;hwcfg2.b.dev_token_q_depth);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;Total FIFO SZ=%d\n&quot;, core_if-&gt;hwcfg3.b.dfifo_depth);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;xfer_size_cntr_width=%0x\n&quot;, core_if-&gt;hwcfg3.b.xfer_size_cntr_width);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Set the SRP sucess bit for FS-I2c</span>
<span class="gi">+	 */</span>
<span class="gi">+	core_if-&gt;srp_success = 0;</span>
<span class="gi">+	core_if-&gt;srp_timer_started = 0;</span>
<span class="gi">+	</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Create new workqueue and init works</span>
<span class="gi">+	 */</span>
<span class="gi">+	core_if-&gt;wq_otg = create_singlethread_workqueue(&quot;dwc_otg&quot;);</span>
<span class="gi">+	if(core_if-&gt;wq_otg == 0) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Creation of wq_otg failed\n&quot;);</span>
<span class="gi">+		kfree(host_if);</span>
<span class="gi">+		kfree(dev_if);</span>
<span class="gi">+		kfree(core_if);</span>
<span class="gi">+		return 0 * HZ;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+			</span>
<span class="gi">+	</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	 </span>
<span class="gi">+	INIT_WORK(&amp;core_if-&gt;w_conn_id, w_conn_id_status_change, core_if);</span>
<span class="gi">+	INIT_WORK(&amp;core_if-&gt;w_wkp, w_wakeup_detected, core_if);</span>
<span class="gi">+		</span>
<span class="gi">+#else</span>
<span class="gi">+	 </span>
<span class="gi">+	INIT_WORK(&amp;core_if-&gt;w_conn_id, w_conn_id_status_change);</span>
<span class="gi">+	INIT_DELAYED_WORK(&amp;core_if-&gt;w_wkp, w_wakeup_detected);</span>
<span class="gi">+		</span>
<span class="gi">+#endif		</span>
<span class="gi">+	return core_if;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function frees the structures allocated by dwc_otg_cil_init().</span>
<span class="gi">+ * </span>
<span class="gi">+ * @param[in] core_if The core interface pointer returned from</span>
<span class="gi">+ * dwc_otg_cil_init().</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_cil_remove(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	/* Disable all interrupts */</span>
<span class="gi">+	dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gahbcfg, 1, 0);</span>
<span class="gi">+	dwc_write_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk, 0);</span>
<span class="gi">+	</span>
<span class="gi">+	if (core_if-&gt;wq_otg) {</span>
<span class="gi">+		destroy_workqueue(core_if-&gt;wq_otg);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (core_if-&gt;dev_if) {</span>
<span class="gi">+		kfree(core_if-&gt;dev_if);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (core_if-&gt;host_if) {</span>
<span class="gi">+		kfree(core_if-&gt;host_if);</span>
<span class="gi">+	}</span>
<span class="gi">+	kfree(core_if);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function enables the controller&#39;s Global Interrupt in the AHB Config</span>
<span class="gi">+ * register.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_enable_global_interrupts(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	gahbcfg_data_t ahbcfg = { .d32 = 0};</span>
<span class="gi">+	ahbcfg.b.glblintrmsk = 1; /* Enable interrupts */</span>
<span class="gi">+	dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gahbcfg, 0, ahbcfg.d32);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function disables the controller&#39;s Global Interrupt in the AHB Config</span>
<span class="gi">+ * register.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_disable_global_interrupts(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	gahbcfg_data_t ahbcfg = { .d32 = 0};</span>
<span class="gi">+	ahbcfg.b.glblintrmsk = 1; /* Enable interrupts */</span>
<span class="gi">+	dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gahbcfg, ahbcfg.d32, 0);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function initializes the commmon interrupts, used in both</span>
<span class="gi">+ * device and host modes.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] core_if Programming view of the DWC_otg controller</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static void dwc_otg_enable_common_interrupts(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = </span>
<span class="gi">+			core_if-&gt;core_global_regs;</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	</span>
<span class="gi">+	/* Clear any pending OTG Interrupts */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gotgint, 0xFFFFFFFF); </span>
<span class="gi">+	</span>
<span class="gi">+	/* Clear any pending interrupts */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, 0xFFFFFFFF); </span>
<span class="gi">+	</span>
<span class="gi">+	/* </span>
<span class="gi">+	 * Enable the interrupts in the GINTMSK. </span>
<span class="gi">+	 */</span>
<span class="gi">+	intr_mask.b.modemismatch = 1;</span>
<span class="gi">+	intr_mask.b.otgintr = 1;</span>
<span class="gi">+	</span>
<span class="gi">+	if (!core_if-&gt;dma_enable) {</span>
<span class="gi">+		intr_mask.b.rxstsqlvl = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	intr_mask.b.conidstschng = 1;</span>
<span class="gi">+	intr_mask.b.wkupintr = 1;</span>
<span class="gi">+	intr_mask.b.disconnect = 1;</span>
<span class="gi">+	intr_mask.b.usbsuspend = 1;</span>
<span class="gi">+	intr_mask.b.sessreqintr = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintmsk, intr_mask.d32);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Initializes the FSLSPClkSel field of the HCFG register depending on the PHY</span>
<span class="gi">+ * type.</span>
<span class="gi">+ */</span>
<span class="gi">+static void init_fslspclksel(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t	val;</span>
<span class="gi">+	hcfg_data_t		hcfg;</span>
<span class="gi">+</span>
<span class="gi">+	if (((core_if-&gt;hwcfg2.b.hs_phy_type == 2) &amp;&amp;</span>
<span class="gi">+		 (core_if-&gt;hwcfg2.b.fs_phy_type == 1) &amp;&amp;</span>
<span class="gi">+		 (core_if-&gt;core_params-&gt;ulpi_fs_ls)) ||</span>
<span class="gi">+		(core_if-&gt;core_params-&gt;phy_type == DWC_PHY_TYPE_PARAM_FS)) {</span>
<span class="gi">+		/* Full speed PHY */</span>
<span class="gi">+		val = DWC_HCFG_48_MHZ;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		/* High speed PHY running at full speed or high speed */</span>
<span class="gi">+		val = DWC_HCFG_30_60_MHZ;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;Initializing HCFG.FSLSPClkSel to 0x%1x\n&quot;, val);</span>
<span class="gi">+	hcfg.d32 = dwc_read_reg32(&amp;core_if-&gt;host_if-&gt;host_global_regs-&gt;hcfg);</span>
<span class="gi">+	hcfg.b.fslspclksel = val;</span>
<span class="gi">+	dwc_write_reg32(&amp;core_if-&gt;host_if-&gt;host_global_regs-&gt;hcfg, hcfg.d32);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Initializes the DevSpd field of the DCFG register depending on the PHY type</span>
<span class="gi">+ * and the enumeration speed of the device.</span>
<span class="gi">+ */</span>
<span class="gi">+static void init_devspd(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t	val;</span>
<span class="gi">+	dcfg_data_t		dcfg;</span>
<span class="gi">+</span>
<span class="gi">+	if (((core_if-&gt;hwcfg2.b.hs_phy_type == 2) &amp;&amp;</span>
<span class="gi">+		 (core_if-&gt;hwcfg2.b.fs_phy_type == 1) &amp;&amp;</span>
<span class="gi">+		 (core_if-&gt;core_params-&gt;ulpi_fs_ls)) ||</span>
<span class="gi">+		(core_if-&gt;core_params-&gt;phy_type == DWC_PHY_TYPE_PARAM_FS)) {</span>
<span class="gi">+		/* Full speed PHY */</span>
<span class="gi">+		val = 0x3;</span>
<span class="gi">+	}</span>
<span class="gi">+	else if (core_if-&gt;core_params-&gt;speed == DWC_SPEED_PARAM_FULL) {</span>
<span class="gi">+		/* High speed PHY running at full speed */</span>
<span class="gi">+		val = 0x1;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		/* High speed PHY running at high speed */</span>
<span class="gi">+		val = 0x0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;Initializing DCFG.DevSpd to 0x%1x\n&quot;, val);</span>
<span class="gi">+	</span>
<span class="gi">+	dcfg.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dcfg);</span>
<span class="gi">+	dcfg.b.devspd = val;</span>
<span class="gi">+	dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dcfg, dcfg.d32);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function calculates the number of IN EPS</span>
<span class="gi">+ * using GHWCFG1 and GHWCFG2 registers values </span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of the DWC_otg controller</span>
<span class="gi">+ */</span>
<span class="gi">+static uint32_t calc_num_in_eps(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t num_in_eps = 0;</span>
<span class="gi">+	uint32_t num_eps = core_if-&gt;hwcfg2.b.num_dev_ep;</span>
<span class="gi">+	uint32_t hwcfg1 = core_if-&gt;hwcfg1.d32 &gt;&gt; 3;</span>
<span class="gi">+	uint32_t num_tx_fifos = core_if-&gt;hwcfg4.b.num_in_eps;</span>
<span class="gi">+	int i;</span>
<span class="gi">+	</span>
<span class="gi">+	</span>
<span class="gi">+	for(i = 0; i &lt; num_eps; ++i)</span>
<span class="gi">+	{</span>
<span class="gi">+		if(!(hwcfg1 &amp; 0x1))</span>
<span class="gi">+			num_in_eps++;</span>
<span class="gi">+		</span>
<span class="gi">+		hwcfg1 &gt;&gt;= 2;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	if(core_if-&gt;hwcfg4.b.ded_fifo_en) {</span>
<span class="gi">+		num_in_eps = (num_in_eps &gt; num_tx_fifos) ? num_tx_fifos : num_in_eps; </span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	return num_in_eps;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function calculates the number of OUT EPS</span>
<span class="gi">+ * using GHWCFG1 and GHWCFG2 registers values </span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of the DWC_otg controller</span>
<span class="gi">+ */</span>
<span class="gi">+static uint32_t calc_num_out_eps(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t num_out_eps = 0;</span>
<span class="gi">+	uint32_t num_eps = core_if-&gt;hwcfg2.b.num_dev_ep;</span>
<span class="gi">+	uint32_t hwcfg1 = core_if-&gt;hwcfg1.d32 &gt;&gt; 2;</span>
<span class="gi">+	int i;</span>
<span class="gi">+	</span>
<span class="gi">+	for(i = 0; i &lt; num_eps; ++i)</span>
<span class="gi">+	{</span>
<span class="gi">+		if(!(hwcfg1 &amp; 0x2))</span>
<span class="gi">+			num_out_eps++;</span>
<span class="gi">+		</span>
<span class="gi">+		hwcfg1 &gt;&gt;= 2;</span>
<span class="gi">+	}</span>
<span class="gi">+	return num_out_eps;</span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function initializes the DWC_otg controller registers and</span>
<span class="gi">+ * prepares the core for device mode or host mode operation.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of the DWC_otg controller</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_core_init(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+	int i = 0;</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = </span>
<span class="gi">+			core_if-&gt;core_global_regs;</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	gahbcfg_data_t ahbcfg = { .d32 = 0 };</span>
<span class="gi">+	gusbcfg_data_t usbcfg = { .d32 = 0 };</span>
<span class="gi">+	gi2cctl_data_t i2cctl = { .d32 = 0 };</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV, &quot;dwc_otg_core_init(%p)\n&quot;, core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/* Common Initialization */</span>
<span class="gi">+</span>
<span class="gi">+	usbcfg.d32 = dwc_read_reg32(&amp;global_regs-&gt;gusbcfg);</span>
<span class="gi">+</span>
<span class="gi">+//	usbcfg.b.tx_end_delay = 1;</span>
<span class="gi">+	/* Program the ULPI External VBUS bit if needed */</span>
<span class="gi">+	usbcfg.b.ulpi_ext_vbus_drv = </span>
<span class="gi">+		(core_if-&gt;core_params-&gt;phy_ulpi_ext_vbus == DWC_PHY_ULPI_EXTERNAL_VBUS) ? 1 : 0;</span>
<span class="gi">+</span>
<span class="gi">+	/* Set external TS Dline pulsing */</span>
<span class="gi">+	usbcfg.b.term_sel_dl_pulse = (core_if-&gt;core_params-&gt;ts_dline == 1) ? 1 : 0;</span>
<span class="gi">+	dwc_write_reg32 (&amp;global_regs-&gt;gusbcfg, usbcfg.d32);</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	/* Reset the Controller */</span>
<span class="gi">+	dwc_otg_core_reset(core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize parameters from Hardware configuration registers. */</span>
<span class="gi">+	dev_if-&gt;num_in_eps = calc_num_in_eps(core_if);</span>
<span class="gi">+	dev_if-&gt;num_out_eps = calc_num_out_eps(core_if);</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;num_dev_perio_in_ep=%d\n&quot;, core_if-&gt;hwcfg4.b.num_dev_perio_in_ep);</span>
<span class="gi">+	</span>
<span class="gi">+	for (i=0; i &lt; core_if-&gt;hwcfg4.b.num_dev_perio_in_ep; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		dev_if-&gt;perio_tx_fifo_size[i] =</span>
<span class="gi">+			dwc_read_reg32(&amp;global_regs-&gt;dptxfsiz_dieptxf[i]) &gt;&gt; 16;</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Periodic Tx FIFO SZ #%d=0x%0x\n&quot;,</span>
<span class="gi">+				i, dev_if-&gt;perio_tx_fifo_size[i]);	</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	for (i=0; i &lt; core_if-&gt;hwcfg4.b.num_in_eps; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		dev_if-&gt;tx_fifo_size[i] =</span>
<span class="gi">+			dwc_read_reg32(&amp;global_regs-&gt;dptxfsiz_dieptxf[i]) &gt;&gt; 16;</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Tx FIFO SZ #%d=0x%0x\n&quot;,</span>
<span class="gi">+			i, dev_if-&gt;perio_tx_fifo_size[i]);	</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	core_if-&gt;total_fifo_size = core_if-&gt;hwcfg3.b.dfifo_depth;</span>
<span class="gi">+	core_if-&gt;rx_fifo_size = </span>
<span class="gi">+			dwc_read_reg32(&amp;global_regs-&gt;grxfsiz);</span>
<span class="gi">+	core_if-&gt;nperio_tx_fifo_size = </span>
<span class="gi">+			dwc_read_reg32(&amp;global_regs-&gt;gnptxfsiz) &gt;&gt; 16;</span>
<span class="gi">+		</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;Total FIFO SZ=%d\n&quot;, core_if-&gt;total_fifo_size);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;Rx FIFO SZ=%d\n&quot;, core_if-&gt;rx_fifo_size);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;NP Tx FIFO SZ=%d\n&quot;, core_if-&gt;nperio_tx_fifo_size);</span>
<span class="gi">+</span>
<span class="gi">+	/* This programming sequence needs to happen in FS mode before any other</span>
<span class="gi">+	 * programming occurs */</span>
<span class="gi">+	if ((core_if-&gt;core_params-&gt;speed == DWC_SPEED_PARAM_FULL) &amp;&amp;</span>
<span class="gi">+		(core_if-&gt;core_params-&gt;phy_type == DWC_PHY_TYPE_PARAM_FS)) {</span>
<span class="gi">+			/* If FS mode with FS PHY */</span>
<span class="gi">+</span>
<span class="gi">+			/* core_init() is now called on every switch so only call the</span>
<span class="gi">+			 * following for the first time through. */</span>
<span class="gi">+			if (!core_if-&gt;phy_init_done) {</span>
<span class="gi">+				core_if-&gt;phy_init_done = 1;</span>
<span class="gi">+				DWC_DEBUGPL(DBG_CIL, &quot;FS_PHY detected\n&quot;);</span>
<span class="gi">+				usbcfg.d32 = dwc_read_reg32(&amp;global_regs-&gt;gusbcfg);</span>
<span class="gi">+				usbcfg.b.physel = 1;</span>
<span class="gi">+				dwc_write_reg32 (&amp;global_regs-&gt;gusbcfg, usbcfg.d32);</span>
<span class="gi">+	</span>
<span class="gi">+				/* Reset after a PHY select */</span>
<span class="gi">+				dwc_otg_core_reset(core_if);</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			/* Program DCFG.DevSpd or HCFG.FSLSPclkSel to 48Mhz in FS.	Also</span>
<span class="gi">+			 * do this on HNP Dev/Host mode switches (done in dev_init and</span>
<span class="gi">+			 * host_init). */</span>
<span class="gi">+			if (dwc_otg_is_host_mode(core_if)) {</span>
<span class="gi">+				init_fslspclksel(core_if);</span>
<span class="gi">+			}</span>
<span class="gi">+			else {</span>
<span class="gi">+				init_devspd(core_if);</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			if (core_if-&gt;core_params-&gt;i2c_enable) {</span>
<span class="gi">+				DWC_DEBUGPL(DBG_CIL, &quot;FS_PHY Enabling I2c\n&quot;);</span>
<span class="gi">+				/* Program GUSBCFG.OtgUtmifsSel to I2C */</span>
<span class="gi">+				usbcfg.d32 = dwc_read_reg32(&amp;global_regs-&gt;gusbcfg);</span>
<span class="gi">+				usbcfg.b.otgutmifssel = 1;</span>
<span class="gi">+				dwc_write_reg32 (&amp;global_regs-&gt;gusbcfg, usbcfg.d32);</span>
<span class="gi">+					</span>
<span class="gi">+				/* Program GI2CCTL.I2CEn */</span>
<span class="gi">+				i2cctl.d32 = dwc_read_reg32(&amp;global_regs-&gt;gi2cctl);</span>
<span class="gi">+				i2cctl.b.i2cdevaddr = 1;</span>
<span class="gi">+				i2cctl.b.i2cen = 0;</span>
<span class="gi">+				dwc_write_reg32 (&amp;global_regs-&gt;gi2cctl, i2cctl.d32);</span>
<span class="gi">+				i2cctl.b.i2cen = 1;</span>
<span class="gi">+				dwc_write_reg32 (&amp;global_regs-&gt;gi2cctl, i2cctl.d32);</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+		} /* endif speed == DWC_SPEED_PARAM_FULL */</span>
<span class="gi">+</span>
<span class="gi">+		else {</span>
<span class="gi">+			/* High speed PHY. */</span>
<span class="gi">+			if (!core_if-&gt;phy_init_done) {</span>
<span class="gi">+				core_if-&gt;phy_init_done = 1;</span>
<span class="gi">+				/* HS PHY parameters.  These parameters are preserved</span>
<span class="gi">+				 * during soft reset so only program the first time.  Do</span>
<span class="gi">+				 * a soft reset immediately after setting phyif.  */</span>
<span class="gi">+				usbcfg.b.ulpi_utmi_sel = core_if-&gt;core_params-&gt;phy_type;</span>
<span class="gi">+				if (usbcfg.b.ulpi_utmi_sel == 1) {</span>
<span class="gi">+					/* ULPI interface */</span>
<span class="gi">+					usbcfg.b.phyif = 0;</span>
<span class="gi">+					usbcfg.b.ddrsel = core_if-&gt;core_params-&gt;phy_ulpi_ddr;</span>
<span class="gi">+				} </span>
<span class="gi">+				else {</span>
<span class="gi">+					/* UTMI+ interface */</span>
<span class="gi">+					if (core_if-&gt;core_params-&gt;phy_utmi_width == 16) {</span>
<span class="gi">+						usbcfg.b.phyif = 1;</span>
<span class="gi">+				} </span>
<span class="gi">+				else {</span>
<span class="gi">+					usbcfg.b.phyif = 0;</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			dwc_write_reg32(&amp;global_regs-&gt;gusbcfg, usbcfg.d32);</span>
<span class="gi">+</span>
<span class="gi">+			/* Reset after setting the PHY parameters */</span>
<span class="gi">+			dwc_otg_core_reset(core_if);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if ((core_if-&gt;hwcfg2.b.hs_phy_type == 2) &amp;&amp;</span>
<span class="gi">+		(core_if-&gt;hwcfg2.b.fs_phy_type == 1) &amp;&amp;</span>
<span class="gi">+		(core_if-&gt;core_params-&gt;ulpi_fs_ls)) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Setting ULPI FSLS\n&quot;);</span>
<span class="gi">+		usbcfg.d32 = dwc_read_reg32(&amp;global_regs-&gt;gusbcfg);</span>
<span class="gi">+		usbcfg.b.ulpi_fsls = 1;</span>
<span class="gi">+		usbcfg.b.ulpi_clk_sus_m = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;global_regs-&gt;gusbcfg, usbcfg.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		usbcfg.d32 = dwc_read_reg32(&amp;global_regs-&gt;gusbcfg);</span>
<span class="gi">+		usbcfg.b.ulpi_fsls = 0;</span>
<span class="gi">+		usbcfg.b.ulpi_clk_sus_m = 0;</span>
<span class="gi">+		dwc_write_reg32(&amp;global_regs-&gt;gusbcfg, usbcfg.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Program the GAHBCFG Register.*/</span>
<span class="gi">+	switch (core_if-&gt;hwcfg2.b.architecture) {</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_SLAVE_ONLY_ARCH:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Slave Only Mode\n&quot;);</span>
<span class="gi">+		ahbcfg.b.nptxfemplvl_txfemplvl = DWC_GAHBCFG_TXFEMPTYLVL_HALFEMPTY;</span>
<span class="gi">+		ahbcfg.b.ptxfemplvl = DWC_GAHBCFG_TXFEMPTYLVL_HALFEMPTY;</span>
<span class="gi">+		core_if-&gt;dma_enable = 0;</span>
<span class="gi">+		core_if-&gt;dma_desc_enable = 0;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_EXT_DMA_ARCH:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;External DMA Mode\n&quot;);</span>
<span class="gi">+		ahbcfg.b.hburstlen = core_if-&gt;core_params-&gt;dma_burst_size; </span>
<span class="gi">+		core_if-&gt;dma_enable = (core_if-&gt;core_params-&gt;dma_enable != 0);</span>
<span class="gi">+		core_if-&gt;dma_desc_enable = (core_if-&gt;core_params-&gt;dma_desc_enable != 0);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_INT_DMA_ARCH:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Internal DMA Mode\n&quot;);</span>
<span class="gi">+		ahbcfg.b.hburstlen = DWC_GAHBCFG_INT_DMA_BURST_INCR;</span>
<span class="gi">+		core_if-&gt;dma_enable = (core_if-&gt;core_params-&gt;dma_enable != 0);</span>
<span class="gi">+		core_if-&gt;dma_desc_enable = (core_if-&gt;core_params-&gt;dma_desc_enable != 0);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	}</span>
<span class="gi">+	ahbcfg.b.dmaenable = core_if-&gt;dma_enable;</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gahbcfg, ahbcfg.d32);</span>
<span class="gi">+</span>
<span class="gi">+	core_if-&gt;en_multiple_tx_fifo = core_if-&gt;hwcfg4.b.ded_fifo_en;</span>
<span class="gi">+	</span>
<span class="gi">+	core_if-&gt;pti_enh_enable = core_if-&gt;core_params-&gt;pti_enable != 0;</span>
<span class="gi">+	core_if-&gt;multiproc_int_enable = core_if-&gt;core_params-&gt;mpi_enable;</span>
<span class="gi">+	DWC_PRINT(&quot;Periodic Transfer Interrupt Enhancement - %s\n&quot;, ((core_if-&gt;pti_enh_enable) ? &quot;enabled&quot;: &quot;disabled&quot;));</span>
<span class="gi">+	DWC_PRINT(&quot;Multiprocessor Interrupt Enhancement - %s\n&quot;, ((core_if-&gt;multiproc_int_enable) ? &quot;enabled&quot;: &quot;disabled&quot;));</span>
<span class="gi">+	</span>
<span class="gi">+	/* </span>
<span class="gi">+	 * Program the GUSBCFG register. </span>
<span class="gi">+	 */</span>
<span class="gi">+	usbcfg.d32 = dwc_read_reg32(&amp;global_regs-&gt;gusbcfg);</span>
<span class="gi">+</span>
<span class="gi">+	switch (core_if-&gt;hwcfg2.b.op_mode) {</span>
<span class="gi">+	case DWC_MODE_HNP_SRP_CAPABLE:</span>
<span class="gi">+		usbcfg.b.hnpcap = (core_if-&gt;core_params-&gt;otg_cap ==</span>
<span class="gi">+		   DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE);</span>
<span class="gi">+		usbcfg.b.srpcap = (core_if-&gt;core_params-&gt;otg_cap !=</span>
<span class="gi">+		   DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_MODE_SRP_ONLY_CAPABLE:</span>
<span class="gi">+		usbcfg.b.hnpcap = 0;</span>
<span class="gi">+		usbcfg.b.srpcap = (core_if-&gt;core_params-&gt;otg_cap !=</span>
<span class="gi">+		   DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_MODE_NO_HNP_SRP_CAPABLE:</span>
<span class="gi">+		usbcfg.b.hnpcap = 0;</span>
<span class="gi">+		usbcfg.b.srpcap = 0;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_MODE_SRP_CAPABLE_DEVICE:</span>
<span class="gi">+		usbcfg.b.hnpcap = 0;</span>
<span class="gi">+		usbcfg.b.srpcap = (core_if-&gt;core_params-&gt;otg_cap !=</span>
<span class="gi">+		DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_MODE_NO_SRP_CAPABLE_DEVICE:</span>
<span class="gi">+		usbcfg.b.hnpcap = 0;</span>
<span class="gi">+		usbcfg.b.srpcap = 0;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_MODE_SRP_CAPABLE_HOST:</span>
<span class="gi">+		usbcfg.b.hnpcap = 0;</span>
<span class="gi">+		usbcfg.b.srpcap = (core_if-&gt;core_params-&gt;otg_cap !=</span>
<span class="gi">+		DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_MODE_NO_SRP_CAPABLE_HOST:</span>
<span class="gi">+		usbcfg.b.hnpcap = 0;</span>
<span class="gi">+		usbcfg.b.srpcap = 0;</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gusbcfg, usbcfg.d32);</span>
<span class="gi">+	</span>
<span class="gi">+	/* Enable common interrupts */</span>
<span class="gi">+	dwc_otg_enable_common_interrupts(core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/* Do device or host intialization based on mode during PCD</span>
<span class="gi">+	 * and HCD initialization  */</span>
<span class="gi">+	if (dwc_otg_is_host_mode(core_if)) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;Host Mode\n&quot;);</span>
<span class="gi">+		core_if-&gt;op_state = A_HOST;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;Device Mode\n&quot;);</span>
<span class="gi">+		core_if-&gt;op_state = B_PERIPHERAL;</span>
<span class="gi">+#ifdef DWC_DEVICE_ONLY</span>
<span class="gi">+		dwc_otg_core_dev_init(core_if);</span>
<span class="gi">+#endif</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This function enables the Device mode interrupts.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_enable_device_interrupts(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = </span>
<span class="gi">+		core_if-&gt;core_global_regs;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;%s()\n&quot;, __func__);</span>
<span class="gi">+</span>
<span class="gi">+	/* Disable all interrupts. */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintmsk, 0);</span>
<span class="gi">+	</span>
<span class="gi">+	/* Clear any pending interrupts */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, 0xFFFFFFFF); </span>
<span class="gi">+</span>
<span class="gi">+	/* Enable the common interrupts */</span>
<span class="gi">+	dwc_otg_enable_common_interrupts(core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/* Enable interrupts */</span>
<span class="gi">+	intr_mask.b.usbreset = 1;</span>
<span class="gi">+	intr_mask.b.enumdone = 1;</span>
<span class="gi">+	</span>
<span class="gi">+	if(!core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		intr_mask.b.inepintr = 1;</span>
<span class="gi">+		intr_mask.b.outepintr = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	intr_mask.b.erlysuspend = 1;</span>
<span class="gi">+		</span>
<span class="gi">+	if(core_if-&gt;en_multiple_tx_fifo == 0) {</span>
<span class="gi">+		intr_mask.b.epmismatch = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+	if(core_if-&gt;dma_enable) {</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable == 0) {</span>
<span class="gi">+			if(core_if-&gt;pti_enh_enable) {</span>
<span class="gi">+				dctl_data_t dctl = { .d32 = 0 };</span>
<span class="gi">+				dctl.b.ifrmnum = 1;</span>
<span class="gi">+				dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dctl, 0, dctl.d32);</span>
<span class="gi">+			} else {</span>
<span class="gi">+				intr_mask.b.incomplisoin = 1;</span>
<span class="gi">+				intr_mask.b.incomplisoout = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		intr_mask.b.incomplisoin = 1;</span>
<span class="gi">+		intr_mask.b.incomplisoout = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+#endif // DWC_EN_ISOC		</span>
<span class="gi">+	</span>
<span class="gi">+/** @todo NGS: Should this be a module parameter? */</span>
<span class="gi">+#ifdef USE_PERIODIC_EP</span>
<span class="gi">+	intr_mask.b.isooutdrop = 1;</span>
<span class="gi">+	intr_mask.b.eopframe = 1;</span>
<span class="gi">+	intr_mask.b.incomplisoin = 1;</span>
<span class="gi">+	intr_mask.b.incomplisoout = 1;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, intr_mask.d32, intr_mask.d32);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;%s() gintmsk=%0x\n&quot;, __func__, </span>
<span class="gi">+		dwc_read_reg32(&amp;global_regs-&gt;gintmsk));</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function initializes the DWC_otg controller registers for</span>
<span class="gi">+ * device mode.</span>
<span class="gi">+ * </span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_core_dev_init(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	int i,size;</span>
<span class="gi">+	u_int32_t *default_value_array;</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = </span>
<span class="gi">+		core_if-&gt;core_global_regs;</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	dwc_otg_core_params_t *params = core_if-&gt;core_params;</span>
<span class="gi">+	dcfg_data_t dcfg = { .d32 = 0};</span>
<span class="gi">+	grstctl_t resetctl = { .d32 = 0 };</span>
<span class="gi">+	uint32_t rx_fifo_size;</span>
<span class="gi">+	fifosize_data_t nptxfifosize;</span>
<span class="gi">+	fifosize_data_t txfifosize;</span>
<span class="gi">+	dthrctl_data_t dthrctl;</span>
<span class="gi">+			</span>
<span class="gi">+	/* Restart the Phy Clock */</span>
<span class="gi">+	dwc_write_reg32(core_if-&gt;pcgcctl, 0);</span>
<span class="gi">+	</span>
<span class="gi">+	/* Device configuration register */</span>
<span class="gi">+	init_devspd(core_if);</span>
<span class="gi">+	dcfg.d32 = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dcfg);</span>
<span class="gi">+	dcfg.b.descdma = (core_if-&gt;dma_desc_enable) ? 1 : 0;</span>
<span class="gi">+	dcfg.b.perfrint = DWC_DCFG_FRAME_INTERVAL_80;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dcfg, dcfg.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Configure data FIFO sizes */</span>
<span class="gi">+	if (core_if-&gt;hwcfg2.b.dynamic_fifo &amp;&amp; params-&gt;enable_dynamic_fifo) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Total FIFO Size=%d\n&quot;, core_if-&gt;total_fifo_size);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Rx FIFO Size=%d\n&quot;, params-&gt;dev_rx_fifo_size);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;NP Tx FIFO Size=%d\n&quot;, params-&gt;dev_nperio_tx_fifo_size);</span>
<span class="gi">+</span>
<span class="gi">+		/* Rx FIFO */</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;initial grxfsiz=%08x\n&quot;, </span>
<span class="gi">+						dwc_read_reg32(&amp;global_regs-&gt;grxfsiz));</span>
<span class="gi">+		</span>
<span class="gi">+		rx_fifo_size = params-&gt;dev_rx_fifo_size;</span>
<span class="gi">+		dwc_write_reg32(&amp;global_regs-&gt;grxfsiz, rx_fifo_size);</span>
<span class="gi">+		</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;new grxfsiz=%08x\n&quot;, </span>
<span class="gi">+			dwc_read_reg32(&amp;global_regs-&gt;grxfsiz));</span>
<span class="gi">+		</span>
<span class="gi">+		/** Set Periodic Tx FIFO Mask all bits 0 */</span>
<span class="gi">+		core_if-&gt;p_tx_msk = 0;</span>
<span class="gi">+		</span>
<span class="gi">+		/** Set Tx FIFO Mask all bits 0 */</span>
<span class="gi">+		core_if-&gt;tx_msk = 0;</span>
<span class="gi">+</span>
<span class="gi">+		/* Non-periodic Tx FIFO */</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;initial gnptxfsiz=%08x\n&quot;, </span>
<span class="gi">+				dwc_read_reg32(&amp;global_regs-&gt;gnptxfsiz));</span>
<span class="gi">+</span>
<span class="gi">+		nptxfifosize.b.depth  = params-&gt;dev_nperio_tx_fifo_size;</span>
<span class="gi">+		nptxfifosize.b.startaddr = params-&gt;dev_rx_fifo_size;</span>
<span class="gi">+</span>
<span class="gi">+		dwc_write_reg32(&amp;global_regs-&gt;gnptxfsiz, nptxfifosize.d32);</span>
<span class="gi">+</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;new gnptxfsiz=%08x\n&quot;, </span>
<span class="gi">+				dwc_read_reg32(&amp;global_regs-&gt;gnptxfsiz));</span>
<span class="gi">+</span>
<span class="gi">+		txfifosize.b.startaddr = nptxfifosize.b.startaddr + nptxfifosize.b.depth;</span>
<span class="gi">+		if(core_if-&gt;en_multiple_tx_fifo == 0) {</span>
<span class="gi">+			//core_if-&gt;hwcfg4.b.ded_fifo_en==0</span>
<span class="gi">+			</span>
<span class="gi">+			/**@todo NGS: Fix Periodic FIFO Sizing! */</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Periodic Tx FIFOs These FIFOs are numbered from 1 to 15.</span>
<span class="gi">+			 * Indexes of the FIFO size module parameters in the</span>
<span class="gi">+			 * dev_perio_tx_fifo_size array and the FIFO size registers in</span>
<span class="gi">+			 * the dptxfsiz array run from 0 to 14.</span>
<span class="gi">+			 */</span>
<span class="gi">+			/** @todo Finish debug of this */	</span>
<span class="gi">+			size=core_if-&gt;hwcfg4.b.num_dev_perio_in_ep;</span>
<span class="gi">+			default_value_array=params-&gt;dev_perio_tx_fifo_size;</span>
<span class="gi">+</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			//core_if-&gt;hwcfg4.b.ded_fifo_en==1</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Tx FIFOs These FIFOs are numbered from 1 to 15.</span>
<span class="gi">+			 * Indexes of the FIFO size module parameters in the</span>
<span class="gi">+			 * dev_tx_fifo_size array and the FIFO size registers in</span>
<span class="gi">+			 * the dptxfsiz_dieptxf array run from 0 to 14.</span>
<span class="gi">+			 */</span>
<span class="gi">+</span>
<span class="gi">+			size=core_if-&gt;hwcfg4.b.num_in_eps;</span>
<span class="gi">+			default_value_array=params-&gt;dev_tx_fifo_size;</span>
<span class="gi">+					</span>
<span class="gi">+		}</span>
<span class="gi">+		for (i=0; i &lt; size; i++) </span>
<span class="gi">+		{</span>
<span class="gi">+			</span>
<span class="gi">+			txfifosize.b.depth = default_value_array[i];</span>
<span class="gi">+			DWC_DEBUGPL(DBG_CIL, &quot;initial dptxfsiz_dieptxf[%d]=%08x\n&quot;, i, </span>
<span class="gi">+				dwc_read_reg32(&amp;global_regs-&gt;dptxfsiz_dieptxf[i]));</span>
<span class="gi">+			dwc_write_reg32(&amp;global_regs-&gt;dptxfsiz_dieptxf[i], </span>
<span class="gi">+				txfifosize.d32);</span>
<span class="gi">+			DWC_DEBUGPL(DBG_CIL, &quot;new dptxfsiz_dieptxf[%d]=%08x\n&quot;, i, </span>
<span class="gi">+				dwc_read_reg32(&amp;global_regs-&gt;dptxfsiz_dieptxf[i]));</span>
<span class="gi">+			txfifosize.b.startaddr += txfifosize.b.depth;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	/* Flush the FIFOs */</span>
<span class="gi">+	dwc_otg_flush_tx_fifo(core_if, 0x10); /* all Tx FIFOs */</span>
<span class="gi">+	dwc_otg_flush_rx_fifo(core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/* Flush the Learning Queue. */</span>
<span class="gi">+	resetctl.b.intknqflsh = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;core_if-&gt;core_global_regs-&gt;grstctl, resetctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear all pending Device Interrupts */</span>
<span class="gi">+	</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	/** @todo - if the condition needed to be checked </span>
<span class="gi">+	 *  or in any case all pending interrutps should be cleared? </span>
<span class="gi">+         */</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		for(i = 0; i &lt; core_if-&gt;dev_if-&gt;num_in_eps; ++i) {</span>
<span class="gi">+		        dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepeachintmsk[i], 0);</span>
<span class="gi">+		}</span>
<span class="gi">+	</span>
<span class="gi">+		for(i = 0; i &lt; core_if-&gt;dev_if-&gt;num_out_eps; ++i) {</span>
<span class="gi">+		        dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;doepeachintmsk[i], 0);</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;deachint, 0xFFFFFFFF);</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;deachintmsk, 0);</span>
<span class="gi">+	} else {</span>
<span class="gi">+                dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepmsk, 0);</span>
<span class="gi">+                dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;doepmsk, 0);</span>
<span class="gi">+                dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;daint, 0xFFFFFFFF);</span>
<span class="gi">+                dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;daintmsk, 0);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	for (i=0; i &lt;= dev_if-&gt;num_in_eps; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		depctl_data_t depctl;</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[i]-&gt;diepctl);</span>
<span class="gi">+		if (depctl.b.epena) {</span>
<span class="gi">+			depctl.d32 = 0;</span>
<span class="gi">+			depctl.b.epdis = 1;</span>
<span class="gi">+			depctl.b.snak = 1;</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			depctl.d32 = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;in_ep_regs[i]-&gt;diepctl, depctl.d32);</span>
<span class="gi">+		</span>
<span class="gi">+</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;in_ep_regs[i]-&gt;dieptsiz, 0);</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;in_ep_regs[i]-&gt;diepdma, 0);</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;in_ep_regs[i]-&gt;diepint, 0xFF);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	for (i=0; i &lt;= dev_if-&gt;num_out_eps; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		depctl_data_t depctl;</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(&amp;dev_if-&gt;out_ep_regs[i]-&gt;doepctl);</span>
<span class="gi">+		if (depctl.b.epena) {</span>
<span class="gi">+			depctl.d32 = 0;</span>
<span class="gi">+			depctl.b.epdis = 1;</span>
<span class="gi">+			depctl.b.snak = 1;</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			depctl.d32 = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[i]-&gt;doepctl, depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[i]-&gt;doeptsiz, 0);</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[i]-&gt;doepdma, 0);</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[i]-&gt;doepint, 0xFF);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if(core_if-&gt;en_multiple_tx_fifo &amp;&amp; core_if-&gt;dma_enable) {</span>
<span class="gi">+		dev_if-&gt;non_iso_tx_thr_en = params-&gt;thr_ctl &amp; 0x1;</span>
<span class="gi">+		dev_if-&gt;iso_tx_thr_en = (params-&gt;thr_ctl &gt;&gt; 1) &amp; 0x1;</span>
<span class="gi">+		dev_if-&gt;rx_thr_en = (params-&gt;thr_ctl &gt;&gt; 2) &amp; 0x1;</span>
<span class="gi">+			</span>
<span class="gi">+		dev_if-&gt;rx_thr_length = params-&gt;rx_thr_length;</span>
<span class="gi">+		dev_if-&gt;tx_thr_length = params-&gt;tx_thr_length;</span>
<span class="gi">+		</span>
<span class="gi">+		dev_if-&gt;setup_desc_index = 0;</span>
<span class="gi">+			</span>
<span class="gi">+		dthrctl.d32 = 0;</span>
<span class="gi">+		dthrctl.b.non_iso_thr_en = dev_if-&gt;non_iso_tx_thr_en;</span>
<span class="gi">+		dthrctl.b.iso_thr_en = dev_if-&gt;iso_tx_thr_en;</span>
<span class="gi">+		dthrctl.b.tx_thr_len = dev_if-&gt;tx_thr_length;</span>
<span class="gi">+		dthrctl.b.rx_thr_en = dev_if-&gt;rx_thr_en;</span>
<span class="gi">+		dthrctl.b.rx_thr_len = dev_if-&gt;rx_thr_length;</span>
<span class="gi">+			</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dtknqr3_dthrctl, dthrctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL, &quot;Non ISO Tx Thr - %d\nISO Tx Thr - %d\nRx Thr - %d\nTx Thr Len - %d\nRx Thr Len - %d\n&quot;,</span>
<span class="gi">+			dthrctl.b.non_iso_thr_en, dthrctl.b.iso_thr_en, dthrctl.b.rx_thr_en, dthrctl.b.tx_thr_len, dthrctl.b.rx_thr_len);</span>
<span class="gi">+</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	dwc_otg_enable_device_interrupts(core_if);		 </span>
<span class="gi">+</span>
<span class="gi">+	{</span>
<span class="gi">+		diepmsk_data_t msk = { .d32 = 0 };</span>
<span class="gi">+		msk.b.txfifoundrn = 1;</span>
<span class="gi">+	        if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+			dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepeachintmsk[0], msk.d32, msk.d32);</span>
<span class="gi">+	        } else {</span>
<span class="gi">+			dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepmsk, msk.d32, msk.d32);</span>
<span class="gi">+	        }</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		/* Set NAK on Babble */</span>
<span class="gi">+		dctl_data_t dctl = { .d32 = 0};</span>
<span class="gi">+		dctl.b.nakonbble = 1;</span>
<span class="gi">+		dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dctl, 0, dctl.d32);</span>
<span class="gi">+	} 	</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This function enables the Host mode interrupts.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_enable_host_interrupts(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = core_if-&gt;core_global_regs;</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0 };</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;%s()\n&quot;, __func__);</span>
<span class="gi">+</span>
<span class="gi">+	/* Disable all interrupts. */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintmsk, 0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear any pending interrupts. */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, 0xFFFFFFFF); </span>
<span class="gi">+</span>
<span class="gi">+	/* Enable the common interrupts */</span>
<span class="gi">+	dwc_otg_enable_common_interrupts(core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Enable host mode interrupts without disturbing common</span>
<span class="gi">+	 * interrupts.</span>
<span class="gi">+	 */</span>
<span class="gi">+	intr_mask.b.sofintr = 1;</span>
<span class="gi">+	intr_mask.b.portintr = 1;</span>
<span class="gi">+	intr_mask.b.hcintr = 1;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, intr_mask.d32, intr_mask.d32);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This function disables the Host Mode interrupts.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_disable_host_interrupts(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs =</span>
<span class="gi">+	core_if-&gt;core_global_regs;</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0 };</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV, &quot;%s()\n&quot;, __func__);</span>
<span class="gi">+		 </span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Disable host mode interrupts without disturbing common</span>
<span class="gi">+	 * interrupts.</span>
<span class="gi">+	 */</span>
<span class="gi">+	intr_mask.b.sofintr = 1;</span>
<span class="gi">+	intr_mask.b.portintr = 1;</span>
<span class="gi">+	intr_mask.b.hcintr = 1;</span>
<span class="gi">+	intr_mask.b.ptxfempty = 1;</span>
<span class="gi">+	intr_mask.b.nptxfempty = 1;</span>
<span class="gi">+		</span>
<span class="gi">+	dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, intr_mask.d32, 0);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function initializes the DWC_otg controller registers for</span>
<span class="gi">+ * host mode.</span>
<span class="gi">+ *</span>
<span class="gi">+ * This function flushes the Tx and Rx FIFOs and it flushes any entries in the</span>
<span class="gi">+ * request queues. Host channels are reset to ensure that they are ready for</span>
<span class="gi">+ * performing transfers.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_core_host_init(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = core_if-&gt;core_global_regs;</span>
<span class="gi">+	dwc_otg_host_if_t	*host_if = core_if-&gt;host_if;</span>
<span class="gi">+	dwc_otg_core_params_t	*params = core_if-&gt;core_params;</span>
<span class="gi">+	hprt0_data_t		hprt0 = { .d32 = 0 };</span>
<span class="gi">+	fifosize_data_t		nptxfifosize;</span>
<span class="gi">+	fifosize_data_t		ptxfifosize;</span>
<span class="gi">+	int			i;</span>
<span class="gi">+	hcchar_data_t		hcchar;</span>
<span class="gi">+	hcfg_data_t		hcfg;</span>
<span class="gi">+	dwc_otg_hc_regs_t	*hc_regs;</span>
<span class="gi">+	int			num_channels;</span>
<span class="gi">+	gotgctl_data_t	gotgctl = { .d32 = 0 };</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV,&quot;%s(%p)\n&quot;, __func__, core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/* Restart the Phy Clock */</span>
<span class="gi">+	dwc_write_reg32(core_if-&gt;pcgcctl, 0);</span>
<span class="gi">+	</span>
<span class="gi">+	/* Initialize Host Configuration Register */</span>
<span class="gi">+	init_fslspclksel(core_if);</span>
<span class="gi">+	if (core_if-&gt;core_params-&gt;speed == DWC_SPEED_PARAM_FULL) </span>
<span class="gi">+	{</span>
<span class="gi">+		hcfg.d32 = dwc_read_reg32(&amp;host_if-&gt;host_global_regs-&gt;hcfg);</span>
<span class="gi">+		hcfg.b.fslssupp = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;host_if-&gt;host_global_regs-&gt;hcfg, hcfg.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Configure data FIFO sizes */</span>
<span class="gi">+	if (core_if-&gt;hwcfg2.b.dynamic_fifo &amp;&amp; params-&gt;enable_dynamic_fifo) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL,&quot;Total FIFO Size=%d\n&quot;, core_if-&gt;total_fifo_size);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL,&quot;Rx FIFO Size=%d\n&quot;, params-&gt;host_rx_fifo_size);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL,&quot;NP Tx FIFO Size=%d\n&quot;, params-&gt;host_nperio_tx_fifo_size);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL,&quot;P Tx FIFO Size=%d\n&quot;, params-&gt;host_perio_tx_fifo_size);</span>
<span class="gi">+</span>
<span class="gi">+		/* Rx FIFO */</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL,&quot;initial grxfsiz=%08x\n&quot;, dwc_read_reg32(&amp;global_regs-&gt;grxfsiz));</span>
<span class="gi">+		dwc_write_reg32(&amp;global_regs-&gt;grxfsiz, params-&gt;host_rx_fifo_size);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL,&quot;new grxfsiz=%08x\n&quot;, dwc_read_reg32(&amp;global_regs-&gt;grxfsiz));</span>
<span class="gi">+</span>
<span class="gi">+		/* Non-periodic Tx FIFO */</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL,&quot;initial gnptxfsiz=%08x\n&quot;, dwc_read_reg32(&amp;global_regs-&gt;gnptxfsiz));</span>
<span class="gi">+		nptxfifosize.b.depth  = params-&gt;host_nperio_tx_fifo_size;</span>
<span class="gi">+		nptxfifosize.b.startaddr = params-&gt;host_rx_fifo_size;</span>
<span class="gi">+		dwc_write_reg32(&amp;global_regs-&gt;gnptxfsiz, nptxfifosize.d32);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL,&quot;new gnptxfsiz=%08x\n&quot;, dwc_read_reg32(&amp;global_regs-&gt;gnptxfsiz));</span>
<span class="gi">+		</span>
<span class="gi">+		/* Periodic Tx FIFO */</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL,&quot;initial hptxfsiz=%08x\n&quot;, dwc_read_reg32(&amp;global_regs-&gt;hptxfsiz));</span>
<span class="gi">+		ptxfifosize.b.depth	 = params-&gt;host_perio_tx_fifo_size;</span>
<span class="gi">+		ptxfifosize.b.startaddr = nptxfifosize.b.startaddr + nptxfifosize.b.depth;</span>
<span class="gi">+		dwc_write_reg32(&amp;global_regs-&gt;hptxfsiz, ptxfifosize.d32);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_CIL,&quot;new hptxfsiz=%08x\n&quot;, dwc_read_reg32(&amp;global_regs-&gt;hptxfsiz));</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear Host Set HNP Enable in the OTG Control Register */</span>
<span class="gi">+	gotgctl.b.hstsethnpen = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;global_regs-&gt;gotgctl, gotgctl.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Make sure the FIFOs are flushed. */</span>
<span class="gi">+	dwc_otg_flush_tx_fifo(core_if, 0x10 /* all Tx FIFOs */);</span>
<span class="gi">+	dwc_otg_flush_rx_fifo(core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/* Flush out any leftover queued requests. */</span>
<span class="gi">+	num_channels = core_if-&gt;core_params-&gt;host_channels;</span>
<span class="gi">+	for (i = 0; i &lt; num_channels; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		hc_regs = core_if-&gt;host_if-&gt;hc_regs[i];</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		hcchar.b.chen = 0;</span>
<span class="gi">+		hcchar.b.chdis = 1;</span>
<span class="gi">+		hcchar.b.epdir = 0;</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+		   </span>
<span class="gi">+	/* Halt all channels to put them into a known state. */</span>
<span class="gi">+	for (i = 0; i &lt; num_channels; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		int count = 0;</span>
<span class="gi">+		hc_regs = core_if-&gt;host_if-&gt;hc_regs[i];</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		hcchar.b.chen = 1;</span>
<span class="gi">+		hcchar.b.chdis = 1;</span>
<span class="gi">+		hcchar.b.epdir = 0;</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;%s: Halt channel %d\n&quot;, __func__, i);</span>
<span class="gi">+		do {</span>
<span class="gi">+			hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+			if (++count &gt; 1000) </span>
<span class="gi">+			{</span>
<span class="gi">+				DWC_ERROR(&quot;%s: Unable to clear halt on channel %d\n&quot;,</span>
<span class="gi">+					  __func__, i);</span>
<span class="gi">+				break;</span>
<span class="gi">+			}</span>
<span class="gi">+		} </span>
<span class="gi">+		while (hcchar.b.chen);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Turn on the vbus power. */</span>
<span class="gi">+	DWC_PRINT(&quot;Init: Port Power? op_state=%d\n&quot;, core_if-&gt;op_state);</span>
<span class="gi">+	if (core_if-&gt;op_state == A_HOST) {	</span>
<span class="gi">+		hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+		DWC_PRINT(&quot;Init: Power Port (%d)\n&quot;, hprt0.b.prtpwr);</span>
<span class="gi">+		if (hprt0.b.prtpwr == 0) {</span>
<span class="gi">+			hprt0.b.prtpwr = 1;</span>
<span class="gi">+			dwc_write_reg32(host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+		}  </span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_enable_host_interrupts(core_if);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Prepares a host channel for transferring packets to/from a specific</span>
<span class="gi">+ * endpoint. The HCCHARn register is set up with the characteristics specified</span>
<span class="gi">+ * in _hc. Host channel interrupts that may need to be serviced while this</span>
<span class="gi">+ * transfer is in progress are enabled.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller</span>
<span class="gi">+ * @param hc Information needed to initialize the host channel</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hc_init(dwc_otg_core_if_t *core_if, dwc_hc_t *hc)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t intr_enable;</span>
<span class="gi">+	hcintmsk_data_t hc_intr_mask;</span>
<span class="gi">+	gintmsk_data_t gintmsk = { .d32 = 0 };</span>
<span class="gi">+	hcchar_data_t hcchar;</span>
<span class="gi">+	hcsplt_data_t hcsplt;</span>
<span class="gi">+</span>
<span class="gi">+	uint8_t hc_num = hc-&gt;hc_num;</span>
<span class="gi">+	dwc_otg_host_if_t *host_if = core_if-&gt;host_if;</span>
<span class="gi">+	dwc_otg_hc_regs_t *hc_regs = host_if-&gt;hc_regs[hc_num];</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear old interrupt conditions for this host channel. */</span>
<span class="gi">+	hc_intr_mask.d32 = 0xFFFFFFFF;</span>
<span class="gi">+	hc_intr_mask.b.reserved = 0;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcint, hc_intr_mask.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Enable channel interrupts required for this transfer. */</span>
<span class="gi">+	hc_intr_mask.d32 = 0;</span>
<span class="gi">+	hc_intr_mask.b.chhltd = 1;</span>
<span class="gi">+	if (core_if-&gt;dma_enable) {</span>
<span class="gi">+		hc_intr_mask.b.ahberr = 1;</span>
<span class="gi">+		if (hc-&gt;error_state &amp;&amp; !hc-&gt;do_split &amp;&amp;</span>
<span class="gi">+			hc-&gt;ep_type != DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+			hc_intr_mask.b.ack = 1;</span>
<span class="gi">+			if (hc-&gt;ep_is_in) {</span>
<span class="gi">+				hc_intr_mask.b.datatglerr = 1;</span>
<span class="gi">+				if (hc-&gt;ep_type != DWC_OTG_EP_TYPE_INTR) {</span>
<span class="gi">+					hc_intr_mask.b.nak = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		switch (hc-&gt;ep_type) {</span>
<span class="gi">+		case DWC_OTG_EP_TYPE_CONTROL:</span>
<span class="gi">+		case DWC_OTG_EP_TYPE_BULK:</span>
<span class="gi">+			hc_intr_mask.b.xfercompl = 1;</span>
<span class="gi">+			hc_intr_mask.b.stall = 1;</span>
<span class="gi">+			hc_intr_mask.b.xacterr = 1;</span>
<span class="gi">+			hc_intr_mask.b.datatglerr = 1;</span>
<span class="gi">+			if (hc-&gt;ep_is_in) {</span>
<span class="gi">+				hc_intr_mask.b.bblerr = 1;</span>
<span class="gi">+			} </span>
<span class="gi">+			else {</span>
<span class="gi">+				hc_intr_mask.b.nak = 1;</span>
<span class="gi">+				hc_intr_mask.b.nyet = 1;</span>
<span class="gi">+				if (hc-&gt;do_ping) {</span>
<span class="gi">+					hc_intr_mask.b.ack = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			if (hc-&gt;do_split) {</span>
<span class="gi">+				hc_intr_mask.b.nak = 1;</span>
<span class="gi">+				if (hc-&gt;complete_split) {</span>
<span class="gi">+					hc_intr_mask.b.nyet = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+				else {</span>
<span class="gi">+					hc_intr_mask.b.ack = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			if (hc-&gt;error_state) {</span>
<span class="gi">+				hc_intr_mask.b.ack = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+			break;</span>
<span class="gi">+		case DWC_OTG_EP_TYPE_INTR:</span>
<span class="gi">+			hc_intr_mask.b.xfercompl = 1;</span>
<span class="gi">+			hc_intr_mask.b.nak = 1;</span>
<span class="gi">+			hc_intr_mask.b.stall = 1;</span>
<span class="gi">+			hc_intr_mask.b.xacterr = 1;</span>
<span class="gi">+			hc_intr_mask.b.datatglerr = 1;</span>
<span class="gi">+			hc_intr_mask.b.frmovrun = 1;</span>
<span class="gi">+</span>
<span class="gi">+			if (hc-&gt;ep_is_in) {</span>
<span class="gi">+				hc_intr_mask.b.bblerr = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+			if (hc-&gt;error_state) {</span>
<span class="gi">+				hc_intr_mask.b.ack = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+			if (hc-&gt;do_split) {</span>
<span class="gi">+				if (hc-&gt;complete_split) {</span>
<span class="gi">+					hc_intr_mask.b.nyet = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+				else {</span>
<span class="gi">+					hc_intr_mask.b.ack = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+			break;</span>
<span class="gi">+		case DWC_OTG_EP_TYPE_ISOC:</span>
<span class="gi">+			hc_intr_mask.b.xfercompl = 1;</span>
<span class="gi">+			hc_intr_mask.b.frmovrun = 1;</span>
<span class="gi">+			hc_intr_mask.b.ack = 1;</span>
<span class="gi">+</span>
<span class="gi">+			if (hc-&gt;ep_is_in) {</span>
<span class="gi">+				hc_intr_mask.b.xacterr = 1;</span>
<span class="gi">+				hc_intr_mask.b.bblerr = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcintmsk, hc_intr_mask.d32);</span>
<span class="gi">+</span>
<span class="gi">+//	if(hc-&gt;ep_type == DWC_OTG_EP_TYPE_BULK &amp;&amp; !hc-&gt;ep_is_in)</span>
<span class="gi">+//			hc-&gt;max_packet = 512;</span>
<span class="gi">+	/* Enable the top level host channel interrupt. */</span>
<span class="gi">+	intr_enable = (1 &lt;&lt; hc_num);</span>
<span class="gi">+	dwc_modify_reg32(&amp;host_if-&gt;host_global_regs-&gt;haintmsk, 0, intr_enable);</span>
<span class="gi">+</span>
<span class="gi">+	/* Make sure host channel interrupts are enabled. */</span>
<span class="gi">+	gintmsk.b.hcintr = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk, 0, gintmsk.d32);</span>
<span class="gi">+	</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Program the HCCHARn register with the endpoint characteristics for</span>
<span class="gi">+	 * the current transfer.</span>
<span class="gi">+	 */</span>
<span class="gi">+	hcchar.d32 = 0;</span>
<span class="gi">+	hcchar.b.devaddr = hc-&gt;dev_addr;</span>
<span class="gi">+	hcchar.b.epnum = hc-&gt;ep_num;</span>
<span class="gi">+	hcchar.b.epdir = hc-&gt;ep_is_in;</span>
<span class="gi">+	hcchar.b.lspddev = (hc-&gt;speed == DWC_OTG_EP_SPEED_LOW);</span>
<span class="gi">+	hcchar.b.eptype = hc-&gt;ep_type;</span>
<span class="gi">+	hcchar.b.mps = hc-&gt;max_packet;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_write_reg32(&amp;host_if-&gt;hc_regs[hc_num]-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;%s: Channel %d\n&quot;, __func__, hc-&gt;hc_num);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 Dev Addr: %d\n&quot;, hcchar.b.devaddr);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 Ep Num: %d\n&quot;, hcchar.b.epnum);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 Is In: %d\n&quot;, hcchar.b.epdir);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 Is Low Speed: %d\n&quot;, hcchar.b.lspddev);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 Ep Type: %d\n&quot;, hcchar.b.eptype);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 Max Pkt: %d\n&quot;, hcchar.b.mps);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 Multi Cnt: %d\n&quot;, hcchar.b.multicnt);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Program the HCSPLIT register for SPLITs</span>
<span class="gi">+	 */</span>
<span class="gi">+	hcsplt.d32 = 0;</span>
<span class="gi">+	if (hc-&gt;do_split) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;Programming HC %d with split --&gt; %s\n&quot;, hc-&gt;hc_num,</span>
<span class="gi">+			   hc-&gt;complete_split ? &quot;CSPLIT&quot; : &quot;SSPLIT&quot;);</span>
<span class="gi">+		hcsplt.b.compsplt = hc-&gt;complete_split;</span>
<span class="gi">+		hcsplt.b.xactpos = hc-&gt;xact_pos;</span>
<span class="gi">+		hcsplt.b.hubaddr = hc-&gt;hub_addr;</span>
<span class="gi">+		hcsplt.b.prtaddr = hc-&gt;port_addr;</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;	  comp split %d\n&quot;, hc-&gt;complete_split);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;	  xact pos %d\n&quot;, hc-&gt;xact_pos);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;	  hub addr %d\n&quot;, hc-&gt;hub_addr);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;	  port addr %d\n&quot;, hc-&gt;port_addr);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;	  is_in %d\n&quot;, hc-&gt;ep_is_in);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;	  Max Pkt: %d\n&quot;, hcchar.b.mps);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;	  xferlen: %d\n&quot;, hc-&gt;xfer_len);		</span>
<span class="gi">+	}</span>
<span class="gi">+	dwc_write_reg32(&amp;host_if-&gt;hc_regs[hc_num]-&gt;hcsplt, hcsplt.d32);</span>
<span class="gi">+</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Attempts to halt a host channel. This function should only be called in</span>
<span class="gi">+ * Slave mode or to abort a transfer in either Slave mode or DMA mode. Under</span>
<span class="gi">+ * normal circumstances in DMA mode, the controller halts the channel when the</span>
<span class="gi">+ * transfer is complete or a condition occurs that requires application</span>
<span class="gi">+ * intervention.</span>
<span class="gi">+ *</span>
<span class="gi">+ * In slave mode, checks for a free request queue entry, then sets the Channel</span>
<span class="gi">+ * Enable and Channel Disable bits of the Host Channel Characteristics</span>
<span class="gi">+ * register of the specified channel to intiate the halt. If there is no free</span>
<span class="gi">+ * request queue entry, sets only the Channel Disable bit of the HCCHARn</span>
<span class="gi">+ * register to flush requests for this channel. In the latter case, sets a</span>
<span class="gi">+ * flag to indicate that the host channel needs to be halted when a request</span>
<span class="gi">+ * queue slot is open.</span>
<span class="gi">+ *</span>
<span class="gi">+ * In DMA mode, always sets the Channel Enable and Channel Disable bits of the</span>
<span class="gi">+ * HCCHARn register. The controller ensures there is space in the request</span>
<span class="gi">+ * queue before submitting the halt request.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Some time may elapse before the core flushes any posted requests for this</span>
<span class="gi">+ * host channel and halts. The Channel Halted interrupt handler completes the</span>
<span class="gi">+ * deactivation of the host channel.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Controller register interface.</span>
<span class="gi">+ * @param hc Host channel to halt.</span>
<span class="gi">+ * @param halt_status Reason for halting the channel.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hc_halt(dwc_otg_core_if_t *core_if,</span>
<span class="gi">+			 dwc_hc_t *hc,</span>
<span class="gi">+			 dwc_otg_halt_status_e halt_status)</span>
<span class="gi">+{</span>
<span class="gi">+	gnptxsts_data_t			nptxsts;</span>
<span class="gi">+	hptxsts_data_t			hptxsts;</span>
<span class="gi">+	hcchar_data_t			hcchar;</span>
<span class="gi">+	dwc_otg_hc_regs_t		*hc_regs;</span>
<span class="gi">+	dwc_otg_core_global_regs_t	*global_regs;</span>
<span class="gi">+	dwc_otg_host_global_regs_t	*host_global_regs;</span>
<span class="gi">+</span>
<span class="gi">+	hc_regs = core_if-&gt;host_if-&gt;hc_regs[hc-&gt;hc_num];</span>
<span class="gi">+	global_regs = core_if-&gt;core_global_regs;</span>
<span class="gi">+	host_global_regs = core_if-&gt;host_if-&gt;host_global_regs;</span>
<span class="gi">+</span>
<span class="gi">+	WARN_ON(halt_status == DWC_OTG_HC_XFER_NO_HALT_STATUS);</span>
<span class="gi">+</span>
<span class="gi">+	if (halt_status == DWC_OTG_HC_XFER_URB_DEQUEUE ||</span>
<span class="gi">+		halt_status == DWC_OTG_HC_XFER_AHB_ERR) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Disable all channel interrupts except Ch Halted. The QTD</span>
<span class="gi">+		 * and QH state associated with this transfer has been cleared</span>
<span class="gi">+		 * (in the case of URB_DEQUEUE), so the channel needs to be</span>
<span class="gi">+		 * shut down carefully to prevent crashes.</span>
<span class="gi">+		 */</span>
<span class="gi">+		hcintmsk_data_t hcintmsk;</span>
<span class="gi">+		hcintmsk.d32 = 0;</span>
<span class="gi">+		hcintmsk.b.chhltd = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcintmsk, hcintmsk.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Make sure no other interrupts besides halt are currently</span>
<span class="gi">+		 * pending. Handling another interrupt could cause a crash due</span>
<span class="gi">+		 * to the QTD and QH state.</span>
<span class="gi">+		 */</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcint, ~hcintmsk.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Make sure the halt status is set to URB_DEQUEUE or AHB_ERR</span>
<span class="gi">+		 * even if the channel was already halted for some other</span>
<span class="gi">+		 * reason.</span>
<span class="gi">+		 */</span>
<span class="gi">+		hc-&gt;halt_status = halt_status;</span>
<span class="gi">+</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		if (hcchar.b.chen == 0) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * The channel is either already halted or it hasn&#39;t</span>
<span class="gi">+			 * started yet. In DMA mode, the transfer may halt if</span>
<span class="gi">+			 * it finishes normally or a condition occurs that</span>
<span class="gi">+			 * requires driver intervention. Don&#39;t want to halt</span>
<span class="gi">+			 * the channel again. In either Slave or DMA mode,</span>
<span class="gi">+			 * it&#39;s possible that the transfer has been assigned</span>
<span class="gi">+			 * to a channel, but not started yet when an URB is</span>
<span class="gi">+			 * dequeued. Don&#39;t want to halt a channel that hasn&#39;t</span>
<span class="gi">+			 * started yet.</span>
<span class="gi">+			 */</span>
<span class="gi">+			return;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;halt_pending) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * A halt has already been issued for this channel. This might</span>
<span class="gi">+		 * happen when a transfer is aborted by a higher level in</span>
<span class="gi">+		 * the stack.</span>
<span class="gi">+		 */</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+		DWC_PRINT(&quot;*** %s: Channel %d, _hc-&gt;halt_pending already set ***\n&quot;,</span>
<span class="gi">+			  __func__, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+/*		dwc_otg_dump_global_registers(core_if); */</span>
<span class="gi">+/*		dwc_otg_dump_host_registers(core_if); */</span>
<span class="gi">+#endif		</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	hcchar.b.chen = 1;</span>
<span class="gi">+	hcchar.b.chdis = 1;</span>
<span class="gi">+</span>
<span class="gi">+	if (!core_if-&gt;dma_enable) {</span>
<span class="gi">+		/* Check for space in the request queue to issue the halt. */</span>
<span class="gi">+		if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_CONTROL ||</span>
<span class="gi">+			hc-&gt;ep_type == DWC_OTG_EP_TYPE_BULK) {</span>
<span class="gi">+			nptxsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gnptxsts);</span>
<span class="gi">+			if (nptxsts.b.nptxqspcavail == 0) {</span>
<span class="gi">+				hcchar.b.chen = 0;</span>
<span class="gi">+			}</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			hptxsts.d32 = dwc_read_reg32(&amp;host_global_regs-&gt;hptxsts);</span>
<span class="gi">+			if ((hptxsts.b.ptxqspcavail == 0) || (core_if-&gt;queuing_high_bandwidth)) {</span>
<span class="gi">+				hcchar.b.chen = 0;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	hc-&gt;halt_status = halt_status;</span>
<span class="gi">+</span>
<span class="gi">+	if (hcchar.b.chen) {</span>
<span class="gi">+		hc-&gt;halt_pending = 1;</span>
<span class="gi">+		hc-&gt;halt_on_queue = 0;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		hc-&gt;halt_on_queue = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;%s: Channel %d\n&quot;, __func__, hc-&gt;hc_num);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 hcchar: 0x%08x\n&quot;, hcchar.d32);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 halt_pending: %d\n&quot;, hc-&gt;halt_pending);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 halt_on_queue: %d\n&quot;, hc-&gt;halt_on_queue);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 halt_status: %d\n&quot;, hc-&gt;halt_status);</span>
<span class="gi">+</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Clears the transfer state for a host channel. This function is normally</span>
<span class="gi">+ * called after a transfer is done and the host channel is being released.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param hc Identifies the host channel to clean up.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hc_cleanup(dwc_otg_core_if_t *core_if, dwc_hc_t *hc)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hc_regs_t *hc_regs;</span>
<span class="gi">+</span>
<span class="gi">+	hc-&gt;xfer_started = 0;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Clear channel interrupt enables and any unhandled channel interrupt</span>
<span class="gi">+	 * conditions.</span>
<span class="gi">+	 */</span>
<span class="gi">+	hc_regs = core_if-&gt;host_if-&gt;hc_regs[hc-&gt;hc_num];</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcintmsk, 0);</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcint, 0xFFFFFFFF);</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	del_timer(&amp;core_if-&gt;hc_xfer_timer[hc-&gt;hc_num]);</span>
<span class="gi">+	{</span>
<span class="gi">+		hcchar_data_t hcchar;</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		if (hcchar.b.chdis) {</span>
<span class="gi">+			DWC_WARN(&quot;%s: chdis set, channel %d, hcchar 0x%08x\n&quot;,</span>
<span class="gi">+				 __func__, hc-&gt;hc_num, hcchar.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+#endif	</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Sets the channel property that indicates in which frame a periodic transfer</span>
<span class="gi">+ * should occur. This is always set to the _next_ frame. This function has no</span>
<span class="gi">+ * effect on non-periodic transfers.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param hc Identifies the host channel to set up and its properties.</span>
<span class="gi">+ * @param hcchar Current value of the HCCHAR register for the specified host</span>
<span class="gi">+ * channel.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void hc_set_even_odd_frame(dwc_otg_core_if_t *core_if,</span>
<span class="gi">+					 dwc_hc_t *hc,</span>
<span class="gi">+					 hcchar_data_t *hcchar)</span>
<span class="gi">+{</span>
<span class="gi">+	if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_INTR ||</span>
<span class="gi">+		hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+		hfnum_data_t	hfnum;</span>
<span class="gi">+		hfnum.d32 = dwc_read_reg32(&amp;core_if-&gt;host_if-&gt;host_global_regs-&gt;hfnum);</span>
<span class="gi">+		</span>
<span class="gi">+		/* 1 if _next_ frame is odd, 0 if it&#39;s even */</span>
<span class="gi">+		hcchar-&gt;b.oddfrm = (hfnum.b.frnum &amp; 0x1) ? 0 : 1;</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+		if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_INTR &amp;&amp; hc-&gt;do_split &amp;&amp; !hc-&gt;complete_split) {</span>
<span class="gi">+			switch (hfnum.b.frnum &amp; 0x7) {</span>
<span class="gi">+			case 7:</span>
<span class="gi">+				core_if-&gt;hfnum_7_samples++;</span>
<span class="gi">+				core_if-&gt;hfnum_7_frrem_accum += hfnum.b.frrem;</span>
<span class="gi">+				break;</span>
<span class="gi">+			case 0:</span>
<span class="gi">+				core_if-&gt;hfnum_0_samples++;</span>
<span class="gi">+				core_if-&gt;hfnum_0_frrem_accum += hfnum.b.frrem;</span>
<span class="gi">+				break;</span>
<span class="gi">+			default:</span>
<span class="gi">+				core_if-&gt;hfnum_other_samples++;</span>
<span class="gi">+				core_if-&gt;hfnum_other_frrem_accum += hfnum.b.frrem;</span>
<span class="gi">+				break;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+#endif		</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+static void hc_xfer_timeout(unsigned long ptr)</span>
<span class="gi">+{</span>
<span class="gi">+	hc_xfer_info_t *xfer_info = (hc_xfer_info_t *)ptr;</span>
<span class="gi">+	int hc_num = xfer_info-&gt;hc-&gt;hc_num;</span>
<span class="gi">+	DWC_WARN(&quot;%s: timeout on channel %d\n&quot;, __func__, hc_num);</span>
<span class="gi">+	DWC_WARN(&quot;	start_hcchar_val 0x%08x\n&quot;, xfer_info-&gt;core_if-&gt;start_hcchar_val[hc_num]);</span>
<span class="gi">+}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * This function does the setup for a data transfer for a host channel and</span>
<span class="gi">+ * starts the transfer. May be called in either Slave mode or DMA mode. In</span>
<span class="gi">+ * Slave mode, the caller must ensure that there is sufficient space in the</span>
<span class="gi">+ * request queue and Tx Data FIFO.</span>
<span class="gi">+ *</span>
<span class="gi">+ * For an OUT transfer in Slave mode, it loads a data packet into the</span>
<span class="gi">+ * appropriate FIFO. If necessary, additional data packets will be loaded in</span>
<span class="gi">+ * the Host ISR.</span>
<span class="gi">+ *</span>
<span class="gi">+ * For an IN transfer in Slave mode, a data packet is requested. The data</span>
<span class="gi">+ * packets are unloaded from the Rx FIFO in the Host ISR. If necessary,</span>
<span class="gi">+ * additional data packets are requested in the Host ISR.</span>
<span class="gi">+ *</span>
<span class="gi">+ * For a PING transfer in Slave mode, the Do Ping bit is set in the HCTSIZ</span>
<span class="gi">+ * register along with a packet count of 1 and the channel is enabled. This</span>
<span class="gi">+ * causes a single PING transaction to occur. Other fields in HCTSIZ are</span>
<span class="gi">+ * simply set to 0 since no data transfer occurs in this case.</span>
<span class="gi">+ *</span>
<span class="gi">+ * For a PING transfer in DMA mode, the HCTSIZ register is initialized with</span>
<span class="gi">+ * all the information required to perform the subsequent data transfer. In</span>
<span class="gi">+ * addition, the Do Ping bit is set in the HCTSIZ register. In this case, the</span>
<span class="gi">+ * controller performs the entire PING protocol, then starts the data</span>
<span class="gi">+ * transfer.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param hc Information needed to initialize the host channel. The xfer_len</span>
<span class="gi">+ * value may be reduced to accommodate the max widths of the XferSize and</span>
<span class="gi">+ * PktCnt fields in the HCTSIZn register. The multi_count value may be changed</span>
<span class="gi">+ * to reflect the final xfer_len value.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hc_start_transfer(dwc_otg_core_if_t *core_if, dwc_hc_t *hc)</span>
<span class="gi">+{</span>
<span class="gi">+	hcchar_data_t hcchar;</span>
<span class="gi">+	hctsiz_data_t hctsiz;</span>
<span class="gi">+	uint16_t num_packets;</span>
<span class="gi">+	uint32_t max_hc_xfer_size = core_if-&gt;core_params-&gt;max_transfer_size;</span>
<span class="gi">+	uint16_t max_hc_pkt_count = core_if-&gt;core_params-&gt;max_packet_count;</span>
<span class="gi">+	dwc_otg_hc_regs_t *hc_regs = core_if-&gt;host_if-&gt;hc_regs[hc-&gt;hc_num];</span>
<span class="gi">+</span>
<span class="gi">+	hctsiz.d32 = 0;</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;do_ping) {</span>
<span class="gi">+		if (!core_if-&gt;dma_enable) {</span>
<span class="gi">+			dwc_otg_hc_do_ping(core_if, hc);</span>
<span class="gi">+			hc-&gt;xfer_started = 1;</span>
<span class="gi">+			return;</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			hctsiz.b.dopng = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;do_split) {</span>
<span class="gi">+		num_packets = 1;</span>
<span class="gi">+</span>
<span class="gi">+		if (hc-&gt;complete_split &amp;&amp; !hc-&gt;ep_is_in) {</span>
<span class="gi">+			/* For CSPLIT OUT Transfer, set the size to 0 so the</span>
<span class="gi">+			 * core doesn&#39;t expect any data written to the FIFO */</span>
<span class="gi">+			hc-&gt;xfer_len = 0;</span>
<span class="gi">+		} </span>
<span class="gi">+		else if (hc-&gt;ep_is_in || (hc-&gt;xfer_len &gt; hc-&gt;max_packet)) {</span>
<span class="gi">+			hc-&gt;xfer_len = hc-&gt;max_packet;</span>
<span class="gi">+		} </span>
<span class="gi">+		else if (!hc-&gt;ep_is_in &amp;&amp; (hc-&gt;xfer_len &gt; 188)) {</span>
<span class="gi">+			hc-&gt;xfer_len = 188;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		hctsiz.b.xfersize = hc-&gt;xfer_len;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Ensure that the transfer length and packet count will fit</span>
<span class="gi">+		 * in the widths allocated for them in the HCTSIZn register.</span>
<span class="gi">+		 */</span>
<span class="gi">+		if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_INTR ||</span>
<span class="gi">+			hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Make sure the transfer size is no larger than one</span>
<span class="gi">+			 * (micro)frame&#39;s worth of data. (A check was done</span>
<span class="gi">+			 * when the periodic transfer was accepted to ensure</span>
<span class="gi">+			 * that a (micro)frame&#39;s worth of data can be</span>
<span class="gi">+			 * programmed into a channel.)</span>
<span class="gi">+			 */</span>
<span class="gi">+			uint32_t max_periodic_len = hc-&gt;multi_count * hc-&gt;max_packet;</span>
<span class="gi">+			if (hc-&gt;xfer_len &gt; max_periodic_len) {</span>
<span class="gi">+				hc-&gt;xfer_len = max_periodic_len;</span>
<span class="gi">+			} </span>
<span class="gi">+			else {</span>
<span class="gi">+			}</span>
<span class="gi">+		} </span>
<span class="gi">+		else if (hc-&gt;xfer_len &gt; max_hc_xfer_size) {</span>
<span class="gi">+			/* Make sure that xfer_len is a multiple of max packet size. */</span>
<span class="gi">+			hc-&gt;xfer_len = max_hc_xfer_size - hc-&gt;max_packet + 1;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		if (hc-&gt;xfer_len &gt; 0) {</span>
<span class="gi">+			num_packets = (hc-&gt;xfer_len + hc-&gt;max_packet - 1) / hc-&gt;max_packet;</span>
<span class="gi">+			if (num_packets &gt; max_hc_pkt_count) {</span>
<span class="gi">+				num_packets = max_hc_pkt_count;</span>
<span class="gi">+				hc-&gt;xfer_len = num_packets * hc-&gt;max_packet;</span>
<span class="gi">+			}</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			/* Need 1 packet for transfer length of 0. */</span>
<span class="gi">+			num_packets = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+#if 0</span>
<span class="gi">+//host testusb item 10, would do series of Control transfer</span>
<span class="gi">+//with URB_SHORT_NOT_OK set in transfer_flags ,</span>
<span class="gi">+//changing the xfer_len would cause the test fail</span>
<span class="gi">+		if (hc-&gt;ep_is_in) {</span>
<span class="gi">+			/* Always program an integral # of max packets for IN transfers. */</span>
<span class="gi">+			hc-&gt;xfer_len = num_packets * hc-&gt;max_packet;</span>
<span class="gi">+		}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+		if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_INTR ||</span>
<span class="gi">+			hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Make sure that the multi_count field matches the</span>
<span class="gi">+			 * actual transfer length.</span>
<span class="gi">+			 */</span>
<span class="gi">+			hc-&gt;multi_count = num_packets;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+			/* Set up the initial PID for the transfer. */</span>
<span class="gi">+			if (hc-&gt;speed == DWC_OTG_EP_SPEED_HIGH) {</span>
<span class="gi">+				if (hc-&gt;ep_is_in) {</span>
<span class="gi">+					if (hc-&gt;multi_count == 1) {</span>
<span class="gi">+						hc-&gt;data_pid_start = DWC_OTG_HC_PID_DATA0;</span>
<span class="gi">+					} </span>
<span class="gi">+					else if (hc-&gt;multi_count == 2) {</span>
<span class="gi">+						hc-&gt;data_pid_start = DWC_OTG_HC_PID_DATA1;</span>
<span class="gi">+					} </span>
<span class="gi">+					else {</span>
<span class="gi">+						hc-&gt;data_pid_start = DWC_OTG_HC_PID_DATA2;</span>
<span class="gi">+					}</span>
<span class="gi">+				} </span>
<span class="gi">+				else {</span>
<span class="gi">+					if (hc-&gt;multi_count == 1) {</span>
<span class="gi">+						hc-&gt;data_pid_start = DWC_OTG_HC_PID_DATA0;</span>
<span class="gi">+					} </span>
<span class="gi">+					else {</span>
<span class="gi">+						hc-&gt;data_pid_start = DWC_OTG_HC_PID_MDATA;</span>
<span class="gi">+					}</span>
<span class="gi">+				}</span>
<span class="gi">+			} </span>
<span class="gi">+			else {</span>
<span class="gi">+				hc-&gt;data_pid_start = DWC_OTG_HC_PID_DATA0;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		hctsiz.b.xfersize = hc-&gt;xfer_len;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hc-&gt;start_pkt_count = num_packets;</span>
<span class="gi">+	hctsiz.b.pktcnt = num_packets;</span>
<span class="gi">+	hctsiz.b.pid = hc-&gt;data_pid_start;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hctsiz, hctsiz.d32);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;%s: Channel %d\n&quot;, __func__, hc-&gt;hc_num);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 Xfer Size: %d\n&quot;, hctsiz.b.xfersize);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 Num Pkts: %d\n&quot;, hctsiz.b.pktcnt);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;	 Start PID: %d\n&quot;, hctsiz.b.pid);</span>
<span class="gi">+</span>
<span class="gi">+	if (core_if-&gt;dma_enable) {</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcdma, (uint32_t)hc-&gt;xfer_buff);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Start the split */</span>
<span class="gi">+	if (hc-&gt;do_split) {</span>
<span class="gi">+		hcsplt_data_t hcsplt;</span>
<span class="gi">+		hcsplt.d32 = dwc_read_reg32 (&amp;hc_regs-&gt;hcsplt);</span>
<span class="gi">+		hcsplt.b.spltena = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcsplt, hcsplt.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	hcchar.b.multicnt = hc-&gt;multi_count;</span>
<span class="gi">+	hc_set_even_odd_frame(core_if, hc, &amp;hcchar);</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	core_if-&gt;start_hcchar_val[hc-&gt;hc_num] = hcchar.d32;</span>
<span class="gi">+	if (hcchar.b.chdis) {</span>
<span class="gi">+		DWC_WARN(&quot;%s: chdis set, channel %d, hcchar 0x%08x\n&quot;,</span>
<span class="gi">+			 __func__, hc-&gt;hc_num, hcchar.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+#endif	</span>
<span class="gi">+</span>
<span class="gi">+	/* Set host channel enable after all other setup is complete. */</span>
<span class="gi">+	hcchar.b.chen = 1;</span>
<span class="gi">+	hcchar.b.chdis = 0;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	hc-&gt;xfer_started = 1;</span>
<span class="gi">+	hc-&gt;requests++;</span>
<span class="gi">+</span>
<span class="gi">+	if (!core_if-&gt;dma_enable &amp;&amp; </span>
<span class="gi">+		!hc-&gt;ep_is_in &amp;&amp; hc-&gt;xfer_len &gt; 0) {</span>
<span class="gi">+		/* Load OUT packet into the appropriate Tx FIFO. */</span>
<span class="gi">+		dwc_otg_hc_write_packet(core_if, hc);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	/* Start a timer for this transfer. */</span>
<span class="gi">+	core_if-&gt;hc_xfer_timer[hc-&gt;hc_num].function = hc_xfer_timeout;</span>
<span class="gi">+	core_if-&gt;hc_xfer_info[hc-&gt;hc_num].core_if = core_if;</span>
<span class="gi">+	core_if-&gt;hc_xfer_info[hc-&gt;hc_num].hc = hc;</span>
<span class="gi">+	core_if-&gt;hc_xfer_timer[hc-&gt;hc_num].data = (unsigned long)(&amp;core_if-&gt;hc_xfer_info[hc-&gt;hc_num]);</span>
<span class="gi">+	core_if-&gt;hc_xfer_timer[hc-&gt;hc_num].expires = jiffies + (HZ*10);</span>
<span class="gi">+	add_timer(&amp;core_if-&gt;hc_xfer_timer[hc-&gt;hc_num]);</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function continues a data transfer that was started by previous call</span>
<span class="gi">+ * to &lt;code&gt;dwc_otg_hc_start_transfer&lt;/code&gt;. The caller must ensure there is</span>
<span class="gi">+ * sufficient space in the request queue and Tx Data FIFO. This function</span>
<span class="gi">+ * should only be called in Slave mode. In DMA mode, the controller acts</span>
<span class="gi">+ * autonomously to complete transfers programmed to a host channel.</span>
<span class="gi">+ *</span>
<span class="gi">+ * For an OUT transfer, a new data packet is loaded into the appropriate FIFO</span>
<span class="gi">+ * if there is any data remaining to be queued. For an IN transfer, another</span>
<span class="gi">+ * data packet is always requested. For the SETUP phase of a control transfer,</span>
<span class="gi">+ * this function does nothing.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return 1 if a new request is queued, 0 if no more requests are required</span>
<span class="gi">+ * for this transfer.</span>
<span class="gi">+ */</span>
<span class="gi">+int dwc_otg_hc_continue_transfer(dwc_otg_core_if_t *core_if, dwc_hc_t *hc)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;%s: Channel %d\n&quot;, __func__, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;do_split) {</span>
<span class="gi">+		/* SPLITs always queue just once per channel */</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	} </span>
<span class="gi">+	else if (hc-&gt;data_pid_start == DWC_OTG_HC_PID_SETUP) {</span>
<span class="gi">+		/* SETUPs are queued only once since they can&#39;t be NAKed. */</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	} </span>
<span class="gi">+	else if (hc-&gt;ep_is_in) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Always queue another request for other IN transfers. If</span>
<span class="gi">+		 * back-to-back INs are issued and NAKs are received for both,</span>
<span class="gi">+		 * the driver may still be processing the first NAK when the</span>
<span class="gi">+		 * second NAK is received. When the interrupt handler clears</span>
<span class="gi">+		 * the NAK interrupt for the first NAK, the second NAK will</span>
<span class="gi">+		 * not be seen. So we can&#39;t depend on the NAK interrupt</span>
<span class="gi">+		 * handler to requeue a NAKed request. Instead, IN requests</span>
<span class="gi">+		 * are issued each time this function is called. When the</span>
<span class="gi">+		 * transfer completes, the extra requests for the channel will</span>
<span class="gi">+		 * be flushed.</span>
<span class="gi">+		 */</span>
<span class="gi">+		hcchar_data_t hcchar;</span>
<span class="gi">+		dwc_otg_hc_regs_t *hc_regs = core_if-&gt;host_if-&gt;hc_regs[hc-&gt;hc_num];</span>
<span class="gi">+</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		hc_set_even_odd_frame(core_if, hc, &amp;hcchar);</span>
<span class="gi">+		hcchar.b.chen = 1;</span>
<span class="gi">+		hcchar.b.chdis = 0;</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;	 IN xfer: hcchar = 0x%08x\n&quot;, hcchar.d32);</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+		hc-&gt;requests++;</span>
<span class="gi">+		return 1;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		/* OUT transfers. */</span>
<span class="gi">+		if (hc-&gt;xfer_count &lt; hc-&gt;xfer_len) {</span>
<span class="gi">+			if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_INTR ||</span>
<span class="gi">+				hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+				hcchar_data_t hcchar;</span>
<span class="gi">+				dwc_otg_hc_regs_t *hc_regs;</span>
<span class="gi">+				hc_regs = core_if-&gt;host_if-&gt;hc_regs[hc-&gt;hc_num];</span>
<span class="gi">+				hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+				hc_set_even_odd_frame(core_if, hc, &amp;hcchar);</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			/* Load OUT packet into the appropriate Tx FIFO. */</span>
<span class="gi">+			dwc_otg_hc_write_packet(core_if, hc);</span>
<span class="gi">+			hc-&gt;requests++;</span>
<span class="gi">+			return 1;</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			return 0;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Starts a PING transfer. This function should only be called in Slave mode.</span>
<span class="gi">+ * The Do Ping bit is set in the HCTSIZ register, then the channel is enabled.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hc_do_ping(dwc_otg_core_if_t *core_if, dwc_hc_t *hc)</span>
<span class="gi">+{</span>
<span class="gi">+	hcchar_data_t hcchar;</span>
<span class="gi">+	hctsiz_data_t hctsiz;</span>
<span class="gi">+	dwc_otg_hc_regs_t *hc_regs = core_if-&gt;host_if-&gt;hc_regs[hc-&gt;hc_num];</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;%s: Channel %d\n&quot;, __func__, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	hctsiz.d32 = 0;</span>
<span class="gi">+	hctsiz.b.dopng = 1;</span>
<span class="gi">+	hctsiz.b.pktcnt = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hctsiz, hctsiz.d32);</span>
<span class="gi">+</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	hcchar.b.chen = 1;</span>
<span class="gi">+	hcchar.b.chdis = 0;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * This function writes a packet into the Tx FIFO associated with the Host</span>
<span class="gi">+ * Channel. For a channel associated with a non-periodic EP, the non-periodic</span>
<span class="gi">+ * Tx FIFO is written. For a channel associated with a periodic EP, the</span>
<span class="gi">+ * periodic Tx FIFO is written. This function should only be called in Slave</span>
<span class="gi">+ * mode.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Upon return the xfer_buff and xfer_count fields in _hc are incremented by</span>
<span class="gi">+ * then number of bytes written to the Tx FIFO.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hc_write_packet(dwc_otg_core_if_t *core_if, dwc_hc_t *hc)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t i;</span>
<span class="gi">+	uint32_t remaining_count;</span>
<span class="gi">+	uint32_t byte_count;</span>
<span class="gi">+	uint32_t dword_count;</span>
<span class="gi">+</span>
<span class="gi">+	uint32_t *data_buff = (uint32_t *)(hc-&gt;xfer_buff);</span>
<span class="gi">+	uint32_t *data_fifo = core_if-&gt;data_fifo[hc-&gt;hc_num];</span>
<span class="gi">+</span>
<span class="gi">+	remaining_count = hc-&gt;xfer_len - hc-&gt;xfer_count;</span>
<span class="gi">+	if (remaining_count &gt; hc-&gt;max_packet) {</span>
<span class="gi">+		byte_count = hc-&gt;max_packet;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		byte_count = remaining_count;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dword_count = (byte_count + 3) / 4;</span>
<span class="gi">+</span>
<span class="gi">+	if ((((unsigned long)data_buff) &amp; 0x3) == 0) {</span>
<span class="gi">+		/* xfer_buff is DWORD aligned. */</span>
<span class="gi">+		for (i = 0; i &lt; dword_count; i++, data_buff++) </span>
<span class="gi">+		{</span>
<span class="gi">+			dwc_write_reg32(data_fifo, *data_buff);</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		/* xfer_buff is not DWORD aligned. */</span>
<span class="gi">+		for (i = 0; i &lt; dword_count; i++, data_buff++) </span>
<span class="gi">+		{</span>
<span class="gi">+			dwc_write_reg32(data_fifo, get_unaligned(data_buff));</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hc-&gt;xfer_count += byte_count;</span>
<span class="gi">+	hc-&gt;xfer_buff += byte_count;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Gets the current USB frame number. This is the frame number from the last </span>
<span class="gi">+ * SOF packet.	</span>
<span class="gi">+ */</span>
<span class="gi">+uint32_t dwc_otg_get_frame_number(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	dsts_data_t dsts;</span>
<span class="gi">+	dsts.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dsts);</span>
<span class="gi">+</span>
<span class="gi">+	/* read current frame/microframe number from DSTS register */</span>
<span class="gi">+	return dsts.b.soffn;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function reads a setup packet from the Rx FIFO into the destination </span>
<span class="gi">+ * buffer.	This function is called from the Rx Status Queue Level (RxStsQLvl)</span>
<span class="gi">+ * Interrupt routine when a SETUP packet has been received in Slave mode.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param dest Destination buffer for packet data.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_read_setup_packet(dwc_otg_core_if_t *core_if, uint32_t *dest)</span>
<span class="gi">+{</span>
<span class="gi">+	/* Get the 8 bytes of a setup transaction data */</span>
<span class="gi">+</span>
<span class="gi">+	/* Pop 2 DWORDS off the receive data FIFO into memory */</span>
<span class="gi">+	dest[0] = dwc_read_reg32(core_if-&gt;data_fifo[0]);</span>
<span class="gi">+	dest[1] = dwc_read_reg32(core_if-&gt;data_fifo[0]);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function enables EP0 OUT to receive SETUP packets and configures EP0 </span>
<span class="gi">+ * IN for transmitting packets.	 It is normally called when the</span>
<span class="gi">+ * &quot;Enumeration Done&quot; interrupt occurs.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP0 data.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_ep0_activate(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	dsts_data_t dsts;</span>
<span class="gi">+	depctl_data_t diepctl;</span>
<span class="gi">+	depctl_data_t doepctl;</span>
<span class="gi">+	dctl_data_t dctl = { .d32 = 0 };		   </span>
<span class="gi">+</span>
<span class="gi">+	/* Read the Device Status and Endpoint 0 Control registers */</span>
<span class="gi">+	dsts.d32 = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dsts);</span>
<span class="gi">+	diepctl.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[0]-&gt;diepctl);</span>
<span class="gi">+	doepctl.d32 = dwc_read_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doepctl);</span>
<span class="gi">+</span>
<span class="gi">+	/* Set the MPS of the IN EP based on the enumeration speed */</span>
<span class="gi">+	switch (dsts.b.enumspd) {</span>
<span class="gi">+	case DWC_DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ:</span>
<span class="gi">+	case DWC_DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ:</span>
<span class="gi">+	case DWC_DSTS_ENUMSPD_FS_PHY_48MHZ:</span>
<span class="gi">+		diepctl.b.mps = DWC_DEP0CTL_MPS_64;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_DSTS_ENUMSPD_LS_PHY_6MHZ:</span>
<span class="gi">+		diepctl.b.mps = DWC_DEP0CTL_MPS_8;</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_write_reg32(&amp;dev_if-&gt;in_ep_regs[0]-&gt;diepctl, diepctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Enable OUT EP for receive */</span>
<span class="gi">+	doepctl.b.epena = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doepctl, doepctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+#ifdef VERBOSE</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;doepctl0=%0x\n&quot;, </span>
<span class="gi">+		dwc_read_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doepctl));</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;diepctl0=%0x\n&quot;, </span>
<span class="gi">+		dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[0]-&gt;diepctl));		 </span>
<span class="gi">+#endif</span>
<span class="gi">+	dctl.b.cgnpinnak = 1;</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dctl, dctl.d32, dctl.d32);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;dctl=%0x\n&quot;, </span>
<span class="gi">+		dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dctl));</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function activates an EP.  The Device EP control register for</span>
<span class="gi">+ * the EP is configured as defined in the ep structure.	 Note: This</span>
<span class="gi">+ * function is not used for EP0.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to activate.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_ep_activate(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	depctl_data_t depctl;</span>
<span class="gi">+	volatile uint32_t *addr;</span>
<span class="gi">+	daint_data_t daintmsk = { .d32 = 0 };</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s() EP%d-%s\n&quot;, __func__, ep-&gt;num, </span>
<span class="gi">+		(ep-&gt;is_in?&quot;IN&quot;:&quot;OUT&quot;));</span>
<span class="gi">+		</span>
<span class="gi">+	/* Read DEPCTLn register */</span>
<span class="gi">+	if (ep-&gt;is_in == 1) {</span>
<span class="gi">+		addr = &amp;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepctl;</span>
<span class="gi">+		daintmsk.ep.in = 1&lt;&lt;ep-&gt;num;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		addr = &amp;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepctl;</span>
<span class="gi">+		daintmsk.ep.out = 1&lt;&lt;ep-&gt;num;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	/* If the EP is already active don&#39;t change the EP Control</span>
<span class="gi">+	 * register. */</span>
<span class="gi">+	depctl.d32 = dwc_read_reg32(addr);</span>
<span class="gi">+	if (!depctl.b.usbactep) {</span>
<span class="gi">+		depctl.b.mps = ep-&gt;maxpacket;</span>
<span class="gi">+		depctl.b.eptype = ep-&gt;type;</span>
<span class="gi">+		depctl.b.txfnum = ep-&gt;tx_fifo_num;</span>
<span class="gi">+				</span>
<span class="gi">+		if (ep-&gt;type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+			depctl.b.setd0pid = 1; // ??? </span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			depctl.b.setd0pid = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+		depctl.b.usbactep = 1;</span>
<span class="gi">+		</span>
<span class="gi">+		dwc_write_reg32(addr, depctl.d32);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV,&quot;DEPCTL(%.8x)=%08x\n&quot;,(u32)addr, dwc_read_reg32(addr));</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Enable the Interrupt for this EP */</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		if (ep-&gt;is_in == 1) {</span>
<span class="gi">+			diepmsk_data_t diepmsk = { .d32 = 0};</span>
<span class="gi">+			diepmsk.b.xfercompl = 1;</span>
<span class="gi">+			diepmsk.b.timeout = 1;</span>
<span class="gi">+			diepmsk.b.epdisabled = 1;</span>
<span class="gi">+			diepmsk.b.ahberr = 1;</span>
<span class="gi">+			diepmsk.b.intknepmis = 1;</span>
<span class="gi">+			diepmsk.b.txfifoundrn = 1; //?????</span>
<span class="gi">+			</span>
<span class="gi">+			</span>
<span class="gi">+			if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+				diepmsk.b.bna = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+/*			</span>
<span class="gi">+			if(core_if-&gt;dma_enable) {</span>
<span class="gi">+				doepmsk.b.nak = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+*/</span>
<span class="gi">+			dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepeachintmsk[ep-&gt;num], diepmsk.d32);</span>
<span class="gi">+			</span>
<span class="gi">+		} else {</span>
<span class="gi">+			doepmsk_data_t doepmsk = { .d32 = 0};</span>
<span class="gi">+			doepmsk.b.xfercompl = 1;</span>
<span class="gi">+			doepmsk.b.ahberr = 1;</span>
<span class="gi">+			doepmsk.b.epdisabled = 1;</span>
<span class="gi">+		</span>
<span class="gi">+</span>
<span class="gi">+			if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+				doepmsk.b.bna = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+/*			</span>
<span class="gi">+			doepmsk.b.babble = 1;</span>
<span class="gi">+			doepmsk.b.nyet = 1;</span>
<span class="gi">+			doepmsk.b.nak = 1;</span>
<span class="gi">+*/</span>
<span class="gi">+			dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;doepeachintmsk[ep-&gt;num], doepmsk.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+		dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;deachintmsk,</span>
<span class="gi">+			 0, daintmsk.d32);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;daintmsk,</span>
<span class="gi">+				 0, daintmsk.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;DAINTMSK=%0x\n&quot;, </span>
<span class="gi">+		dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;daintmsk));</span>
<span class="gi">+</span>
<span class="gi">+	ep-&gt;stall_clear_flag = 0;</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function deactivates an EP. This is done by clearing the USB Active </span>
<span class="gi">+ * EP bit in the Device EP control register. Note: This function is not used </span>
<span class="gi">+ * for EP0. EP0 cannot be deactivated.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to deactivate.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_ep_deactivate(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	depctl_data_t depctl = { .d32 = 0 };</span>
<span class="gi">+	volatile uint32_t *addr;</span>
<span class="gi">+	daint_data_t daintmsk = { .d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+	/* Read DEPCTLn register */</span>
<span class="gi">+	if (ep-&gt;is_in == 1) {</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepctl;</span>
<span class="gi">+		daintmsk.ep.in = 1&lt;&lt;ep-&gt;num;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepctl;</span>
<span class="gi">+		daintmsk.ep.out = 1&lt;&lt;ep-&gt;num;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	//disabled ep only when ep is enabled</span>
<span class="gi">+	//or got halt in the loop in test in cv9</span>
<span class="gi">+	depctl.d32=dwc_read_reg32(addr);</span>
<span class="gi">+	if(depctl.b.epena){</span>
<span class="gi">+		if (ep-&gt;is_in == 1) {</span>
<span class="gi">+			diepint_data_t diepint;</span>
<span class="gi">+			dwc_otg_dev_in_ep_regs_t *in_reg=core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num];</span>
<span class="gi">+		</span>
<span class="gi">+			//Set ep nak</span>
<span class="gi">+			depctl.d32=dwc_read_reg32(&amp;in_reg-&gt;diepctl);</span>
<span class="gi">+			depctl.b.snak=1;</span>
<span class="gi">+			dwc_write_reg32(&amp;in_reg-&gt;diepctl,depctl.d32);</span>
<span class="gi">+		</span>
<span class="gi">+			//wait for diepint.b.inepnakeff</span>
<span class="gi">+			diepint.d32=dwc_read_reg32(&amp;in_reg-&gt;diepint);</span>
<span class="gi">+			while(!diepint.b.inepnakeff){</span>
<span class="gi">+				udelay(1);</span>
<span class="gi">+				diepint.d32=dwc_read_reg32(&amp;in_reg-&gt;diepint);		</span>
<span class="gi">+			}</span>
<span class="gi">+			diepint.d32=0;</span>
<span class="gi">+			diepint.b.inepnakeff=1;</span>
<span class="gi">+			dwc_write_reg32(&amp;in_reg-&gt;diepint,diepint.d32);</span>
<span class="gi">+		</span>
<span class="gi">+			//set ep disable and snak</span>
<span class="gi">+			depctl.d32=dwc_read_reg32(&amp;in_reg-&gt;diepctl);</span>
<span class="gi">+			depctl.b.snak=1;</span>
<span class="gi">+			depctl.b.epdis=1;</span>
<span class="gi">+			dwc_write_reg32(&amp;in_reg-&gt;diepctl,depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+			//wait for diepint.b.epdisabled</span>
<span class="gi">+			diepint.d32=dwc_read_reg32(&amp;in_reg-&gt;diepint);</span>
<span class="gi">+			while(!diepint.b.epdisabled){</span>
<span class="gi">+				udelay(1);</span>
<span class="gi">+				diepint.d32=dwc_read_reg32(&amp;in_reg-&gt;diepint);		</span>
<span class="gi">+			}</span>
<span class="gi">+			diepint.d32=0;</span>
<span class="gi">+			diepint.b.epdisabled=1;</span>
<span class="gi">+			dwc_write_reg32(&amp;in_reg-&gt;diepint,diepint.d32);</span>
<span class="gi">+		</span>
<span class="gi">+			//clear ep enable and disable bit</span>
<span class="gi">+			depctl.d32=dwc_read_reg32(&amp;in_reg-&gt;diepctl);</span>
<span class="gi">+			depctl.b.epena=0;</span>
<span class="gi">+			depctl.b.epdis=0;</span>
<span class="gi">+			dwc_write_reg32(&amp;in_reg-&gt;diepctl,depctl.d32);</span>
<span class="gi">+		</span>
<span class="gi">+		} </span>
<span class="gi">+#if 0</span>
<span class="gi">+//following DWC OTG DataBook v2.72a, 6.4.2.1.3 Disabling an OUT Endpoint,</span>
<span class="gi">+//but this doesn&#39;t work, the old code do.</span>
<span class="gi">+		else {</span>
<span class="gi">+			doepint_data_t doepint;</span>
<span class="gi">+			dwc_otg_dev_out_ep_regs_t *out_reg=core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num];</span>
<span class="gi">+			dctl_data_t dctl;</span>
<span class="gi">+			gintsts_data_t gintsts;</span>
<span class="gi">+		</span>
<span class="gi">+			//set dctl global out nak</span>
<span class="gi">+			dctl.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dctl);</span>
<span class="gi">+			dctl.b.sgoutnak=1;</span>
<span class="gi">+			dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dctl,dctl.d32);</span>
<span class="gi">+	</span>
<span class="gi">+			//wait for gintsts.goutnakeff</span>
<span class="gi">+			gintsts.d32=dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintsts);</span>
<span class="gi">+			while(!gintsts.b.goutnakeff){</span>
<span class="gi">+				udelay(1);</span>
<span class="gi">+				gintsts.d32=dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintsts);		</span>
<span class="gi">+			}</span>
<span class="gi">+			gintsts.d32=0;</span>
<span class="gi">+			gintsts.b.goutnakeff=1;</span>
<span class="gi">+			dwc_write_reg32 (&amp;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+		</span>
<span class="gi">+			//set ep disable and snak</span>
<span class="gi">+			depctl.d32=dwc_read_reg32(&amp;out_reg-&gt;doepctl);</span>
<span class="gi">+			depctl.b.snak=1;</span>
<span class="gi">+			depctl.b.epdis=1;</span>
<span class="gi">+			dwc_write_reg32(&amp;out_reg-&gt;doepctl,depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+			//wait for diepint.b.epdisabled</span>
<span class="gi">+			doepint.d32=dwc_read_reg32(&amp;out_reg-&gt;doepint);</span>
<span class="gi">+			while(!doepint.b.epdisabled){</span>
<span class="gi">+				udelay(1);</span>
<span class="gi">+				doepint.d32=dwc_read_reg32(&amp;out_reg-&gt;doepint);		</span>
<span class="gi">+			}</span>
<span class="gi">+			doepint.d32=0;</span>
<span class="gi">+			doepint.b.epdisabled=1;</span>
<span class="gi">+			dwc_write_reg32(&amp;out_reg-&gt;doepint,doepint.d32);</span>
<span class="gi">+		</span>
<span class="gi">+			//clear ep enable and disable bit</span>
<span class="gi">+			depctl.d32=dwc_read_reg32(&amp;out_reg-&gt;doepctl);</span>
<span class="gi">+			depctl.b.epena=0;</span>
<span class="gi">+			depctl.b.epdis=0;</span>
<span class="gi">+			dwc_write_reg32(&amp;out_reg-&gt;doepctl,depctl.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+		depctl.d32=0;</span>
<span class="gi">+		depctl.b.usbactep = 0;</span>
<span class="gi">+</span>
<span class="gi">+		if (ep-&gt;is_in == 0) {</span>
<span class="gi">+			if(core_if-&gt;dma_enable||core_if-&gt;dma_desc_enable)</span>
<span class="gi">+				depctl.b.epdis = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+	</span>
<span class="gi">+		dwc_write_reg32(addr, depctl.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Disable the Interrupt for this EP */</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;deachintmsk,</span>
<span class="gi">+				 daintmsk.d32, 0);</span>
<span class="gi">+	</span>
<span class="gi">+		if (ep-&gt;is_in == 1) {</span>
<span class="gi">+			dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;diepeachintmsk[ep-&gt;num], 0);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;doepeachintmsk[ep-&gt;num], 0);</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daintmsk,</span>
<span class="gi">+					 daintmsk.d32, 0);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	if (ep-&gt;is_in == 1) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;DIEPCTL(%.8x)=%08x DIEPTSIZ=%08x, DIEPINT=%.8x, DIEPDMA=%.8x, DTXFSTS=%.8x\n&quot;, </span>
<span class="gi">+			(u32)&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepctl,</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepctl),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;dieptsiz),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepint),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepdma),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;dtxfsts));</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;DAINTMSK=%08x GINTMSK=%08x\n&quot;, </span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daintmsk),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk));		  </span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;DOEPCTL(%.8x)=%08x DOEPTSIZ=%08x, DOEPINT=%.8x, DOEPDMA=%.8x\n&quot;, </span>
<span class="gi">+			(u32)&amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepctl,</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepctl),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doeptsiz),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepint),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepdma));</span>
<span class="gi">+			</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;DAINTMSK=%08x GINTMSK=%08x\n&quot;, </span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daintmsk),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk));		  </span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function does the setup for a data transfer for an EP and</span>
<span class="gi">+ * starts the transfer.	 For an IN transfer, the packets will be</span>
<span class="gi">+ * loaded into the appropriate Tx FIFO in the ISR. For OUT transfers,</span>
<span class="gi">+ * the packets are unloaded from the Rx FIFO in the ISR.  the ISR.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to start the transfer on.</span>
<span class="gi">+ */</span>
<span class="gi">+static void init_dma_desc_chain(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_dma_desc_t* dma_desc;</span>
<span class="gi">+	uint32_t offset;</span>
<span class="gi">+	uint32_t xfer_est;</span>
<span class="gi">+	int i;</span>
<span class="gi">+</span>
<span class="gi">+	ep-&gt;desc_cnt = ( ep-&gt;total_len / ep-&gt;maxxfer)  + </span>
<span class="gi">+		((ep-&gt;total_len % ep-&gt;maxxfer) ? 1 : 0);</span>
<span class="gi">+	if(!ep-&gt;desc_cnt)</span>
<span class="gi">+		ep-&gt;desc_cnt = 1;</span>
<span class="gi">+	</span>
<span class="gi">+	dma_desc = ep-&gt;desc_addr;</span>
<span class="gi">+	xfer_est = ep-&gt;total_len;</span>
<span class="gi">+	offset = 0;</span>
<span class="gi">+	for( i = 0; i &lt; ep-&gt;desc_cnt; ++i) {</span>
<span class="gi">+		/** DMA Descriptor Setup */</span>
<span class="gi">+		if(xfer_est &gt; ep-&gt;maxxfer) {</span>
<span class="gi">+			dma_desc-&gt;status.b.bs = BS_HOST_BUSY; </span>
<span class="gi">+			dma_desc-&gt;status.b.l = 0;</span>
<span class="gi">+			dma_desc-&gt;status.b.ioc = 0;</span>
<span class="gi">+			dma_desc-&gt;status.b.sp = 0;</span>
<span class="gi">+			dma_desc-&gt;status.b.bytes = ep-&gt;maxxfer;</span>
<span class="gi">+			dma_desc-&gt;buf = ep-&gt;dma_addr + offset;</span>
<span class="gi">+			dma_desc-&gt;status.b.bs = BS_HOST_READY; </span>
<span class="gi">+</span>
<span class="gi">+			xfer_est -= ep-&gt;maxxfer;</span>
<span class="gi">+			offset += ep-&gt;maxxfer;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			dma_desc-&gt;status.b.bs = BS_HOST_BUSY; </span>
<span class="gi">+			dma_desc-&gt;status.b.l = 1;</span>
<span class="gi">+			dma_desc-&gt;status.b.ioc = 1;</span>
<span class="gi">+			if(ep-&gt;is_in) {</span>
<span class="gi">+				dma_desc-&gt;status.b.sp = (xfer_est % ep-&gt;maxpacket) ? </span>
<span class="gi">+					1 : ((ep-&gt;sent_zlp) ? 1 : 0);</span>
<span class="gi">+				dma_desc-&gt;status.b.bytes = xfer_est;</span>
<span class="gi">+			} else 	{</span>
<span class="gi">+				dma_desc-&gt;status.b.bytes = xfer_est + ((4 - (xfer_est &amp; 0x3)) &amp; 0x3) ;</span>
<span class="gi">+			}</span>
<span class="gi">+			</span>
<span class="gi">+			dma_desc-&gt;buf = ep-&gt;dma_addr + offset;</span>
<span class="gi">+			dma_desc-&gt;status.b.bs = BS_HOST_READY; </span>
<span class="gi">+		}</span>
<span class="gi">+		dma_desc ++;</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function does the setup for a data transfer for an EP and</span>
<span class="gi">+ * starts the transfer.	 For an IN transfer, the packets will be</span>
<span class="gi">+ * loaded into the appropriate Tx FIFO in the ISR. For OUT transfers,</span>
<span class="gi">+ * the packets are unloaded from the Rx FIFO in the ISR.  the ISR.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to start the transfer on.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+void dwc_otg_ep_start_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	depctl_data_t 	depctl;</span>
<span class="gi">+	deptsiz_data_t	deptsiz;</span>
<span class="gi">+	gintmsk_data_t 	intr_mask = { .d32 = 0};</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL((DBG_PCDV | DBG_CILV), &quot;%s()\n&quot;, __func__);</span>
<span class="gi">+		</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;ep%d-%s xfer_len=%d xfer_cnt=%d &quot;</span>
<span class="gi">+		&quot;xfer_buff=%p start_xfer_buff=%p\n&quot;,</span>
<span class="gi">+		ep-&gt;num, (ep-&gt;is_in?&quot;IN&quot;:&quot;OUT&quot;), ep-&gt;xfer_len, </span>
<span class="gi">+		ep-&gt;xfer_count, ep-&gt;xfer_buff, ep-&gt;start_xfer_buff);</span>
<span class="gi">+</span>
<span class="gi">+	/* IN endpoint */</span>
<span class="gi">+	if (ep-&gt;is_in == 1) {</span>
<span class="gi">+		dwc_otg_dev_in_ep_regs_t *in_regs = </span>
<span class="gi">+			core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num];</span>
<span class="gi">+</span>
<span class="gi">+		gnptxsts_data_t gtxstatus;</span>
<span class="gi">+					</span>
<span class="gi">+		gtxstatus.d32 = </span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gnptxsts);</span>
<span class="gi">+</span>
<span class="gi">+		if(core_if-&gt;en_multiple_tx_fifo == 0 &amp;&amp; gtxstatus.b.nptxqspcavail == 0) {</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+			DWC_PRINT(&quot;TX Queue Full (0x%0x)\n&quot;, gtxstatus.d32);</span>
<span class="gi">+#endif</span>
<span class="gi">+			return;</span>
<span class="gi">+		}</span>
<span class="gi">+				</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(&amp;(in_regs-&gt;diepctl));</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;(in_regs-&gt;dieptsiz));</span>
<span class="gi">+</span>
<span class="gi">+		ep-&gt;xfer_len += (ep-&gt;maxxfer &lt; (ep-&gt;total_len - ep-&gt;xfer_len)) ? </span>
<span class="gi">+				ep-&gt;maxxfer : (ep-&gt;total_len - ep-&gt;xfer_len);</span>
<span class="gi">+</span>
<span class="gi">+		/* Zero Length Packet? */</span>
<span class="gi">+		if ((ep-&gt;xfer_len - ep-&gt;xfer_count) == 0) {</span>
<span class="gi">+			deptsiz.b.xfersize = 0;</span>
<span class="gi">+			deptsiz.b.pktcnt = 1;</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			/* Program the transfer size and packet count</span>
<span class="gi">+			 *	as follows: xfersize = N * maxpacket +</span>
<span class="gi">+			 *	short_packet pktcnt = N + (short_packet</span>
<span class="gi">+			 *	exist ? 1 : 0)	</span>
<span class="gi">+			 */</span>
<span class="gi">+			deptsiz.b.xfersize = ep-&gt;xfer_len - ep-&gt;xfer_count;</span>
<span class="gi">+			deptsiz.b.pktcnt =</span>
<span class="gi">+				(ep-&gt;xfer_len - ep-&gt;xfer_count - 1 + ep-&gt;maxpacket) / </span>
<span class="gi">+				ep-&gt;maxpacket;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+		/* Write the DMA register */</span>
<span class="gi">+		if (core_if-&gt;dma_enable) {</span>
<span class="gi">+			if (/*(core_if-&gt;dma_enable)&amp;&amp;*/(ep-&gt;dma_addr==DMA_ADDR_INVALID)) {</span>
<span class="gi">+                                ep-&gt;dma_addr=dma_map_single(NULL,(void *)(ep-&gt;xfer_buff),(ep-&gt;xfer_len),DMA_TO_DEVICE);</span>
<span class="gi">+			}</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, &quot;ep%d dma_addr=%.8x\n&quot;, ep-&gt;num, ep-&gt;dma_addr);</span>
<span class="gi">+</span>
<span class="gi">+			if (core_if-&gt;dma_desc_enable == 0) {</span>
<span class="gi">+				dwc_write_reg32(&amp;in_regs-&gt;dieptsiz, deptsiz.d32);				</span>
<span class="gi">+</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(ep-&gt;dma_addr);</span>
<span class="gi">+				dwc_write_reg32 (&amp;(in_regs-&gt;diepdma), </span>
<span class="gi">+						 (uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+			else {</span>
<span class="gi">+				init_dma_desc_chain(core_if, ep);</span>
<span class="gi">+				/** DIEPDMAn Register write */</span>
<span class="gi">+</span>
<span class="gi">+					VERIFY_PCD_DMA_ADDR(ep-&gt;dma_desc_addr);</span>
<span class="gi">+					dwc_write_reg32(&amp;in_regs-&gt;diepdma, ep-&gt;dma_desc_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+		} </span>
<span class="gi">+		else </span>
<span class="gi">+		{</span>
<span class="gi">+			dwc_write_reg32(&amp;in_regs-&gt;dieptsiz, deptsiz.d32);</span>
<span class="gi">+			if(ep-&gt;type != DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+				/** </span>
<span class="gi">+				 * Enable the Non-Periodic Tx FIFO empty interrupt,</span>
<span class="gi">+				 * or the Tx FIFO epmty interrupt in dedicated Tx FIFO mode,</span>
<span class="gi">+				 * the data will be written into the fifo by the ISR.</span>
<span class="gi">+				 */ </span>
<span class="gi">+				if(core_if-&gt;en_multiple_tx_fifo == 0) {</span>
<span class="gi">+					intr_mask.b.nptxfempty = 1;</span>
<span class="gi">+					dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk,</span>
<span class="gi">+						intr_mask.d32, intr_mask.d32);</span>
<span class="gi">+				}</span>
<span class="gi">+				else {						</span>
<span class="gi">+					/* Enable the Tx FIFO Empty Interrupt for this EP */</span>
<span class="gi">+					if(ep-&gt;xfer_len &gt; 0) {</span>
<span class="gi">+						uint32_t fifoemptymsk = 0;</span>
<span class="gi">+						fifoemptymsk = 1 &lt;&lt; ep-&gt;num;</span>
<span class="gi">+						dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dtknqr4_fifoemptymsk,</span>
<span class="gi">+						0, fifoemptymsk);</span>
<span class="gi">+						</span>
<span class="gi">+					}</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+				</span>
<span class="gi">+		/* EP enable, IN data in FIFO */</span>
<span class="gi">+		depctl.b.cnak = 1;</span>
<span class="gi">+		depctl.b.epena = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;in_regs-&gt;diepctl, depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32 (&amp;core_if-&gt;dev_if-&gt;in_ep_regs[0]-&gt;diepctl);</span>
<span class="gi">+		depctl.b.nextep = ep-&gt;num;</span>
<span class="gi">+		dwc_write_reg32 (&amp;core_if-&gt;dev_if-&gt;in_ep_regs[0]-&gt;diepctl, depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;DIEPCTL(%.8x)=%08x DIEPTSIZ=%08x, DIEPINT=%.8x, DIEPDMA=%.8x, DTXFSTS=%.8x\n&quot;, </span>
<span class="gi">+			(u32)&amp;in_regs-&gt;diepctl,</span>
<span class="gi">+			dwc_read_reg32(&amp;in_regs-&gt;diepctl),</span>
<span class="gi">+			dwc_read_reg32(&amp;in_regs-&gt;dieptsiz),</span>
<span class="gi">+			dwc_read_reg32(&amp;in_regs-&gt;diepint),</span>
<span class="gi">+			dwc_read_reg32(&amp;in_regs-&gt;diepdma),</span>
<span class="gi">+			dwc_read_reg32(&amp;in_regs-&gt;dtxfsts));</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;DAINTMSK=%08x GINTMSK=%08x\n&quot;, </span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daintmsk),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk));		  </span>
<span class="gi">+</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		/* OUT endpoint */</span>
<span class="gi">+		dwc_otg_dev_out_ep_regs_t *out_regs = </span>
<span class="gi">+		core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num];</span>
<span class="gi">+</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(&amp;(out_regs-&gt;doepctl));</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;(out_regs-&gt;doeptsiz));</span>
<span class="gi">+</span>
<span class="gi">+		ep-&gt;xfer_len += (ep-&gt;maxxfer &lt; (ep-&gt;total_len - ep-&gt;xfer_len)) ? </span>
<span class="gi">+				ep-&gt;maxxfer : (ep-&gt;total_len - ep-&gt;xfer_len);</span>
<span class="gi">+</span>
<span class="gi">+		/* Program the transfer size and packet count as follows:</span>
<span class="gi">+		 * </span>
<span class="gi">+		 *	pktcnt = N										   </span>
<span class="gi">+		 *	xfersize = N * maxpacket</span>
<span class="gi">+		 */</span>
<span class="gi">+		if ((ep-&gt;xfer_len - ep-&gt;xfer_count) == 0) {</span>
<span class="gi">+			/* Zero Length Packet */</span>
<span class="gi">+			deptsiz.b.xfersize = ep-&gt;maxpacket;</span>
<span class="gi">+			deptsiz.b.pktcnt = 1;</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			deptsiz.b.pktcnt = </span>
<span class="gi">+					(ep-&gt;xfer_len - ep-&gt;xfer_count + (ep-&gt;maxpacket - 1)) /</span>
<span class="gi">+					ep-&gt;maxpacket;</span>
<span class="gi">+			ep-&gt;xfer_len = deptsiz.b.pktcnt * ep-&gt;maxpacket + ep-&gt;xfer_count;</span>
<span class="gi">+			deptsiz.b.xfersize = ep-&gt;xfer_len - ep-&gt;xfer_count;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;ep%d xfersize=%d pktcnt=%d\n&quot;,</span>
<span class="gi">+			ep-&gt;num,</span>
<span class="gi">+			deptsiz.b.xfersize, deptsiz.b.pktcnt);</span>
<span class="gi">+</span>
<span class="gi">+		if (core_if-&gt;dma_enable) {</span>
<span class="gi">+			if (/*(core_if-&gt;dma_enable)&amp;&amp;*/(ep-&gt;dma_addr==DMA_ADDR_INVALID)) {</span>
<span class="gi">+                                ep-&gt;dma_addr=dma_map_single(NULL,(void *)(ep-&gt;xfer_buff),(ep-&gt;xfer_len),DMA_TO_DEVICE);</span>
<span class="gi">+			}</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, &quot;ep%d dma_addr=%.8x\n&quot;,</span>
<span class="gi">+				ep-&gt;num,</span>
<span class="gi">+				ep-&gt;dma_addr);</span>
<span class="gi">+			if (!core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+				dwc_write_reg32(&amp;out_regs-&gt;doeptsiz, deptsiz.d32);</span>
<span class="gi">+	</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(ep-&gt;dma_addr);</span>
<span class="gi">+				dwc_write_reg32 (&amp;(out_regs-&gt;doepdma), </span>
<span class="gi">+					(uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+			else {</span>
<span class="gi">+				init_dma_desc_chain(core_if, ep);</span>
<span class="gi">+</span>
<span class="gi">+				/** DOEPDMAn Register write */</span>
<span class="gi">+</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(ep-&gt;dma_desc_addr);</span>
<span class="gi">+				dwc_write_reg32(&amp;out_regs-&gt;doepdma, ep-&gt;dma_desc_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			dwc_write_reg32(&amp;out_regs-&gt;doeptsiz, deptsiz.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/* EP enable */</span>
<span class="gi">+		depctl.b.cnak = 1;</span>
<span class="gi">+		depctl.b.epena = 1;</span>
<span class="gi">+</span>
<span class="gi">+		dwc_write_reg32(&amp;out_regs-&gt;doepctl, depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;DOEPCTL(%.8x)=%08x DOEPTSIZ=%08x, DOEPINT=%.8x, DOEPDMA=%.8x\n&quot;, </span>
<span class="gi">+			(u32)&amp;out_regs-&gt;doepctl,</span>
<span class="gi">+			dwc_read_reg32(&amp;out_regs-&gt;doepctl),</span>
<span class="gi">+			dwc_read_reg32(&amp;out_regs-&gt;doeptsiz),</span>
<span class="gi">+			dwc_read_reg32(&amp;out_regs-&gt;doepint),</span>
<span class="gi">+			dwc_read_reg32(&amp;out_regs-&gt;doepdma));</span>
<span class="gi">+			</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;DAINTMSK=%08x GINTMSK=%08x\n&quot;, </span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daintmsk),</span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk));		  </span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function setup a zero length transfer in Buffer DMA and</span>
<span class="gi">+ * Slave modes for usb requests with zero field set</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to start the transfer on.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_ep_start_zl_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+</span>
<span class="gi">+ 	depctl_data_t depctl;</span>
<span class="gi">+	deptsiz_data_t deptsiz;</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL((DBG_PCDV | DBG_CILV), &quot;%s()\n&quot;, __func__);</span>
<span class="gi">+		</span>
<span class="gi">+	/* IN endpoint */</span>
<span class="gi">+	if (ep-&gt;is_in == 1) {</span>
<span class="gi">+		dwc_otg_dev_in_ep_regs_t *in_regs = </span>
<span class="gi">+			core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num];</span>
<span class="gi">+</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(&amp;(in_regs-&gt;diepctl));</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;(in_regs-&gt;dieptsiz));</span>
<span class="gi">+</span>
<span class="gi">+		deptsiz.b.xfersize = 0;</span>
<span class="gi">+		deptsiz.b.pktcnt = 1;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+		/* Write the DMA register */</span>
<span class="gi">+		if (core_if-&gt;dma_enable) {</span>
<span class="gi">+			if (/*(core_if-&gt;dma_enable)&amp;&amp;*/(ep-&gt;dma_addr==DMA_ADDR_INVALID)) {</span>
<span class="gi">+                                ep-&gt;dma_addr=dma_map_single(NULL,(void *)(ep-&gt;xfer_buff),(ep-&gt;xfer_len),DMA_TO_DEVICE);</span>
<span class="gi">+			}</span>
<span class="gi">+			if (core_if-&gt;dma_desc_enable == 0) {</span>
<span class="gi">+				dwc_write_reg32(&amp;in_regs-&gt;dieptsiz, deptsiz.d32);</span>
<span class="gi">+</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(ep-&gt;dma_addr);</span>
<span class="gi">+				dwc_write_reg32 (&amp;(in_regs-&gt;diepdma), </span>
<span class="gi">+						 (uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			dwc_write_reg32(&amp;in_regs-&gt;dieptsiz, deptsiz.d32);</span>
<span class="gi">+			/** </span>
<span class="gi">+			 * Enable the Non-Periodic Tx FIFO empty interrupt,</span>
<span class="gi">+			 * or the Tx FIFO epmty interrupt in dedicated Tx FIFO mode,</span>
<span class="gi">+			 * the data will be written into the fifo by the ISR.</span>
<span class="gi">+			 */ </span>
<span class="gi">+			if(core_if-&gt;en_multiple_tx_fifo == 0) {</span>
<span class="gi">+				intr_mask.b.nptxfempty = 1;</span>
<span class="gi">+				dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk,</span>
<span class="gi">+					intr_mask.d32, intr_mask.d32);</span>
<span class="gi">+			}</span>
<span class="gi">+			else {						</span>
<span class="gi">+				/* Enable the Tx FIFO Empty Interrupt for this EP */</span>
<span class="gi">+				if(ep-&gt;xfer_len &gt; 0) {</span>
<span class="gi">+					uint32_t fifoemptymsk = 0;</span>
<span class="gi">+					fifoemptymsk = 1 &lt;&lt; ep-&gt;num;</span>
<span class="gi">+					dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dtknqr4_fifoemptymsk,</span>
<span class="gi">+					0, fifoemptymsk);</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+				</span>
<span class="gi">+		/* EP enable, IN data in FIFO */</span>
<span class="gi">+		depctl.b.cnak = 1;</span>
<span class="gi">+		depctl.b.epena = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;in_regs-&gt;diepctl, depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32 (&amp;core_if-&gt;dev_if-&gt;in_ep_regs[0]-&gt;diepctl);</span>
<span class="gi">+		depctl.b.nextep = ep-&gt;num;</span>
<span class="gi">+		dwc_write_reg32 (&amp;core_if-&gt;dev_if-&gt;in_ep_regs[0]-&gt;diepctl, depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		/* OUT endpoint */</span>
<span class="gi">+		dwc_otg_dev_out_ep_regs_t *out_regs = </span>
<span class="gi">+		core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num];</span>
<span class="gi">+</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(&amp;(out_regs-&gt;doepctl));</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;(out_regs-&gt;doeptsiz));</span>
<span class="gi">+</span>
<span class="gi">+		/* Zero Length Packet */</span>
<span class="gi">+		deptsiz.b.xfersize = ep-&gt;maxpacket;</span>
<span class="gi">+		deptsiz.b.pktcnt = 1;</span>
<span class="gi">+</span>
<span class="gi">+		if (core_if-&gt;dma_enable) {</span>
<span class="gi">+			if (/*(core_if-&gt;dma_enable)&amp;&amp;*/(ep-&gt;dma_addr==DMA_ADDR_INVALID)) {</span>
<span class="gi">+                                ep-&gt;dma_addr=dma_map_single(NULL,(void *)(ep-&gt;xfer_buff),(ep-&gt;xfer_len),DMA_TO_DEVICE);</span>
<span class="gi">+			}</span>
<span class="gi">+			if (!core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+				dwc_write_reg32(&amp;out_regs-&gt;doeptsiz, deptsiz.d32);</span>
<span class="gi">+		</span>
<span class="gi">+</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(ep-&gt;dma_addr);</span>
<span class="gi">+				dwc_write_reg32 (&amp;(out_regs-&gt;doepdma), </span>
<span class="gi">+					(uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			dwc_write_reg32(&amp;out_regs-&gt;doeptsiz, deptsiz.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/* EP enable */</span>
<span class="gi">+		depctl.b.cnak = 1;</span>
<span class="gi">+		depctl.b.epena = 1;</span>
<span class="gi">+</span>
<span class="gi">+		dwc_write_reg32(&amp;out_regs-&gt;doepctl, depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function does the setup for a data transfer for EP0 and starts</span>
<span class="gi">+ * the transfer.  For an IN transfer, the packets will be loaded into</span>
<span class="gi">+ * the appropriate Tx FIFO in the ISR. For OUT transfers, the packets are</span>
<span class="gi">+ * unloaded from the Rx FIFO in the ISR.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP0 data.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_ep0_start_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	depctl_data_t depctl;</span>
<span class="gi">+	deptsiz0_data_t deptsiz;</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	dwc_otg_dma_desc_t* dma_desc;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;ep%d-%s xfer_len=%d xfer_cnt=%d &quot;</span>
<span class="gi">+	&quot;xfer_buff=%p start_xfer_buff=%p, dma_addr=%.8x\n&quot;,</span>
<span class="gi">+	ep-&gt;num, (ep-&gt;is_in?&quot;IN&quot;:&quot;OUT&quot;), ep-&gt;xfer_len, </span>
<span class="gi">+	ep-&gt;xfer_count, ep-&gt;xfer_buff, ep-&gt;start_xfer_buff,ep-&gt;dma_addr);</span>
<span class="gi">+	</span>
<span class="gi">+	ep-&gt;total_len = ep-&gt;xfer_len;</span>
<span class="gi">+</span>
<span class="gi">+	/* IN endpoint */</span>
<span class="gi">+	if (ep-&gt;is_in == 1) {</span>
<span class="gi">+		dwc_otg_dev_in_ep_regs_t *in_regs = </span>
<span class="gi">+		core_if-&gt;dev_if-&gt;in_ep_regs[0];</span>
<span class="gi">+ </span>
<span class="gi">+		gnptxsts_data_t gtxstatus;</span>
<span class="gi">+					</span>
<span class="gi">+		gtxstatus.d32 = </span>
<span class="gi">+			dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gnptxsts);</span>
<span class="gi">+</span>
<span class="gi">+		if(core_if-&gt;en_multiple_tx_fifo == 0 &amp;&amp; gtxstatus.b.nptxqspcavail == 0) {</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+			deptsiz.d32 = dwc_read_reg32(&amp;in_regs-&gt;dieptsiz);</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCD,&quot;DIEPCTL0=%0x\n&quot;, </span>
<span class="gi">+				dwc_read_reg32(&amp;in_regs-&gt;diepctl));</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCD, &quot;DIEPTSIZ0=%0x (sz=%d, pcnt=%d)\n&quot;, </span>
<span class="gi">+				deptsiz.d32, </span>
<span class="gi">+				deptsiz.b.xfersize, deptsiz.b.pktcnt);</span>
<span class="gi">+			DWC_PRINT(&quot;TX Queue or FIFO Full (0x%0x)\n&quot;,</span>
<span class="gi">+				  gtxstatus.d32);</span>
<span class="gi">+#endif</span>
<span class="gi">+			return;</span>
<span class="gi">+		}</span>
<span class="gi">+	</span>
<span class="gi">+	</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(&amp;in_regs-&gt;diepctl);</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;in_regs-&gt;dieptsiz);</span>
<span class="gi">+	</span>
<span class="gi">+		/* Zero Length Packet? */</span>
<span class="gi">+		if (ep-&gt;xfer_len == 0) {</span>
<span class="gi">+			deptsiz.b.xfersize = 0;</span>
<span class="gi">+			deptsiz.b.pktcnt = 1;</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			/* Program the transfer size and packet count</span>
<span class="gi">+			 *	as follows: xfersize = N * maxpacket +</span>
<span class="gi">+			 *	short_packet pktcnt = N + (short_packet</span>
<span class="gi">+			 *	exist ? 1 : 0)	</span>
<span class="gi">+			 */</span>
<span class="gi">+			if (ep-&gt;xfer_len &gt; ep-&gt;maxpacket) {</span>
<span class="gi">+				ep-&gt;xfer_len = ep-&gt;maxpacket;</span>
<span class="gi">+				deptsiz.b.xfersize = ep-&gt;maxpacket;</span>
<span class="gi">+			}</span>
<span class="gi">+			else {</span>
<span class="gi">+				deptsiz.b.xfersize = ep-&gt;xfer_len;</span>
<span class="gi">+			}</span>
<span class="gi">+			deptsiz.b.pktcnt = 1;</span>
<span class="gi">+	</span>
<span class="gi">+		}</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;IN len=%d  xfersize=%d pktcnt=%d [%08x]\n&quot;,</span>
<span class="gi">+			ep-&gt;xfer_len, </span>
<span class="gi">+			deptsiz.b.xfersize, deptsiz.b.pktcnt, deptsiz.d32);</span>
<span class="gi">+		/* Write the DMA register */</span>
<span class="gi">+		if (core_if-&gt;dma_enable) {	</span>
<span class="gi">+			if (/*(core_if-&gt;dma_enable)&amp;&amp;*/(ep-&gt;dma_addr==DMA_ADDR_INVALID)) {</span>
<span class="gi">+                                ep-&gt;dma_addr=dma_map_single(NULL,(void *)(ep-&gt;xfer_buff),(ep-&gt;xfer_len),DMA_TO_DEVICE);</span>
<span class="gi">+			}</span>
<span class="gi">+			if(core_if-&gt;dma_desc_enable == 0) {</span>
<span class="gi">+				dwc_write_reg32(&amp;in_regs-&gt;dieptsiz, deptsiz.d32);</span>
<span class="gi">+		</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(ep-&gt;dma_addr);</span>
<span class="gi">+				dwc_write_reg32 (&amp;(in_regs-&gt;diepdma), </span>
<span class="gi">+				(uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+			else {	</span>
<span class="gi">+				dma_desc = core_if-&gt;dev_if-&gt;in_desc_addr;</span>
<span class="gi">+	</span>
<span class="gi">+				/** DMA Descriptor Setup */</span>
<span class="gi">+				dma_desc-&gt;status.b.bs = BS_HOST_BUSY; </span>
<span class="gi">+				dma_desc-&gt;status.b.l = 1;</span>
<span class="gi">+				dma_desc-&gt;status.b.ioc = 1;</span>
<span class="gi">+				dma_desc-&gt;status.b.sp = (ep-&gt;xfer_len == ep-&gt;maxpacket) ? 0 : 1;</span>
<span class="gi">+				dma_desc-&gt;status.b.bytes = ep-&gt;xfer_len;</span>
<span class="gi">+				dma_desc-&gt;buf = ep-&gt;dma_addr;</span>
<span class="gi">+				dma_desc-&gt;status.b.bs = BS_HOST_READY; </span>
<span class="gi">+				</span>
<span class="gi">+				/** DIEPDMA0 Register write */</span>
<span class="gi">+</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(core_if-&gt;dev_if-&gt;dma_in_desc_addr);</span>
<span class="gi">+					dwc_write_reg32(&amp;in_regs-&gt;diepdma, core_if-&gt;dev_if-&gt;dma_in_desc_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			dwc_write_reg32(&amp;in_regs-&gt;dieptsiz, deptsiz.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+	</span>
<span class="gi">+		/* EP enable, IN data in FIFO */</span>
<span class="gi">+		depctl.b.cnak = 1;</span>
<span class="gi">+		depctl.b.epena = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;in_regs-&gt;diepctl, depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/** </span>
<span class="gi">+		 * Enable the Non-Periodic Tx FIFO empty interrupt, the</span>
<span class="gi">+		 * data will be written into the fifo by the ISR.</span>
<span class="gi">+		 */ </span>
<span class="gi">+		if (!core_if-&gt;dma_enable) {</span>
<span class="gi">+			if(core_if-&gt;en_multiple_tx_fifo == 0) {</span>
<span class="gi">+				intr_mask.b.nptxfempty = 1;</span>
<span class="gi">+				dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk,</span>
<span class="gi">+					intr_mask.d32, intr_mask.d32);</span>
<span class="gi">+			}</span>
<span class="gi">+			else {						</span>
<span class="gi">+				/* Enable the Tx FIFO Empty Interrupt for this EP */</span>
<span class="gi">+				if(ep-&gt;xfer_len &gt; 0) {</span>
<span class="gi">+					uint32_t fifoemptymsk = 0;</span>
<span class="gi">+					fifoemptymsk |= 1 &lt;&lt; ep-&gt;num;</span>
<span class="gi">+					dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dtknqr4_fifoemptymsk,</span>
<span class="gi">+						0, fifoemptymsk);</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	else { </span>
<span class="gi">+		/* OUT endpoint */</span>
<span class="gi">+		dwc_otg_dev_out_ep_regs_t *out_regs = </span>
<span class="gi">+			core_if-&gt;dev_if-&gt;out_ep_regs[0];</span>
<span class="gi">+</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(&amp;out_regs-&gt;doepctl);</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;out_regs-&gt;doeptsiz);</span>
<span class="gi">+</span>
<span class="gi">+		/* Program the transfer size and packet count as follows:</span>
<span class="gi">+		 *	xfersize = N * (maxpacket + 4 - (maxpacket % 4))</span>
<span class="gi">+		 *	pktcnt = N											*/</span>
<span class="gi">+		/* Zero Length Packet */</span>
<span class="gi">+		deptsiz.b.xfersize = ep-&gt;maxpacket;</span>
<span class="gi">+		deptsiz.b.pktcnt = 1;</span>
<span class="gi">+</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;len=%d  xfersize=%d pktcnt=%d\n&quot;,</span>
<span class="gi">+			ep-&gt;xfer_len, </span>
<span class="gi">+			deptsiz.b.xfersize, deptsiz.b.pktcnt);</span>
<span class="gi">+</span>
<span class="gi">+		if (core_if-&gt;dma_enable) {</span>
<span class="gi">+			if (/*(core_if-&gt;dma_enable)&amp;&amp;*/(ep-&gt;dma_addr==DMA_ADDR_INVALID)) {</span>
<span class="gi">+                                ep-&gt;dma_addr=dma_map_single(NULL,(void *)(ep-&gt;xfer_buff),(ep-&gt;xfer_len),DMA_TO_DEVICE);</span>
<span class="gi">+			}</span>
<span class="gi">+			if(!core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+				dwc_write_reg32(&amp;out_regs-&gt;doeptsiz, deptsiz.d32);</span>
<span class="gi">+		</span>
<span class="gi">+</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(ep-&gt;dma_addr);</span>
<span class="gi">+				dwc_write_reg32 (&amp;(out_regs-&gt;doepdma), </span>
<span class="gi">+				 (uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+			}	</span>
<span class="gi">+			else {</span>
<span class="gi">+				dma_desc = core_if-&gt;dev_if-&gt;out_desc_addr;</span>
<span class="gi">+	</span>
<span class="gi">+				/** DMA Descriptor Setup */</span>
<span class="gi">+				dma_desc-&gt;status.b.bs = BS_HOST_BUSY; </span>
<span class="gi">+				dma_desc-&gt;status.b.l = 1;</span>
<span class="gi">+				dma_desc-&gt;status.b.ioc = 1;</span>
<span class="gi">+				dma_desc-&gt;status.b.bytes = ep-&gt;maxpacket;</span>
<span class="gi">+				dma_desc-&gt;buf = ep-&gt;dma_addr;</span>
<span class="gi">+				dma_desc-&gt;status.b.bs = BS_HOST_READY; </span>
<span class="gi">+				</span>
<span class="gi">+			/** DOEPDMA0 Register write */</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(core_if-&gt;dev_if-&gt;dma_out_desc_addr);</span>
<span class="gi">+				dwc_write_reg32(&amp;out_regs-&gt;doepdma, core_if-&gt;dev_if-&gt;dma_out_desc_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			dwc_write_reg32(&amp;out_regs-&gt;doeptsiz, deptsiz.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/* EP enable */</span>
<span class="gi">+		depctl.b.cnak = 1;</span>
<span class="gi">+		depctl.b.epena = 1;</span>
<span class="gi">+		dwc_write_reg32 (&amp;(out_regs-&gt;doepctl), depctl.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function continues control IN transfers started by</span>
<span class="gi">+ * dwc_otg_ep0_start_transfer, when the transfer does not fit in a</span>
<span class="gi">+ * single packet.  NOTE: The DIEPCTL0/DOEPCTL0 registers only have one</span>
<span class="gi">+ * bit for the packet count.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP0 data.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_ep0_continue_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	depctl_data_t depctl;</span>
<span class="gi">+	deptsiz0_data_t deptsiz;</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	dwc_otg_dma_desc_t* dma_desc;</span>
<span class="gi">+	</span>
<span class="gi">+	if (ep-&gt;is_in == 1) {</span>
<span class="gi">+		dwc_otg_dev_in_ep_regs_t *in_regs = </span>
<span class="gi">+			core_if-&gt;dev_if-&gt;in_ep_regs[0];</span>
<span class="gi">+		gnptxsts_data_t tx_status = { .d32 = 0 };</span>
<span class="gi">+</span>
<span class="gi">+		tx_status.d32 = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gnptxsts);</span>
<span class="gi">+		/** @todo Should there be check for room in the Tx</span>
<span class="gi">+		 * Status Queue.  If not remove the code above this comment. */</span>
<span class="gi">+	</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(&amp;in_regs-&gt;diepctl);</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;in_regs-&gt;dieptsiz);</span>
<span class="gi">+</span>
<span class="gi">+		/* Program the transfer size and packet count</span>
<span class="gi">+		 *	as follows: xfersize = N * maxpacket +</span>
<span class="gi">+		 *	short_packet pktcnt = N + (short_packet</span>
<span class="gi">+		 *	exist ? 1 : 0)	</span>
<span class="gi">+		 */</span>
<span class="gi">+		</span>
<span class="gi">+		</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable == 0) {	</span>
<span class="gi">+			deptsiz.b.xfersize = (ep-&gt;total_len - ep-&gt;xfer_count) &gt; ep-&gt;maxpacket ? ep-&gt;maxpacket : </span>
<span class="gi">+					(ep-&gt;total_len - ep-&gt;xfer_count);</span>
<span class="gi">+			deptsiz.b.pktcnt = 1;</span>
<span class="gi">+			if(core_if-&gt;dma_enable == 0) {</span>
<span class="gi">+				ep-&gt;xfer_len += deptsiz.b.xfersize;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				ep-&gt;xfer_len = deptsiz.b.xfersize;</span>
<span class="gi">+			}</span>
<span class="gi">+			dwc_write_reg32(&amp;in_regs-&gt;dieptsiz, deptsiz.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			ep-&gt;xfer_len = (ep-&gt;total_len - ep-&gt;xfer_count) &gt; ep-&gt;maxpacket ? ep-&gt;maxpacket : </span>
<span class="gi">+				(ep-&gt;total_len - ep-&gt;xfer_count);</span>
<span class="gi">+</span>
<span class="gi">+			dma_desc = core_if-&gt;dev_if-&gt;in_desc_addr;</span>
<span class="gi">+</span>
<span class="gi">+			/** DMA Descriptor Setup */</span>
<span class="gi">+			dma_desc-&gt;status.b.bs = BS_HOST_BUSY; </span>
<span class="gi">+			dma_desc-&gt;status.b.l = 1;</span>
<span class="gi">+			dma_desc-&gt;status.b.ioc = 1;</span>
<span class="gi">+			dma_desc-&gt;status.b.sp = (ep-&gt;xfer_len == ep-&gt;maxpacket) ? 0 : 1;</span>
<span class="gi">+			dma_desc-&gt;status.b.bytes = ep-&gt;xfer_len;</span>
<span class="gi">+			dma_desc-&gt;buf = ep-&gt;dma_addr;</span>
<span class="gi">+			dma_desc-&gt;status.b.bs = BS_HOST_READY; </span>
<span class="gi">+				</span>
<span class="gi">+</span>
<span class="gi">+			/** DIEPDMA0 Register write */</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(core_if-&gt;dev_if-&gt;dma_in_desc_addr);</span>
<span class="gi">+				dwc_write_reg32(&amp;in_regs-&gt;diepdma, core_if-&gt;dev_if-&gt;dma_in_desc_addr);</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;IN len=%d  xfersize=%d pktcnt=%d [%08x]\n&quot;,</span>
<span class="gi">+			ep-&gt;xfer_len, </span>
<span class="gi">+			deptsiz.b.xfersize, deptsiz.b.pktcnt, deptsiz.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Write the DMA register */</span>
<span class="gi">+		if (core_if-&gt;hwcfg2.b.architecture == DWC_INT_DMA_ARCH) {</span>
<span class="gi">+			if(core_if-&gt;dma_desc_enable == 0){</span>
<span class="gi">+</span>
<span class="gi">+					VERIFY_PCD_DMA_ADDR(ep-&gt;dma_addr);</span>
<span class="gi">+					dwc_write_reg32 (&amp;(in_regs-&gt;diepdma), (uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/* EP enable, IN data in FIFO */</span>
<span class="gi">+		depctl.b.cnak = 1;</span>
<span class="gi">+		depctl.b.epena = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;in_regs-&gt;diepctl, depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/** </span>
<span class="gi">+		 * Enable the Non-Periodic Tx FIFO empty interrupt, the</span>
<span class="gi">+		 * data will be written into the fifo by the ISR.</span>
<span class="gi">+		 */ </span>
<span class="gi">+		if (!core_if-&gt;dma_enable) {</span>
<span class="gi">+			if(core_if-&gt;en_multiple_tx_fifo == 0) {</span>
<span class="gi">+				/* First clear it from GINTSTS */</span>
<span class="gi">+				intr_mask.b.nptxfempty = 1;</span>
<span class="gi">+				dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk,</span>
<span class="gi">+					intr_mask.d32, intr_mask.d32);</span>
<span class="gi">+</span>
<span class="gi">+			}</span>
<span class="gi">+			else {						</span>
<span class="gi">+				/* Enable the Tx FIFO Empty Interrupt for this EP */</span>
<span class="gi">+				if(ep-&gt;xfer_len &gt; 0) {</span>
<span class="gi">+					uint32_t fifoemptymsk = 0;</span>
<span class="gi">+					fifoemptymsk |= 1 &lt;&lt; ep-&gt;num;</span>
<span class="gi">+					dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dtknqr4_fifoemptymsk,</span>
<span class="gi">+						0, fifoemptymsk);</span>
<span class="gi">+				}</span>
<span class="gi">+			}			</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		dwc_otg_dev_out_ep_regs_t *out_regs = </span>
<span class="gi">+			core_if-&gt;dev_if-&gt;out_ep_regs[0];</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(&amp;out_regs-&gt;doepctl);</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;out_regs-&gt;doeptsiz);</span>
<span class="gi">+</span>
<span class="gi">+		/* Program the transfer size and packet count</span>
<span class="gi">+		 *	as follows: xfersize = N * maxpacket +</span>
<span class="gi">+		 *	short_packet pktcnt = N + (short_packet</span>
<span class="gi">+		 *	exist ? 1 : 0)	</span>
<span class="gi">+		 */</span>
<span class="gi">+		deptsiz.b.xfersize = ep-&gt;maxpacket;</span>
<span class="gi">+		deptsiz.b.pktcnt = 1;</span>
<span class="gi">+		</span>
<span class="gi">+		</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable == 0) {	</span>
<span class="gi">+			dwc_write_reg32(&amp;out_regs-&gt;doeptsiz, deptsiz.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			dma_desc = core_if-&gt;dev_if-&gt;out_desc_addr;</span>
<span class="gi">+</span>
<span class="gi">+			/** DMA Descriptor Setup */</span>
<span class="gi">+			dma_desc-&gt;status.b.bs = BS_HOST_BUSY; </span>
<span class="gi">+			dma_desc-&gt;status.b.l = 1;</span>
<span class="gi">+			dma_desc-&gt;status.b.ioc = 1;</span>
<span class="gi">+			dma_desc-&gt;status.b.bytes = ep-&gt;maxpacket;</span>
<span class="gi">+			dma_desc-&gt;buf = ep-&gt;dma_addr;</span>
<span class="gi">+			dma_desc-&gt;status.b.bs = BS_HOST_READY; </span>
<span class="gi">+			</span>
<span class="gi">+			/** DOEPDMA0 Register write */</span>
<span class="gi">+			VERIFY_PCD_DMA_ADDR(core_if-&gt;dev_if-&gt;dma_out_desc_addr);</span>
<span class="gi">+			dwc_write_reg32(&amp;out_regs-&gt;doepdma, core_if-&gt;dev_if-&gt;dma_out_desc_addr);</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;IN len=%d  xfersize=%d pktcnt=%d [%08x]\n&quot;,</span>
<span class="gi">+			ep-&gt;xfer_len, </span>
<span class="gi">+			deptsiz.b.xfersize, deptsiz.b.pktcnt, deptsiz.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Write the DMA register */</span>
<span class="gi">+		if (core_if-&gt;hwcfg2.b.architecture == DWC_INT_DMA_ARCH) {</span>
<span class="gi">+			if(core_if-&gt;dma_desc_enable == 0){</span>
<span class="gi">+</span>
<span class="gi">+				VERIFY_PCD_DMA_ADDR(ep-&gt;dma_addr);</span>
<span class="gi">+				dwc_write_reg32 (&amp;(out_regs-&gt;doepdma), (uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/* EP enable, IN data in FIFO */</span>
<span class="gi">+		depctl.b.cnak = 1;</span>
<span class="gi">+		depctl.b.epena = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;out_regs-&gt;doepctl, depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+void dump_msg(const u8 *buf, unsigned int length)</span>
<span class="gi">+{</span>
<span class="gi">+	unsigned int	start, num, i;</span>
<span class="gi">+	char		line[52], *p;</span>
<span class="gi">+</span>
<span class="gi">+	if (length &gt;= 512)</span>
<span class="gi">+		return;</span>
<span class="gi">+	start = 0;</span>
<span class="gi">+	while (length &gt; 0) {</span>
<span class="gi">+		num = min(length, 16u);</span>
<span class="gi">+		p = line;</span>
<span class="gi">+		for (i = 0; i &lt; num; ++i) </span>
<span class="gi">+		{</span>
<span class="gi">+			if (i == 8)</span>
<span class="gi">+				*p++ = &#39; &#39;;</span>
<span class="gi">+			sprintf(p, &quot; %02x&quot;, buf[i]);</span>
<span class="gi">+			p += 3;</span>
<span class="gi">+		}</span>
<span class="gi">+		*p = 0;</span>
<span class="gi">+		DWC_PRINT(&quot;%6x: %s\n&quot;, start, line);</span>
<span class="gi">+		buf += num;</span>
<span class="gi">+		start += num;</span>
<span class="gi">+		length -= num;</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+#else</span>
<span class="gi">+static inline void dump_msg(const u8 *buf, unsigned int length)</span>
<span class="gi">+{</span>
<span class="gi">+}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function writes a packet into the Tx FIFO associated with the</span>
<span class="gi">+ * EP.	For non-periodic EPs the non-periodic Tx FIFO is written.  For</span>
<span class="gi">+ * periodic EPs the periodic Tx FIFO associated with the EP is written</span>
<span class="gi">+ * with all packets for the next micro-frame.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to write packet for.</span>
<span class="gi">+ * @param dma Indicates if DMA is being used.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_ep_write_packet(dwc_otg_core_if_t *core_if, dwc_ep_t *ep, int dma)</span>
<span class="gi">+{</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * The buffer is padded to DWORD on a per packet basis in</span>
<span class="gi">+	 * slave/dma mode if the MPS is not DWORD aligned.	The last</span>
<span class="gi">+	 * packet, if short, is also padded to a multiple of DWORD.</span>
<span class="gi">+	 *</span>
<span class="gi">+	 * ep-&gt;xfer_buff always starts DWORD aligned in memory and is a </span>
<span class="gi">+	 * multiple of DWORD in length</span>
<span class="gi">+	 *</span>
<span class="gi">+	 * ep-&gt;xfer_len can be any number of bytes</span>
<span class="gi">+	 *</span>
<span class="gi">+	 * ep-&gt;xfer_count is a multiple of ep-&gt;maxpacket until the last </span>
<span class="gi">+	 *	packet</span>
<span class="gi">+	 *</span>
<span class="gi">+	 * FIFO access is DWORD */</span>
<span class="gi">+</span>
<span class="gi">+	uint32_t i;</span>
<span class="gi">+	uint32_t byte_count;</span>
<span class="gi">+	uint32_t dword_count;</span>
<span class="gi">+	uint32_t *fifo;</span>
<span class="gi">+	uint32_t *data_buff = (uint32_t *)ep-&gt;xfer_buff;</span>
<span class="gi">+		</span>
<span class="gi">+	DWC_DEBUGPL((DBG_PCDV | DBG_CILV), &quot;%s(%p,%p)\n&quot;, __func__, core_if, ep);</span>
<span class="gi">+	if (ep-&gt;xfer_count &gt;= ep-&gt;xfer_len) {</span>
<span class="gi">+			DWC_WARN(&quot;%s() No data for EP%d!!!\n&quot;, __func__, ep-&gt;num);</span>
<span class="gi">+			return;				   </span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Find the byte length of the packet either short packet or MPS */</span>
<span class="gi">+	if ((ep-&gt;xfer_len - ep-&gt;xfer_count) &lt; ep-&gt;maxpacket) {</span>
<span class="gi">+		byte_count = ep-&gt;xfer_len - ep-&gt;xfer_count;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		byte_count = ep-&gt;maxpacket;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Find the DWORD length, padded by extra bytes as neccessary if MPS</span>
<span class="gi">+	 * is not a multiple of DWORD */</span>
<span class="gi">+	dword_count =  (byte_count + 3) / 4;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef VERBOSE</span>
<span class="gi">+	dump_msg(ep-&gt;xfer_buff, byte_count);		 </span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	/**@todo NGS Where are the Periodic Tx FIFO addresses</span>
<span class="gi">+	 * intialized?	What should this be? */</span>
<span class="gi">+		</span>
<span class="gi">+	fifo = core_if-&gt;data_fifo[ep-&gt;num]; </span>
<span class="gi">+	</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL((DBG_PCDV|DBG_CILV), &quot;fifo=%p buff=%p *p=%08x bc=%d\n&quot;, fifo, data_buff, *data_buff, byte_count);</span>
<span class="gi">+</span>
<span class="gi">+	if (!dma) {</span>
<span class="gi">+		for (i=0; i&lt;dword_count; i++, data_buff++) {</span>
<span class="gi">+			dwc_write_reg32(fifo, *data_buff);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	ep-&gt;xfer_count += byte_count;</span>
<span class="gi">+	ep-&gt;xfer_buff += byte_count;</span>
<span class="gi">+	ep-&gt;dma_addr += byte_count;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * Set the EP STALL.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to set the stall on.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_ep_set_stall(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	depctl_data_t depctl;</span>
<span class="gi">+	volatile uint32_t *depctl_addr;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s ep%d-%s1\n&quot;, __func__, ep-&gt;num, </span>
<span class="gi">+		(ep-&gt;is_in?&quot;IN&quot;:&quot;OUT&quot;));</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;%s ep%d-%s\n&quot;, __func__, ep-&gt;num, </span>
<span class="gi">+		(ep-&gt;is_in?&quot;in&quot;:&quot;out&quot;));</span>
<span class="gi">+</span>
<span class="gi">+	if (ep-&gt;is_in == 1) {</span>
<span class="gi">+		depctl_addr = &amp;(core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepctl);</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(depctl_addr);</span>
<span class="gi">+	</span>
<span class="gi">+		/* set the disable and stall bits */</span>
<span class="gi">+#if 0</span>
<span class="gi">+//epdis is set here but not cleared at latter dwc_otg_ep_clear_stall,</span>
<span class="gi">+//which cause the testusb item 13 failed(Host:pc, device: otg device)</span>
<span class="gi">+		if (depctl.b.epena) {</span>
<span class="gi">+			depctl.b.epdis = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+#endif</span>
<span class="gi">+		depctl.b.stall = 1;</span>
<span class="gi">+		dwc_write_reg32(depctl_addr, depctl.d32);</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		depctl_addr = &amp;(core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepctl);</span>
<span class="gi">+		depctl.d32 = dwc_read_reg32(depctl_addr);</span>
<span class="gi">+</span>
<span class="gi">+		/* set the stall bit */</span>
<span class="gi">+		depctl.b.stall = 1;</span>
<span class="gi">+		dwc_write_reg32(depctl_addr, depctl.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s: DEPCTL(%.8x)=%0x\n&quot;,__func__,(u32)depctl_addr,dwc_read_reg32(depctl_addr));</span>
<span class="gi">+	</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * Clear the EP STALL.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to clear stall from.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_ep_clear_stall(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	depctl_data_t depctl;</span>
<span class="gi">+	volatile uint32_t *depctl_addr;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;%s ep%d-%s\n&quot;, __func__, ep-&gt;num, </span>
<span class="gi">+		(ep-&gt;is_in?&quot;IN&quot;:&quot;OUT&quot;));</span>
<span class="gi">+</span>
<span class="gi">+	if (ep-&gt;is_in == 1) {</span>
<span class="gi">+		depctl_addr = &amp;(core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepctl);</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		depctl_addr = &amp;(core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepctl);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	depctl.d32 = dwc_read_reg32(depctl_addr);</span>
<span class="gi">+</span>
<span class="gi">+	/* clear the stall bits */</span>
<span class="gi">+	depctl.b.stall = 0;</span>
<span class="gi">+</span>
<span class="gi">+	/* </span>
<span class="gi">+	 * USB Spec 9.4.5: For endpoints using data toggle, regardless</span>
<span class="gi">+	 * of whether an endpoint has the Halt feature set, a</span>
<span class="gi">+	 * ClearFeature(ENDPOINT_HALT) request always results in the</span>
<span class="gi">+	 * data toggle being reinitialized to DATA0.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (ep-&gt;type == DWC_OTG_EP_TYPE_INTR || </span>
<span class="gi">+		ep-&gt;type == DWC_OTG_EP_TYPE_BULK) {</span>
<span class="gi">+		depctl.b.setd0pid = 1; /* DATA0 */</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	dwc_write_reg32(depctl_addr, depctl.d32);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD,&quot;DEPCTL=%0x\n&quot;,dwc_read_reg32(depctl_addr));</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This function reads a packet from the Rx FIFO into the destination</span>
<span class="gi">+ * buffer.	To read SETUP data use dwc_otg_read_setup_packet.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param dest	  Destination buffer for the packet.</span>
<span class="gi">+ * @param bytes  Number of bytes to copy to the destination.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_read_packet(dwc_otg_core_if_t *core_if,</span>
<span class="gi">+			 uint8_t *dest, </span>
<span class="gi">+			 uint16_t bytes)</span>
<span class="gi">+{</span>
<span class="gi">+	int i;</span>
<span class="gi">+	int word_count = (bytes + 3) / 4;</span>
<span class="gi">+</span>
<span class="gi">+	volatile uint32_t *fifo = core_if-&gt;data_fifo[0];</span>
<span class="gi">+	uint32_t *data_buff = (uint32_t *)dest;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * @todo Account for the case where _dest is not dword aligned. This</span>
<span class="gi">+	 * requires reading data from the FIFO into a uint32_t temp buffer,</span>
<span class="gi">+	 * then moving it into the data buffer.</span>
<span class="gi">+	 */</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL((DBG_PCDV | DBG_CILV), &quot;%s(%p,%p,%d)\n&quot;, __func__, </span>
<span class="gi">+					core_if, dest, bytes);</span>
<span class="gi">+</span>
<span class="gi">+	for (i=0; i&lt;word_count; i++, data_buff++) </span>
<span class="gi">+	{</span>
<span class="gi">+		*data_buff = dwc_read_reg32(fifo);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This functions reads the device registers and prints them</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_dump_dev_registers(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	int i;</span>
<span class="gi">+	volatile uint32_t *addr;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;Device Global Registers\n&quot;);</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dcfg;</span>
<span class="gi">+	DWC_PRINT(&quot;DCFG          @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dctl;</span>
<span class="gi">+	DWC_PRINT(&quot;DCTL          @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dsts;</span>
<span class="gi">+	DWC_PRINT(&quot;DSTS          @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;diepmsk;</span>
<span class="gi">+	DWC_PRINT(&quot;DIEPMSK       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;doepmsk;</span>
<span class="gi">+	DWC_PRINT(&quot;DOEPMSK       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daint;</span>
<span class="gi">+	DWC_PRINT(&quot;DAINT         @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daintmsk;</span>
<span class="gi">+	DWC_PRINT(&quot;DAINTMSK      @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dtknqr1;</span>
<span class="gi">+	DWC_PRINT(&quot;DTKNQR1       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	if (core_if-&gt;hwcfg2.b.dev_token_q_depth &gt; 6) {</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dtknqr2;</span>
<span class="gi">+		DWC_PRINT(&quot;DTKNQR2       @0x%08X : 0x%08X\n&quot;,</span>
<span class="gi">+		  (uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dvbusdis;</span>
<span class="gi">+	DWC_PRINT(&quot;DVBUSID       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dvbuspulse;</span>
<span class="gi">+	DWC_PRINT(&quot;DVBUSPULSE    @0x%08X : 0x%08X\n&quot;,</span>
<span class="gi">+				  (uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+</span>
<span class="gi">+	if (core_if-&gt;hwcfg2.b.dev_token_q_depth &gt; 14) {</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dtknqr3_dthrctl;</span>
<span class="gi">+		DWC_PRINT(&quot;DTKNQR3_DTHRCTL       @0x%08X : 0x%08X\n&quot;,</span>
<span class="gi">+		  (uint32_t)addr, dwc_read_reg32(addr));</span>
<span class="gi">+	}</span>
<span class="gi">+/*</span>
<span class="gi">+	if (core_if-&gt;hwcfg2.b.dev_token_q_depth &gt; 22) {</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dtknqr4_fifoemptymsk;</span>
<span class="gi">+		DWC_PRINT(&quot;DTKNQR4	 @0x%08X : 0x%08X\n&quot;,</span>
<span class="gi">+				  (uint32_t)addr, dwc_read_reg32(addr));</span>
<span class="gi">+	}</span>
<span class="gi">+*/</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dtknqr4_fifoemptymsk;</span>
<span class="gi">+	DWC_PRINT(&quot;FIFOEMPMSK    @0x%08X : 0x%08X\n&quot;, (uint32_t)addr, dwc_read_reg32(addr));</span>
<span class="gi">+</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;deachint;</span>
<span class="gi">+	DWC_PRINT(&quot;DEACHINT      @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;deachintmsk;</span>
<span class="gi">+	DWC_PRINT(&quot;DEACHINTMSK   @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	</span>
<span class="gi">+	for (i=0; i&lt;= core_if-&gt;dev_if-&gt;num_in_eps; i++) {</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;diepeachintmsk[i];</span>
<span class="gi">+		DWC_PRINT(&quot;DIEPEACHINTMSK[%d]    @0x%08X : 0x%08X\n&quot;, i, (uint32_t)addr, dwc_read_reg32(addr));</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+		</span>
<span class="gi">+	for (i=0; i&lt;= core_if-&gt;dev_if-&gt;num_out_eps; i++) {</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;doepeachintmsk[i];</span>
<span class="gi">+		DWC_PRINT(&quot;DOEPEACHINTMSK[%d]    @0x%08X : 0x%08X\n&quot;, i, (uint32_t)addr, dwc_read_reg32(addr));</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	for (i=0; i&lt;= core_if-&gt;dev_if-&gt;num_in_eps; i++) {</span>
<span class="gi">+		DWC_PRINT(&quot;Device IN EP %d Registers\n&quot;, i);</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;in_ep_regs[i]-&gt;diepctl;</span>
<span class="gi">+		DWC_PRINT(&quot;DIEPCTL       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;in_ep_regs[i]-&gt;diepint;</span>
<span class="gi">+		DWC_PRINT(&quot;DIEPINT       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;in_ep_regs[i]-&gt;dieptsiz;</span>
<span class="gi">+		DWC_PRINT(&quot;DIETSIZ       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;in_ep_regs[i]-&gt;diepdma;</span>
<span class="gi">+		DWC_PRINT(&quot;DIEPDMA       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;in_ep_regs[i]-&gt;dtxfsts;</span>
<span class="gi">+		DWC_PRINT(&quot;DTXFSTS       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		//reading depdmab in non desc dma mode would halt the ahb bus...</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable){</span>
<span class="gi">+			addr=&amp;core_if-&gt;dev_if-&gt;in_ep_regs[i]-&gt;diepdmab;</span>
<span class="gi">+			DWC_PRINT(&quot;DIEPDMAB      @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+		</span>
<span class="gi">+	for (i=0; i&lt;= core_if-&gt;dev_if-&gt;num_out_eps; i++) {</span>
<span class="gi">+		DWC_PRINT(&quot;Device OUT EP %d Registers\n&quot;, i);</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;out_ep_regs[i]-&gt;doepctl;</span>
<span class="gi">+		DWC_PRINT(&quot;DOEPCTL       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;out_ep_regs[i]-&gt;doepfn;</span>
<span class="gi">+		DWC_PRINT(&quot;DOEPFN        @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;out_ep_regs[i]-&gt;doepint;</span>
<span class="gi">+		DWC_PRINT(&quot;DOEPINT       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;out_ep_regs[i]-&gt;doeptsiz;</span>
<span class="gi">+		DWC_PRINT(&quot;DOETSIZ       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;dev_if-&gt;out_ep_regs[i]-&gt;doepdma;</span>
<span class="gi">+		DWC_PRINT(&quot;DOEPDMA       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		</span>
<span class="gi">+		//reading depdmab in non desc dma mode would halt the ahb bus...</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable){</span>
<span class="gi">+			addr=&amp;core_if-&gt;dev_if-&gt;out_ep_regs[i]-&gt;doepdmab;</span>
<span class="gi">+			DWC_PRINT(&quot;DOEPDMAB      @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This functions reads the SPRAM and prints its content</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_dump_spram(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	volatile uint8_t *addr, *start_addr, *end_addr;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;SPRAM Data:\n&quot;);</span>
<span class="gi">+	start_addr = (void*)core_if-&gt;core_global_regs;</span>
<span class="gi">+	DWC_PRINT(&quot;Base Address: 0x%8X\n&quot;, (uint32_t)start_addr);</span>
<span class="gi">+	start_addr += 0x00028000;</span>
<span class="gi">+	end_addr=(void*)core_if-&gt;core_global_regs;</span>
<span class="gi">+	end_addr += 0x000280e0;</span>
<span class="gi">+	</span>
<span class="gi">+	for(addr = start_addr; addr &lt; end_addr; addr+=16)</span>
<span class="gi">+	{</span>
<span class="gi">+		DWC_PRINT(&quot;0x%8X:\t%2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X\n&quot;, (uint32_t)addr,</span>
<span class="gi">+			addr[0],</span>
<span class="gi">+			addr[1],</span>
<span class="gi">+			addr[2],</span>
<span class="gi">+			addr[3],</span>
<span class="gi">+			addr[4],</span>
<span class="gi">+			addr[5],</span>
<span class="gi">+			addr[6],</span>
<span class="gi">+			addr[7],</span>
<span class="gi">+			addr[8],</span>
<span class="gi">+			addr[9],</span>
<span class="gi">+			addr[10],</span>
<span class="gi">+			addr[11],</span>
<span class="gi">+			addr[12],</span>
<span class="gi">+			addr[13],</span>
<span class="gi">+			addr[14],</span>
<span class="gi">+			addr[15]</span>
<span class="gi">+			);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function reads the host registers and prints them</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_dump_host_registers(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	int i;</span>
<span class="gi">+	volatile uint32_t *addr;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;Host Global Registers\n&quot;);</span>
<span class="gi">+	addr=&amp;core_if-&gt;host_if-&gt;host_global_regs-&gt;hcfg;</span>
<span class="gi">+	DWC_PRINT(&quot;HCFG          @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;host_if-&gt;host_global_regs-&gt;hfir;</span>
<span class="gi">+	DWC_PRINT(&quot;HFIR          @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;host_if-&gt;host_global_regs-&gt;hfnum;</span>
<span class="gi">+	DWC_PRINT(&quot;HFNUM         @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;host_if-&gt;host_global_regs-&gt;hptxsts;</span>
<span class="gi">+	DWC_PRINT(&quot;HPTXSTS       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;host_if-&gt;host_global_regs-&gt;haint;</span>
<span class="gi">+	DWC_PRINT(&quot;HAINT         @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;host_if-&gt;host_global_regs-&gt;haintmsk;</span>
<span class="gi">+	DWC_PRINT(&quot;HAINTMSK      @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=core_if-&gt;host_if-&gt;hprt0;</span>
<span class="gi">+	DWC_PRINT(&quot;HPRT0         @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+</span>
<span class="gi">+	for (i=0; i&lt;core_if-&gt;core_params-&gt;host_channels; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		DWC_PRINT(&quot;Host Channel %d Specific Registers\n&quot;, i);</span>
<span class="gi">+		addr=&amp;core_if-&gt;host_if-&gt;hc_regs[i]-&gt;hcchar;</span>
<span class="gi">+		DWC_PRINT(&quot;HCCHAR        @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;host_if-&gt;hc_regs[i]-&gt;hcsplt;</span>
<span class="gi">+		DWC_PRINT(&quot;HCSPLT        @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;host_if-&gt;hc_regs[i]-&gt;hcint;</span>
<span class="gi">+		DWC_PRINT(&quot;HCINT         @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;host_if-&gt;hc_regs[i]-&gt;hcintmsk;</span>
<span class="gi">+		DWC_PRINT(&quot;HCINTMSK      @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;host_if-&gt;hc_regs[i]-&gt;hctsiz;</span>
<span class="gi">+		DWC_PRINT(&quot;HCTSIZ        @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+		addr=&amp;core_if-&gt;host_if-&gt;hc_regs[i]-&gt;hcdma;</span>
<span class="gi">+		DWC_PRINT(&quot;HCDMA         @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	}</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function reads the core global registers and prints them</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_dump_global_registers(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	int i,size;</span>
<span class="gi">+	char* str;</span>
<span class="gi">+	volatile uint32_t *addr;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;Core Global Registers\n&quot;);</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gotgctl;</span>
<span class="gi">+	DWC_PRINT(&quot;GOTGCTL       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gotgint;</span>
<span class="gi">+	DWC_PRINT(&quot;GOTGINT       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gahbcfg;</span>
<span class="gi">+	DWC_PRINT(&quot;GAHBCFG       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gusbcfg;</span>
<span class="gi">+	DWC_PRINT(&quot;GUSBCFG       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;grstctl;</span>
<span class="gi">+	DWC_PRINT(&quot;GRSTCTL       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gintsts;</span>
<span class="gi">+	DWC_PRINT(&quot;GINTSTS       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gintmsk;</span>
<span class="gi">+	DWC_PRINT(&quot;GINTMSK       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;grxstsr;</span>
<span class="gi">+	DWC_PRINT(&quot;GRXSTSR       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	//addr=&amp;core_if-&gt;core_global_regs-&gt;grxstsp;</span>
<span class="gi">+	//DWC_PRINT(&quot;GRXSTSP   @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;grxfsiz;</span>
<span class="gi">+	DWC_PRINT(&quot;GRXFSIZ       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gnptxfsiz;</span>
<span class="gi">+	DWC_PRINT(&quot;GNPTXFSIZ     @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gnptxsts;</span>
<span class="gi">+	DWC_PRINT(&quot;GNPTXSTS      @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gi2cctl;</span>
<span class="gi">+	DWC_PRINT(&quot;GI2CCTL       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gpvndctl;</span>
<span class="gi">+	DWC_PRINT(&quot;GPVNDCTL      @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;ggpio;</span>
<span class="gi">+	DWC_PRINT(&quot;GGPIO         @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;guid;</span>
<span class="gi">+	DWC_PRINT(&quot;GUID          @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;gsnpsid;</span>
<span class="gi">+	DWC_PRINT(&quot;GSNPSID       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;ghwcfg1;</span>
<span class="gi">+	DWC_PRINT(&quot;GHWCFG1       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;ghwcfg2;</span>
<span class="gi">+	DWC_PRINT(&quot;GHWCFG2       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;ghwcfg3;</span>
<span class="gi">+	DWC_PRINT(&quot;GHWCFG3       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;ghwcfg4;</span>
<span class="gi">+	DWC_PRINT(&quot;GHWCFG4       @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	addr=&amp;core_if-&gt;core_global_regs-&gt;hptxfsiz;</span>
<span class="gi">+	DWC_PRINT(&quot;HPTXFSIZ      @0x%08X : 0x%08X\n&quot;,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+</span>
<span class="gi">+	size=(core_if-&gt;hwcfg4.b.ded_fifo_en)?</span>
<span class="gi">+		core_if-&gt;hwcfg4.b.num_in_eps:core_if-&gt;hwcfg4.b.num_dev_perio_in_ep;</span>
<span class="gi">+	str=(core_if-&gt;hwcfg4.b.ded_fifo_en)?&quot;DIEPTXF&quot;:&quot;DPTXFSIZ&quot;;</span>
<span class="gi">+	for (i=0; i&lt;size; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		addr=&amp;core_if-&gt;core_global_regs-&gt;dptxfsiz_dieptxf[i];</span>
<span class="gi">+		DWC_PRINT(&quot;%s[%d]        @0x%08X : 0x%08X\n&quot;,str,i,(uint32_t)addr,dwc_read_reg32(addr));</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Flush a Tx FIFO.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param num Tx FIFO to flush.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_flush_tx_fifo(dwc_otg_core_if_t *core_if, </span>
<span class="gi">+					   const int num) </span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = core_if-&gt;core_global_regs;</span>
<span class="gi">+	volatile grstctl_t greset = { .d32 = 0};</span>
<span class="gi">+	int count = 0;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL((DBG_CIL|DBG_PCDV), &quot;Flush Tx FIFO %d\n&quot;, num);</span>
<span class="gi">+</span>
<span class="gi">+	greset.b.txfflsh = 1;</span>
<span class="gi">+	greset.b.txfnum = num;</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;grstctl, greset.d32);</span>
<span class="gi">+	</span>
<span class="gi">+	do {</span>
<span class="gi">+		greset.d32 = dwc_read_reg32(&amp;global_regs-&gt;grstctl);</span>
<span class="gi">+		if (++count &gt; 10000) {</span>
<span class="gi">+			DWC_WARN(&quot;%s() HANG! GRSTCTL=%0x GNPTXSTS=0x%08x\n&quot;,</span>
<span class="gi">+					  __func__, greset.d32,</span>
<span class="gi">+			dwc_read_reg32(&amp;global_regs-&gt;gnptxsts));</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	while (greset.b.txfflsh == 1);</span>
<span class="gi">+	</span>
<span class="gi">+	/* Wait for 3 PHY Clocks*/</span>
<span class="gi">+	UDELAY(1);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Flush Rx FIFO.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_flush_rx_fifo(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = core_if-&gt;core_global_regs;</span>
<span class="gi">+	volatile grstctl_t greset = { .d32 = 0};</span>
<span class="gi">+	int count = 0;</span>
<span class="gi">+		</span>
<span class="gi">+	DWC_DEBUGPL((DBG_CIL|DBG_PCDV), &quot;%s\n&quot;, __func__);</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * </span>
<span class="gi">+	 */</span>
<span class="gi">+	greset.b.rxfflsh = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;grstctl, greset.d32);</span>
<span class="gi">+		</span>
<span class="gi">+	do {</span>
<span class="gi">+		greset.d32 = dwc_read_reg32(&amp;global_regs-&gt;grstctl);</span>
<span class="gi">+		if (++count &gt; 10000) {</span>
<span class="gi">+			DWC_WARN(&quot;%s() HANG! GRSTCTL=%0x\n&quot;, __func__, </span>
<span class="gi">+				greset.d32);</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	while (greset.b.rxfflsh == 1);		  </span>
<span class="gi">+	</span>
<span class="gi">+	/* Wait for 3 PHY Clocks*/</span>
<span class="gi">+	UDELAY(1);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Do core a soft reset of the core.  Be careful with this because it</span>
<span class="gi">+ * resets all the internal state machines of the core.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_core_reset(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = core_if-&gt;core_global_regs;</span>
<span class="gi">+	volatile grstctl_t greset = { .d32 = 0};</span>
<span class="gi">+	int count = 0;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV, &quot;%s\n&quot;, __func__);</span>
<span class="gi">+	/* Wait for AHB master IDLE state. */</span>
<span class="gi">+	do {</span>
<span class="gi">+		UDELAY(10);</span>
<span class="gi">+		greset.d32 = dwc_read_reg32(&amp;global_regs-&gt;grstctl);</span>
<span class="gi">+		if (++count &gt; 100000) {</span>
<span class="gi">+			DWC_WARN(&quot;%s() HANG! AHB Idle GRSTCTL=%0x\n&quot;, __func__, </span>
<span class="gi">+				greset.d32);</span>
<span class="gi">+			return;</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	while (greset.b.ahbidle == 0);</span>
<span class="gi">+		</span>
<span class="gi">+	/* Core Soft Reset */</span>
<span class="gi">+	count = 0;</span>
<span class="gi">+	greset.b.csftrst = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;grstctl, greset.d32);</span>
<span class="gi">+	do {</span>
<span class="gi">+		greset.d32 = dwc_read_reg32(&amp;global_regs-&gt;grstctl);</span>
<span class="gi">+		if (++count &gt; 10000) {</span>
<span class="gi">+			DWC_WARN(&quot;%s() HANG! Soft Reset GRSTCTL=%0x\n&quot;, __func__, </span>
<span class="gi">+				greset.d32);</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	while (greset.b.csftrst == 1);		  </span>
<span class="gi">+	</span>
<span class="gi">+	/* Wait for 3 PHY Clocks*/</span>
<span class="gi">+	MDELAY(100);</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV, &quot;GINTSTS=%.8x\n&quot;, dwc_read_reg32(&amp;global_regs-&gt;gintsts));</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV, &quot;GINTSTS=%.8x\n&quot;, dwc_read_reg32(&amp;global_regs-&gt;gintsts));</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CILV, &quot;GINTSTS=%.8x\n&quot;, dwc_read_reg32(&amp;global_regs-&gt;gintsts));</span>
<span class="gi">+	</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Register HCD callbacks.	The callbacks are used to start and stop</span>
<span class="gi">+ * the HCD for interrupt processing.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param cb the HCD callback structure.</span>
<span class="gi">+ * @param p pointer to be passed to callback function (usb_hcd*).</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_cil_register_hcd_callbacks(dwc_otg_core_if_t *core_if,</span>
<span class="gi">+						dwc_otg_cil_callbacks_t *cb,</span>
<span class="gi">+						void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	core_if-&gt;hcd_cb = cb;</span>
<span class="gi">+	cb-&gt;p = p;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Register PCD callbacks.	The callbacks are used to start and stop</span>
<span class="gi">+ * the PCD for interrupt processing.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param cb the PCD callback structure.</span>
<span class="gi">+ * @param p pointer to be passed to callback function (pcd*).</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_cil_register_pcd_callbacks(dwc_otg_core_if_t *core_if,</span>
<span class="gi">+						dwc_otg_cil_callbacks_t *cb,</span>
<span class="gi">+						void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	core_if-&gt;pcd_cb = cb;</span>
<span class="gi">+	cb-&gt;p = p;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function writes isoc data per 1 (micro)frame into tx fifo</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to start the transfer on.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+void write_isoc_frame_data(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_dev_in_ep_regs_t *ep_regs;</span>
<span class="gi">+	dtxfsts_data_t txstatus = {.d32 = 0};</span>
<span class="gi">+	uint32_t len = 0;</span>
<span class="gi">+	uint32_t dwords;</span>
<span class="gi">+	</span>
<span class="gi">+	ep-&gt;xfer_len = ep-&gt;data_per_frame;</span>
<span class="gi">+	ep-&gt;xfer_count = 0;</span>
<span class="gi">+</span>
<span class="gi">+	ep_regs = core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num];</span>
<span class="gi">+		</span>
<span class="gi">+	len = ep-&gt;xfer_len - ep-&gt;xfer_count;</span>
<span class="gi">+</span>
<span class="gi">+	if (len &gt; ep-&gt;maxpacket) {</span>
<span class="gi">+		len = ep-&gt;maxpacket;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	dwords = (len + 3)/4;</span>
<span class="gi">+		</span>
<span class="gi">+	/* While there is space in the queue and space in the FIFO and</span>
<span class="gi">+	 * More data to tranfer, Write packets to the Tx FIFO */</span>
<span class="gi">+	txstatus.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;dtxfsts);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;b4 dtxfsts[%d]=0x%08x\n&quot;,ep-&gt;num,txstatus.d32);</span>
<span class="gi">+</span>
<span class="gi">+	while  (txstatus.b.txfspcavail &gt; dwords &amp;&amp; </span>
<span class="gi">+		ep-&gt;xfer_count &lt; ep-&gt;xfer_len &amp;&amp;</span>
<span class="gi">+		ep-&gt;xfer_len != 0) {</span>
<span class="gi">+		/* Write the FIFO */</span>
<span class="gi">+		dwc_otg_ep_write_packet(core_if, ep, 0);</span>
<span class="gi">+</span>
<span class="gi">+		len = ep-&gt;xfer_len - ep-&gt;xfer_count;</span>
<span class="gi">+		if (len &gt; ep-&gt;maxpacket) {</span>
<span class="gi">+			len = ep-&gt;maxpacket;</span>
<span class="gi">+		}</span>
<span class="gi">+				</span>
<span class="gi">+		dwords = (len + 3)/4;</span>
<span class="gi">+		txstatus.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;dtxfsts);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV,&quot;dtxfsts[%d]=0x%08x\n&quot;, ep-&gt;num, txstatus.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function initializes a descriptor chain for Isochronous transfer</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to start the transfer on.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_iso_ep_start_frm_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	deptsiz_data_t		deptsiz = { .d32 = 0 };</span>
<span class="gi">+	depctl_data_t 		depctl = { .d32 = 0 };</span>
<span class="gi">+	dsts_data_t		dsts = { .d32 = 0 };</span>
<span class="gi">+	volatile uint32_t 	*addr;</span>
<span class="gi">+			</span>
<span class="gi">+	if(ep-&gt;is_in) {</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepctl;</span>
<span class="gi">+	} else {	</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepctl;</span>
<span class="gi">+	}	</span>
<span class="gi">+</span>
<span class="gi">+	ep-&gt;xfer_len = ep-&gt;data_per_frame;</span>
<span class="gi">+	ep-&gt;xfer_count = 0;</span>
<span class="gi">+	ep-&gt;xfer_buff = ep-&gt;cur_pkt_addr;</span>
<span class="gi">+	ep-&gt;dma_addr = ep-&gt;cur_pkt_dma_addr;</span>
<span class="gi">+	</span>
<span class="gi">+	if(ep-&gt;is_in) {</span>
<span class="gi">+		/* Program the transfer size and packet count</span>
<span class="gi">+		 *	as follows: xfersize = N * maxpacket +</span>
<span class="gi">+		 *	short_packet pktcnt = N + (short_packet</span>
<span class="gi">+		 *	exist ? 1 : 0)	</span>
<span class="gi">+		 */</span>
<span class="gi">+		deptsiz.b.xfersize = ep-&gt;xfer_len;</span>
<span class="gi">+		deptsiz.b.pktcnt =</span>
<span class="gi">+			(ep-&gt;xfer_len - 1 + ep-&gt;maxpacket) / </span>
<span class="gi">+			ep-&gt;maxpacket;</span>
<span class="gi">+		deptsiz.b.mc = deptsiz.b.pktcnt;</span>
<span class="gi">+		dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;dieptsiz, deptsiz.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Write the DMA register */</span>
<span class="gi">+		if (core_if-&gt;dma_enable) {</span>
<span class="gi">+			dwc_write_reg32 (&amp;(core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepdma), (uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		deptsiz.b.pktcnt = </span>
<span class="gi">+				(ep-&gt;xfer_len + (ep-&gt;maxpacket - 1)) /</span>
<span class="gi">+				ep-&gt;maxpacket;</span>
<span class="gi">+		deptsiz.b.xfersize = deptsiz.b.pktcnt * ep-&gt;maxpacket;</span>
<span class="gi">+</span>
<span class="gi">+		dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doeptsiz, deptsiz.d32);</span>
<span class="gi">+</span>
<span class="gi">+		if (core_if-&gt;dma_enable) {</span>
<span class="gi">+				dwc_write_reg32 (&amp;(core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepdma), </span>
<span class="gi">+					(uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	/** Enable endpoint, clear nak  */</span>
<span class="gi">+</span>
<span class="gi">+	depctl.d32 = 0;	</span>
<span class="gi">+	if(ep-&gt;bInterval == 1) {</span>
<span class="gi">+		dsts.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dsts);</span>
<span class="gi">+		ep-&gt;next_frame = dsts.b.soffn + ep-&gt;bInterval;</span>
<span class="gi">+		</span>
<span class="gi">+		if(ep-&gt;next_frame &amp; 0x1) {</span>
<span class="gi">+			depctl.b.setd1pid = 1;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			depctl.b.setd0pid = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		ep-&gt;next_frame += ep-&gt;bInterval;</span>
<span class="gi">+		</span>
<span class="gi">+		if(ep-&gt;next_frame &amp; 0x1) {</span>
<span class="gi">+			depctl.b.setd1pid = 1;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			depctl.b.setd0pid = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	depctl.b.epena = 1;</span>
<span class="gi">+	depctl.b.cnak = 1;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_modify_reg32(addr, 0, depctl.d32);</span>
<span class="gi">+	depctl.d32 = dwc_read_reg32(addr);</span>
<span class="gi">+	</span>
<span class="gi">+	if(ep-&gt;is_in &amp;&amp; core_if-&gt;dma_enable == 0) {</span>
<span class="gi">+		write_isoc_frame_data(core_if, ep);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#endif //DWC_EN_ISOC</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_cil.h</span>
<span class="gu">@@ -0,0 +1,1119 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil.h $</span>
<span class="gi">+ * $Revision: #91 $</span>
<span class="gi">+ * $Date: 2008/09/19 $</span>
<span class="gi">+ * $Change: 1099526 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+</span>
<span class="gi">+#if !defined(__DWC_CIL_H__)</span>
<span class="gi">+#define __DWC_CIL_H__</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/workqueue.h&gt;</span>
<span class="gi">+#include &lt;linux/version.h&gt;</span>
<span class="gi">+#include &lt;asm/param.h&gt;</span>
<span class="gi">+//#include &lt;asm/arch/regs-irq.h&gt;</span>
<span class="gi">+		</span>
<span class="gi">+#include &quot;dwc_otg_plat.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_regs.h&quot;</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+#include &quot;linux/timer.h&quot;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @file</span>
<span class="gi">+ * This file contains the interface to the Core Interface Layer.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/** Macros defined for DWC OTG HW Release verison */</span>
<span class="gi">+#define OTG_CORE_REV_2_00	0x4F542000	</span>
<span class="gi">+#define OTG_CORE_REV_2_60a	0x4F54260A	</span>
<span class="gi">+#define OTG_CORE_REV_2_71a	0x4F54271A	</span>
<span class="gi">+#define OTG_CORE_REV_2_72a	0x4F54272A	</span>
<span class="gi">+	</span>
<span class="gi">+/**</span>
<span class="gi">+*/</span>
<span class="gi">+typedef struct iso_pkt_info </span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t	offset;</span>
<span class="gi">+	uint32_t 	length;</span>
<span class="gi">+	int32_t 	status;</span>
<span class="gi">+} iso_pkt_info_t;</span>
<span class="gi">+/**</span>
<span class="gi">+ * The &lt;code&gt;dwc_ep&lt;/code&gt; structure represents the state of a single</span>
<span class="gi">+ * endpoint when acting in device mode. It contains the data items</span>
<span class="gi">+ * needed for an endpoint to be activated and transfer packets.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_ep </span>
<span class="gi">+{</span>
<span class="gi">+	/** EP number used for register address lookup */</span>
<span class="gi">+	uint8_t	 num;</span>
<span class="gi">+	/** EP direction 0 = OUT */</span>
<span class="gi">+	unsigned is_in : 1;			  </span>
<span class="gi">+	/** EP active. */</span>
<span class="gi">+	unsigned active : 1;</span>
<span class="gi">+</span>
<span class="gi">+	/** Periodic Tx FIFO # for IN EPs For INTR EP set to 0 to use non-periodic Tx FIFO </span>
<span class="gi">+		If dedicated Tx FIFOs are enabled for all IN Eps - Tx FIFO # FOR IN EPs*/</span>
<span class="gi">+	unsigned tx_fifo_num : 4;  </span>
<span class="gi">+	/** EP type: 0 - Control, 1 - ISOC,	 2 - BULK,	3 - INTR */</span>
<span class="gi">+	unsigned type : 2;			  </span>
<span class="gi">+#define DWC_OTG_EP_TYPE_CONTROL	   0</span>
<span class="gi">+#define DWC_OTG_EP_TYPE_ISOC	   1</span>
<span class="gi">+#define DWC_OTG_EP_TYPE_BULK	   2</span>
<span class="gi">+#define DWC_OTG_EP_TYPE_INTR	   3</span>
<span class="gi">+</span>
<span class="gi">+	/** DATA start PID for INTR and BULK EP */</span>
<span class="gi">+	unsigned data_pid_start : 1;  </span>
<span class="gi">+	/** Frame (even/odd) for ISOC EP */</span>
<span class="gi">+	unsigned even_odd_frame : 1;  </span>
<span class="gi">+	/** Max Packet bytes */</span>
<span class="gi">+	unsigned maxpacket : 11;</span>
<span class="gi">+</span>
<span class="gi">+	/** Max Transfer size */</span>
<span class="gi">+	unsigned maxxfer : 16;</span>
<span class="gi">+</span>
<span class="gi">+	/** @name Transfer state */</span>
<span class="gi">+	/** @{ */</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Pointer to the beginning of the transfer buffer -- do not modify</span>
<span class="gi">+	 * during transfer.</span>
<span class="gi">+	 */</span>
<span class="gi">+	</span>
<span class="gi">+	uint32_t dma_addr;</span>
<span class="gi">+</span>
<span class="gi">+	uint32_t dma_desc_addr;</span>
<span class="gi">+	dwc_otg_dma_desc_t* desc_addr;</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	uint8_t *start_xfer_buff;</span>
<span class="gi">+	/** pointer to the transfer buffer */</span>
<span class="gi">+	uint8_t *xfer_buff;			 </span>
<span class="gi">+	/** Number of bytes to transfer */</span>
<span class="gi">+	unsigned xfer_len : 19;		  </span>
<span class="gi">+	/** Number of bytes transferred. */</span>
<span class="gi">+	unsigned xfer_count : 19;</span>
<span class="gi">+	/** Sent ZLP */</span>
<span class="gi">+	unsigned sent_zlp : 1;</span>
<span class="gi">+	/** Total len for control transfer */</span>
<span class="gi">+	unsigned total_len : 19;</span>
<span class="gi">+</span>
<span class="gi">+	/** stall clear flag */</span>
<span class="gi">+	unsigned stall_clear_flag : 1;</span>
<span class="gi">+</span>
<span class="gi">+	/** Allocated DMA Desc count */</span>
<span class="gi">+	uint32_t 	desc_cnt;	</span>
<span class="gi">+</span>
<span class="gi">+	uint32_t aligned_dma_addr;</span>
<span class="gi">+	uint32_t aligned_buf_size;</span>
<span class="gi">+	uint8_t *aligned_buf;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_EN_ISOC 	</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Variables specific for ISOC EPs</span>
<span class="gi">+	 *</span>
<span class="gi">+	 */</span>
<span class="gi">+	/** DMA addresses of ISOC buffers */</span>
<span class="gi">+	uint32_t 	dma_addr0;</span>
<span class="gi">+	uint32_t	dma_addr1;</span>
<span class="gi">+</span>
<span class="gi">+	uint32_t 	iso_dma_desc_addr;</span>
<span class="gi">+	dwc_otg_dma_desc_t* iso_desc_addr;</span>
<span class="gi">+</span>
<span class="gi">+	/** pointer to the transfer buffers */</span>
<span class="gi">+	uint8_t		*xfer_buff0;			 </span>
<span class="gi">+	uint8_t		*xfer_buff1;			 </span>
<span class="gi">+	</span>
<span class="gi">+	/** number of ISOC Buffer is processing */</span>
<span class="gi">+	uint32_t 	proc_buf_num;</span>
<span class="gi">+	/** Interval of ISOC Buffer processing */</span>
<span class="gi">+	uint32_t 	buf_proc_intrvl;</span>
<span class="gi">+	/** Data size for regular frame */</span>
<span class="gi">+	uint32_t 	data_per_frame;</span>
<span class="gi">+</span>
<span class="gi">+	/* todo - pattern data support is to be implemented in the future */</span>
<span class="gi">+	/** Data size for pattern frame */</span>
<span class="gi">+	uint32_t 	data_pattern_frame;</span>
<span class="gi">+	/** Frame number of pattern data */</span>
<span class="gi">+	uint32_t 	sync_frame;</span>
<span class="gi">+	</span>
<span class="gi">+	/** bInterval */</span>
<span class="gi">+	uint32_t 	bInterval;</span>
<span class="gi">+	/** ISO Packet number per frame */</span>
<span class="gi">+	uint32_t 	pkt_per_frm;	</span>
<span class="gi">+	/** Next frame num for which will be setup DMA Desc */</span>
<span class="gi">+	uint32_t 	next_frame;</span>
<span class="gi">+	/** Number of packets per buffer processing */</span>
<span class="gi">+	uint32_t	pkt_cnt;</span>
<span class="gi">+	/** Info for all isoc packets */</span>
<span class="gi">+	iso_pkt_info_t	*pkt_info;</span>
<span class="gi">+	/** current pkt number */</span>
<span class="gi">+	uint32_t	cur_pkt;</span>
<span class="gi">+	/** current pkt number */</span>
<span class="gi">+	uint8_t 	*cur_pkt_addr;</span>
<span class="gi">+	/** current pkt number */</span>
<span class="gi">+	uint32_t	cur_pkt_dma_addr;</span>
<span class="gi">+#endif //DWC_EN_ISOC </span>
<span class="gi">+/** @} */</span>
<span class="gi">+} dwc_ep_t;</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * Reasons for halting a host channel.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef enum dwc_otg_halt_status </span>
<span class="gi">+{</span>
<span class="gi">+	DWC_OTG_HC_XFER_NO_HALT_STATUS,</span>
<span class="gi">+	DWC_OTG_HC_XFER_COMPLETE,</span>
<span class="gi">+	DWC_OTG_HC_XFER_URB_COMPLETE,</span>
<span class="gi">+	DWC_OTG_HC_XFER_ACK,</span>
<span class="gi">+	DWC_OTG_HC_XFER_NAK,</span>
<span class="gi">+	DWC_OTG_HC_XFER_NYET,</span>
<span class="gi">+	DWC_OTG_HC_XFER_STALL,</span>
<span class="gi">+	DWC_OTG_HC_XFER_XACT_ERR,</span>
<span class="gi">+	DWC_OTG_HC_XFER_FRAME_OVERRUN,</span>
<span class="gi">+	DWC_OTG_HC_XFER_BABBLE_ERR,</span>
<span class="gi">+	DWC_OTG_HC_XFER_DATA_TOGGLE_ERR,</span>
<span class="gi">+	DWC_OTG_HC_XFER_AHB_ERR,</span>
<span class="gi">+	DWC_OTG_HC_XFER_PERIODIC_INCOMPLETE,</span>
<span class="gi">+	DWC_OTG_HC_XFER_URB_DEQUEUE</span>
<span class="gi">+} dwc_otg_halt_status_e;</span>
<span class="gi">+	</span>
<span class="gi">+/**</span>
<span class="gi">+ * Host channel descriptor. This structure represents the state of a single</span>
<span class="gi">+ * host channel when acting in host mode. It contains the data items needed to</span>
<span class="gi">+ * transfer packets to an endpoint via a host channel.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_hc </span>
<span class="gi">+{</span>
<span class="gi">+	/** Host channel number used for register address lookup */</span>
<span class="gi">+	uint8_t	 hc_num;</span>
<span class="gi">+</span>
<span class="gi">+	/** Device to access */</span>
<span class="gi">+	unsigned dev_addr : 7;</span>
<span class="gi">+</span>
<span class="gi">+	/** EP to access */</span>
<span class="gi">+	unsigned ep_num : 4;</span>
<span class="gi">+</span>
<span class="gi">+	/** EP direction. 0: OUT, 1: IN */</span>
<span class="gi">+	unsigned ep_is_in : 1;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * EP speed.</span>
<span class="gi">+	 * One of the following values:</span>
<span class="gi">+	 *	- DWC_OTG_EP_SPEED_LOW</span>
<span class="gi">+	 *	- DWC_OTG_EP_SPEED_FULL</span>
<span class="gi">+	 *	- DWC_OTG_EP_SPEED_HIGH</span>
<span class="gi">+	 */</span>
<span class="gi">+	unsigned speed : 2;</span>
<span class="gi">+#define DWC_OTG_EP_SPEED_LOW	0</span>
<span class="gi">+#define DWC_OTG_EP_SPEED_FULL	1</span>
<span class="gi">+#define DWC_OTG_EP_SPEED_HIGH	2	</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Endpoint type.</span>
<span class="gi">+	 * One of the following values:</span>
<span class="gi">+	 *	- DWC_OTG_EP_TYPE_CONTROL: 0</span>
<span class="gi">+	 *	- DWC_OTG_EP_TYPE_ISOC: 1</span>
<span class="gi">+	 *	- DWC_OTG_EP_TYPE_BULK: 2</span>
<span class="gi">+	 *	- DWC_OTG_EP_TYPE_INTR: 3</span>
<span class="gi">+	 */</span>
<span class="gi">+	unsigned ep_type : 2;</span>
<span class="gi">+</span>
<span class="gi">+	/** Max packet size in bytes */</span>
<span class="gi">+	unsigned max_packet : 11;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * PID for initial transaction.</span>
<span class="gi">+	 * 0: DATA0,&lt;br&gt;</span>
<span class="gi">+	 * 1: DATA2,&lt;br&gt;</span>
<span class="gi">+	 * 2: DATA1,&lt;br&gt;</span>
<span class="gi">+	 * 3: MDATA (non-Control EP),</span>
<span class="gi">+	 *	  SETUP (Control EP)</span>
<span class="gi">+	 */</span>
<span class="gi">+	unsigned data_pid_start : 2;</span>
<span class="gi">+#define DWC_OTG_HC_PID_DATA0 0</span>
<span class="gi">+#define DWC_OTG_HC_PID_DATA2 1</span>
<span class="gi">+#define DWC_OTG_HC_PID_DATA1 2</span>
<span class="gi">+#define DWC_OTG_HC_PID_MDATA 3</span>
<span class="gi">+#define DWC_OTG_HC_PID_SETUP 3</span>
<span class="gi">+</span>
<span class="gi">+	/** Number of periodic transactions per (micro)frame */</span>
<span class="gi">+	unsigned multi_count: 2;</span>
<span class="gi">+</span>
<span class="gi">+	/** @name Transfer State */</span>
<span class="gi">+	/** @{ */</span>
<span class="gi">+</span>
<span class="gi">+	/** Pointer to the current transfer buffer position. */</span>
<span class="gi">+	uint8_t *xfer_buff;</span>
<span class="gi">+	/** Total number of bytes to transfer. */</span>
<span class="gi">+	uint32_t xfer_len;</span>
<span class="gi">+	/** Number of bytes transferred so far. */</span>
<span class="gi">+	uint32_t xfer_count;</span>
<span class="gi">+	/** Packet count at start of transfer.*/</span>
<span class="gi">+	uint16_t start_pkt_count;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Flag to indicate whether the transfer has been started. Set to 1 if</span>
<span class="gi">+	 * it has been started, 0 otherwise.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t xfer_started;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Set to 1 to indicate that a PING request should be issued on this</span>
<span class="gi">+	 * channel. If 0, process normally.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t do_ping;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Set to 1 to indicate that the error count for this transaction is</span>
<span class="gi">+	 * non-zero. Set to 0 if the error count is 0.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t error_state;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Set to 1 to indicate that this channel should be halted the next</span>
<span class="gi">+	 * time a request is queued for the channel. This is necessary in</span>
<span class="gi">+	 * slave mode if no request queue space is available when an attempt</span>
<span class="gi">+	 * is made to halt the channel.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t halt_on_queue;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Set to 1 if the host channel has been halted, but the core is not</span>
<span class="gi">+	 * finished flushing queued requests. Otherwise 0.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t halt_pending;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Reason for halting the host channel.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_halt_status_e	halt_status;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Split settings for the host channel</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t do_split;		   /**&lt; Enable split for the channel */</span>
<span class="gi">+	uint8_t complete_split;	   /**&lt; Enable complete split */</span>
<span class="gi">+	uint8_t hub_addr;		   /**&lt; Address of high speed hub */</span>
<span class="gi">+</span>
<span class="gi">+	uint8_t port_addr;		   /**&lt; Port of the low/full speed device */</span>
<span class="gi">+	/** Split transaction position </span>
<span class="gi">+	 * One of the following values:</span>
<span class="gi">+	 *	  - DWC_HCSPLIT_XACTPOS_MID </span>
<span class="gi">+	 *	  - DWC_HCSPLIT_XACTPOS_BEGIN</span>
<span class="gi">+	 *	  - DWC_HCSPLIT_XACTPOS_END</span>
<span class="gi">+	 *	  - DWC_HCSPLIT_XACTPOS_ALL */</span>
<span class="gi">+	uint8_t xact_pos;</span>
<span class="gi">+</span>
<span class="gi">+	/** Set when the host channel does a short read. */</span>
<span class="gi">+	uint8_t short_read;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Number of requests issued for this channel since it was assigned to</span>
<span class="gi">+	 * the current transfer (not counting PINGs).</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t requests;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Queue Head for the transfer being processed by this channel.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct dwc_otg_qh *qh;</span>
<span class="gi">+</span>
<span class="gi">+	/** @} */</span>
<span class="gi">+</span>
<span class="gi">+	/** Entry in list of host channels. */</span>
<span class="gi">+	struct list_head	hc_list_entry;</span>
<span class="gi">+} dwc_hc_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * The following parameters may be specified when starting the module. These</span>
<span class="gi">+ * parameters define how the DWC_otg controller should be configured.</span>
<span class="gi">+ * Parameter values are passed to the CIL initialization function</span>
<span class="gi">+ * dwc_otg_cil_init.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_core_params </span>
<span class="gi">+{</span>
<span class="gi">+	int32_t opt;</span>
<span class="gi">+#define dwc_param_opt_default 1</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Specifies the OTG capabilities. The driver will automatically</span>
<span class="gi">+	 * detect the value for this parameter if none is specified.</span>
<span class="gi">+	 * 0 - HNP and SRP capable (default)</span>
<span class="gi">+	 * 1 - SRP Only capable</span>
<span class="gi">+	 * 2 - No HNP/SRP capable</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t otg_cap;</span>
<span class="gi">+#define DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE 0</span>
<span class="gi">+#define DWC_OTG_CAP_PARAM_SRP_ONLY_CAPABLE 1</span>
<span class="gi">+#define DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE 2</span>
<span class="gi">+//#define dwc_param_otg_cap_default DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE</span>
<span class="gi">+#define dwc_param_otg_cap_default DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Specifies whether to use slave or DMA mode for accessing the data</span>
<span class="gi">+	 * FIFOs. The driver will automatically detect the value for this</span>
<span class="gi">+	 * parameter if none is specified.</span>
<span class="gi">+	 * 0 - Slave</span>
<span class="gi">+	 * 1 - DMA (default, if available)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t dma_enable;</span>
<span class="gi">+#define dwc_param_dma_enable_default 1</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * When DMA mode is enabled specifies whether to use address DMA or DMA Descritor mode for accessing the data</span>
<span class="gi">+	 * FIFOs in device mode. The driver will automatically detect the value for this</span>
<span class="gi">+	 * parameter if none is specified.</span>
<span class="gi">+	 * 0 - address DMA</span>
<span class="gi">+	 * 1 - DMA Descriptor(default, if available)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t dma_desc_enable;</span>
<span class="gi">+#define dwc_param_dma_desc_enable_default 0</span>
<span class="gi">+	/** The DMA Burst size (applicable only for External DMA</span>
<span class="gi">+	 * Mode). 1, 4, 8 16, 32, 64, 128, 256 (default 32)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t dma_burst_size;	 /* Translate this to GAHBCFG values */</span>
<span class="gi">+//#define dwc_param_dma_burst_size_default 32</span>
<span class="gi">+#define dwc_param_dma_burst_size_default 1</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Specifies the maximum speed of operation in host and device mode.</span>
<span class="gi">+	 * The actual speed depends on the speed of the attached device and</span>
<span class="gi">+	 * the value of phy_type. The actual speed depends on the speed of the</span>
<span class="gi">+	 * attached device.</span>
<span class="gi">+	 * 0 - High Speed (default)</span>
<span class="gi">+	 * 1 - Full Speed</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t speed;</span>
<span class="gi">+#define dwc_param_speed_default 0</span>
<span class="gi">+#define DWC_SPEED_PARAM_HIGH 0</span>
<span class="gi">+#define DWC_SPEED_PARAM_FULL 1</span>
<span class="gi">+</span>
<span class="gi">+	/** Specifies whether low power mode is supported when attached </span>
<span class="gi">+	 *	to a Full Speed or Low Speed device in host mode.</span>
<span class="gi">+	 * 0 - Don&#39;t support low power mode (default)</span>
<span class="gi">+	 * 1 - Support low power mode</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t host_support_fs_ls_low_power;</span>
<span class="gi">+#define dwc_param_host_support_fs_ls_low_power_default 0</span>
<span class="gi">+</span>
<span class="gi">+	/** Specifies the PHY clock rate in low power mode when connected to a</span>
<span class="gi">+	 * Low Speed device in host mode. This parameter is applicable only if</span>
<span class="gi">+	 * HOST_SUPPORT_FS_LS_LOW_POWER is enabled.	 If PHY_TYPE is set to FS</span>
<span class="gi">+	 * then defaults to 6 MHZ otherwise 48 MHZ.</span>
<span class="gi">+	 *</span>
<span class="gi">+	 * 0 - 48 MHz</span>
<span class="gi">+	 * 1 - 6 MHz</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t host_ls_low_power_phy_clk;</span>
<span class="gi">+#define dwc_param_host_ls_low_power_phy_clk_default 0</span>
<span class="gi">+#define DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_48MHZ 0</span>
<span class="gi">+#define DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_6MHZ 1</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * 0 - Use cC FIFO size parameters</span>
<span class="gi">+	 * 1 - Allow dynamic FIFO sizing (default)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t enable_dynamic_fifo;</span>
<span class="gi">+#define dwc_param_enable_dynamic_fifo_default 1</span>
<span class="gi">+</span>
<span class="gi">+	/** Total number of 4-byte words in the data FIFO memory. This </span>
<span class="gi">+	 * memory includes the Rx FIFO, non-periodic Tx FIFO, and periodic </span>
<span class="gi">+	 * Tx FIFOs.</span>
<span class="gi">+	 * 32 to 32768 (default 8192)</span>
<span class="gi">+	 * Note: The total FIFO memory depth in the FPGA configuration is 8192.</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t data_fifo_size;</span>
<span class="gi">+#define dwc_param_data_fifo_size_default 8192</span>
<span class="gi">+</span>
<span class="gi">+	/** Number of 4-byte words in the Rx FIFO in device mode when dynamic </span>
<span class="gi">+	 * FIFO sizing is enabled.</span>
<span class="gi">+	 * 16 to 32768 (default 1064)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t dev_rx_fifo_size;</span>
<span class="gi">+//#define dwc_param_dev_rx_fifo_size_default  1064</span>
<span class="gi">+#define dwc_param_dev_rx_fifo_size_default  0x100</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Specifies whether dedicated transmit FIFOs are </span>
<span class="gi">+	 * enabled for non periodic IN endpoints in device mode</span>
<span class="gi">+	 * 0 - No </span>
<span class="gi">+	 * 1 - Yes</span>
<span class="gi">+	 */</span>
<span class="gi">+	 int32_t en_multiple_tx_fifo;</span>
<span class="gi">+#define dwc_param_en_multiple_tx_fifo_default 1</span>
<span class="gi">+	</span>
<span class="gi">+	/** Number of 4-byte words in each of the Tx FIFOs in device</span>
<span class="gi">+	 * mode when dynamic FIFO sizing is enabled.</span>
<span class="gi">+	 * 4 to 768 (default 256)</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint32_t dev_tx_fifo_size[MAX_TX_FIFOS];	 </span>
<span class="gi">+//#define dwc_param_dev_tx_fifo_size_default 256</span>
<span class="gi">+#define dwc_param_dev_tx_fifo_size_default 0x80</span>
<span class="gi">+</span>
<span class="gi">+	/** Number of 4-byte words in the non-periodic Tx FIFO in device mode </span>
<span class="gi">+	 * when dynamic FIFO sizing is enabled.</span>
<span class="gi">+	 * 16 to 32768 (default 1024)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t dev_nperio_tx_fifo_size;</span>
<span class="gi">+//#define dwc_param_dev_nperio_tx_fifo_size_default 1024</span>
<span class="gi">+#define dwc_param_dev_nperio_tx_fifo_size_default 0x80</span>
<span class="gi">+</span>
<span class="gi">+	/** Number of 4-byte words in each of the periodic Tx FIFOs in device</span>
<span class="gi">+	 * mode when dynamic FIFO sizing is enabled.</span>
<span class="gi">+	 * 4 to 768 (default 256)</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint32_t dev_perio_tx_fifo_size[MAX_PERIO_FIFOS];</span>
<span class="gi">+//#define dwc_param_dev_perio_tx_fifo_size_default 256</span>
<span class="gi">+#define dwc_param_dev_perio_tx_fifo_size_default 0x80</span>
<span class="gi">+</span>
<span class="gi">+	/** Number of 4-byte words in the Rx FIFO in host mode when dynamic </span>
<span class="gi">+	 * FIFO sizing is enabled.</span>
<span class="gi">+	 * 16 to 32768 (default 1024)  </span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t host_rx_fifo_size;</span>
<span class="gi">+//#define dwc_param_host_rx_fifo_size_default 1024</span>
<span class="gi">+#define dwc_param_host_rx_fifo_size_default 0x292</span>
<span class="gi">+</span>
<span class="gi">+	/** Number of 4-byte words in the non-periodic Tx FIFO in host mode </span>
<span class="gi">+	 * when Dynamic FIFO sizing is enabled in the core. </span>
<span class="gi">+	 * 16 to 32768 (default 1024)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t host_nperio_tx_fifo_size;</span>
<span class="gi">+//#define dwc_param_host_nperio_tx_fifo_size_default 1024</span>
<span class="gi">+//#define dwc_param_host_nperio_tx_fifo_size_default 0x292</span>
<span class="gi">+#define dwc_param_host_nperio_tx_fifo_size_default 0x80</span>
<span class="gi">+</span>
<span class="gi">+	/** Number of 4-byte words in the host periodic Tx FIFO when dynamic </span>
<span class="gi">+	 * FIFO sizing is enabled. </span>
<span class="gi">+	 * 16 to 32768 (default 1024)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t host_perio_tx_fifo_size;</span>
<span class="gi">+//#define dwc_param_host_perio_tx_fifo_size_default 1024</span>
<span class="gi">+#define dwc_param_host_perio_tx_fifo_size_default 0x292</span>
<span class="gi">+</span>
<span class="gi">+	/** The maximum transfer size supported in bytes.  </span>
<span class="gi">+	 * 2047 to 65,535  (default 65,535)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t max_transfer_size;</span>
<span class="gi">+#define dwc_param_max_transfer_size_default 65535</span>
<span class="gi">+</span>
<span class="gi">+	/** The maximum number of packets in a transfer.  </span>
<span class="gi">+	 * 15 to 511  (default 511)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t max_packet_count;</span>
<span class="gi">+#define dwc_param_max_packet_count_default 511</span>
<span class="gi">+</span>
<span class="gi">+	/** The number of host channel registers to use.  </span>
<span class="gi">+	 * 1 to 16 (default 12) </span>
<span class="gi">+	 * Note: The FPGA configuration supports a maximum of 12 host channels.</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t host_channels;</span>
<span class="gi">+//#define dwc_param_host_channels_default 12</span>
<span class="gi">+#define dwc_param_host_channels_default 16</span>
<span class="gi">+</span>
<span class="gi">+	/** The number of endpoints in addition to EP0 available for device </span>
<span class="gi">+	 * mode operations. </span>
<span class="gi">+	 * 1 to 15 (default 6 IN and OUT) </span>
<span class="gi">+	 * Note: The FPGA configuration supports a maximum of 6 IN and OUT </span>
<span class="gi">+	 * endpoints in addition to EP0.</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t dev_endpoints;</span>
<span class="gi">+//#define dwc_param_dev_endpoints_default 6</span>
<span class="gi">+#define dwc_param_dev_endpoints_default 8</span>
<span class="gi">+</span>
<span class="gi">+		/** </span>
<span class="gi">+		 * Specifies the type of PHY interface to use. By default, the driver</span>
<span class="gi">+		 * will automatically detect the phy_type.</span>
<span class="gi">+		 * </span>
<span class="gi">+		 * 0 - Full Speed PHY</span>
<span class="gi">+		 * 1 - UTMI+ (default)</span>
<span class="gi">+		 * 2 - ULPI</span>
<span class="gi">+		 */</span>
<span class="gi">+	int32_t phy_type; </span>
<span class="gi">+#define DWC_PHY_TYPE_PARAM_FS 0</span>
<span class="gi">+#define DWC_PHY_TYPE_PARAM_UTMI 1</span>
<span class="gi">+#define DWC_PHY_TYPE_PARAM_ULPI 2</span>
<span class="gi">+#define dwc_param_phy_type_default DWC_PHY_TYPE_PARAM_UTMI</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Specifies the UTMI+ Data Width.	This parameter is</span>
<span class="gi">+	 * applicable for a PHY_TYPE of UTMI+ or ULPI. (For a ULPI</span>
<span class="gi">+	 * PHY_TYPE, this parameter indicates the data width between</span>
<span class="gi">+	 * the MAC and the ULPI Wrapper.) Also, this parameter is</span>
<span class="gi">+	 * applicable only if the OTG_HSPHY_WIDTH cC parameter was set</span>
<span class="gi">+	 * to &quot;8 and 16 bits&quot;, meaning that the core has been</span>
<span class="gi">+	 * configured to work at either data path width. </span>
<span class="gi">+	 *</span>
<span class="gi">+	 * 8 or 16 bits (default 16)</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t phy_utmi_width;</span>
<span class="gi">+#define dwc_param_phy_utmi_width_default 16</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Specifies whether the ULPI operates at double or single</span>
<span class="gi">+	 * data rate. This parameter is only applicable if PHY_TYPE is</span>
<span class="gi">+	 * ULPI.</span>
<span class="gi">+	 * </span>
<span class="gi">+	 * 0 - single data rate ULPI interface with 8 bit wide data</span>
<span class="gi">+	 * bus (default)</span>
<span class="gi">+	 * 1 - double data rate ULPI interface with 4 bit wide data</span>
<span class="gi">+	 * bus</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t phy_ulpi_ddr;</span>
<span class="gi">+#define dwc_param_phy_ulpi_ddr_default 0</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Specifies whether to use the internal or external supply to </span>
<span class="gi">+	 * drive the vbus with a ULPI phy.</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t phy_ulpi_ext_vbus;</span>
<span class="gi">+#define DWC_PHY_ULPI_INTERNAL_VBUS 0</span>
<span class="gi">+#define DWC_PHY_ULPI_EXTERNAL_VBUS 1</span>
<span class="gi">+#define dwc_param_phy_ulpi_ext_vbus_default DWC_PHY_ULPI_INTERNAL_VBUS</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Specifies whether to use the I2Cinterface for full speed PHY. This</span>
<span class="gi">+	 * parameter is only applicable if PHY_TYPE is FS.</span>
<span class="gi">+	 * 0 - No (default)</span>
<span class="gi">+	 * 1 - Yes</span>
<span class="gi">+	 */</span>
<span class="gi">+	int32_t i2c_enable;</span>
<span class="gi">+#define dwc_param_i2c_enable_default 0</span>
<span class="gi">+</span>
<span class="gi">+	int32_t ulpi_fs_ls;</span>
<span class="gi">+#define dwc_param_ulpi_fs_ls_default 0</span>
<span class="gi">+</span>
<span class="gi">+	int32_t ts_dline;</span>
<span class="gi">+#define dwc_param_ts_dline_default 0</span>
<span class="gi">+</span>
<span class="gi">+	/** Thresholding enable flag- </span>
<span class="gi">+	 * bit 0 - enable non-ISO Tx thresholding</span>
<span class="gi">+	 * bit 1 - enable ISO Tx thresholding</span>
<span class="gi">+	 * bit 2 - enable Rx thresholding</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint32_t thr_ctl;	 </span>
<span class="gi">+#define dwc_param_thr_ctl_default 0</span>
<span class="gi">+</span>
<span class="gi">+	/** Thresholding length for Tx </span>
<span class="gi">+	 *	FIFOs in 32 bit DWORDs</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint32_t tx_thr_length;	 </span>
<span class="gi">+#define dwc_param_tx_thr_length_default 64</span>
<span class="gi">+</span>
<span class="gi">+	/** Thresholding length for Rx </span>
<span class="gi">+	 *	FIFOs in 32 bit DWORDs</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint32_t rx_thr_length;	 </span>
<span class="gi">+#define dwc_param_rx_thr_length_default 64</span>
<span class="gi">+</span>
<span class="gi">+	/** Per Transfer Interrupt </span>
<span class="gi">+	 *	mode enable flag</span>
<span class="gi">+	 * 1 - Enabled</span>
<span class="gi">+	 * 0 - Disabled</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint32_t pti_enable;	 </span>
<span class="gi">+#define dwc_param_pti_enable_default 0</span>
<span class="gi">+</span>
<span class="gi">+	/** Molti Processor Interrupt </span>
<span class="gi">+	 *	mode enable flag</span>
<span class="gi">+	 * 1 - Enabled</span>
<span class="gi">+	 * 0 - Disabled</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint32_t mpi_enable;	 </span>
<span class="gi">+#define dwc_param_mpi_enable_default 0</span>
<span class="gi">+</span>
<span class="gi">+} dwc_otg_core_params_t;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+struct dwc_otg_core_if;</span>
<span class="gi">+typedef struct hc_xfer_info</span>
<span class="gi">+{</span>
<span class="gi">+	struct dwc_otg_core_if	*core_if;</span>
<span class="gi">+	dwc_hc_t		*hc;</span>
<span class="gi">+} hc_xfer_info_t;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * The &lt;code&gt;dwc_otg_core_if&lt;/code&gt; structure contains information needed to manage</span>
<span class="gi">+ * the DWC_otg controller acting in either host or device mode. It</span>
<span class="gi">+ * represents the programming view of the controller as a whole.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_core_if </span>
<span class="gi">+{</span>
<span class="gi">+	/** Parameters that define how the core should be configured.*/</span>
<span class="gi">+	dwc_otg_core_params_t	   *core_params;</span>
<span class="gi">+</span>
<span class="gi">+	/** Core Global registers starting at offset 000h. */</span>
<span class="gi">+	dwc_otg_core_global_regs_t *core_global_regs;</span>
<span class="gi">+  </span>
<span class="gi">+	/** Device-specific information */</span>
<span class="gi">+	dwc_otg_dev_if_t		   *dev_if;</span>
<span class="gi">+	/** Host-specific information */</span>
<span class="gi">+	dwc_otg_host_if_t		   *host_if;</span>
<span class="gi">+</span>
<span class="gi">+	/** Value from SNPSID register */</span>
<span class="gi">+	uint32_t snpsid;</span>
<span class="gi">+	</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Set to 1 if the core PHY interface bits in USBCFG have been</span>
<span class="gi">+	 * initialized.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t phy_init_done;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * SRP Success flag, set by srp success interrupt in FS I2C mode</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t srp_success;</span>
<span class="gi">+	uint8_t srp_timer_started;</span>
<span class="gi">+</span>
<span class="gi">+	/* Common configuration information */</span>
<span class="gi">+	/** Power and Clock Gating Control Register */</span>
<span class="gi">+	volatile uint32_t *pcgcctl;</span>
<span class="gi">+#define DWC_OTG_PCGCCTL_OFFSET 0xE00</span>
<span class="gi">+</span>
<span class="gi">+	/** Push/pop addresses for endpoints or host channels.*/</span>
<span class="gi">+	uint32_t *data_fifo[MAX_EPS_CHANNELS];</span>
<span class="gi">+#define DWC_OTG_DATA_FIFO_OFFSET 0x1000</span>
<span class="gi">+#define DWC_OTG_DATA_FIFO_SIZE 0x1000</span>
<span class="gi">+</span>
<span class="gi">+	/** Total RAM for FIFOs (Bytes) */</span>
<span class="gi">+	uint16_t total_fifo_size;</span>
<span class="gi">+	/** Size of Rx FIFO (Bytes) */</span>
<span class="gi">+	uint16_t rx_fifo_size;</span>
<span class="gi">+	/** Size of Non-periodic Tx FIFO (Bytes) */</span>
<span class="gi">+	uint16_t nperio_tx_fifo_size;</span>
<span class="gi">+		</span>
<span class="gi">+		</span>
<span class="gi">+	/** 1 if DMA is enabled, 0 otherwise. */</span>
<span class="gi">+	uint8_t dma_enable;</span>
<span class="gi">+</span>
<span class="gi">+	/** 1 if Descriptor DMA mode is enabled, 0 otherwise. */</span>
<span class="gi">+	uint8_t dma_desc_enable;</span>
<span class="gi">+</span>
<span class="gi">+	/** 1 if PTI Enhancement mode is enabled, 0 otherwise. */</span>
<span class="gi">+	uint8_t pti_enh_enable;</span>
<span class="gi">+</span>
<span class="gi">+	/** 1 if MPI Enhancement mode is enabled, 0 otherwise. */</span>
<span class="gi">+	uint8_t multiproc_int_enable;</span>
<span class="gi">+</span>
<span class="gi">+	/** 1 if dedicated Tx FIFOs are enabled, 0 otherwise. */</span>
<span class="gi">+	uint8_t en_multiple_tx_fifo;</span>
<span class="gi">+</span>
<span class="gi">+	/** Set to 1 if multiple packets of a high-bandwidth transfer is in</span>
<span class="gi">+	 * process of being queued */</span>
<span class="gi">+	uint8_t queuing_high_bandwidth;</span>
<span class="gi">+</span>
<span class="gi">+	/** Hardware Configuration -- stored here for convenience.*/</span>
<span class="gi">+	hwcfg1_data_t hwcfg1;</span>
<span class="gi">+	hwcfg2_data_t hwcfg2;</span>
<span class="gi">+	hwcfg3_data_t hwcfg3;</span>
<span class="gi">+	hwcfg4_data_t hwcfg4;</span>
<span class="gi">+</span>
<span class="gi">+	/** Host and Device Configuration -- stored here for convenience.*/</span>
<span class="gi">+	hcfg_data_t hcfg;</span>
<span class="gi">+	dcfg_data_t dcfg;</span>
<span class="gi">+	</span>
<span class="gi">+	/** The operational State, during transations</span>
<span class="gi">+	 * (a_host&gt;&gt;a_peripherial and b_device=&gt;b_host) this may not</span>
<span class="gi">+	 * match the core but allows the software to determine</span>
<span class="gi">+	 * transitions.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t op_state;</span>
<span class="gi">+		</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Set to 1 if the HCD needs to be restarted on a session request</span>
<span class="gi">+	 * interrupt. This is required if no connector ID status change has</span>
<span class="gi">+	 * occurred since the HCD was last disconnected.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t restart_hcd_on_session_req;</span>
<span class="gi">+</span>
<span class="gi">+	/** HCD callbacks */</span>
<span class="gi">+	/** A-Device is a_host */</span>
<span class="gi">+#define A_HOST		(1)</span>
<span class="gi">+	/** A-Device is a_suspend */</span>
<span class="gi">+#define A_SUSPEND	(2)</span>
<span class="gi">+	/** A-Device is a_peripherial */</span>
<span class="gi">+#define A_PERIPHERAL	(3)</span>
<span class="gi">+	/** B-Device is operating as a Peripheral. */</span>
<span class="gi">+#define B_PERIPHERAL	(4)</span>
<span class="gi">+	/** B-Device is operating as a Host. */</span>
<span class="gi">+#define B_HOST		(5)		   </span>
<span class="gi">+</span>
<span class="gi">+	/** HCD callbacks */</span>
<span class="gi">+	struct dwc_otg_cil_callbacks *hcd_cb;</span>
<span class="gi">+	/** PCD callbacks */</span>
<span class="gi">+	struct dwc_otg_cil_callbacks *pcd_cb;		 </span>
<span class="gi">+</span>
<span class="gi">+	/** Device mode Periodic Tx FIFO Mask */</span>
<span class="gi">+	uint32_t p_tx_msk;</span>
<span class="gi">+	/** Device mode Periodic Tx FIFO Mask */</span>
<span class="gi">+	uint32_t tx_msk;</span>
<span class="gi">+	</span>
<span class="gi">+	/** Workqueue object used for handling several interrupts */</span>
<span class="gi">+	struct workqueue_struct *wq_otg;	</span>
<span class="gi">+	</span>
<span class="gi">+	/** Work object used for handling &quot;Connector ID Status Change&quot; Interrupt */</span>
<span class="gi">+	struct work_struct 	w_conn_id;	</span>
<span class="gi">+</span>
<span class="gi">+	/** Work object used for handling &quot;Wakeup Detected&quot; Interrupt */</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct work_struct	w_wkp;</span>
<span class="gi">+#else</span>
<span class="gi">+	struct delayed_work	w_wkp;</span>
<span class="gi">+#endif		</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	uint32_t		start_hcchar_val[MAX_EPS_CHANNELS];</span>
<span class="gi">+</span>
<span class="gi">+	hc_xfer_info_t		hc_xfer_info[MAX_EPS_CHANNELS];</span>
<span class="gi">+	struct timer_list	hc_xfer_timer[MAX_EPS_CHANNELS];</span>
<span class="gi">+</span>
<span class="gi">+	uint32_t		hfnum_7_samples;</span>
<span class="gi">+	uint64_t		hfnum_7_frrem_accum;</span>
<span class="gi">+	uint32_t		hfnum_0_samples;</span>
<span class="gi">+	uint64_t		hfnum_0_frrem_accum;</span>
<span class="gi">+	uint32_t		hfnum_other_samples;</span>
<span class="gi">+	uint64_t		hfnum_other_frrem_accum;</span>
<span class="gi">+#endif	</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+} dwc_otg_core_if_t;</span>
<span class="gi">+</span>
<span class="gi">+/*We must clear S3C24XX_EINTPEND external interrupt register </span>
<span class="gi">+ * because after clearing in this register trigerred IRQ from </span>
<span class="gi">+ * H/W core in kernel interrupt can be occured again before OTG</span>
<span class="gi">+ * handlers clear all IRQ sources of Core registers because of</span>
<span class="gi">+ * timing latencies and Low Level IRQ Type.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+#ifdef CONFIG_MACH_IPMATE</span>
<span class="gi">+#define  S3C2410X_CLEAR_EINTPEND()   \</span>
<span class="gi">+do { \</span>
<span class="gi">+	if (!dwc_otg_read_core_intr(core_if)) { \</span>
<span class="gi">+	__raw_writel(1UL &lt;&lt; 11,S3C24XX_EINTPEND); \</span>
<span class="gi">+	} \</span>
<span class="gi">+} while (0)</span>
<span class="gi">+#else</span>
<span class="gi">+#define  S3C2410X_CLEAR_EINTPEND()   do { } while (0)</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * The following functions are functions for works </span>
<span class="gi">+ * using during handling some interrupts</span>
<span class="gi">+ */</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+</span>
<span class="gi">+extern void w_conn_id_status_change(void *p);</span>
<span class="gi">+extern void w_wakeup_detected(void *p);</span>
<span class="gi">+</span>
<span class="gi">+#else</span>
<span class="gi">+</span>
<span class="gi">+extern void w_conn_id_status_change(struct work_struct *p);</span>
<span class="gi">+extern void w_wakeup_detected(struct work_struct *p);</span>
<span class="gi">+</span>
<span class="gi">+#endif		</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * The following functions support initialization of the CIL driver component</span>
<span class="gi">+ * and the DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+extern dwc_otg_core_if_t *dwc_otg_cil_init(const uint32_t *_reg_base_addr,</span>
<span class="gi">+					   dwc_otg_core_params_t *_core_params);</span>
<span class="gi">+extern void dwc_otg_cil_remove(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+extern void dwc_otg_core_init(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+extern void dwc_otg_core_host_init(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+extern void dwc_otg_core_dev_init(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+extern void dwc_otg_enable_global_interrupts( dwc_otg_core_if_t *_core_if );</span>
<span class="gi">+extern void dwc_otg_disable_global_interrupts( dwc_otg_core_if_t *_core_if );</span>
<span class="gi">+</span>
<span class="gi">+/** @name Device CIL Functions</span>
<span class="gi">+ * The following functions support managing the DWC_otg controller in device</span>
<span class="gi">+ * mode.</span>
<span class="gi">+ */</span>
<span class="gi">+/**@{*/</span>
<span class="gi">+extern void dwc_otg_wakeup(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+extern void dwc_otg_read_setup_packet (dwc_otg_core_if_t *_core_if, uint32_t *_dest);</span>
<span class="gi">+extern uint32_t dwc_otg_get_frame_number(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+extern void dwc_otg_ep0_activate(dwc_otg_core_if_t *_core_if, dwc_ep_t *_ep);</span>
<span class="gi">+extern void dwc_otg_ep_activate(dwc_otg_core_if_t *_core_if, dwc_ep_t *_ep);</span>
<span class="gi">+extern void dwc_otg_ep_deactivate(dwc_otg_core_if_t *_core_if, dwc_ep_t *_ep);</span>
<span class="gi">+extern void dwc_otg_ep_start_transfer(dwc_otg_core_if_t *_core_if, dwc_ep_t *_ep);</span>
<span class="gi">+extern void dwc_otg_ep_start_zl_transfer(dwc_otg_core_if_t *_core_if, dwc_ep_t *_ep);</span>
<span class="gi">+extern void dwc_otg_ep0_start_transfer(dwc_otg_core_if_t *_core_if, dwc_ep_t *_ep);</span>
<span class="gi">+extern void dwc_otg_ep0_continue_transfer(dwc_otg_core_if_t *_core_if, dwc_ep_t *_ep);</span>
<span class="gi">+extern void dwc_otg_ep_write_packet(dwc_otg_core_if_t *_core_if, dwc_ep_t *_ep, int _dma);</span>
<span class="gi">+extern void dwc_otg_ep_set_stall(dwc_otg_core_if_t *_core_if, dwc_ep_t *_ep);</span>
<span class="gi">+extern void dwc_otg_ep_clear_stall(dwc_otg_core_if_t *_core_if, dwc_ep_t *_ep);</span>
<span class="gi">+extern void dwc_otg_enable_device_interrupts(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+extern void dwc_otg_dump_dev_registers(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+extern void dwc_otg_dump_spram(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+extern void dwc_otg_iso_ep_start_frm_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *ep);</span>
<span class="gi">+extern void dwc_otg_iso_ep_start_buf_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *ep);</span>
<span class="gi">+#endif //DWC_EN_ISOC		</span>
<span class="gi">+/**@}*/</span>
<span class="gi">+</span>
<span class="gi">+/** @name Host CIL Functions</span>
<span class="gi">+ * The following functions support managing the DWC_otg controller in host</span>
<span class="gi">+ * mode.</span>
<span class="gi">+ */</span>
<span class="gi">+/**@{*/</span>
<span class="gi">+extern void dwc_otg_hc_init(dwc_otg_core_if_t *_core_if, dwc_hc_t *_hc);</span>
<span class="gi">+extern void dwc_otg_hc_halt(dwc_otg_core_if_t *_core_if,</span>
<span class="gi">+				dwc_hc_t *_hc,</span>
<span class="gi">+				dwc_otg_halt_status_e _halt_status);</span>
<span class="gi">+extern void dwc_otg_hc_cleanup(dwc_otg_core_if_t *_core_if, dwc_hc_t *_hc);</span>
<span class="gi">+extern void dwc_otg_hc_start_transfer(dwc_otg_core_if_t *_core_if, dwc_hc_t *_hc);</span>
<span class="gi">+extern int dwc_otg_hc_continue_transfer(dwc_otg_core_if_t *_core_if, dwc_hc_t *_hc);</span>
<span class="gi">+extern void dwc_otg_hc_do_ping(dwc_otg_core_if_t *_core_if, dwc_hc_t *_hc);</span>
<span class="gi">+extern void dwc_otg_hc_write_packet(dwc_otg_core_if_t *_core_if, dwc_hc_t *_hc);</span>
<span class="gi">+extern void dwc_otg_enable_host_interrupts(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+extern void dwc_otg_disable_host_interrupts(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function Reads HPRT0 in preparation to modify.	It keeps the</span>
<span class="gi">+ * WC bits 0 so that if they are read as 1, they won&#39;t clear when you</span>
<span class="gi">+ * write it back </span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t dwc_otg_read_hprt0(dwc_otg_core_if_t *_core_if) </span>
<span class="gi">+{</span>
<span class="gi">+	hprt0_data_t hprt0;</span>
<span class="gi">+	hprt0.d32 = dwc_read_reg32(_core_if-&gt;host_if-&gt;hprt0);</span>
<span class="gi">+	hprt0.b.prtena = 0;</span>
<span class="gi">+	hprt0.b.prtconndet = 0;</span>
<span class="gi">+	hprt0.b.prtenchng = 0;</span>
<span class="gi">+	hprt0.b.prtovrcurrchng = 0;</span>
<span class="gi">+	return hprt0.d32;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+extern void dwc_otg_dump_host_registers(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+/**@}*/</span>
<span class="gi">+</span>
<span class="gi">+/** @name Common CIL Functions</span>
<span class="gi">+ * The following functions support managing the DWC_otg controller in either</span>
<span class="gi">+ * device or host mode.</span>
<span class="gi">+ */</span>
<span class="gi">+/**@{*/</span>
<span class="gi">+</span>
<span class="gi">+extern void dwc_otg_read_packet(dwc_otg_core_if_t *core_if,</span>
<span class="gi">+				uint8_t *dest, </span>
<span class="gi">+				uint16_t bytes);</span>
<span class="gi">+</span>
<span class="gi">+extern void dwc_otg_dump_global_registers(dwc_otg_core_if_t *_core_if);</span>
<span class="gi">+</span>
<span class="gi">+extern void dwc_otg_flush_tx_fifo( dwc_otg_core_if_t *_core_if, </span>
<span class="gi">+								   const int _num );</span>
<span class="gi">+extern void dwc_otg_flush_rx_fifo( dwc_otg_core_if_t *_core_if );</span>
<span class="gi">+extern void dwc_otg_core_reset( dwc_otg_core_if_t *_core_if );</span>
<span class="gi">+</span>
<span class="gi">+extern dwc_otg_dma_desc_t* dwc_otg_ep_alloc_desc_chain(uint32_t * dma_desc_addr, uint32_t count);</span>
<span class="gi">+extern void dwc_otg_ep_free_desc_chain(dwc_otg_dma_desc_t* desc_addr, uint32_t dma_desc_addr, uint32_t count);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function returns the Core Interrupt register.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t dwc_otg_read_core_intr(dwc_otg_core_if_t *_core_if) </span>
<span class="gi">+{</span>
<span class="gi">+	return (dwc_read_reg32(&amp;_core_if-&gt;core_global_regs-&gt;gintsts) &amp;</span>
<span class="gi">+		dwc_read_reg32(&amp;_core_if-&gt;core_global_regs-&gt;gintmsk));</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function returns the OTG Interrupt register.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t dwc_otg_read_otg_intr (dwc_otg_core_if_t *_core_if) </span>
<span class="gi">+{</span>
<span class="gi">+	return (dwc_read_reg32 (&amp;_core_if-&gt;core_global_regs-&gt;gotgint));</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function reads the Device All Endpoints Interrupt register and</span>
<span class="gi">+ * returns the IN endpoint interrupt bits.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t dwc_otg_read_dev_all_in_ep_intr(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t v;</span>
<span class="gi">+	</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		v = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;deachint) &amp;</span>
<span class="gi">+				dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;deachintmsk);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		v = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daint) &amp;</span>
<span class="gi">+				dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daintmsk);</span>
<span class="gi">+	}</span>
<span class="gi">+	return (v &amp; 0xffff);</span>
<span class="gi">+		</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function reads the Device All Endpoints Interrupt register and</span>
<span class="gi">+ * returns the OUT endpoint interrupt bits.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t dwc_otg_read_dev_all_out_ep_intr(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t v;</span>
<span class="gi">+	</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		v = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;deachint) &amp;</span>
<span class="gi">+				dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;deachintmsk);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		v = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daint) &amp;</span>
<span class="gi">+				dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;daintmsk);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return ((v &amp; 0xffff0000) &gt;&gt; 16);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function returns the Device IN EP Interrupt register</span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t dwc_otg_read_dev_in_ep_intr(dwc_otg_core_if_t *core_if,</span>
<span class="gi">+							dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	uint32_t v, msk, emp;</span>
<span class="gi">+	</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		msk = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepeachintmsk[ep-&gt;num]);</span>
<span class="gi">+		emp = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dtknqr4_fifoemptymsk);</span>
<span class="gi">+		msk |= ((emp &gt;&gt; ep-&gt;num) &amp; 0x1) &lt;&lt; 7;</span>
<span class="gi">+		v = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepint) &amp; msk;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		msk = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepmsk);</span>
<span class="gi">+		emp = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dtknqr4_fifoemptymsk);</span>
<span class="gi">+		msk |= ((emp &gt;&gt; ep-&gt;num) &amp; 0x1) &lt;&lt; 7;</span>
<span class="gi">+		v = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepint) &amp; msk;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	return v;		 </span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function returns the Device OUT EP Interrupt register</span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t dwc_otg_read_dev_out_ep_intr(dwc_otg_core_if_t *_core_if, </span>
<span class="gi">+							dwc_ep_t *_ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = _core_if-&gt;dev_if;</span>
<span class="gi">+	uint32_t v;</span>
<span class="gi">+	doepmsk_data_t msk = { .d32 = 0 };</span>
<span class="gi">+	</span>
<span class="gi">+	if(_core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		msk.d32 = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;doepeachintmsk[_ep-&gt;num]);</span>
<span class="gi">+		if(_core_if-&gt;pti_enh_enable) {</span>
<span class="gi">+			msk.b.pktdrpsts = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+		v = dwc_read_reg32( &amp;dev_if-&gt;out_ep_regs[_ep-&gt;num]-&gt;doepint) &amp; msk.d32;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		msk.d32 = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;doepmsk);</span>
<span class="gi">+		if(_core_if-&gt;pti_enh_enable) {</span>
<span class="gi">+			msk.b.pktdrpsts = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+		v = dwc_read_reg32( &amp;dev_if-&gt;out_ep_regs[_ep-&gt;num]-&gt;doepint) &amp; msk.d32;		</span>
<span class="gi">+	}</span>
<span class="gi">+	return v;		 </span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function returns the Host All Channel Interrupt register</span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t dwc_otg_read_host_all_channels_intr (dwc_otg_core_if_t *_core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	return (dwc_read_reg32 (&amp;_core_if-&gt;host_if-&gt;host_global_regs-&gt;haint));</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static inline uint32_t dwc_otg_read_host_channel_intr (dwc_otg_core_if_t *_core_if, dwc_hc_t *_hc)</span>
<span class="gi">+{</span>
<span class="gi">+	return (dwc_read_reg32 (&amp;_core_if-&gt;host_if-&gt;hc_regs[_hc-&gt;hc_num]-&gt;hcint));</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function returns the mode of the operation, host or device.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return 0 - Device Mode, 1 - Host Mode </span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t dwc_otg_mode(dwc_otg_core_if_t *_core_if) </span>
<span class="gi">+{</span>
<span class="gi">+	return (dwc_read_reg32( &amp;_core_if-&gt;core_global_regs-&gt;gintsts ) &amp; 0x1);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static inline uint8_t dwc_otg_is_device_mode(dwc_otg_core_if_t *_core_if) </span>
<span class="gi">+{</span>
<span class="gi">+	return (dwc_otg_mode(_core_if) != DWC_HOST_MODE);</span>
<span class="gi">+}</span>
<span class="gi">+static inline uint8_t dwc_otg_is_host_mode(dwc_otg_core_if_t *_core_if) </span>
<span class="gi">+{</span>
<span class="gi">+	return (dwc_otg_mode(_core_if) == DWC_HOST_MODE);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+extern int32_t dwc_otg_handle_common_intr( dwc_otg_core_if_t *_core_if );</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**@}*/</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * DWC_otg CIL callback structure.	This structure allows the HCD and</span>
<span class="gi">+ * PCD to register functions used for starting and stopping the PCD</span>
<span class="gi">+ * and HCD for role change on for a DRD.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_cil_callbacks </span>
<span class="gi">+{</span>
<span class="gi">+	/** Start function for role change */</span>
<span class="gi">+	int (*start) (void *_p);</span>
<span class="gi">+	/** Stop Function for role change */</span>
<span class="gi">+	int (*stop) (void *_p);</span>
<span class="gi">+	/** Disconnect Function for role change */</span>
<span class="gi">+	int (*disconnect) (void *_p);</span>
<span class="gi">+	/** Resume/Remote wakeup Function */</span>
<span class="gi">+	int (*resume_wakeup) (void *_p);</span>
<span class="gi">+	/** Suspend function */</span>
<span class="gi">+	int (*suspend) (void *_p);</span>
<span class="gi">+	/** Session Start (SRP) */</span>
<span class="gi">+	int (*session_start) (void *_p);</span>
<span class="gi">+	/** Pointer passed to start() and stop() */</span>
<span class="gi">+	void *p;</span>
<span class="gi">+} dwc_otg_cil_callbacks_t;</span>
<span class="gi">+</span>
<span class="gi">+extern void dwc_otg_cil_register_pcd_callbacks( dwc_otg_core_if_t *_core_if,</span>
<span class="gi">+						dwc_otg_cil_callbacks_t *_cb,</span>
<span class="gi">+						void *_p);</span>
<span class="gi">+extern void dwc_otg_cil_register_hcd_callbacks( dwc_otg_core_if_t *_core_if,</span>
<span class="gi">+						dwc_otg_cil_callbacks_t *_cb,</span>
<span class="gi">+						void *_p);</span>
<span class="gi">+#ifndef warn</span>
<span class="gi">+#define warn printk</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_cil_intr.c</span>
<span class="gu">@@ -0,0 +1,881 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil_intr.c $</span>
<span class="gi">+ * $Revision: #10 $</span>
<span class="gi">+ * $Date: 2008/07/16 $</span>
<span class="gi">+ * $Change: 1065567 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+</span>
<span class="gi">+/** @file </span>
<span class="gi">+ *</span>
<span class="gi">+ * The Core Interface Layer provides basic services for accessing and</span>
<span class="gi">+ * managing the DWC_otg hardware. These services are used by both the</span>
<span class="gi">+ * Host Controller Driver and the Peripheral Controller Driver.</span>
<span class="gi">+ *</span>
<span class="gi">+ * This file contains the Common Interrupt handlers.</span>
<span class="gi">+ */</span>
<span class="gi">+#include &quot;dwc_otg_plat.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_regs.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_cil.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_pcd.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+inline const char *op_state_str(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+        return (core_if-&gt;op_state==A_HOST?&quot;a_host&quot;:</span>
<span class="gi">+                (core_if-&gt;op_state==A_SUSPEND?&quot;a_suspend&quot;:</span>
<span class="gi">+                 (core_if-&gt;op_state==A_PERIPHERAL?&quot;a_peripheral&quot;:</span>
<span class="gi">+                  (core_if-&gt;op_state==B_PERIPHERAL?&quot;b_peripheral&quot;:</span>
<span class="gi">+                   (core_if-&gt;op_state==B_HOST?&quot;b_host&quot;:</span>
<span class="gi">+                    &quot;unknown&quot;)))));</span>
<span class="gi">+}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+/** This function will log a debug message </span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_handle_mode_mismatch_intr (dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+	DWC_WARN(&quot;Mode Mismatch Interrupt: currently in %s mode\n&quot;, </span>
<span class="gi">+		 dwc_otg_mode(core_if) ? &quot;Host&quot; : &quot;Device&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.modemismatch = 1;	</span>
<span class="gi">+	dwc_write_reg32 (&amp;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Start the HCD.  Helper function for using the HCD callbacks.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void hcd_start(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{        </span>
<span class="gi">+        if (core_if-&gt;hcd_cb &amp;&amp; core_if-&gt;hcd_cb-&gt;start) {</span>
<span class="gi">+                core_if-&gt;hcd_cb-&gt;start(core_if-&gt;hcd_cb-&gt;p);</span>
<span class="gi">+        }</span>
<span class="gi">+}</span>
<span class="gi">+/** Stop the HCD.  Helper function for using the HCD callbacks. </span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void hcd_stop(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{        </span>
<span class="gi">+        if (core_if-&gt;hcd_cb &amp;&amp; core_if-&gt;hcd_cb-&gt;stop) {</span>
<span class="gi">+                core_if-&gt;hcd_cb-&gt;stop(core_if-&gt;hcd_cb-&gt;p);</span>
<span class="gi">+        }</span>
<span class="gi">+}</span>
<span class="gi">+/** Disconnect the HCD.  Helper function for using the HCD callbacks.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void hcd_disconnect(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+        if (core_if-&gt;hcd_cb &amp;&amp; core_if-&gt;hcd_cb-&gt;disconnect) {</span>
<span class="gi">+                core_if-&gt;hcd_cb-&gt;disconnect(core_if-&gt;hcd_cb-&gt;p);</span>
<span class="gi">+        }</span>
<span class="gi">+}</span>
<span class="gi">+/** Inform the HCD the a New Session has begun.  Helper function for</span>
<span class="gi">+ * using the HCD callbacks.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void hcd_session_start(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+        if (core_if-&gt;hcd_cb &amp;&amp; core_if-&gt;hcd_cb-&gt;session_start) {</span>
<span class="gi">+                core_if-&gt;hcd_cb-&gt;session_start(core_if-&gt;hcd_cb-&gt;p);</span>
<span class="gi">+        }</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Start the PCD.  Helper function for using the PCD callbacks.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void pcd_start(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+        if (core_if-&gt;pcd_cb &amp;&amp; core_if-&gt;pcd_cb-&gt;start) {</span>
<span class="gi">+                core_if-&gt;pcd_cb-&gt;start(core_if-&gt;pcd_cb-&gt;p);</span>
<span class="gi">+        }</span>
<span class="gi">+}</span>
<span class="gi">+/** Stop the PCD.  Helper function for using the PCD callbacks. </span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void pcd_stop(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+        if (core_if-&gt;pcd_cb &amp;&amp; core_if-&gt;pcd_cb-&gt;stop) {</span>
<span class="gi">+                core_if-&gt;pcd_cb-&gt;stop(core_if-&gt;pcd_cb-&gt;p);</span>
<span class="gi">+        }</span>
<span class="gi">+}</span>
<span class="gi">+/** Suspend the PCD.  Helper function for using the PCD callbacks. </span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void pcd_suspend(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+        if (core_if-&gt;pcd_cb &amp;&amp; core_if-&gt;pcd_cb-&gt;suspend) {</span>
<span class="gi">+                core_if-&gt;pcd_cb-&gt;suspend(core_if-&gt;pcd_cb-&gt;p);</span>
<span class="gi">+        }</span>
<span class="gi">+}</span>
<span class="gi">+/** Resume the PCD.  Helper function for using the PCD callbacks. </span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void pcd_resume(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+        if (core_if-&gt;pcd_cb &amp;&amp; core_if-&gt;pcd_cb-&gt;resume_wakeup) {</span>
<span class="gi">+                core_if-&gt;pcd_cb-&gt;resume_wakeup(core_if-&gt;pcd_cb-&gt;p);</span>
<span class="gi">+        }</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function handles the OTG Interrupts. It reads the OTG</span>
<span class="gi">+ * Interrupt Register (GOTGINT) to determine what interrupt has</span>
<span class="gi">+ * occurred.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_handle_otg_intr(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+        dwc_otg_core_global_regs_t *global_regs = </span>
<span class="gi">+                core_if-&gt;core_global_regs;</span>
<span class="gi">+	gotgint_data_t gotgint;</span>
<span class="gi">+        gotgctl_data_t gotgctl;</span>
<span class="gi">+	gintmsk_data_t gintmsk;</span>
<span class="gi">+</span>
<span class="gi">+	gotgint.d32 = dwc_read_reg32(&amp;global_regs-&gt;gotgint);</span>
<span class="gi">+        gotgctl.d32 = dwc_read_reg32(&amp;global_regs-&gt;gotgctl);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;++OTG Interrupt gotgint=%0x [%s]\n&quot;, gotgint.d32,</span>
<span class="gi">+                    op_state_str(core_if));</span>
<span class="gi">+        //DWC_DEBUGPL(DBG_CIL, &quot;gotgctl=%08x\n&quot;, gotgctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+	if (gotgint.b.sesenddet) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot; ++OTG Interrupt: &quot;</span>
<span class="gi">+			    &quot;Session End Detected++ (%s)\n&quot;,</span>
<span class="gi">+                            op_state_str(core_if));</span>
<span class="gi">+                gotgctl.d32 = dwc_read_reg32(&amp;global_regs-&gt;gotgctl);</span>
<span class="gi">+</span>
<span class="gi">+                if (core_if-&gt;op_state == B_HOST) {</span>
<span class="gi">+</span>
<span class="gi">+			dwc_otg_pcd_t *pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+			if(unlikely(!pcd)) {</span>
<span class="gi">+				DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+				BUG();</span>
<span class="gi">+			}</span>
<span class="gi">+			SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                        pcd_start(core_if);</span>
<span class="gi">+</span>
<span class="gi">+			SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+                        core_if-&gt;op_state = B_PERIPHERAL;</span>
<span class="gi">+                } else {</span>
<span class="gi">+			dwc_otg_pcd_t *pcd;</span>
<span class="gi">+</span>
<span class="gi">+                        /* If not B_HOST and Device HNP still set. HNP</span>
<span class="gi">+                         * Did not succeed!*/</span>
<span class="gi">+                        if (gotgctl.b.devhnpen) {</span>
<span class="gi">+                                DWC_DEBUGPL(DBG_ANY, &quot;Session End Detected\n&quot;);</span>
<span class="gi">+                                DWC_ERROR(&quot;Device Not Connected/Responding!\n&quot;);</span>
<span class="gi">+                        }</span>
<span class="gi">+</span>
<span class="gi">+                        /* If Session End Detected the B-Cable has</span>
<span class="gi">+                         * been disconnected. */</span>
<span class="gi">+                        /* Reset PCD and Gadget driver to a</span>
<span class="gi">+                         * clean state. */</span>
<span class="gi">+</span>
<span class="gi">+			pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+			if(unlikely(!pcd)) {</span>
<span class="gi">+				DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+				BUG();</span>
<span class="gi">+			}</span>
<span class="gi">+			SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                        pcd_stop(core_if);</span>
<span class="gi">+</span>
<span class="gi">+			SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+                }</span>
<span class="gi">+                gotgctl.d32 = 0;</span>
<span class="gi">+                gotgctl.b.devhnpen = 1;</span>
<span class="gi">+                dwc_modify_reg32(&amp;global_regs-&gt;gotgctl, </span>
<span class="gi">+                                  gotgctl.d32, 0);</span>
<span class="gi">+        }</span>
<span class="gi">+	if (gotgint.b.sesreqsucstschng) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot; ++OTG Interrupt: &quot;</span>
<span class="gi">+			    &quot;Session Reqeust Success Status Change++\n&quot;);</span>
<span class="gi">+                gotgctl.d32 = dwc_read_reg32(&amp;global_regs-&gt;gotgctl);</span>
<span class="gi">+                if (gotgctl.b.sesreqscs) {</span>
<span class="gi">+			if ((core_if-&gt;core_params-&gt;phy_type == DWC_PHY_TYPE_PARAM_FS) &amp;&amp; </span>
<span class="gi">+			    (core_if-&gt;core_params-&gt;i2c_enable)) {</span>
<span class="gi">+				core_if-&gt;srp_success = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+			else {</span>
<span class="gi">+				dwc_otg_pcd_t *pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+				if(unlikely(!pcd)) {</span>
<span class="gi">+					DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+					BUG();</span>
<span class="gi">+				}</span>
<span class="gi">+				SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+	</span>
<span class="gi">+				pcd_resume(core_if);</span>
<span class="gi">+	</span>
<span class="gi">+				SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+				/* Clear Session Request */</span>
<span class="gi">+				gotgctl.d32 = 0;</span>
<span class="gi">+				gotgctl.b.sesreq = 1;</span>
<span class="gi">+				dwc_modify_reg32(&amp;global_regs-&gt;gotgctl, </span>
<span class="gi">+						  gotgctl.d32, 0);</span>
<span class="gi">+			}</span>
<span class="gi">+                }</span>
<span class="gi">+	}</span>
<span class="gi">+	if (gotgint.b.hstnegsucstschng) {</span>
<span class="gi">+                /* Print statements during the HNP interrupt handling</span>
<span class="gi">+                 * can cause it to fail.*/</span>
<span class="gi">+                gotgctl.d32 = dwc_read_reg32(&amp;global_regs-&gt;gotgctl);</span>
<span class="gi">+                if (gotgctl.b.hstnegscs) {</span>
<span class="gi">+                        if (dwc_otg_is_host_mode(core_if)) {</span>
<span class="gi">+				dwc_otg_pcd_t *pcd;</span>
<span class="gi">+</span>
<span class="gi">+                                core_if-&gt;op_state = B_HOST;</span>
<span class="gi">+				/*</span>
<span class="gi">+				 * Need to disable SOF interrupt immediately.</span>
<span class="gi">+				 * When switching from device to host, the PCD</span>
<span class="gi">+				 * interrupt handler won&#39;t handle the</span>
<span class="gi">+				 * interrupt if host mode is already set. The</span>
<span class="gi">+				 * HCD interrupt handler won&#39;t get called if</span>
<span class="gi">+				 * the HCD state is HALT. This means that the</span>
<span class="gi">+				 * interrupt does not get handled and Linux</span>
<span class="gi">+				 * complains loudly.</span>
<span class="gi">+				 */</span>
<span class="gi">+				gintmsk.d32 = 0;</span>
<span class="gi">+				gintmsk.b.sofintr = 1;</span>
<span class="gi">+				dwc_modify_reg32(&amp;global_regs-&gt;gintmsk,</span>
<span class="gi">+						 gintmsk.d32, 0);</span>
<span class="gi">+						 </span>
<span class="gi">+				pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+				if(unlikely(!pcd)) {</span>
<span class="gi">+					DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+					BUG();</span>
<span class="gi">+				}</span>
<span class="gi">+				SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                                pcd_stop(core_if);</span>
<span class="gi">+</span>
<span class="gi">+				SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+                                /*</span>
<span class="gi">+                                 * Initialize the Core for Host mode.</span>
<span class="gi">+                                 */</span>
<span class="gi">+                                hcd_start(core_if);</span>
<span class="gi">+                                core_if-&gt;op_state = B_HOST;</span>
<span class="gi">+                        }</span>
<span class="gi">+                } else {</span>
<span class="gi">+                        gotgctl.d32 = 0;</span>
<span class="gi">+                        gotgctl.b.hnpreq = 1;</span>
<span class="gi">+                        gotgctl.b.devhnpen = 1;</span>
<span class="gi">+                        dwc_modify_reg32(&amp;global_regs-&gt;gotgctl, </span>
<span class="gi">+                                          gotgctl.d32, 0);</span>
<span class="gi">+                        DWC_DEBUGPL(DBG_ANY, &quot;HNP Failed\n&quot;);</span>
<span class="gi">+                        DWC_ERROR(&quot;Device Not Connected/Responding\n&quot;);</span>
<span class="gi">+                }</span>
<span class="gi">+	}</span>
<span class="gi">+	if (gotgint.b.hstnegdet) {</span>
<span class="gi">+                /* The disconnect interrupt is set at the same time as</span>
<span class="gi">+		 * Host Negotiation Detected.  During the mode</span>
<span class="gi">+		 * switch all interrupts are cleared so the disconnect</span>
<span class="gi">+		 * interrupt handler will not get executed.</span>
<span class="gi">+                 */</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot; ++OTG Interrupt: &quot;</span>
<span class="gi">+			    &quot;Host Negotiation Detected++ (%s)\n&quot;, </span>
<span class="gi">+                            (dwc_otg_is_host_mode(core_if)?&quot;Host&quot;:&quot;Device&quot;));</span>
<span class="gi">+                if (dwc_otg_is_device_mode(core_if)){</span>
<span class="gi">+			dwc_otg_pcd_t *pcd;</span>
<span class="gi">+</span>
<span class="gi">+                	DWC_DEBUGPL(DBG_ANY, &quot;a_suspend-&gt;a_peripheral (%d)\n&quot;, core_if-&gt;op_state);</span>
<span class="gi">+                        hcd_disconnect(core_if);</span>
<span class="gi">+                        </span>
<span class="gi">+			pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+			if(unlikely(!pcd)) {</span>
<span class="gi">+				DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+				BUG();</span>
<span class="gi">+			}</span>
<span class="gi">+			SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                        pcd_start(core_if);</span>
<span class="gi">+</span>
<span class="gi">+			SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+                        core_if-&gt;op_state = A_PERIPHERAL;</span>
<span class="gi">+                } else {</span>
<span class="gi">+			dwc_otg_pcd_t *pcd;</span>
<span class="gi">+</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Need to disable SOF interrupt immediately. When</span>
<span class="gi">+			 * switching from device to host, the PCD interrupt</span>
<span class="gi">+			 * handler won&#39;t handle the interrupt if host mode is</span>
<span class="gi">+			 * already set. The HCD interrupt handler won&#39;t get</span>
<span class="gi">+			 * called if the HCD state is HALT. This means that</span>
<span class="gi">+			 * the interrupt does not get handled and Linux</span>
<span class="gi">+			 * complains loudly.</span>
<span class="gi">+			 */</span>
<span class="gi">+			gintmsk.d32 = 0;</span>
<span class="gi">+			gintmsk.b.sofintr = 1;</span>
<span class="gi">+			dwc_modify_reg32(&amp;global_regs-&gt;gintmsk,</span>
<span class="gi">+					 gintmsk.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+			pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+			if(unlikely(!pcd)) {</span>
<span class="gi">+				DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+				BUG();</span>
<span class="gi">+			}</span>
<span class="gi">+			SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                        pcd_stop(core_if);</span>
<span class="gi">+</span>
<span class="gi">+			SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+                        hcd_start(core_if);</span>
<span class="gi">+                        core_if-&gt;op_state = A_HOST;</span>
<span class="gi">+                }</span>
<span class="gi">+	}</span>
<span class="gi">+	if (gotgint.b.adevtoutchng) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot; ++OTG Interrupt: &quot;</span>
<span class="gi">+			    &quot;A-Device Timeout Change++\n&quot;);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (gotgint.b.debdone) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot; ++OTG Interrupt: &quot;</span>
<span class="gi">+			    &quot;Debounce Done++\n&quot;);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear GOTGINT */</span>
<span class="gi">+	dwc_write_reg32 (&amp;core_if-&gt;core_global_regs-&gt;gotgint, gotgint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+</span>
<span class="gi">+void w_conn_id_status_change(void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = p;	</span>
<span class="gi">+</span>
<span class="gi">+#else</span>
<span class="gi">+</span>
<span class="gi">+void w_conn_id_status_change(struct work_struct *p)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = container_of(p, dwc_otg_core_if_t, w_conn_id);	</span>
<span class="gi">+</span>
<span class="gi">+#endif		</span>
<span class="gi">+</span>
<span class="gi">+ 	</span>
<span class="gi">+	uint32_t count = 0;</span>
<span class="gi">+        gotgctl_data_t gotgctl = { .d32 = 0 }; </span>
<span class="gi">+</span>
<span class="gi">+        gotgctl.d32 = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gotgctl);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;gotgctl=%0x\n&quot;, gotgctl.d32);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;gotgctl.b.conidsts=%d\n&quot;, gotgctl.b.conidsts);</span>
<span class="gi">+        </span>
<span class="gi">+        /* B-Device connector (Device Mode) */</span>
<span class="gi">+        if (gotgctl.b.conidsts) {</span>
<span class="gi">+		dwc_otg_pcd_t *pcd;</span>
<span class="gi">+</span>
<span class="gi">+                /* Wait for switch to device mode. */</span>
<span class="gi">+                while (!dwc_otg_is_device_mode(core_if)){</span>
<span class="gi">+                        DWC_PRINT(&quot;Waiting for Peripheral Mode, Mode=%s\n&quot;,</span>
<span class="gi">+                                  (dwc_otg_is_host_mode(core_if)?&quot;Host&quot;:&quot;Peripheral&quot;));</span>
<span class="gi">+                        MDELAY(100);</span>
<span class="gi">+                        if (++count &gt; 10000) *(uint32_t*)NULL=0;</span>
<span class="gi">+                }</span>
<span class="gi">+                core_if-&gt;op_state = B_PERIPHERAL;</span>
<span class="gi">+		dwc_otg_core_init(core_if);</span>
<span class="gi">+		dwc_otg_enable_global_interrupts(core_if);</span>
<span class="gi">+</span>
<span class="gi">+		pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+		if(unlikely(!pcd)) {</span>
<span class="gi">+			DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+			BUG();</span>
<span class="gi">+		}</span>
<span class="gi">+		SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                pcd_start(core_if);</span>
<span class="gi">+</span>
<span class="gi">+		SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+        } else {</span>
<span class="gi">+                /* A-Device connector (Host Mode) */</span>
<span class="gi">+                while (!dwc_otg_is_host_mode(core_if)) {</span>
<span class="gi">+                        DWC_PRINT(&quot;Waiting for Host Mode, Mode=%s\n&quot;,</span>
<span class="gi">+                                  (dwc_otg_is_host_mode(core_if)?&quot;Host&quot;:&quot;Peripheral&quot;));</span>
<span class="gi">+                        MDELAY(100);</span>
<span class="gi">+                        if (++count &gt; 10000) *(uint32_t*)NULL=0;</span>
<span class="gi">+                }</span>
<span class="gi">+                core_if-&gt;op_state = A_HOST;</span>
<span class="gi">+                /*</span>
<span class="gi">+                 * Initialize the Core for Host mode.</span>
<span class="gi">+                 */</span>
<span class="gi">+		dwc_otg_core_init(core_if);</span>
<span class="gi">+		dwc_otg_enable_global_interrupts(core_if);</span>
<span class="gi">+                hcd_start(core_if);</span>
<span class="gi">+        }</span>
<span class="gi">+}</span>
<span class="gi">+		</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function handles the Connector ID Status Change Interrupt.  It</span>
<span class="gi">+ * reads the OTG Interrupt Register (GOTCTL) to determine whether this</span>
<span class="gi">+ * is a Device to Host Mode transition or a Host Mode to Device</span>
<span class="gi">+ * Transition.  </span>
<span class="gi">+ *</span>
<span class="gi">+ * This only occurs when the cable is connected/removed from the PHY</span>
<span class="gi">+ * connector.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_handle_conn_id_status_change_intr(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Need to disable SOF interrupt immediately. If switching from device</span>
<span class="gi">+	 * to host, the PCD interrupt handler won&#39;t handle the interrupt if</span>
<span class="gi">+	 * host mode is already set. The HCD interrupt handler won&#39;t get</span>
<span class="gi">+	 * called if the HCD state is HALT. This means that the interrupt does</span>
<span class="gi">+	 * not get handled and Linux complains loudly.</span>
<span class="gi">+	 */</span>
<span class="gi">+	gintmsk_data_t gintmsk = { .d32 = 0 };</span>
<span class="gi">+	gintsts_data_t gintsts = { .d32 = 0 };</span>
<span class="gi">+	</span>
<span class="gi">+	gintmsk.b.sofintr = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk, gintmsk.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot; ++Connector ID Status Change Interrupt++  (%s)\n&quot;,</span>
<span class="gi">+                    (dwc_otg_is_host_mode(core_if)?&quot;Host&quot;:&quot;Device&quot;));</span>
<span class="gi">+	</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Need to schedule a work, as there are possible DELAY function calls</span>
<span class="gi">+ 	*/	</span>
<span class="gi">+	queue_work(core_if-&gt;wq_otg, &amp;core_if-&gt;w_conn_id);</span>
<span class="gi">+</span>
<span class="gi">+	/* Set flag and clear interrupt */</span>
<span class="gi">+	gintsts.b.conidstschng = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This interrupt indicates that a device is initiating the Session</span>
<span class="gi">+ * Request Protocol to request the host to turn on bus power so a new</span>
<span class="gi">+ * session can begin. The handler responds by turning on bus power. If</span>
<span class="gi">+ * the DWC_otg controller is in low power mode, the handler brings the</span>
<span class="gi">+ * controller out of low power mode before turning on bus power. </span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_handle_session_req_intr(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+        hprt0_data_t hprt0;</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;++Session Request Interrupt++\n&quot;);	</span>
<span class="gi">+</span>
<span class="gi">+        if (dwc_otg_is_device_mode(core_if)) {</span>
<span class="gi">+                DWC_PRINT(&quot;SRP: Device mode\n&quot;);</span>
<span class="gi">+        } else {</span>
<span class="gi">+		DWC_PRINT(&quot;SRP: Host mode\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+		/* Turn on the port power bit. */</span>
<span class="gi">+		hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+		hprt0.b.prtpwr = 1;</span>
<span class="gi">+		dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Start the Connection timer. So a message can be displayed</span>
<span class="gi">+		 * if connect does not occur within 10 seconds. */ </span>
<span class="gi">+		hcd_session_start(core_if);</span>
<span class="gi">+        }</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.sessreqintr = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+void w_wakeup_detected(void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t* core_if = p;</span>
<span class="gi">+</span>
<span class="gi">+#else</span>
<span class="gi">+</span>
<span class="gi">+void w_wakeup_detected(struct work_struct *p)</span>
<span class="gi">+{</span>
<span class="gi">+	struct delayed_work *dw = container_of(p, struct delayed_work, work);	</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = container_of(dw, dwc_otg_core_if_t, w_wkp);	</span>
<span class="gi">+</span>
<span class="gi">+#endif</span>
<span class="gi">+        /*</span>
<span class="gi">+	 * Clear the Resume after 70ms. (Need 20 ms minimum. Use 70 ms</span>
<span class="gi">+	 * so that OPT tests pass with all PHYs).</span>
<span class="gi">+	 */</span>
<span class="gi">+        hprt0_data_t hprt0 = {.d32=0};</span>
<span class="gi">+#if 0</span>
<span class="gi">+	pcgcctl_data_t pcgcctl = {.d32=0};</span>
<span class="gi">+        /* Restart the Phy Clock */</span>
<span class="gi">+        pcgcctl.b.stoppclk = 1;</span>
<span class="gi">+        dwc_modify_reg32(core_if-&gt;pcgcctl, pcgcctl.d32, 0);</span>
<span class="gi">+        UDELAY(10);</span>
<span class="gi">+#endif //0     </span>
<span class="gi">+        hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+        DWC_DEBUGPL(DBG_ANY,&quot;Resume: HPRT0=%0x\n&quot;, hprt0.d32);</span>
<span class="gi">+//      MDELAY(70);</span>
<span class="gi">+        hprt0.b.prtres = 0; /* Resume */</span>
<span class="gi">+        dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);                </span>
<span class="gi">+        DWC_DEBUGPL(DBG_ANY,&quot;Clear Resume: HPRT0=%0x\n&quot;, dwc_read_reg32(core_if-&gt;host_if-&gt;hprt0));</span>
<span class="gi">+}</span>
<span class="gi">+/** </span>
<span class="gi">+ * This interrupt indicates that the DWC_otg controller has detected a</span>
<span class="gi">+ * resume or remote wakeup sequence. If the DWC_otg controller is in</span>
<span class="gi">+ * low power mode, the handler must brings the controller out of low</span>
<span class="gi">+ * power mode. The controller automatically begins resume</span>
<span class="gi">+ * signaling. The handler schedules a time to stop resume signaling.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_handle_wakeup_detected_intr(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;++Resume and Remote Wakeup Detected Interrupt++\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+        if (dwc_otg_is_device_mode(core_if)) { </span>
<span class="gi">+                dctl_data_t dctl = {.d32=0};</span>
<span class="gi">+                DWC_DEBUGPL(DBG_PCD, &quot;DSTS=0x%0x\n&quot;, </span>
<span class="gi">+                            dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dsts));</span>
<span class="gi">+#ifdef PARTIAL_POWER_DOWN</span>
<span class="gi">+                if (core_if-&gt;hwcfg4.b.power_optimiz) {</span>
<span class="gi">+                        pcgcctl_data_t power = {.d32=0};</span>
<span class="gi">+</span>
<span class="gi">+                        power.d32 = dwc_read_reg32(core_if-&gt;pcgcctl);</span>
<span class="gi">+                        DWC_DEBUGPL(DBG_CIL, &quot;PCGCCTL=%0x\n&quot;, power.d32);</span>
<span class="gi">+</span>
<span class="gi">+                        power.b.stoppclk = 0;</span>
<span class="gi">+                        dwc_write_reg32(core_if-&gt;pcgcctl, power.d32);</span>
<span class="gi">+</span>
<span class="gi">+                        power.b.pwrclmp = 0;</span>
<span class="gi">+                        dwc_write_reg32(core_if-&gt;pcgcctl, power.d32);</span>
<span class="gi">+</span>
<span class="gi">+                        power.b.rstpdwnmodule = 0;</span>
<span class="gi">+                        dwc_write_reg32(core_if-&gt;pcgcctl, power.d32);</span>
<span class="gi">+                }</span>
<span class="gi">+#endif</span>
<span class="gi">+                /* Clear the Remote Wakeup Signalling */</span>
<span class="gi">+                dctl.b.rmtwkupsig = 1;</span>
<span class="gi">+                dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dctl, </span>
<span class="gi">+                                  dctl.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+                if (core_if-&gt;pcd_cb &amp;&amp; core_if-&gt;pcd_cb-&gt;resume_wakeup) {</span>
<span class="gi">+                        core_if-&gt;pcd_cb-&gt;resume_wakeup(core_if-&gt;pcd_cb-&gt;p);</span>
<span class="gi">+                }</span>
<span class="gi">+        </span>
<span class="gi">+        } else {</span>
<span class="gi">+		pcgcctl_data_t pcgcctl = {.d32=0};</span>
<span class="gi">+	        </span>
<span class="gi">+		/* Restart the Phy Clock */</span>
<span class="gi">+	        pcgcctl.b.stoppclk = 1;</span>
<span class="gi">+	        dwc_modify_reg32(core_if-&gt;pcgcctl, pcgcctl.d32, 0);</span>
<span class="gi">+                </span>
<span class="gi">+	        queue_delayed_work(core_if-&gt;wq_otg, &amp;core_if-&gt;w_wkp, ((70 * HZ / 1000) + 1));</span>
<span class="gi">+        }        </span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.wkupintr = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This interrupt indicates that a device has been disconnected from</span>
<span class="gi">+ * the root port. </span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_handle_disconnect_intr(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;++Disconnect Detected Interrupt++ (%s) %s\n&quot;, </span>
<span class="gi">+                    (dwc_otg_is_host_mode(core_if)?&quot;Host&quot;:&quot;Device&quot;), </span>
<span class="gi">+                    op_state_str(core_if));</span>
<span class="gi">+</span>
<span class="gi">+/** @todo Consolidate this if statement. */</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+        if (core_if-&gt;op_state == B_HOST) {</span>
<span class="gi">+		dwc_otg_pcd_t *pcd;</span>
<span class="gi">+</span>
<span class="gi">+                /* If in device mode Disconnect and stop the HCD, then</span>
<span class="gi">+                 * start the PCD. */</span>
<span class="gi">+                hcd_disconnect(core_if);</span>
<span class="gi">+</span>
<span class="gi">+		pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+		if(unlikely(!pcd)) {</span>
<span class="gi">+			DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+			BUG();</span>
<span class="gi">+		}</span>
<span class="gi">+		SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                pcd_start(core_if);</span>
<span class="gi">+</span>
<span class="gi">+		SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+                core_if-&gt;op_state = B_PERIPHERAL;</span>
<span class="gi">+        } else if (dwc_otg_is_device_mode(core_if)) {</span>
<span class="gi">+                gotgctl_data_t gotgctl = { .d32 = 0 }; </span>
<span class="gi">+                gotgctl.d32 = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gotgctl);</span>
<span class="gi">+                if (gotgctl.b.hstsethnpen==1) {</span>
<span class="gi">+                        /* Do nothing, if HNP in process the OTG</span>
<span class="gi">+                         * interrupt &quot;Host Negotiation Detected&quot;</span>
<span class="gi">+                         * interrupt will do the mode switch.</span>
<span class="gi">+                         */</span>
<span class="gi">+                } else if (gotgctl.b.devhnpen == 0) {</span>
<span class="gi">+			dwc_otg_pcd_t *pcd;</span>
<span class="gi">+</span>
<span class="gi">+                        /* If in device mode Disconnect and stop the HCD, then</span>
<span class="gi">+                         * start the PCD. */</span>
<span class="gi">+                        hcd_disconnect(core_if);</span>
<span class="gi">+</span>
<span class="gi">+			pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+			if(unlikely(!pcd)) {</span>
<span class="gi">+				DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+				BUG();</span>
<span class="gi">+			}</span>
<span class="gi">+			SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                        pcd_start(core_if);</span>
<span class="gi">+</span>
<span class="gi">+			SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                        core_if-&gt;op_state = B_PERIPHERAL;</span>
<span class="gi">+                } else {</span>
<span class="gi">+                        DWC_DEBUGPL(DBG_ANY,&quot;!a_peripheral &amp;&amp; !devhnpen\n&quot;);</span>
<span class="gi">+                }</span>
<span class="gi">+        } else {</span>
<span class="gi">+                if (core_if-&gt;op_state == A_HOST) {</span>
<span class="gi">+                        /* A-Cable still connected but device disconnected. */</span>
<span class="gi">+                        hcd_disconnect(core_if);</span>
<span class="gi">+                }</span>
<span class="gi">+        }</span>
<span class="gi">+#endif</span>
<span class="gi">+   </span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.disconnect = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * This interrupt indicates that SUSPEND state has been detected on</span>
<span class="gi">+ * the USB.</span>
<span class="gi">+ * </span>
<span class="gi">+ * For HNP the USB Suspend interrupt signals the change from</span>
<span class="gi">+ * &quot;a_peripheral&quot; to &quot;a_host&quot;.</span>
<span class="gi">+ *</span>
<span class="gi">+ * When power management is enabled the core will be put in low power</span>
<span class="gi">+ * mode.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_handle_usb_suspend_intr(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+        dsts_data_t dsts;</span>
<span class="gi">+        gintsts_data_t gintsts;</span>
<span class="gi">+</span>
<span class="gi">+        DWC_DEBUGPL(DBG_ANY,&quot;USB SUSPEND\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+        if (dwc_otg_is_device_mode(core_if)) {             </span>
<span class="gi">+		dwc_otg_pcd_t *pcd;</span>
<span class="gi">+</span>
<span class="gi">+                /* Check the Device status register to determine if the Suspend</span>
<span class="gi">+                 * state is active. */</span>
<span class="gi">+                dsts.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dsts);</span>
<span class="gi">+                DWC_DEBUGPL(DBG_PCD, &quot;DSTS=0x%0x\n&quot;, dsts.d32);</span>
<span class="gi">+                DWC_DEBUGPL(DBG_PCD, &quot;DSTS.Suspend Status=%d &quot;</span>
<span class="gi">+                            &quot;HWCFG4.power Optimize=%d\n&quot;, </span>
<span class="gi">+                            dsts.b.suspsts, core_if-&gt;hwcfg4.b.power_optimiz);</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#ifdef PARTIAL_POWER_DOWN</span>
<span class="gi">+/** @todo Add a module parameter for power management. */</span>
<span class="gi">+        </span>
<span class="gi">+                if (dsts.b.suspsts &amp;&amp; core_if-&gt;hwcfg4.b.power_optimiz) {</span>
<span class="gi">+                        pcgcctl_data_t power = {.d32=0};</span>
<span class="gi">+                        DWC_DEBUGPL(DBG_CIL, &quot;suspend\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+                        power.b.pwrclmp = 1;</span>
<span class="gi">+                        dwc_write_reg32(core_if-&gt;pcgcctl, power.d32);</span>
<span class="gi">+</span>
<span class="gi">+                        power.b.rstpdwnmodule = 1;</span>
<span class="gi">+                        dwc_modify_reg32(core_if-&gt;pcgcctl, 0, power.d32);</span>
<span class="gi">+</span>
<span class="gi">+                        power.b.stoppclk = 1;</span>
<span class="gi">+                        dwc_modify_reg32(core_if-&gt;pcgcctl, 0, power.d32);</span>
<span class="gi">+                </span>
<span class="gi">+                } else {</span>
<span class="gi">+                        DWC_DEBUGPL(DBG_ANY,&quot;disconnect?\n&quot;);</span>
<span class="gi">+                }</span>
<span class="gi">+#endif</span>
<span class="gi">+                /* PCD callback for suspend. */</span>
<span class="gi">+		pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+		if(unlikely(!pcd)) {</span>
<span class="gi">+			DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+			BUG();</span>
<span class="gi">+		}</span>
<span class="gi">+		SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                pcd_suspend(core_if);</span>
<span class="gi">+</span>
<span class="gi">+		SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+        } else {</span>
<span class="gi">+                if (core_if-&gt;op_state == A_PERIPHERAL) {</span>
<span class="gi">+			dwc_otg_pcd_t *pcd;</span>
<span class="gi">+</span>
<span class="gi">+                        DWC_DEBUGPL(DBG_ANY,&quot;a_peripheral-&gt;a_host\n&quot;);</span>
<span class="gi">+                        /* Clear the a_peripheral flag, back to a_host. */</span>
<span class="gi">+</span>
<span class="gi">+			pcd=(dwc_otg_pcd_t *)core_if-&gt;pcd_cb-&gt;p;</span>
<span class="gi">+			if(unlikely(!pcd)) {</span>
<span class="gi">+				DWC_ERROR(&quot;%s: data structure not initialized properly, core_if-&gt;pcd_cb-&gt;p = NULL!!!&quot;,__func__);</span>
<span class="gi">+				BUG();</span>
<span class="gi">+			}</span>
<span class="gi">+			SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                        pcd_stop(core_if);</span>
<span class="gi">+</span>
<span class="gi">+			SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+                        hcd_start(core_if);</span>
<span class="gi">+                        core_if-&gt;op_state = A_HOST;</span>
<span class="gi">+                }                </span>
<span class="gi">+        }</span>
<span class="gi">+        </span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.usbsuspend = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+        return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function returns the Core Interrupt register.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t dwc_otg_read_common_intr(dwc_otg_core_if_t *core_if) </span>
<span class="gi">+{</span>
<span class="gi">+        gintsts_data_t gintsts;</span>
<span class="gi">+        gintmsk_data_t gintmsk;</span>
<span class="gi">+        gintmsk_data_t gintmsk_common = {.d32=0};</span>
<span class="gi">+	gintmsk_common.b.wkupintr = 1;</span>
<span class="gi">+	gintmsk_common.b.sessreqintr = 1;</span>
<span class="gi">+	gintmsk_common.b.conidstschng = 1;</span>
<span class="gi">+	gintmsk_common.b.otgintr = 1;</span>
<span class="gi">+	gintmsk_common.b.modemismatch = 1;</span>
<span class="gi">+        gintmsk_common.b.disconnect = 1;</span>
<span class="gi">+        gintmsk_common.b.usbsuspend = 1;</span>
<span class="gi">+        /** @todo: The port interrupt occurs while in device </span>
<span class="gi">+         * mode. Added code to CIL to clear the interrupt for now! </span>
<span class="gi">+         */</span>
<span class="gi">+        gintmsk_common.b.portintr = 1;</span>
<span class="gi">+</span>
<span class="gi">+        gintsts.d32 = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintsts);</span>
<span class="gi">+        gintmsk.d32 = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk);</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+        /* if any common interrupts set */</span>
<span class="gi">+        if (gintsts.d32 &amp; gintmsk_common.d32) {</span>
<span class="gi">+                DWC_DEBUGPL(DBG_ANY, &quot;gintsts=%08x  gintmsk=%08x\n&quot;, </span>
<span class="gi">+                            gintsts.d32, gintmsk.d32);</span>
<span class="gi">+        }</span>
<span class="gi">+#endif        </span>
<span class="gi">+        </span>
<span class="gi">+        return ((gintsts.d32 &amp; gintmsk.d32) &amp; gintmsk_common.d32);</span>
<span class="gi">+</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Common interrupt handler.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The common interrupts are those that occur in both Host and Device mode. </span>
<span class="gi">+ * This handler handles the following interrupts:</span>
<span class="gi">+ * - Mode Mismatch Interrupt</span>
<span class="gi">+ * - Disconnect Interrupt</span>
<span class="gi">+ * - OTG Interrupt</span>
<span class="gi">+ * - Connector ID Status Change Interrupt</span>
<span class="gi">+ * - Session Request Interrupt.</span>
<span class="gi">+ * - Resume / Remote Wakeup Detected Interrupt.</span>
<span class="gi">+ * </span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_handle_common_intr(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+        gintsts_data_t gintsts;</span>
<span class="gi">+</span>
<span class="gi">+        gintsts.d32 = dwc_otg_read_common_intr(core_if);</span>
<span class="gi">+</span>
<span class="gi">+        if (gintsts.b.modemismatch) {</span>
<span class="gi">+                retval |= dwc_otg_handle_mode_mismatch_intr(core_if);</span>
<span class="gi">+        }</span>
<span class="gi">+        if (gintsts.b.otgintr) {</span>
<span class="gi">+                retval |= dwc_otg_handle_otg_intr(core_if);</span>
<span class="gi">+        }</span>
<span class="gi">+        if (gintsts.b.conidstschng) {</span>
<span class="gi">+                retval |= dwc_otg_handle_conn_id_status_change_intr(core_if);</span>
<span class="gi">+        }</span>
<span class="gi">+        if (gintsts.b.disconnect) {</span>
<span class="gi">+                retval |= dwc_otg_handle_disconnect_intr(core_if);</span>
<span class="gi">+        }</span>
<span class="gi">+        if (gintsts.b.sessreqintr) {</span>
<span class="gi">+                retval |= dwc_otg_handle_session_req_intr(core_if);</span>
<span class="gi">+        }</span>
<span class="gi">+        if (gintsts.b.wkupintr) {</span>
<span class="gi">+                retval |= dwc_otg_handle_wakeup_detected_intr(core_if);</span>
<span class="gi">+        }</span>
<span class="gi">+        if (gintsts.b.usbsuspend) {</span>
<span class="gi">+                retval |= dwc_otg_handle_usb_suspend_intr(core_if);</span>
<span class="gi">+        }</span>
<span class="gi">+        if (gintsts.b.portintr &amp;&amp; dwc_otg_is_device_mode(core_if)) {</span>
<span class="gi">+                /* The port interrupt occurs while in device mode with HPRT0</span>
<span class="gi">+                 * Port Enable/Disable.</span>
<span class="gi">+                 */</span>
<span class="gi">+                gintsts.d32 = 0;</span>
<span class="gi">+                gintsts.b.portintr = 1;</span>
<span class="gi">+                dwc_write_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintsts, </span>
<span class="gi">+                                gintsts.d32);</span>
<span class="gi">+                retval |= 1;</span>
<span class="gi">+                </span>
<span class="gi">+        }</span>
<span class="gi">+	</span>
<span class="gi">+	S3C2410X_CLEAR_EINTPEND();</span>
<span class="gi">+	</span>
<span class="gi">+        return retval;</span>
<span class="gi">+}</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_driver.c</span>
<span class="gu">@@ -0,0 +1,1283 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_driver.c $</span>
<span class="gi">+ * $Revision: #63 $</span>
<span class="gi">+ * $Date: 2008/09/24 $</span>
<span class="gi">+ * $Change: 1101777 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ *</span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+</span>
<span class="gi">+/** @file</span>
<span class="gi">+ * The dwc_otg_driver module provides the initialization and cleanup entry</span>
<span class="gi">+ * points for the DWC_otg driver. This module will be dynamically installed</span>
<span class="gi">+ * after Linux is booted using the insmod command. When the module is</span>
<span class="gi">+ * installed, the dwc_otg_driver_init function is called. When the module is</span>
<span class="gi">+ * removed (using rmmod), the dwc_otg_driver_cleanup function is called.</span>
<span class="gi">+ *</span>
<span class="gi">+ * This module also defines a data structure for the dwc_otg_driver, which is</span>
<span class="gi">+ * used in conjunction with the standard ARM lm_device structure. These</span>
<span class="gi">+ * structures allow the OTG driver to comply with the standard Linux driver</span>
<span class="gi">+ * model in which devices and drivers are registered with a bus driver. This</span>
<span class="gi">+ * has the benefit that Linux can expose attributes of the driver and device</span>
<span class="gi">+ * in its special sysfs file system. Users can then read or write files in</span>
<span class="gi">+ * this file system to perform diagnostics on the driver components or the</span>
<span class="gi">+ * device.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/kernel.h&gt;</span>
<span class="gi">+#include &lt;linux/module.h&gt;</span>
<span class="gi">+#include &lt;linux/moduleparam.h&gt;</span>
<span class="gi">+#include &lt;linux/init.h&gt;</span>
<span class="gi">+#include &lt;linux/device.h&gt;</span>
<span class="gi">+#include &lt;linux/errno.h&gt;</span>
<span class="gi">+#include &lt;linux/types.h&gt;</span>
<span class="gi">+#include &lt;linux/stat.h&gt;	 /* permission constants */</span>
<span class="gi">+#include &lt;linux/version.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+# include &lt;linux/irq.h&gt;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;asm/io.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+# include &lt;asm/irq.h&gt;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+//#include &lt;asm/arch/lm.h&gt;</span>
<span class="gi">+#include &lt;mach/lm.h&gt;</span>
<span class="gi">+#include &lt;mach/board.h&gt;</span>
<span class="gi">+#include &lt;asm/sizes.h&gt;</span>
<span class="gi">+#include &lt;mach/pm.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#include &quot;dwc_otg_plat.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_attr.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_driver.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_cil.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_pcd.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_hcd.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+#define DWC_DRIVER_VERSION	&quot;2.72a 24-JUN-2008&quot;</span>
<span class="gi">+#define DWC_DRIVER_DESC		&quot;HS OTG USB Controller driver&quot;</span>
<span class="gi">+</span>
<span class="gi">+static const char dwc_driver_name[] = &quot;dwc_otg&quot;;</span>
<span class="gi">+</span>
<span class="gi">+/*-------------------------------------------------------------------------*/</span>
<span class="gi">+/* Encapsulate the module parameter settings */</span>
<span class="gi">+</span>
<span class="gi">+static dwc_otg_core_params_t dwc_otg_module_params = {</span>
<span class="gi">+	.opt = -1,</span>
<span class="gi">+	.otg_cap = -1,</span>
<span class="gi">+	.dma_enable = -1,</span>
<span class="gi">+	.dma_desc_enable = -1,</span>
<span class="gi">+	.dma_burst_size = -1,</span>
<span class="gi">+	.speed = -1,</span>
<span class="gi">+	.host_support_fs_ls_low_power = -1,</span>
<span class="gi">+	.host_ls_low_power_phy_clk = -1,</span>
<span class="gi">+	.enable_dynamic_fifo = -1,</span>
<span class="gi">+	.data_fifo_size = -1,</span>
<span class="gi">+	.dev_rx_fifo_size = -1,</span>
<span class="gi">+	.dev_nperio_tx_fifo_size = -1,</span>
<span class="gi">+	.dev_perio_tx_fifo_size = {</span>
<span class="gi">+		/* dev_perio_tx_fifo_size_1 */</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1</span>
<span class="gi">+		/* 15 */</span>
<span class="gi">+	},</span>
<span class="gi">+	.host_rx_fifo_size = -1,</span>
<span class="gi">+	.host_nperio_tx_fifo_size = -1,</span>
<span class="gi">+	.host_perio_tx_fifo_size = -1,</span>
<span class="gi">+	.max_transfer_size = -1,</span>
<span class="gi">+	.max_packet_count = -1,</span>
<span class="gi">+	.host_channels = -1,</span>
<span class="gi">+	.dev_endpoints = -1,</span>
<span class="gi">+	.phy_type = -1,</span>
<span class="gi">+	.phy_utmi_width = -1,</span>
<span class="gi">+	.phy_ulpi_ddr = -1,</span>
<span class="gi">+	.phy_ulpi_ext_vbus = -1,</span>
<span class="gi">+	.i2c_enable = -1,</span>
<span class="gi">+	.ulpi_fs_ls = -1,</span>
<span class="gi">+	.ts_dline = -1,</span>
<span class="gi">+	.en_multiple_tx_fifo = -1,</span>
<span class="gi">+	.dev_tx_fifo_size = {</span>
<span class="gi">+		/* dev_tx_fifo_size */</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1,</span>
<span class="gi">+		-1</span>
<span class="gi">+		/* 15 */</span>
<span class="gi">+	},</span>
<span class="gi">+	.thr_ctl = -1,</span>
<span class="gi">+	.tx_thr_length = -1,</span>
<span class="gi">+	.rx_thr_length = -1,</span>
<span class="gi">+	.pti_enable = -1,</span>
<span class="gi">+	.mpi_enable = -1,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function shows the Driver Version.</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t version_show(struct device_driver *dev, char *buf)</span>
<span class="gi">+{</span>
<span class="gi">+	return snprintf(buf, sizeof(DWC_DRIVER_VERSION)+2, &quot;%s\n&quot;,</span>
<span class="gi">+			DWC_DRIVER_VERSION);</span>
<span class="gi">+}</span>
<span class="gi">+static DRIVER_ATTR(version, S_IRUGO, version_show, NULL);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Global Debug Level Mask.</span>
<span class="gi">+ */</span>
<span class="gi">+uint32_t g_dbg_lvl = 0; /* OFF */</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function shows the driver Debug Level.</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t dbg_level_show(struct device_driver *drv, char *buf)</span>
<span class="gi">+{</span>
<span class="gi">+	return sprintf(buf, &quot;0x%0x\n&quot;, g_dbg_lvl);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function stores the driver Debug Level.</span>
<span class="gi">+ */</span>
<span class="gi">+static ssize_t dbg_level_store(struct device_driver *drv, const char *buf,</span>
<span class="gi">+			       size_t count)</span>
<span class="gi">+{</span>
<span class="gi">+	g_dbg_lvl = simple_strtoul(buf, NULL, 16);</span>
<span class="gi">+		return count;</span>
<span class="gi">+}</span>
<span class="gi">+static DRIVER_ATTR(debuglevel, S_IRUGO|S_IWUSR, dbg_level_show, dbg_level_store);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is called during module intialization to verify that</span>
<span class="gi">+ * the module parameters are in a valid state.</span>
<span class="gi">+ */</span>
<span class="gi">+static int check_parameters(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	int i;</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+	</span>
<span class="gi">+/* Checks if the parameter is outside of its valid range of values */</span>
<span class="gi">+#define DWC_OTG_PARAM_TEST(_param_, _low_, _high_) \</span>
<span class="gi">+		((dwc_otg_module_params._param_ &lt; (_low_)) || \</span>
<span class="gi">+		(dwc_otg_module_params._param_ &gt; (_high_)))</span>
<span class="gi">+</span>
<span class="gi">+/* If the parameter has been set by the user, check that the parameter value is</span>
<span class="gi">+ * within the value range of values.  If not, report a module error. */</span>
<span class="gi">+#define DWC_OTG_PARAM_ERR(_param_, _low_, _high_, _string_) \</span>
<span class="gi">+		do { \</span>
<span class="gi">+			if (dwc_otg_module_params._param_ != -1) { \</span>
<span class="gi">+				if (DWC_OTG_PARAM_TEST(_param_, (_low_), (_high_))) { \</span>
<span class="gi">+					DWC_ERROR(&quot;`%d&#39; invalid for parameter `%s&#39;\n&quot;, \</span>
<span class="gi">+						  dwc_otg_module_params._param_, _string_); \</span>
<span class="gi">+					dwc_otg_module_params._param_ = dwc_param_##_param_##_default; \</span>
<span class="gi">+					retval++; \</span>
<span class="gi">+				} \</span>
<span class="gi">+			} \</span>
<span class="gi">+		} while (0)</span>
<span class="gi">+</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(opt,0,1,&quot;opt&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(otg_cap,0,2,&quot;otg_cap&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(dma_enable,0,1,&quot;dma_enable&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(dma_desc_enable,0,1,&quot;dma_desc_enable&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(speed,0,1,&quot;speed&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(host_support_fs_ls_low_power,0,1,&quot;host_support_fs_ls_low_power&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(host_ls_low_power_phy_clk,0,1,&quot;host_ls_low_power_phy_clk&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(enable_dynamic_fifo,0,1,&quot;enable_dynamic_fifo&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(data_fifo_size,32,32768,&quot;data_fifo_size&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(dev_rx_fifo_size,16,32768,&quot;dev_rx_fifo_size&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(dev_nperio_tx_fifo_size,16,32768,&quot;dev_nperio_tx_fifo_size&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(host_rx_fifo_size,16,32768,&quot;host_rx_fifo_size&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(host_nperio_tx_fifo_size,16,32768,&quot;host_nperio_tx_fifo_size&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(host_perio_tx_fifo_size,16,32768,&quot;host_perio_tx_fifo_size&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(max_transfer_size,2047,524288,&quot;max_transfer_size&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(max_packet_count,15,511,&quot;max_packet_count&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(host_channels,1,16,&quot;host_channels&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(dev_endpoints,1,15,&quot;dev_endpoints&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(phy_type,0,2,&quot;phy_type&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(phy_ulpi_ddr,0,1,&quot;phy_ulpi_ddr&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(phy_ulpi_ext_vbus,0,1,&quot;phy_ulpi_ext_vbus&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(i2c_enable,0,1,&quot;i2c_enable&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(ulpi_fs_ls,0,1,&quot;ulpi_fs_ls&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(ts_dline,0,1,&quot;ts_dline&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	if (dwc_otg_module_params.dma_burst_size != -1) {</span>
<span class="gi">+		if (DWC_OTG_PARAM_TEST(dma_burst_size,1,1) &amp;&amp;</span>
<span class="gi">+		    DWC_OTG_PARAM_TEST(dma_burst_size,4,4) &amp;&amp;</span>
<span class="gi">+		    DWC_OTG_PARAM_TEST(dma_burst_size,8,8) &amp;&amp;</span>
<span class="gi">+		    DWC_OTG_PARAM_TEST(dma_burst_size,16,16) &amp;&amp;</span>
<span class="gi">+		    DWC_OTG_PARAM_TEST(dma_burst_size,32,32) &amp;&amp;</span>
<span class="gi">+		    DWC_OTG_PARAM_TEST(dma_burst_size,64,64) &amp;&amp;</span>
<span class="gi">+		    DWC_OTG_PARAM_TEST(dma_burst_size,128,128) &amp;&amp;</span>
<span class="gi">+		    DWC_OTG_PARAM_TEST(dma_burst_size,256,256)) {</span>
<span class="gi">+			DWC_ERROR(&quot;`%d&#39; invalid for parameter `dma_burst_size&#39;\n&quot;,</span>
<span class="gi">+				  dwc_otg_module_params.dma_burst_size);</span>
<span class="gi">+			dwc_otg_module_params.dma_burst_size = 32;</span>
<span class="gi">+			retval++;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		{</span>
<span class="gi">+			uint8_t brst_sz = 0;</span>
<span class="gi">+			while(dwc_otg_module_params.dma_burst_size &gt; 1) {</span>
<span class="gi">+				brst_sz ++;</span>
<span class="gi">+				dwc_otg_module_params.dma_burst_size &gt;&gt;= 1;</span>
<span class="gi">+			}</span>
<span class="gi">+			dwc_otg_module_params.dma_burst_size = brst_sz;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (dwc_otg_module_params.phy_utmi_width != -1) {</span>
<span class="gi">+		if (DWC_OTG_PARAM_TEST(phy_utmi_width, 8, 8) &amp;&amp;</span>
<span class="gi">+		    DWC_OTG_PARAM_TEST(phy_utmi_width, 16, 16)) {</span>
<span class="gi">+			DWC_ERROR(&quot;`%d&#39; invalid for parameter `phy_utmi_width&#39;\n&quot;,</span>
<span class="gi">+				  dwc_otg_module_params.phy_utmi_width);</span>
<span class="gi">+			dwc_otg_module_params.phy_utmi_width = 16;</span>
<span class="gi">+			retval++;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	for (i = 0; i &lt; 15; i++) {</span>
<span class="gi">+		/** @todo should be like above */</span>
<span class="gi">+		//DWC_OTG_PARAM_ERR(dev_perio_tx_fifo_size[i], 4, 768, &quot;dev_perio_tx_fifo_size&quot;);</span>
<span class="gi">+		if (dwc_otg_module_params.dev_perio_tx_fifo_size[i] != -1) {</span>
<span class="gi">+			if (DWC_OTG_PARAM_TEST(dev_perio_tx_fifo_size[i], 4, 768)) {</span>
<span class="gi">+				DWC_ERROR(&quot;`%d&#39; invalid for parameter `%s_%d&#39;\n&quot;,</span>
<span class="gi">+					  dwc_otg_module_params.dev_perio_tx_fifo_size[i], &quot;dev_perio_tx_fifo_size&quot;, i);</span>
<span class="gi">+				dwc_otg_module_params.dev_perio_tx_fifo_size[i] = dwc_param_dev_perio_tx_fifo_size_default;</span>
<span class="gi">+				retval++;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(en_multiple_tx_fifo, 0, 1, &quot;en_multiple_tx_fifo&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	for (i = 0; i &lt; 15; i++) {</span>
<span class="gi">+		/** @todo should be like above */</span>
<span class="gi">+		//DWC_OTG_PARAM_ERR(dev_tx_fifo_size[i], 4, 768, &quot;dev_tx_fifo_size&quot;);</span>
<span class="gi">+		if (dwc_otg_module_params.dev_tx_fifo_size[i] != -1) {</span>
<span class="gi">+			if (DWC_OTG_PARAM_TEST(dev_tx_fifo_size[i], 4, 768)) {</span>
<span class="gi">+				DWC_ERROR(&quot;`%d&#39; invalid for parameter `%s_%d&#39;\n&quot;,</span>
<span class="gi">+					  dwc_otg_module_params.dev_tx_fifo_size[i], &quot;dev_tx_fifo_size&quot;, i);</span>
<span class="gi">+				dwc_otg_module_params.dev_tx_fifo_size[i] = dwc_param_dev_tx_fifo_size_default;</span>
<span class="gi">+				retval++;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(thr_ctl, 0, 7, &quot;thr_ctl&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(tx_thr_length, 8, 128, &quot;tx_thr_length&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(rx_thr_length, 8, 128, &quot;rx_thr_length&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(pti_enable,0,1,&quot;pti_enable&quot;);</span>
<span class="gi">+	DWC_OTG_PARAM_ERR(mpi_enable,0,1,&quot;mpi_enable&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	/* At this point, all module parameters that have been set by the user</span>
<span class="gi">+	 * are valid, and those that have not are left unset.  Now set their</span>
<span class="gi">+	 * default values and/or check the parameters against the hardware</span>
<span class="gi">+	 * configurations of the OTG core. */</span>
<span class="gi">+</span>
<span class="gi">+/* This sets the parameter to the default value if it has not been set by the</span>
<span class="gi">+ * user */</span>
<span class="gi">+#define DWC_OTG_PARAM_SET_DEFAULT(_param_) \</span>
<span class="gi">+	({ \</span>
<span class="gi">+		int changed = 1; \</span>
<span class="gi">+		if (dwc_otg_module_params._param_ == -1) { \</span>
<span class="gi">+			changed = 0; \</span>
<span class="gi">+			dwc_otg_module_params._param_ = dwc_param_##_param_##_default; \</span>
<span class="gi">+		} \</span>
<span class="gi">+		changed; \</span>
<span class="gi">+	})</span>
<span class="gi">+</span>
<span class="gi">+/* This checks the macro agains the hardware configuration to see if it is</span>
<span class="gi">+ * valid.  It is possible that the default value could be invalid. In this</span>
<span class="gi">+ * case, it will report a module error if the user touched the parameter.</span>
<span class="gi">+ * Otherwise it will adjust the value without any error. */</span>
<span class="gi">+#define DWC_OTG_PARAM_CHECK_VALID(_param_, _str_, _is_valid_, _set_valid_) \</span>
<span class="gi">+	({ \</span>
<span class="gi">+		int changed = DWC_OTG_PARAM_SET_DEFAULT(_param_); \</span>
<span class="gi">+		int error = 0; \</span>
<span class="gi">+		if (!(_is_valid_)) { \</span>
<span class="gi">+			if (changed) { \</span>
<span class="gi">+				DWC_ERROR(&quot;`%d&#39; invalid for parameter `%s&#39;. Check HW configuration.\n&quot;, dwc_otg_module_params._param_, _str_); \</span>
<span class="gi">+				error = 1; \</span>
<span class="gi">+			} \</span>
<span class="gi">+			dwc_otg_module_params._param_ = (_set_valid_); \</span>
<span class="gi">+		} \</span>
<span class="gi">+		error; \</span>
<span class="gi">+	})</span>
<span class="gi">+</span>
<span class="gi">+	/* OTG Cap */</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(otg_cap, &quot;otg_cap&quot;,</span>
<span class="gi">+				({</span>
<span class="gi">+					int valid;</span>
<span class="gi">+					valid = 1;</span>
<span class="gi">+					switch (dwc_otg_module_params.otg_cap) {</span>
<span class="gi">+					case DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE:</span>
<span class="gi">+						if (core_if-&gt;hwcfg2.b.op_mode != DWC_HWCFG2_OP_MODE_HNP_SRP_CAPABLE_OTG)</span>
<span class="gi">+							valid = 0;</span>
<span class="gi">+						break;</span>
<span class="gi">+					case DWC_OTG_CAP_PARAM_SRP_ONLY_CAPABLE:</span>
<span class="gi">+						if ((core_if-&gt;hwcfg2.b.op_mode != DWC_HWCFG2_OP_MODE_HNP_SRP_CAPABLE_OTG) &amp;&amp;</span>
<span class="gi">+						    (core_if-&gt;hwcfg2.b.op_mode != DWC_HWCFG2_OP_MODE_SRP_ONLY_CAPABLE_OTG) &amp;&amp;</span>
<span class="gi">+						    (core_if-&gt;hwcfg2.b.op_mode != DWC_HWCFG2_OP_MODE_SRP_CAPABLE_DEVICE) &amp;&amp;</span>
<span class="gi">+						    (core_if-&gt;hwcfg2.b.op_mode != DWC_HWCFG2_OP_MODE_SRP_CAPABLE_HOST)) {</span>
<span class="gi">+							valid = 0;</span>
<span class="gi">+						}</span>
<span class="gi">+						break;</span>
<span class="gi">+					case DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE:</span>
<span class="gi">+						/* always valid */</span>
<span class="gi">+						break;</span>
<span class="gi">+					}</span>
<span class="gi">+					valid;</span>
<span class="gi">+				}),</span>
<span class="gi">+				(((core_if-&gt;hwcfg2.b.op_mode == DWC_HWCFG2_OP_MODE_HNP_SRP_CAPABLE_OTG) ||</span>
<span class="gi">+				  (core_if-&gt;hwcfg2.b.op_mode == DWC_HWCFG2_OP_MODE_SRP_ONLY_CAPABLE_OTG) ||</span>
<span class="gi">+				  (core_if-&gt;hwcfg2.b.op_mode == DWC_HWCFG2_OP_MODE_SRP_CAPABLE_DEVICE) ||</span>
<span class="gi">+				  (core_if-&gt;hwcfg2.b.op_mode == DWC_HWCFG2_OP_MODE_SRP_CAPABLE_HOST)) ?</span>
<span class="gi">+				 DWC_OTG_CAP_PARAM_SRP_ONLY_CAPABLE :</span>
<span class="gi">+				 DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE));</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(dma_enable, &quot;dma_enable&quot;,</span>
<span class="gi">+				((dwc_otg_module_params.dma_enable == 1) &amp;&amp; (core_if-&gt;hwcfg2.b.architecture == 0)) ? 0 : 1,</span>
<span class="gi">+				0);</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(dma_desc_enable, &quot;dma_desc_enable&quot;,</span>
<span class="gi">+				((dwc_otg_module_params.dma_desc_enable == 1) &amp;&amp;</span>
<span class="gi">+				 ((dwc_otg_module_params.dma_enable == 0) || (core_if-&gt;hwcfg4.b.desc_dma == 0))) ? 0 : 1,</span>
<span class="gi">+				0);</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(opt, &quot;opt&quot;, 1, 0);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_OTG_PARAM_SET_DEFAULT(dma_burst_size);</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(host_support_fs_ls_low_power,</span>
<span class="gi">+				&quot;host_support_fs_ls_low_power&quot;,</span>
<span class="gi">+				1, 0);</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(enable_dynamic_fifo,</span>
<span class="gi">+					&quot;enable_dynamic_fifo&quot;,</span>
<span class="gi">+					((dwc_otg_module_params.enable_dynamic_fifo == 0) ||</span>
<span class="gi">+					(core_if-&gt;hwcfg2.b.dynamic_fifo == 1)), 0);</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(data_fifo_size,</span>
<span class="gi">+					&quot;data_fifo_size&quot;,</span>
<span class="gi">+					(dwc_otg_module_params.data_fifo_size &lt;= core_if-&gt;hwcfg3.b.dfifo_depth),</span>
<span class="gi">+					core_if-&gt;hwcfg3.b.dfifo_depth);</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(dev_rx_fifo_size,</span>
<span class="gi">+					&quot;dev_rx_fifo_size&quot;,</span>
<span class="gi">+					(dwc_otg_module_params.dev_rx_fifo_size &lt;= dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;grxfsiz)),</span>
<span class="gi">+					dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;grxfsiz));</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(dev_nperio_tx_fifo_size,</span>
<span class="gi">+					&quot;dev_nperio_tx_fifo_size&quot;,</span>
<span class="gi">+					(dwc_otg_module_params.dev_nperio_tx_fifo_size &lt;= (dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gnptxfsiz) &gt;&gt; 16)),</span>
<span class="gi">+					(dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gnptxfsiz) &gt;&gt; 16));</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(host_rx_fifo_size,</span>
<span class="gi">+					&quot;host_rx_fifo_size&quot;,</span>
<span class="gi">+					(dwc_otg_module_params.host_rx_fifo_size &lt;= dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;grxfsiz)),</span>
<span class="gi">+					dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;grxfsiz));</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(host_nperio_tx_fifo_size,</span>
<span class="gi">+					&quot;host_nperio_tx_fifo_size&quot;,</span>
<span class="gi">+					(dwc_otg_module_params.host_nperio_tx_fifo_size &lt;= (dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gnptxfsiz) &gt;&gt; 16)),</span>
<span class="gi">+					(dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;gnptxfsiz) &gt;&gt; 16));</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(host_perio_tx_fifo_size,</span>
<span class="gi">+					&quot;host_perio_tx_fifo_size&quot;,</span>
<span class="gi">+					(dwc_otg_module_params.host_perio_tx_fifo_size &lt;= ((dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;hptxfsiz) &gt;&gt; 16))),</span>
<span class="gi">+					((dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;hptxfsiz) &gt;&gt; 16)));</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(max_transfer_size,</span>
<span class="gi">+					&quot;max_transfer_size&quot;,</span>
<span class="gi">+					(dwc_otg_module_params.max_transfer_size &lt; (1 &lt;&lt; (core_if-&gt;hwcfg3.b.xfer_size_cntr_width + 11))),</span>
<span class="gi">+					((1 &lt;&lt; (core_if-&gt;hwcfg3.b.xfer_size_cntr_width + 11)) - 1));</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(max_packet_count,</span>
<span class="gi">+					&quot;max_packet_count&quot;,</span>
<span class="gi">+					(dwc_otg_module_params.max_packet_count &lt; (1 &lt;&lt; (core_if-&gt;hwcfg3.b.packet_size_cntr_width + 4))),</span>
<span class="gi">+					((1 &lt;&lt; (core_if-&gt;hwcfg3.b.packet_size_cntr_width + 4)) - 1));</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(host_channels,</span>
<span class="gi">+					&quot;host_channels&quot;,</span>
<span class="gi">+					(dwc_otg_module_params.host_channels &lt;= (core_if-&gt;hwcfg2.b.num_host_chan + 1)),</span>
<span class="gi">+					(core_if-&gt;hwcfg2.b.num_host_chan + 1));</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(dev_endpoints,</span>
<span class="gi">+					&quot;dev_endpoints&quot;,</span>
<span class="gi">+					(dwc_otg_module_params.dev_endpoints &lt;= (core_if-&gt;hwcfg2.b.num_dev_ep)),</span>
<span class="gi">+					core_if-&gt;hwcfg2.b.num_dev_ep);</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * Define the following to disable the FS PHY Hardware checking.  This is for</span>
<span class="gi">+ * internal testing only.</span>
<span class="gi">+ *</span>
<span class="gi">+ * #define NO_FS_PHY_HW_CHECKS</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+#ifdef NO_FS_PHY_HW_CHECKS</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(phy_type,</span>
<span class="gi">+				&quot;phy_type&quot;, 1, 0);</span>
<span class="gi">+#else</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(phy_type,</span>
<span class="gi">+				&quot;phy_type&quot;,</span>
<span class="gi">+				({</span>
<span class="gi">+					int valid = 0;</span>
<span class="gi">+					if ((dwc_otg_module_params.phy_type == DWC_PHY_TYPE_PARAM_UTMI) &amp;&amp;</span>
<span class="gi">+					((core_if-&gt;hwcfg2.b.hs_phy_type == 1) ||</span>
<span class="gi">+					 (core_if-&gt;hwcfg2.b.hs_phy_type == 3))) {</span>
<span class="gi">+						valid = 1;</span>
<span class="gi">+					}</span>
<span class="gi">+					else if ((dwc_otg_module_params.phy_type == DWC_PHY_TYPE_PARAM_ULPI) &amp;&amp;</span>
<span class="gi">+						 ((core_if-&gt;hwcfg2.b.hs_phy_type == 2) ||</span>
<span class="gi">+						  (core_if-&gt;hwcfg2.b.hs_phy_type == 3))) {</span>
<span class="gi">+						valid = 1;</span>
<span class="gi">+					}</span>
<span class="gi">+					else if ((dwc_otg_module_params.phy_type == DWC_PHY_TYPE_PARAM_FS) &amp;&amp;</span>
<span class="gi">+						 (core_if-&gt;hwcfg2.b.fs_phy_type == 1)) {</span>
<span class="gi">+						valid = 1;</span>
<span class="gi">+					}</span>
<span class="gi">+					valid;</span>
<span class="gi">+				}),</span>
<span class="gi">+				({</span>
<span class="gi">+					int set = DWC_PHY_TYPE_PARAM_FS;</span>
<span class="gi">+					if (core_if-&gt;hwcfg2.b.hs_phy_type) {</span>
<span class="gi">+						if ((core_if-&gt;hwcfg2.b.hs_phy_type == 3) ||</span>
<span class="gi">+						(core_if-&gt;hwcfg2.b.hs_phy_type == 1)) {</span>
<span class="gi">+							set = DWC_PHY_TYPE_PARAM_UTMI;</span>
<span class="gi">+						}</span>
<span class="gi">+						else {</span>
<span class="gi">+							set = DWC_PHY_TYPE_PARAM_ULPI;</span>
<span class="gi">+						}</span>
<span class="gi">+					}</span>
<span class="gi">+					set;</span>
<span class="gi">+				}));</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(speed, &quot;speed&quot;,</span>
<span class="gi">+				(dwc_otg_module_params.speed == 0) &amp;&amp; (dwc_otg_module_params.phy_type == DWC_PHY_TYPE_PARAM_FS) ? 0 : 1,</span>
<span class="gi">+				dwc_otg_module_params.phy_type == DWC_PHY_TYPE_PARAM_FS ? 1 : 0);</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(host_ls_low_power_phy_clk,</span>
<span class="gi">+				&quot;host_ls_low_power_phy_clk&quot;,</span>
<span class="gi">+				((dwc_otg_module_params.host_ls_low_power_phy_clk == DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_48MHZ) &amp;&amp; (dwc_otg_module_params.phy_type == DWC_PHY_TYPE_PARAM_FS) ? 0 : 1),</span>
<span class="gi">+				((dwc_otg_module_params.phy_type == DWC_PHY_TYPE_PARAM_FS) ? DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_6MHZ : DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_48MHZ));</span>
<span class="gi">+</span>
<span class="gi">+	DWC_OTG_PARAM_SET_DEFAULT(phy_ulpi_ddr);</span>
<span class="gi">+	DWC_OTG_PARAM_SET_DEFAULT(phy_ulpi_ext_vbus);</span>
<span class="gi">+	DWC_OTG_PARAM_SET_DEFAULT(phy_utmi_width);</span>
<span class="gi">+	DWC_OTG_PARAM_SET_DEFAULT(ulpi_fs_ls);</span>
<span class="gi">+	DWC_OTG_PARAM_SET_DEFAULT(ts_dline);</span>
<span class="gi">+</span>
<span class="gi">+#ifdef NO_FS_PHY_HW_CHECKS</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(i2c_enable, &quot;i2c_enable&quot;, 1, 0);</span>
<span class="gi">+#else</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(i2c_enable,</span>
<span class="gi">+				&quot;i2c_enable&quot;,</span>
<span class="gi">+				(dwc_otg_module_params.i2c_enable == 1) &amp;&amp; (core_if-&gt;hwcfg3.b.i2c == 0) ? 0 : 1,</span>
<span class="gi">+				0);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	for (i = 0; i &lt; 15; i++) {</span>
<span class="gi">+		int changed = 1;</span>
<span class="gi">+		int error = 0;</span>
<span class="gi">+</span>
<span class="gi">+		if (dwc_otg_module_params.dev_perio_tx_fifo_size[i] == -1) {</span>
<span class="gi">+			changed = 0;</span>
<span class="gi">+			dwc_otg_module_params.dev_perio_tx_fifo_size[i] = dwc_param_dev_perio_tx_fifo_size_default;</span>
<span class="gi">+		}</span>
<span class="gi">+		if (!(dwc_otg_module_params.dev_perio_tx_fifo_size[i] &lt;= (dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;dptxfsiz_dieptxf[i])))) {</span>
<span class="gi">+			if (changed) {</span>
<span class="gi">+				DWC_ERROR(&quot;`%d&#39; invalid for parameter `dev_perio_fifo_size_%d&#39;. Check HW configuration.\n&quot;, dwc_otg_module_params.dev_perio_tx_fifo_size[i], i);</span>
<span class="gi">+				error = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+			dwc_otg_module_params.dev_perio_tx_fifo_size[i] = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;dptxfsiz_dieptxf[i]);</span>
<span class="gi">+		}</span>
<span class="gi">+		retval += error;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(en_multiple_tx_fifo, &quot;en_multiple_tx_fifo&quot;,</span>
<span class="gi">+						((dwc_otg_module_params.en_multiple_tx_fifo == 1) &amp;&amp; (core_if-&gt;hwcfg4.b.ded_fifo_en == 0)) ? 0 : 1,</span>
<span class="gi">+						0);</span>
<span class="gi">+</span>
<span class="gi">+	for (i = 0; i &lt; 15; i++) {</span>
<span class="gi">+		int changed = 1;</span>
<span class="gi">+		int error = 0;</span>
<span class="gi">+</span>
<span class="gi">+		if (dwc_otg_module_params.dev_tx_fifo_size[i] == -1) {</span>
<span class="gi">+			changed = 0;</span>
<span class="gi">+			dwc_otg_module_params.dev_tx_fifo_size[i] = dwc_param_dev_tx_fifo_size_default;</span>
<span class="gi">+		}</span>
<span class="gi">+		if (!(dwc_otg_module_params.dev_tx_fifo_size[i] &lt;= (dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;dptxfsiz_dieptxf[i])))) {</span>
<span class="gi">+			if (changed) {</span>
<span class="gi">+				DWC_ERROR(&quot;%d&#39; invalid for parameter `dev_perio_fifo_size_%d&#39;. Check HW configuration.\n&quot;, dwc_otg_module_params.dev_tx_fifo_size[i], i);</span>
<span class="gi">+				error = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+			dwc_otg_module_params.dev_tx_fifo_size[i] = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;dptxfsiz_dieptxf[i]);</span>
<span class="gi">+		}</span>
<span class="gi">+		retval += error;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(thr_ctl, &quot;thr_ctl&quot;,</span>
<span class="gi">+				((dwc_otg_module_params.thr_ctl != 0) &amp;&amp; ((dwc_otg_module_params.dma_enable == 0) || (core_if-&gt;hwcfg4.b.ded_fifo_en == 0))) ? 0 : 1,</span>
<span class="gi">+				0);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_OTG_PARAM_SET_DEFAULT(tx_thr_length);</span>
<span class="gi">+	DWC_OTG_PARAM_SET_DEFAULT(rx_thr_length);</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(pti_enable, &quot;pti_enable&quot;,</span>
<span class="gi">+		((dwc_otg_module_params.pti_enable == 0) || ((dwc_otg_module_params.pti_enable == 1) &amp;&amp; (core_if-&gt;snpsid &gt;= 0x4F54272A))) ? 1 : 0,</span>
<span class="gi">+			0);</span>
<span class="gi">+</span>
<span class="gi">+	retval += DWC_OTG_PARAM_CHECK_VALID(mpi_enable, &quot;mpi_enable&quot;,</span>
<span class="gi">+			((dwc_otg_module_params.mpi_enable == 0) || ((dwc_otg_module_params.mpi_enable == 1) &amp;&amp; (core_if-&gt;hwcfg2.b.multi_proc_int == 1))) ? 1 : 0,</span>
<span class="gi">+			0);</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is the top level interrupt handler for the Common</span>
<span class="gi">+ * (Device and host modes) interrupts.</span>
<span class="gi">+ */</span>
<span class="gi">+static irqreturn_t dwc_otg_common_irq(int irq, void *dev</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,19)</span>
<span class="gi">+				      , struct pt_regs *r</span>
<span class="gi">+#endif</span>
<span class="gi">+				     )</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = dev;</span>
<span class="gi">+	int32_t retval = IRQ_NONE;</span>
<span class="gi">+</span>
<span class="gi">+	retval = dwc_otg_handle_common_intr(otg_dev-&gt;core_if);</span>
<span class="gi">+	return IRQ_RETVAL(retval);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is called when a lm_device is unregistered with the</span>
<span class="gi">+ * dwc_otg_driver. This happens, for example, when the rmmod command is</span>
<span class="gi">+ * executed. The device may or may not be electrically present. If it is</span>
<span class="gi">+ * present, the driver stops device processing. Any resources used on behalf</span>
<span class="gi">+ * of this device are freed.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] lmdev</span>
<span class="gi">+ */</span>
<span class="gi">+static void dwc_otg_driver_remove(struct lm_device *lmdev)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lmdev);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;%s(%p)\n&quot;, __func__, lmdev);</span>
<span class="gi">+</span>
<span class="gi">+	if (!otg_dev) {</span>
<span class="gi">+		/* Memory allocation for the dwc_otg_device failed. */</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;%s: otg_dev NULL!\n&quot;, __func__);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Free the IRQ</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (otg_dev-&gt;common_irq_installed) {</span>
<span class="gi">+		free_irq(lmdev-&gt;irq, otg_dev);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+#ifndef DWC_DEVICE_ONLY</span>
<span class="gi">+	if (otg_dev-&gt;hcd) {</span>
<span class="gi">+		dwc_otg_hcd_remove(lmdev);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;%s: otg_dev-&gt;hcd NULL!\n&quot;, __func__);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+	if (otg_dev-&gt;pcd) {</span>
<span class="gi">+		dwc_otg_pcd_remove(lmdev);</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+	if (otg_dev-&gt;core_if) {</span>
<span class="gi">+		dwc_otg_cil_remove(otg_dev-&gt;core_if);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Remove the device attributes</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_attr_remove(lmdev);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Return the memory.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (otg_dev-&gt;base) {</span>
<span class="gi">+		cns3xxx_iounmap(otg_dev-&gt;base);</span>
<span class="gi">+	}</span>
<span class="gi">+	kfree(otg_dev);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Clear the drvdata pointer.</span>
<span class="gi">+	 */</span>
<span class="gi">+	lm_set_drvdata(lmdev, 0);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is called when an lm_device is bound to a</span>
<span class="gi">+ * dwc_otg_driver. It creates the driver components required to</span>
<span class="gi">+ * control the device (CIL, HCD, and PCD) and it initializes the</span>
<span class="gi">+ * device. The driver components are stored in a dwc_otg_device</span>
<span class="gi">+ * structure. A reference to the dwc_otg_device is saved in the</span>
<span class="gi">+ * lm_device. This allows the driver to access the dwc_otg_device</span>
<span class="gi">+ * structure on subsequent calls to driver methods for this device.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] lmdev  lm_device definition</span>
<span class="gi">+ */</span>
<span class="gi">+static int dwc_otg_driver_probe(struct lm_device *lmdev)</span>
<span class="gi">+{</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+	uint32_t snpsid;</span>
<span class="gi">+	dwc_otg_device_t *dwc_otg_device;</span>
<span class="gi">+	u_int32_t val;</span>
<span class="gi">+</span>
<span class="gi">+	dev_dbg(&amp;lmdev-&gt;dev, &quot;dwc_otg_driver_probe(%p)\n&quot;, lmdev);</span>
<span class="gi">+	dev_dbg(&amp;lmdev-&gt;dev, &quot;start=0x%08x\n&quot;, (unsigned)lmdev-&gt;resource.start);</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_device = kmalloc(sizeof(dwc_otg_device_t), GFP_KERNEL);</span>
<span class="gi">+</span>
<span class="gi">+	if (!dwc_otg_device) {</span>
<span class="gi">+		dev_err(&amp;lmdev-&gt;dev, &quot;kmalloc of dwc_otg_device failed\n&quot;);</span>
<span class="gi">+		retval = -ENOMEM;</span>
<span class="gi">+		goto fail;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	memset(dwc_otg_device, 0, sizeof(*dwc_otg_device));</span>
<span class="gi">+	dwc_otg_device-&gt;reg_offset = 0xFFFFFFFF;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Map the DWC_otg Core memory into virtual address space.</span>
<span class="gi">+	 */</span>
<span class="gi">+#ifdef CNS3XXX_USBOTG_BASE_VIRT</span>
<span class="gi">+	dwc_otg_device-&gt;base = (void __iomem *) CNS3XXX_USBOTG_BASE_VIRT;</span>
<span class="gi">+#else</span>
<span class="gi">+	dwc_otg_device-&gt;base = ioremap(lmdev-&gt;resource.start, SZ_256K);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	if (!dwc_otg_device-&gt;base) {</span>
<span class="gi">+		dev_err(&amp;lmdev-&gt;dev, &quot;cns3xxx_ioremap() failed\n&quot;);</span>
<span class="gi">+		retval = -ENOMEM;</span>
<span class="gi">+		goto fail;</span>
<span class="gi">+	}</span>
<span class="gi">+	dev_dbg(&amp;lmdev-&gt;dev, &quot;base=0x%08x\n&quot;, (unsigned)dwc_otg_device-&gt;base);</span>
<span class="gi">+</span>
<span class="gi">+#ifdef CONFIG_SILICON</span>
<span class="gi">+#if 0</span>
<span class="gi">+	//OTG PHY</span>
<span class="gi">+	cns3xxx_pwr_power_up(1&lt;&lt;PM_PLL_HM_PD_CTRL_REG_OFFSET_USB_PHY0);</span>
<span class="gi">+	//USB</span>
<span class="gi">+	//cns3xxx_pwr_power_up(1&lt;&lt;PM_PLL_HM_PD_CTRL_REG_OFFSET_USB_PHY1);</span>
<span class="gi">+#endif</span>
<span class="gi">+	cns3xxx_pwr_power_up(1&lt;&lt;PM_PLL_HM_PD_CTRL_REG_OFFSET_PLL_USB);</span>
<span class="gi">+	cns3xxx_pwr_clk_en(1&lt;&lt;PM_CLK_GATE_REG_OFFSET_USB_OTG);</span>
<span class="gi">+	cns3xxx_pwr_soft_rst(1&lt;&lt;PM_SOFT_RST_REG_OFFST_USB_OTG);</span>
<span class="gi">+	//cns3xxx_pwr_clk_en(1&lt;&lt;PM_CLK_GATE_REG_OFFSET_USB_HOST);</span>
<span class="gi">+	//cns3xxx_pwr_soft_rst(1&lt;&lt;PM_SOFT_RST_REG_OFFST_USB_HOST);</span>
<span class="gi">+#ifdef CONFIG_USB_CNS3XXX_OTG_ENABLE_OTG_DRVVBUS</span>
<span class="gi">+	*((volatile u32*) (CNS3XXX_MISC_BASE_VIRT/*0x7600_0000*/+0x14)) |= (1&lt;&lt;3);</span>
<span class="gi">+#endif //#ifdef CONFIG_USB_CNS3XXX_OTG_ENABLE_OTG_DRVVBUS</span>
<span class="gi">+</span>
<span class="gi">+#endif //CONFIG_SILICON</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Attempt to ensure this device is really a DWC_otg Controller.</span>
<span class="gi">+	 * Read and verify the SNPSID register contents. The value should be</span>
<span class="gi">+	 * 0x45F42XXX, which corresponds to &quot;OT2&quot;, as in &quot;OTG version 2.XX&quot;.</span>
<span class="gi">+	 */</span>
<span class="gi">+	snpsid = dwc_read_reg32((uint32_t *)((uint8_t *)dwc_otg_device-&gt;base + 0x40));</span>
<span class="gi">+</span>
<span class="gi">+	if ((snpsid &amp; 0xFFFFF000) != OTG_CORE_REV_2_00) {</span>
<span class="gi">+		dev_err(&amp;lmdev-&gt;dev, &quot;Bad value for SNPSID: 0x%08x\n&quot;, snpsid);</span>
<span class="gi">+		retval = -EINVAL;</span>
<span class="gi">+		goto fail;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;Core Release: %x.%x%x%x\n&quot;, </span>
<span class="gi">+			(snpsid &gt;&gt; 12 &amp; 0xF), </span>
<span class="gi">+			(snpsid &gt;&gt; 8 &amp; 0xF),</span>
<span class="gi">+			(snpsid &gt;&gt; 4 &amp; 0xF),</span>
<span class="gi">+			(snpsid &amp; 0xF));</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	// de-assert otgdisable</span>
<span class="gi">+	val=__raw_readl((void __iomem *)(CNS3XXX_MISC_BASE_VIRT + 0x0808));</span>
<span class="gi">+	__raw_writel(val&amp;(~(1 &lt;&lt; 10)), (void __iomem *)(CNS3XXX_MISC_BASE_VIRT + 0x0808));</span>
<span class="gi">+	val=__raw_readl((void __iomem *)(CNS3XXX_MISC_BASE_VIRT + 0x0808));</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;de-assert otgdisable(bit10): MISC_USBPHY00_CFG_REG=%.8x\n&quot;,val);</span>
<span class="gi">+	</span>
<span class="gi">+	</span>
<span class="gi">+#ifdef ENDIAN_MODE_BIG_ENDIAN</span>
<span class="gi">+	// bit[18]:otg endian, bit[19]:usbh endian</span>
<span class="gi">+	val=__raw_readl((void __iomem *)(CNS3XXX_MISC_BASE_VIRT + 0x0800));</span>
<span class="gi">+	__raw_writel(val|(1 &lt;&lt; 18), (void __iomem *)(CNS3XXX_MISC_BASE_VIRT + 0x0800));</span>
<span class="gi">+#endif</span>
<span class="gi">+	val=__raw_readl((void __iomem *)(CNS3XXX_MISC_BASE_VIRT + 0x0800));</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;OTG endian(bit18): MISC_USB_CFG_REG=%.8x, OTG in %s endian mode\n&quot;,val,(val&amp;(1&lt;&lt;18))?&quot;big&quot;:&quot;little&quot;);</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+    // PMU control</span>
<span class="gi">+	HAL_PMU_POWER_ON_USB_PHY1();</span>
<span class="gi">+	HAL_PMU_POWER_ON_USB_PHY0();</span>
<span class="gi">+    </span>
<span class="gi">+	HAL_PMU_POWER_ON_USB();</span>
<span class="gi">+    </span>
<span class="gi">+	HAL_PMU_ENABLE_USB_OTG_CLOCK();</span>
<span class="gi">+	HAL_PMU_ENABLE_USB_HOST_CLOCK();</span>
<span class="gi">+    </span>
<span class="gi">+	Hal_Pmu_Software_Reset(PMU_USB_OTG_SOFTWARE_RESET_BIT_INDEX);</span>
<span class="gi">+	Hal_Pmu_Software_Reset(PMU_USB_HOST_SOFTWARE_RESET_BIT_INDEX);</span>
<span class="gi">+*/</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Initialize driver data to point to the global DWC_otg</span>
<span class="gi">+	 * Device structure.</span>
<span class="gi">+	 */</span>
<span class="gi">+	lm_set_drvdata(lmdev, dwc_otg_device);</span>
<span class="gi">+	dev_dbg(&amp;lmdev-&gt;dev, &quot;dwc_otg_device=0x%p\n&quot;, dwc_otg_device);</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_device-&gt;core_if = dwc_otg_cil_init(dwc_otg_device-&gt;base,</span>
<span class="gi">+						   &amp;dwc_otg_module_params);</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_otg_device-&gt;core_if-&gt;snpsid = snpsid;</span>
<span class="gi">+	</span>
<span class="gi">+	if (!dwc_otg_device-&gt;core_if) {</span>
<span class="gi">+		dev_err(&amp;lmdev-&gt;dev, &quot;CIL initialization failed!\n&quot;);</span>
<span class="gi">+		retval = -ENOMEM;</span>
<span class="gi">+		goto fail;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Validate parameter values.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (check_parameters(dwc_otg_device-&gt;core_if)) {</span>
<span class="gi">+		retval = -EINVAL;</span>
<span class="gi">+		goto fail;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Create Device Attributes in sysfs</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_attr_create(lmdev);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Disable the global interrupt until all the interrupt</span>
<span class="gi">+	 * handlers are installed.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_disable_global_interrupts(dwc_otg_device-&gt;core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Install the interrupt handler for the common interrupts before</span>
<span class="gi">+	 * enabling common interrupts in core_init below.</span>
<span class="gi">+	 */</span>
<span class="gi">+	DWC_DEBUGPL(DBG_CIL, &quot;registering (common) handler for irq%d\n&quot;,</span>
<span class="gi">+		    lmdev-&gt;irq);</span>
<span class="gi">+	retval = request_irq(lmdev-&gt;irq, dwc_otg_common_irq,</span>
<span class="gi">+			     IRQF_SHARED, &quot;dwc_otg&quot;, dwc_otg_device);</span>
<span class="gi">+	if (retval) {</span>
<span class="gi">+		DWC_ERROR(&quot;request of irq%d failed\n&quot;, lmdev-&gt;irq);</span>
<span class="gi">+		retval = -EBUSY;</span>
<span class="gi">+		goto fail;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_otg_device-&gt;common_irq_installed = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Initialize the DWC_otg core.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_core_init(dwc_otg_device-&gt;core_if);</span>
<span class="gi">+</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Initialize the PCD</span>
<span class="gi">+	 */</span>
<span class="gi">+	retval = dwc_otg_pcd_init(lmdev);</span>
<span class="gi">+	if (retval != 0) {</span>
<span class="gi">+		DWC_ERROR(&quot;dwc_otg_pcd_init failed\n&quot;);</span>
<span class="gi">+		dwc_otg_device-&gt;pcd = NULL;</span>
<span class="gi">+		goto fail;</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+#ifndef DWC_DEVICE_ONLY</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Initialize the HCD</span>
<span class="gi">+	 */</span>
<span class="gi">+	retval = dwc_otg_hcd_init(lmdev);</span>
<span class="gi">+	if (retval != 0) {</span>
<span class="gi">+		DWC_ERROR(&quot;dwc_otg_hcd_init failed\n&quot;);</span>
<span class="gi">+		dwc_otg_device-&gt;hcd = NULL;</span>
<span class="gi">+		goto fail;</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Enable the global interrupt after all the interrupt</span>
<span class="gi">+	 * handlers are installed.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_enable_global_interrupts(dwc_otg_device-&gt;core_if);</span>
<span class="gi">+</span>
<span class="gi">+	return 0;</span>
<span class="gi">+</span>
<span class="gi">+ fail:</span>
<span class="gi">+	dwc_otg_driver_remove(lmdev);</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This structure defines the methods to be called by a bus driver</span>
<span class="gi">+ * during the lifecycle of a device on that bus. Both drivers and</span>
<span class="gi">+ * devices are registered with a bus driver. The bus driver matches</span>
<span class="gi">+ * devices to drivers based on information in the device and driver</span>
<span class="gi">+ * structures.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The probe function is called when the bus driver matches a device</span>
<span class="gi">+ * to this driver. The remove function is called when a device is</span>
<span class="gi">+ * unregistered with the bus driver.</span>
<span class="gi">+ */</span>
<span class="gi">+static struct lm_driver dwc_otg_driver = {</span>
<span class="gi">+	.drv = {</span>
<span class="gi">+		.name	= (char *)dwc_driver_name,</span>
<span class="gi">+	},</span>
<span class="gi">+	.probe		= dwc_otg_driver_probe,</span>
<span class="gi">+	.remove		= dwc_otg_driver_remove,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is called when the dwc_otg_driver is installed with the</span>
<span class="gi">+ * insmod command. It registers the dwc_otg_driver structure with the</span>
<span class="gi">+ * appropriate bus driver. This will cause the dwc_otg_driver_probe function</span>
<span class="gi">+ * to be called. In addition, the bus driver will automatically expose</span>
<span class="gi">+ * attributes defined for the device and driver in the special sysfs file</span>
<span class="gi">+ * system.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return</span>
<span class="gi">+ */</span>
<span class="gi">+static int __init dwc_otg_driver_init(void)</span>
<span class="gi">+{</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+	int error;</span>
<span class="gi">+	printk(KERN_INFO &quot;%s: version %s\n&quot;, dwc_driver_name, DWC_DRIVER_VERSION);</span>
<span class="gi">+</span>
<span class="gi">+	retval = lm_driver_register(&amp;dwc_otg_driver);</span>
<span class="gi">+	if (retval &lt; 0) {</span>
<span class="gi">+		printk(KERN_ERR &quot;%s retval=%d\n&quot;, __func__, retval);</span>
<span class="gi">+		return retval;</span>
<span class="gi">+	}</span>
<span class="gi">+	error = driver_create_file(&amp;dwc_otg_driver.drv, &amp;driver_attr_version);</span>
<span class="gi">+	error = driver_create_file(&amp;dwc_otg_driver.drv, &amp;driver_attr_debuglevel);</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+module_init(dwc_otg_driver_init);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is called when the driver is removed from the kernel</span>
<span class="gi">+ * with the rmmod command. The driver unregisters itself with its bus</span>
<span class="gi">+ * driver.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static void __exit dwc_otg_driver_cleanup(void)</span>
<span class="gi">+{</span>
<span class="gi">+	printk(KERN_DEBUG &quot;dwc_otg_driver_cleanup()\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	driver_remove_file(&amp;dwc_otg_driver.drv, &amp;driver_attr_debuglevel);</span>
<span class="gi">+	driver_remove_file(&amp;dwc_otg_driver.drv, &amp;driver_attr_version);</span>
<span class="gi">+</span>
<span class="gi">+	lm_driver_unregister(&amp;dwc_otg_driver);</span>
<span class="gi">+</span>
<span class="gi">+	printk(KERN_INFO &quot;%s module removed\n&quot;, dwc_driver_name);</span>
<span class="gi">+}</span>
<span class="gi">+module_exit(dwc_otg_driver_cleanup);</span>
<span class="gi">+</span>
<span class="gi">+MODULE_DESCRIPTION(DWC_DRIVER_DESC);</span>
<span class="gi">+MODULE_AUTHOR(&quot;Synopsys Inc.&quot;);</span>
<span class="gi">+MODULE_LICENSE(&quot;GPL&quot;);</span>
<span class="gi">+</span>
<span class="gi">+module_param_named(otg_cap, dwc_otg_module_params.otg_cap, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(otg_cap, &quot;OTG Capabilities 0=HNP&amp;SRP 1=SRP Only 2=None&quot;);</span>
<span class="gi">+module_param_named(opt, dwc_otg_module_params.opt, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(opt, &quot;OPT Mode&quot;);</span>
<span class="gi">+module_param_named(dma_enable, dwc_otg_module_params.dma_enable, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dma_enable, &quot;DMA Mode 0=Slave 1=DMA enabled&quot;);</span>
<span class="gi">+</span>
<span class="gi">+module_param_named(dma_desc_enable, dwc_otg_module_params.dma_desc_enable, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dma_desc_enable, &quot;DMA Desc Mode 0=Address DMA 1=DMA Descriptor enabled&quot;);</span>
<span class="gi">+</span>
<span class="gi">+module_param_named(dma_burst_size, dwc_otg_module_params.dma_burst_size, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dma_burst_size, &quot;DMA Burst Size 1, 4, 8, 16, 32, 64, 128, 256&quot;);</span>
<span class="gi">+module_param_named(speed, dwc_otg_module_params.speed, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(speed, &quot;Speed 0=High Speed 1=Full Speed&quot;);</span>
<span class="gi">+module_param_named(host_support_fs_ls_low_power, dwc_otg_module_params.host_support_fs_ls_low_power, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(host_support_fs_ls_low_power, &quot;Support Low Power w/FS or LS 0=Support 1=Don&#39;t Support&quot;);</span>
<span class="gi">+module_param_named(host_ls_low_power_phy_clk, dwc_otg_module_params.host_ls_low_power_phy_clk, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(host_ls_low_power_phy_clk, &quot;Low Speed Low Power Clock 0=48Mhz 1=6Mhz&quot;);</span>
<span class="gi">+module_param_named(enable_dynamic_fifo, dwc_otg_module_params.enable_dynamic_fifo, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(enable_dynamic_fifo, &quot;0=cC Setting 1=Allow Dynamic Sizing&quot;);</span>
<span class="gi">+module_param_named(data_fifo_size, dwc_otg_module_params.data_fifo_size, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(data_fifo_size, &quot;Total number of words in the data FIFO memory 32-32768&quot;);</span>
<span class="gi">+module_param_named(dev_rx_fifo_size, dwc_otg_module_params.dev_rx_fifo_size, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_rx_fifo_size, &quot;Number of words in the Rx FIFO 16-32768&quot;);</span>
<span class="gi">+module_param_named(dev_nperio_tx_fifo_size, dwc_otg_module_params.dev_nperio_tx_fifo_size, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_nperio_tx_fifo_size, &quot;Number of words in the non-periodic Tx FIFO 16-32768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_1, dwc_otg_module_params.dev_perio_tx_fifo_size[0], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_1, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_2, dwc_otg_module_params.dev_perio_tx_fifo_size[1], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_2, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_3, dwc_otg_module_params.dev_perio_tx_fifo_size[2], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_3, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_4, dwc_otg_module_params.dev_perio_tx_fifo_size[3], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_4, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_5, dwc_otg_module_params.dev_perio_tx_fifo_size[4], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_5, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_6, dwc_otg_module_params.dev_perio_tx_fifo_size[5], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_6, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_7, dwc_otg_module_params.dev_perio_tx_fifo_size[6], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_7, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_8, dwc_otg_module_params.dev_perio_tx_fifo_size[7], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_8, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_9, dwc_otg_module_params.dev_perio_tx_fifo_size[8], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_9, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_10, dwc_otg_module_params.dev_perio_tx_fifo_size[9], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_10, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_11, dwc_otg_module_params.dev_perio_tx_fifo_size[10], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_11, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_12, dwc_otg_module_params.dev_perio_tx_fifo_size[11], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_12, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_13, dwc_otg_module_params.dev_perio_tx_fifo_size[12], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_13, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_14, dwc_otg_module_params.dev_perio_tx_fifo_size[13], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_14, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_perio_tx_fifo_size_15, dwc_otg_module_params.dev_perio_tx_fifo_size[14], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_perio_tx_fifo_size_15, &quot;Number of words in the periodic Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(host_rx_fifo_size, dwc_otg_module_params.host_rx_fifo_size, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(host_rx_fifo_size, &quot;Number of words in the Rx FIFO 16-32768&quot;);</span>
<span class="gi">+module_param_named(host_nperio_tx_fifo_size, dwc_otg_module_params.host_nperio_tx_fifo_size, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(host_nperio_tx_fifo_size, &quot;Number of words in the non-periodic Tx FIFO 16-32768&quot;);</span>
<span class="gi">+module_param_named(host_perio_tx_fifo_size, dwc_otg_module_params.host_perio_tx_fifo_size, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(host_perio_tx_fifo_size, &quot;Number of words in the host periodic Tx FIFO 16-32768&quot;);</span>
<span class="gi">+module_param_named(max_transfer_size, dwc_otg_module_params.max_transfer_size, int, 0444);</span>
<span class="gi">+/** @todo Set the max to 512K, modify checks */</span>
<span class="gi">+MODULE_PARM_DESC(max_transfer_size, &quot;The maximum transfer size supported in bytes 2047-65535&quot;);</span>
<span class="gi">+module_param_named(max_packet_count, dwc_otg_module_params.max_packet_count, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(max_packet_count, &quot;The maximum number of packets in a transfer 15-511&quot;);</span>
<span class="gi">+module_param_named(host_channels, dwc_otg_module_params.host_channels, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(host_channels, &quot;The number of host channel registers to use 1-16&quot;);</span>
<span class="gi">+module_param_named(dev_endpoints, dwc_otg_module_params.dev_endpoints, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_endpoints, &quot;The number of endpoints in addition to EP0 available for device mode 1-15&quot;);</span>
<span class="gi">+module_param_named(phy_type, dwc_otg_module_params.phy_type, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(phy_type, &quot;0=Reserved 1=UTMI+ 2=ULPI&quot;);</span>
<span class="gi">+module_param_named(phy_utmi_width, dwc_otg_module_params.phy_utmi_width, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(phy_utmi_width, &quot;Specifies the UTMI+ Data Width 8 or 16 bits&quot;);</span>
<span class="gi">+module_param_named(phy_ulpi_ddr, dwc_otg_module_params.phy_ulpi_ddr, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(phy_ulpi_ddr, &quot;ULPI at double or single data rate 0=Single 1=Double&quot;);</span>
<span class="gi">+module_param_named(phy_ulpi_ext_vbus, dwc_otg_module_params.phy_ulpi_ext_vbus, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(phy_ulpi_ext_vbus, &quot;ULPI PHY using internal or external vbus 0=Internal&quot;);</span>
<span class="gi">+module_param_named(i2c_enable, dwc_otg_module_params.i2c_enable, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(i2c_enable, &quot;FS PHY Interface&quot;);</span>
<span class="gi">+module_param_named(ulpi_fs_ls, dwc_otg_module_params.ulpi_fs_ls, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(ulpi_fs_ls, &quot;ULPI PHY FS/LS mode only&quot;);</span>
<span class="gi">+module_param_named(ts_dline, dwc_otg_module_params.ts_dline, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(ts_dline, &quot;Term select Dline pulsing for all PHYs&quot;);</span>
<span class="gi">+module_param_named(debug, g_dbg_lvl, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(debug, &quot;&quot;);</span>
<span class="gi">+</span>
<span class="gi">+module_param_named(en_multiple_tx_fifo, dwc_otg_module_params.en_multiple_tx_fifo, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(en_multiple_tx_fifo, &quot;Dedicated Non Periodic Tx FIFOs 0=disabled 1=enabled&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_1, dwc_otg_module_params.dev_tx_fifo_size[0], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_1, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_2, dwc_otg_module_params.dev_tx_fifo_size[1], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_2, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_3, dwc_otg_module_params.dev_tx_fifo_size[2], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_3, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_4, dwc_otg_module_params.dev_tx_fifo_size[3], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_4, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_5, dwc_otg_module_params.dev_tx_fifo_size[4], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_5, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_6, dwc_otg_module_params.dev_tx_fifo_size[5], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_6, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_7, dwc_otg_module_params.dev_tx_fifo_size[6], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_7, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_8, dwc_otg_module_params.dev_tx_fifo_size[7], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_8, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_9, dwc_otg_module_params.dev_tx_fifo_size[8], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_9, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_10, dwc_otg_module_params.dev_tx_fifo_size[9], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_10, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_11, dwc_otg_module_params.dev_tx_fifo_size[10], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_11, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_12, dwc_otg_module_params.dev_tx_fifo_size[11], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_12, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_13, dwc_otg_module_params.dev_tx_fifo_size[12], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_13, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_14, dwc_otg_module_params.dev_tx_fifo_size[13], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_14, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+module_param_named(dev_tx_fifo_size_15, dwc_otg_module_params.dev_tx_fifo_size[14], int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(dev_tx_fifo_size_15, &quot;Number of words in the Tx FIFO 4-768&quot;);</span>
<span class="gi">+</span>
<span class="gi">+module_param_named(thr_ctl, dwc_otg_module_params.thr_ctl, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(thr_ctl, &quot;Thresholding enable flag bit 0 - non ISO Tx thr., 1 - ISO Tx thr., 2 - Rx thr.- bit 0=disabled 1=enabled&quot;);</span>
<span class="gi">+module_param_named(tx_thr_length, dwc_otg_module_params.tx_thr_length, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(tx_thr_length, &quot;Tx Threshold length in 32 bit DWORDs&quot;);</span>
<span class="gi">+module_param_named(rx_thr_length, dwc_otg_module_params.rx_thr_length, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(rx_thr_length, &quot;Rx Threshold length in 32 bit DWORDs&quot;);</span>
<span class="gi">+</span>
<span class="gi">+module_param_named(pti_enable, dwc_otg_module_params.pti_enable, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(pti_enable, &quot;Per Transfer Interrupt mode 0=disabled 1=enabled&quot;);</span>
<span class="gi">+</span>
<span class="gi">+module_param_named(mpi_enable, dwc_otg_module_params.mpi_enable, int, 0444);</span>
<span class="gi">+MODULE_PARM_DESC(mpi_enable, &quot;Multiprocessor Interrupt mode 0=disabled 1=enabled&quot;);</span>
<span class="gi">+</span>
<span class="gi">+/** @page &quot;Module Parameters&quot;</span>
<span class="gi">+ *</span>
<span class="gi">+ * The following parameters may be specified when starting the module.</span>
<span class="gi">+ * These parameters define how the DWC_otg controller should be</span>
<span class="gi">+ * configured. Parameter values are passed to the CIL initialization</span>
<span class="gi">+ * function dwc_otg_cil_init</span>
<span class="gi">+ *</span>
<span class="gi">+ * Example: &lt;code&gt;modprobe dwc_otg speed=1 otg_cap=1&lt;/code&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+</span>
<span class="gi">+ &lt;table&gt;</span>
<span class="gi">+ &lt;tr&gt;&lt;td&gt;Parameter Name&lt;/td&gt;&lt;td&gt;Meaning&lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;otg_cap&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Specifies the OTG capabilities. The driver will automatically detect the</span>
<span class="gi">+ value for this parameter if none is specified.</span>
<span class="gi">+ - 0: HNP and SRP capable (default, if available)</span>
<span class="gi">+ - 1: SRP Only capable</span>
<span class="gi">+ - 2: No HNP/SRP capable</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;dma_enable&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Specifies whether to use slave or DMA mode for accessing the data FIFOs.</span>
<span class="gi">+ The driver will automatically detect the value for this parameter if none is</span>
<span class="gi">+ specified.</span>
<span class="gi">+ - 0: Slave</span>
<span class="gi">+ - 1: DMA (default, if available)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;dma_burst_size&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;The DMA Burst size (applicable only for External DMA Mode).</span>
<span class="gi">+ - Values: 1, 4, 8 16, 32, 64, 128, 256 (default 32)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;speed&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Specifies the maximum speed of operation in host and device mode. The</span>
<span class="gi">+ actual speed depends on the speed of the attached device and the value of</span>
<span class="gi">+ phy_type.</span>
<span class="gi">+ - 0: High Speed (default)</span>
<span class="gi">+ - 1: Full Speed</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;host_support_fs_ls_low_power&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Specifies whether low power mode is supported when attached to a Full</span>
<span class="gi">+ Speed or Low Speed device in host mode.</span>
<span class="gi">+ - 0: Don&#39;t support low power mode (default)</span>
<span class="gi">+ - 1: Support low power mode</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;host_ls_low_power_phy_clk&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Specifies the PHY clock rate in low power mode when connected to a Low</span>
<span class="gi">+ Speed device in host mode. This parameter is applicable only if</span>
<span class="gi">+ HOST_SUPPORT_FS_LS_LOW_POWER is enabled.</span>
<span class="gi">+ - 0: 48 MHz (default)</span>
<span class="gi">+ - 1: 6 MHz</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;enable_dynamic_fifo&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt; Specifies whether FIFOs may be resized by the driver software.</span>
<span class="gi">+ - 0: Use cC FIFO size parameters</span>
<span class="gi">+ - 1: Allow dynamic FIFO sizing (default)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;data_fifo_size&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Total number of 4-byte words in the data FIFO memory. This memory</span>
<span class="gi">+ includes the Rx FIFO, non-periodic Tx FIFO, and periodic Tx FIFOs.</span>
<span class="gi">+ - Values: 32 to 32768 (default 8192)</span>
<span class="gi">+</span>
<span class="gi">+ Note: The total FIFO memory depth in the FPGA configuration is 8192.</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;dev_rx_fifo_size&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Number of 4-byte words in the Rx FIFO in device mode when dynamic</span>
<span class="gi">+ FIFO sizing is enabled.</span>
<span class="gi">+ - Values: 16 to 32768 (default 1064)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;dev_nperio_tx_fifo_size&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Number of 4-byte words in the non-periodic Tx FIFO in device mode when</span>
<span class="gi">+ dynamic FIFO sizing is enabled.</span>
<span class="gi">+ - Values: 16 to 32768 (default 1024)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;dev_perio_tx_fifo_size_n (n = 1 to 15)&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Number of 4-byte words in each of the periodic Tx FIFOs in device mode</span>
<span class="gi">+ when dynamic FIFO sizing is enabled.</span>
<span class="gi">+ - Values: 4 to 768 (default 256)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;host_rx_fifo_size&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Number of 4-byte words in the Rx FIFO in host mode when dynamic FIFO</span>
<span class="gi">+ sizing is enabled.</span>
<span class="gi">+ - Values: 16 to 32768 (default 1024)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;host_nperio_tx_fifo_size&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Number of 4-byte words in the non-periodic Tx FIFO in host mode when</span>
<span class="gi">+ dynamic FIFO sizing is enabled in the core.</span>
<span class="gi">+ - Values: 16 to 32768 (default 1024)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;host_perio_tx_fifo_size&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Number of 4-byte words in the host periodic Tx FIFO when dynamic FIFO</span>
<span class="gi">+ sizing is enabled.</span>
<span class="gi">+ - Values: 16 to 32768 (default 1024)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;max_transfer_size&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;The maximum transfer size supported in bytes.</span>
<span class="gi">+ - Values: 2047 to 65,535 (default 65,535)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;max_packet_count&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;The maximum number of packets in a transfer.</span>
<span class="gi">+ - Values: 15 to 511 (default 511)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;host_channels&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;The number of host channel registers to use.</span>
<span class="gi">+ - Values: 1 to 16 (default 12)</span>
<span class="gi">+</span>
<span class="gi">+ Note: The FPGA configuration supports a maximum of 12 host channels.</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;dev_endpoints&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;The number of endpoints in addition to EP0 available for device mode</span>
<span class="gi">+ operations.</span>
<span class="gi">+ - Values: 1 to 15 (default 6 IN and OUT)</span>
<span class="gi">+</span>
<span class="gi">+ Note: The FPGA configuration supports a maximum of 6 IN and OUT endpoints in</span>
<span class="gi">+ addition to EP0.</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;phy_type&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Specifies the type of PHY interface to use. By default, the driver will</span>
<span class="gi">+ automatically detect the phy_type.</span>
<span class="gi">+ - 0: Full Speed</span>
<span class="gi">+ - 1: UTMI+ (default, if available)</span>
<span class="gi">+ - 2: ULPI</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;phy_utmi_width&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Specifies the UTMI+ Data Width. This parameter is applicable for a</span>
<span class="gi">+ phy_type of UTMI+. Also, this parameter is applicable only if the</span>
<span class="gi">+ OTG_HSPHY_WIDTH cC parameter was set to &quot;8 and 16 bits&quot;, meaning that the</span>
<span class="gi">+ core has been configured to work at either data path width.</span>
<span class="gi">+ - Values: 8 or 16 bits (default 16)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;phy_ulpi_ddr&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Specifies whether the ULPI operates at double or single data rate. This</span>
<span class="gi">+ parameter is only applicable if phy_type is ULPI.</span>
<span class="gi">+ - 0: single data rate ULPI interface with 8 bit wide data bus (default)</span>
<span class="gi">+ - 1: double data rate ULPI interface with 4 bit wide data bus</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;i2c_enable&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Specifies whether to use the I2C interface for full speed PHY. This</span>
<span class="gi">+ parameter is only applicable if PHY_TYPE is FS.</span>
<span class="gi">+ - 0: Disabled (default)</span>
<span class="gi">+ - 1: Enabled</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;otg_en_multiple_tx_fifo&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Specifies whether dedicatedto tx fifos are enabled for non periodic IN EPs.</span>
<span class="gi">+ The driver will automatically detect the value for this parameter if none is</span>
<span class="gi">+ specified.</span>
<span class="gi">+ - 0: Disabled</span>
<span class="gi">+ - 1: Enabled (default, if available)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+ &lt;tr&gt;</span>
<span class="gi">+ &lt;td&gt;dev_tx_fifo_size_n (n = 1 to 15)&lt;/td&gt;</span>
<span class="gi">+ &lt;td&gt;Number of 4-byte words in each of the Tx FIFOs in device mode</span>
<span class="gi">+ when dynamic FIFO sizing is enabled.</span>
<span class="gi">+ - Values: 4 to 768 (default 256)</span>
<span class="gi">+ &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+</span>
<span class="gi">+*/</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_driver.h</span>
<span class="gu">@@ -0,0 +1,73 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_driver.h $</span>
<span class="gi">+ * $Revision: #12 $</span>
<span class="gi">+ * $Date: 2008/07/15 $</span>
<span class="gi">+ * $Change: 1064918 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+</span>
<span class="gi">+#ifndef __DWC_OTG_DRIVER_H__</span>
<span class="gi">+#define __DWC_OTG_DRIVER_H__</span>
<span class="gi">+</span>
<span class="gi">+/** @file</span>
<span class="gi">+ * This file contains the interface to the Linux driver.</span>
<span class="gi">+ */</span>
<span class="gi">+#include &quot;dwc_otg_cil.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+/* Type declarations */</span>
<span class="gi">+struct dwc_otg_pcd;</span>
<span class="gi">+struct dwc_otg_hcd;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This structure is a wrapper that encapsulates the driver components used to</span>
<span class="gi">+ * manage a single DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_device {</span>
<span class="gi">+	/** Base address returned from ioremap() */</span>
<span class="gi">+	void *base;</span>
<span class="gi">+</span>
<span class="gi">+	struct lm_device *lmdev;</span>
<span class="gi">+</span>
<span class="gi">+	/** Pointer to the core interface structure. */</span>
<span class="gi">+	dwc_otg_core_if_t *core_if;</span>
<span class="gi">+</span>
<span class="gi">+	/** Register offset for Diagnostic API. */</span>
<span class="gi">+	uint32_t reg_offset;</span>
<span class="gi">+</span>
<span class="gi">+	/** Pointer to the PCD structure. */</span>
<span class="gi">+	struct dwc_otg_pcd *pcd;</span>
<span class="gi">+</span>
<span class="gi">+	/** Pointer to the HCD structure. */</span>
<span class="gi">+	struct dwc_otg_hcd *hcd;</span>
<span class="gi">+</span>
<span class="gi">+	/** Flag to indicate whether the common IRQ handler is installed. */</span>
<span class="gi">+	uint8_t common_irq_installed;</span>
<span class="gi">+</span>
<span class="gi">+} dwc_otg_device_t;</span>
<span class="gi">+</span>
<span class="gi">+#endif</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_hcd.c</span>
<span class="gu">@@ -0,0 +1,2919 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd.c $</span>
<span class="gi">+ * $Revision: #75 $</span>
<span class="gi">+ * $Date: 2008/07/15 $</span>
<span class="gi">+ * $Change: 1064940 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ *</span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+#ifndef DWC_DEVICE_ONLY</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @file</span>
<span class="gi">+ *</span>
<span class="gi">+ * This file contains the implementation of the HCD. In Linux, the HCD</span>
<span class="gi">+ * implements the hc_driver API.</span>
<span class="gi">+ */</span>
<span class="gi">+#include &lt;linux/kernel.h&gt;</span>
<span class="gi">+#include &lt;linux/module.h&gt;</span>
<span class="gi">+#include &lt;linux/moduleparam.h&gt;</span>
<span class="gi">+#include &lt;linux/init.h&gt;</span>
<span class="gi">+#include &lt;linux/device.h&gt;</span>
<span class="gi">+#include &lt;linux/errno.h&gt;</span>
<span class="gi">+#include &lt;linux/list.h&gt;</span>
<span class="gi">+#include &lt;linux/interrupt.h&gt;</span>
<span class="gi">+#include &lt;linux/string.h&gt;</span>
<span class="gi">+#include &lt;linux/dma-mapping.h&gt;</span>
<span class="gi">+#include &lt;linux/version.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;mach/lm.h&gt;</span>
<span class="gi">+#include &lt;mach/irqs.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#include &quot;dwc_otg_driver.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_hcd.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_regs.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+static const char dwc_otg_hcd_name[] = &quot;dwc_otg_hcd&quot;;</span>
<span class="gi">+</span>
<span class="gi">+static const struct hc_driver dwc_otg_hc_driver = {</span>
<span class="gi">+</span>
<span class="gi">+	.description =		dwc_otg_hcd_name,</span>
<span class="gi">+	.product_desc = 	&quot;DWC OTG Controller&quot;,</span>
<span class="gi">+	.hcd_priv_size = 	sizeof(dwc_otg_hcd_t),</span>
<span class="gi">+</span>
<span class="gi">+	.irq =			dwc_otg_hcd_irq,</span>
<span class="gi">+</span>
<span class="gi">+	.flags =		HCD_MEMORY | HCD_USB2,</span>
<span class="gi">+</span>
<span class="gi">+	//.reset =		</span>
<span class="gi">+	.start =		dwc_otg_hcd_start,</span>
<span class="gi">+	//.suspend =		</span>
<span class="gi">+	//.resume =		</span>
<span class="gi">+	.stop =			dwc_otg_hcd_stop,</span>
<span class="gi">+</span>
<span class="gi">+	.urb_enqueue =		dwc_otg_hcd_urb_enqueue,</span>
<span class="gi">+	.urb_dequeue =		dwc_otg_hcd_urb_dequeue,</span>
<span class="gi">+	.endpoint_disable =	dwc_otg_hcd_endpoint_disable,</span>
<span class="gi">+</span>
<span class="gi">+	.get_frame_number =	dwc_otg_hcd_get_frame_number,</span>
<span class="gi">+</span>
<span class="gi">+	.hub_status_data =	dwc_otg_hcd_hub_status_data,</span>
<span class="gi">+	.hub_control =		dwc_otg_hcd_hub_control,</span>
<span class="gi">+	//.hub_suspend =		</span>
<span class="gi">+	//.hub_resume =		</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Work queue function for starting the HCD when A-Cable is connected.</span>
<span class="gi">+ * The dwc_otg_hcd_start() must be called in a process context.</span>
<span class="gi">+ */</span>
<span class="gi">+static void hcd_start_func(</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			   void *_vp</span>
<span class="gi">+#else</span>
<span class="gi">+			   struct work_struct *_work</span>
<span class="gi">+#endif</span>
<span class="gi">+			  )</span>
<span class="gi">+{</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct usb_hcd *usb_hcd = (struct usb_hcd *)_vp;</span>
<span class="gi">+#else</span>
<span class="gi">+	struct delayed_work *dw = container_of(_work, struct delayed_work, work);</span>
<span class="gi">+	struct dwc_otg_hcd *otg_hcd = container_of(dw, struct dwc_otg_hcd, start_work);</span>
<span class="gi">+	struct usb_hcd *usb_hcd = container_of((void *)otg_hcd, struct usb_hcd, hcd_priv);</span>
<span class="gi">+#endif</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;%s() %p\n&quot;, __func__, usb_hcd);</span>
<span class="gi">+	if (usb_hcd) {</span>
<span class="gi">+		dwc_otg_hcd_start(usb_hcd);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * HCD Callback function for starting the HCD when A-Cable is</span>
<span class="gi">+ * connected.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param p void pointer to the &lt;code&gt;struct usb_hcd&lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t dwc_otg_hcd_start_cb(void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(p);</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = dwc_otg_hcd-&gt;core_if;</span>
<span class="gi">+	hprt0_data_t hprt0;</span>
<span class="gi">+</span>
<span class="gi">+	if (core_if-&gt;op_state == B_HOST) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Reset the port.  During a HNP mode switch the reset</span>
<span class="gi">+		 * needs to occur within 1ms and have a duration of at</span>
<span class="gi">+		 * least 50ms.</span>
<span class="gi">+		 */</span>
<span class="gi">+		hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+		hprt0.b.prtrst = 1;</span>
<span class="gi">+		dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+		((struct usb_hcd *)p)-&gt;self.is_b_host = 1;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		((struct usb_hcd *)p)-&gt;self.is_b_host = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Need to start the HCD in a non-interrupt context. */</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	INIT_WORK(&amp;dwc_otg_hcd-&gt;start_work, hcd_start_func, p);</span>
<span class="gi">+//	INIT_DELAYED_WORK(&amp;dwc_otg_hcd-&gt;start_work, hcd_start_func, p);</span>
<span class="gi">+#else</span>
<span class="gi">+//	INIT_WORK(&amp;dwc_otg_hcd-&gt;start_work, hcd_start_func);</span>
<span class="gi">+	INIT_DELAYED_WORK(&amp;dwc_otg_hcd-&gt;start_work, hcd_start_func);</span>
<span class="gi">+#endif</span>
<span class="gi">+//	schedule_work(&amp;dwc_otg_hcd-&gt;start_work);</span>
<span class="gi">+	queue_delayed_work(core_if-&gt;wq_otg, &amp;dwc_otg_hcd-&gt;start_work, 50 * HZ / 1000);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * HCD Callback function for stopping the HCD.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param p void pointer to the &lt;code&gt;struct usb_hcd&lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t dwc_otg_hcd_stop_cb(void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_hcd *usb_hcd = (struct usb_hcd *)p;</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;%s(%p)\n&quot;, __func__, p);</span>
<span class="gi">+	dwc_otg_hcd_stop(usb_hcd);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static void del_xfer_timers(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	int i;</span>
<span class="gi">+	int num_channels = hcd-&gt;core_if-&gt;core_params-&gt;host_channels;</span>
<span class="gi">+	for (i = 0; i &lt; num_channels; i++) {</span>
<span class="gi">+		del_timer(&amp;hcd-&gt;core_if-&gt;hc_xfer_timer[i]);</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static void del_timers(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	del_xfer_timers(hcd);</span>
<span class="gi">+	del_timer(&amp;hcd-&gt;conn_timer);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Processes all the URBs in a single list of QHs. Completes them with</span>
<span class="gi">+ * -ETIMEDOUT and frees the QTD.</span>
<span class="gi">+ */</span>
<span class="gi">+static void kill_urbs_in_qh_list(dwc_otg_hcd_t *hcd, struct list_head *qh_list)</span>
<span class="gi">+{</span>
<span class="gi">+	struct list_head	*qh_item;</span>
<span class="gi">+	dwc_otg_qh_t		*qh;</span>
<span class="gi">+	struct list_head	*qtd_item;</span>
<span class="gi">+	dwc_otg_qtd_t		*qtd;</span>
<span class="gi">+</span>
<span class="gi">+	list_for_each(qh_item, qh_list) {</span>
<span class="gi">+		qh = list_entry(qh_item, dwc_otg_qh_t, qh_list_entry);</span>
<span class="gi">+		for (qtd_item = qh-&gt;qtd_list.next;</span>
<span class="gi">+		     qtd_item != &amp;qh-&gt;qtd_list;</span>
<span class="gi">+		     qtd_item = qh-&gt;qtd_list.next) {</span>
<span class="gi">+			qtd = list_entry(qtd_item, dwc_otg_qtd_t, qtd_list_entry);</span>
<span class="gi">+			if (qtd-&gt;urb != NULL) {</span>
<span class="gi">+				dwc_otg_hcd_complete_urb(hcd, qtd-&gt;urb,</span>
<span class="gi">+							 -ETIMEDOUT);</span>
<span class="gi">+			}</span>
<span class="gi">+			dwc_otg_hcd_qtd_remove_and_free(hcd, qtd);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Responds with an error status of ETIMEDOUT to all URBs in the non-periodic</span>
<span class="gi">+ * and periodic schedules. The QTD associated with each URB is removed from</span>
<span class="gi">+ * the schedule and freed. This function may be called when a disconnect is</span>
<span class="gi">+ * detected or when the HCD is being stopped.</span>
<span class="gi">+ */</span>
<span class="gi">+static void kill_all_urbs(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	kill_urbs_in_qh_list(hcd, &amp;hcd-&gt;non_periodic_sched_inactive);</span>
<span class="gi">+	kill_urbs_in_qh_list(hcd, &amp;hcd-&gt;non_periodic_sched_active);</span>
<span class="gi">+	kill_urbs_in_qh_list(hcd, &amp;hcd-&gt;periodic_sched_inactive);</span>
<span class="gi">+	kill_urbs_in_qh_list(hcd, &amp;hcd-&gt;periodic_sched_ready);</span>
<span class="gi">+	kill_urbs_in_qh_list(hcd, &amp;hcd-&gt;periodic_sched_assigned);</span>
<span class="gi">+	kill_urbs_in_qh_list(hcd, &amp;hcd-&gt;periodic_sched_queued);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * HCD Callback function for disconnect of the HCD.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param p void pointer to the &lt;code&gt;struct usb_hcd&lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t dwc_otg_hcd_disconnect_cb(void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	gintsts_data_t 	intr;</span>
<span class="gi">+	dwc_otg_hcd_t 	*dwc_otg_hcd = hcd_to_dwc_otg_hcd(p);</span>
<span class="gi">+</span>
<span class="gi">+	//DWC_DEBUGPL(DBG_HCDV, &quot;%s(%p)\n&quot;, __func__, p);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Set status flags for the hub driver.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_hcd-&gt;flags.b.port_connect_status_change = 1;</span>
<span class="gi">+	dwc_otg_hcd-&gt;flags.b.port_connect_status = 0;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Shutdown any transfers in process by clearing the Tx FIFO Empty</span>
<span class="gi">+	 * interrupt mask and status bits and disabling subsequent host</span>
<span class="gi">+	 * channel interrupts.</span>
<span class="gi">+	 */</span>
<span class="gi">+	intr.d32 = 0;</span>
<span class="gi">+	intr.b.nptxfempty = 1;</span>
<span class="gi">+	intr.b.ptxfempty = 1;</span>
<span class="gi">+	intr.b.hcintr = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;dwc_otg_hcd-&gt;core_if-&gt;core_global_regs-&gt;gintmsk, intr.d32, 0);</span>
<span class="gi">+	dwc_modify_reg32(&amp;dwc_otg_hcd-&gt;core_if-&gt;core_global_regs-&gt;gintsts, intr.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	del_timers(dwc_otg_hcd);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Turn off the vbus power only if the core has transitioned to device</span>
<span class="gi">+	 * mode. If still in host mode, need to keep power on to detect a</span>
<span class="gi">+	 * reconnection.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (dwc_otg_is_device_mode(dwc_otg_hcd-&gt;core_if)) {</span>
<span class="gi">+		if (dwc_otg_hcd-&gt;core_if-&gt;op_state != A_SUSPEND) {</span>
<span class="gi">+			hprt0_data_t hprt0 = { .d32=0 };</span>
<span class="gi">+			DWC_PRINT(&quot;Disconnect: PortPower off\n&quot;);</span>
<span class="gi">+			hprt0.b.prtpwr = 0;</span>
<span class="gi">+			dwc_write_reg32(dwc_otg_hcd-&gt;core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		dwc_otg_disable_host_interrupts(dwc_otg_hcd-&gt;core_if);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Respond with an error status to all URBs in the schedule. */</span>
<span class="gi">+	kill_all_urbs(dwc_otg_hcd);</span>
<span class="gi">+</span>
<span class="gi">+	if (dwc_otg_is_host_mode(dwc_otg_hcd-&gt;core_if)) {</span>
<span class="gi">+		/* Clean up any host channels that were in use. */</span>
<span class="gi">+		int			num_channels;</span>
<span class="gi">+		int			i;</span>
<span class="gi">+		dwc_hc_t		*channel;</span>
<span class="gi">+		dwc_otg_hc_regs_t	*hc_regs;</span>
<span class="gi">+		hcchar_data_t		hcchar;</span>
<span class="gi">+</span>
<span class="gi">+		num_channels = dwc_otg_hcd-&gt;core_if-&gt;core_params-&gt;host_channels;</span>
<span class="gi">+</span>
<span class="gi">+		if (!dwc_otg_hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+			/* Flush out any channel requests in slave mode. */</span>
<span class="gi">+			for (i = 0; i &lt; num_channels; i++) {</span>
<span class="gi">+				channel = dwc_otg_hcd-&gt;hc_ptr_array[i];</span>
<span class="gi">+				if (list_empty(&amp;channel-&gt;hc_list_entry)) {</span>
<span class="gi">+					hc_regs = dwc_otg_hcd-&gt;core_if-&gt;host_if-&gt;hc_regs[i];</span>
<span class="gi">+					hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+					if (hcchar.b.chen) {</span>
<span class="gi">+						hcchar.b.chen = 0;</span>
<span class="gi">+						hcchar.b.chdis = 1;</span>
<span class="gi">+						hcchar.b.epdir = 0;</span>
<span class="gi">+						dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+					}</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		for (i = 0; i &lt; num_channels; i++) {</span>
<span class="gi">+			channel = dwc_otg_hcd-&gt;hc_ptr_array[i];</span>
<span class="gi">+			if (list_empty(&amp;channel-&gt;hc_list_entry)) {</span>
<span class="gi">+				hc_regs = dwc_otg_hcd-&gt;core_if-&gt;host_if-&gt;hc_regs[i];</span>
<span class="gi">+				hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+				if (hcchar.b.chen) {</span>
<span class="gi">+					/* Halt the channel. */</span>
<span class="gi">+					hcchar.b.chdis = 1;</span>
<span class="gi">+					dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+				}</span>
<span class="gi">+</span>
<span class="gi">+				dwc_otg_hc_cleanup(dwc_otg_hcd-&gt;core_if, channel);</span>
<span class="gi">+				list_add_tail(&amp;channel-&gt;hc_list_entry,</span>
<span class="gi">+					      &amp;dwc_otg_hcd-&gt;free_hc_list);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* A disconnect will end the session so the B-Device is no</span>
<span class="gi">+	 * longer a B-host. */</span>
<span class="gi">+	((struct usb_hcd *)p)-&gt;self.is_b_host = 0;</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Connection timeout function.  An OTG host is required to display a</span>
<span class="gi">+ * message if the device does not connect within 10 seconds.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hcd_connect_timeout(unsigned long ptr)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;%s(%x)\n&quot;, __func__, (int)ptr);</span>
<span class="gi">+	DWC_PRINT(&quot;Connect Timeout\n&quot;);</span>
<span class="gi">+	DWC_ERROR(&quot;Device Not Connected/Responding\n&quot;);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Start the connection timer.  An OTG host is required to display a</span>
<span class="gi">+ * message if the device does not connect within 10 seconds.  The</span>
<span class="gi">+ * timer is deleted if a port connect interrupt occurs before the</span>
<span class="gi">+ * timer expires.</span>
<span class="gi">+ */</span>
<span class="gi">+static void dwc_otg_hcd_start_connect_timer(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	init_timer(&amp;hcd-&gt;conn_timer);</span>
<span class="gi">+	hcd-&gt;conn_timer.function = dwc_otg_hcd_connect_timeout;</span>
<span class="gi">+	hcd-&gt;conn_timer.data = 0;</span>
<span class="gi">+	hcd-&gt;conn_timer.expires = jiffies + (HZ * 10);</span>
<span class="gi">+	add_timer(&amp;hcd-&gt;conn_timer);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * HCD Callback function for disconnect of the HCD.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param p void pointer to the &lt;code&gt;struct usb_hcd&lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t dwc_otg_hcd_session_start_cb(void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(p);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;%s(%p)\n&quot;, __func__, p);</span>
<span class="gi">+	dwc_otg_hcd_start_connect_timer(dwc_otg_hcd);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * HCD Callback structure for handling mode switching.</span>
<span class="gi">+ */</span>
<span class="gi">+static dwc_otg_cil_callbacks_t hcd_cil_callbacks = {</span>
<span class="gi">+	.start = dwc_otg_hcd_start_cb,</span>
<span class="gi">+	.stop = dwc_otg_hcd_stop_cb,</span>
<span class="gi">+	.disconnect = dwc_otg_hcd_disconnect_cb,</span>
<span class="gi">+	.session_start = dwc_otg_hcd_session_start_cb,</span>
<span class="gi">+	.p = 0,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Reset tasklet function</span>
<span class="gi">+ */</span>
<span class="gi">+static void reset_tasklet_func(unsigned long data)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = (dwc_otg_hcd_t *)data;</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = dwc_otg_hcd-&gt;core_if;</span>
<span class="gi">+	hprt0_data_t hprt0;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;USB RESET tasklet called\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+	hprt0.b.prtrst = 1;</span>
<span class="gi">+	dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+	mdelay(60);</span>
<span class="gi">+</span>
<span class="gi">+	hprt0.b.prtrst = 0;</span>
<span class="gi">+	dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+	dwc_otg_hcd-&gt;flags.b.port_reset_change = 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static struct tasklet_struct reset_tasklet = {</span>
<span class="gi">+	.next = NULL,</span>
<span class="gi">+	.state = 0,</span>
<span class="gi">+	.count = ATOMIC_INIT(0),</span>
<span class="gi">+	.func = reset_tasklet_func,</span>
<span class="gi">+	.data = 0,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Initializes the HCD. This function allocates memory for and initializes the</span>
<span class="gi">+ * static parts of the usb_hcd and dwc_otg_hcd structures. It also registers the</span>
<span class="gi">+ * USB bus with the core and calls the hc_driver-&gt;start() function. It returns</span>
<span class="gi">+ * a negative error on failure.</span>
<span class="gi">+ */</span>
<span class="gi">+int dwc_otg_hcd_init(struct lm_device *lmdev)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_hcd *hcd = NULL;</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = NULL;</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lmdev);</span>
<span class="gi">+</span>
<span class="gi">+	int 		num_channels;</span>
<span class="gi">+	int 		i;</span>
<span class="gi">+	dwc_hc_t	*channel;</span>
<span class="gi">+</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD INIT\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	/* 2.6.20+ requires dev.dma_mask to be set prior to calling usb_create_hcd() */</span>
<span class="gi">+</span>
<span class="gi">+	/* Set device flags indicating whether the HCD supports DMA. */</span>
<span class="gi">+	if (otg_dev-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		DWC_PRINT(&quot;Using DMA mode\n&quot;);</span>
<span class="gi">+#if 0</span>
<span class="gi">+//090707: setting dma_mask would cause kernel to fetch 0xffffffff, result in crash, at scsi_calculate_bounce_limit</span>
<span class="gi">+		lmdev-&gt;dev.dma_mask = (void *)~0;</span>
<span class="gi">+		lmdev-&gt;dev.coherent_dma_mask = ~0;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+		if (otg_dev-&gt;core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+			DWC_PRINT(&quot;Device using Descriptor DMA mode\n&quot;);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			DWC_PRINT(&quot;Device using Buffer DMA mode\n&quot;);</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		DWC_PRINT(&quot;Using Slave mode\n&quot;);</span>
<span class="gi">+		lmdev-&gt;dev.dma_mask = (void *)0;</span>
<span class="gi">+		lmdev-&gt;dev.coherent_dma_mask = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Allocate memory for the base HCD plus the DWC OTG HCD.</span>
<span class="gi">+	 * Initialize the base HCD.</span>
<span class="gi">+	 */</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,31)</span>
<span class="gi">+	hcd = usb_create_hcd(&amp;dwc_otg_hc_driver, &amp;lmdev-&gt;dev, lmdev-&gt;dev.bus_id);</span>
<span class="gi">+#else</span>
<span class="gi">+	hcd = usb_create_hcd(&amp;dwc_otg_hc_driver, &amp;lmdev-&gt;dev, &quot;gadget&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+	if (!hcd) {</span>
<span class="gi">+		retval = -ENOMEM;</span>
<span class="gi">+		goto error1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hcd-&gt;regs = otg_dev-&gt;base;</span>
<span class="gi">+	hcd-&gt;self.otg_port = 1;</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize the DWC OTG HCD. */</span>
<span class="gi">+	dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+	dwc_otg_hcd-&gt;core_if = otg_dev-&gt;core_if;</span>
<span class="gi">+	otg_dev-&gt;hcd = dwc_otg_hcd;</span>
<span class="gi">+</span>
<span class="gi">+	/* */</span>
<span class="gi">+	spin_lock_init(&amp;dwc_otg_hcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+	/* Register the HCD CIL Callbacks */</span>
<span class="gi">+	dwc_otg_cil_register_hcd_callbacks(otg_dev-&gt;core_if,</span>
<span class="gi">+					   &amp;hcd_cil_callbacks, hcd);</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize the non-periodic schedule. */</span>
<span class="gi">+	INIT_LIST_HEAD(&amp;dwc_otg_hcd-&gt;non_periodic_sched_inactive);</span>
<span class="gi">+	INIT_LIST_HEAD(&amp;dwc_otg_hcd-&gt;non_periodic_sched_active);</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize the periodic schedule. */</span>
<span class="gi">+	INIT_LIST_HEAD(&amp;dwc_otg_hcd-&gt;periodic_sched_inactive);</span>
<span class="gi">+	INIT_LIST_HEAD(&amp;dwc_otg_hcd-&gt;periodic_sched_ready);</span>
<span class="gi">+	INIT_LIST_HEAD(&amp;dwc_otg_hcd-&gt;periodic_sched_assigned);</span>
<span class="gi">+	INIT_LIST_HEAD(&amp;dwc_otg_hcd-&gt;periodic_sched_queued);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Create a host channel descriptor for each host channel implemented</span>
<span class="gi">+	 * in the controller. Initialize the channel descriptor array.</span>
<span class="gi">+	 */</span>
<span class="gi">+	INIT_LIST_HEAD(&amp;dwc_otg_hcd-&gt;free_hc_list);</span>
<span class="gi">+	num_channels = dwc_otg_hcd-&gt;core_if-&gt;core_params-&gt;host_channels;</span>
<span class="gi">+	memset(dwc_otg_hcd-&gt;hc_ptr_array, 0, sizeof(dwc_otg_hcd-&gt;hc_ptr_array));</span>
<span class="gi">+	for (i = 0; i &lt; num_channels; i++) {</span>
<span class="gi">+		channel = kmalloc(sizeof(dwc_hc_t), GFP_KERNEL);</span>
<span class="gi">+		if (channel == NULL) {</span>
<span class="gi">+			retval = -ENOMEM;</span>
<span class="gi">+			DWC_ERROR(&quot;%s: host channel allocation failed\n&quot;, __func__);</span>
<span class="gi">+			goto error2;</span>
<span class="gi">+		}</span>
<span class="gi">+		memset(channel, 0, sizeof(dwc_hc_t));</span>
<span class="gi">+		channel-&gt;hc_num = i;</span>
<span class="gi">+		dwc_otg_hcd-&gt;hc_ptr_array[i] = channel;</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+		init_timer(&amp;dwc_otg_hcd-&gt;core_if-&gt;hc_xfer_timer[i]);</span>
<span class="gi">+#endif</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;HCD Added channel #%d, hc=%p\n&quot;, i, channel);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize the Connection timeout timer. */</span>
<span class="gi">+	init_timer(&amp;dwc_otg_hcd-&gt;conn_timer);</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize reset tasklet. */</span>
<span class="gi">+	reset_tasklet.data = (unsigned long) dwc_otg_hcd;</span>
<span class="gi">+	dwc_otg_hcd-&gt;reset_tasklet = &amp;reset_tasklet;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	/* Set device flags indicating whether the HCD supports DMA. */</span>
<span class="gi">+	if (otg_dev-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		DWC_PRINT(&quot;Using DMA mode\n&quot;);</span>
<span class="gi">+		lmdev-&gt;dev.dma_mask = (void *)~0;</span>
<span class="gi">+		lmdev-&gt;dev.coherent_dma_mask = ~0;</span>
<span class="gi">+</span>
<span class="gi">+		if (otg_dev-&gt;core_if-&gt;dma_desc_enable){</span>
<span class="gi">+			DWC_PRINT(&quot;Device using Descriptor DMA mode\n&quot;);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			DWC_PRINT(&quot;Device using Buffer DMA mode\n&quot;);</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		DWC_PRINT(&quot;Using Slave mode\n&quot;);</span>
<span class="gi">+		lmdev-&gt;dev.dma_mask = (void *)0;</span>
<span class="gi">+		lmdev-&gt;dev.coherent_dma_mask = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Finish generic HCD initialization and start the HCD. This function</span>
<span class="gi">+	 * allocates the DMA buffer pool, registers the USB bus, requests the</span>
<span class="gi">+	 * IRQ line, and calls dwc_otg_hcd_start method.</span>
<span class="gi">+	 */</span>
<span class="gi">+	retval = usb_add_hcd(hcd, lmdev-&gt;irq, IRQF_SHARED);</span>
<span class="gi">+	if (retval &lt; 0) {</span>
<span class="gi">+		goto error2;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Allocate space for storing data on status transactions. Normally no</span>
<span class="gi">+	 * data is sent, but this space acts as a bit bucket. This must be</span>
<span class="gi">+	 * done after usb_add_hcd since that function allocates the DMA buffer</span>
<span class="gi">+	 * pool.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (otg_dev-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		dwc_otg_hcd-&gt;status_buf =</span>
<span class="gi">+			dma_alloc_coherent(&amp;lmdev-&gt;dev,</span>
<span class="gi">+					   DWC_OTG_HCD_STATUS_BUF_SIZE,</span>
<span class="gi">+					   &amp;dwc_otg_hcd-&gt;status_buf_dma,</span>
<span class="gi">+					   GFP_KERNEL | GFP_DMA);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_otg_hcd-&gt;status_buf = kmalloc(DWC_OTG_HCD_STATUS_BUF_SIZE,</span>
<span class="gi">+						  GFP_KERNEL);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (!dwc_otg_hcd-&gt;status_buf) {</span>
<span class="gi">+		retval = -ENOMEM;</span>
<span class="gi">+		DWC_ERROR(&quot;%s: status_buf allocation failed\n&quot;, __func__);</span>
<span class="gi">+		goto error3;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_hcd-&gt;otg_dev = otg_dev;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,31)</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD Initialized HCD, bus=%s, usbbus=%d\n&quot;,</span>
<span class="gi">+		    lmdev-&gt;dev.bus_id, hcd-&gt;self.busnum);</span>
<span class="gi">+#else</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD Initialized HCD, usbbus=%d\n&quot;,</span>
<span class="gi">+		    hcd-&gt;self.busnum);</span>
<span class="gi">+#endif</span>
<span class="gi">+	return 0;</span>
<span class="gi">+</span>
<span class="gi">+	/* Error conditions */</span>
<span class="gi">+ error3:</span>
<span class="gi">+	usb_remove_hcd(hcd);</span>
<span class="gi">+ error2:</span>
<span class="gi">+	dwc_otg_hcd_free(hcd);</span>
<span class="gi">+	usb_put_hcd(hcd);</span>
<span class="gi">+ error1:</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Removes the HCD.</span>
<span class="gi">+ * Frees memory and resources associated with the HCD and deregisters the bus.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hcd_remove(struct lm_device *lmdev)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lmdev);</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd;</span>
<span class="gi">+	struct usb_hcd *hcd;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD REMOVE\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	if (!otg_dev) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;%s: otg_dev NULL!\n&quot;, __func__);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_hcd = otg_dev-&gt;hcd;</span>
<span class="gi">+</span>
<span class="gi">+	if (!dwc_otg_hcd) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;%s: otg_dev-&gt;hcd NULL!\n&quot;, __func__);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hcd = dwc_otg_hcd_to_hcd(dwc_otg_hcd);</span>
<span class="gi">+</span>
<span class="gi">+	if (!hcd) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;%s: dwc_otg_hcd_to_hcd(dwc_otg_hcd) NULL!\n&quot;, __func__);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Turn off all interrupts */</span>
<span class="gi">+	dwc_write_reg32(&amp;dwc_otg_hcd-&gt;core_if-&gt;core_global_regs-&gt;gintmsk, 0);</span>
<span class="gi">+	dwc_modify_reg32(&amp;dwc_otg_hcd-&gt;core_if-&gt;core_global_regs-&gt;gahbcfg, 1, 0);</span>
<span class="gi">+</span>
<span class="gi">+	usb_remove_hcd(hcd);</span>
<span class="gi">+	dwc_otg_hcd_free(hcd);</span>
<span class="gi">+	usb_put_hcd(hcd);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/* =========================================================================</span>
<span class="gi">+ *  Linux HC Driver Functions</span>
<span class="gi">+ * ========================================================================= */</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Initializes dynamic portions of the DWC_otg HCD state.</span>
<span class="gi">+ */</span>
<span class="gi">+static void hcd_reinit(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	struct list_head 	*item;</span>
<span class="gi">+	int			num_channels;</span>
<span class="gi">+	int			i;</span>
<span class="gi">+	dwc_hc_t		*channel;</span>
<span class="gi">+</span>
<span class="gi">+	hcd-&gt;flags.d32 = 0;</span>
<span class="gi">+</span>
<span class="gi">+	hcd-&gt;non_periodic_qh_ptr = &amp;hcd-&gt;non_periodic_sched_active;</span>
<span class="gi">+	hcd-&gt;non_periodic_channels = 0;</span>
<span class="gi">+	hcd-&gt;periodic_channels = 0;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Put all channels in the free channel list and clean up channel</span>
<span class="gi">+	 * states.</span>
<span class="gi">+	 */</span>
<span class="gi">+	item = hcd-&gt;free_hc_list.next;</span>
<span class="gi">+	while (item != &amp;hcd-&gt;free_hc_list) {</span>
<span class="gi">+		list_del(item);</span>
<span class="gi">+		item = hcd-&gt;free_hc_list.next;</span>
<span class="gi">+	}</span>
<span class="gi">+	num_channels = hcd-&gt;core_if-&gt;core_params-&gt;host_channels;</span>
<span class="gi">+	for (i = 0; i &lt; num_channels; i++) {</span>
<span class="gi">+		channel = hcd-&gt;hc_ptr_array[i];</span>
<span class="gi">+		list_add_tail(&amp;channel-&gt;hc_list_entry, &amp;hcd-&gt;free_hc_list);</span>
<span class="gi">+		dwc_otg_hc_cleanup(hcd-&gt;core_if, channel);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize the DWC core for host mode operation. */</span>
<span class="gi">+	dwc_otg_core_host_init(hcd-&gt;core_if);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Initializes the DWC_otg controller and its root hub and prepares it for host</span>
<span class="gi">+ * mode operation. Activates the root port. Returns 0 on success and a negative</span>
<span class="gi">+ * error code on failure. */</span>
<span class="gi">+int dwc_otg_hcd_start(struct usb_hcd *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = dwc_otg_hcd-&gt;core_if;</span>
<span class="gi">+  	struct usb_bus *bus;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+  	struct usb_device *udev;</span>
<span class="gi">+	int retval;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD START\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	bus = hcd_to_bus(hcd);</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize the bus state.  If the core is in Device Mode</span>
<span class="gi">+	 * HALT the USB bus and return. */</span>
<span class="gi">+	if (dwc_otg_is_device_mode(core_if)) {</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+		hcd-&gt;state = HC_STATE_HALT;</span>
<span class="gi">+#else</span>
<span class="gi">+		hcd-&gt;state = HC_STATE_RUNNING;</span>
<span class="gi">+#endif</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	hcd-&gt;state = HC_STATE_RUNNING;</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize and connect root hub if one is not already attached */</span>
<span class="gi">+	if (bus-&gt;root_hub) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD Has Root Hub\n&quot;);</span>
<span class="gi">+		/* Inform the HUB driver to resume. */</span>
<span class="gi">+		usb_hcd_resume_root_hub(hcd);</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD Does Not Have Root Hub\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+		udev = usb_alloc_dev(NULL, bus, 0);</span>
<span class="gi">+		udev-&gt;speed = USB_SPEED_HIGH;</span>
<span class="gi">+		if (!udev) {</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD Error udev alloc\n&quot;);</span>
<span class="gi">+			return -ENODEV;</span>
<span class="gi">+		}</span>
<span class="gi">+		if ((retval = usb_hcd_register_root_hub(udev, hcd)) != 0) {</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD Error registering %d\n&quot;, retval);</span>
<span class="gi">+			return -ENODEV;</span>
<span class="gi">+		}</span>
<span class="gi">+#endif</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hcd_reinit(dwc_otg_hcd);</span>
<span class="gi">+</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static void qh_list_free(dwc_otg_hcd_t *hcd, struct list_head *qh_list)</span>
<span class="gi">+{</span>
<span class="gi">+	struct list_head 	*item;</span>
<span class="gi">+	dwc_otg_qh_t		*qh;</span>
<span class="gi">+</span>
<span class="gi">+	if (!qh_list-&gt;next) {</span>
<span class="gi">+		/* The list hasn&#39;t been initialized yet. */</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Ensure there are no QTDs or URBs left. */</span>
<span class="gi">+	kill_urbs_in_qh_list(hcd, qh_list);</span>
<span class="gi">+</span>
<span class="gi">+	for (item = qh_list-&gt;next; item != qh_list; item = qh_list-&gt;next) {</span>
<span class="gi">+		qh = list_entry(item, dwc_otg_qh_t, qh_list_entry);</span>
<span class="gi">+		dwc_otg_hcd_qh_remove_and_free(hcd, qh);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Halts the DWC_otg host mode operations in a clean manner. USB transfers are</span>
<span class="gi">+ * stopped.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hcd_stop(struct usb_hcd *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+	hprt0_data_t hprt0 = { .d32=0 };</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD STOP\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	/* Turn off all host-specific interrupts. */</span>
<span class="gi">+	dwc_otg_disable_host_interrupts(dwc_otg_hcd-&gt;core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * The root hub should be disconnected before this function is called.</span>
<span class="gi">+	 * The disconnect will clear the QTD lists (via ..._hcd_urb_dequeue)</span>
<span class="gi">+	 * and the QH lists (via ..._hcd_endpoint_disable).</span>
<span class="gi">+	 */</span>
<span class="gi">+</span>
<span class="gi">+	/* Turn off the vbus power */</span>
<span class="gi">+	DWC_PRINT(&quot;PortPower off\n&quot;);</span>
<span class="gi">+	hprt0.b.prtpwr = 0;</span>
<span class="gi">+	dwc_write_reg32(dwc_otg_hcd-&gt;core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Returns the current frame number. */</span>
<span class="gi">+int dwc_otg_hcd_get_frame_number(struct usb_hcd *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+	hfnum_data_t hfnum;</span>
<span class="gi">+</span>
<span class="gi">+	hfnum.d32 = dwc_read_reg32(&amp;dwc_otg_hcd-&gt;core_if-&gt;</span>
<span class="gi">+				   host_if-&gt;host_global_regs-&gt;hfnum);</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG_SOF</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;DWC OTG HCD GET FRAME NUMBER %d\n&quot;, hfnum.b.frnum);</span>
<span class="gi">+#endif</span>
<span class="gi">+	return hfnum.b.frnum;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Frees secondary storage associated with the dwc_otg_hcd structure contained</span>
<span class="gi">+ * in the struct usb_hcd field.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hcd_free(struct usb_hcd *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_t 	*dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+	int		i;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD FREE\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	del_timers(dwc_otg_hcd);</span>
<span class="gi">+</span>
<span class="gi">+	/* Free memory for QH/QTD lists */</span>
<span class="gi">+	qh_list_free(dwc_otg_hcd, &amp;dwc_otg_hcd-&gt;non_periodic_sched_inactive);</span>
<span class="gi">+	qh_list_free(dwc_otg_hcd, &amp;dwc_otg_hcd-&gt;non_periodic_sched_active);</span>
<span class="gi">+	qh_list_free(dwc_otg_hcd, &amp;dwc_otg_hcd-&gt;periodic_sched_inactive);</span>
<span class="gi">+	qh_list_free(dwc_otg_hcd, &amp;dwc_otg_hcd-&gt;periodic_sched_ready);</span>
<span class="gi">+	qh_list_free(dwc_otg_hcd, &amp;dwc_otg_hcd-&gt;periodic_sched_assigned);</span>
<span class="gi">+	qh_list_free(dwc_otg_hcd, &amp;dwc_otg_hcd-&gt;periodic_sched_queued);</span>
<span class="gi">+</span>
<span class="gi">+	/* Free memory for the host channels. */</span>
<span class="gi">+	for (i = 0; i &lt; MAX_EPS_CHANNELS; i++) {</span>
<span class="gi">+		dwc_hc_t *hc = dwc_otg_hcd-&gt;hc_ptr_array[i];</span>
<span class="gi">+		if (hc != NULL) {</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCDV, &quot;HCD Free channel #%i, hc=%p\n&quot;, i, hc);</span>
<span class="gi">+			kfree(hc);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (dwc_otg_hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		if (dwc_otg_hcd-&gt;status_buf_dma) {</span>
<span class="gi">+			dma_free_coherent(hcd-&gt;self.controller,</span>
<span class="gi">+					  DWC_OTG_HCD_STATUS_BUF_SIZE,</span>
<span class="gi">+					  dwc_otg_hcd-&gt;status_buf,</span>
<span class="gi">+					  dwc_otg_hcd-&gt;status_buf_dma);</span>
<span class="gi">+		}</span>
<span class="gi">+	} else if (dwc_otg_hcd-&gt;status_buf != NULL) {</span>
<span class="gi">+		kfree(dwc_otg_hcd-&gt;status_buf);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+static void dump_urb_info(struct urb *urb, char* fn_name)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_PRINT(&quot;%s, urb %p\n&quot;, fn_name, urb);</span>
<span class="gi">+	DWC_PRINT(&quot;  Device address: %d\n&quot;, usb_pipedevice(urb-&gt;pipe));</span>
<span class="gi">+	DWC_PRINT(&quot;  Endpoint: %d, %s\n&quot;, usb_pipeendpoint(urb-&gt;pipe),</span>
<span class="gi">+		  (usb_pipein(urb-&gt;pipe) ? &quot;IN&quot; : &quot;OUT&quot;));</span>
<span class="gi">+	DWC_PRINT(&quot;  Endpoint type: %s\n&quot;,</span>
<span class="gi">+		  ({char *pipetype;</span>
<span class="gi">+		    switch (usb_pipetype(urb-&gt;pipe)) {</span>
<span class="gi">+		    case PIPE_CONTROL: pipetype = &quot;CONTROL&quot;; break;</span>
<span class="gi">+		    case PIPE_BULK: pipetype = &quot;BULK&quot;; break;</span>
<span class="gi">+		    case PIPE_INTERRUPT: pipetype = &quot;INTERRUPT&quot;; break;</span>
<span class="gi">+		    case PIPE_ISOCHRONOUS: pipetype = &quot;ISOCHRONOUS&quot;; break;</span>
<span class="gi">+		    default: pipetype = &quot;UNKNOWN&quot;; break;</span>
<span class="gi">+		   }; pipetype;}));</span>
<span class="gi">+	DWC_PRINT(&quot;  Speed: %s\n&quot;,</span>
<span class="gi">+		  ({char *speed;</span>
<span class="gi">+		    switch (urb-&gt;dev-&gt;speed) {</span>
<span class="gi">+		    case USB_SPEED_HIGH: speed = &quot;HIGH&quot;; break;</span>
<span class="gi">+		    case USB_SPEED_FULL: speed = &quot;FULL&quot;; break;</span>
<span class="gi">+		    case USB_SPEED_LOW: speed = &quot;LOW&quot;; break;</span>
<span class="gi">+		    default: speed = &quot;UNKNOWN&quot;; break;</span>
<span class="gi">+		   }; speed;}));</span>
<span class="gi">+	DWC_PRINT(&quot;  Max packet size: %d\n&quot;,</span>
<span class="gi">+		  usb_maxpacket(urb-&gt;dev, urb-&gt;pipe, usb_pipeout(urb-&gt;pipe)));</span>
<span class="gi">+	DWC_PRINT(&quot;  Data buffer length: %d\n&quot;, urb-&gt;transfer_buffer_length);</span>
<span class="gi">+	DWC_PRINT(&quot;  Transfer buffer: %p, Transfer DMA: %p\n&quot;,</span>
<span class="gi">+		  urb-&gt;transfer_buffer, (void *)urb-&gt;transfer_dma);</span>
<span class="gi">+	DWC_PRINT(&quot;  Setup buffer: %p, Setup DMA: %p\n&quot;,</span>
<span class="gi">+		  urb-&gt;setup_packet, (void *)urb-&gt;setup_dma);</span>
<span class="gi">+	DWC_PRINT(&quot;  Interval: %d\n&quot;, urb-&gt;interval);</span>
<span class="gi">+	if (usb_pipetype(urb-&gt;pipe) == PIPE_ISOCHRONOUS) {</span>
<span class="gi">+		int i;</span>
<span class="gi">+		for (i = 0; i &lt; urb-&gt;number_of_packets;  i++) {</span>
<span class="gi">+			DWC_PRINT(&quot;  ISO Desc %d:\n&quot;, i);</span>
<span class="gi">+			DWC_PRINT(&quot;    offset: %d, length %d\n&quot;,</span>
<span class="gi">+				  urb-&gt;iso_frame_desc[i].offset,</span>
<span class="gi">+				  urb-&gt;iso_frame_desc[i].length);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static void dump_channel_info(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+			      dwc_otg_qh_t *qh)</span>
<span class="gi">+{</span>
<span class="gi">+	if (qh-&gt;channel != NULL) {</span>
<span class="gi">+		dwc_hc_t *hc = qh-&gt;channel;</span>
<span class="gi">+		struct list_head *item;</span>
<span class="gi">+		dwc_otg_qh_t *qh_item;</span>
<span class="gi">+		int num_channels = hcd-&gt;core_if-&gt;core_params-&gt;host_channels;</span>
<span class="gi">+		int i;</span>
<span class="gi">+</span>
<span class="gi">+		dwc_otg_hc_regs_t *hc_regs;</span>
<span class="gi">+		hcchar_data_t 	hcchar;</span>
<span class="gi">+		hcsplt_data_t	hcsplt;</span>
<span class="gi">+		hctsiz_data_t 	hctsiz;</span>
<span class="gi">+		uint32_t	hcdma;</span>
<span class="gi">+</span>
<span class="gi">+		hc_regs = hcd-&gt;core_if-&gt;host_if-&gt;hc_regs[hc-&gt;hc_num];</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		hcsplt.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcsplt);</span>
<span class="gi">+		hctsiz.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hctsiz);</span>
<span class="gi">+		hcdma = dwc_read_reg32(&amp;hc_regs-&gt;hcdma);</span>
<span class="gi">+</span>
<span class="gi">+		DWC_PRINT(&quot;  Assigned to channel %p:\n&quot;, hc);</span>
<span class="gi">+		DWC_PRINT(&quot;    hcchar 0x%08x, hcsplt 0x%08x\n&quot;, hcchar.d32, hcsplt.d32);</span>
<span class="gi">+		DWC_PRINT(&quot;    hctsiz 0x%08x, hcdma 0x%08x\n&quot;, hctsiz.d32, hcdma);</span>
<span class="gi">+		DWC_PRINT(&quot;    dev_addr: %d, ep_num: %d, ep_is_in: %d\n&quot;,</span>
<span class="gi">+			  hc-&gt;dev_addr, hc-&gt;ep_num, hc-&gt;ep_is_in);</span>
<span class="gi">+		DWC_PRINT(&quot;    ep_type: %d\n&quot;, hc-&gt;ep_type);</span>
<span class="gi">+		DWC_PRINT(&quot;    max_packet: %d\n&quot;, hc-&gt;max_packet);</span>
<span class="gi">+		DWC_PRINT(&quot;    data_pid_start: %d\n&quot;, hc-&gt;data_pid_start);</span>
<span class="gi">+		DWC_PRINT(&quot;    xfer_started: %d\n&quot;, hc-&gt;xfer_started);</span>
<span class="gi">+		DWC_PRINT(&quot;    halt_status: %d\n&quot;, hc-&gt;halt_status);</span>
<span class="gi">+		DWC_PRINT(&quot;    xfer_buff: %p\n&quot;, hc-&gt;xfer_buff);</span>
<span class="gi">+		DWC_PRINT(&quot;    xfer_len: %d\n&quot;, hc-&gt;xfer_len);</span>
<span class="gi">+		DWC_PRINT(&quot;    qh: %p\n&quot;, hc-&gt;qh);</span>
<span class="gi">+		DWC_PRINT(&quot;  NP inactive sched:\n&quot;);</span>
<span class="gi">+		list_for_each(item, &amp;hcd-&gt;non_periodic_sched_inactive) {</span>
<span class="gi">+			qh_item = list_entry(item, dwc_otg_qh_t, qh_list_entry);</span>
<span class="gi">+			DWC_PRINT(&quot;    %p\n&quot;, qh_item);</span>
<span class="gi">+		}</span>
<span class="gi">+		DWC_PRINT(&quot;  NP active sched:\n&quot;);</span>
<span class="gi">+		list_for_each(item, &amp;hcd-&gt;non_periodic_sched_active) {</span>
<span class="gi">+			qh_item = list_entry(item, dwc_otg_qh_t, qh_list_entry);</span>
<span class="gi">+			DWC_PRINT(&quot;    %p\n&quot;, qh_item);</span>
<span class="gi">+		}</span>
<span class="gi">+		DWC_PRINT(&quot;  Channels: \n&quot;);</span>
<span class="gi">+		for (i = 0; i &lt; num_channels; i++) {</span>
<span class="gi">+			dwc_hc_t *hc = hcd-&gt;hc_ptr_array[i];</span>
<span class="gi">+			DWC_PRINT(&quot;    %2d: %p\n&quot;, i, hc);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+//OTG host require the DMA addr is DWORD-aligned,</span>
<span class="gi">+//patch it if the buffer is not DWORD-aligned</span>
<span class="gi">+inline </span>
<span class="gi">+void hcd_check_and_patch_dma_addr(struct urb *urb){</span>
<span class="gi">+</span>
<span class="gi">+	if((!urb-&gt;transfer_buffer)||!urb-&gt;transfer_dma||urb-&gt;transfer_dma==0xffffffff) </span>
<span class="gi">+		return;</span>
<span class="gi">+</span>
<span class="gi">+	if(((u32)urb-&gt;transfer_buffer)&amp; 0x3){</span>
<span class="gi">+		/*</span>
<span class="gi">+		printk(&quot;%s: &quot;</span>
<span class="gi">+			&quot;urb(%.8x) &quot;</span>
<span class="gi">+			&quot;transfer_buffer=%.8x, &quot;</span>
<span class="gi">+			&quot;transfer_dma=%.8x, &quot;</span>
<span class="gi">+			&quot;transfer_buffer_length=%d, &quot;</span>
<span class="gi">+			&quot;actual_length=%d(%x), &quot;</span>
<span class="gi">+			&quot;\n&quot;,</span>
<span class="gi">+			((urb-&gt;transfer_flags &amp; URB_DIR_MASK)==URB_DIR_OUT)?&quot;OUT&quot;:&quot;IN&quot;,</span>
<span class="gi">+			urb,</span>
<span class="gi">+			urb-&gt;transfer_buffer,</span>
<span class="gi">+			urb-&gt;transfer_dma,</span>
<span class="gi">+			urb-&gt;transfer_buffer_length,</span>
<span class="gi">+			urb-&gt;actual_length,urb-&gt;actual_length</span>
<span class="gi">+		);</span>
<span class="gi">+		*/</span>
<span class="gi">+		if(!urb-&gt;aligned_transfer_buffer||urb-&gt;aligned_transfer_buffer_length&lt;urb-&gt;transfer_buffer_length){</span>
<span class="gi">+			urb-&gt;aligned_transfer_buffer_length=urb-&gt;transfer_buffer_length;</span>
<span class="gi">+			if(urb-&gt;aligned_transfer_buffer) {</span>
<span class="gi">+				kfree(urb-&gt;aligned_transfer_buffer);</span>
<span class="gi">+			}</span>
<span class="gi">+			urb-&gt;aligned_transfer_buffer=kmalloc(urb-&gt;aligned_transfer_buffer_length,GFP_KERNEL|GFP_DMA|GFP_ATOMIC);</span>
<span class="gi">+			urb-&gt;aligned_transfer_dma=dma_map_single(NULL,(void *)(urb-&gt;aligned_transfer_buffer),(urb-&gt;aligned_transfer_buffer_length),DMA_FROM_DEVICE);</span>
<span class="gi">+			if(!urb-&gt;aligned_transfer_buffer){</span>
<span class="gi">+				DWC_ERROR(&quot;Cannot alloc required buffer!!\n&quot;);</span>
<span class="gi">+				BUG();</span>
<span class="gi">+			}</span>
<span class="gi">+			//printk(&quot; new allocated aligned_buf=%.8x aligned_buf_len=%d\n&quot;, (u32)urb-&gt;aligned_transfer_buffer, urb-&gt;aligned_transfer_buffer_length);</span>
<span class="gi">+		}</span>
<span class="gi">+		urb-&gt;transfer_dma=urb-&gt;aligned_transfer_dma;</span>
<span class="gi">+		if((urb-&gt;transfer_flags &amp; URB_DIR_MASK)==URB_DIR_OUT) {</span>
<span class="gi">+			memcpy(urb-&gt;aligned_transfer_buffer,urb-&gt;transfer_buffer,urb-&gt;transfer_buffer_length);</span>
<span class="gi">+			dma_sync_single_for_device(NULL,urb-&gt;transfer_dma,urb-&gt;transfer_buffer_length,DMA_TO_DEVICE);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/** Starts processing a USB transfer request specified by a USB Request Block</span>
<span class="gi">+ * (URB). mem_flags indicates the type of memory allocation to use while</span>
<span class="gi">+ * processing this URB. */</span>
<span class="gi">+int dwc_otg_hcd_urb_enqueue(struct usb_hcd *hcd,</span>
<span class="gi">+//			    struct usb_host_endpoint *ep,</span>
<span class="gi">+			    struct urb *urb,</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			    int mem_flags</span>
<span class="gi">+#else</span>
<span class="gi">+			    gfp_t mem_flags</span>
<span class="gi">+#endif</span>
<span class="gi">+			  )</span>
<span class="gi">+{</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+	dwc_otg_qtd_t *qtd;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) {</span>
<span class="gi">+		dump_urb_info(urb, &quot;dwc_otg_hcd_urb_enqueue&quot;);</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+	if (!dwc_otg_hcd-&gt;flags.b.port_connect_status) {</span>
<span class="gi">+		/* No longer connected. */</span>
<span class="gi">+		return -ENODEV;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hcd_check_and_patch_dma_addr(urb);</span>
<span class="gi">+	qtd = dwc_otg_hcd_qtd_create(urb);</span>
<span class="gi">+	if (qtd == NULL) {</span>
<span class="gi">+		DWC_ERROR(&quot;DWC OTG HCD URB Enqueue failed creating QTD\n&quot;);</span>
<span class="gi">+		return -ENOMEM;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	retval = dwc_otg_hcd_qtd_add(qtd, dwc_otg_hcd);</span>
<span class="gi">+	if (retval &lt; 0) {</span>
<span class="gi">+		DWC_ERROR(&quot;DWC OTG HCD URB Enqueue failed adding QTD. &quot;</span>
<span class="gi">+			  &quot;Error status %d\n&quot;, retval);</span>
<span class="gi">+		dwc_otg_hcd_qtd_free(qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Aborts/cancels a USB transfer request. Always returns 0 to indicate</span>
<span class="gi">+ * success.  */</span>
<span class="gi">+int dwc_otg_hcd_urb_dequeue(struct usb_hcd *hcd,</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+			    struct usb_host_endpoint *ep,</span>
<span class="gi">+#endif</span>
<span class="gi">+			    struct urb *urb, int status)</span>
<span class="gi">+{</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd;</span>
<span class="gi">+	dwc_otg_qtd_t *urb_qtd;</span>
<span class="gi">+	dwc_otg_qh_t *qh;</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct usb_host_endpoint *ep = dwc_urb_to_endpoint(urb);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD URB Dequeue\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;dwc_otg_hcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	urb_qtd = (dwc_otg_qtd_t *)urb-&gt;hcpriv;</span>
<span class="gi">+	qh = (dwc_otg_qh_t *)ep-&gt;hcpriv;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) {</span>
<span class="gi">+		dump_urb_info(urb, &quot;dwc_otg_hcd_urb_dequeue&quot;);</span>
<span class="gi">+		if (urb_qtd == qh-&gt;qtd_in_process) {</span>
<span class="gi">+			dump_channel_info(dwc_otg_hcd, qh);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	if (urb_qtd == qh-&gt;qtd_in_process) {</span>
<span class="gi">+		/* The QTD is in process (it has been assigned to a channel). */</span>
<span class="gi">+</span>
<span class="gi">+		if (dwc_otg_hcd-&gt;flags.b.port_connect_status) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * If still connected (i.e. in host mode), halt the</span>
<span class="gi">+			 * channel so it can be used for other transfers. If</span>
<span class="gi">+			 * no longer connected, the host registers can&#39;t be</span>
<span class="gi">+			 * written to halt the channel since the core is in</span>
<span class="gi">+			 * device mode.</span>
<span class="gi">+			 */</span>
<span class="gi">+			dwc_otg_hc_halt(dwc_otg_hcd-&gt;core_if, qh-&gt;channel,</span>
<span class="gi">+					DWC_OTG_HC_XFER_URB_DEQUEUE);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Free the QTD and clean up the associated QH. Leave the QH in the</span>
<span class="gi">+	 * schedule if it has any remaining QTDs.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_hcd_qtd_remove_and_free(dwc_otg_hcd, urb_qtd);</span>
<span class="gi">+	if (urb_qtd == qh-&gt;qtd_in_process) {</span>
<span class="gi">+		dwc_otg_hcd_qh_deactivate(dwc_otg_hcd, qh, 0);</span>
<span class="gi">+		qh-&gt;channel = NULL;</span>
<span class="gi">+		qh-&gt;qtd_in_process = NULL;</span>
<span class="gi">+	} else if (list_empty(&amp;qh-&gt;qtd_list)) {</span>
<span class="gi">+		dwc_otg_hcd_qh_remove(dwc_otg_hcd, qh);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;dwc_otg_hcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	urb-&gt;hcpriv = NULL;</span>
<span class="gi">+</span>
<span class="gi">+	/* Higher layer software sets URB status. */</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	usb_hcd_giveback_urb(hcd, urb, status);</span>
<span class="gi">+#else</span>
<span class="gi">+	usb_hcd_giveback_urb(hcd, urb, NULL);</span>
<span class="gi">+#endif</span>
<span class="gi">+	if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) {</span>
<span class="gi">+		DWC_PRINT(&quot;Called usb_hcd_giveback_urb()\n&quot;);</span>
<span class="gi">+		DWC_PRINT(&quot;  urb-&gt;status = %d\n&quot;, urb-&gt;status);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Frees resources in the DWC_otg controller related to a given endpoint. Also</span>
<span class="gi">+ * clears state in the HCD related to the endpoint. Any URBs for the endpoint</span>
<span class="gi">+ * must already be dequeued. */</span>
<span class="gi">+void dwc_otg_hcd_endpoint_disable(struct usb_hcd *hcd,</span>
<span class="gi">+				  struct usb_host_endpoint *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+	dwc_otg_qh_t *qh;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+	int retry = 0;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD EP DISABLE: _bEndpointAddress=0x%02x, &quot;</span>
<span class="gi">+		    &quot;endpoint=%d\n&quot;, ep-&gt;desc.bEndpointAddress,</span>
<span class="gi">+		    dwc_ep_addr_to_endpoint(ep-&gt;desc.bEndpointAddress));</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+rescan:</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;dwc_otg_hcd-&gt;lock, flags);</span>
<span class="gi">+	qh = (dwc_otg_qh_t *)(ep-&gt;hcpriv);</span>
<span class="gi">+	if (!qh)</span>
<span class="gi">+		goto done;</span>
<span class="gi">+</span>
<span class="gi">+	/** Check that the QTD list is really empty */</span>
<span class="gi">+	if (!list_empty(&amp;qh-&gt;qtd_list)) {</span>
<span class="gi">+		if (retry++ &lt; 250) {</span>
<span class="gi">+			SPIN_UNLOCK_IRQRESTORE(&amp;dwc_otg_hcd-&gt;lock, flags);</span>
<span class="gi">+			schedule_timeout_uninterruptible(1);</span>
<span class="gi">+			goto rescan;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		DWC_WARN(&quot;DWC OTG HCD EP DISABLE:&quot;</span>
<span class="gi">+			 &quot; QTD List for this endpoint is not empty\n&quot;);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_hcd_qh_remove_and_free(dwc_otg_hcd, qh);</span>
<span class="gi">+	ep-&gt;hcpriv = NULL;</span>
<span class="gi">+done:</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;dwc_otg_hcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+#else // LINUX_VERSION_CODE</span>
<span class="gi">+</span>
<span class="gi">+	qh = (dwc_otg_qh_t *)(ep-&gt;hcpriv);</span>
<span class="gi">+	if (qh != NULL) {</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+		/** Check that the QTD list is really empty */</span>
<span class="gi">+		if (!list_empty(&amp;qh-&gt;qtd_list)) {</span>
<span class="gi">+			DWC_WARN(&quot;DWC OTG HCD EP DISABLE:&quot;</span>
<span class="gi">+				 &quot; QTD List for this endpoint is not empty\n&quot;);</span>
<span class="gi">+		}</span>
<span class="gi">+#endif</span>
<span class="gi">+		dwc_otg_hcd_qh_remove_and_free(dwc_otg_hcd, qh);</span>
<span class="gi">+		ep-&gt;hcpriv = NULL;</span>
<span class="gi">+	}</span>
<span class="gi">+#endif // LINUX_VERSION_CODE</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Handles host mode interrupts for the DWC_otg controller. Returns IRQ_NONE if</span>
<span class="gi">+ * there was no interrupt to handle. Returns IRQ_HANDLED if there was a valid</span>
<span class="gi">+ * interrupt.</span>
<span class="gi">+ *</span>
<span class="gi">+ * This function is called by the USB core when an interrupt occurs */</span>
<span class="gi">+irqreturn_t dwc_otg_hcd_irq(struct usb_hcd *hcd</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,19)</span>
<span class="gi">+			    , struct pt_regs *regs</span>
<span class="gi">+#endif</span>
<span class="gi">+			  )</span>
<span class="gi">+{</span>
<span class="gi">+        int retVal = 0;</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+	retVal = dwc_otg_hcd_handle_intr(dwc_otg_hcd);</span>
<span class="gi">+        if (dwc_otg_hcd-&gt;flags.b.port_connect_status_change == 1) </span>
<span class="gi">+        	usb_hcd_poll_rh_status(hcd);  </span>
<span class="gi">+	return IRQ_RETVAL(retVal);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Creates Status Change bitmap for the root hub and root port. The bitmap is</span>
<span class="gi">+ * returned in buf. Bit 0 is the status change indicator for the root hub. Bit 1</span>
<span class="gi">+ * is the status change indicator for the single root port. Returns 1 if either</span>
<span class="gi">+ * change indicator is 1, otherwise returns 0. */</span>
<span class="gi">+int dwc_otg_hcd_hub_status_data(struct usb_hcd *hcd, char *buf)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+</span>
<span class="gi">+	buf[0] = 0;</span>
<span class="gi">+	buf[0] |= (dwc_otg_hcd-&gt;flags.b.port_connect_status_change ||</span>
<span class="gi">+		    dwc_otg_hcd-&gt;flags.b.port_reset_change ||</span>
<span class="gi">+		    dwc_otg_hcd-&gt;flags.b.port_enable_change ||</span>
<span class="gi">+		    dwc_otg_hcd-&gt;flags.b.port_suspend_change ||</span>
<span class="gi">+		    dwc_otg_hcd-&gt;flags.b.port_over_current_change) &lt;&lt; 1;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	if (buf[0]) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB STATUS DATA:&quot;</span>
<span class="gi">+			    &quot; Root port status changed\n&quot;);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  port_connect_status_change: %d\n&quot;,</span>
<span class="gi">+			    dwc_otg_hcd-&gt;flags.b.port_connect_status_change);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  port_reset_change: %d\n&quot;,</span>
<span class="gi">+			    dwc_otg_hcd-&gt;flags.b.port_reset_change);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  port_enable_change: %d\n&quot;,</span>
<span class="gi">+			    dwc_otg_hcd-&gt;flags.b.port_enable_change);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  port_suspend_change: %d\n&quot;,</span>
<span class="gi">+			    dwc_otg_hcd-&gt;flags.b.port_suspend_change);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  port_over_current_change: %d\n&quot;,</span>
<span class="gi">+			    dwc_otg_hcd-&gt;flags.b.port_over_current_change);</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+	return (buf[0] != 0);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_HS_ELECT_TST</span>
<span class="gi">+/*</span>
<span class="gi">+ * Quick and dirty hack to implement the HS Electrical Test</span>
<span class="gi">+ * SINGLE_STEP_GET_DEVICE_DESCRIPTOR feature.</span>
<span class="gi">+ *</span>
<span class="gi">+ * This code was copied from our userspace app &quot;hset&quot;. It sends a</span>
<span class="gi">+ * Get Device Descriptor control sequence in two parts, first the</span>
<span class="gi">+ * Setup packet by itself, followed some time later by the In and</span>
<span class="gi">+ * Ack packets. Rather than trying to figure out how to add this</span>
<span class="gi">+ * functionality to the normal driver code, we just hijack the</span>
<span class="gi">+ * hardware, using these two function to drive the hardware</span>
<span class="gi">+ * directly.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+dwc_otg_core_global_regs_t *global_regs;</span>
<span class="gi">+dwc_otg_host_global_regs_t *hc_global_regs;</span>
<span class="gi">+dwc_otg_hc_regs_t *hc_regs;</span>
<span class="gi">+uint32_t *data_fifo;</span>
<span class="gi">+</span>
<span class="gi">+static void do_setup(void)</span>
<span class="gi">+{</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+	hctsiz_data_t hctsiz;</span>
<span class="gi">+	hcchar_data_t hcchar;</span>
<span class="gi">+	haint_data_t haint;</span>
<span class="gi">+	hcint_data_t hcint;</span>
<span class="gi">+</span>
<span class="gi">+	/* Enable HAINTs */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_global_regs-&gt;haintmsk, 0x0001);</span>
<span class="gi">+</span>
<span class="gi">+	/* Enable HCINTs */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcintmsk, 0x04a3);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read GINTSTS */</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HAINT */</span>
<span class="gi">+	haint.d32 = dwc_read_reg32(&amp;hc_global_regs-&gt;haint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HAINT: %08x\n&quot;, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCINT */</span>
<span class="gi">+	hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCINT: %08x\n&quot;, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCCHAR */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCCHAR: %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HCINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcint, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HAINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_global_regs-&gt;haint, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear GINTSTS */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read GINTSTS */</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Send Setup packet (Get Device Descriptor)</span>
<span class="gi">+	 */</span>
<span class="gi">+</span>
<span class="gi">+	/* Make sure channel is disabled */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	if (hcchar.b.chen) {</span>
<span class="gi">+		//fprintf(stderr, &quot;Channel already enabled 1, HCCHAR = %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+		hcchar.b.chdis = 1;</span>
<span class="gi">+//		hcchar.b.chen = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+		//sleep(1);</span>
<span class="gi">+		mdelay(1000);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read GINTSTS */</span>
<span class="gi">+		gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+		//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read HAINT */</span>
<span class="gi">+		haint.d32 = dwc_read_reg32(&amp;hc_global_regs-&gt;haint);</span>
<span class="gi">+		//fprintf(stderr, &quot;HAINT: %08x\n&quot;, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read HCINT */</span>
<span class="gi">+		hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+		//fprintf(stderr, &quot;HCINT: %08x\n&quot;, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read HCCHAR */</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		//fprintf(stderr, &quot;HCCHAR: %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Clear HCINT */</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcint, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Clear HAINT */</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_global_regs-&gt;haint, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Clear GINTSTS */</span>
<span class="gi">+		dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		//if (hcchar.b.chen) {</span>
<span class="gi">+		//	fprintf(stderr, &quot;** Channel _still_ enabled 1, HCCHAR = %08x **\n&quot;, hcchar.d32);</span>
<span class="gi">+		//}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Set HCTSIZ */</span>
<span class="gi">+	hctsiz.d32 = 0;</span>
<span class="gi">+	hctsiz.b.xfersize = 8;</span>
<span class="gi">+	hctsiz.b.pktcnt = 1;</span>
<span class="gi">+	hctsiz.b.pid = DWC_OTG_HC_PID_SETUP;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hctsiz, hctsiz.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Set HCCHAR */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	hcchar.b.eptype = DWC_OTG_EP_TYPE_CONTROL;</span>
<span class="gi">+	hcchar.b.epdir = 0;</span>
<span class="gi">+	hcchar.b.epnum = 0;</span>
<span class="gi">+	hcchar.b.mps = 8;</span>
<span class="gi">+	hcchar.b.chen = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Fill FIFO with Setup data for Get Device Descriptor */</span>
<span class="gi">+	data_fifo = (uint32_t *)((char *)global_regs + 0x1000);</span>
<span class="gi">+	dwc_write_reg32(data_fifo++, 0x01000680);</span>
<span class="gi">+	dwc_write_reg32(data_fifo++, 0x00080000);</span>
<span class="gi">+</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;Waiting for HCINTR intr 1, GINTSTS = %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Wait for host channel interrupt */</span>
<span class="gi">+	do {</span>
<span class="gi">+		gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	} while (gintsts.b.hcintr == 0);</span>
<span class="gi">+</span>
<span class="gi">+	//fprintf(stderr, &quot;Got HCINTR intr 1, GINTSTS = %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Disable HCINTs */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcintmsk, 0x0000);</span>
<span class="gi">+</span>
<span class="gi">+	/* Disable HAINTs */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_global_regs-&gt;haintmsk, 0x0000);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HAINT */</span>
<span class="gi">+	haint.d32 = dwc_read_reg32(&amp;hc_global_regs-&gt;haint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HAINT: %08x\n&quot;, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCINT */</span>
<span class="gi">+	hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCINT: %08x\n&quot;, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCCHAR */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCCHAR: %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HCINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcint, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HAINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_global_regs-&gt;haint, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear GINTSTS */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read GINTSTS */</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static void do_in_ack(void)</span>
<span class="gi">+{</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+	hctsiz_data_t hctsiz;</span>
<span class="gi">+	hcchar_data_t hcchar;</span>
<span class="gi">+	haint_data_t haint;</span>
<span class="gi">+	hcint_data_t hcint;</span>
<span class="gi">+	host_grxsts_data_t grxsts;</span>
<span class="gi">+</span>
<span class="gi">+	/* Enable HAINTs */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_global_regs-&gt;haintmsk, 0x0001);</span>
<span class="gi">+</span>
<span class="gi">+	/* Enable HCINTs */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcintmsk, 0x04a3);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read GINTSTS */</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HAINT */</span>
<span class="gi">+	haint.d32 = dwc_read_reg32(&amp;hc_global_regs-&gt;haint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HAINT: %08x\n&quot;, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCINT */</span>
<span class="gi">+	hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCINT: %08x\n&quot;, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCCHAR */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCCHAR: %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HCINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcint, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HAINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_global_regs-&gt;haint, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear GINTSTS */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read GINTSTS */</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Receive Control In packet</span>
<span class="gi">+	 */</span>
<span class="gi">+</span>
<span class="gi">+	/* Make sure channel is disabled */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	if (hcchar.b.chen) {</span>
<span class="gi">+		//fprintf(stderr, &quot;Channel already enabled 2, HCCHAR = %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+		hcchar.b.chdis = 1;</span>
<span class="gi">+		hcchar.b.chen = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+		//sleep(1);</span>
<span class="gi">+		mdelay(1000);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read GINTSTS */</span>
<span class="gi">+		gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+		//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read HAINT */</span>
<span class="gi">+		haint.d32 = dwc_read_reg32(&amp;hc_global_regs-&gt;haint);</span>
<span class="gi">+		//fprintf(stderr, &quot;HAINT: %08x\n&quot;, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read HCINT */</span>
<span class="gi">+		hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+		//fprintf(stderr, &quot;HCINT: %08x\n&quot;, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read HCCHAR */</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		//fprintf(stderr, &quot;HCCHAR: %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Clear HCINT */</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcint, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Clear HAINT */</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_global_regs-&gt;haint, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Clear GINTSTS */</span>
<span class="gi">+		dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		//if (hcchar.b.chen) {</span>
<span class="gi">+		//	fprintf(stderr, &quot;** Channel _still_ enabled 2, HCCHAR = %08x **\n&quot;, hcchar.d32);</span>
<span class="gi">+		//}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Set HCTSIZ */</span>
<span class="gi">+	hctsiz.d32 = 0;</span>
<span class="gi">+	hctsiz.b.xfersize = 8;</span>
<span class="gi">+	hctsiz.b.pktcnt = 1;</span>
<span class="gi">+	hctsiz.b.pid = DWC_OTG_HC_PID_DATA1;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hctsiz, hctsiz.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Set HCCHAR */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	hcchar.b.eptype = DWC_OTG_EP_TYPE_CONTROL;</span>
<span class="gi">+	hcchar.b.epdir = 1;</span>
<span class="gi">+	hcchar.b.epnum = 0;</span>
<span class="gi">+	hcchar.b.mps = 8;</span>
<span class="gi">+	hcchar.b.chen = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;Waiting for RXSTSQLVL intr 1, GINTSTS = %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Wait for receive status queue interrupt */</span>
<span class="gi">+	do {</span>
<span class="gi">+		gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	} while (gintsts.b.rxstsqlvl == 0);</span>
<span class="gi">+</span>
<span class="gi">+	//fprintf(stderr, &quot;Got RXSTSQLVL intr 1, GINTSTS = %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read RXSTS */</span>
<span class="gi">+	grxsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;grxstsp);</span>
<span class="gi">+	//fprintf(stderr, &quot;GRXSTS: %08x\n&quot;, grxsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear RXSTSQLVL in GINTSTS */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.rxstsqlvl = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	switch (grxsts.b.pktsts) {</span>
<span class="gi">+	case DWC_GRXSTS_PKTSTS_IN:</span>
<span class="gi">+		/* Read the data into the host buffer */</span>
<span class="gi">+		if (grxsts.b.bcnt &gt; 0) {</span>
<span class="gi">+			int i;</span>
<span class="gi">+			int word_count = (grxsts.b.bcnt + 3) / 4;</span>
<span class="gi">+</span>
<span class="gi">+			data_fifo = (uint32_t *)((char *)global_regs + 0x1000);</span>
<span class="gi">+</span>
<span class="gi">+			for (i = 0; i &lt; word_count; i++) {</span>
<span class="gi">+				(void)dwc_read_reg32(data_fifo++);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		//fprintf(stderr, &quot;Received %u bytes\n&quot;, (unsigned)grxsts.b.bcnt);</span>
<span class="gi">+	break;</span>
<span class="gi">+</span>
<span class="gi">+	default:</span>
<span class="gi">+		//fprintf(stderr, &quot;** Unexpected GRXSTS packet status 1 **\n&quot;);</span>
<span class="gi">+	break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;Waiting for RXSTSQLVL intr 2, GINTSTS = %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Wait for receive status queue interrupt */</span>
<span class="gi">+	do {</span>
<span class="gi">+		gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	} while (gintsts.b.rxstsqlvl == 0);</span>
<span class="gi">+</span>
<span class="gi">+	//fprintf(stderr, &quot;Got RXSTSQLVL intr 2, GINTSTS = %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read RXSTS */</span>
<span class="gi">+	grxsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;grxstsp);</span>
<span class="gi">+	//fprintf(stderr, &quot;GRXSTS: %08x\n&quot;, grxsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear RXSTSQLVL in GINTSTS */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.rxstsqlvl = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	switch (grxsts.b.pktsts) {</span>
<span class="gi">+	case DWC_GRXSTS_PKTSTS_IN_XFER_COMP:</span>
<span class="gi">+	break;</span>
<span class="gi">+</span>
<span class="gi">+	default:</span>
<span class="gi">+		//fprintf(stderr, &quot;** Unexpected GRXSTS packet status 2 **\n&quot;);</span>
<span class="gi">+	break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;Waiting for HCINTR intr 2, GINTSTS = %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Wait for host channel interrupt */</span>
<span class="gi">+	do {</span>
<span class="gi">+		gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	} while (gintsts.b.hcintr == 0);</span>
<span class="gi">+</span>
<span class="gi">+	//fprintf(stderr, &quot;Got HCINTR intr 2, GINTSTS = %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HAINT */</span>
<span class="gi">+	haint.d32 = dwc_read_reg32(&amp;hc_global_regs-&gt;haint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HAINT: %08x\n&quot;, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCINT */</span>
<span class="gi">+	hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCINT: %08x\n&quot;, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCCHAR */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCCHAR: %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HCINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcint, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HAINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_global_regs-&gt;haint, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear GINTSTS */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read GINTSTS */</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+//	usleep(100000);</span>
<span class="gi">+//	mdelay(100);</span>
<span class="gi">+	mdelay(1);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Send handshake packet</span>
<span class="gi">+	 */</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HAINT */</span>
<span class="gi">+	haint.d32 = dwc_read_reg32(&amp;hc_global_regs-&gt;haint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HAINT: %08x\n&quot;, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCINT */</span>
<span class="gi">+	hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCINT: %08x\n&quot;, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCCHAR */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCCHAR: %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HCINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcint, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HAINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_global_regs-&gt;haint, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear GINTSTS */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read GINTSTS */</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Make sure channel is disabled */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	if (hcchar.b.chen) {</span>
<span class="gi">+		//fprintf(stderr, &quot;Channel already enabled 3, HCCHAR = %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+		hcchar.b.chdis = 1;</span>
<span class="gi">+		hcchar.b.chen = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+		//sleep(1);</span>
<span class="gi">+		mdelay(1000);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read GINTSTS */</span>
<span class="gi">+		gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+		//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read HAINT */</span>
<span class="gi">+		haint.d32 = dwc_read_reg32(&amp;hc_global_regs-&gt;haint);</span>
<span class="gi">+		//fprintf(stderr, &quot;HAINT: %08x\n&quot;, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read HCINT */</span>
<span class="gi">+		hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+		//fprintf(stderr, &quot;HCINT: %08x\n&quot;, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Read HCCHAR */</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		//fprintf(stderr, &quot;HCCHAR: %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Clear HCINT */</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_regs-&gt;hcint, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Clear HAINT */</span>
<span class="gi">+		dwc_write_reg32(&amp;hc_global_regs-&gt;haint, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+		/* Clear GINTSTS */</span>
<span class="gi">+		dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		//if (hcchar.b.chen) {</span>
<span class="gi">+		//	fprintf(stderr, &quot;** Channel _still_ enabled 3, HCCHAR = %08x **\n&quot;, hcchar.d32);</span>
<span class="gi">+		//}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Set HCTSIZ */</span>
<span class="gi">+	hctsiz.d32 = 0;</span>
<span class="gi">+	hctsiz.b.xfersize = 0;</span>
<span class="gi">+	hctsiz.b.pktcnt = 1;</span>
<span class="gi">+	hctsiz.b.pid = DWC_OTG_HC_PID_DATA1;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hctsiz, hctsiz.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Set HCCHAR */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	hcchar.b.eptype = DWC_OTG_EP_TYPE_CONTROL;</span>
<span class="gi">+	hcchar.b.epdir = 0;</span>
<span class="gi">+	hcchar.b.epnum = 0;</span>
<span class="gi">+	hcchar.b.mps = 8;</span>
<span class="gi">+	hcchar.b.chen = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcchar, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;Waiting for HCINTR intr 3, GINTSTS = %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Wait for host channel interrupt */</span>
<span class="gi">+	do {</span>
<span class="gi">+		gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	} while (gintsts.b.hcintr == 0);</span>
<span class="gi">+</span>
<span class="gi">+	//fprintf(stderr, &quot;Got HCINTR intr 3, GINTSTS = %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Disable HCINTs */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcintmsk, 0x0000);</span>
<span class="gi">+</span>
<span class="gi">+	/* Disable HAINTs */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_global_regs-&gt;haintmsk, 0x0000);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HAINT */</span>
<span class="gi">+	haint.d32 = dwc_read_reg32(&amp;hc_global_regs-&gt;haint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HAINT: %08x\n&quot;, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCINT */</span>
<span class="gi">+	hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCINT: %08x\n&quot;, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read HCCHAR */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	//fprintf(stderr, &quot;HCCHAR: %08x\n&quot;, hcchar.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HCINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_regs-&gt;hcint, hcint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear HAINT */</span>
<span class="gi">+	dwc_write_reg32(&amp;hc_global_regs-&gt;haint, haint.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear GINTSTS */</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read GINTSTS */</span>
<span class="gi">+	gintsts.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintsts);</span>
<span class="gi">+	//fprintf(stderr, &quot;GINTSTS: %08x\n&quot;, gintsts.d32);</span>
<span class="gi">+}</span>
<span class="gi">+#endif /* DWC_HS_ELECT_TST */</span>
<span class="gi">+</span>
<span class="gi">+/** Handles hub class-specific requests. */</span>
<span class="gi">+int dwc_otg_hcd_hub_control(struct usb_hcd *hcd,</span>
<span class="gi">+			    u16 typeReq,</span>
<span class="gi">+			    u16 wValue,</span>
<span class="gi">+			    u16 wIndex,</span>
<span class="gi">+			    char *buf,</span>
<span class="gi">+			    u16 wLength)</span>
<span class="gi">+{</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = hcd_to_dwc_otg_hcd(hcd)-&gt;core_if;</span>
<span class="gi">+	struct usb_hub_descriptor *desc;</span>
<span class="gi">+	hprt0_data_t hprt0 = {.d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+	uint32_t port_status;</span>
<span class="gi">+</span>
<span class="gi">+	switch (typeReq) {</span>
<span class="gi">+	case ClearHubFeature:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+			    &quot;ClearHubFeature 0x%x\n&quot;, wValue);</span>
<span class="gi">+		switch (wValue) {</span>
<span class="gi">+		case C_HUB_LOCAL_POWER:</span>
<span class="gi">+		case C_HUB_OVER_CURRENT:</span>
<span class="gi">+			/* Nothing required here */</span>
<span class="gi">+			break;</span>
<span class="gi">+		default:</span>
<span class="gi">+			retval = -EINVAL;</span>
<span class="gi">+			DWC_ERROR(&quot;DWC OTG HCD - &quot;</span>
<span class="gi">+				  &quot;ClearHubFeature request %xh unknown\n&quot;, wValue);</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+	case ClearPortFeature:</span>
<span class="gi">+		if (!wIndex || wIndex &gt; 1)</span>
<span class="gi">+			goto error;</span>
<span class="gi">+</span>
<span class="gi">+		switch (wValue) {</span>
<span class="gi">+		case USB_PORT_FEAT_ENABLE:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_ANY, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;ClearPortFeature USB_PORT_FEAT_ENABLE\n&quot;);</span>
<span class="gi">+			hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+			hprt0.b.prtena = 1;</span>
<span class="gi">+			dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+			break;</span>
<span class="gi">+		case USB_PORT_FEAT_SUSPEND:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;ClearPortFeature USB_PORT_FEAT_SUSPEND\n&quot;);</span>
<span class="gi">+			hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+			hprt0.b.prtres = 1;</span>
<span class="gi">+			dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+			/* Clear Resume bit */</span>
<span class="gi">+			mdelay(100);</span>
<span class="gi">+			hprt0.b.prtres = 0;</span>
<span class="gi">+			dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+			break;</span>
<span class="gi">+		case USB_PORT_FEAT_POWER:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;ClearPortFeature USB_PORT_FEAT_POWER\n&quot;);</span>
<span class="gi">+			hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+			hprt0.b.prtpwr = 0;</span>
<span class="gi">+			dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+			break;</span>
<span class="gi">+		case USB_PORT_FEAT_INDICATOR:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;ClearPortFeature USB_PORT_FEAT_INDICATOR\n&quot;);</span>
<span class="gi">+			/* Port inidicator not supported */</span>
<span class="gi">+			break;</span>
<span class="gi">+		case USB_PORT_FEAT_C_CONNECTION:</span>
<span class="gi">+			/* Clears drivers internal connect status change</span>
<span class="gi">+			 * flag */</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;ClearPortFeature USB_PORT_FEAT_C_CONNECTION\n&quot;);</span>
<span class="gi">+			dwc_otg_hcd-&gt;flags.b.port_connect_status_change = 0;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case USB_PORT_FEAT_C_RESET:</span>
<span class="gi">+			/* Clears the driver&#39;s internal Port Reset Change</span>
<span class="gi">+			 * flag */</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;ClearPortFeature USB_PORT_FEAT_C_RESET\n&quot;);</span>
<span class="gi">+			dwc_otg_hcd-&gt;flags.b.port_reset_change = 0;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case USB_PORT_FEAT_C_ENABLE:</span>
<span class="gi">+			/* Clears the driver&#39;s internal Port</span>
<span class="gi">+			 * Enable/Disable Change flag */</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;ClearPortFeature USB_PORT_FEAT_C_ENABLE\n&quot;);</span>
<span class="gi">+			dwc_otg_hcd-&gt;flags.b.port_enable_change = 0;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case USB_PORT_FEAT_C_SUSPEND:</span>
<span class="gi">+			/* Clears the driver&#39;s internal Port Suspend</span>
<span class="gi">+			 * Change flag, which is set when resume signaling on</span>
<span class="gi">+			 * the host port is complete */</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;ClearPortFeature USB_PORT_FEAT_C_SUSPEND\n&quot;);</span>
<span class="gi">+			dwc_otg_hcd-&gt;flags.b.port_suspend_change = 0;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case USB_PORT_FEAT_C_OVER_CURRENT:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;ClearPortFeature USB_PORT_FEAT_C_OVER_CURRENT\n&quot;);</span>
<span class="gi">+			dwc_otg_hcd-&gt;flags.b.port_over_current_change = 0;</span>
<span class="gi">+			break;</span>
<span class="gi">+		default:</span>
<span class="gi">+			retval = -EINVAL;</span>
<span class="gi">+			DWC_ERROR(&quot;DWC OTG HCD - &quot;</span>
<span class="gi">+				  &quot;ClearPortFeature request %xh &quot;</span>
<span class="gi">+				  &quot;unknown or unsupported\n&quot;, wValue);</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+	case GetHubDescriptor:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+			    &quot;GetHubDescriptor\n&quot;);</span>
<span class="gi">+		desc = (struct usb_hub_descriptor *)buf;</span>
<span class="gi">+		desc-&gt;bDescLength = 9;</span>
<span class="gi">+		desc-&gt;bDescriptorType = 0x29;</span>
<span class="gi">+		desc-&gt;bNbrPorts = 1;</span>
<span class="gi">+		desc-&gt;wHubCharacteristics = 0x08;</span>
<span class="gi">+		desc-&gt;bPwrOn2PwrGood = 1;</span>
<span class="gi">+		desc-&gt;bHubContrCurrent = 0;</span>
<span class="gi">+		desc-&gt;bitmap[0] = 0;</span>
<span class="gi">+		desc-&gt;bitmap[1] = 0xff;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case GetHubStatus:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+			    &quot;GetHubStatus\n&quot;);</span>
<span class="gi">+		memset(buf, 0, 4);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case GetPortStatus:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+			    &quot;GetPortStatus\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+		if (!wIndex || wIndex &gt; 1)</span>
<span class="gi">+			goto error;</span>
<span class="gi">+</span>
<span class="gi">+		port_status = 0;</span>
<span class="gi">+</span>
<span class="gi">+		if (dwc_otg_hcd-&gt;flags.b.port_connect_status_change)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_C_CONNECTION);</span>
<span class="gi">+</span>
<span class="gi">+		if (dwc_otg_hcd-&gt;flags.b.port_enable_change)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_C_ENABLE);</span>
<span class="gi">+</span>
<span class="gi">+		if (dwc_otg_hcd-&gt;flags.b.port_suspend_change)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_C_SUSPEND);</span>
<span class="gi">+</span>
<span class="gi">+		if (dwc_otg_hcd-&gt;flags.b.port_reset_change)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_C_RESET);</span>
<span class="gi">+</span>
<span class="gi">+		if (dwc_otg_hcd-&gt;flags.b.port_over_current_change) {</span>
<span class="gi">+			DWC_ERROR(&quot;Device Not Supported\n&quot;);</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_C_OVER_CURRENT);</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		if (!dwc_otg_hcd-&gt;flags.b.port_connect_status) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * The port is disconnected, which means the core is</span>
<span class="gi">+			 * either in device mode or it soon will be. Just</span>
<span class="gi">+			 * return 0&#39;s for the remainder of the port status</span>
<span class="gi">+			 * since the port register can&#39;t be read if the core</span>
<span class="gi">+			 * is in device mode.</span>
<span class="gi">+			 */</span>
<span class="gi">+			*((__le32 *) buf) = cpu_to_le32(port_status);</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		hprt0.d32 = dwc_read_reg32(core_if-&gt;host_if-&gt;hprt0);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  HPRT0: 0x%08x\n&quot;, hprt0.d32);</span>
<span class="gi">+</span>
<span class="gi">+		if (hprt0.b.prtconnsts)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_CONNECTION);</span>
<span class="gi">+</span>
<span class="gi">+		if (hprt0.b.prtena)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_ENABLE);</span>
<span class="gi">+</span>
<span class="gi">+		if (hprt0.b.prtsusp)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_SUSPEND);</span>
<span class="gi">+</span>
<span class="gi">+		if (hprt0.b.prtovrcurract)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_OVER_CURRENT);</span>
<span class="gi">+</span>
<span class="gi">+		if (hprt0.b.prtrst)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_RESET);</span>
<span class="gi">+</span>
<span class="gi">+		if (hprt0.b.prtpwr)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_POWER);</span>
<span class="gi">+</span>
<span class="gi">+		if (hprt0.b.prtspd == DWC_HPRT0_PRTSPD_HIGH_SPEED)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_HIGHSPEED);</span>
<span class="gi">+		else if (hprt0.b.prtspd == DWC_HPRT0_PRTSPD_LOW_SPEED)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_LOWSPEED);</span>
<span class="gi">+</span>
<span class="gi">+		if (hprt0.b.prttstctl)</span>
<span class="gi">+			port_status |= (1 &lt;&lt; USB_PORT_FEAT_TEST);</span>
<span class="gi">+</span>
<span class="gi">+		/* USB_PORT_FEAT_INDICATOR unsupported always 0 */</span>
<span class="gi">+</span>
<span class="gi">+		*((__le32 *) buf) = cpu_to_le32(port_status);</span>
<span class="gi">+</span>
<span class="gi">+		break;</span>
<span class="gi">+	case SetHubFeature:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+			    &quot;SetHubFeature\n&quot;);</span>
<span class="gi">+		/* No HUB features supported */</span>
<span class="gi">+		break;</span>
<span class="gi">+	case SetPortFeature:</span>
<span class="gi">+		if (wValue != USB_PORT_FEAT_TEST &amp;&amp; (!wIndex || wIndex &gt; 1))</span>
<span class="gi">+			goto error;</span>
<span class="gi">+</span>
<span class="gi">+		if (!dwc_otg_hcd-&gt;flags.b.port_connect_status) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * The port is disconnected, which means the core is</span>
<span class="gi">+			 * either in device mode or it soon will be. Just</span>
<span class="gi">+			 * return without doing anything since the port</span>
<span class="gi">+			 * register can&#39;t be written if the core is in device</span>
<span class="gi">+			 * mode.</span>
<span class="gi">+			 */</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		switch (wValue) {</span>
<span class="gi">+		case USB_PORT_FEAT_SUSPEND:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;SetPortFeature - USB_PORT_FEAT_SUSPEND\n&quot;);</span>
<span class="gi">+			if (hcd-&gt;self.otg_port == wIndex &amp;&amp;</span>
<span class="gi">+			    hcd-&gt;self.b_hnp_enable) {</span>
<span class="gi">+				gotgctl_data_t  gotgctl = {.d32=0};</span>
<span class="gi">+				gotgctl.b.hstsethnpen = 1;</span>
<span class="gi">+				dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gotgctl,</span>
<span class="gi">+						  0, gotgctl.d32);</span>
<span class="gi">+				core_if-&gt;op_state = A_SUSPEND;</span>
<span class="gi">+			}</span>
<span class="gi">+			hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+			hprt0.b.prtsusp = 1;</span>
<span class="gi">+			dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+			//DWC_PRINT(&quot;SUSPEND: HPRT0=%0x\n&quot;, hprt0.d32);</span>
<span class="gi">+			/* Suspend the Phy Clock */</span>
<span class="gi">+			{</span>
<span class="gi">+				pcgcctl_data_t pcgcctl = {.d32=0};</span>
<span class="gi">+				pcgcctl.b.stoppclk = 1;</span>
<span class="gi">+				dwc_write_reg32(core_if-&gt;pcgcctl, pcgcctl.d32);</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			/* For HNP the bus must be suspended for at least 200ms. */</span>
<span class="gi">+			if (hcd-&gt;self.b_hnp_enable) {</span>
<span class="gi">+				mdelay(200);</span>
<span class="gi">+				//DWC_PRINT(&quot;SUSPEND: wait complete! (%d)\n&quot;, _hcd-&gt;state);</span>
<span class="gi">+			}</span>
<span class="gi">+			break;</span>
<span class="gi">+		case USB_PORT_FEAT_POWER:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;SetPortFeature - USB_PORT_FEAT_POWER\n&quot;);</span>
<span class="gi">+			hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+			hprt0.b.prtpwr = 1;</span>
<span class="gi">+			dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+			break;</span>
<span class="gi">+		case USB_PORT_FEAT_RESET:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;SetPortFeature - USB_PORT_FEAT_RESET\n&quot;);</span>
<span class="gi">+			hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+			/* When B-Host the Port reset bit is set in</span>
<span class="gi">+			 * the Start HCD Callback function, so that</span>
<span class="gi">+			 * the reset is started within 1ms of the HNP</span>
<span class="gi">+			 * success interrupt. */</span>
<span class="gi">+			if (!hcd-&gt;self.is_b_host) {</span>
<span class="gi">+				hprt0.b.prtrst = 1;</span>
<span class="gi">+				dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+			}</span>
<span class="gi">+			/* Clear reset bit in 10ms (FS/LS) or 50ms (HS) */</span>
<span class="gi">+			MDELAY(60);</span>
<span class="gi">+			hprt0.b.prtrst = 0;</span>
<span class="gi">+			dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+			break;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_HS_ELECT_TST</span>
<span class="gi">+		case USB_PORT_FEAT_TEST:</span>
<span class="gi">+		{</span>
<span class="gi">+			uint32_t t;</span>
<span class="gi">+			gintmsk_data_t gintmsk;</span>
<span class="gi">+</span>
<span class="gi">+			t = (wIndex &gt;&gt; 8); /* MSB wIndex USB */</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;SetPortFeature - USB_PORT_FEAT_TEST %d\n&quot;, t);</span>
<span class="gi">+			warn(&quot;USB_PORT_FEAT_TEST %d\n&quot;, t);</span>
<span class="gi">+			if (t &lt; 6) {</span>
<span class="gi">+				hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+				hprt0.b.prttstctl = t;</span>
<span class="gi">+				dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+			} else {</span>
<span class="gi">+				/* Setup global vars with reg addresses (quick and</span>
<span class="gi">+				 * dirty hack, should be cleaned up)</span>
<span class="gi">+				 */</span>
<span class="gi">+				global_regs = core_if-&gt;core_global_regs;</span>
<span class="gi">+				hc_global_regs = core_if-&gt;host_if-&gt;host_global_regs;</span>
<span class="gi">+				hc_regs = (dwc_otg_hc_regs_t *)((char *)global_regs + 0x500);</span>
<span class="gi">+				data_fifo = (uint32_t *)((char *)global_regs + 0x1000);</span>
<span class="gi">+</span>
<span class="gi">+				if (t == 6) { /* HS_HOST_PORT_SUSPEND_RESUME */</span>
<span class="gi">+					/* Save current interrupt mask */</span>
<span class="gi">+					gintmsk.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintmsk);</span>
<span class="gi">+</span>
<span class="gi">+					/* Disable all interrupts while we muck with</span>
<span class="gi">+					 * the hardware directly</span>
<span class="gi">+					 */</span>
<span class="gi">+					dwc_write_reg32(&amp;global_regs-&gt;gintmsk, 0);</span>
<span class="gi">+</span>
<span class="gi">+					/* 15 second delay per the test spec */</span>
<span class="gi">+					mdelay(15000);</span>
<span class="gi">+</span>
<span class="gi">+					/* Drive suspend on the root port */</span>
<span class="gi">+					hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+					hprt0.b.prtsusp = 1;</span>
<span class="gi">+					hprt0.b.prtres = 0;</span>
<span class="gi">+					dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+</span>
<span class="gi">+					/* 15 second delay per the test spec */</span>
<span class="gi">+					mdelay(15000);</span>
<span class="gi">+</span>
<span class="gi">+					/* Drive resume on the root port */</span>
<span class="gi">+					hprt0.d32 = dwc_otg_read_hprt0(core_if);</span>
<span class="gi">+					hprt0.b.prtsusp = 0;</span>
<span class="gi">+					hprt0.b.prtres = 1;</span>
<span class="gi">+					dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+					mdelay(100);</span>
<span class="gi">+</span>
<span class="gi">+					/* Clear the resume bit */</span>
<span class="gi">+					hprt0.b.prtres = 0;</span>
<span class="gi">+					dwc_write_reg32(core_if-&gt;host_if-&gt;hprt0, hprt0.d32);</span>
<span class="gi">+</span>
<span class="gi">+					/* Restore interrupts */</span>
<span class="gi">+					dwc_write_reg32(&amp;global_regs-&gt;gintmsk, gintmsk.d32);</span>
<span class="gi">+				} else if (t == 7) { /* SINGLE_STEP_GET_DEVICE_DESCRIPTOR setup */</span>
<span class="gi">+					/* Save current interrupt mask */</span>
<span class="gi">+					gintmsk.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintmsk);</span>
<span class="gi">+</span>
<span class="gi">+					/* Disable all interrupts while we muck with</span>
<span class="gi">+					 * the hardware directly</span>
<span class="gi">+					 */</span>
<span class="gi">+					dwc_write_reg32(&amp;global_regs-&gt;gintmsk, 0);</span>
<span class="gi">+</span>
<span class="gi">+					/* 15 second delay per the test spec */</span>
<span class="gi">+					mdelay(15000);</span>
<span class="gi">+</span>
<span class="gi">+					/* Send the Setup packet */</span>
<span class="gi">+					do_setup();</span>
<span class="gi">+</span>
<span class="gi">+					/* 15 second delay so nothing else happens for awhile */</span>
<span class="gi">+					mdelay(15000);</span>
<span class="gi">+</span>
<span class="gi">+					/* Restore interrupts */</span>
<span class="gi">+					dwc_write_reg32(&amp;global_regs-&gt;gintmsk, gintmsk.d32);</span>
<span class="gi">+				} else if (t == 8) { /* SINGLE_STEP_GET_DEVICE_DESCRIPTOR execute */</span>
<span class="gi">+					/* Save current interrupt mask */</span>
<span class="gi">+					gintmsk.d32 = dwc_read_reg32(&amp;global_regs-&gt;gintmsk);</span>
<span class="gi">+</span>
<span class="gi">+					/* Disable all interrupts while we muck with</span>
<span class="gi">+					 * the hardware directly</span>
<span class="gi">+					 */</span>
<span class="gi">+					dwc_write_reg32(&amp;global_regs-&gt;gintmsk, 0);</span>
<span class="gi">+</span>
<span class="gi">+					/* Send the Setup packet */</span>
<span class="gi">+					do_setup();</span>
<span class="gi">+</span>
<span class="gi">+					/* 15 second delay so nothing else happens for awhile */</span>
<span class="gi">+					mdelay(15000);</span>
<span class="gi">+</span>
<span class="gi">+					/* Send the In and Ack packets */</span>
<span class="gi">+					do_in_ack();</span>
<span class="gi">+</span>
<span class="gi">+					/* 15 second delay so nothing else happens for awhile */</span>
<span class="gi">+					mdelay(15000);</span>
<span class="gi">+</span>
<span class="gi">+					/* Restore interrupts */</span>
<span class="gi">+					dwc_write_reg32(&amp;global_regs-&gt;gintmsk, gintmsk.d32);</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+#endif /* DWC_HS_ELECT_TST */</span>
<span class="gi">+</span>
<span class="gi">+		case USB_PORT_FEAT_INDICATOR:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD HUB CONTROL - &quot;</span>
<span class="gi">+				    &quot;SetPortFeature - USB_PORT_FEAT_INDICATOR\n&quot;);</span>
<span class="gi">+			/* Not supported */</span>
<span class="gi">+			break;</span>
<span class="gi">+		default:</span>
<span class="gi">+			retval = -EINVAL;</span>
<span class="gi">+			DWC_ERROR(&quot;DWC OTG HCD - &quot;</span>
<span class="gi">+				  &quot;SetPortFeature request %xh &quot;</span>
<span class="gi">+				  &quot;unknown or unsupported\n&quot;, wValue);</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+	default:</span>
<span class="gi">+	error:</span>
<span class="gi">+		retval = -EINVAL;</span>
<span class="gi">+		DWC_WARN(&quot;DWC OTG HCD - &quot;</span>
<span class="gi">+			 &quot;Unknown hub control request type or invalid typeReq: %xh wIndex: %xh wValue: %xh\n&quot;,</span>
<span class="gi">+			 typeReq, wIndex, wValue);</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Assigns transactions from a QTD to a free host channel and initializes the</span>
<span class="gi">+ * host channel to perform the transactions. The host channel is removed from</span>
<span class="gi">+ * the free list.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param hcd The HCD state structure.</span>
<span class="gi">+ * @param qh Transactions from the first QTD for this QH are selected and</span>
<span class="gi">+ * assigned to a free host channel.</span>
<span class="gi">+ */</span>
<span class="gi">+static void assign_and_init_hc(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_hc_t	*hc;</span>
<span class="gi">+	dwc_otg_qtd_t	*qtd;</span>
<span class="gi">+	struct urb	*urb;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;%s(%p,%p)\n&quot;, __func__, hcd, qh);</span>
<span class="gi">+</span>
<span class="gi">+	hc = list_entry(hcd-&gt;free_hc_list.next, dwc_hc_t, hc_list_entry);</span>
<span class="gi">+</span>
<span class="gi">+	/* Remove the host channel from the free list. */</span>
<span class="gi">+	list_del_init(&amp;hc-&gt;hc_list_entry);</span>
<span class="gi">+</span>
<span class="gi">+	qtd = list_entry(qh-&gt;qtd_list.next, dwc_otg_qtd_t, qtd_list_entry);</span>
<span class="gi">+	urb = qtd-&gt;urb;</span>
<span class="gi">+	qh-&gt;channel = hc;</span>
<span class="gi">+	qh-&gt;qtd_in_process = qtd;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Use usb_pipedevice to determine device address. This address is</span>
<span class="gi">+	 * 0 before the SET_ADDRESS command and the correct address afterward.</span>
<span class="gi">+	 */</span>
<span class="gi">+	hc-&gt;dev_addr = usb_pipedevice(urb-&gt;pipe);</span>
<span class="gi">+	hc-&gt;ep_num = usb_pipeendpoint(urb-&gt;pipe);</span>
<span class="gi">+</span>
<span class="gi">+	if (urb-&gt;dev-&gt;speed == USB_SPEED_LOW) {</span>
<span class="gi">+		hc-&gt;speed = DWC_OTG_EP_SPEED_LOW;</span>
<span class="gi">+	} else if (urb-&gt;dev-&gt;speed == USB_SPEED_FULL) {</span>
<span class="gi">+		hc-&gt;speed = DWC_OTG_EP_SPEED_FULL;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		hc-&gt;speed = DWC_OTG_EP_SPEED_HIGH;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hc-&gt;max_packet = dwc_max_packet(qh-&gt;maxp);</span>
<span class="gi">+</span>
<span class="gi">+	hc-&gt;xfer_started = 0;</span>
<span class="gi">+	hc-&gt;halt_status = DWC_OTG_HC_XFER_NO_HALT_STATUS;</span>
<span class="gi">+	hc-&gt;error_state = (qtd-&gt;error_count &gt; 0);</span>
<span class="gi">+	hc-&gt;halt_on_queue = 0;</span>
<span class="gi">+	hc-&gt;halt_pending = 0;</span>
<span class="gi">+	hc-&gt;requests = 0;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * The following values may be modified in the transfer type section</span>
<span class="gi">+	 * below. The xfer_len value may be reduced when the transfer is</span>
<span class="gi">+	 * started to accommodate the max widths of the XferSize and PktCnt</span>
<span class="gi">+	 * fields in the HCTSIZn register.</span>
<span class="gi">+	 */</span>
<span class="gi">+	hc-&gt;do_ping = qh-&gt;ping_state;</span>
<span class="gi">+	hc-&gt;ep_is_in = (usb_pipein(urb-&gt;pipe) != 0);</span>
<span class="gi">+	hc-&gt;data_pid_start = qh-&gt;data_toggle;</span>
<span class="gi">+	hc-&gt;multi_count = 1;</span>
<span class="gi">+</span>
<span class="gi">+	if (hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		hc-&gt;xfer_buff = (uint8_t *)urb-&gt;transfer_dma + urb-&gt;actual_length;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		hc-&gt;xfer_buff = (uint8_t *)urb-&gt;transfer_buffer + urb-&gt;actual_length;</span>
<span class="gi">+	}</span>
<span class="gi">+	hc-&gt;xfer_len = urb-&gt;transfer_buffer_length - urb-&gt;actual_length;</span>
<span class="gi">+	hc-&gt;xfer_count = 0;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Set the split attributes</span>
<span class="gi">+	 */</span>
<span class="gi">+	hc-&gt;do_split = 0;</span>
<span class="gi">+	if (qh-&gt;do_split) {</span>
<span class="gi">+		hc-&gt;do_split = 1;</span>
<span class="gi">+		hc-&gt;xact_pos = qtd-&gt;isoc_split_pos;</span>
<span class="gi">+		hc-&gt;complete_split = qtd-&gt;complete_split;</span>
<span class="gi">+		hc-&gt;hub_addr = urb-&gt;dev-&gt;tt-&gt;hub-&gt;devnum;</span>
<span class="gi">+		hc-&gt;port_addr = urb-&gt;dev-&gt;ttport;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	switch (usb_pipetype(urb-&gt;pipe)) {</span>
<span class="gi">+	case PIPE_CONTROL:</span>
<span class="gi">+		hc-&gt;ep_type = DWC_OTG_EP_TYPE_CONTROL;</span>
<span class="gi">+		switch (qtd-&gt;control_phase) {</span>
<span class="gi">+		case DWC_OTG_CONTROL_SETUP:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCDV, &quot;  Control setup transaction\n&quot;);</span>
<span class="gi">+			hc-&gt;do_ping = 0;</span>
<span class="gi">+			hc-&gt;ep_is_in = 0;</span>
<span class="gi">+			hc-&gt;data_pid_start = DWC_OTG_HC_PID_SETUP;</span>
<span class="gi">+			if (hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+				hc-&gt;xfer_buff = (uint8_t *)urb-&gt;setup_dma;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				hc-&gt;xfer_buff = (uint8_t *)urb-&gt;setup_packet;</span>
<span class="gi">+			}</span>
<span class="gi">+			hc-&gt;xfer_len = 8;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case DWC_OTG_CONTROL_DATA:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCDV, &quot;  Control data transaction\n&quot;);</span>
<span class="gi">+			hc-&gt;data_pid_start = qtd-&gt;data_toggle;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case DWC_OTG_CONTROL_STATUS:</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Direction is opposite of data direction or IN if no</span>
<span class="gi">+			 * data.</span>
<span class="gi">+			 */</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCDV, &quot;  Control status transaction\n&quot;);</span>
<span class="gi">+			if (urb-&gt;transfer_buffer_length == 0) {</span>
<span class="gi">+				hc-&gt;ep_is_in = 1;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				hc-&gt;ep_is_in = (usb_pipein(urb-&gt;pipe) != USB_DIR_IN);</span>
<span class="gi">+			}</span>
<span class="gi">+			if (hc-&gt;ep_is_in) {</span>
<span class="gi">+				hc-&gt;do_ping = 0;</span>
<span class="gi">+			}</span>
<span class="gi">+			hc-&gt;data_pid_start = DWC_OTG_HC_PID_DATA1;</span>
<span class="gi">+			hc-&gt;xfer_len = 0;</span>
<span class="gi">+			if (hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+				hc-&gt;xfer_buff = (uint8_t *)hcd-&gt;status_buf_dma;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				hc-&gt;xfer_buff = (uint8_t *)hcd-&gt;status_buf;</span>
<span class="gi">+			}</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_BULK:</span>
<span class="gi">+		hc-&gt;ep_type = DWC_OTG_EP_TYPE_BULK;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_INTERRUPT:</span>
<span class="gi">+		hc-&gt;ep_type = DWC_OTG_EP_TYPE_INTR;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_ISOCHRONOUS:</span>
<span class="gi">+		{</span>
<span class="gi">+			struct usb_iso_packet_descriptor *frame_desc;</span>
<span class="gi">+			frame_desc = &amp;urb-&gt;iso_frame_desc[qtd-&gt;isoc_frame_index];</span>
<span class="gi">+			hc-&gt;ep_type = DWC_OTG_EP_TYPE_ISOC;</span>
<span class="gi">+			if (hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+				hc-&gt;xfer_buff = (uint8_t *)urb-&gt;transfer_dma;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				hc-&gt;xfer_buff = (uint8_t *)urb-&gt;transfer_buffer;</span>
<span class="gi">+			}</span>
<span class="gi">+			hc-&gt;xfer_buff += frame_desc-&gt;offset + qtd-&gt;isoc_split_offset;</span>
<span class="gi">+			hc-&gt;xfer_len = frame_desc-&gt;length - qtd-&gt;isoc_split_offset;</span>
<span class="gi">+</span>
<span class="gi">+			if (hc-&gt;xact_pos == DWC_HCSPLIT_XACTPOS_ALL) {</span>
<span class="gi">+				if (hc-&gt;xfer_len &lt;= 188) {</span>
<span class="gi">+					hc-&gt;xact_pos = DWC_HCSPLIT_XACTPOS_ALL;</span>
<span class="gi">+				}</span>
<span class="gi">+				else {</span>
<span class="gi">+					hc-&gt;xact_pos = DWC_HCSPLIT_XACTPOS_BEGIN;</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_INTR ||</span>
<span class="gi">+	    hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * This value may be modified when the transfer is started to</span>
<span class="gi">+		 * reflect the actual transfer length.</span>
<span class="gi">+		 */</span>
<span class="gi">+		hc-&gt;multi_count = dwc_hb_mult(qh-&gt;maxp);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_hc_init(hcd-&gt;core_if, hc);</span>
<span class="gi">+	hc-&gt;qh = qh;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function selects transactions from the HCD transfer schedule and</span>
<span class="gi">+ * assigns them to available host channels. It is called from HCD interrupt</span>
<span class="gi">+ * handler functions.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param hcd The HCD state structure.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return The types of new transactions that were assigned to host channels.</span>
<span class="gi">+ */</span>
<span class="gi">+dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	struct list_head 		*qh_ptr;</span>
<span class="gi">+	dwc_otg_qh_t 			*qh;</span>
<span class="gi">+	int				num_channels;</span>
<span class="gi">+	dwc_otg_transaction_type_e	ret_val = DWC_OTG_TRANSACTION_NONE;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG_SOF</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;  Select Transactions\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	/* Process entries in the periodic ready list. */</span>
<span class="gi">+	qh_ptr = hcd-&gt;periodic_sched_ready.next;</span>
<span class="gi">+	while (qh_ptr != &amp;hcd-&gt;periodic_sched_ready &amp;&amp;</span>
<span class="gi">+	       !list_empty(&amp;hcd-&gt;free_hc_list)) {</span>
<span class="gi">+</span>
<span class="gi">+		qh = list_entry(qh_ptr, dwc_otg_qh_t, qh_list_entry);</span>
<span class="gi">+		assign_and_init_hc(hcd, qh);</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Move the QH from the periodic ready schedule to the</span>
<span class="gi">+		 * periodic assigned schedule.</span>
<span class="gi">+		 */</span>
<span class="gi">+		qh_ptr = qh_ptr-&gt;next;</span>
<span class="gi">+		list_move(&amp;qh-&gt;qh_list_entry, &amp;hcd-&gt;periodic_sched_assigned);</span>
<span class="gi">+</span>
<span class="gi">+		ret_val = DWC_OTG_TRANSACTION_PERIODIC;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Process entries in the inactive portion of the non-periodic</span>
<span class="gi">+	 * schedule. Some free host channels may not be used if they are</span>
<span class="gi">+	 * reserved for periodic transfers.</span>
<span class="gi">+	 */</span>
<span class="gi">+	qh_ptr = hcd-&gt;non_periodic_sched_inactive.next;</span>
<span class="gi">+	num_channels = hcd-&gt;core_if-&gt;core_params-&gt;host_channels;</span>
<span class="gi">+	while (qh_ptr != &amp;hcd-&gt;non_periodic_sched_inactive &amp;&amp;</span>
<span class="gi">+	       (hcd-&gt;non_periodic_channels &lt;</span>
<span class="gi">+		num_channels - hcd-&gt;periodic_channels) &amp;&amp;</span>
<span class="gi">+	       !list_empty(&amp;hcd-&gt;free_hc_list)) {</span>
<span class="gi">+</span>
<span class="gi">+		qh = list_entry(qh_ptr, dwc_otg_qh_t, qh_list_entry);</span>
<span class="gi">+		assign_and_init_hc(hcd, qh);</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Move the QH from the non-periodic inactive schedule to the</span>
<span class="gi">+		 * non-periodic active schedule.</span>
<span class="gi">+		 */</span>
<span class="gi">+		qh_ptr = qh_ptr-&gt;next;</span>
<span class="gi">+		list_move(&amp;qh-&gt;qh_list_entry, &amp;hcd-&gt;non_periodic_sched_active);</span>
<span class="gi">+</span>
<span class="gi">+		if (ret_val == DWC_OTG_TRANSACTION_NONE) {</span>
<span class="gi">+			ret_val = DWC_OTG_TRANSACTION_NON_PERIODIC;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			ret_val = DWC_OTG_TRANSACTION_ALL;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		hcd-&gt;non_periodic_channels++;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return ret_val;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Attempts to queue a single transaction request for a host channel</span>
<span class="gi">+ * associated with either a periodic or non-periodic transfer. This function</span>
<span class="gi">+ * assumes that there is space available in the appropriate request queue. For</span>
<span class="gi">+ * an OUT transfer or SETUP transaction in Slave mode, it checks whether space</span>
<span class="gi">+ * is available in the appropriate Tx FIFO.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param hcd The HCD state structure.</span>
<span class="gi">+ * @param hc Host channel descriptor associated with either a periodic or</span>
<span class="gi">+ * non-periodic transfer.</span>
<span class="gi">+ * @param fifo_dwords_avail Number of DWORDs available in the periodic Tx</span>
<span class="gi">+ * FIFO for periodic transfers or the non-periodic Tx FIFO for non-periodic</span>
<span class="gi">+ * transfers.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return 1 if a request is queued and more requests may be needed to</span>
<span class="gi">+ * complete the transfer, 0 if no more requests are required for this</span>
<span class="gi">+ * transfer, -1 if there is insufficient space in the Tx FIFO.</span>
<span class="gi">+ */</span>
<span class="gi">+static int queue_transaction(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+			     dwc_hc_t *hc,</span>
<span class="gi">+			     uint16_t fifo_dwords_avail)</span>
<span class="gi">+{</span>
<span class="gi">+	int retval;</span>
<span class="gi">+</span>
<span class="gi">+	if (hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		if (!hc-&gt;xfer_started) {</span>
<span class="gi">+			dwc_otg_hc_start_transfer(hcd-&gt;core_if, hc);</span>
<span class="gi">+			hc-&gt;qh-&gt;ping_state = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+		retval = 0;</span>
<span class="gi">+	} else if (hc-&gt;halt_pending) {</span>
<span class="gi">+		/* Don&#39;t queue a request if the channel has been halted. */</span>
<span class="gi">+		retval = 0;</span>
<span class="gi">+	} else if (hc-&gt;halt_on_queue) {</span>
<span class="gi">+		dwc_otg_hc_halt(hcd-&gt;core_if, hc, hc-&gt;halt_status);</span>
<span class="gi">+		retval = 0;</span>
<span class="gi">+	} else if (hc-&gt;do_ping) {</span>
<span class="gi">+		if (!hc-&gt;xfer_started) {</span>
<span class="gi">+			dwc_otg_hc_start_transfer(hcd-&gt;core_if, hc);</span>
<span class="gi">+		}</span>
<span class="gi">+		retval = 0;</span>
<span class="gi">+	} else if (!hc-&gt;ep_is_in ||</span>
<span class="gi">+		   hc-&gt;data_pid_start == DWC_OTG_HC_PID_SETUP) {</span>
<span class="gi">+		if ((fifo_dwords_avail * 4) &gt;= hc-&gt;max_packet) {</span>
<span class="gi">+			if (!hc-&gt;xfer_started) {</span>
<span class="gi">+				dwc_otg_hc_start_transfer(hcd-&gt;core_if, hc);</span>
<span class="gi">+				retval = 1;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				retval = dwc_otg_hc_continue_transfer(hcd-&gt;core_if, hc);</span>
<span class="gi">+			}</span>
<span class="gi">+		} else {</span>
<span class="gi">+			retval = -1;</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		if (!hc-&gt;xfer_started) {</span>
<span class="gi">+			dwc_otg_hc_start_transfer(hcd-&gt;core_if, hc);</span>
<span class="gi">+			retval = 1;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			retval = dwc_otg_hc_continue_transfer(hcd-&gt;core_if, hc);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Processes active non-periodic channels and queues transactions for these</span>
<span class="gi">+ * channels to the DWC_otg controller. After queueing transactions, the NP Tx</span>
<span class="gi">+ * FIFO Empty interrupt is enabled if there are more transactions to queue as</span>
<span class="gi">+ * NP Tx FIFO or request queue space becomes available. Otherwise, the NP Tx</span>
<span class="gi">+ * FIFO Empty interrupt is disabled.</span>
<span class="gi">+ */</span>
<span class="gi">+static void process_non_periodic_channels(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	gnptxsts_data_t		tx_status;</span>
<span class="gi">+	struct list_head	*orig_qh_ptr;</span>
<span class="gi">+	dwc_otg_qh_t		*qh;</span>
<span class="gi">+	int			status;</span>
<span class="gi">+	int			no_queue_space = 0;</span>
<span class="gi">+	int			no_fifo_space = 0;</span>
<span class="gi">+	int			more_to_do = 0;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = hcd-&gt;core_if-&gt;core_global_regs;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;Queue non-periodic transactions\n&quot;);</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	tx_status.d32 = dwc_read_reg32(&amp;global_regs-&gt;gnptxsts);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;  NP Tx Req Queue Space Avail (before queue): %d\n&quot;,</span>
<span class="gi">+		    tx_status.b.nptxqspcavail);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;  NP Tx FIFO Space Avail (before queue): %d\n&quot;,</span>
<span class="gi">+		    tx_status.b.nptxfspcavail);</span>
<span class="gi">+#endif</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Keep track of the starting point. Skip over the start-of-list</span>
<span class="gi">+	 * entry.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (hcd-&gt;non_periodic_qh_ptr == &amp;hcd-&gt;non_periodic_sched_active) {</span>
<span class="gi">+		hcd-&gt;non_periodic_qh_ptr = hcd-&gt;non_periodic_qh_ptr-&gt;next;</span>
<span class="gi">+	}</span>
<span class="gi">+	orig_qh_ptr = hcd-&gt;non_periodic_qh_ptr;</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Process once through the active list or until no more space is</span>
<span class="gi">+	 * available in the request queue or the Tx FIFO.</span>
<span class="gi">+	 */</span>
<span class="gi">+	do {</span>
<span class="gi">+		tx_status.d32 = dwc_read_reg32(&amp;global_regs-&gt;gnptxsts);</span>
<span class="gi">+		if (!hcd-&gt;core_if-&gt;dma_enable &amp;&amp; tx_status.b.nptxqspcavail == 0) {</span>
<span class="gi">+			no_queue_space = 1;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		qh = list_entry(hcd-&gt;non_periodic_qh_ptr, dwc_otg_qh_t, qh_list_entry);</span>
<span class="gi">+		status = queue_transaction(hcd, qh-&gt;channel, tx_status.b.nptxfspcavail);</span>
<span class="gi">+</span>
<span class="gi">+		if (status &gt; 0) {</span>
<span class="gi">+			more_to_do = 1;</span>
<span class="gi">+		} else if (status &lt; 0) {</span>
<span class="gi">+			no_fifo_space = 1;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/* Advance to next QH, skipping start-of-list entry. */</span>
<span class="gi">+		hcd-&gt;non_periodic_qh_ptr = hcd-&gt;non_periodic_qh_ptr-&gt;next;</span>
<span class="gi">+		if (hcd-&gt;non_periodic_qh_ptr == &amp;hcd-&gt;non_periodic_sched_active) {</span>
<span class="gi">+			hcd-&gt;non_periodic_qh_ptr = hcd-&gt;non_periodic_qh_ptr-&gt;next;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+	} while (hcd-&gt;non_periodic_qh_ptr != orig_qh_ptr);</span>
<span class="gi">+</span>
<span class="gi">+	if (!hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		gintmsk_data_t intr_mask = {.d32 = 0};</span>
<span class="gi">+		intr_mask.b.nptxfempty = 1;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+		tx_status.d32 = dwc_read_reg32(&amp;global_regs-&gt;gnptxsts);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  NP Tx Req Queue Space Avail (after queue): %d\n&quot;,</span>
<span class="gi">+			    tx_status.b.nptxqspcavail);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  NP Tx FIFO Space Avail (after queue): %d\n&quot;,</span>
<span class="gi">+			    tx_status.b.nptxfspcavail);</span>
<span class="gi">+#endif</span>
<span class="gi">+		if (more_to_do || no_queue_space || no_fifo_space) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * May need to queue more transactions as the request</span>
<span class="gi">+			 * queue or Tx FIFO empties. Enable the non-periodic</span>
<span class="gi">+			 * Tx FIFO empty interrupt. (Always use the half-empty</span>
<span class="gi">+			 * level to ensure that new requests are loaded as</span>
<span class="gi">+			 * soon as possible.)</span>
<span class="gi">+			 */</span>
<span class="gi">+			dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, 0, intr_mask.d32);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Disable the Tx FIFO empty interrupt since there are</span>
<span class="gi">+			 * no more transactions that need to be queued right</span>
<span class="gi">+			 * now. This function is called from interrupt</span>
<span class="gi">+			 * handlers to queue more transactions as transfer</span>
<span class="gi">+			 * states change.</span>
<span class="gi">+			 */</span>
<span class="gi">+			dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, intr_mask.d32, 0);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Processes periodic channels for the next frame and queues transactions for</span>
<span class="gi">+ * these channels to the DWC_otg controller. After queueing transactions, the</span>
<span class="gi">+ * Periodic Tx FIFO Empty interrupt is enabled if there are more transactions</span>
<span class="gi">+ * to queue as Periodic Tx FIFO or request queue space becomes available.</span>
<span class="gi">+ * Otherwise, the Periodic Tx FIFO Empty interrupt is disabled.</span>
<span class="gi">+ */</span>
<span class="gi">+static void process_periodic_channels(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	hptxsts_data_t		tx_status;</span>
<span class="gi">+	struct list_head	*qh_ptr;</span>
<span class="gi">+	dwc_otg_qh_t		*qh;</span>
<span class="gi">+	int			status;</span>
<span class="gi">+	int 			no_queue_space = 0;</span>
<span class="gi">+	int			no_fifo_space = 0;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_host_global_regs_t *host_regs;</span>
<span class="gi">+	host_regs = hcd-&gt;core_if-&gt;host_if-&gt;host_global_regs;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;Queue periodic transactions\n&quot;);</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	tx_status.d32 = dwc_read_reg32(&amp;host_regs-&gt;hptxsts);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;  P Tx Req Queue Space Avail (before queue): %d\n&quot;,</span>
<span class="gi">+		    tx_status.b.ptxqspcavail);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;  P Tx FIFO Space Avail (before queue): %d\n&quot;,</span>
<span class="gi">+		    tx_status.b.ptxfspcavail);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	qh_ptr = hcd-&gt;periodic_sched_assigned.next;</span>
<span class="gi">+	while (qh_ptr != &amp;hcd-&gt;periodic_sched_assigned) {</span>
<span class="gi">+		tx_status.d32 = dwc_read_reg32(&amp;host_regs-&gt;hptxsts);</span>
<span class="gi">+		if (tx_status.b.ptxqspcavail == 0) {</span>
<span class="gi">+			no_queue_space = 1;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		qh = list_entry(qh_ptr, dwc_otg_qh_t, qh_list_entry);</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Set a flag if we&#39;re queuing high-bandwidth in slave mode.</span>
<span class="gi">+		 * The flag prevents any halts to get into the request queue in</span>
<span class="gi">+		 * the middle of multiple high-bandwidth packets getting queued.</span>
<span class="gi">+		 */</span>
<span class="gi">+		if (!hcd-&gt;core_if-&gt;dma_enable &amp;&amp;</span>
<span class="gi">+		    qh-&gt;channel-&gt;multi_count &gt; 1)</span>
<span class="gi">+		{</span>
<span class="gi">+			hcd-&gt;core_if-&gt;queuing_high_bandwidth = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		status = queue_transaction(hcd, qh-&gt;channel, tx_status.b.ptxfspcavail);</span>
<span class="gi">+		if (status &lt; 0) {</span>
<span class="gi">+			no_fifo_space = 1;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * In Slave mode, stay on the current transfer until there is</span>
<span class="gi">+		 * nothing more to do or the high-bandwidth request count is</span>
<span class="gi">+		 * reached. In DMA mode, only need to queue one request. The</span>
<span class="gi">+		 * controller automatically handles multiple packets for</span>
<span class="gi">+		 * high-bandwidth transfers.</span>
<span class="gi">+		 */</span>
<span class="gi">+		if (hcd-&gt;core_if-&gt;dma_enable || status == 0 ||</span>
<span class="gi">+		    qh-&gt;channel-&gt;requests == qh-&gt;channel-&gt;multi_count) {</span>
<span class="gi">+			qh_ptr = qh_ptr-&gt;next;</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Move the QH from the periodic assigned schedule to</span>
<span class="gi">+			 * the periodic queued schedule.</span>
<span class="gi">+			 */</span>
<span class="gi">+			list_move(&amp;qh-&gt;qh_list_entry, &amp;hcd-&gt;periodic_sched_queued);</span>
<span class="gi">+</span>
<span class="gi">+			/* done queuing high bandwidth */</span>
<span class="gi">+			hcd-&gt;core_if-&gt;queuing_high_bandwidth = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (!hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		dwc_otg_core_global_regs_t *global_regs;</span>
<span class="gi">+		gintmsk_data_t intr_mask = {.d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+		global_regs = hcd-&gt;core_if-&gt;core_global_regs;</span>
<span class="gi">+		intr_mask.b.ptxfempty = 1;</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+		tx_status.d32 = dwc_read_reg32(&amp;host_regs-&gt;hptxsts);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  P Tx Req Queue Space Avail (after queue): %d\n&quot;,</span>
<span class="gi">+			    tx_status.b.ptxqspcavail);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  P Tx FIFO Space Avail (after queue): %d\n&quot;,</span>
<span class="gi">+			    tx_status.b.ptxfspcavail);</span>
<span class="gi">+#endif</span>
<span class="gi">+		if (!list_empty(&amp;hcd-&gt;periodic_sched_assigned) ||</span>
<span class="gi">+		    no_queue_space || no_fifo_space) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * May need to queue more transactions as the request</span>
<span class="gi">+			 * queue or Tx FIFO empties. Enable the periodic Tx</span>
<span class="gi">+			 * FIFO empty interrupt. (Always use the half-empty</span>
<span class="gi">+			 * level to ensure that new requests are loaded as</span>
<span class="gi">+			 * soon as possible.)</span>
<span class="gi">+			 */</span>
<span class="gi">+			dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, 0, intr_mask.d32);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Disable the Tx FIFO empty interrupt since there are</span>
<span class="gi">+			 * no more transactions that need to be queued right</span>
<span class="gi">+			 * now. This function is called from interrupt</span>
<span class="gi">+			 * handlers to queue more transactions as transfer</span>
<span class="gi">+			 * states change.</span>
<span class="gi">+			 */</span>
<span class="gi">+			dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, intr_mask.d32, 0);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function processes the currently active host channels and queues</span>
<span class="gi">+ * transactions for these channels to the DWC_otg controller. It is called</span>
<span class="gi">+ * from HCD interrupt handler functions.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param hcd The HCD state structure.</span>
<span class="gi">+ * @param tr_type The type(s) of transactions to queue (non-periodic,</span>
<span class="gi">+ * periodic, or both).</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hcd_queue_transactions(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				    dwc_otg_transaction_type_e tr_type)</span>
<span class="gi">+{</span>
<span class="gi">+#ifdef DEBUG_SOF</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;Queue Transactions\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+	/* Process host channels associated with periodic transfers. */</span>
<span class="gi">+	if ((tr_type == DWC_OTG_TRANSACTION_PERIODIC ||</span>
<span class="gi">+	     tr_type == DWC_OTG_TRANSACTION_ALL) &amp;&amp;</span>
<span class="gi">+	    !list_empty(&amp;hcd-&gt;periodic_sched_assigned)) {</span>
<span class="gi">+</span>
<span class="gi">+		process_periodic_channels(hcd);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Process host channels associated with non-periodic transfers. */</span>
<span class="gi">+	if (tr_type == DWC_OTG_TRANSACTION_NON_PERIODIC ||</span>
<span class="gi">+	    tr_type == DWC_OTG_TRANSACTION_ALL) {</span>
<span class="gi">+		if (!list_empty(&amp;hcd-&gt;non_periodic_sched_active)) {</span>
<span class="gi">+			process_non_periodic_channels(hcd);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Ensure NP Tx FIFO empty interrupt is disabled when</span>
<span class="gi">+			 * there are no non-periodic transfers to process.</span>
<span class="gi">+			 */</span>
<span class="gi">+			gintmsk_data_t gintmsk = {.d32 = 0};</span>
<span class="gi">+			gintmsk.b.nptxfempty = 1;</span>
<span class="gi">+			dwc_modify_reg32(&amp;hcd-&gt;core_if-&gt;core_global_regs-&gt;gintmsk,</span>
<span class="gi">+					 gintmsk.d32, 0);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Sets the final status of an URB and returns it to the device driver. Any</span>
<span class="gi">+ * required cleanup of the URB is performed.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hcd_complete_urb(dwc_otg_hcd_t *hcd, struct urb *urb, int status)</span>
<span class="gi">+{</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	if (CHK_DEBUG_LEVEL(DBG_HCDV | DBG_HCD_URB)) {</span>
<span class="gi">+		DWC_PRINT(&quot;%s: urb %p, device %d, ep %d %s, status=%d\n&quot;,</span>
<span class="gi">+			  __func__, urb, usb_pipedevice(urb-&gt;pipe),</span>
<span class="gi">+			  usb_pipeendpoint(urb-&gt;pipe),</span>
<span class="gi">+			  usb_pipein(urb-&gt;pipe) ? &quot;IN&quot; : &quot;OUT&quot;, status);</span>
<span class="gi">+		if (usb_pipetype(urb-&gt;pipe) == PIPE_ISOCHRONOUS) {</span>
<span class="gi">+			int i;</span>
<span class="gi">+			for (i = 0; i &lt; urb-&gt;number_of_packets; i++) {</span>
<span class="gi">+				DWC_PRINT(&quot;  ISO Desc %d status: %d\n&quot;,</span>
<span class="gi">+					  i, urb-&gt;iso_frame_desc[i].status);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	//if we use the aligned buffer instead of the original unaligned buffer, </span>
<span class="gi">+	//for IN data, we have to move the data to the original buffer</span>
<span class="gi">+	if((urb-&gt;transfer_dma==urb-&gt;aligned_transfer_dma)&amp;&amp;((urb-&gt;transfer_flags &amp; URB_DIR_MASK)==URB_DIR_IN)){</span>
<span class="gi">+		dma_sync_single_for_device(NULL,urb-&gt;transfer_dma,urb-&gt;actual_length,DMA_FROM_DEVICE);</span>
<span class="gi">+		memcpy(urb-&gt;transfer_buffer,urb-&gt;aligned_transfer_buffer,urb-&gt;actual_length);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	urb-&gt;status = status;</span>
<span class="gi">+	urb-&gt;hcpriv = NULL;</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	usb_hcd_giveback_urb(dwc_otg_hcd_to_hcd(hcd), urb, status);</span>
<span class="gi">+#else</span>
<span class="gi">+	usb_hcd_giveback_urb(dwc_otg_hcd_to_hcd(hcd), urb, NULL);</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * Returns the Queue Head for an URB.</span>
<span class="gi">+ */</span>
<span class="gi">+dwc_otg_qh_t *dwc_urb_to_qh(struct urb *urb)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_host_endpoint *ep = dwc_urb_to_endpoint(urb);</span>
<span class="gi">+	return (dwc_otg_qh_t *)ep-&gt;hcpriv;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+void dwc_print_setup_data(uint8_t *setup)</span>
<span class="gi">+{</span>
<span class="gi">+	int i;</span>
<span class="gi">+	if (CHK_DEBUG_LEVEL(DBG_HCD)){</span>
<span class="gi">+		DWC_PRINT(&quot;Setup Data = MSB &quot;);</span>
<span class="gi">+		for (i = 7; i &gt;= 0; i--) DWC_PRINT(&quot;%02x &quot;, setup[i]);</span>
<span class="gi">+		DWC_PRINT(&quot;\n&quot;);</span>
<span class="gi">+		DWC_PRINT(&quot;  bmRequestType Tranfer = %s\n&quot;, (setup[0] &amp; 0x80) ? &quot;Device-to-Host&quot; : &quot;Host-to-Device&quot;);</span>
<span class="gi">+		DWC_PRINT(&quot;  bmRequestType Type = &quot;);</span>
<span class="gi">+		switch ((setup[0] &amp; 0x60) &gt;&gt; 5) {</span>
<span class="gi">+		case 0: DWC_PRINT(&quot;Standard\n&quot;); break;</span>
<span class="gi">+		case 1:	DWC_PRINT(&quot;Class\n&quot;); break;</span>
<span class="gi">+		case 2:	DWC_PRINT(&quot;Vendor\n&quot;); break;</span>
<span class="gi">+		case 3: DWC_PRINT(&quot;Reserved\n&quot;); break;</span>
<span class="gi">+		}</span>
<span class="gi">+		DWC_PRINT(&quot;  bmRequestType Recipient = &quot;);</span>
<span class="gi">+		switch (setup[0] &amp; 0x1f) {</span>
<span class="gi">+		case 0: DWC_PRINT(&quot;Device\n&quot;); break;</span>
<span class="gi">+		case 1: DWC_PRINT(&quot;Interface\n&quot;); break;</span>
<span class="gi">+		case 2: DWC_PRINT(&quot;Endpoint\n&quot;); break;</span>
<span class="gi">+		case 3: DWC_PRINT(&quot;Other\n&quot;); break;</span>
<span class="gi">+		default: DWC_PRINT(&quot;Reserved\n&quot;); break;</span>
<span class="gi">+		}</span>
<span class="gi">+		DWC_PRINT(&quot;  bRequest = 0x%0x\n&quot;, setup[1]);</span>
<span class="gi">+		DWC_PRINT(&quot;  wValue = 0x%0x\n&quot;, *((uint16_t *)&amp;setup[2]));</span>
<span class="gi">+		DWC_PRINT(&quot;  wIndex = 0x%0x\n&quot;, *((uint16_t *)&amp;setup[4]));</span>
<span class="gi">+		DWC_PRINT(&quot;  wLength = 0x%0x\n\n&quot;, *((uint16_t *)&amp;setup[6]));</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+void dwc_otg_hcd_dump_frrem(dwc_otg_hcd_t *hcd) {</span>
<span class="gi">+#if defined(DEBUG) &amp;&amp; LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	DWC_PRINT(&quot;Frame remaining at SOF:\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  samples %u, accum %llu, avg %llu\n&quot;,</span>
<span class="gi">+		  hcd-&gt;frrem_samples, hcd-&gt;frrem_accum,</span>
<span class="gi">+		  (hcd-&gt;frrem_samples &gt; 0) ?</span>
<span class="gi">+		  hcd-&gt;frrem_accum/hcd-&gt;frrem_samples : 0);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;Frame remaining at start_transfer (uframe 7):\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  samples %u, accum %llu, avg %llu\n&quot;,</span>
<span class="gi">+		  hcd-&gt;core_if-&gt;hfnum_7_samples, hcd-&gt;core_if-&gt;hfnum_7_frrem_accum,</span>
<span class="gi">+		  (hcd-&gt;core_if-&gt;hfnum_7_samples &gt; 0) ?</span>
<span class="gi">+		  hcd-&gt;core_if-&gt;hfnum_7_frrem_accum/hcd-&gt;core_if-&gt;hfnum_7_samples : 0);</span>
<span class="gi">+	DWC_PRINT(&quot;Frame remaining at start_transfer (uframe 0):\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  samples %u, accum %llu, avg %llu\n&quot;,</span>
<span class="gi">+		  hcd-&gt;core_if-&gt;hfnum_0_samples, hcd-&gt;core_if-&gt;hfnum_0_frrem_accum,</span>
<span class="gi">+		  (hcd-&gt;core_if-&gt;hfnum_0_samples &gt; 0) ?</span>
<span class="gi">+		  hcd-&gt;core_if-&gt;hfnum_0_frrem_accum/hcd-&gt;core_if-&gt;hfnum_0_samples : 0);</span>
<span class="gi">+	DWC_PRINT(&quot;Frame remaining at start_transfer (uframe 1-6):\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  samples %u, accum %llu, avg %llu\n&quot;,</span>
<span class="gi">+		  hcd-&gt;core_if-&gt;hfnum_other_samples, hcd-&gt;core_if-&gt;hfnum_other_frrem_accum,</span>
<span class="gi">+		  (hcd-&gt;core_if-&gt;hfnum_other_samples &gt; 0) ?</span>
<span class="gi">+		  hcd-&gt;core_if-&gt;hfnum_other_frrem_accum/hcd-&gt;core_if-&gt;hfnum_other_samples : 0);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;Frame remaining at sample point A (uframe 7):\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  samples %u, accum %llu, avg %llu\n&quot;,</span>
<span class="gi">+		  hcd-&gt;hfnum_7_samples_a, hcd-&gt;hfnum_7_frrem_accum_a,</span>
<span class="gi">+		  (hcd-&gt;hfnum_7_samples_a &gt; 0) ?</span>
<span class="gi">+		  hcd-&gt;hfnum_7_frrem_accum_a/hcd-&gt;hfnum_7_samples_a : 0);</span>
<span class="gi">+	DWC_PRINT(&quot;Frame remaining at sample point A (uframe 0):\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  samples %u, accum %llu, avg %llu\n&quot;,</span>
<span class="gi">+		  hcd-&gt;hfnum_0_samples_a, hcd-&gt;hfnum_0_frrem_accum_a,</span>
<span class="gi">+		  (hcd-&gt;hfnum_0_samples_a &gt; 0) ?</span>
<span class="gi">+		  hcd-&gt;hfnum_0_frrem_accum_a/hcd-&gt;hfnum_0_samples_a : 0);</span>
<span class="gi">+	DWC_PRINT(&quot;Frame remaining at sample point A (uframe 1-6):\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  samples %u, accum %llu, avg %llu\n&quot;,</span>
<span class="gi">+		  hcd-&gt;hfnum_other_samples_a, hcd-&gt;hfnum_other_frrem_accum_a,</span>
<span class="gi">+		  (hcd-&gt;hfnum_other_samples_a &gt; 0) ?</span>
<span class="gi">+		  hcd-&gt;hfnum_other_frrem_accum_a/hcd-&gt;hfnum_other_samples_a : 0);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;Frame remaining at sample point B (uframe 7):\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  samples %u, accum %llu, avg %llu\n&quot;,</span>
<span class="gi">+		  hcd-&gt;hfnum_7_samples_b, hcd-&gt;hfnum_7_frrem_accum_b,</span>
<span class="gi">+		  (hcd-&gt;hfnum_7_samples_b &gt; 0) ?</span>
<span class="gi">+		  hcd-&gt;hfnum_7_frrem_accum_b/hcd-&gt;hfnum_7_samples_b : 0);</span>
<span class="gi">+	DWC_PRINT(&quot;Frame remaining at sample point B (uframe 0):\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  samples %u, accum %llu, avg %llu\n&quot;,</span>
<span class="gi">+		  hcd-&gt;hfnum_0_samples_b, hcd-&gt;hfnum_0_frrem_accum_b,</span>
<span class="gi">+		  (hcd-&gt;hfnum_0_samples_b &gt; 0) ?</span>
<span class="gi">+		  hcd-&gt;hfnum_0_frrem_accum_b/hcd-&gt;hfnum_0_samples_b : 0);</span>
<span class="gi">+	DWC_PRINT(&quot;Frame remaining at sample point B (uframe 1-6):\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  samples %u, accum %llu, avg %llu\n&quot;,</span>
<span class="gi">+		  hcd-&gt;hfnum_other_samples_b, hcd-&gt;hfnum_other_frrem_accum_b,</span>
<span class="gi">+		  (hcd-&gt;hfnum_other_samples_b &gt; 0) ?</span>
<span class="gi">+		  hcd-&gt;hfnum_other_frrem_accum_b/hcd-&gt;hfnum_other_samples_b : 0);</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+void dwc_otg_hcd_dump_state(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	int num_channels;</span>
<span class="gi">+	int i;</span>
<span class="gi">+	gnptxsts_data_t	np_tx_status;</span>
<span class="gi">+	hptxsts_data_t p_tx_status;</span>
<span class="gi">+</span>
<span class="gi">+	num_channels = hcd-&gt;core_if-&gt;core_params-&gt;host_channels;</span>
<span class="gi">+	DWC_PRINT(&quot;\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;************************************************************\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;HCD State:\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;  Num channels: %d\n&quot;, num_channels);</span>
<span class="gi">+	for (i = 0; i &lt; num_channels; i++) {</span>
<span class="gi">+		dwc_hc_t *hc = hcd-&gt;hc_ptr_array[i];</span>
<span class="gi">+		DWC_PRINT(&quot;  Channel %d:\n&quot;, i);</span>
<span class="gi">+		DWC_PRINT(&quot;    dev_addr: %d, ep_num: %d, ep_is_in: %d\n&quot;,</span>
<span class="gi">+			  hc-&gt;dev_addr, hc-&gt;ep_num, hc-&gt;ep_is_in);</span>
<span class="gi">+		DWC_PRINT(&quot;    speed: %d\n&quot;, hc-&gt;speed);</span>
<span class="gi">+		DWC_PRINT(&quot;    ep_type: %d\n&quot;, hc-&gt;ep_type);</span>
<span class="gi">+		DWC_PRINT(&quot;    max_packet: %d\n&quot;, hc-&gt;max_packet);</span>
<span class="gi">+		DWC_PRINT(&quot;    data_pid_start: %d\n&quot;, hc-&gt;data_pid_start);</span>
<span class="gi">+		DWC_PRINT(&quot;    multi_count: %d\n&quot;, hc-&gt;multi_count);</span>
<span class="gi">+		DWC_PRINT(&quot;    xfer_started: %d\n&quot;, hc-&gt;xfer_started);</span>
<span class="gi">+		DWC_PRINT(&quot;    xfer_buff: %p\n&quot;, hc-&gt;xfer_buff);</span>
<span class="gi">+		DWC_PRINT(&quot;    xfer_len: %d\n&quot;, hc-&gt;xfer_len);</span>
<span class="gi">+		DWC_PRINT(&quot;    xfer_count: %d\n&quot;, hc-&gt;xfer_count);</span>
<span class="gi">+		DWC_PRINT(&quot;    halt_on_queue: %d\n&quot;, hc-&gt;halt_on_queue);</span>
<span class="gi">+		DWC_PRINT(&quot;    halt_pending: %d\n&quot;, hc-&gt;halt_pending);</span>
<span class="gi">+		DWC_PRINT(&quot;    halt_status: %d\n&quot;, hc-&gt;halt_status);</span>
<span class="gi">+		DWC_PRINT(&quot;    do_split: %d\n&quot;, hc-&gt;do_split);</span>
<span class="gi">+		DWC_PRINT(&quot;    complete_split: %d\n&quot;, hc-&gt;complete_split);</span>
<span class="gi">+		DWC_PRINT(&quot;    hub_addr: %d\n&quot;, hc-&gt;hub_addr);</span>
<span class="gi">+		DWC_PRINT(&quot;    port_addr: %d\n&quot;, hc-&gt;port_addr);</span>
<span class="gi">+		DWC_PRINT(&quot;    xact_pos: %d\n&quot;, hc-&gt;xact_pos);</span>
<span class="gi">+		DWC_PRINT(&quot;    requests: %d\n&quot;, hc-&gt;requests);</span>
<span class="gi">+		DWC_PRINT(&quot;    qh: %p\n&quot;, hc-&gt;qh);</span>
<span class="gi">+		if (hc-&gt;xfer_started) {</span>
<span class="gi">+			hfnum_data_t hfnum;</span>
<span class="gi">+			hcchar_data_t hcchar;</span>
<span class="gi">+			hctsiz_data_t hctsiz;</span>
<span class="gi">+			hcint_data_t hcint;</span>
<span class="gi">+			hcintmsk_data_t hcintmsk;</span>
<span class="gi">+			hfnum.d32 = dwc_read_reg32(&amp;hcd-&gt;core_if-&gt;host_if-&gt;host_global_regs-&gt;hfnum);</span>
<span class="gi">+			hcchar.d32 = dwc_read_reg32(&amp;hcd-&gt;core_if-&gt;host_if-&gt;hc_regs[i]-&gt;hcchar);</span>
<span class="gi">+			hctsiz.d32 = dwc_read_reg32(&amp;hcd-&gt;core_if-&gt;host_if-&gt;hc_regs[i]-&gt;hctsiz);</span>
<span class="gi">+			hcint.d32 = dwc_read_reg32(&amp;hcd-&gt;core_if-&gt;host_if-&gt;hc_regs[i]-&gt;hcint);</span>
<span class="gi">+			hcintmsk.d32 = dwc_read_reg32(&amp;hcd-&gt;core_if-&gt;host_if-&gt;hc_regs[i]-&gt;hcintmsk);</span>
<span class="gi">+			DWC_PRINT(&quot;    hfnum: 0x%08x\n&quot;, hfnum.d32);</span>
<span class="gi">+			DWC_PRINT(&quot;    hcchar: 0x%08x\n&quot;, hcchar.d32);</span>
<span class="gi">+			DWC_PRINT(&quot;    hctsiz: 0x%08x\n&quot;, hctsiz.d32);</span>
<span class="gi">+			DWC_PRINT(&quot;    hcint: 0x%08x\n&quot;, hcint.d32);</span>
<span class="gi">+			DWC_PRINT(&quot;    hcintmsk: 0x%08x\n&quot;, hcintmsk.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (hc-&gt;xfer_started &amp;&amp; hc-&gt;qh &amp;&amp; hc-&gt;qh-&gt;qtd_in_process) {</span>
<span class="gi">+			dwc_otg_qtd_t *qtd;</span>
<span class="gi">+			struct urb *urb;</span>
<span class="gi">+			qtd = hc-&gt;qh-&gt;qtd_in_process;</span>
<span class="gi">+			urb = qtd-&gt;urb;</span>
<span class="gi">+			DWC_PRINT(&quot;    URB Info:\n&quot;);</span>
<span class="gi">+			DWC_PRINT(&quot;      qtd: %p, urb: %p\n&quot;, qtd, urb);</span>
<span class="gi">+			if (urb) {</span>
<span class="gi">+				DWC_PRINT(&quot;      Dev: %d, EP: %d %s\n&quot;,</span>
<span class="gi">+					  usb_pipedevice(urb-&gt;pipe), usb_pipeendpoint(urb-&gt;pipe),</span>
<span class="gi">+					  usb_pipein(urb-&gt;pipe) ? &quot;IN&quot; : &quot;OUT&quot;);</span>
<span class="gi">+				DWC_PRINT(&quot;      Max packet size: %d\n&quot;,</span>
<span class="gi">+					  usb_maxpacket(urb-&gt;dev, urb-&gt;pipe, usb_pipeout(urb-&gt;pipe)));</span>
<span class="gi">+				DWC_PRINT(&quot;      transfer_buffer: %p\n&quot;, urb-&gt;transfer_buffer);</span>
<span class="gi">+				DWC_PRINT(&quot;      transfer_dma: %p\n&quot;, (void *)urb-&gt;transfer_dma);</span>
<span class="gi">+				DWC_PRINT(&quot;      transfer_buffer_length: %d\n&quot;, urb-&gt;transfer_buffer_length);</span>
<span class="gi">+				DWC_PRINT(&quot;      actual_length: %d\n&quot;, urb-&gt;actual_length);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	DWC_PRINT(&quot;  non_periodic_channels: %d\n&quot;, hcd-&gt;non_periodic_channels);</span>
<span class="gi">+	DWC_PRINT(&quot;  periodic_channels: %d\n&quot;, hcd-&gt;periodic_channels);</span>
<span class="gi">+	DWC_PRINT(&quot;  periodic_usecs: %d\n&quot;, hcd-&gt;periodic_usecs);</span>
<span class="gi">+	np_tx_status.d32 = dwc_read_reg32(&amp;hcd-&gt;core_if-&gt;core_global_regs-&gt;gnptxsts);</span>
<span class="gi">+	DWC_PRINT(&quot;  NP Tx Req Queue Space Avail: %d\n&quot;, np_tx_status.b.nptxqspcavail);</span>
<span class="gi">+	DWC_PRINT(&quot;  NP Tx FIFO Space Avail: %d\n&quot;, np_tx_status.b.nptxfspcavail);</span>
<span class="gi">+	p_tx_status.d32 = dwc_read_reg32(&amp;hcd-&gt;core_if-&gt;host_if-&gt;host_global_regs-&gt;hptxsts);</span>
<span class="gi">+	DWC_PRINT(&quot;  P Tx Req Queue Space Avail: %d\n&quot;, p_tx_status.b.ptxqspcavail);</span>
<span class="gi">+	DWC_PRINT(&quot;  P Tx FIFO Space Avail: %d\n&quot;, p_tx_status.b.ptxfspcavail);</span>
<span class="gi">+	dwc_otg_hcd_dump_frrem(hcd);</span>
<span class="gi">+	dwc_otg_dump_global_registers(hcd-&gt;core_if);</span>
<span class="gi">+	dwc_otg_dump_host_registers(hcd-&gt;core_if);</span>
<span class="gi">+	DWC_PRINT(&quot;************************************************************\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+#endif /* DWC_DEVICE_ONLY */</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_hcd.h</span>
<span class="gu">@@ -0,0 +1,663 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd.h $</span>
<span class="gi">+ * $Revision: #45 $</span>
<span class="gi">+ * $Date: 2008/07/15 $</span>
<span class="gi">+ * $Change: 1064918 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ *</span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+#ifndef DWC_DEVICE_ONLY</span>
<span class="gi">+#ifndef __DWC_HCD_H__</span>
<span class="gi">+#define __DWC_HCD_H__</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/list.h&gt;</span>
<span class="gi">+#include &lt;linux/usb.h&gt;</span>
<span class="gi">+#include &lt;../drivers/usb/core/hcd.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+struct lm_device;</span>
<span class="gi">+struct dwc_otg_device;</span>
<span class="gi">+</span>
<span class="gi">+#include &quot;dwc_otg_cil.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @file</span>
<span class="gi">+ *</span>
<span class="gi">+ * This file contains the structures, constants, and interfaces for</span>
<span class="gi">+ * the Host Contoller Driver (HCD).</span>
<span class="gi">+ *</span>
<span class="gi">+ * The Host Controller Driver (HCD) is responsible for translating requests</span>
<span class="gi">+ * from the USB Driver into the appropriate actions on the DWC_otg controller.</span>
<span class="gi">+ * It isolates the USBD from the specifics of the controller by providing an</span>
<span class="gi">+ * API to the USBD.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Phases for control transfers.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef enum dwc_otg_control_phase {</span>
<span class="gi">+	DWC_OTG_CONTROL_SETUP,</span>
<span class="gi">+	DWC_OTG_CONTROL_DATA,</span>
<span class="gi">+	DWC_OTG_CONTROL_STATUS</span>
<span class="gi">+} dwc_otg_control_phase_e;</span>
<span class="gi">+</span>
<span class="gi">+/** Transaction types. */</span>
<span class="gi">+typedef enum dwc_otg_transaction_type {</span>
<span class="gi">+	DWC_OTG_TRANSACTION_NONE,</span>
<span class="gi">+	DWC_OTG_TRANSACTION_PERIODIC,</span>
<span class="gi">+	DWC_OTG_TRANSACTION_NON_PERIODIC,</span>
<span class="gi">+	DWC_OTG_TRANSACTION_ALL</span>
<span class="gi">+} dwc_otg_transaction_type_e;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * A Queue Transfer Descriptor (QTD) holds the state of a bulk, control,</span>
<span class="gi">+ * interrupt, or isochronous transfer. A single QTD is created for each URB</span>
<span class="gi">+ * (of one of these types) submitted to the HCD. The transfer associated with</span>
<span class="gi">+ * a QTD may require one or multiple transactions.</span>
<span class="gi">+ *</span>
<span class="gi">+ * A QTD is linked to a Queue Head, which is entered in either the</span>
<span class="gi">+ * non-periodic or periodic schedule for execution. When a QTD is chosen for</span>
<span class="gi">+ * execution, some or all of its transactions may be executed. After</span>
<span class="gi">+ * execution, the state of the QTD is updated. The QTD may be retired if all</span>
<span class="gi">+ * its transactions are complete or if an error occurred. Otherwise, it</span>
<span class="gi">+ * remains in the schedule so more transactions can be executed later.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_qtd {</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Determines the PID of the next data packet for the data phase of</span>
<span class="gi">+	 * control transfers. Ignored for other transfer types.&lt;br&gt;</span>
<span class="gi">+	 * One of the following values:</span>
<span class="gi">+	 *	- DWC_OTG_HC_PID_DATA0</span>
<span class="gi">+	 *	- DWC_OTG_HC_PID_DATA1</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t			data_toggle;</span>
<span class="gi">+</span>
<span class="gi">+	/** Current phase for control transfers (Setup, Data, or Status). */</span>
<span class="gi">+	dwc_otg_control_phase_e	control_phase;</span>
<span class="gi">+</span>
<span class="gi">+	/** Keep track of the current split type</span>
<span class="gi">+	 * for FS/LS endpoints on a HS Hub */</span>
<span class="gi">+	uint8_t			complete_split;</span>
<span class="gi">+</span>
<span class="gi">+	/** How many bytes transferred during SSPLIT OUT */</span>
<span class="gi">+	uint32_t		ssplit_out_xfer_count;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Holds the number of bus errors that have occurred for a transaction</span>
<span class="gi">+	 * within this transfer.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t			error_count;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Index of the next frame descriptor for an isochronous transfer. A</span>
<span class="gi">+	 * frame descriptor describes the buffer position and length of the</span>
<span class="gi">+	 * data to be transferred in the next scheduled (micro)frame of an</span>
<span class="gi">+	 * isochronous transfer. It also holds status for that transaction.</span>
<span class="gi">+	 * The frame index starts at 0.</span>
<span class="gi">+	 */</span>
<span class="gi">+	int			isoc_frame_index;</span>
<span class="gi">+</span>
<span class="gi">+	/** Position of the ISOC split on full/low speed */</span>
<span class="gi">+	uint8_t			isoc_split_pos;</span>
<span class="gi">+</span>
<span class="gi">+	/** Position of the ISOC split in the buffer for the current frame */</span>
<span class="gi">+	uint16_t		isoc_split_offset;</span>
<span class="gi">+</span>
<span class="gi">+	/** URB for this transfer */</span>
<span class="gi">+	struct urb		*urb;</span>
<span class="gi">+</span>
<span class="gi">+	/** This list of QTDs */</span>
<span class="gi">+	struct list_head	qtd_list_entry;</span>
<span class="gi">+</span>
<span class="gi">+} dwc_otg_qtd_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * A Queue Head (QH) holds the static characteristics of an endpoint and</span>
<span class="gi">+ * maintains a list of transfers (QTDs) for that endpoint. A QH structure may</span>
<span class="gi">+ * be entered in either the non-periodic or periodic schedule.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_qh {</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Endpoint type.</span>
<span class="gi">+	 * One of the following values:</span>
<span class="gi">+	 *	- USB_ENDPOINT_XFER_CONTROL</span>
<span class="gi">+	 *	- USB_ENDPOINT_XFER_ISOC</span>
<span class="gi">+	 *	- USB_ENDPOINT_XFER_BULK</span>
<span class="gi">+	 *	- USB_ENDPOINT_XFER_INT</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t			ep_type;</span>
<span class="gi">+	uint8_t			ep_is_in;</span>
<span class="gi">+</span>
<span class="gi">+	/** wMaxPacketSize Field of Endpoint Descriptor. */</span>
<span class="gi">+	uint16_t		maxp;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Determines the PID of the next data packet for non-control</span>
<span class="gi">+	 * transfers. Ignored for control transfers.&lt;br&gt;</span>
<span class="gi">+	 * One of the following values:</span>
<span class="gi">+	 *	- DWC_OTG_HC_PID_DATA0</span>
<span class="gi">+	 *	- DWC_OTG_HC_PID_DATA1</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t			data_toggle;</span>
<span class="gi">+</span>
<span class="gi">+	/** Ping state if 1. */</span>
<span class="gi">+	uint8_t			ping_state;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * List of QTDs for this QH.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct list_head	qtd_list;</span>
<span class="gi">+</span>
<span class="gi">+	/** Host channel currently processing transfers for this QH. */</span>
<span class="gi">+	dwc_hc_t		*channel;</span>
<span class="gi">+</span>
<span class="gi">+	/** QTD currently assigned to a host channel for this QH. */</span>
<span class="gi">+	dwc_otg_qtd_t		*qtd_in_process;</span>
<span class="gi">+</span>
<span class="gi">+	/** Full/low speed endpoint on high-speed hub requires split. */</span>
<span class="gi">+	uint8_t			do_split;</span>
<span class="gi">+</span>
<span class="gi">+	/** @name Periodic schedule information */</span>
<span class="gi">+	/** @{ */</span>
<span class="gi">+</span>
<span class="gi">+	/** Bandwidth in microseconds per (micro)frame. */</span>
<span class="gi">+	uint8_t			usecs;</span>
<span class="gi">+</span>
<span class="gi">+	/** Interval between transfers in (micro)frames. */</span>
<span class="gi">+	uint16_t		interval;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * (micro)frame to initialize a periodic transfer. The transfer</span>
<span class="gi">+	 * executes in the following (micro)frame.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint16_t		sched_frame;</span>
<span class="gi">+</span>
<span class="gi">+	/** (micro)frame at which last start split was initialized. */</span>
<span class="gi">+	uint16_t		start_split_frame;</span>
<span class="gi">+</span>
<span class="gi">+	/** @} */</span>
<span class="gi">+</span>
<span class="gi">+	/** Entry for QH in either the periodic or non-periodic schedule. */</span>
<span class="gi">+	struct list_head	qh_list_entry;</span>
<span class="gi">+} dwc_otg_qh_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This structure holds the state of the HCD, including the non-periodic and</span>
<span class="gi">+ * periodic schedules.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_hcd {</span>
<span class="gi">+	/** The DWC otg device pointer */</span>
<span class="gi">+	struct dwc_otg_device	*otg_dev;</span>
<span class="gi">+</span>
<span class="gi">+	/** DWC OTG Core Interface Layer */</span>
<span class="gi">+	dwc_otg_core_if_t	*core_if;</span>
<span class="gi">+</span>
<span class="gi">+	/** Internal DWC HCD Flags */</span>
<span class="gi">+	volatile union dwc_otg_hcd_internal_flags {</span>
<span class="gi">+		uint32_t d32;</span>
<span class="gi">+		struct {</span>
<span class="gi">+			unsigned port_connect_status_change : 1;</span>
<span class="gi">+			unsigned port_connect_status : 1;</span>
<span class="gi">+			unsigned port_reset_change : 1;</span>
<span class="gi">+			unsigned port_enable_change : 1;</span>
<span class="gi">+			unsigned port_suspend_change : 1;</span>
<span class="gi">+			unsigned port_over_current_change : 1;</span>
<span class="gi">+			unsigned reserved : 27;</span>
<span class="gi">+		} b;</span>
<span class="gi">+	} flags;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Inactive items in the non-periodic schedule. This is a list of</span>
<span class="gi">+	 * Queue Heads. Transfers associated with these Queue Heads are not</span>
<span class="gi">+	 * currently assigned to a host channel.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct list_head	non_periodic_sched_inactive;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Active items in the non-periodic schedule. This is a list of</span>
<span class="gi">+	 * Queue Heads. Transfers associated with these Queue Heads are</span>
<span class="gi">+	 * currently assigned to a host channel.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct list_head	non_periodic_sched_active;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Pointer to the next Queue Head to process in the active</span>
<span class="gi">+	 * non-periodic schedule.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct list_head	*non_periodic_qh_ptr;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Inactive items in the periodic schedule. This is a list of QHs for</span>
<span class="gi">+	 * periodic transfers that are _not_ scheduled for the next frame.</span>
<span class="gi">+	 * Each QH in the list has an interval counter that determines when it</span>
<span class="gi">+	 * needs to be scheduled for execution. This scheduling mechanism</span>
<span class="gi">+	 * allows only a simple calculation for periodic bandwidth used (i.e.</span>
<span class="gi">+	 * must assume that all periodic transfers may need to execute in the</span>
<span class="gi">+	 * same frame). However, it greatly simplifies scheduling and should</span>
<span class="gi">+	 * be sufficient for the vast majority of OTG hosts, which need to</span>
<span class="gi">+	 * connect to a small number of peripherals at one time.</span>
<span class="gi">+	 *</span>
<span class="gi">+	 * Items move from this list to periodic_sched_ready when the QH</span>
<span class="gi">+	 * interval counter is 0 at SOF.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct list_head	periodic_sched_inactive;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * List of periodic QHs that are ready for execution in the next</span>
<span class="gi">+	 * frame, but have not yet been assigned to host channels.</span>
<span class="gi">+	 *</span>
<span class="gi">+	 * Items move from this list to periodic_sched_assigned as host</span>
<span class="gi">+	 * channels become available during the current frame.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct list_head	periodic_sched_ready;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * List of periodic QHs to be executed in the next frame that are</span>
<span class="gi">+	 * assigned to host channels.</span>
<span class="gi">+	 *</span>
<span class="gi">+	 * Items move from this list to periodic_sched_queued as the</span>
<span class="gi">+	 * transactions for the QH are queued to the DWC_otg controller.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct list_head	periodic_sched_assigned;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * List of periodic QHs that have been queued for execution.</span>
<span class="gi">+	 *</span>
<span class="gi">+	 * Items move from this list to either periodic_sched_inactive or</span>
<span class="gi">+	 * periodic_sched_ready when the channel associated with the transfer</span>
<span class="gi">+	 * is released. If the interval for the QH is 1, the item moves to</span>
<span class="gi">+	 * periodic_sched_ready because it must be rescheduled for the next</span>
<span class="gi">+	 * frame. Otherwise, the item moves to periodic_sched_inactive.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct list_head	periodic_sched_queued;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Total bandwidth claimed so far for periodic transfers. This value</span>
<span class="gi">+	 * is in microseconds per (micro)frame. The assumption is that all</span>
<span class="gi">+	 * periodic transfers may occur in the same (micro)frame.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint16_t		periodic_usecs;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Frame number read from the core at SOF. The value ranges from 0 to</span>
<span class="gi">+	 * DWC_HFNUM_MAX_FRNUM.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint16_t		frame_number;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Free host channels in the controller. This is a list of</span>
<span class="gi">+	 * dwc_hc_t items.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct list_head	free_hc_list;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Number of host channels assigned to periodic transfers. Currently</span>
<span class="gi">+	 * assuming that there is a dedicated host channel for each periodic</span>
<span class="gi">+	 * transaction and at least one host channel available for</span>
<span class="gi">+	 * non-periodic transactions.</span>
<span class="gi">+	 */</span>
<span class="gi">+	int			periodic_channels;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Number of host channels assigned to non-periodic transfers.</span>
<span class="gi">+	 */</span>
<span class="gi">+	int			non_periodic_channels;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Array of pointers to the host channel descriptors. Allows accessing</span>
<span class="gi">+	 * a host channel descriptor given the host channel number. This is</span>
<span class="gi">+	 * useful in interrupt handlers.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_hc_t		*hc_ptr_array[MAX_EPS_CHANNELS];</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Buffer to use for any data received during the status phase of a</span>
<span class="gi">+	 * control transfer. Normally no data is transferred during the status</span>
<span class="gi">+	 * phase. This buffer is used as a bit bucket.</span>
<span class="gi">+	 */</span>
<span class="gi">+	uint8_t			*status_buf;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * DMA address for status_buf.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dma_addr_t		status_buf_dma;</span>
<span class="gi">+#define DWC_OTG_HCD_STATUS_BUF_SIZE 64</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Structure to allow starting the HCD in a non-interrupt context</span>
<span class="gi">+	 * during an OTG role change.</span>
<span class="gi">+	 */</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+	struct work_struct	start_work;</span>
<span class="gi">+#else</span>
<span class="gi">+	struct delayed_work	start_work;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Connection timer. An OTG host must display a message if the device</span>
<span class="gi">+	 * does not connect. Started when the VBus power is turned on via</span>
<span class="gi">+	 * sysfs attribute &quot;buspower&quot;.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct timer_list	conn_timer;</span>
<span class="gi">+</span>
<span class="gi">+	/* Tasket to do a reset */</span>
<span class="gi">+	struct tasklet_struct	*reset_tasklet;</span>
<span class="gi">+</span>
<span class="gi">+	/*  */</span>
<span class="gi">+	spinlock_t lock;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	uint32_t		frrem_samples;</span>
<span class="gi">+	uint64_t		frrem_accum;</span>
<span class="gi">+</span>
<span class="gi">+	uint32_t		hfnum_7_samples_a;</span>
<span class="gi">+	uint64_t		hfnum_7_frrem_accum_a;</span>
<span class="gi">+	uint32_t		hfnum_0_samples_a;</span>
<span class="gi">+	uint64_t		hfnum_0_frrem_accum_a;</span>
<span class="gi">+	uint32_t		hfnum_other_samples_a;</span>
<span class="gi">+	uint64_t		hfnum_other_frrem_accum_a;</span>
<span class="gi">+</span>
<span class="gi">+	uint32_t		hfnum_7_samples_b;</span>
<span class="gi">+	uint64_t		hfnum_7_frrem_accum_b;</span>
<span class="gi">+	uint32_t		hfnum_0_samples_b;</span>
<span class="gi">+	uint64_t		hfnum_0_frrem_accum_b;</span>
<span class="gi">+	uint32_t		hfnum_other_samples_b;</span>
<span class="gi">+	uint64_t		hfnum_other_frrem_accum_b;</span>
<span class="gi">+#endif</span>
<span class="gi">+} dwc_otg_hcd_t;</span>
<span class="gi">+</span>
<span class="gi">+/** Gets the dwc_otg_hcd from a struct usb_hcd */</span>
<span class="gi">+static inline dwc_otg_hcd_t *hcd_to_dwc_otg_hcd(struct usb_hcd *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	return (dwc_otg_hcd_t *)(hcd-&gt;hcd_priv);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Gets the struct usb_hcd that contains a dwc_otg_hcd_t. */</span>
<span class="gi">+static inline struct usb_hcd *dwc_otg_hcd_to_hcd(dwc_otg_hcd_t *dwc_otg_hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	return container_of((void *)dwc_otg_hcd, struct usb_hcd, hcd_priv);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** @name HCD Create/Destroy Functions */</span>
<span class="gi">+/** @{ */</span>
<span class="gi">+extern int dwc_otg_hcd_init(struct lm_device *lmdev);</span>
<span class="gi">+extern void dwc_otg_hcd_remove(struct lm_device *lmdev);</span>
<span class="gi">+/** @} */</span>
<span class="gi">+</span>
<span class="gi">+/** @name Linux HC Driver API Functions */</span>
<span class="gi">+/** @{ */</span>
<span class="gi">+</span>
<span class="gi">+extern int dwc_otg_hcd_start(struct usb_hcd *hcd);</span>
<span class="gi">+extern void dwc_otg_hcd_stop(struct usb_hcd *hcd);</span>
<span class="gi">+extern int dwc_otg_hcd_get_frame_number(struct usb_hcd *hcd);</span>
<span class="gi">+extern void dwc_otg_hcd_free(struct usb_hcd *hcd);</span>
<span class="gi">+extern int dwc_otg_hcd_urb_enqueue(struct usb_hcd *hcd,</span>
<span class="gi">+				//   struct usb_host_endpoint *ep,</span>
<span class="gi">+				   struct urb *urb,</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				   int mem_flags</span>
<span class="gi">+#else</span>
<span class="gi">+				   gfp_t mem_flags</span>
<span class="gi">+#endif</span>
<span class="gi">+				  );</span>
<span class="gi">+extern int dwc_otg_hcd_urb_dequeue(struct usb_hcd *hcd,</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				   struct usb_host_endpoint *ep,</span>
<span class="gi">+#endif</span>
<span class="gi">+				   struct urb *urb, int status);</span>
<span class="gi">+extern void dwc_otg_hcd_endpoint_disable(struct usb_hcd *hcd,</span>
<span class="gi">+					 struct usb_host_endpoint *ep);</span>
<span class="gi">+extern irqreturn_t dwc_otg_hcd_irq(struct usb_hcd *hcd</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				   , struct pt_regs *regs</span>
<span class="gi">+#endif</span>
<span class="gi">+				  );</span>
<span class="gi">+extern int dwc_otg_hcd_hub_status_data(struct usb_hcd *hcd,</span>
<span class="gi">+				       char *buf);</span>
<span class="gi">+extern int dwc_otg_hcd_hub_control(struct usb_hcd *hcd,</span>
<span class="gi">+				   u16 typeReq,</span>
<span class="gi">+				   u16 wValue,</span>
<span class="gi">+				   u16 wIndex,</span>
<span class="gi">+				   char *buf,</span>
<span class="gi">+				   u16 wLength);</span>
<span class="gi">+</span>
<span class="gi">+/** @} */</span>
<span class="gi">+</span>
<span class="gi">+/** @name Transaction Execution Functions */</span>
<span class="gi">+/** @{ */</span>
<span class="gi">+extern dwc_otg_transaction_type_e dwc_otg_hcd_select_transactions(dwc_otg_hcd_t *hcd);</span>
<span class="gi">+extern void dwc_otg_hcd_queue_transactions(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+					   dwc_otg_transaction_type_e tr_type);</span>
<span class="gi">+extern void dwc_otg_hcd_complete_urb(dwc_otg_hcd_t *_hcd, struct urb *urb,</span>
<span class="gi">+				     int status);</span>
<span class="gi">+/** @} */</span>
<span class="gi">+</span>
<span class="gi">+/** @name Interrupt Handler Functions */</span>
<span class="gi">+/** @{ */</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_rx_status_q_level_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_np_tx_fifo_empty_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_perio_tx_fifo_empty_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_incomplete_periodic_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_port_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_conn_id_status_change_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_disconnect_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t *dwc_otg_hcd, uint32_t num);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_session_req_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+extern int32_t dwc_otg_hcd_handle_wakeup_detected_intr(dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+/** @} */</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/** @name Schedule Queue Functions */</span>
<span class="gi">+/** @{ */</span>
<span class="gi">+</span>
<span class="gi">+/* Implemented in dwc_otg_hcd_queue.c */</span>
<span class="gi">+extern dwc_otg_qh_t *dwc_otg_hcd_qh_create(dwc_otg_hcd_t *hcd, struct urb *urb);</span>
<span class="gi">+extern void dwc_otg_hcd_qh_init(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh, struct urb *urb);</span>
<span class="gi">+extern void dwc_otg_hcd_qh_free(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh);</span>
<span class="gi">+extern int dwc_otg_hcd_qh_add(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh);</span>
<span class="gi">+extern void dwc_otg_hcd_qh_remove(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh);</span>
<span class="gi">+extern void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh, int sched_csplit);</span>
<span class="gi">+</span>
<span class="gi">+/** Remove and free a QH */</span>
<span class="gi">+static inline void dwc_otg_hcd_qh_remove_and_free(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+						  dwc_otg_qh_t *qh)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_qh_remove(hcd, qh);</span>
<span class="gi">+	dwc_otg_hcd_qh_free(hcd, qh);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Allocates memory for a QH structure.</span>
<span class="gi">+ * @return Returns the memory allocate or NULL on error. */</span>
<span class="gi">+static inline dwc_otg_qh_t *dwc_otg_hcd_qh_alloc(void)</span>
<span class="gi">+{</span>
<span class="gi">+	return (dwc_otg_qh_t *) kmalloc(sizeof(dwc_otg_qh_t), GFP_KERNEL);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+extern dwc_otg_qtd_t *dwc_otg_hcd_qtd_create(struct urb *urb);</span>
<span class="gi">+extern void dwc_otg_hcd_qtd_init(dwc_otg_qtd_t *qtd, struct urb *urb);</span>
<span class="gi">+extern int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *qtd, dwc_otg_hcd_t *dwc_otg_hcd);</span>
<span class="gi">+</span>
<span class="gi">+/** Allocates memory for a QTD structure.</span>
<span class="gi">+ * @return Returns the memory allocate or NULL on error. */</span>
<span class="gi">+static inline dwc_otg_qtd_t *dwc_otg_hcd_qtd_alloc(void)</span>
<span class="gi">+{</span>
<span class="gi">+	return (dwc_otg_qtd_t *) kmalloc(sizeof(dwc_otg_qtd_t), GFP_KERNEL);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Frees the memory for a QTD structure.  QTD should already be removed from</span>
<span class="gi">+ * list.</span>
<span class="gi">+ * @param[in] qtd QTD to free.*/</span>
<span class="gi">+static inline void dwc_otg_hcd_qtd_free(dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	kfree(qtd);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Removes a QTD from list.</span>
<span class="gi">+ * @param[in] hcd HCD instance.</span>
<span class="gi">+ * @param[in] qtd QTD to remove from list. */</span>
<span class="gi">+static inline void dwc_otg_hcd_qtd_remove(dwc_otg_hcd_t *hcd, dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;hcd-&gt;lock, flags);</span>
<span class="gi">+	list_del(&amp;qtd-&gt;qtd_list_entry);</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;hcd-&gt;lock, flags);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Remove and free a QTD */</span>
<span class="gi">+static inline void dwc_otg_hcd_qtd_remove_and_free(dwc_otg_hcd_t *hcd, dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_hcd_qtd_remove(hcd, qtd);</span>
<span class="gi">+	dwc_otg_hcd_qtd_free(qtd);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** @} */</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/** @name Internal Functions */</span>
<span class="gi">+/** @{ */</span>
<span class="gi">+dwc_otg_qh_t *dwc_urb_to_qh(struct urb *urb);</span>
<span class="gi">+void dwc_otg_hcd_dump_frrem(dwc_otg_hcd_t *hcd);</span>
<span class="gi">+void dwc_otg_hcd_dump_state(dwc_otg_hcd_t *hcd);</span>
<span class="gi">+/** @} */</span>
<span class="gi">+</span>
<span class="gi">+/** Gets the usb_host_endpoint associated with an URB. */</span>
<span class="gi">+static inline struct usb_host_endpoint *dwc_urb_to_endpoint(struct urb *urb)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_device *dev = urb-&gt;dev;</span>
<span class="gi">+	int ep_num = usb_pipeendpoint(urb-&gt;pipe);</span>
<span class="gi">+</span>
<span class="gi">+	if (usb_pipein(urb-&gt;pipe))</span>
<span class="gi">+		return dev-&gt;ep_in[ep_num];</span>
<span class="gi">+	else</span>
<span class="gi">+		return dev-&gt;ep_out[ep_num];</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Gets the endpoint number from a _bEndpointAddress argument. The endpoint is</span>
<span class="gi">+ * qualified with its direction (possible 32 endpoints per device).</span>
<span class="gi">+ */</span>
<span class="gi">+#define dwc_ep_addr_to_endpoint(_bEndpointAddress_) ((_bEndpointAddress_ &amp; USB_ENDPOINT_NUMBER_MASK) | \</span>
<span class="gi">+						     ((_bEndpointAddress_ &amp; USB_DIR_IN) != 0) &lt;&lt; 4)</span>
<span class="gi">+</span>
<span class="gi">+/** Gets the QH that contains the list_head */</span>
<span class="gi">+#define dwc_list_to_qh(_list_head_ptr_) container_of(_list_head_ptr_, dwc_otg_qh_t, qh_list_entry)</span>
<span class="gi">+</span>
<span class="gi">+/** Gets the QTD that contains the list_head */</span>
<span class="gi">+#define dwc_list_to_qtd(_list_head_ptr_) container_of(_list_head_ptr_, dwc_otg_qtd_t, qtd_list_entry)</span>
<span class="gi">+</span>
<span class="gi">+/** Check if QH is non-periodic  */</span>
<span class="gi">+#define dwc_qh_is_non_per(_qh_ptr_) ((_qh_ptr_-&gt;ep_type == USB_ENDPOINT_XFER_BULK) || \</span>
<span class="gi">+				     (_qh_ptr_-&gt;ep_type == USB_ENDPOINT_XFER_CONTROL))</span>
<span class="gi">+</span>
<span class="gi">+/** High bandwidth multiplier as encoded in highspeed endpoint descriptors */</span>
<span class="gi">+#define dwc_hb_mult(wMaxPacketSize) (1 + (((wMaxPacketSize) &gt;&gt; 11) &amp; 0x03))</span>
<span class="gi">+</span>
<span class="gi">+/** Packet size for any kind of endpoint descriptor */</span>
<span class="gi">+#define dwc_max_packet(wMaxPacketSize) ((wMaxPacketSize) &amp; 0x07ff)</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Returns true if _frame1 is less than or equal to _frame2. The comparison is</span>
<span class="gi">+ * done modulo DWC_HFNUM_MAX_FRNUM. This accounts for the rollover of the</span>
<span class="gi">+ * frame number when the max frame number is reached.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline int dwc_frame_num_le(uint16_t frame1, uint16_t frame2)</span>
<span class="gi">+{</span>
<span class="gi">+	return ((frame2 - frame1) &amp; DWC_HFNUM_MAX_FRNUM) &lt;=</span>
<span class="gi">+		(DWC_HFNUM_MAX_FRNUM &gt;&gt; 1);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Returns true if _frame1 is greater than _frame2. The comparison is done</span>
<span class="gi">+ * modulo DWC_HFNUM_MAX_FRNUM. This accounts for the rollover of the frame</span>
<span class="gi">+ * number when the max frame number is reached.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline int dwc_frame_num_gt(uint16_t frame1, uint16_t frame2)</span>
<span class="gi">+{</span>
<span class="gi">+	return (frame1 != frame2) &amp;&amp;</span>
<span class="gi">+		(((frame1 - frame2) &amp; DWC_HFNUM_MAX_FRNUM) &lt;</span>
<span class="gi">+		 (DWC_HFNUM_MAX_FRNUM &gt;&gt; 1));</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Increments _frame by the amount specified by _inc. The addition is done</span>
<span class="gi">+ * modulo DWC_HFNUM_MAX_FRNUM. Returns the incremented value.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint16_t dwc_frame_num_inc(uint16_t frame, uint16_t inc)</span>
<span class="gi">+{</span>
<span class="gi">+	return (frame + inc) &amp; DWC_HFNUM_MAX_FRNUM;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static inline uint16_t dwc_full_frame_num(uint16_t frame)</span>
<span class="gi">+{</span>
<span class="gi">+	return (frame &amp; DWC_HFNUM_MAX_FRNUM) &gt;&gt; 3;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static inline uint16_t dwc_micro_frame_num(uint16_t frame)</span>
<span class="gi">+{</span>
<span class="gi">+	return frame &amp; 0x7;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+/**</span>
<span class="gi">+ * Macro to sample the remaining PHY clocks left in the current frame. This</span>
<span class="gi">+ * may be used during debugging to determine the average time it takes to</span>
<span class="gi">+ * execute sections of code. There are two possible sample points, &quot;a&quot; and</span>
<span class="gi">+ * &quot;b&quot;, so the _letter argument must be one of these values.</span>
<span class="gi">+ *</span>
<span class="gi">+ * To dump the average sample times, read the &quot;hcd_frrem&quot; sysfs attribute. For</span>
<span class="gi">+ * example, &quot;cat /sys/devices/lm0/hcd_frrem&quot;.</span>
<span class="gi">+ */</span>
<span class="gi">+#define dwc_sample_frrem(_hcd, _qh, _letter) \</span>
<span class="gi">+{ \</span>
<span class="gi">+	hfnum_data_t hfnum; \</span>
<span class="gi">+	dwc_otg_qtd_t *qtd; \</span>
<span class="gi">+	qtd = list_entry(_qh-&gt;qtd_list.next, dwc_otg_qtd_t, qtd_list_entry); \</span>
<span class="gi">+	if (usb_pipeint(qtd-&gt;urb-&gt;pipe) &amp;&amp; _qh-&gt;start_split_frame != 0 &amp;&amp; !qtd-&gt;complete_split) { \</span>
<span class="gi">+		hfnum.d32 = dwc_read_reg32(&amp;_hcd-&gt;core_if-&gt;host_if-&gt;host_global_regs-&gt;hfnum); \</span>
<span class="gi">+		switch (hfnum.b.frnum &amp; 0x7) { \</span>
<span class="gi">+		case 7: \</span>
<span class="gi">+			_hcd-&gt;hfnum_7_samples_##_letter++; \</span>
<span class="gi">+			_hcd-&gt;hfnum_7_frrem_accum_##_letter += hfnum.b.frrem; \</span>
<span class="gi">+			break; \</span>
<span class="gi">+		case 0: \</span>
<span class="gi">+			_hcd-&gt;hfnum_0_samples_##_letter++; \</span>
<span class="gi">+			_hcd-&gt;hfnum_0_frrem_accum_##_letter += hfnum.b.frrem; \</span>
<span class="gi">+			break; \</span>
<span class="gi">+		default: \</span>
<span class="gi">+			_hcd-&gt;hfnum_other_samples_##_letter++; \</span>
<span class="gi">+			_hcd-&gt;hfnum_other_frrem_accum_##_letter += hfnum.b.frrem; \</span>
<span class="gi">+			break; \</span>
<span class="gi">+		} \</span>
<span class="gi">+	} \</span>
<span class="gi">+}</span>
<span class="gi">+#else</span>
<span class="gi">+#define dwc_sample_frrem(_hcd, _qh, _letter)</span>
<span class="gi">+#endif</span>
<span class="gi">+#endif</span>
<span class="gi">+#endif /* DWC_DEVICE_ONLY */</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_hcd_intr.c</span>
<span class="gu">@@ -0,0 +1,1829 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_intr.c $</span>
<span class="gi">+ * $Revision: #70 $</span>
<span class="gi">+ * $Date: 2008/10/16 $</span>
<span class="gi">+ * $Change: 1117667 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ *</span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+#ifndef DWC_DEVICE_ONLY</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/version.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#include &quot;dwc_otg_driver.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_hcd.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_regs.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+/** @file</span>
<span class="gi">+ * This file contains the implementation of the HCD Interrupt handlers.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+/** This function handles interrupts for the HCD. */</span>
<span class="gi">+int32_t dwc_otg_hcd_handle_intr(dwc_otg_hcd_t *dwc_otg_hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = dwc_otg_hcd-&gt;core_if;</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = core_if-&gt;core_global_regs;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	/* Check if HOST Mode */</span>
<span class="gi">+	if (dwc_otg_is_host_mode(core_if)) {</span>
<span class="gi">+		gintsts.d32 = dwc_otg_read_core_intr(core_if);</span>
<span class="gi">+		if (!gintsts.d32) {</span>
<span class="gi">+			return 0;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+		/* Don&#39;t print debug message in the interrupt handler on SOF */</span>
<span class="gi">+# ifndef DEBUG_SOF</span>
<span class="gi">+		if (gintsts.d32 != DWC_SOF_INTR_MASK)</span>
<span class="gi">+# endif</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+# ifndef DEBUG_SOF</span>
<span class="gi">+		if (gintsts.d32 != DWC_SOF_INTR_MASK)</span>
<span class="gi">+# endif</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD Interrupt Detected gintsts&amp;gintmsk=0x%08x\n&quot;, gintsts.d32);</span>
<span class="gi">+#endif</span>
<span class="gi">+		if (gintsts.b.usbreset) {</span>
<span class="gi">+			DWC_PRINT(&quot;Usb Reset In Host Mode\n&quot;);</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		</span>
<span class="gi">+		if (gintsts.b.sofintr) {</span>
<span class="gi">+			retval |= dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintsts.b.rxstsqlvl) {</span>
<span class="gi">+			retval |= dwc_otg_hcd_handle_rx_status_q_level_intr(dwc_otg_hcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintsts.b.nptxfempty) {</span>
<span class="gi">+			retval |= dwc_otg_hcd_handle_np_tx_fifo_empty_intr(dwc_otg_hcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintsts.b.i2cintr) {</span>
<span class="gi">+			/** @todo Implement i2cintr handler. */</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintsts.b.portintr) {</span>
<span class="gi">+			retval |= dwc_otg_hcd_handle_port_intr(dwc_otg_hcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintsts.b.hcintr) {</span>
<span class="gi">+			retval |= dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintsts.b.ptxfempty) {</span>
<span class="gi">+			retval |= dwc_otg_hcd_handle_perio_tx_fifo_empty_intr(dwc_otg_hcd);</span>
<span class="gi">+		}</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+# ifndef DEBUG_SOF</span>
<span class="gi">+		if (gintsts.d32 != DWC_SOF_INTR_MASK)</span>
<span class="gi">+# endif</span>
<span class="gi">+		{</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD Finished Servicing Interrupts\n&quot;);</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCDV, &quot;DWC OTG HCD gintsts=0x%08x\n&quot;,</span>
<span class="gi">+				    dwc_read_reg32(&amp;global_regs-&gt;gintsts));</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCDV, &quot;DWC OTG HCD gintmsk=0x%08x\n&quot;,</span>
<span class="gi">+				    dwc_read_reg32(&amp;global_regs-&gt;gintmsk));</span>
<span class="gi">+		}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+# ifndef DEBUG_SOF</span>
<span class="gi">+	if (gintsts.d32 != DWC_SOF_INTR_MASK)</span>
<span class="gi">+# endif</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	S3C2410X_CLEAR_EINTPEND();</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_TRACK_MISSED_SOFS</span>
<span class="gi">+#warning Compiling code to track missed SOFs</span>
<span class="gi">+#define FRAME_NUM_ARRAY_SIZE 1000</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is for debug only.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void track_missed_sofs(uint16_t curr_frame_number)</span>
<span class="gi">+{</span>
<span class="gi">+	static uint16_t		frame_num_array[FRAME_NUM_ARRAY_SIZE];</span>
<span class="gi">+	static uint16_t		last_frame_num_array[FRAME_NUM_ARRAY_SIZE];</span>
<span class="gi">+	static int		frame_num_idx = 0;</span>
<span class="gi">+	static uint16_t		last_frame_num = DWC_HFNUM_MAX_FRNUM;</span>
<span class="gi">+	static int		dumped_frame_num_array = 0;</span>
<span class="gi">+</span>
<span class="gi">+	if (frame_num_idx &lt; FRAME_NUM_ARRAY_SIZE) {</span>
<span class="gi">+		if (((last_frame_num + 1) &amp; DWC_HFNUM_MAX_FRNUM) != curr_frame_number) {</span>
<span class="gi">+			frame_num_array[frame_num_idx] = curr_frame_number;</span>
<span class="gi">+			last_frame_num_array[frame_num_idx++] = last_frame_num;</span>
<span class="gi">+		}</span>
<span class="gi">+	} else if (!dumped_frame_num_array) {</span>
<span class="gi">+		int i;</span>
<span class="gi">+		printk(KERN_EMERG USB_DWC &quot;Frame     Last Frame\n&quot;);</span>
<span class="gi">+		printk(KERN_EMERG USB_DWC &quot;-----     ----------\n&quot;);</span>
<span class="gi">+		for (i = 0; i &lt; FRAME_NUM_ARRAY_SIZE; i++) {</span>
<span class="gi">+			printk(KERN_EMERG USB_DWC &quot;0x%04x    0x%04x\n&quot;,</span>
<span class="gi">+			       frame_num_array[i], last_frame_num_array[i]);</span>
<span class="gi">+		}</span>
<span class="gi">+		dumped_frame_num_array = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	last_frame_num = curr_frame_number;</span>
<span class="gi">+}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles the start-of-frame interrupt in host mode. Non-periodic</span>
<span class="gi">+ * transactions may be queued to the DWC_otg controller for the current</span>
<span class="gi">+ * (micro)frame. Periodic transactions may be queued to the controller for the</span>
<span class="gi">+ * next (micro)frame.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_hcd_handle_sof_intr(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	hfnum_data_t		hfnum;</span>
<span class="gi">+	struct list_head	*qh_entry;</span>
<span class="gi">+	dwc_otg_qh_t		*qh;</span>
<span class="gi">+	dwc_otg_transaction_type_e tr_type;</span>
<span class="gi">+	gintsts_data_t gintsts = {.d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+	hfnum.d32 = dwc_read_reg32(&amp;hcd-&gt;core_if-&gt;host_if-&gt;host_global_regs-&gt;hfnum);</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG_SOF</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Start of Frame Interrupt--\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+	hcd-&gt;frame_number = hfnum.b.frnum;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	hcd-&gt;frrem_accum += hfnum.b.frrem;</span>
<span class="gi">+	hcd-&gt;frrem_samples++;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_TRACK_MISSED_SOFS</span>
<span class="gi">+	track_missed_sofs(hcd-&gt;frame_number);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	/* Determine whether any periodic QHs should be executed. */</span>
<span class="gi">+	qh_entry = hcd-&gt;periodic_sched_inactive.next;</span>
<span class="gi">+	while (qh_entry != &amp;hcd-&gt;periodic_sched_inactive) {</span>
<span class="gi">+		qh = list_entry(qh_entry, dwc_otg_qh_t, qh_list_entry);</span>
<span class="gi">+		qh_entry = qh_entry-&gt;next;</span>
<span class="gi">+		if (dwc_frame_num_le(qh-&gt;sched_frame, hcd-&gt;frame_number)) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Move QH to the ready list to be executed next</span>
<span class="gi">+			 * (micro)frame.</span>
<span class="gi">+			 */</span>
<span class="gi">+			list_move(&amp;qh-&gt;qh_list_entry, &amp;hcd-&gt;periodic_sched_ready);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	tr_type = dwc_otg_hcd_select_transactions(hcd);</span>
<span class="gi">+	if (tr_type != DWC_OTG_TRANSACTION_NONE) {</span>
<span class="gi">+		dwc_otg_hcd_queue_transactions(hcd, tr_type);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.b.sofintr = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;hcd-&gt;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Handles the Rx Status Queue Level Interrupt, which indicates that there is at</span>
<span class="gi">+ * least one packet in the Rx FIFO.  The packets are moved from the FIFO to</span>
<span class="gi">+ * memory if the DWC_otg controller is operating in Slave mode. */</span>
<span class="gi">+int32_t dwc_otg_hcd_handle_rx_status_q_level_intr(dwc_otg_hcd_t *dwc_otg_hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	host_grxsts_data_t grxsts;</span>
<span class="gi">+	dwc_hc_t *hc = NULL;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--RxStsQ Level Interrupt--\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	grxsts.d32 = dwc_read_reg32(&amp;dwc_otg_hcd-&gt;core_if-&gt;core_global_regs-&gt;grxstsp);</span>
<span class="gi">+</span>
<span class="gi">+	hc = dwc_otg_hcd-&gt;hc_ptr_array[grxsts.b.chnum];</span>
<span class="gi">+</span>
<span class="gi">+	/* Packet Status */</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;    Ch num = %d\n&quot;, grxsts.b.chnum);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;    Count = %d\n&quot;, grxsts.b.bcnt);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;    DPID = %d, hc.dpid = %d\n&quot;, grxsts.b.dpid, hc-&gt;data_pid_start);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;    PStatus = %d\n&quot;, grxsts.b.pktsts);</span>
<span class="gi">+</span>
<span class="gi">+	switch (grxsts.b.pktsts) {</span>
<span class="gi">+	case DWC_GRXSTS_PKTSTS_IN:</span>
<span class="gi">+		/* Read the data into the host buffer. */</span>
<span class="gi">+		if (grxsts.b.bcnt &gt; 0) {</span>
<span class="gi">+			dwc_otg_read_packet(dwc_otg_hcd-&gt;core_if,</span>
<span class="gi">+					    hc-&gt;xfer_buff,</span>
<span class="gi">+					    grxsts.b.bcnt);</span>
<span class="gi">+</span>
<span class="gi">+			/* Update the HC fields for the next packet received. */</span>
<span class="gi">+			hc-&gt;xfer_count += grxsts.b.bcnt;</span>
<span class="gi">+			hc-&gt;xfer_buff += grxsts.b.bcnt;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_GRXSTS_PKTSTS_IN_XFER_COMP:</span>
<span class="gi">+	case DWC_GRXSTS_PKTSTS_DATA_TOGGLE_ERR:</span>
<span class="gi">+	case DWC_GRXSTS_PKTSTS_CH_HALTED:</span>
<span class="gi">+		/* Handled in interrupt, just ignore data */</span>
<span class="gi">+		break;</span>
<span class="gi">+	default:</span>
<span class="gi">+		DWC_ERROR(&quot;RX_STS_Q Interrupt: Unknown status %d\n&quot;, grxsts.b.pktsts);</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** This interrupt occurs when the non-periodic Tx FIFO is half-empty. More</span>
<span class="gi">+ * data packets may be written to the FIFO for OUT transfers. More requests</span>
<span class="gi">+ * may be written to the non-periodic request queue for IN transfers. This</span>
<span class="gi">+ * interrupt is enabled only in Slave mode. */</span>
<span class="gi">+int32_t dwc_otg_hcd_handle_np_tx_fifo_empty_intr(dwc_otg_hcd_t *dwc_otg_hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Non-Periodic TxFIFO Empty Interrupt--\n&quot;);</span>
<span class="gi">+	dwc_otg_hcd_queue_transactions(dwc_otg_hcd,</span>
<span class="gi">+				       DWC_OTG_TRANSACTION_NON_PERIODIC);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** This interrupt occurs when the periodic Tx FIFO is half-empty. More data</span>
<span class="gi">+ * packets may be written to the FIFO for OUT transfers. More requests may be</span>
<span class="gi">+ * written to the periodic request queue for IN transfers. This interrupt is</span>
<span class="gi">+ * enabled only in Slave mode. */</span>
<span class="gi">+int32_t dwc_otg_hcd_handle_perio_tx_fifo_empty_intr(dwc_otg_hcd_t *dwc_otg_hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Periodic TxFIFO Empty Interrupt--\n&quot;);</span>
<span class="gi">+	dwc_otg_hcd_queue_transactions(dwc_otg_hcd,</span>
<span class="gi">+				       DWC_OTG_TRANSACTION_PERIODIC);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** There are multiple conditions that can cause a port interrupt. This function</span>
<span class="gi">+ * determines which interrupt conditions have occurred and handles them</span>
<span class="gi">+ * appropriately. */</span>
<span class="gi">+int32_t dwc_otg_hcd_handle_port_intr(dwc_otg_hcd_t *dwc_otg_hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+	hprt0_data_t hprt0;</span>
<span class="gi">+	hprt0_data_t hprt0_modify;</span>
<span class="gi">+</span>
<span class="gi">+	hprt0.d32 = dwc_read_reg32(dwc_otg_hcd-&gt;core_if-&gt;host_if-&gt;hprt0);</span>
<span class="gi">+	hprt0_modify.d32 = dwc_read_reg32(dwc_otg_hcd-&gt;core_if-&gt;host_if-&gt;hprt0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear appropriate bits in HPRT0 to clear the interrupt bit in</span>
<span class="gi">+	 * GINTSTS */</span>
<span class="gi">+</span>
<span class="gi">+	hprt0_modify.b.prtena = 0;</span>
<span class="gi">+	hprt0_modify.b.prtconndet = 0;</span>
<span class="gi">+	hprt0_modify.b.prtenchng = 0;</span>
<span class="gi">+	hprt0_modify.b.prtovrcurrchng = 0;</span>
<span class="gi">+</span>
<span class="gi">+	/* Port Connect Detected</span>
<span class="gi">+	 * Set flag and clear if detected */</span>
<span class="gi">+	if (hprt0.b.prtconndet) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;--Port Interrupt HPRT0=0x%08x &quot;</span>
<span class="gi">+			    &quot;Port Connect Detected--\n&quot;, hprt0.d32);</span>
<span class="gi">+		dwc_otg_hcd-&gt;flags.b.port_connect_status_change = 1;</span>
<span class="gi">+		dwc_otg_hcd-&gt;flags.b.port_connect_status = 1;</span>
<span class="gi">+		hprt0_modify.b.prtconndet = 1;</span>
<span class="gi">+</span>
<span class="gi">+		/* B-Device has connected, Delete the connection timer. */</span>
<span class="gi">+		del_timer( &amp;dwc_otg_hcd-&gt;conn_timer );</span>
<span class="gi">+</span>
<span class="gi">+		/* The Hub driver asserts a reset when it sees port connect</span>
<span class="gi">+		 * status change flag */</span>
<span class="gi">+		retval |= 1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Port Enable Changed</span>
<span class="gi">+	 * Clear if detected - Set internal flag if disabled */</span>
<span class="gi">+	if (hprt0.b.prtenchng) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;  --Port Interrupt HPRT0=0x%08x &quot;</span>
<span class="gi">+			    &quot;Port Enable Changed--\n&quot;, hprt0.d32);</span>
<span class="gi">+		hprt0_modify.b.prtenchng = 1;</span>
<span class="gi">+		if (hprt0.b.prtena == 1) {</span>
<span class="gi">+			int do_reset = 0;</span>
<span class="gi">+			dwc_otg_core_params_t *params = dwc_otg_hcd-&gt;core_if-&gt;core_params;</span>
<span class="gi">+			dwc_otg_core_global_regs_t *global_regs = dwc_otg_hcd-&gt;core_if-&gt;core_global_regs;</span>
<span class="gi">+			dwc_otg_host_if_t *host_if = dwc_otg_hcd-&gt;core_if-&gt;host_if;</span>
<span class="gi">+</span>
<span class="gi">+			/* Check if we need to adjust the PHY clock speed for</span>
<span class="gi">+			 * low power and adjust it */</span>
<span class="gi">+			if (params-&gt;host_support_fs_ls_low_power) {</span>
<span class="gi">+				gusbcfg_data_t usbcfg;</span>
<span class="gi">+</span>
<span class="gi">+				usbcfg.d32 = dwc_read_reg32(&amp;global_regs-&gt;gusbcfg);</span>
<span class="gi">+</span>
<span class="gi">+				if (hprt0.b.prtspd == DWC_HPRT0_PRTSPD_LOW_SPEED ||</span>
<span class="gi">+				    hprt0.b.prtspd == DWC_HPRT0_PRTSPD_FULL_SPEED) {</span>
<span class="gi">+					/*</span>
<span class="gi">+					 * Low power</span>
<span class="gi">+					 */</span>
<span class="gi">+					hcfg_data_t hcfg;</span>
<span class="gi">+					if (usbcfg.b.phylpwrclksel == 0) {</span>
<span class="gi">+						/* Set PHY low power clock select for FS/LS devices */</span>
<span class="gi">+						usbcfg.b.phylpwrclksel = 1;</span>
<span class="gi">+						dwc_write_reg32(&amp;global_regs-&gt;gusbcfg, usbcfg.d32);</span>
<span class="gi">+						do_reset = 1;</span>
<span class="gi">+					}</span>
<span class="gi">+</span>
<span class="gi">+					hcfg.d32 = dwc_read_reg32(&amp;host_if-&gt;host_global_regs-&gt;hcfg);</span>
<span class="gi">+</span>
<span class="gi">+					if (hprt0.b.prtspd == DWC_HPRT0_PRTSPD_LOW_SPEED &amp;&amp;</span>
<span class="gi">+					    params-&gt;host_ls_low_power_phy_clk ==</span>
<span class="gi">+					     DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_6MHZ) {</span>
<span class="gi">+						/* 6 MHZ */</span>
<span class="gi">+						DWC_DEBUGPL(DBG_CIL, &quot;FS_PHY programming HCFG to 6 MHz (Low Power)\n&quot;);</span>
<span class="gi">+						if (hcfg.b.fslspclksel != DWC_HCFG_6_MHZ) {</span>
<span class="gi">+							hcfg.b.fslspclksel = DWC_HCFG_6_MHZ;</span>
<span class="gi">+							dwc_write_reg32(&amp;host_if-&gt;host_global_regs-&gt;hcfg,</span>
<span class="gi">+									hcfg.d32);</span>
<span class="gi">+							do_reset = 1;</span>
<span class="gi">+						}</span>
<span class="gi">+					} else {</span>
<span class="gi">+						/* 48 MHZ */</span>
<span class="gi">+						DWC_DEBUGPL(DBG_CIL, &quot;FS_PHY programming HCFG to 48 MHz ()\n&quot;);</span>
<span class="gi">+						if (hcfg.b.fslspclksel != DWC_HCFG_48_MHZ) {</span>
<span class="gi">+							hcfg.b.fslspclksel = DWC_HCFG_48_MHZ;</span>
<span class="gi">+							dwc_write_reg32(&amp;host_if-&gt;host_global_regs-&gt;hcfg,</span>
<span class="gi">+									hcfg.d32);</span>
<span class="gi">+							do_reset = 1;</span>
<span class="gi">+						}</span>
<span class="gi">+					}</span>
<span class="gi">+				} else {</span>
<span class="gi">+					/*</span>
<span class="gi">+					 * Not low power</span>
<span class="gi">+					 */</span>
<span class="gi">+					if (usbcfg.b.phylpwrclksel == 1) {</span>
<span class="gi">+						usbcfg.b.phylpwrclksel = 0;</span>
<span class="gi">+						dwc_write_reg32(&amp;global_regs-&gt;gusbcfg, usbcfg.d32);</span>
<span class="gi">+						do_reset = 1;</span>
<span class="gi">+					}</span>
<span class="gi">+				}</span>
<span class="gi">+</span>
<span class="gi">+				if (do_reset) {</span>
<span class="gi">+					tasklet_schedule(dwc_otg_hcd-&gt;reset_tasklet);</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			if (!do_reset) {</span>
<span class="gi">+				/* Port has been enabled set the reset change flag */</span>
<span class="gi">+				dwc_otg_hcd-&gt;flags.b.port_reset_change = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+		} else {</span>
<span class="gi">+			dwc_otg_hcd-&gt;flags.b.port_enable_change = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+		retval |= 1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/** Overcurrent Change Interrupt */</span>
<span class="gi">+	if (hprt0.b.prtovrcurrchng) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;  --Port Interrupt HPRT0=0x%08x &quot;</span>
<span class="gi">+			    &quot;Port Overcurrent Changed--\n&quot;, hprt0.d32);</span>
<span class="gi">+		dwc_otg_hcd-&gt;flags.b.port_over_current_change = 1;</span>
<span class="gi">+		hprt0_modify.b.prtovrcurrchng = 1;</span>
<span class="gi">+		retval |= 1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear Port Interrupts */</span>
<span class="gi">+	dwc_write_reg32(dwc_otg_hcd-&gt;core_if-&gt;host_if-&gt;hprt0, hprt0_modify.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** This interrupt indicates that one or more host channels has a pending</span>
<span class="gi">+ * interrupt. There are multiple conditions that can cause each host channel</span>
<span class="gi">+ * interrupt. This function determines which conditions have occurred for each</span>
<span class="gi">+ * host channel interrupt and handles them appropriately. */</span>
<span class="gi">+int32_t dwc_otg_hcd_handle_hc_intr(dwc_otg_hcd_t *dwc_otg_hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	int i;</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+	haint_data_t haint;</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear appropriate bits in HCINTn to clear the interrupt bit in</span>
<span class="gi">+	 * GINTSTS */</span>
<span class="gi">+</span>
<span class="gi">+	haint.d32 = dwc_otg_read_host_all_channels_intr(dwc_otg_hcd-&gt;core_if);</span>
<span class="gi">+</span>
<span class="gi">+	for (i = 0; i &lt; dwc_otg_hcd-&gt;core_if-&gt;core_params-&gt;host_channels; i++) {</span>
<span class="gi">+		if (haint.b2.chint &amp; (1 &lt;&lt; i)) {</span>
<span class="gi">+			retval |= dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd, i);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/* Macro used to clear one channel interrupt */</span>
<span class="gi">+#define clear_hc_int(_hc_regs_, _intr_) \</span>
<span class="gi">+do { \</span>
<span class="gi">+	hcint_data_t hcint_clear = {.d32 = 0}; \</span>
<span class="gi">+	hcint_clear.b._intr_ = 1; \</span>
<span class="gi">+	dwc_write_reg32(&amp;(_hc_regs_)-&gt;hcint, hcint_clear.d32); \</span>
<span class="gi">+} while (0)</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * Macro used to disable one channel interrupt. Channel interrupts are</span>
<span class="gi">+ * disabled when the channel is halted or released by the interrupt handler.</span>
<span class="gi">+ * There is no need to handle further interrupts of that type until the</span>
<span class="gi">+ * channel is re-assigned. In fact, subsequent handling may cause crashes</span>
<span class="gi">+ * because the channel structures are cleaned up when the channel is released.</span>
<span class="gi">+ */</span>
<span class="gi">+#define disable_hc_int(_hc_regs_, _intr_) \</span>
<span class="gi">+do { \</span>
<span class="gi">+	hcintmsk_data_t hcintmsk = {.d32 = 0}; \</span>
<span class="gi">+	hcintmsk.b._intr_ = 1; \</span>
<span class="gi">+	dwc_modify_reg32(&amp;(_hc_regs_)-&gt;hcintmsk, hcintmsk.d32, 0); \</span>
<span class="gi">+} while (0)</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Gets the actual length of a transfer after the transfer halts. _halt_status</span>
<span class="gi">+ * holds the reason for the halt.</span>
<span class="gi">+ *</span>
<span class="gi">+ * For IN transfers where halt_status is DWC_OTG_HC_XFER_COMPLETE,</span>
<span class="gi">+ * *short_read is set to 1 upon return if less than the requested</span>
<span class="gi">+ * number of bytes were transferred. Otherwise, *short_read is set to 0 upon</span>
<span class="gi">+ * return. short_read may also be NULL on entry, in which case it remains</span>
<span class="gi">+ * unchanged.</span>
<span class="gi">+ */</span>
<span class="gi">+static uint32_t get_actual_xfer_length(dwc_hc_t *hc,</span>
<span class="gi">+				       dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				       dwc_otg_qtd_t *qtd,</span>
<span class="gi">+				       dwc_otg_halt_status_e halt_status,</span>
<span class="gi">+				       int *short_read)</span>
<span class="gi">+{</span>
<span class="gi">+	hctsiz_data_t	hctsiz;</span>
<span class="gi">+	uint32_t	length;</span>
<span class="gi">+</span>
<span class="gi">+	if (short_read != NULL) {</span>
<span class="gi">+		*short_read = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	hctsiz.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hctsiz);</span>
<span class="gi">+</span>
<span class="gi">+	if (halt_status == DWC_OTG_HC_XFER_COMPLETE) {</span>
<span class="gi">+		if (hc-&gt;ep_is_in) {</span>
<span class="gi">+			length = hc-&gt;xfer_len - hctsiz.b.xfersize;</span>
<span class="gi">+			if (short_read != NULL) {</span>
<span class="gi">+				*short_read = (hctsiz.b.xfersize != 0);</span>
<span class="gi">+			}</span>
<span class="gi">+		} else if (hc-&gt;qh-&gt;do_split) {</span>
<span class="gi">+			length = qtd-&gt;ssplit_out_xfer_count;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			length = hc-&gt;xfer_len;</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Must use the hctsiz.pktcnt field to determine how much data</span>
<span class="gi">+		 * has been transferred. This field reflects the number of</span>
<span class="gi">+		 * packets that have been transferred via the USB. This is</span>
<span class="gi">+		 * always an integral number of packets if the transfer was</span>
<span class="gi">+		 * halted before its normal completion. (Can&#39;t use the</span>
<span class="gi">+		 * hctsiz.xfersize field because that reflects the number of</span>
<span class="gi">+		 * bytes transferred via the AHB, not the USB).</span>
<span class="gi">+		 */</span>
<span class="gi">+		length = (hc-&gt;start_pkt_count - hctsiz.b.pktcnt) * hc-&gt;max_packet;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return length;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Updates the state of the URB after a Transfer Complete interrupt on the</span>
<span class="gi">+ * host channel. Updates the actual_length field of the URB based on the</span>
<span class="gi">+ * number of bytes transferred via the host channel. Sets the URB status</span>
<span class="gi">+ * if the data transfer is finished.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return 1 if the data transfer specified by the URB is completely finished,</span>
<span class="gi">+ * 0 otherwise.</span>
<span class="gi">+ */</span>
<span class="gi">+static int update_urb_state_xfer_comp(dwc_hc_t *hc,</span>
<span class="gi">+				      dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				      struct urb *urb,</span>
<span class="gi">+				      dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	int		xfer_done = 0;</span>
<span class="gi">+	int		short_read = 0;</span>
<span class="gi">+</span>
<span class="gi">+	urb-&gt;actual_length += get_actual_xfer_length(hc, hc_regs, qtd,</span>
<span class="gi">+						     DWC_OTG_HC_XFER_COMPLETE,</span>
<span class="gi">+						     &amp;short_read);</span>
<span class="gi">+</span>
<span class="gi">+	if (short_read || urb-&gt;actual_length == urb-&gt;transfer_buffer_length) {</span>
<span class="gi">+		xfer_done = 1;</span>
<span class="gi">+		if (short_read &amp;&amp; (urb-&gt;transfer_flags &amp; URB_SHORT_NOT_OK)) {</span>
<span class="gi">+			urb-&gt;status = -EREMOTEIO;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			urb-&gt;status = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	{</span>
<span class="gi">+		hctsiz_data_t	hctsiz;</span>
<span class="gi">+		hctsiz.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hctsiz);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;DWC_otg: %s: %s, channel %d\n&quot;,</span>
<span class="gi">+			    __func__, (hc-&gt;ep_is_in ? &quot;IN&quot; : &quot;OUT&quot;), hc-&gt;hc_num);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  hc-&gt;xfer_len %d\n&quot;, hc-&gt;xfer_len);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  hctsiz.xfersize %d\n&quot;, hctsiz.b.xfersize);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  urb-&gt;transfer_buffer_length %d\n&quot;,</span>
<span class="gi">+			    urb-&gt;transfer_buffer_length);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  urb-&gt;actual_length %d\n&quot;, urb-&gt;actual_length);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  short_read %d, xfer_done %d\n&quot;,</span>
<span class="gi">+			    short_read, xfer_done);</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	return xfer_done;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * Save the starting data toggle for the next transfer. The data toggle is</span>
<span class="gi">+ * saved in the QH for non-control transfers and it&#39;s saved in the QTD for</span>
<span class="gi">+ * control transfers.</span>
<span class="gi">+ */</span>
<span class="gi">+static void save_data_toggle(dwc_hc_t *hc,</span>
<span class="gi">+			     dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+			     dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	hctsiz_data_t hctsiz;</span>
<span class="gi">+	hctsiz.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hctsiz);</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;ep_type != DWC_OTG_EP_TYPE_CONTROL) {</span>
<span class="gi">+		dwc_otg_qh_t *qh = hc-&gt;qh;</span>
<span class="gi">+		if (hctsiz.b.pid == DWC_HCTSIZ_DATA0) {</span>
<span class="gi">+			qh-&gt;data_toggle = DWC_OTG_HC_PID_DATA0;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			qh-&gt;data_toggle = DWC_OTG_HC_PID_DATA1;</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		if (hctsiz.b.pid == DWC_HCTSIZ_DATA0) {</span>
<span class="gi">+			qtd-&gt;data_toggle = DWC_OTG_HC_PID_DATA0;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			qtd-&gt;data_toggle = DWC_OTG_HC_PID_DATA1;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Frees the first QTD in the QH&#39;s list if free_qtd is 1. For non-periodic</span>
<span class="gi">+ * QHs, removes the QH from the active non-periodic schedule. If any QTDs are</span>
<span class="gi">+ * still linked to the QH, the QH is added to the end of the inactive</span>
<span class="gi">+ * non-periodic schedule. For periodic QHs, removes the QH from the periodic</span>
<span class="gi">+ * schedule if no more QTDs are linked to the QH.</span>
<span class="gi">+ */</span>
<span class="gi">+static void deactivate_qh(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+			  dwc_otg_qh_t *qh,</span>
<span class="gi">+			  int free_qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	int continue_split = 0;</span>
<span class="gi">+	dwc_otg_qtd_t *qtd;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;  %s(%p,%p,%d)\n&quot;, __func__, hcd, qh, free_qtd);</span>
<span class="gi">+</span>
<span class="gi">+	qtd = list_entry(qh-&gt;qtd_list.next, dwc_otg_qtd_t, qtd_list_entry);</span>
<span class="gi">+</span>
<span class="gi">+	if (qtd-&gt;complete_split) {</span>
<span class="gi">+		continue_split = 1;</span>
<span class="gi">+	} else if (qtd-&gt;isoc_split_pos == DWC_HCSPLIT_XACTPOS_MID ||</span>
<span class="gi">+		   qtd-&gt;isoc_split_pos == DWC_HCSPLIT_XACTPOS_END) {</span>
<span class="gi">+		continue_split = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (free_qtd) {</span>
<span class="gi">+		dwc_otg_hcd_qtd_remove_and_free(hcd, qtd);</span>
<span class="gi">+		continue_split = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	qh-&gt;channel = NULL;</span>
<span class="gi">+	qh-&gt;qtd_in_process = NULL;</span>
<span class="gi">+	dwc_otg_hcd_qh_deactivate(hcd, qh, continue_split);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Updates the state of an Isochronous URB when the transfer is stopped for</span>
<span class="gi">+ * any reason. The fields of the current entry in the frame descriptor array</span>
<span class="gi">+ * are set based on the transfer state and the input _halt_status. Completes</span>
<span class="gi">+ * the Isochronous URB if all the URB frames have been completed.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return DWC_OTG_HC_XFER_COMPLETE if there are more frames remaining to be</span>
<span class="gi">+ * transferred in the URB. Otherwise return DWC_OTG_HC_XFER_URB_COMPLETE.</span>
<span class="gi">+ */</span>
<span class="gi">+static dwc_otg_halt_status_e</span>
<span class="gi">+update_isoc_urb_state(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+		      dwc_hc_t *hc,</span>
<span class="gi">+		      dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+		      dwc_otg_qtd_t *qtd,</span>
<span class="gi">+		      dwc_otg_halt_status_e halt_status)</span>
<span class="gi">+{</span>
<span class="gi">+	struct urb *urb = qtd-&gt;urb;</span>
<span class="gi">+	dwc_otg_halt_status_e ret_val = halt_status;</span>
<span class="gi">+	struct usb_iso_packet_descriptor *frame_desc;</span>
<span class="gi">+</span>
<span class="gi">+	frame_desc = &amp;urb-&gt;iso_frame_desc[qtd-&gt;isoc_frame_index];</span>
<span class="gi">+	switch (halt_status) {</span>
<span class="gi">+	case DWC_OTG_HC_XFER_COMPLETE:</span>
<span class="gi">+		frame_desc-&gt;status = 0;</span>
<span class="gi">+		frame_desc-&gt;actual_length =</span>
<span class="gi">+			get_actual_xfer_length(hc, hc_regs, qtd,</span>
<span class="gi">+					       halt_status, NULL);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_OTG_HC_XFER_FRAME_OVERRUN:</span>
<span class="gi">+		urb-&gt;error_count++;</span>
<span class="gi">+		if (hc-&gt;ep_is_in) {</span>
<span class="gi">+			frame_desc-&gt;status = -ENOSR;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			frame_desc-&gt;status = -ECOMM;</span>
<span class="gi">+		}</span>
<span class="gi">+		frame_desc-&gt;actual_length = 0;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_OTG_HC_XFER_BABBLE_ERR:</span>
<span class="gi">+		urb-&gt;error_count++;</span>
<span class="gi">+		frame_desc-&gt;status = -EOVERFLOW;</span>
<span class="gi">+		/* Don&#39;t need to update actual_length in this case. */</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_OTG_HC_XFER_XACT_ERR:</span>
<span class="gi">+		urb-&gt;error_count++;</span>
<span class="gi">+		frame_desc-&gt;status = -EPROTO;</span>
<span class="gi">+		frame_desc-&gt;actual_length =</span>
<span class="gi">+			get_actual_xfer_length(hc, hc_regs, qtd,</span>
<span class="gi">+					       halt_status, NULL);</span>
<span class="gi">+	default:</span>
<span class="gi">+		DWC_ERROR(&quot;%s: Unhandled _halt_status (%d)\n&quot;, __func__,</span>
<span class="gi">+			  halt_status);</span>
<span class="gi">+		BUG();</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (++qtd-&gt;isoc_frame_index == urb-&gt;number_of_packets) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * urb-&gt;status is not used for isoc transfers.</span>
<span class="gi">+		 * The individual frame_desc statuses are used instead.</span>
<span class="gi">+		 */</span>
<span class="gi">+		dwc_otg_hcd_complete_urb(hcd, urb, 0);</span>
<span class="gi">+		ret_val = DWC_OTG_HC_XFER_URB_COMPLETE;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		ret_val = DWC_OTG_HC_XFER_COMPLETE;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return ret_val;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Releases a host channel for use by other transfers. Attempts to select and</span>
<span class="gi">+ * queue more transactions since at least one host channel is available.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param hcd The HCD state structure.</span>
<span class="gi">+ * @param hc The host channel to release.</span>
<span class="gi">+ * @param qtd The QTD associated with the host channel. This QTD may be freed</span>
<span class="gi">+ * if the transfer is complete or an error has occurred.</span>
<span class="gi">+ * @param halt_status Reason the channel is being released. This status</span>
<span class="gi">+ * determines the actions taken by this function.</span>
<span class="gi">+ */</span>
<span class="gi">+static void release_channel(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+			    dwc_hc_t *hc,</span>
<span class="gi">+			    dwc_otg_qtd_t *qtd,</span>
<span class="gi">+			    dwc_otg_halt_status_e halt_status)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_transaction_type_e tr_type;</span>
<span class="gi">+	int free_qtd;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;  %s: channel %d, halt_status %d\n&quot;,</span>
<span class="gi">+		    __func__, hc-&gt;hc_num, halt_status);</span>
<span class="gi">+</span>
<span class="gi">+	switch (halt_status) {</span>
<span class="gi">+	case DWC_OTG_HC_XFER_URB_COMPLETE:</span>
<span class="gi">+		free_qtd = 1;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_OTG_HC_XFER_AHB_ERR:</span>
<span class="gi">+	case DWC_OTG_HC_XFER_STALL:</span>
<span class="gi">+	case DWC_OTG_HC_XFER_BABBLE_ERR:</span>
<span class="gi">+		free_qtd = 1;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_OTG_HC_XFER_XACT_ERR:</span>
<span class="gi">+		if (qtd-&gt;error_count &gt;= 3) {</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCDV, &quot;  Complete URB with transaction error\n&quot;);</span>
<span class="gi">+			free_qtd = 1;</span>
<span class="gi">+			qtd-&gt;urb-&gt;status = -EPROTO;</span>
<span class="gi">+			dwc_otg_hcd_complete_urb(hcd, qtd-&gt;urb, -EPROTO);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			free_qtd = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_OTG_HC_XFER_URB_DEQUEUE:</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * The QTD has already been removed and the QH has been</span>
<span class="gi">+		 * deactivated. Don&#39;t want to do anything except release the</span>
<span class="gi">+		 * host channel and try to queue more transfers.</span>
<span class="gi">+		 */</span>
<span class="gi">+		goto cleanup;</span>
<span class="gi">+	case DWC_OTG_HC_XFER_NO_HALT_STATUS:</span>
<span class="gi">+		DWC_ERROR(&quot;%s: No halt_status, channel %d\n&quot;, __func__, hc-&gt;hc_num);</span>
<span class="gi">+		free_qtd = 0;</span>
<span class="gi">+		break;</span>
<span class="gi">+	default:</span>
<span class="gi">+		free_qtd = 0;</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	deactivate_qh(hcd, hc-&gt;qh, free_qtd);</span>
<span class="gi">+</span>
<span class="gi">+ cleanup:</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Release the host channel for use by other transfers. The cleanup</span>
<span class="gi">+	 * function clears the channel interrupt enables and conditions, so</span>
<span class="gi">+	 * there&#39;s no need to clear the Channel Halted interrupt separately.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_hc_cleanup(hcd-&gt;core_if, hc);</span>
<span class="gi">+	list_add_tail(&amp;hc-&gt;hc_list_entry, &amp;hcd-&gt;free_hc_list);</span>
<span class="gi">+</span>
<span class="gi">+	switch (hc-&gt;ep_type) {</span>
<span class="gi">+	case DWC_OTG_EP_TYPE_CONTROL:</span>
<span class="gi">+	case DWC_OTG_EP_TYPE_BULK:</span>
<span class="gi">+		hcd-&gt;non_periodic_channels--;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	default:</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Don&#39;t release reservations for periodic channels here.</span>
<span class="gi">+		 * That&#39;s done when a periodic transfer is descheduled (i.e.</span>
<span class="gi">+		 * when the QH is removed from the periodic schedule).</span>
<span class="gi">+		 */</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Try to queue more transfers now that there&#39;s a free channel. */</span>
<span class="gi">+	tr_type = dwc_otg_hcd_select_transactions(hcd);</span>
<span class="gi">+	if (tr_type != DWC_OTG_TRANSACTION_NONE) {</span>
<span class="gi">+		dwc_otg_hcd_queue_transactions(hcd, tr_type);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Halts a host channel. If the channel cannot be halted immediately because</span>
<span class="gi">+ * the request queue is full, this function ensures that the FIFO empty</span>
<span class="gi">+ * interrupt for the appropriate queue is enabled so that the halt request can</span>
<span class="gi">+ * be queued when there is space in the request queue.</span>
<span class="gi">+ *</span>
<span class="gi">+ * This function may also be called in DMA mode. In that case, the channel is</span>
<span class="gi">+ * simply released since the core always halts the channel automatically in</span>
<span class="gi">+ * DMA mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static void halt_channel(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+			 dwc_hc_t *hc,</span>
<span class="gi">+			 dwc_otg_qtd_t *qtd,</span>
<span class="gi">+			 dwc_otg_halt_status_e halt_status)</span>
<span class="gi">+{</span>
<span class="gi">+	if (hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		release_channel(hcd, hc, qtd, halt_status);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Slave mode processing... */</span>
<span class="gi">+	dwc_otg_hc_halt(hcd-&gt;core_if, hc, halt_status);</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;halt_on_queue) {</span>
<span class="gi">+		gintmsk_data_t gintmsk = {.d32 = 0};</span>
<span class="gi">+		dwc_otg_core_global_regs_t *global_regs;</span>
<span class="gi">+		global_regs = hcd-&gt;core_if-&gt;core_global_regs;</span>
<span class="gi">+</span>
<span class="gi">+		if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_CONTROL ||</span>
<span class="gi">+		    hc-&gt;ep_type == DWC_OTG_EP_TYPE_BULK) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Make sure the Non-periodic Tx FIFO empty interrupt</span>
<span class="gi">+			 * is enabled so that the non-periodic schedule will</span>
<span class="gi">+			 * be processed.</span>
<span class="gi">+			 */</span>
<span class="gi">+			gintmsk.b.nptxfempty = 1;</span>
<span class="gi">+			dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, 0, gintmsk.d32);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Move the QH from the periodic queued schedule to</span>
<span class="gi">+			 * the periodic assigned schedule. This allows the</span>
<span class="gi">+			 * halt to be queued when the periodic schedule is</span>
<span class="gi">+			 * processed.</span>
<span class="gi">+			 */</span>
<span class="gi">+			list_move(&amp;hc-&gt;qh-&gt;qh_list_entry,</span>
<span class="gi">+				  &amp;hcd-&gt;periodic_sched_assigned);</span>
<span class="gi">+</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Make sure the Periodic Tx FIFO Empty interrupt is</span>
<span class="gi">+			 * enabled so that the periodic schedule will be</span>
<span class="gi">+			 * processed.</span>
<span class="gi">+			 */</span>
<span class="gi">+			gintmsk.b.ptxfempty = 1;</span>
<span class="gi">+			dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, 0, gintmsk.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Performs common cleanup for non-periodic transfers after a Transfer</span>
<span class="gi">+ * Complete interrupt. This function should be called after any endpoint type</span>
<span class="gi">+ * specific handling is finished to release the host channel.</span>
<span class="gi">+ */</span>
<span class="gi">+static void complete_non_periodic_xfer(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				       dwc_hc_t *hc,</span>
<span class="gi">+				       dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				       dwc_otg_qtd_t *qtd,</span>
<span class="gi">+				       dwc_otg_halt_status_e halt_status)</span>
<span class="gi">+{</span>
<span class="gi">+	hcint_data_t hcint;</span>
<span class="gi">+</span>
<span class="gi">+	qtd-&gt;error_count = 0;</span>
<span class="gi">+</span>
<span class="gi">+	hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+	if (hcint.b.nyet) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Got a NYET on the last transaction of the transfer. This</span>
<span class="gi">+		 * means that the endpoint should be in the PING state at the</span>
<span class="gi">+		 * beginning of the next transfer.</span>
<span class="gi">+		 */</span>
<span class="gi">+		hc-&gt;qh-&gt;ping_state = 1;</span>
<span class="gi">+		clear_hc_int(hc_regs, nyet);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Always halt and release the host channel to make it available for</span>
<span class="gi">+	 * more transfers. There may still be more phases for a control</span>
<span class="gi">+	 * transfer or more data packets for a bulk transfer at this point,</span>
<span class="gi">+	 * but the host channel is still halted. A channel will be reassigned</span>
<span class="gi">+	 * to the transfer when the non-periodic schedule is processed after</span>
<span class="gi">+	 * the channel is released. This allows transactions to be queued</span>
<span class="gi">+	 * properly via dwc_otg_hcd_queue_transactions, which also enables the</span>
<span class="gi">+	 * Tx FIFO Empty interrupt if necessary.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (hc-&gt;ep_is_in) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * IN transfers in Slave mode require an explicit disable to</span>
<span class="gi">+		 * halt the channel. (In DMA mode, this call simply releases</span>
<span class="gi">+		 * the channel.)</span>
<span class="gi">+		 */</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, halt_status);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * The channel is automatically disabled by the core for OUT</span>
<span class="gi">+		 * transfers in Slave mode.</span>
<span class="gi">+		 */</span>
<span class="gi">+		release_channel(hcd, hc, qtd, halt_status);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Performs common cleanup for periodic transfers after a Transfer Complete</span>
<span class="gi">+ * interrupt. This function should be called after any endpoint type specific</span>
<span class="gi">+ * handling is finished to release the host channel.</span>
<span class="gi">+ */</span>
<span class="gi">+static void complete_periodic_xfer(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				   dwc_hc_t *hc,</span>
<span class="gi">+				   dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				   dwc_otg_qtd_t *qtd,</span>
<span class="gi">+				   dwc_otg_halt_status_e halt_status)</span>
<span class="gi">+{</span>
<span class="gi">+	hctsiz_data_t hctsiz;</span>
<span class="gi">+	qtd-&gt;error_count = 0;</span>
<span class="gi">+</span>
<span class="gi">+	hctsiz.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hctsiz);</span>
<span class="gi">+	if (!hc-&gt;ep_is_in || hctsiz.b.pktcnt == 0) {</span>
<span class="gi">+		/* Core halts channel in these cases. */</span>
<span class="gi">+		release_channel(hcd, hc, qtd, halt_status);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		/* Flush any outstanding requests from the Tx queue. */</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, halt_status);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel Transfer Complete interrupt. This handler may be</span>
<span class="gi">+ * called in either DMA mode or Slave mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_xfercomp_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				       dwc_hc_t *hc,</span>
<span class="gi">+				       dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				       dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	int			urb_xfer_done;</span>
<span class="gi">+	dwc_otg_halt_status_e	halt_status = DWC_OTG_HC_XFER_COMPLETE;</span>
<span class="gi">+	struct urb		*urb = qtd-&gt;urb;</span>
<span class="gi">+	int			pipe_type = usb_pipetype(urb-&gt;pipe);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;Transfer Complete--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Handle xfer complete on CSPLIT.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (hc-&gt;qh-&gt;do_split) {</span>
<span class="gi">+		qtd-&gt;complete_split = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Update the QTD and URB states. */</span>
<span class="gi">+	switch (pipe_type) {</span>
<span class="gi">+	case PIPE_CONTROL:</span>
<span class="gi">+		switch (qtd-&gt;control_phase) {</span>
<span class="gi">+		case DWC_OTG_CONTROL_SETUP:</span>
<span class="gi">+			if (urb-&gt;transfer_buffer_length &gt; 0) {</span>
<span class="gi">+				qtd-&gt;control_phase = DWC_OTG_CONTROL_DATA;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				qtd-&gt;control_phase = DWC_OTG_CONTROL_STATUS;</span>
<span class="gi">+			}</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCDV, &quot;  Control setup transaction done\n&quot;);</span>
<span class="gi">+			halt_status = DWC_OTG_HC_XFER_COMPLETE;</span>
<span class="gi">+			break;</span>
<span class="gi">+		case DWC_OTG_CONTROL_DATA: {</span>
<span class="gi">+			urb_xfer_done = update_urb_state_xfer_comp(hc, hc_regs, urb, qtd);</span>
<span class="gi">+			if (urb_xfer_done) {</span>
<span class="gi">+				qtd-&gt;control_phase = DWC_OTG_CONTROL_STATUS;</span>
<span class="gi">+				DWC_DEBUGPL(DBG_HCDV, &quot;  Control data transfer done\n&quot;);</span>
<span class="gi">+			} else {</span>
<span class="gi">+				save_data_toggle(hc, hc_regs, qtd);</span>
<span class="gi">+			}</span>
<span class="gi">+			halt_status = DWC_OTG_HC_XFER_COMPLETE;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		case DWC_OTG_CONTROL_STATUS:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCDV, &quot;  Control transfer complete\n&quot;);</span>
<span class="gi">+			if (urb-&gt;status == -EINPROGRESS) {</span>
<span class="gi">+				urb-&gt;status = 0;</span>
<span class="gi">+			}</span>
<span class="gi">+			dwc_otg_hcd_complete_urb(hcd, urb, urb-&gt;status);</span>
<span class="gi">+			halt_status = DWC_OTG_HC_XFER_URB_COMPLETE;</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		complete_non_periodic_xfer(hcd, hc, hc_regs, qtd, halt_status);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_BULK:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  Bulk transfer complete\n&quot;);</span>
<span class="gi">+		urb_xfer_done = update_urb_state_xfer_comp(hc, hc_regs, urb, qtd);</span>
<span class="gi">+		if (urb_xfer_done) {</span>
<span class="gi">+			dwc_otg_hcd_complete_urb(hcd, urb, urb-&gt;status);</span>
<span class="gi">+			halt_status = DWC_OTG_HC_XFER_URB_COMPLETE;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			halt_status = DWC_OTG_HC_XFER_COMPLETE;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		save_data_toggle(hc, hc_regs, qtd);</span>
<span class="gi">+		complete_non_periodic_xfer(hcd, hc, hc_regs, qtd, halt_status);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_INTERRUPT:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  Interrupt transfer complete\n&quot;);</span>
<span class="gi">+		update_urb_state_xfer_comp(hc, hc_regs, urb, qtd);</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Interrupt URB is done on the first transfer complete</span>
<span class="gi">+		 * interrupt.</span>
<span class="gi">+		 */</span>
<span class="gi">+		dwc_otg_hcd_complete_urb(hcd, urb, urb-&gt;status);</span>
<span class="gi">+		save_data_toggle(hc, hc_regs, qtd);</span>
<span class="gi">+		complete_periodic_xfer(hcd, hc, hc_regs, qtd,</span>
<span class="gi">+				       DWC_OTG_HC_XFER_URB_COMPLETE);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_ISOCHRONOUS:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV,  &quot;  Isochronous transfer complete\n&quot;);</span>
<span class="gi">+		if (qtd-&gt;isoc_split_pos == DWC_HCSPLIT_XACTPOS_ALL) {</span>
<span class="gi">+			halt_status = update_isoc_urb_state(hcd, hc, hc_regs, qtd,</span>
<span class="gi">+							    DWC_OTG_HC_XFER_COMPLETE);</span>
<span class="gi">+		}</span>
<span class="gi">+		complete_periodic_xfer(hcd, hc, hc_regs, qtd, halt_status);</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	disable_hc_int(hc_regs, xfercompl);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel STALL interrupt. This handler may be called in</span>
<span class="gi">+ * either DMA mode or Slave mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_stall_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				    dwc_hc_t *hc,</span>
<span class="gi">+				    dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				    dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	struct urb *urb = qtd-&gt;urb;</span>
<span class="gi">+	int pipe_type = usb_pipetype(urb-&gt;pipe);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;STALL Received--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	if (pipe_type == PIPE_CONTROL) {</span>
<span class="gi">+		dwc_otg_hcd_complete_urb(hcd, urb, -EPIPE);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (pipe_type == PIPE_BULK || pipe_type == PIPE_INTERRUPT) {</span>
<span class="gi">+		dwc_otg_hcd_complete_urb(hcd, urb, -EPIPE);</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * USB protocol requires resetting the data toggle for bulk</span>
<span class="gi">+		 * and interrupt endpoints when a CLEAR_FEATURE(ENDPOINT_HALT)</span>
<span class="gi">+		 * setup command is issued to the endpoint. Anticipate the</span>
<span class="gi">+		 * CLEAR_FEATURE command since a STALL has occurred and reset</span>
<span class="gi">+		 * the data toggle now.</span>
<span class="gi">+		 */</span>
<span class="gi">+		hc-&gt;qh-&gt;data_toggle = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_STALL);</span>
<span class="gi">+</span>
<span class="gi">+	disable_hc_int(hc_regs, stall);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * Updates the state of the URB when a transfer has been stopped due to an</span>
<span class="gi">+ * abnormal condition before the transfer completes. Modifies the</span>
<span class="gi">+ * actual_length field of the URB to reflect the number of bytes that have</span>
<span class="gi">+ * actually been transferred via the host channel.</span>
<span class="gi">+ */</span>
<span class="gi">+static void update_urb_state_xfer_intr(dwc_hc_t *hc,</span>
<span class="gi">+				       dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				       struct urb *urb,</span>
<span class="gi">+				       dwc_otg_qtd_t *qtd,</span>
<span class="gi">+				       dwc_otg_halt_status_e halt_status)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t bytes_transferred = get_actual_xfer_length(hc, hc_regs, qtd,</span>
<span class="gi">+							    halt_status, NULL);</span>
<span class="gi">+	urb-&gt;actual_length += bytes_transferred;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	{</span>
<span class="gi">+		hctsiz_data_t	hctsiz;</span>
<span class="gi">+		hctsiz.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hctsiz);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;DWC_otg: %s: %s, channel %d\n&quot;,</span>
<span class="gi">+			    __func__, (hc-&gt;ep_is_in ? &quot;IN&quot; : &quot;OUT&quot;), hc-&gt;hc_num);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  hc-&gt;start_pkt_count %d\n&quot;, hc-&gt;start_pkt_count);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  hctsiz.pktcnt %d\n&quot;, hctsiz.b.pktcnt);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  hc-&gt;max_packet %d\n&quot;, hc-&gt;max_packet);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  bytes_transferred %d\n&quot;, bytes_transferred);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  urb-&gt;actual_length %d\n&quot;, urb-&gt;actual_length);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;  urb-&gt;transfer_buffer_length %d\n&quot;,</span>
<span class="gi">+			    urb-&gt;transfer_buffer_length);</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel NAK interrupt. This handler may be called in either</span>
<span class="gi">+ * DMA mode or Slave mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_nak_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				  dwc_hc_t *hc,</span>
<span class="gi">+				  dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				  dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;NAK Received--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Handle NAK for IN/OUT SSPLIT/CSPLIT transfers, bulk, control, and</span>
<span class="gi">+	 * interrupt.  Re-start the SSPLIT transfer.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (hc-&gt;do_split) {</span>
<span class="gi">+		if (hc-&gt;complete_split) {</span>
<span class="gi">+			qtd-&gt;error_count = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+		qtd-&gt;complete_split = 0;</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NAK);</span>
<span class="gi">+		goto handle_nak_done;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	switch (usb_pipetype(qtd-&gt;urb-&gt;pipe)) {</span>
<span class="gi">+	case PIPE_CONTROL:</span>
<span class="gi">+	case PIPE_BULK:</span>
<span class="gi">+		if (hcd-&gt;core_if-&gt;dma_enable &amp;&amp; hc-&gt;ep_is_in) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * NAK interrupts are enabled on bulk/control IN</span>
<span class="gi">+			 * transfers in DMA mode for the sole purpose of</span>
<span class="gi">+			 * resetting the error count after a transaction error</span>
<span class="gi">+			 * occurs. The core will continue transferring data.</span>
<span class="gi">+			 */</span>
<span class="gi">+			qtd-&gt;error_count = 0;</span>
<span class="gi">+			goto handle_nak_done;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * NAK interrupts normally occur during OUT transfers in DMA</span>
<span class="gi">+		 * or Slave mode. For IN transfers, more requests will be</span>
<span class="gi">+		 * queued as request queue space is available.</span>
<span class="gi">+		 */</span>
<span class="gi">+		qtd-&gt;error_count = 0;</span>
<span class="gi">+</span>
<span class="gi">+		if (!hc-&gt;qh-&gt;ping_state) {</span>
<span class="gi">+			update_urb_state_xfer_intr(hc, hc_regs, qtd-&gt;urb,</span>
<span class="gi">+						   qtd, DWC_OTG_HC_XFER_NAK);</span>
<span class="gi">+			save_data_toggle(hc, hc_regs, qtd);</span>
<span class="gi">+			if (qtd-&gt;urb-&gt;dev-&gt;speed == USB_SPEED_HIGH) {</span>
<span class="gi">+				hc-&gt;qh-&gt;ping_state = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Halt the channel so the transfer can be re-started from</span>
<span class="gi">+		 * the appropriate point or the PING protocol will</span>
<span class="gi">+		 * start/continue.</span>
<span class="gi">+		 */</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NAK);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_INTERRUPT:</span>
<span class="gi">+		qtd-&gt;error_count = 0;</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NAK);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_ISOCHRONOUS:</span>
<span class="gi">+		/* Should never get called for isochronous transfers. */</span>
<span class="gi">+		BUG();</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+ handle_nak_done:</span>
<span class="gi">+	disable_hc_int(hc_regs, nak);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel ACK interrupt. This interrupt is enabled when</span>
<span class="gi">+ * performing the PING protocol in Slave mode, when errors occur during</span>
<span class="gi">+ * either Slave mode or DMA mode, and during Start Split transactions.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_ack_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				  dwc_hc_t *hc,</span>
<span class="gi">+				  dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				  dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;ACK Received--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;do_split) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Handle ACK on SSPLIT.</span>
<span class="gi">+		 * ACK should not occur in CSPLIT.</span>
<span class="gi">+		 */</span>
<span class="gi">+		if (!hc-&gt;ep_is_in &amp;&amp; hc-&gt;data_pid_start != DWC_OTG_HC_PID_SETUP) {</span>
<span class="gi">+			qtd-&gt;ssplit_out_xfer_count = hc-&gt;xfer_len;</span>
<span class="gi">+		}</span>
<span class="gi">+		if (!(hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC &amp;&amp; !hc-&gt;ep_is_in)) {</span>
<span class="gi">+			/* Don&#39;t need complete for isochronous out transfers. */</span>
<span class="gi">+			qtd-&gt;complete_split = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/* ISOC OUT */</span>
<span class="gi">+		if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC &amp;&amp; !hc-&gt;ep_is_in) {</span>
<span class="gi">+			switch (hc-&gt;xact_pos) {</span>
<span class="gi">+			case DWC_HCSPLIT_XACTPOS_ALL:</span>
<span class="gi">+				break;</span>
<span class="gi">+			case DWC_HCSPLIT_XACTPOS_END:</span>
<span class="gi">+				qtd-&gt;isoc_split_pos = DWC_HCSPLIT_XACTPOS_ALL;</span>
<span class="gi">+				qtd-&gt;isoc_split_offset = 0;</span>
<span class="gi">+				break;</span>
<span class="gi">+			case DWC_HCSPLIT_XACTPOS_BEGIN:</span>
<span class="gi">+			case DWC_HCSPLIT_XACTPOS_MID:</span>
<span class="gi">+				/*</span>
<span class="gi">+				 * For BEGIN or MID, calculate the length for</span>
<span class="gi">+				 * the next microframe to determine the correct</span>
<span class="gi">+				 * SSPLIT token, either MID or END.</span>
<span class="gi">+				 */</span>
<span class="gi">+				{</span>
<span class="gi">+					struct usb_iso_packet_descriptor *frame_desc;</span>
<span class="gi">+</span>
<span class="gi">+					frame_desc = &amp;qtd-&gt;urb-&gt;iso_frame_desc[qtd-&gt;isoc_frame_index];</span>
<span class="gi">+					qtd-&gt;isoc_split_offset += 188;</span>
<span class="gi">+</span>
<span class="gi">+					if ((frame_desc-&gt;length - qtd-&gt;isoc_split_offset) &lt;= 188) {</span>
<span class="gi">+						qtd-&gt;isoc_split_pos = DWC_HCSPLIT_XACTPOS_END;</span>
<span class="gi">+					} else {</span>
<span class="gi">+						qtd-&gt;isoc_split_pos = DWC_HCSPLIT_XACTPOS_MID;</span>
<span class="gi">+					}</span>
<span class="gi">+</span>
<span class="gi">+				}</span>
<span class="gi">+				break;</span>
<span class="gi">+			}</span>
<span class="gi">+		} else {</span>
<span class="gi">+			halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_ACK);</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		qtd-&gt;error_count = 0;</span>
<span class="gi">+</span>
<span class="gi">+		if (hc-&gt;qh-&gt;ping_state) {</span>
<span class="gi">+			hc-&gt;qh-&gt;ping_state = 0;</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Halt the channel so the transfer can be re-started</span>
<span class="gi">+			 * from the appropriate point. This only happens in</span>
<span class="gi">+			 * Slave mode. In DMA mode, the ping_state is cleared</span>
<span class="gi">+			 * when the transfer is started because the core</span>
<span class="gi">+			 * automatically executes the PING, then the transfer.</span>
<span class="gi">+			 */</span>
<span class="gi">+			halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_ACK);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * If the ACK occurred when _not_ in the PING state, let the channel</span>
<span class="gi">+	 * continue transferring data after clearing the error count.</span>
<span class="gi">+	 */</span>
<span class="gi">+</span>
<span class="gi">+	disable_hc_int(hc_regs, ack);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel NYET interrupt. This interrupt should only occur on</span>
<span class="gi">+ * Bulk and Control OUT endpoints and for complete split transactions. If a</span>
<span class="gi">+ * NYET occurs at the same time as a Transfer Complete interrupt, it is</span>
<span class="gi">+ * handled in the xfercomp interrupt handler, not here. This handler may be</span>
<span class="gi">+ * called in either DMA mode or Slave mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_nyet_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				   dwc_hc_t *hc,</span>
<span class="gi">+				   dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				   dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;NYET Received--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * NYET on CSPLIT</span>
<span class="gi">+	 * re-do the CSPLIT immediately on non-periodic</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (hc-&gt;do_split &amp;&amp; hc-&gt;complete_split) {</span>
<span class="gi">+		if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_INTR ||</span>
<span class="gi">+		    hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+			int frnum = dwc_otg_hcd_get_frame_number(dwc_otg_hcd_to_hcd(hcd));</span>
<span class="gi">+</span>
<span class="gi">+			if (dwc_full_frame_num(frnum) !=</span>
<span class="gi">+			    dwc_full_frame_num(hc-&gt;qh-&gt;sched_frame)) {</span>
<span class="gi">+				/*</span>
<span class="gi">+				 * No longer in the same full speed frame.</span>
<span class="gi">+				 * Treat this as a transaction error.</span>
<span class="gi">+				 */</span>
<span class="gi">+#if 0</span>
<span class="gi">+				/** @todo Fix system performance so this can</span>
<span class="gi">+				 * be treated as an error. Right now complete</span>
<span class="gi">+				 * splits cannot be scheduled precisely enough</span>
<span class="gi">+				 * due to other system activity, so this error</span>
<span class="gi">+				 * occurs regularly in Slave mode.</span>
<span class="gi">+				 */</span>
<span class="gi">+				qtd-&gt;error_count++;</span>
<span class="gi">+#endif</span>
<span class="gi">+				qtd-&gt;complete_split = 0;</span>
<span class="gi">+				halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR);</span>
<span class="gi">+				/** @todo add support for isoc release */</span>
<span class="gi">+				goto handle_nyet_done;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NYET);</span>
<span class="gi">+		goto handle_nyet_done;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	hc-&gt;qh-&gt;ping_state = 1;</span>
<span class="gi">+	qtd-&gt;error_count = 0;</span>
<span class="gi">+</span>
<span class="gi">+	update_urb_state_xfer_intr(hc, hc_regs, qtd-&gt;urb, qtd,</span>
<span class="gi">+				   DWC_OTG_HC_XFER_NYET);</span>
<span class="gi">+	save_data_toggle(hc, hc_regs, qtd);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Halt the channel and re-start the transfer so the PING</span>
<span class="gi">+	 * protocol will start.</span>
<span class="gi">+	 */</span>
<span class="gi">+	halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_NYET);</span>
<span class="gi">+</span>
<span class="gi">+handle_nyet_done:</span>
<span class="gi">+	disable_hc_int(hc_regs, nyet);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel babble interrupt. This handler may be called in</span>
<span class="gi">+ * either DMA mode or Slave mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_babble_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				     dwc_hc_t *hc,</span>
<span class="gi">+				     dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				     dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;Babble Error--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+	if (hc-&gt;ep_type != DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+		dwc_otg_hcd_complete_urb(hcd, qtd-&gt;urb, -EOVERFLOW);</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_BABBLE_ERR);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_otg_halt_status_e halt_status;</span>
<span class="gi">+		halt_status = update_isoc_urb_state(hcd, hc, hc_regs, qtd,</span>
<span class="gi">+						    DWC_OTG_HC_XFER_BABBLE_ERR);</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, halt_status);</span>
<span class="gi">+	}</span>
<span class="gi">+	disable_hc_int(hc_regs, bblerr);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel AHB error interrupt. This handler is only called in</span>
<span class="gi">+ * DMA mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_ahberr_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				     dwc_hc_t *hc,</span>
<span class="gi">+				     dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				     dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	hcchar_data_t	hcchar;</span>
<span class="gi">+	hcsplt_data_t	hcsplt;</span>
<span class="gi">+	hctsiz_data_t	hctsiz;</span>
<span class="gi">+	uint32_t	hcdma;</span>
<span class="gi">+	struct urb	*urb = qtd-&gt;urb;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;AHB Error--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	hcsplt.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcsplt);</span>
<span class="gi">+	hctsiz.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hctsiz);</span>
<span class="gi">+	hcdma = dwc_read_reg32(&amp;hc_regs-&gt;hcdma);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_ERROR(&quot;AHB ERROR, Channel %d\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+	DWC_ERROR(&quot;  hcchar 0x%08x, hcsplt 0x%08x\n&quot;, hcchar.d32, hcsplt.d32);</span>
<span class="gi">+	DWC_ERROR(&quot;  hctsiz 0x%08x, hcdma 0x%08x\n&quot;, hctsiz.d32, hcdma);</span>
<span class="gi">+		  DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD URB Enqueue\n&quot;);</span>
<span class="gi">+	DWC_ERROR(&quot;  Device address: %d\n&quot;, usb_pipedevice(urb-&gt;pipe));</span>
<span class="gi">+	DWC_ERROR(&quot;  Endpoint: %d, %s\n&quot;, usb_pipeendpoint(urb-&gt;pipe),</span>
<span class="gi">+		  (usb_pipein(urb-&gt;pipe) ? &quot;IN&quot; : &quot;OUT&quot;));</span>
<span class="gi">+	DWC_ERROR(&quot;  Endpoint type: %s\n&quot;,</span>
<span class="gi">+		  ({char *pipetype;</span>
<span class="gi">+		    switch (usb_pipetype(urb-&gt;pipe)) {</span>
<span class="gi">+		    case PIPE_CONTROL: pipetype = &quot;CONTROL&quot;; break;</span>
<span class="gi">+		    case PIPE_BULK: pipetype = &quot;BULK&quot;; break;</span>
<span class="gi">+		    case PIPE_INTERRUPT: pipetype = &quot;INTERRUPT&quot;; break;</span>
<span class="gi">+		    case PIPE_ISOCHRONOUS: pipetype = &quot;ISOCHRONOUS&quot;; break;</span>
<span class="gi">+		    default: pipetype = &quot;UNKNOWN&quot;; break;</span>
<span class="gi">+		   }; pipetype;}));</span>
<span class="gi">+	DWC_ERROR(&quot;  Speed: %s\n&quot;,</span>
<span class="gi">+		  ({char *speed;</span>
<span class="gi">+		    switch (urb-&gt;dev-&gt;speed) {</span>
<span class="gi">+		    case USB_SPEED_HIGH: speed = &quot;HIGH&quot;; break;</span>
<span class="gi">+		    case USB_SPEED_FULL: speed = &quot;FULL&quot;; break;</span>
<span class="gi">+		    case USB_SPEED_LOW: speed = &quot;LOW&quot;; break;</span>
<span class="gi">+		    default: speed = &quot;UNKNOWN&quot;; break;</span>
<span class="gi">+		   }; speed;}));</span>
<span class="gi">+	DWC_ERROR(&quot;  Max packet size: %d\n&quot;,</span>
<span class="gi">+		  usb_maxpacket(urb-&gt;dev, urb-&gt;pipe, usb_pipeout(urb-&gt;pipe)));</span>
<span class="gi">+	DWC_ERROR(&quot;  Data buffer length: %d\n&quot;, urb-&gt;transfer_buffer_length);</span>
<span class="gi">+	DWC_ERROR(&quot;  Transfer buffer: %p, Transfer DMA: %p\n&quot;,</span>
<span class="gi">+		  urb-&gt;transfer_buffer, (void *)urb-&gt;transfer_dma);</span>
<span class="gi">+	DWC_ERROR(&quot;  Setup buffer: %p, Setup DMA: %p\n&quot;,</span>
<span class="gi">+		  urb-&gt;setup_packet, (void *)urb-&gt;setup_dma);</span>
<span class="gi">+	DWC_ERROR(&quot;  Interval: %d\n&quot;, urb-&gt;interval);</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_hcd_complete_urb(hcd, urb, -EIO);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Force a channel halt. Don&#39;t call halt_channel because that won&#39;t</span>
<span class="gi">+	 * write to the HCCHARn register in DMA mode to force the halt.</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_hc_halt(hcd-&gt;core_if, hc, DWC_OTG_HC_XFER_AHB_ERR);</span>
<span class="gi">+</span>
<span class="gi">+	disable_hc_int(hc_regs, ahberr);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel transaction error interrupt. This handler may be</span>
<span class="gi">+ * called in either DMA mode or Slave mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_xacterr_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				      dwc_hc_t *hc,</span>
<span class="gi">+				      dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				      dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;Transaction Error--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	switch (usb_pipetype(qtd-&gt;urb-&gt;pipe)) {</span>
<span class="gi">+	case PIPE_CONTROL:</span>
<span class="gi">+	case PIPE_BULK:</span>
<span class="gi">+		qtd-&gt;error_count++;</span>
<span class="gi">+		if (!hc-&gt;qh-&gt;ping_state) {</span>
<span class="gi">+			update_urb_state_xfer_intr(hc, hc_regs, qtd-&gt;urb,</span>
<span class="gi">+						   qtd, DWC_OTG_HC_XFER_XACT_ERR);</span>
<span class="gi">+			save_data_toggle(hc, hc_regs, qtd);</span>
<span class="gi">+			if (!hc-&gt;ep_is_in &amp;&amp; qtd-&gt;urb-&gt;dev-&gt;speed == USB_SPEED_HIGH) {</span>
<span class="gi">+				hc-&gt;qh-&gt;ping_state = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Halt the channel so the transfer can be re-started from</span>
<span class="gi">+		 * the appropriate point or the PING protocol will start.</span>
<span class="gi">+		 */</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_INTERRUPT:</span>
<span class="gi">+		qtd-&gt;error_count++;</span>
<span class="gi">+		if (hc-&gt;do_split &amp;&amp; hc-&gt;complete_split) {</span>
<span class="gi">+			qtd-&gt;complete_split = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_XACT_ERR);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_ISOCHRONOUS:</span>
<span class="gi">+		{</span>
<span class="gi">+			dwc_otg_halt_status_e halt_status;</span>
<span class="gi">+			halt_status = update_isoc_urb_state(hcd, hc, hc_regs, qtd,</span>
<span class="gi">+							    DWC_OTG_HC_XFER_XACT_ERR);</span>
<span class="gi">+</span>
<span class="gi">+			halt_channel(hcd, hc, qtd, halt_status);</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	disable_hc_int(hc_regs, xacterr);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel frame overrun interrupt. This handler may be called</span>
<span class="gi">+ * in either DMA mode or Slave mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_frmovrun_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				       dwc_hc_t *hc,</span>
<span class="gi">+				       dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				       dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;Frame Overrun--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	switch (usb_pipetype(qtd-&gt;urb-&gt;pipe)) {</span>
<span class="gi">+	case PIPE_CONTROL:</span>
<span class="gi">+	case PIPE_BULK:</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_INTERRUPT:</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_FRAME_OVERRUN);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_ISOCHRONOUS:</span>
<span class="gi">+		{</span>
<span class="gi">+			dwc_otg_halt_status_e halt_status;</span>
<span class="gi">+			halt_status = update_isoc_urb_state(hcd, hc, hc_regs, qtd,</span>
<span class="gi">+							    DWC_OTG_HC_XFER_FRAME_OVERRUN);</span>
<span class="gi">+</span>
<span class="gi">+			halt_channel(hcd, hc, qtd, halt_status);</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	disable_hc_int(hc_regs, frmovrun);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel data toggle error interrupt. This handler may be</span>
<span class="gi">+ * called in either DMA mode or Slave mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_datatglerr_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+					 dwc_hc_t *hc,</span>
<span class="gi">+					 dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+					 dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;Data Toggle Error--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;ep_is_in) {</span>
<span class="gi">+		qtd-&gt;error_count = 0;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		DWC_ERROR(&quot;Data Toggle Error on OUT transfer,&quot;</span>
<span class="gi">+			  &quot;channel %d\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	disable_hc_int(hc_regs, datatglerr);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is for debug only. It checks that a valid halt status is set</span>
<span class="gi">+ * and that HCCHARn.chdis is clear. If there&#39;s a problem, corrective action is</span>
<span class="gi">+ * taken and a warning is issued.</span>
<span class="gi">+ * @return 1 if halt status is ok, 0 otherwise.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline int halt_status_ok(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				 dwc_hc_t *hc,</span>
<span class="gi">+				 dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				 dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	hcchar_data_t hcchar;</span>
<span class="gi">+	hctsiz_data_t hctsiz;</span>
<span class="gi">+	hcint_data_t hcint;</span>
<span class="gi">+	hcintmsk_data_t hcintmsk;</span>
<span class="gi">+	hcsplt_data_t hcsplt;</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;halt_status == DWC_OTG_HC_XFER_NO_HALT_STATUS) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * This code is here only as a check. This condition should</span>
<span class="gi">+		 * never happen. Ignore the halt if it does occur.</span>
<span class="gi">+		 */</span>
<span class="gi">+		hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+		hctsiz.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hctsiz);</span>
<span class="gi">+		hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+		hcintmsk.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcintmsk);</span>
<span class="gi">+		hcsplt.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcsplt);</span>
<span class="gi">+		DWC_WARN(&quot;%s: hc-&gt;halt_status == DWC_OTG_HC_XFER_NO_HALT_STATUS, &quot;</span>
<span class="gi">+			 &quot;channel %d, hcchar 0x%08x, hctsiz 0x%08x, &quot;</span>
<span class="gi">+			 &quot;hcint 0x%08x, hcintmsk 0x%08x, &quot;</span>
<span class="gi">+			 &quot;hcsplt 0x%08x, qtd-&gt;complete_split %d\n&quot;,</span>
<span class="gi">+			 __func__, hc-&gt;hc_num, hcchar.d32, hctsiz.d32,</span>
<span class="gi">+			 hcint.d32, hcintmsk.d32,</span>
<span class="gi">+			 hcsplt.d32, qtd-&gt;complete_split);</span>
<span class="gi">+</span>
<span class="gi">+		DWC_WARN(&quot;%s: no halt status, channel %d, ignoring interrupt\n&quot;,</span>
<span class="gi">+			 __func__, hc-&gt;hc_num);</span>
<span class="gi">+		DWC_WARN(&quot;\n&quot;);</span>
<span class="gi">+		clear_hc_int(hc_regs, chhltd);</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * This code is here only as a check. hcchar.chdis should</span>
<span class="gi">+	 * never be set when the halt interrupt occurs. Halt the</span>
<span class="gi">+	 * channel again if it does occur.</span>
<span class="gi">+	 */</span>
<span class="gi">+	hcchar.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcchar);</span>
<span class="gi">+	if (hcchar.b.chdis) {</span>
<span class="gi">+		DWC_WARN(&quot;%s: hcchar.chdis set unexpectedly, &quot;</span>
<span class="gi">+			 &quot;hcchar 0x%08x, trying to halt again\n&quot;,</span>
<span class="gi">+			 __func__, hcchar.d32);</span>
<span class="gi">+		clear_hc_int(hc_regs, chhltd);</span>
<span class="gi">+		hc-&gt;halt_pending = 0;</span>
<span class="gi">+		halt_channel(hcd, hc, qtd, hc-&gt;halt_status);</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host Channel Halted interrupt in DMA mode. This handler</span>
<span class="gi">+ * determines the reason the channel halted and proceeds accordingly.</span>
<span class="gi">+ */</span>
<span class="gi">+static void handle_hc_chhltd_intr_dma(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				      dwc_hc_t *hc,</span>
<span class="gi">+				      dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				      dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	hcint_data_t hcint;</span>
<span class="gi">+	hcintmsk_data_t hcintmsk;</span>
<span class="gi">+	int out_nak_enh = 0;</span>
<span class="gi">+</span>
<span class="gi">+	/* For core with OUT NAK enhancement, the flow for high-</span>
<span class="gi">+	 * speed CONTROL/BULK OUT is handled a little differently.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (hcd-&gt;core_if-&gt;snpsid &gt;= 0x4F54271A) {</span>
<span class="gi">+		if (hc-&gt;speed == DWC_OTG_EP_SPEED_HIGH &amp;&amp; !hc-&gt;ep_is_in &amp;&amp;</span>
<span class="gi">+		    (hc-&gt;ep_type == DWC_OTG_EP_TYPE_CONTROL ||</span>
<span class="gi">+		     hc-&gt;ep_type == DWC_OTG_EP_TYPE_BULK)) {</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;OUT NAK enhancement enabled\n&quot;);</span>
<span class="gi">+			out_nak_enh = 1;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			DWC_DEBUGPL(DBG_HCD, &quot;OUT NAK enhancement disabled, not HS Ctrl/Bulk OUT EP\n&quot;);</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;OUT NAK enhancement disabled, no core support\n&quot;);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (hc-&gt;halt_status == DWC_OTG_HC_XFER_URB_DEQUEUE ||</span>
<span class="gi">+	    hc-&gt;halt_status == DWC_OTG_HC_XFER_AHB_ERR) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Just release the channel. A dequeue can happen on a</span>
<span class="gi">+		 * transfer timeout. In the case of an AHB Error, the channel</span>
<span class="gi">+		 * was forced to halt because there&#39;s no way to gracefully</span>
<span class="gi">+		 * recover.</span>
<span class="gi">+		 */</span>
<span class="gi">+		release_channel(hcd, hc, qtd, hc-&gt;halt_status);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Read the HCINTn register to determine the cause for the halt. */</span>
<span class="gi">+	hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+	hcintmsk.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcintmsk);</span>
<span class="gi">+</span>
<span class="gi">+	if (hcint.b.xfercomp) {</span>
<span class="gi">+		/** @todo This is here because of a possible hardware bug.  Spec</span>
<span class="gi">+		 * says that on SPLIT-ISOC OUT transfers in DMA mode that a HALT</span>
<span class="gi">+		 * interrupt w/ACK bit set should occur, but I only see the</span>
<span class="gi">+		 * XFERCOMP bit, even with it masked out.  This is a workaround</span>
<span class="gi">+		 * for that behavior.  Should fix this when hardware is fixed.</span>
<span class="gi">+		 */</span>
<span class="gi">+		if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC &amp;&amp; !hc-&gt;ep_is_in) {</span>
<span class="gi">+			handle_hc_ack_intr(hcd, hc, hc_regs, qtd);</span>
<span class="gi">+		}</span>
<span class="gi">+		handle_hc_xfercomp_intr(hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	} else if (hcint.b.stall) {</span>
<span class="gi">+		handle_hc_stall_intr(hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	} else if (hcint.b.xacterr) {</span>
<span class="gi">+		if (out_nak_enh) {</span>
<span class="gi">+			if (hcint.b.nyet || hcint.b.nak || hcint.b.ack) {</span>
<span class="gi">+				printk(KERN_DEBUG &quot;XactErr with NYET/NAK/ACK\n&quot;);</span>
<span class="gi">+				qtd-&gt;error_count = 0;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				printk(KERN_DEBUG &quot;XactErr without NYET/NAK/ACK\n&quot;);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Must handle xacterr before nak or ack. Could get a xacterr</span>
<span class="gi">+		 * at the same time as either of these on a BULK/CONTROL OUT</span>
<span class="gi">+		 * that started with a PING. The xacterr takes precedence.</span>
<span class="gi">+		 */</span>
<span class="gi">+		handle_hc_xacterr_intr(hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	} else if (!out_nak_enh) {</span>
<span class="gi">+		if (hcint.b.nyet) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Must handle nyet before nak or ack. Could get a nyet at the</span>
<span class="gi">+			 * same time as either of those on a BULK/CONTROL OUT that</span>
<span class="gi">+			 * started with a PING. The nyet takes precedence.</span>
<span class="gi">+			 */</span>
<span class="gi">+			handle_hc_nyet_intr(hcd, hc, hc_regs, qtd);</span>
<span class="gi">+		} else if (hcint.b.bblerr) {</span>
<span class="gi">+			handle_hc_babble_intr(hcd, hc, hc_regs, qtd);</span>
<span class="gi">+		} else if (hcint.b.frmovrun) {</span>
<span class="gi">+			handle_hc_frmovrun_intr(hcd, hc, hc_regs, qtd);</span>
<span class="gi">+		} else if (hcint.b.nak &amp;&amp; !hcintmsk.b.nak) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * If nak is not masked, it&#39;s because a non-split IN transfer</span>
<span class="gi">+			 * is in an error state. In that case, the nak is handled by</span>
<span class="gi">+			 * the nak interrupt handler, not here. Handle nak here for</span>
<span class="gi">+			 * BULK/CONTROL OUT transfers, which halt on a NAK to allow</span>
<span class="gi">+			 * rewinding the buffer pointer.</span>
<span class="gi">+			 */</span>
<span class="gi">+			handle_hc_nak_intr(hcd, hc, hc_regs, qtd);</span>
<span class="gi">+		} else if (hcint.b.ack &amp;&amp; !hcintmsk.b.ack) {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * If ack is not masked, it&#39;s because a non-split IN transfer</span>
<span class="gi">+			 * is in an error state. In that case, the ack is handled by</span>
<span class="gi">+			 * the ack interrupt handler, not here. Handle ack here for</span>
<span class="gi">+			 * split transfers. Start splits halt on ACK.</span>
<span class="gi">+			 */</span>
<span class="gi">+			handle_hc_ack_intr(hcd, hc, hc_regs, qtd);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			if (hc-&gt;ep_type == DWC_OTG_EP_TYPE_INTR ||</span>
<span class="gi">+			    hc-&gt;ep_type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+				/*</span>
<span class="gi">+				 * A periodic transfer halted with no other channel</span>
<span class="gi">+				 * interrupts set. Assume it was halted by the core</span>
<span class="gi">+				 * because it could not be completed in its scheduled</span>
<span class="gi">+				 * (micro)frame.</span>
<span class="gi">+				 */</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+				DWC_PRINT(&quot;%s: Halt channel %d (assume incomplete periodic transfer)\n&quot;,</span>
<span class="gi">+					  __func__, hc-&gt;hc_num);</span>
<span class="gi">+#endif</span>
<span class="gi">+				halt_channel(hcd, hc, qtd, DWC_OTG_HC_XFER_PERIODIC_INCOMPLETE);</span>
<span class="gi">+			} else {</span>
<span class="gi">+				DWC_ERROR(&quot;%s: Channel %d, DMA Mode -- ChHltd set, but reason &quot;</span>
<span class="gi">+					  &quot;for halting is unknown, hcint 0x%08x, intsts 0x%08x\n&quot;,</span>
<span class="gi">+					  __func__, hc-&gt;hc_num, hcint.d32,</span>
<span class="gi">+					  dwc_read_reg32(&amp;hcd-&gt;core_if-&gt;core_global_regs-&gt;gintsts));</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		printk(KERN_DEBUG &quot;NYET/NAK/ACK/other in non-error case, 0x%08x\n&quot;, hcint.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handles a host channel Channel Halted interrupt.</span>
<span class="gi">+ *</span>
<span class="gi">+ * In slave mode, this handler is called only when the driver specifically</span>
<span class="gi">+ * requests a halt. This occurs during handling other host channel interrupts</span>
<span class="gi">+ * (e.g. nak, xacterr, stall, nyet, etc.).</span>
<span class="gi">+ *</span>
<span class="gi">+ * In DMA mode, this is the interrupt that occurs when the core has finished</span>
<span class="gi">+ * processing a transfer on a channel. Other host channel interrupts (except</span>
<span class="gi">+ * ahberr) are disabled in DMA mode.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t handle_hc_chhltd_intr(dwc_otg_hcd_t *hcd,</span>
<span class="gi">+				     dwc_hc_t *hc,</span>
<span class="gi">+				     dwc_otg_hc_regs_t *hc_regs,</span>
<span class="gi">+				     dwc_otg_qtd_t *qtd)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;--Host Channel %d Interrupt: &quot;</span>
<span class="gi">+		    &quot;Channel Halted--\n&quot;, hc-&gt;hc_num);</span>
<span class="gi">+</span>
<span class="gi">+	if (hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		handle_hc_chhltd_intr_dma(hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	} else {</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+		if (!halt_status_ok(hcd, hc, hc_regs, qtd)) {</span>
<span class="gi">+			return 1;</span>
<span class="gi">+		}</span>
<span class="gi">+#endif</span>
<span class="gi">+		release_channel(hcd, hc, qtd, hc-&gt;halt_status);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Handles interrupt for a specific Host Channel */</span>
<span class="gi">+int32_t dwc_otg_hcd_handle_hc_n_intr(dwc_otg_hcd_t *dwc_otg_hcd, uint32_t num)</span>
<span class="gi">+{</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+	hcint_data_t hcint;</span>
<span class="gi">+	hcintmsk_data_t hcintmsk;</span>
<span class="gi">+	dwc_hc_t *hc;</span>
<span class="gi">+	dwc_otg_hc_regs_t *hc_regs;</span>
<span class="gi">+	dwc_otg_qtd_t *qtd;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;--Host Channel Interrupt--, Channel %d\n&quot;, num);</span>
<span class="gi">+</span>
<span class="gi">+	hc = dwc_otg_hcd-&gt;hc_ptr_array[num];</span>
<span class="gi">+	hc_regs = dwc_otg_hcd-&gt;core_if-&gt;host_if-&gt;hc_regs[num];</span>
<span class="gi">+	qtd = list_entry(hc-&gt;qh-&gt;qtd_list.next, dwc_otg_qtd_t, qtd_list_entry);</span>
<span class="gi">+</span>
<span class="gi">+	hcint.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcint);</span>
<span class="gi">+	hcintmsk.d32 = dwc_read_reg32(&amp;hc_regs-&gt;hcintmsk);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;  hcint 0x%08x, hcintmsk 0x%08x, hcint&amp;hcintmsk 0x%08x\n&quot;,</span>
<span class="gi">+		    hcint.d32, hcintmsk.d32, (hcint.d32 &amp; hcintmsk.d32));</span>
<span class="gi">+	hcint.d32 = hcint.d32 &amp; hcintmsk.d32;</span>
<span class="gi">+</span>
<span class="gi">+	if (!dwc_otg_hcd-&gt;core_if-&gt;dma_enable) {</span>
<span class="gi">+		if (hcint.b.chhltd &amp;&amp; hcint.d32 != 0x2) {</span>
<span class="gi">+			hcint.b.chhltd = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (hcint.b.xfercomp) {</span>
<span class="gi">+		retval |= handle_hc_xfercomp_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * If NYET occurred at same time as Xfer Complete, the NYET is</span>
<span class="gi">+		 * handled by the Xfer Complete interrupt handler. Don&#39;t want</span>
<span class="gi">+		 * to call the NYET interrupt handler in this case.</span>
<span class="gi">+		 */</span>
<span class="gi">+		hcint.b.nyet = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	if (hcint.b.chhltd) {</span>
<span class="gi">+		retval |= handle_hc_chhltd_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (hcint.b.ahberr) {</span>
<span class="gi">+		retval |= handle_hc_ahberr_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (hcint.b.stall) {</span>
<span class="gi">+		retval |= handle_hc_stall_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (hcint.b.nak) {</span>
<span class="gi">+		retval |= handle_hc_nak_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (hcint.b.ack) {</span>
<span class="gi">+		retval |= handle_hc_ack_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (hcint.b.nyet) {</span>
<span class="gi">+		retval |= handle_hc_nyet_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (hcint.b.xacterr) {</span>
<span class="gi">+		retval |= handle_hc_xacterr_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (hcint.b.bblerr) {</span>
<span class="gi">+		retval |= handle_hc_babble_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (hcint.b.frmovrun) {</span>
<span class="gi">+		retval |= handle_hc_frmovrun_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+	if (hcint.b.datatglerr) {</span>
<span class="gi">+		retval |= handle_hc_datatglerr_intr(dwc_otg_hcd, hc, hc_regs, qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#endif /* DWC_DEVICE_ONLY */</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_hcd_queue.c</span>
<span class="gu">@@ -0,0 +1,716 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_queue.c $</span>
<span class="gi">+ * $Revision: #33 $</span>
<span class="gi">+ * $Date: 2008/07/15 $</span>
<span class="gi">+ * $Change: 1064918 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+#ifndef DWC_DEVICE_ONLY</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @file</span>
<span class="gi">+ *</span>
<span class="gi">+ * This file contains the functions to manage Queue Heads and Queue</span>
<span class="gi">+ * Transfer Descriptors.</span>
<span class="gi">+ */</span>
<span class="gi">+#include &lt;linux/kernel.h&gt;</span>
<span class="gi">+#include &lt;linux/module.h&gt;</span>
<span class="gi">+#include &lt;linux/moduleparam.h&gt;</span>
<span class="gi">+#include &lt;linux/init.h&gt;</span>
<span class="gi">+#include &lt;linux/device.h&gt;</span>
<span class="gi">+#include &lt;linux/errno.h&gt;</span>
<span class="gi">+#include &lt;linux/list.h&gt;</span>
<span class="gi">+#include &lt;linux/interrupt.h&gt;</span>
<span class="gi">+#include &lt;linux/string.h&gt;</span>
<span class="gi">+#include &lt;linux/version.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;mach/lm.h&gt;</span>
<span class="gi">+#include &lt;mach/irqs.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#include &quot;dwc_otg_driver.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_hcd.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_regs.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function allocates and initializes a QH.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param hcd The HCD state structure for the DWC OTG controller.</span>
<span class="gi">+ * @param[in] urb Holds the information about the device/endpoint that we need</span>
<span class="gi">+ * to initialize the QH.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return Returns pointer to the newly allocated QH, or NULL on error. */</span>
<span class="gi">+dwc_otg_qh_t *dwc_otg_hcd_qh_create (dwc_otg_hcd_t *hcd, struct urb *urb)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_qh_t *qh;</span>
<span class="gi">+</span>
<span class="gi">+	/* Allocate memory */</span>
<span class="gi">+	/** @todo add memflags argument */</span>
<span class="gi">+	qh = dwc_otg_hcd_qh_alloc ();</span>
<span class="gi">+	if (qh == NULL) {</span>
<span class="gi">+		return NULL;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_hcd_qh_init (hcd, qh, urb);</span>
<span class="gi">+	return qh;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Free each QTD in the QH&#39;s QTD-list then free the QH.  QH should already be</span>
<span class="gi">+ * removed from a list.  QTD list should already be empty if called from URB</span>
<span class="gi">+ * Dequeue.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] hcd HCD instance.</span>
<span class="gi">+ * @param[in] qh The QH to free.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hcd_qh_free (dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_qtd_t *qtd;</span>
<span class="gi">+	struct list_head *pos;</span>
<span class="gi">+	//unsigned long flags;</span>
<span class="gi">+</span>
<span class="gi">+	/* Free each QTD in the QTD list */</span>
<span class="gi">+</span>
<span class="gi">+#if CONFIG_SMP</span>
<span class="gi">+	//the spinlock is locked before this function get called,</span>
<span class="gi">+	//but in case the lock is needed, the check function is preserved</span>
<span class="gi">+	</span>
<span class="gi">+	//but in non-SMP mode, all spinlock is lockable.</span>
<span class="gi">+	//don&#39;t do the test in non-SMP mode</span>
<span class="gi">+</span>
<span class="gi">+	if(spin_trylock(&amp;hcd-&gt;lock)) {</span>
<span class="gi">+		printk(&quot;%s: It is not supposed to be lockable!!\n&quot;,__func__);</span>
<span class="gi">+		BUG();</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+//	SPIN_LOCK_IRQSAVE(&amp;hcd-&gt;lock, flags)</span>
<span class="gi">+	for (pos = qh-&gt;qtd_list.next;</span>
<span class="gi">+	     pos != &amp;qh-&gt;qtd_list;</span>
<span class="gi">+	     pos = qh-&gt;qtd_list.next)</span>
<span class="gi">+	{</span>
<span class="gi">+		list_del (pos);</span>
<span class="gi">+		qtd = dwc_list_to_qtd (pos);</span>
<span class="gi">+		dwc_otg_hcd_qtd_free (qtd);</span>
<span class="gi">+	}</span>
<span class="gi">+//	SPIN_UNLOCK_IRQRESTORE(&amp;hcd-&gt;lock, flags)</span>
<span class="gi">+</span>
<span class="gi">+	kfree (qh);</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** Initializes a QH structure.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] hcd The HCD state structure for the DWC OTG controller.</span>
<span class="gi">+ * @param[in] qh The QH to init.</span>
<span class="gi">+ * @param[in] urb Holds the information about the device/endpoint that we need</span>
<span class="gi">+ * to initialize the QH. */</span>
<span class="gi">+#define SCHEDULE_SLOP 10</span>
<span class="gi">+void dwc_otg_hcd_qh_init(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh, struct urb *urb)</span>
<span class="gi">+{</span>
<span class="gi">+	char *speed, *type;</span>
<span class="gi">+	memset (qh, 0, sizeof (dwc_otg_qh_t));</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize QH */</span>
<span class="gi">+	switch (usb_pipetype(urb-&gt;pipe)) {</span>
<span class="gi">+	case PIPE_CONTROL:</span>
<span class="gi">+		qh-&gt;ep_type = USB_ENDPOINT_XFER_CONTROL;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_BULK:</span>
<span class="gi">+		qh-&gt;ep_type = USB_ENDPOINT_XFER_BULK;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_ISOCHRONOUS:</span>
<span class="gi">+		qh-&gt;ep_type = USB_ENDPOINT_XFER_ISOC;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case PIPE_INTERRUPT: </span>
<span class="gi">+		qh-&gt;ep_type = USB_ENDPOINT_XFER_INT;</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	qh-&gt;ep_is_in = usb_pipein(urb-&gt;pipe) ? 1 : 0;</span>
<span class="gi">+</span>
<span class="gi">+	qh-&gt;data_toggle = DWC_OTG_HC_PID_DATA0;</span>
<span class="gi">+	qh-&gt;maxp = usb_maxpacket(urb-&gt;dev, urb-&gt;pipe, !(usb_pipein(urb-&gt;pipe)));</span>
<span class="gi">+	INIT_LIST_HEAD(&amp;qh-&gt;qtd_list);</span>
<span class="gi">+	INIT_LIST_HEAD(&amp;qh-&gt;qh_list_entry);</span>
<span class="gi">+	qh-&gt;channel = NULL;</span>
<span class="gi">+</span>
<span class="gi">+	/* FS/LS Enpoint on HS Hub </span>
<span class="gi">+	 * NOT virtual root hub */</span>
<span class="gi">+	qh-&gt;do_split = 0;</span>
<span class="gi">+	if (((urb-&gt;dev-&gt;speed == USB_SPEED_LOW) || </span>
<span class="gi">+	     (urb-&gt;dev-&gt;speed == USB_SPEED_FULL)) &amp;&amp;</span>
<span class="gi">+	    (urb-&gt;dev-&gt;tt) &amp;&amp; (urb-&gt;dev-&gt;tt-&gt;hub) &amp;&amp; (urb-&gt;dev-&gt;tt-&gt;hub-&gt;devnum != 1)) </span>
<span class="gi">+	{</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;QH init: EP %d: TT found at hub addr %d, for port %d\n&quot;, </span>
<span class="gi">+			   usb_pipeendpoint(urb-&gt;pipe), urb-&gt;dev-&gt;tt-&gt;hub-&gt;devnum, </span>
<span class="gi">+			   urb-&gt;dev-&gt;ttport);</span>
<span class="gi">+		qh-&gt;do_split = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (qh-&gt;ep_type == USB_ENDPOINT_XFER_INT ||</span>
<span class="gi">+	    qh-&gt;ep_type == USB_ENDPOINT_XFER_ISOC) {</span>
<span class="gi">+		/* Compute scheduling parameters once and save them. */</span>
<span class="gi">+		hprt0_data_t hprt;</span>
<span class="gi">+</span>
<span class="gi">+		/** @todo Account for split transfers in the bus time. */</span>
<span class="gi">+		int bytecount = dwc_hb_mult(qh-&gt;maxp) * dwc_max_packet(qh-&gt;maxp);</span>
<span class="gi">+		qh-&gt;usecs = usb_calc_bus_time(urb-&gt;dev-&gt;speed,</span>
<span class="gi">+					       usb_pipein(urb-&gt;pipe),</span>
<span class="gi">+					       (qh-&gt;ep_type == USB_ENDPOINT_XFER_ISOC),</span>
<span class="gi">+					       bytecount);</span>
<span class="gi">+</span>
<span class="gi">+		/* Start in a slightly future (micro)frame. */</span>
<span class="gi">+		qh-&gt;sched_frame = dwc_frame_num_inc(hcd-&gt;frame_number,</span>
<span class="gi">+						     SCHEDULE_SLOP);</span>
<span class="gi">+		qh-&gt;interval = urb-&gt;interval;</span>
<span class="gi">+#if 0</span>
<span class="gi">+		/* Increase interrupt polling rate for debugging. */</span>
<span class="gi">+		if (qh-&gt;ep_type == USB_ENDPOINT_XFER_INT) {</span>
<span class="gi">+			qh-&gt;interval = 8;</span>
<span class="gi">+		}</span>
<span class="gi">+#endif		</span>
<span class="gi">+		hprt.d32 = dwc_read_reg32(hcd-&gt;core_if-&gt;host_if-&gt;hprt0);</span>
<span class="gi">+		if ((hprt.b.prtspd == DWC_HPRT0_PRTSPD_HIGH_SPEED) &amp;&amp; </span>
<span class="gi">+		    ((urb-&gt;dev-&gt;speed == USB_SPEED_LOW) || </span>
<span class="gi">+		     (urb-&gt;dev-&gt;speed == USB_SPEED_FULL))) {</span>
<span class="gi">+			qh-&gt;interval *= 8;</span>
<span class="gi">+			qh-&gt;sched_frame |= 0x7;</span>
<span class="gi">+			qh-&gt;start_split_frame = qh-&gt;sched_frame;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCD, &quot;DWC OTG HCD QH Initialized\n&quot;);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;DWC OTG HCD QH  - qh = %p\n&quot;, qh);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;DWC OTG HCD QH  - Device Address = %d\n&quot;,</span>
<span class="gi">+		    urb-&gt;dev-&gt;devnum);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;DWC OTG HCD QH  - Endpoint %d, %s\n&quot;,</span>
<span class="gi">+		    usb_pipeendpoint(urb-&gt;pipe),</span>
<span class="gi">+		    usb_pipein(urb-&gt;pipe) == USB_DIR_IN ? &quot;IN&quot; : &quot;OUT&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	switch(urb-&gt;dev-&gt;speed) {</span>
<span class="gi">+	case USB_SPEED_LOW: </span>
<span class="gi">+		speed = &quot;low&quot;;	</span>
<span class="gi">+		break;</span>
<span class="gi">+	case USB_SPEED_FULL: </span>
<span class="gi">+		speed = &quot;full&quot;;	</span>
<span class="gi">+		break;</span>
<span class="gi">+	case USB_SPEED_HIGH: </span>
<span class="gi">+		speed = &quot;high&quot;;	</span>
<span class="gi">+		break;</span>
<span class="gi">+	default: </span>
<span class="gi">+		speed = &quot;?&quot;;	</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;DWC OTG HCD QH  - Speed = %s\n&quot;, speed);</span>
<span class="gi">+	</span>
<span class="gi">+	switch (qh-&gt;ep_type) {</span>
<span class="gi">+	case USB_ENDPOINT_XFER_ISOC: </span>
<span class="gi">+		type = &quot;isochronous&quot;;	</span>
<span class="gi">+		break;</span>
<span class="gi">+	case USB_ENDPOINT_XFER_INT: </span>
<span class="gi">+		type = &quot;interrupt&quot;;	</span>
<span class="gi">+		break;</span>
<span class="gi">+	case USB_ENDPOINT_XFER_CONTROL: </span>
<span class="gi">+		type = &quot;control&quot;;	</span>
<span class="gi">+		break;</span>
<span class="gi">+	case USB_ENDPOINT_XFER_BULK: </span>
<span class="gi">+		type = &quot;bulk&quot;;	</span>
<span class="gi">+		break;</span>
<span class="gi">+	default: </span>
<span class="gi">+		type = &quot;?&quot;;	</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+	DWC_DEBUGPL(DBG_HCDV, &quot;DWC OTG HCD QH  - Type = %s\n&quot;,type);</span>
<span class="gi">+	</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	if (qh-&gt;ep_type == USB_ENDPOINT_XFER_INT) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;DWC OTG HCD QH - usecs = %d\n&quot;,</span>
<span class="gi">+			    qh-&gt;usecs);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCDV, &quot;DWC OTG HCD QH - interval = %d\n&quot;,</span>
<span class="gi">+			    qh-&gt;interval);</span>
<span class="gi">+	}</span>
<span class="gi">+#endif	</span>
<span class="gi">+	</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Checks that a channel is available for a periodic transfer.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return 0 if successful, negative error code otherise.</span>
<span class="gi">+ */</span>
<span class="gi">+static int periodic_channel_available(dwc_otg_hcd_t *hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Currently assuming that there is a dedicated host channnel for each</span>
<span class="gi">+	 * periodic transaction plus at least one host channel for</span>
<span class="gi">+	 * non-periodic transactions.</span>
<span class="gi">+	 */</span>
<span class="gi">+	int status;</span>
<span class="gi">+	int num_channels;</span>
<span class="gi">+</span>
<span class="gi">+	num_channels = hcd-&gt;core_if-&gt;core_params-&gt;host_channels;</span>
<span class="gi">+	if ((hcd-&gt;periodic_channels + hcd-&gt;non_periodic_channels &lt; num_channels) &amp;&amp;</span>
<span class="gi">+	    (hcd-&gt;periodic_channels &lt; num_channels - 1)) {</span>
<span class="gi">+		status = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		DWC_NOTICE(&quot;%s: Total channels: %d, Periodic: %d, Non-periodic: %d\n&quot;,</span>
<span class="gi">+			   __func__, num_channels, hcd-&gt;periodic_channels,</span>
<span class="gi">+			   hcd-&gt;non_periodic_channels);</span>
<span class="gi">+		status = -ENOSPC;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return status;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Checks that there is sufficient bandwidth for the specified QH in the</span>
<span class="gi">+ * periodic schedule. For simplicity, this calculation assumes that all the</span>
<span class="gi">+ * transfers in the periodic schedule may occur in the same (micro)frame.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param hcd The HCD state structure for the DWC OTG controller.</span>
<span class="gi">+ * @param qh QH containing periodic bandwidth required.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return 0 if successful, negative error code otherwise.</span>
<span class="gi">+ */</span>
<span class="gi">+static int check_periodic_bandwidth(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)</span>
<span class="gi">+{</span>
<span class="gi">+	int 		status;</span>
<span class="gi">+	uint16_t 	max_claimed_usecs;</span>
<span class="gi">+</span>
<span class="gi">+	status = 0;</span>
<span class="gi">+</span>
<span class="gi">+	if (hcd-&gt;core_if-&gt;core_params-&gt;speed == DWC_SPEED_PARAM_HIGH) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * High speed mode.</span>
<span class="gi">+		 * Max periodic usecs is 80% x 125 usec = 100 usec.</span>
<span class="gi">+		 */</span>
<span class="gi">+		max_claimed_usecs = 100 - qh-&gt;usecs;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Full speed mode.</span>
<span class="gi">+		 * Max periodic usecs is 90% x 1000 usec = 900 usec.</span>
<span class="gi">+		 */</span>
<span class="gi">+		max_claimed_usecs = 900 - qh-&gt;usecs;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (hcd-&gt;periodic_usecs &gt; max_claimed_usecs) {</span>
<span class="gi">+		DWC_NOTICE(&quot;%s: already claimed usecs %d, required usecs %d\n&quot;,</span>
<span class="gi">+			   __func__, hcd-&gt;periodic_usecs, qh-&gt;usecs);</span>
<span class="gi">+		status = -ENOSPC;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return status;</span>
<span class="gi">+}</span>
<span class="gi">+			</span>
<span class="gi">+/**</span>
<span class="gi">+ * Checks that the max transfer size allowed in a host channel is large enough</span>
<span class="gi">+ * to handle the maximum data transfer in a single (micro)frame for a periodic</span>
<span class="gi">+ * transfer.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param hcd The HCD state structure for the DWC OTG controller.</span>
<span class="gi">+ * @param qh QH for a periodic endpoint.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return 0 if successful, negative error code otherwise.</span>
<span class="gi">+ */</span>
<span class="gi">+static int check_max_xfer_size(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)</span>
<span class="gi">+{</span>
<span class="gi">+	int		status;</span>
<span class="gi">+	uint32_t 	max_xfer_size;</span>
<span class="gi">+	uint32_t	max_channel_xfer_size;</span>
<span class="gi">+</span>
<span class="gi">+	status = 0;</span>
<span class="gi">+</span>
<span class="gi">+	max_xfer_size = dwc_max_packet(qh-&gt;maxp) * dwc_hb_mult(qh-&gt;maxp);</span>
<span class="gi">+	max_channel_xfer_size = hcd-&gt;core_if-&gt;core_params-&gt;max_transfer_size;</span>
<span class="gi">+</span>
<span class="gi">+	if (max_xfer_size &gt; max_channel_xfer_size) {</span>
<span class="gi">+		DWC_NOTICE(&quot;%s: Periodic xfer length %d &gt; &quot;</span>
<span class="gi">+			    &quot;max xfer length for channel %d\n&quot;,</span>
<span class="gi">+			    __func__, max_xfer_size, max_channel_xfer_size);</span>
<span class="gi">+		status = -ENOSPC;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return status;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Schedules an interrupt or isochronous transfer in the periodic schedule.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param hcd The HCD state structure for the DWC OTG controller.</span>
<span class="gi">+ * @param qh QH for the periodic transfer. The QH should already contain the</span>
<span class="gi">+ * scheduling information.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return 0 if successful, negative error code otherwise.</span>
<span class="gi">+ */</span>
<span class="gi">+static int schedule_periodic(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)</span>
<span class="gi">+{</span>
<span class="gi">+	int status = 0;</span>
<span class="gi">+</span>
<span class="gi">+	status = periodic_channel_available(hcd);</span>
<span class="gi">+	if (status) {</span>
<span class="gi">+		DWC_NOTICE(&quot;%s: No host channel available for periodic &quot;</span>
<span class="gi">+			   &quot;transfer.\n&quot;, __func__);</span>
<span class="gi">+		return status;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	status = check_periodic_bandwidth(hcd, qh);</span>
<span class="gi">+	if (status) {</span>
<span class="gi">+		DWC_NOTICE(&quot;%s: Insufficient periodic bandwidth for &quot;</span>
<span class="gi">+			   &quot;periodic transfer.\n&quot;, __func__);</span>
<span class="gi">+		return status;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	status = check_max_xfer_size(hcd, qh);</span>
<span class="gi">+	if (status) {</span>
<span class="gi">+		DWC_NOTICE(&quot;%s: Channel max transfer size too small &quot;</span>
<span class="gi">+			    &quot;for periodic transfer.\n&quot;, __func__);</span>
<span class="gi">+		return status;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Always start in the inactive schedule. */</span>
<span class="gi">+	list_add_tail(&amp;qh-&gt;qh_list_entry, &amp;hcd-&gt;periodic_sched_inactive);</span>
<span class="gi">+</span>
<span class="gi">+	/* Reserve the periodic channel. */</span>
<span class="gi">+	hcd-&gt;periodic_channels++;</span>
<span class="gi">+</span>
<span class="gi">+	/* Update claimed usecs per (micro)frame. */</span>
<span class="gi">+	hcd-&gt;periodic_usecs += qh-&gt;usecs;</span>
<span class="gi">+</span>
<span class="gi">+	/* Update average periodic bandwidth claimed and # periodic reqs for usbfs. */</span>
<span class="gi">+	hcd_to_bus(dwc_otg_hcd_to_hcd(hcd))-&gt;bandwidth_allocated += qh-&gt;usecs / qh-&gt;interval;</span>
<span class="gi">+	if (qh-&gt;ep_type == USB_ENDPOINT_XFER_INT) {</span>
<span class="gi">+		hcd_to_bus(dwc_otg_hcd_to_hcd(hcd))-&gt;bandwidth_int_reqs++;</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;Scheduled intr: qh %p, usecs %d, period %d\n&quot;,</span>
<span class="gi">+			    qh, qh-&gt;usecs, qh-&gt;interval);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		hcd_to_bus(dwc_otg_hcd_to_hcd(hcd))-&gt;bandwidth_isoc_reqs++;</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;Scheduled isoc: qh %p, usecs %d, period %d\n&quot;,</span>
<span class="gi">+			    qh, qh-&gt;usecs, qh-&gt;interval);</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	return status;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function adds a QH to either the non periodic or periodic schedule if</span>
<span class="gi">+ * it is not already in the schedule. If the QH is already in the schedule, no</span>
<span class="gi">+ * action is taken.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return 0 if successful, negative error code otherwise.</span>
<span class="gi">+ */</span>
<span class="gi">+int dwc_otg_hcd_qh_add (dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)</span>
<span class="gi">+{</span>
<span class="gi">+	//unsigned long flags;</span>
<span class="gi">+	int status = 0;</span>
<span class="gi">+</span>
<span class="gi">+#if CONFIG_SMP</span>
<span class="gi">+	//the spinlock is locked before this function get called,</span>
<span class="gi">+	//but in case the lock is needed, the check function is preserved</span>
<span class="gi">+	</span>
<span class="gi">+	//but in non-SMP mode, all spinlock is lockable.</span>
<span class="gi">+	//don&#39;t do the test in non-SMP mode</span>
<span class="gi">+</span>
<span class="gi">+	if(spin_trylock(&amp;hcd-&gt;lock)) {</span>
<span class="gi">+		printk(&quot;%s: It is not supposed to be lockable!!\n&quot;,__func__);</span>
<span class="gi">+		BUG();</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+//	SPIN_LOCK_IRQSAVE(&amp;hcd-&gt;lock, flags)</span>
<span class="gi">+</span>
<span class="gi">+	if (!list_empty(&amp;qh-&gt;qh_list_entry)) {</span>
<span class="gi">+		/* QH already in a schedule. */</span>
<span class="gi">+		goto done;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Add the new QH to the appropriate schedule */</span>
<span class="gi">+	if (dwc_qh_is_non_per(qh)) {</span>
<span class="gi">+		/* Always start in the inactive schedule. */</span>
<span class="gi">+		list_add_tail(&amp;qh-&gt;qh_list_entry, &amp;hcd-&gt;non_periodic_sched_inactive);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		status = schedule_periodic(hcd, qh);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+ done:</span>
<span class="gi">+//	SPIN_UNLOCK_IRQRESTORE(&amp;hcd-&gt;lock, flags)</span>
<span class="gi">+</span>
<span class="gi">+	return status;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Removes an interrupt or isochronous transfer from the periodic schedule.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param hcd The HCD state structure for the DWC OTG controller.</span>
<span class="gi">+ * @param qh QH for the periodic transfer.</span>
<span class="gi">+ */</span>
<span class="gi">+static void deschedule_periodic(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)</span>
<span class="gi">+{</span>
<span class="gi">+	list_del_init(&amp;qh-&gt;qh_list_entry);</span>
<span class="gi">+</span>
<span class="gi">+	/* Release the periodic channel reservation. */</span>
<span class="gi">+	hcd-&gt;periodic_channels--;</span>
<span class="gi">+</span>
<span class="gi">+	/* Update claimed usecs per (micro)frame. */</span>
<span class="gi">+	hcd-&gt;periodic_usecs -= qh-&gt;usecs;</span>
<span class="gi">+</span>
<span class="gi">+	/* Update average periodic bandwidth claimed and # periodic reqs for usbfs. */</span>
<span class="gi">+	hcd_to_bus(dwc_otg_hcd_to_hcd(hcd))-&gt;bandwidth_allocated -= qh-&gt;usecs / qh-&gt;interval;</span>
<span class="gi">+</span>
<span class="gi">+	if (qh-&gt;ep_type == USB_ENDPOINT_XFER_INT) {</span>
<span class="gi">+		hcd_to_bus(dwc_otg_hcd_to_hcd(hcd))-&gt;bandwidth_int_reqs--;</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;Descheduled intr: qh %p, usecs %d, period %d\n&quot;,</span>
<span class="gi">+			    qh, qh-&gt;usecs, qh-&gt;interval);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		hcd_to_bus(dwc_otg_hcd_to_hcd(hcd))-&gt;bandwidth_isoc_reqs--;</span>
<span class="gi">+		DWC_DEBUGPL(DBG_HCD, &quot;Descheduled isoc: qh %p, usecs %d, period %d\n&quot;,</span>
<span class="gi">+			    qh, qh-&gt;usecs, qh-&gt;interval);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * Removes a QH from either the non-periodic or periodic schedule.  Memory is</span>
<span class="gi">+ * not freed.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] hcd The HCD state structure.</span>
<span class="gi">+ * @param[in] qh QH to remove from schedule. */</span>
<span class="gi">+void dwc_otg_hcd_qh_remove (dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh)</span>
<span class="gi">+{</span>
<span class="gi">+	//unsigned long flags;</span>
<span class="gi">+</span>
<span class="gi">+#if CONFIG_SMP</span>
<span class="gi">+	//the spinlock is locked before this function get called,</span>
<span class="gi">+	//but in case the lock is needed, the check function is preserved</span>
<span class="gi">+	</span>
<span class="gi">+	//but in non-SMP mode, all spinlock is lockable.</span>
<span class="gi">+	//don&#39;t do the test in non-SMP mode</span>
<span class="gi">+</span>
<span class="gi">+	if(spin_trylock(&amp;hcd-&gt;lock)) {</span>
<span class="gi">+		printk(&quot;%s: It is not supposed to be lockable!!\n&quot;,__func__);</span>
<span class="gi">+		BUG();</span>
<span class="gi">+	}</span>
<span class="gi">+#endif</span>
<span class="gi">+//	SPIN_LOCK_IRQSAVE(&amp;hcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	if (list_empty(&amp;qh-&gt;qh_list_entry)) {</span>
<span class="gi">+		/* QH is not in a schedule. */</span>
<span class="gi">+		goto done;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (dwc_qh_is_non_per(qh)) {</span>
<span class="gi">+		if (hcd-&gt;non_periodic_qh_ptr == &amp;qh-&gt;qh_list_entry) {</span>
<span class="gi">+			hcd-&gt;non_periodic_qh_ptr = hcd-&gt;non_periodic_qh_ptr-&gt;next;</span>
<span class="gi">+		}</span>
<span class="gi">+		list_del_init(&amp;qh-&gt;qh_list_entry);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		deschedule_periodic(hcd, qh);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+ done:</span>
<span class="gi">+//	SPIN_UNLOCK_IRQRESTORE(&amp;hcd-&gt;lock, flags);</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Deactivates a QH. For non-periodic QHs, removes the QH from the active</span>
<span class="gi">+ * non-periodic schedule. The QH is added to the inactive non-periodic</span>
<span class="gi">+ * schedule if any QTDs are still attached to the QH.</span>
<span class="gi">+ *</span>
<span class="gi">+ * For periodic QHs, the QH is removed from the periodic queued schedule. If</span>
<span class="gi">+ * there are any QTDs still attached to the QH, the QH is added to either the</span>
<span class="gi">+ * periodic inactive schedule or the periodic ready schedule and its next</span>
<span class="gi">+ * scheduled frame is calculated. The QH is placed in the ready schedule if</span>
<span class="gi">+ * the scheduled frame has been reached already. Otherwise it&#39;s placed in the</span>
<span class="gi">+ * inactive schedule. If there are no QTDs attached to the QH, the QH is</span>
<span class="gi">+ * completely removed from the periodic schedule.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_hcd_qh_deactivate(dwc_otg_hcd_t *hcd, dwc_otg_qh_t *qh, int sched_next_periodic_split)</span>
<span class="gi">+{</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;hcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	if (dwc_qh_is_non_per(qh)) {</span>
<span class="gi">+		dwc_otg_hcd_qh_remove(hcd, qh);</span>
<span class="gi">+		if (!list_empty(&amp;qh-&gt;qtd_list)) {</span>
<span class="gi">+			/* Add back to inactive non-periodic schedule. */</span>
<span class="gi">+			dwc_otg_hcd_qh_add(hcd, qh);</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		uint16_t frame_number =	dwc_otg_hcd_get_frame_number(dwc_otg_hcd_to_hcd(hcd));</span>
<span class="gi">+</span>
<span class="gi">+		if (qh-&gt;do_split) {</span>
<span class="gi">+			/* Schedule the next continuing periodic split transfer */</span>
<span class="gi">+			if (sched_next_periodic_split) {</span>
<span class="gi">+</span>
<span class="gi">+				qh-&gt;sched_frame = frame_number;</span>
<span class="gi">+				if (dwc_frame_num_le(frame_number,</span>
<span class="gi">+						     dwc_frame_num_inc(qh-&gt;start_split_frame, 1))) {</span>
<span class="gi">+					/*</span>
<span class="gi">+					 * Allow one frame to elapse after start</span>
<span class="gi">+					 * split microframe before scheduling</span>
<span class="gi">+					 * complete split, but DONT if we are</span>
<span class="gi">+					 * doing the next start split in the</span>
<span class="gi">+					 * same frame for an ISOC out.</span>
<span class="gi">+					 */</span>
<span class="gi">+					if ((qh-&gt;ep_type != USB_ENDPOINT_XFER_ISOC) || (qh-&gt;ep_is_in != 0)) {</span>
<span class="gi">+						qh-&gt;sched_frame = dwc_frame_num_inc(qh-&gt;sched_frame, 1);</span>
<span class="gi">+					}</span>
<span class="gi">+				}</span>
<span class="gi">+			} else {</span>
<span class="gi">+				qh-&gt;sched_frame = dwc_frame_num_inc(qh-&gt;start_split_frame,</span>
<span class="gi">+								     qh-&gt;interval);</span>
<span class="gi">+				if (dwc_frame_num_le(qh-&gt;sched_frame, frame_number)) {</span>
<span class="gi">+					qh-&gt;sched_frame = frame_number;</span>
<span class="gi">+				}</span>
<span class="gi">+				qh-&gt;sched_frame |= 0x7;</span>
<span class="gi">+				qh-&gt;start_split_frame = qh-&gt;sched_frame;</span>
<span class="gi">+			}</span>
<span class="gi">+		} else {</span>
<span class="gi">+			qh-&gt;sched_frame = dwc_frame_num_inc(qh-&gt;sched_frame, qh-&gt;interval);</span>
<span class="gi">+			if (dwc_frame_num_le(qh-&gt;sched_frame, frame_number)) {</span>
<span class="gi">+				qh-&gt;sched_frame = frame_number;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		if (list_empty(&amp;qh-&gt;qtd_list)) {</span>
<span class="gi">+			dwc_otg_hcd_qh_remove(hcd, qh);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			/*</span>
<span class="gi">+			 * Remove from periodic_sched_queued and move to</span>
<span class="gi">+			 * appropriate queue.</span>
<span class="gi">+			 */</span>
<span class="gi">+			if (qh-&gt;sched_frame == frame_number) {</span>
<span class="gi">+				list_move(&amp;qh-&gt;qh_list_entry,</span>
<span class="gi">+					  &amp;hcd-&gt;periodic_sched_ready);</span>
<span class="gi">+			} else {</span>
<span class="gi">+				list_move(&amp;qh-&gt;qh_list_entry,</span>
<span class="gi">+					  &amp;hcd-&gt;periodic_sched_inactive);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;hcd-&gt;lock, flags);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This function allocates and initializes a QTD. </span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] urb The URB to create a QTD from.  Each URB-QTD pair will end up</span>
<span class="gi">+ * pointing to each other so each pair should have a unique correlation.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return Returns pointer to the newly allocated QTD, or NULL on error. */</span>
<span class="gi">+dwc_otg_qtd_t *dwc_otg_hcd_qtd_create (struct urb *urb)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_qtd_t *qtd;</span>
<span class="gi">+</span>
<span class="gi">+	qtd = dwc_otg_hcd_qtd_alloc ();</span>
<span class="gi">+	if (qtd == NULL) {</span>
<span class="gi">+		return NULL;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_hcd_qtd_init (qtd, urb);</span>
<span class="gi">+	return qtd;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * Initializes a QTD structure.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] qtd The QTD to initialize.</span>
<span class="gi">+ * @param[in] urb The URB to use for initialization.  */</span>
<span class="gi">+void dwc_otg_hcd_qtd_init (dwc_otg_qtd_t *qtd, struct urb *urb)</span>
<span class="gi">+{</span>
<span class="gi">+	memset (qtd, 0, sizeof (dwc_otg_qtd_t));</span>
<span class="gi">+	qtd-&gt;urb = urb;</span>
<span class="gi">+	if (usb_pipecontrol(urb-&gt;pipe)) {</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * The only time the QTD data toggle is used is on the data</span>
<span class="gi">+		 * phase of control transfers. This phase always starts with</span>
<span class="gi">+		 * DATA1.</span>
<span class="gi">+		 */</span>
<span class="gi">+		qtd-&gt;data_toggle = DWC_OTG_HC_PID_DATA1;</span>
<span class="gi">+		qtd-&gt;control_phase = DWC_OTG_CONTROL_SETUP;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* start split */</span>
<span class="gi">+	qtd-&gt;complete_split = 0;</span>
<span class="gi">+	qtd-&gt;isoc_split_pos = DWC_HCSPLIT_XACTPOS_ALL;</span>
<span class="gi">+	qtd-&gt;isoc_split_offset = 0;</span>
<span class="gi">+</span>
<span class="gi">+	/* Store the qtd ptr in the urb to reference what QTD. */</span>
<span class="gi">+	urb-&gt;hcpriv = qtd;</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function adds a QTD to the QTD-list of a QH.  It will find the correct</span>
<span class="gi">+ * QH to place the QTD into.  If it does not find a QH, then it will create a</span>
<span class="gi">+ * new QH. If the QH to which the QTD is added is not currently scheduled, it</span>
<span class="gi">+ * is placed into the proper schedule based on its EP type.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] qtd The QTD to add</span>
<span class="gi">+ * @param[in] dwc_otg_hcd The DWC HCD structure</span>
<span class="gi">+ *</span>
<span class="gi">+ * @return 0 if successful, negative error code otherwise.</span>
<span class="gi">+ */</span>
<span class="gi">+int dwc_otg_hcd_qtd_add (dwc_otg_qtd_t *qtd,</span>
<span class="gi">+			 dwc_otg_hcd_t *dwc_otg_hcd)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_host_endpoint *ep;</span>
<span class="gi">+	dwc_otg_qh_t *qh;</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+</span>
<span class="gi">+	struct urb *urb = qtd-&gt;urb;</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;dwc_otg_hcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Get the QH which holds the QTD-list to insert to. Create QH if it</span>
<span class="gi">+	 * doesn&#39;t exist.</span>
<span class="gi">+	 */</span>
<span class="gi">+	ep = dwc_urb_to_endpoint(urb);</span>
<span class="gi">+	qh = (dwc_otg_qh_t *)ep-&gt;hcpriv;</span>
<span class="gi">+	if (qh == NULL) {</span>
<span class="gi">+		qh = dwc_otg_hcd_qh_create (dwc_otg_hcd, urb);</span>
<span class="gi">+		if (qh == NULL) {</span>
<span class="gi">+			goto done;</span>
<span class="gi">+		}</span>
<span class="gi">+		ep-&gt;hcpriv = qh;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	retval = dwc_otg_hcd_qh_add(dwc_otg_hcd, qh);</span>
<span class="gi">+	if (retval == 0) {</span>
<span class="gi">+		list_add_tail(&amp;qtd-&gt;qtd_list_entry, &amp;qh-&gt;qtd_list);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+ done:</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;dwc_otg_hcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#endif /* DWC_DEVICE_ONLY */</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_pcd.c</span>
<span class="gu">@@ -0,0 +1,2542 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd.c $</span>
<span class="gi">+ * $Revision: #70 $</span>
<span class="gi">+ * $Date: 2008/10/14 $</span>
<span class="gi">+ * $Change: 1115682 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+</span>
<span class="gi">+/** @file </span>
<span class="gi">+ * This file implements the Peripheral Controller Driver.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The Peripheral Controller Driver (PCD) is responsible for</span>
<span class="gi">+ * translating requests from the Function Driver into the appropriate</span>
<span class="gi">+ * actions on the DWC_otg controller. It isolates the Function Driver</span>
<span class="gi">+ * from the specifics of the controller by providing an API to the</span>
<span class="gi">+ * Function Driver. </span>
<span class="gi">+ *</span>
<span class="gi">+ * The Peripheral Controller Driver for Linux will implement the</span>
<span class="gi">+ * Gadget API, so that the existing Gadget drivers can be used.</span>
<span class="gi">+ * (Gadget Driver is the Linux terminology for a Function Driver.)</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Linux Gadget API is defined in the header file</span>
<span class="gi">+ * &lt;code&gt;&lt;linux/usb_gadget.h&gt;&lt;/code&gt;.  The USB EP operations API is</span>
<span class="gi">+ * defined in the structure &lt;code&gt;usb_ep_ops&lt;/code&gt; and the USB</span>
<span class="gi">+ * Controller API is defined in the structure</span>
<span class="gi">+ * &lt;code&gt;usb_gadget_ops&lt;/code&gt;.</span>
<span class="gi">+ *</span>
<span class="gi">+ * An important function of the PCD is managing interrupts generated</span>
<span class="gi">+ * by the DWC_otg controller. The implementation of the DWC_otg device</span>
<span class="gi">+ * mode interrupt service routines is in dwc_otg_pcd_intr.c.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @todo Add Device Mode test modes (Test J mode, Test K mode, etc).</span>
<span class="gi">+ * @todo Does it work when the request size is greater than DEPTSIZ</span>
<span class="gi">+ * transfer size</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/kernel.h&gt;</span>
<span class="gi">+#include &lt;linux/module.h&gt;</span>
<span class="gi">+#include &lt;linux/moduleparam.h&gt;</span>
<span class="gi">+#include &lt;linux/init.h&gt;</span>
<span class="gi">+#include &lt;linux/device.h&gt;</span>
<span class="gi">+#include &lt;linux/errno.h&gt;</span>
<span class="gi">+#include &lt;linux/list.h&gt;</span>
<span class="gi">+#include &lt;linux/interrupt.h&gt;</span>
<span class="gi">+#include &lt;linux/string.h&gt;</span>
<span class="gi">+#include &lt;linux/dma-mapping.h&gt;</span>
<span class="gi">+#include &lt;linux/version.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+//#include &lt;asm/arch/lm.h&gt;</span>
<span class="gi">+#include &lt;mach/lm.h&gt;</span>
<span class="gi">+#include &lt;mach/irqs.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,21)</span>
<span class="gi">+# include &lt;linux/usb/ch9.h&gt;</span>
<span class="gi">+#else</span>
<span class="gi">+# include &lt;linux/usb_ch9.h&gt;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+//#include &lt;linux/usb_gadget.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	</span>
<span class="gi">+#include &quot;dwc_otg_driver.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_pcd.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Static PCD pointer for use in usb_gadget_register_driver and</span>
<span class="gi">+ * usb_gadget_unregister_driver.  Initialized in dwc_otg_pcd_init.</span>
<span class="gi">+ */</span>
<span class="gi">+static	 dwc_otg_pcd_t *s_pcd = 0;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/* Display the contents of the buffer */</span>
<span class="gi">+extern void dump_msg(const u8 *buf, unsigned int length);</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function completes a request.  It call&#39;s the request call back.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_request_done(dwc_otg_pcd_ep_t *ep, dwc_otg_pcd_request_t *req, </span>
<span class="gi">+				  int status)</span>
<span class="gi">+{</span>
<span class="gi">+	unsigned stopped = ep-&gt;stopped;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s(%p)\n&quot;, __func__, ep);</span>
<span class="gi">+	list_del_init(&amp;req-&gt;queue);</span>
<span class="gi">+</span>
<span class="gi">+	if (req-&gt;req.status == -EINPROGRESS) {</span>
<span class="gi">+		req-&gt;req.status = status;</span>
<span class="gi">+	} else {	</span>
<span class="gi">+		status = req-&gt;req.status;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	/* don&#39;t modify queue heads during completion callback */</span>
<span class="gi">+	ep-&gt;stopped = 1;</span>
<span class="gi">+	SPIN_UNLOCK(&amp;ep-&gt;pcd-&gt;lock);</span>
<span class="gi">+	req-&gt;req.complete(&amp;ep-&gt;ep, &amp;req-&gt;req);</span>
<span class="gi">+	SPIN_LOCK(&amp;ep-&gt;pcd-&gt;lock);</span>
<span class="gi">+</span>
<span class="gi">+	if (ep-&gt;pcd-&gt;request_pending &gt; 0) {</span>
<span class="gi">+		--ep-&gt;pcd-&gt;request_pending;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	ep-&gt;stopped = stopped;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function terminates all the requsts in the EP request queue.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_request_nuke(dwc_otg_pcd_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_request_t *req;</span>
<span class="gi">+</span>
<span class="gi">+	ep-&gt;stopped = 1;</span>
<span class="gi">+</span>
<span class="gi">+	/* called with irqs blocked?? */</span>
<span class="gi">+	while (!list_empty(&amp;ep-&gt;queue)) {</span>
<span class="gi">+		req = list_entry(ep-&gt;queue.next, dwc_otg_pcd_request_t,</span>
<span class="gi">+				 queue);</span>
<span class="gi">+		dwc_otg_request_done(ep, req, -ESHUTDOWN);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/* USB Endpoint Operations */</span>
<span class="gi">+/* </span>
<span class="gi">+ * The following sections briefly describe the behavior of the Gadget</span>
<span class="gi">+ * API endpoint operations implemented in the DWC_otg driver</span>
<span class="gi">+ * software. Detailed descriptions of the generic behavior of each of</span>
<span class="gi">+ * these functions can be found in the Linux header file</span>
<span class="gi">+ * include/linux/usb_gadget.h.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The Gadget API provides wrapper functions for each of the function</span>
<span class="gi">+ * pointers defined in usb_ep_ops. The Gadget Driver calls the wrapper</span>
<span class="gi">+ * function, which then calls the underlying PCD function. The</span>
<span class="gi">+ * following sections are named according to the wrapper</span>
<span class="gi">+ * functions. Within each section, the corresponding DWC_otg PCD</span>
<span class="gi">+ * function name is specified.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function assigns periodic Tx FIFO to an periodic EP</span>
<span class="gi">+ * in shared Tx FIFO mode</span>
<span class="gi">+ */</span>
<span class="gi">+static uint32_t assign_perio_tx_fifo(dwc_otg_core_if_t	*core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t PerTxMsk = 1;</span>
<span class="gi">+	int i;</span>
<span class="gi">+	for(i = 0; i &lt; core_if-&gt;hwcfg4.b.num_dev_perio_in_ep; ++i)</span>
<span class="gi">+	{</span>
<span class="gi">+		if((PerTxMsk &amp; core_if-&gt;p_tx_msk) == 0) {</span>
<span class="gi">+			core_if-&gt;p_tx_msk |= PerTxMsk;</span>
<span class="gi">+			return i + 1;</span>
<span class="gi">+		}</span>
<span class="gi">+		PerTxMsk &lt;&lt;= 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function releases periodic Tx FIFO </span>
<span class="gi">+ * in shared Tx FIFO mode</span>
<span class="gi">+ */</span>
<span class="gi">+static void release_perio_tx_fifo(dwc_otg_core_if_t *core_if, uint32_t fifo_num)</span>
<span class="gi">+{</span>
<span class="gi">+	core_if-&gt;p_tx_msk = (core_if-&gt;p_tx_msk &amp; (1 &lt;&lt; (fifo_num - 1))) ^ core_if-&gt;p_tx_msk;</span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function assigns periodic Tx FIFO to an periodic EP</span>
<span class="gi">+ * in shared Tx FIFO mode</span>
<span class="gi">+ */</span>
<span class="gi">+static uint32_t assign_tx_fifo(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t TxMsk = 1;</span>
<span class="gi">+	int i;</span>
<span class="gi">+	</span>
<span class="gi">+	for(i = 0; i &lt; core_if-&gt;hwcfg4.b.num_in_eps; ++i)</span>
<span class="gi">+	{</span>
<span class="gi">+		if((TxMsk &amp; core_if-&gt;tx_msk) == 0) {</span>
<span class="gi">+			core_if-&gt;tx_msk |= TxMsk;</span>
<span class="gi">+			return i + 1;</span>
<span class="gi">+		}</span>
<span class="gi">+		TxMsk &lt;&lt;= 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function releases periodic Tx FIFO </span>
<span class="gi">+ * in shared Tx FIFO mode</span>
<span class="gi">+ */</span>
<span class="gi">+static void release_tx_fifo(dwc_otg_core_if_t	*core_if, uint32_t fifo_num)</span>
<span class="gi">+{</span>
<span class="gi">+	core_if-&gt;tx_msk = (core_if-&gt;tx_msk &amp; (1 &lt;&lt; (fifo_num - 1))) ^ core_if-&gt;tx_msk;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is called by the Gadget Driver for each EP to be</span>
<span class="gi">+ * configured for the current configuration (SET_CONFIGURATION).  </span>
<span class="gi">+ * </span>
<span class="gi">+ * This function initializes the dwc_otg_ep_t data structure, and then</span>
<span class="gi">+ * calls dwc_otg_ep_activate.</span>
<span class="gi">+ */</span>
<span class="gi">+static int dwc_otg_pcd_ep_enable(struct usb_ep *usb_ep, </span>
<span class="gi">+				 const struct usb_endpoint_descriptor *ep_desc)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep = 0;</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = 0;</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p,%p)\n&quot;, __func__, usb_ep, ep_desc);</span>
<span class="gi">+</span>
<span class="gi">+	ep = container_of(usb_ep, dwc_otg_pcd_ep_t, ep);</span>
<span class="gi">+	if (!usb_ep || !ep_desc || ep-&gt;desc || </span>
<span class="gi">+			ep_desc-&gt;bDescriptorType != USB_DT_ENDPOINT) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bad ep or descriptor\n&quot;, __func__);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+	if (ep == &amp;ep-&gt;pcd-&gt;ep0) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bad ep(0)\n&quot;, __func__);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	/* Check FIFO size? */</span>
<span class="gi">+	if (!ep_desc-&gt;wMaxPacketSize) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bad %s maxpacket\n&quot;, __func__, usb_ep-&gt;name);</span>
<span class="gi">+		return -ERANGE;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	pcd = ep-&gt;pcd;</span>
<span class="gi">+	if (!pcd-&gt;driver || pcd-&gt;gadget.speed == USB_SPEED_UNKNOWN) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bogus device state\n&quot;, __func__);</span>
<span class="gi">+		return -ESHUTDOWN;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+		</span>
<span class="gi">+	ep-&gt;desc = ep_desc;</span>
<span class="gi">+	ep-&gt;ep.maxpacket = le16_to_cpu (ep_desc-&gt;wMaxPacketSize);</span>
<span class="gi">+		</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Activate the EP</span>
<span class="gi">+	 */</span>
<span class="gi">+	ep-&gt;stopped = 0;</span>
<span class="gi">+		</span>
<span class="gi">+	ep-&gt;dwc_ep.is_in = (USB_DIR_IN &amp; ep_desc-&gt;bEndpointAddress) != 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.maxpacket = ep-&gt;ep.maxpacket;</span>
<span class="gi">+	</span>
<span class="gi">+	ep-&gt;dwc_ep.type = ep_desc-&gt;bmAttributes &amp; USB_ENDPOINT_XFERTYPE_MASK;</span>
<span class="gi">+</span>
<span class="gi">+	if(ep-&gt;dwc_ep.is_in) {</span>
<span class="gi">+		if(!pcd-&gt;otg_dev-&gt;core_if-&gt;en_multiple_tx_fifo) {</span>
<span class="gi">+			ep-&gt;dwc_ep.tx_fifo_num = 0;</span>
<span class="gi">+		</span>
<span class="gi">+			if (ep-&gt;dwc_ep.type == USB_ENDPOINT_XFER_ISOC) {</span>
<span class="gi">+				/* </span>
<span class="gi">+				 * if ISOC EP then assign a Periodic Tx FIFO.</span>
<span class="gi">+				 */</span>
<span class="gi">+				ep-&gt;dwc_ep.tx_fifo_num = assign_perio_tx_fifo(pcd-&gt;otg_dev-&gt;core_if);</span>
<span class="gi">+			 }</span>
<span class="gi">+		} else {</span>
<span class="gi">+			/* </span>
<span class="gi">+			 * if Dedicated FIFOs mode is on then assign a Tx FIFO.</span>
<span class="gi">+			 */</span>
<span class="gi">+			ep-&gt;dwc_ep.tx_fifo_num = assign_tx_fifo(pcd-&gt;otg_dev-&gt;core_if);</span>
<span class="gi">+</span>
<span class="gi">+		}</span>
<span class="gi">+	}		 </span>
<span class="gi">+	/* Set initial data PID. */</span>
<span class="gi">+	if (ep-&gt;dwc_ep.type == USB_ENDPOINT_XFER_BULK) {</span>
<span class="gi">+		ep-&gt;dwc_ep.data_pid_start = 0;	</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;Activate %s-%s: type=%d, mps=%d desc=%p\n&quot;, </span>
<span class="gi">+					ep-&gt;ep.name, (ep-&gt;dwc_ep.is_in ?&quot;IN&quot;:&quot;OUT&quot;),</span>
<span class="gi">+					ep-&gt;dwc_ep.type, ep-&gt;dwc_ep.maxpacket, ep-&gt;desc);</span>
<span class="gi">+		</span>
<span class="gi">+	if(ep-&gt;dwc_ep.type != USB_ENDPOINT_XFER_ISOC) {</span>
<span class="gi">+		ep-&gt;dwc_ep.desc_addr = dwc_otg_ep_alloc_desc_chain(&amp;ep-&gt;dwc_ep.dma_desc_addr, MAX_DMA_DESC_CNT);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_ep_activate(GET_CORE_IF(pcd), &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This function is called when an EP is disabled due to disconnect or</span>
<span class="gi">+ * change in configuration. Any pending requests will terminate with a</span>
<span class="gi">+ * status of -ESHUTDOWN.</span>
<span class="gi">+ *</span>
<span class="gi">+ * This function modifies the dwc_otg_ep_t data structure for this EP,</span>
<span class="gi">+ * and then calls dwc_otg_ep_deactivate.</span>
<span class="gi">+ */</span>
<span class="gi">+static int dwc_otg_pcd_ep_disable(struct usb_ep *usb_ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = 0;</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p)\n&quot;, __func__, usb_ep);</span>
<span class="gi">+	ep = container_of(usb_ep, dwc_otg_pcd_ep_t, ep);</span>
<span class="gi">+	if (!usb_ep || !ep-&gt;desc) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;%s, %s not enabled\n&quot;, __func__,</span>
<span class="gi">+			usb_ep ? ep-&gt;ep.name : NULL);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;ep-&gt;pcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_request_nuke(ep);		   </span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_ep_deactivate(GET_CORE_IF(ep-&gt;pcd), &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+	ep-&gt;desc = 0;</span>
<span class="gi">+	ep-&gt;stopped = 1;</span>
<span class="gi">+	</span>
<span class="gi">+	if(ep-&gt;dwc_ep.is_in) {</span>
<span class="gi">+		dwc_otg_flush_tx_fifo(GET_CORE_IF(ep-&gt;pcd), ep-&gt;dwc_ep.tx_fifo_num);</span>
<span class="gi">+		release_perio_tx_fifo(GET_CORE_IF(ep-&gt;pcd), ep-&gt;dwc_ep.tx_fifo_num);</span>
<span class="gi">+		release_tx_fifo(GET_CORE_IF(ep-&gt;pcd), ep-&gt;dwc_ep.tx_fifo_num);</span>
<span class="gi">+	}	</span>
<span class="gi">+	</span>
<span class="gi">+	/* Free DMA Descriptors */</span>
<span class="gi">+	pcd = ep-&gt;pcd;</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;ep-&gt;pcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	if(ep-&gt;dwc_ep.type != USB_ENDPOINT_XFER_ISOC &amp;&amp; ep-&gt;dwc_ep.desc_addr) {</span>
<span class="gi">+		dwc_otg_ep_free_desc_chain(ep-&gt;dwc_ep.desc_addr, ep-&gt;dwc_ep.dma_desc_addr, MAX_DMA_DESC_CNT);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;%s disabled\n&quot;, usb_ep-&gt;name);</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function allocates a request object to use with the specified</span>
<span class="gi">+ * endpoint.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param ep The endpoint to be used with with the request</span>
<span class="gi">+ * @param gfp_flags the GFP_* flags to use.</span>
<span class="gi">+ */</span>
<span class="gi">+static struct usb_request *dwc_otg_pcd_alloc_request(struct usb_ep *ep,</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+						     int gfp_flags</span>
<span class="gi">+#else</span>
<span class="gi">+						     gfp_t gfp_flags</span>
<span class="gi">+#endif</span>
<span class="gi">+						   )</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_request_t *req;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p,%d)\n&quot;, __func__, ep, gfp_flags);</span>
<span class="gi">+	if (0 == ep) {</span>
<span class="gi">+		DWC_WARN(&quot;%s() %s\n&quot;, __func__, &quot;Invalid EP!\n&quot;);</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	req = kmalloc(sizeof(dwc_otg_pcd_request_t), gfp_flags);</span>
<span class="gi">+	if (0 == req) {</span>
<span class="gi">+		DWC_WARN(&quot;%s() %s\n&quot;, __func__, </span>
<span class="gi">+				 &quot;request allocation failed!\n&quot;);</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	memset(req, 0, sizeof(dwc_otg_pcd_request_t));</span>
<span class="gi">+	req-&gt;req.dma = DMA_ADDR_INVALID;</span>
<span class="gi">+	INIT_LIST_HEAD(&amp;req-&gt;queue);</span>
<span class="gi">+	return &amp;req-&gt;req;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function frees a request object.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param ep The endpoint associated with the request</span>
<span class="gi">+ * @param req The request being freed</span>
<span class="gi">+ */</span>
<span class="gi">+static void dwc_otg_pcd_free_request(struct usb_ep *ep,</span>
<span class="gi">+					 struct usb_request *req)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_request_t *request;</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p,%p)\n&quot;, __func__, ep, req);</span>
<span class="gi">+</span>
<span class="gi">+	if (0 == ep || 0 == req) {</span>
<span class="gi">+		DWC_WARN(&quot;%s() %s\n&quot;, __func__, </span>
<span class="gi">+				 &quot;Invalid ep or req argument!\n&quot;);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	request = container_of(req, dwc_otg_pcd_request_t, req);</span>
<span class="gi">+	kfree(request);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#if 0</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function allocates an I/O buffer to be used for a transfer</span>
<span class="gi">+ * to/from the specified endpoint.</span>
<span class="gi">+ * </span>
<span class="gi">+ * @param usb_ep The endpoint to be used with with the request</span>
<span class="gi">+ * @param bytes The desired number of bytes for the buffer</span>
<span class="gi">+ * @param dma Pointer to the buffer&#39;s DMA address; must be valid</span>
<span class="gi">+ * @param gfp_flags the GFP_* flags to use.</span>
<span class="gi">+ * @return address of a new buffer or null is buffer could not be allocated.</span>
<span class="gi">+ */</span>
<span class="gi">+static void *dwc_otg_pcd_alloc_buffer(struct usb_ep *usb_ep, unsigned bytes,</span>
<span class="gi">+				      dma_addr_t *dma,</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				      int gfp_flags</span>
<span class="gi">+#else</span>
<span class="gi">+				      gfp_t gfp_flags</span>
<span class="gi">+#endif</span>
<span class="gi">+				    )</span>
<span class="gi">+{</span>
<span class="gi">+	void *buf;</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = 0;</span>
<span class="gi">+</span>
<span class="gi">+	ep = container_of(usb_ep, dwc_otg_pcd_ep_t, ep);</span>
<span class="gi">+	pcd = ep-&gt;pcd;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p,%d,%p,%0x)\n&quot;, __func__, usb_ep, bytes, </span>
<span class="gi">+				dma, gfp_flags);</span>
<span class="gi">+</span>
<span class="gi">+	/* Check dword alignment */</span>
<span class="gi">+	if ((bytes &amp; 0x3UL) != 0) {</span>
<span class="gi">+		DWC_WARN(&quot;%s() Buffer size is not a multiple of&quot; </span>
<span class="gi">+				 &quot;DWORD size (%d)&quot;,__func__, bytes);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (GET_CORE_IF(pcd)-&gt;dma_enable) {</span>
<span class="gi">+		buf = dma_alloc_coherent (NULL, bytes, dma, gfp_flags);</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		buf = kmalloc(bytes, gfp_flags);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Check dword alignment */</span>
<span class="gi">+	if (((int)buf &amp; 0x3UL) != 0) {</span>
<span class="gi">+		DWC_WARN(&quot;%s() Buffer is not DWORD aligned (%p)&quot;,</span>
<span class="gi">+					__func__, buf);</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	return buf;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function frees an I/O buffer that was allocated by alloc_buffer.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param usb_ep the endpoint associated with the buffer</span>
<span class="gi">+ * @param buf address of the buffer</span>
<span class="gi">+ * @param dma The buffer&#39;s DMA address</span>
<span class="gi">+ * @param bytes The number of bytes of the buffer</span>
<span class="gi">+ */</span>
<span class="gi">+static void dwc_otg_pcd_free_buffer(struct usb_ep *usb_ep, void *buf,</span>
<span class="gi">+					dma_addr_t dma, unsigned bytes)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = 0;</span>
<span class="gi">+</span>
<span class="gi">+	ep = container_of(usb_ep, dwc_otg_pcd_ep_t, ep);</span>
<span class="gi">+	pcd = ep-&gt;pcd;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p,%p,%0x,%d)\n&quot;, __func__, ep, buf, dma, bytes);</span>
<span class="gi">+	</span>
<span class="gi">+	if (GET_CORE_IF(pcd)-&gt;dma_enable) {</span>
<span class="gi">+		dma_free_coherent (NULL, bytes, buf, dma);</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		kfree(buf);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is used to submit an I/O Request to an EP.</span>
<span class="gi">+ *</span>
<span class="gi">+ *	- When the request completes the request&#39;s completion callback</span>
<span class="gi">+ *	  is called to return the request to the driver.</span>
<span class="gi">+ *	- An EP, except control EPs, may have multiple requests</span>
<span class="gi">+ *	  pending.</span>
<span class="gi">+ *	- Once submitted the request cannot be examined or modified.</span>
<span class="gi">+ *	- Each request is turned into one or more packets.</span>
<span class="gi">+ *	- A BULK EP can queue any amount of data; the transfer is</span>
<span class="gi">+ *	  packetized.</span>
<span class="gi">+ *	- Zero length Packets are specified with the request &#39;zero&#39;</span>
<span class="gi">+ *	  flag.</span>
<span class="gi">+ */</span>
<span class="gi">+static int dwc_otg_pcd_ep_queue(struct usb_ep *usb_ep, </span>
<span class="gi">+				struct usb_request *usb_req,</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				int gfp_flags</span>
<span class="gi">+#else</span>
<span class="gi">+				gfp_t gfp_flags</span>
<span class="gi">+#endif</span>
<span class="gi">+			      )</span>
<span class="gi">+{</span>
<span class="gi">+	int prevented = 0;</span>
<span class="gi">+	dwc_otg_pcd_request_t *req;</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	dwc_otg_pcd_t	*pcd;</span>
<span class="gi">+	unsigned long flags = 0;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p,%p,%d)\n&quot;, </span>
<span class="gi">+			__func__, usb_ep, usb_req, gfp_flags);</span>
<span class="gi">+		</span>
<span class="gi">+	req = container_of(usb_req, dwc_otg_pcd_request_t, req);</span>
<span class="gi">+	if (!usb_req || !usb_req-&gt;complete || !usb_req-&gt;buf || </span>
<span class="gi">+			!list_empty(&amp;req-&gt;queue)) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bad params\n&quot;, __func__);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	ep = container_of(usb_ep, dwc_otg_pcd_ep_t, ep);</span>
<span class="gi">+	if (!usb_ep || (!ep-&gt;desc &amp;&amp; ep-&gt;dwc_ep.num != 0)/* || ep-&gt;stopped != 0*/) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bad ep\n&quot;, __func__);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	pcd = ep-&gt;pcd;</span>
<span class="gi">+	if (!pcd-&gt;driver || pcd-&gt;gadget.speed == USB_SPEED_UNKNOWN) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;gadget.speed=%d\n&quot;, pcd-&gt;gadget.speed);</span>
<span class="gi">+		DWC_WARN(&quot;%s, bogus device state\n&quot;, __func__);</span>
<span class="gi">+		return -ESHUTDOWN;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;%s queue req %p, len %d buf %p\n&quot;,</span>
<span class="gi">+			   usb_ep-&gt;name, usb_req, usb_req-&gt;length, usb_req-&gt;buf);</span>
<span class="gi">+</span>
<span class="gi">+	if (!GET_CORE_IF(pcd)-&gt;core_params-&gt;opt) {</span>
<span class="gi">+		if (ep-&gt;dwc_ep.num != 0) {</span>
<span class="gi">+			DWC_ERROR(&quot;%s queue req %p, len %d buf %p\n&quot;,</span>
<span class="gi">+					  usb_ep-&gt;name, usb_req, usb_req-&gt;length, usb_req-&gt;buf);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;ep-&gt;pcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+#if defined(DEBUG) &amp; defined(VERBOSE)</span>
<span class="gi">+	dump_msg(usb_req-&gt;buf, usb_req-&gt;length);</span>
<span class="gi">+#endif	</span>
<span class="gi">+</span>
<span class="gi">+	usb_req-&gt;status = -EINPROGRESS;</span>
<span class="gi">+	usb_req-&gt;actual = 0;</span>
<span class="gi">+</span>
<span class="gi">+	/* </span>
<span class="gi">+	 * For EP0 IN without premature status, zlp is required?</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (ep-&gt;dwc_ep.num == 0 &amp;&amp; ep-&gt;dwc_ep.is_in) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;%s-OUT ZLP\n&quot;, usb_ep-&gt;name);</span>
<span class="gi">+		//_req-&gt;zero = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Start the transfer */</span>
<span class="gi">+	if (list_empty(&amp;ep-&gt;queue) &amp;&amp; !ep-&gt;stopped) {</span>
<span class="gi">+		/* EP0 Transfer? */</span>
<span class="gi">+		if (ep-&gt;dwc_ep.num == 0) {</span>
<span class="gi">+			switch (pcd-&gt;ep0state) {</span>
<span class="gi">+			case EP0_IN_DATA_PHASE:</span>
<span class="gi">+				DWC_DEBUGPL(DBG_PCD, </span>
<span class="gi">+						&quot;%s ep0: EP0_IN_DATA_PHASE\n&quot;, </span>
<span class="gi">+						__func__);</span>
<span class="gi">+				break;</span>
<span class="gi">+</span>
<span class="gi">+			case EP0_OUT_DATA_PHASE:</span>
<span class="gi">+				DWC_DEBUGPL(DBG_PCD, </span>
<span class="gi">+						&quot;%s ep0: EP0_OUT_DATA_PHASE\n&quot;, </span>
<span class="gi">+						__func__);</span>
<span class="gi">+				if (pcd-&gt;request_config) { </span>
<span class="gi">+					/* Complete STATUS PHASE */</span>
<span class="gi">+					ep-&gt;dwc_ep.is_in = 1;</span>
<span class="gi">+					pcd-&gt;ep0state = EP0_IN_STATUS_PHASE;</span>
<span class="gi">+				}</span>
<span class="gi">+				break;</span>
<span class="gi">+						</span>
<span class="gi">+			case EP0_IN_STATUS_PHASE:</span>
<span class="gi">+				DWC_DEBUGPL(DBG_PCD, </span>
<span class="gi">+						&quot;%s ep0: EP0_IN_STATUS_PHASE\n&quot;, </span>
<span class="gi">+						__func__);</span>
<span class="gi">+				break;</span>
<span class="gi">+</span>
<span class="gi">+			default:</span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY, &quot;ep0: odd state %d\n&quot;, </span>
<span class="gi">+						pcd-&gt;ep0state);</span>
<span class="gi">+				SPIN_UNLOCK_IRQRESTORE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+				return -EL2HLT;</span>
<span class="gi">+			}</span>
<span class="gi">+			ep-&gt;dwc_ep.dma_addr = usb_req-&gt;dma;</span>
<span class="gi">+			ep-&gt;dwc_ep.start_xfer_buff = usb_req-&gt;buf;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_buff = usb_req-&gt;buf;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_len = usb_req-&gt;length;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_count = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.total_len = ep-&gt;dwc_ep.xfer_len;</span>
<span class="gi">+			</span>
<span class="gi">+			if(usb_req-&gt;zero) {</span>
<span class="gi">+				if((ep-&gt;dwc_ep.xfer_len % ep-&gt;dwc_ep.maxpacket == 0) </span>
<span class="gi">+						&amp;&amp; (ep-&gt;dwc_ep.xfer_len != 0)) {</span>
<span class="gi">+					ep-&gt;dwc_ep.sent_zlp = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+				</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			ep_check_and_patch_dma_addr(ep);</span>
<span class="gi">+			dwc_otg_ep0_start_transfer(GET_CORE_IF(pcd), &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			</span>
<span class="gi">+			uint32_t max_transfer = GET_CORE_IF(ep-&gt;pcd)-&gt;core_params-&gt;max_transfer_size;</span>
<span class="gi">+			</span>
<span class="gi">+			/* Setup and start the Transfer */</span>
<span class="gi">+			ep-&gt;dwc_ep.dma_addr = usb_req-&gt;dma;</span>
<span class="gi">+			ep-&gt;dwc_ep.start_xfer_buff = usb_req-&gt;buf;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_buff = usb_req-&gt;buf;</span>
<span class="gi">+			ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.total_len = usb_req-&gt;length;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_len = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_count = 0;</span>
<span class="gi">+			</span>
<span class="gi">+			if(max_transfer &gt; MAX_TRANSFER_SIZE) {</span>
<span class="gi">+				ep-&gt;dwc_ep.maxxfer = max_transfer - (max_transfer % ep-&gt;dwc_ep.maxpacket);</span>
<span class="gi">+			} else {</span>
<span class="gi">+				ep-&gt;dwc_ep.maxxfer = max_transfer;</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			if(usb_req-&gt;zero) {</span>
<span class="gi">+				if((ep-&gt;dwc_ep.total_len % ep-&gt;dwc_ep.maxpacket == 0) </span>
<span class="gi">+						&amp;&amp; (ep-&gt;dwc_ep.total_len != 0)) {</span>
<span class="gi">+					ep-&gt;dwc_ep.sent_zlp = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+				</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			ep_check_and_patch_dma_addr(ep);</span>
<span class="gi">+			dwc_otg_ep_start_transfer(GET_CORE_IF(pcd), &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if ((req != 0) || prevented) {</span>
<span class="gi">+		++pcd-&gt;request_pending;</span>
<span class="gi">+		list_add_tail(&amp;req-&gt;queue, &amp;ep-&gt;queue);</span>
<span class="gi">+		if (ep-&gt;dwc_ep.is_in &amp;&amp; ep-&gt;stopped &amp;&amp; !(GET_CORE_IF(pcd)-&gt;dma_enable)) {</span>
<span class="gi">+			/** @todo NGS Create a function for this. */</span>
<span class="gi">+			diepmsk_data_t diepmsk = { .d32 = 0};</span>
<span class="gi">+			diepmsk.b.intktxfemp = 1;</span>
<span class="gi">+			if(&amp;GET_CORE_IF(pcd)-&gt;multiproc_int_enable) {</span>
<span class="gi">+				dwc_modify_reg32(&amp;GET_CORE_IF(pcd)-&gt;dev_if-&gt;dev_global_regs-&gt;diepeachintmsk[ep-&gt;dwc_ep.num],</span>
<span class="gi">+							0, diepmsk.d32);</span>
<span class="gi">+			} else {</span>
<span class="gi">+				dwc_modify_reg32(&amp;GET_CORE_IF(pcd)-&gt;dev_if-&gt;dev_global_regs-&gt;diepmsk, 0, diepmsk.d32);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function cancels an I/O request from an EP.</span>
<span class="gi">+ */</span>
<span class="gi">+static int dwc_otg_pcd_ep_dequeue(struct usb_ep *usb_ep,</span>
<span class="gi">+				  struct usb_request *usb_req)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_request_t *req;</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	dwc_otg_pcd_t	*pcd;</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p,%p)\n&quot;, __func__, usb_ep, usb_req);</span>
<span class="gi">+		</span>
<span class="gi">+	ep = container_of(usb_ep, dwc_otg_pcd_ep_t, ep);</span>
<span class="gi">+	if (!usb_ep || !usb_req || (!ep-&gt;desc &amp;&amp; ep-&gt;dwc_ep.num != 0)) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bad argument\n&quot;, __func__);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+	pcd = ep-&gt;pcd;</span>
<span class="gi">+	if (!pcd-&gt;driver || pcd-&gt;gadget.speed == USB_SPEED_UNKNOWN) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bogus device state\n&quot;, __func__);</span>
<span class="gi">+		return -ESHUTDOWN;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s %s %s %p\n&quot;, __func__, usb_ep-&gt;name,</span>
<span class="gi">+					ep-&gt;dwc_ep.is_in ? &quot;IN&quot; : &quot;OUT&quot;,</span>
<span class="gi">+					usb_req);</span>
<span class="gi">+</span>
<span class="gi">+	/* make sure it&#39;s actually queued on this endpoint */</span>
<span class="gi">+	list_for_each_entry(req, &amp;ep-&gt;queue, queue) </span>
<span class="gi">+	{</span>
<span class="gi">+		if (&amp;req-&gt;req == usb_req) {</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (&amp;req-&gt;req != usb_req) {</span>
<span class="gi">+		SPIN_UNLOCK_IRQRESTORE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if (!list_empty(&amp;req-&gt;queue)) {</span>
<span class="gi">+		dwc_otg_request_done(ep, req, -ECONNRESET);</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		req = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	return req ? 0 : -EOPNOTSUPP;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * usb_ep_set_halt stalls an endpoint. </span>
<span class="gi">+ *</span>
<span class="gi">+ * usb_ep_clear_halt clears an endpoint halt and resets its data</span>
<span class="gi">+ * toggle.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Both of these functions are implemented with the same underlying</span>
<span class="gi">+ * function. The behavior depends on the value argument.</span>
<span class="gi">+ * </span>
<span class="gi">+ * @param[in] usb_ep the Endpoint to halt or clear halt.</span>
<span class="gi">+ * @param[in] value </span>
<span class="gi">+ *	- 0 means clear_halt.</span>
<span class="gi">+ *	- 1 means set_halt, </span>
<span class="gi">+ *	- 2 means clear stall lock flag.</span>
<span class="gi">+ *	- 3 means set  stall lock flag.</span>
<span class="gi">+ */</span>
<span class="gi">+static int dwc_otg_pcd_ep_set_halt(struct usb_ep *usb_ep, int value)</span>
<span class="gi">+{</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep = 0;</span>
<span class="gi">+		</span>
<span class="gi">+		</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD,&quot;HALT %s %d\n&quot;, usb_ep-&gt;name, value);</span>
<span class="gi">+</span>
<span class="gi">+	ep = container_of(usb_ep, dwc_otg_pcd_ep_t, ep);</span>
<span class="gi">+</span>
<span class="gi">+	if (!usb_ep || (!ep-&gt;desc &amp;&amp; ep != &amp;ep-&gt;pcd-&gt;ep0) ||</span>
<span class="gi">+			ep-&gt;desc-&gt;bmAttributes == USB_ENDPOINT_XFER_ISOC) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bad ep\n&quot;, __func__);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;ep-&gt;pcd-&gt;lock, flags);</span>
<span class="gi">+	if (!list_empty(&amp;ep-&gt;queue)) {</span>
<span class="gi">+		DWC_WARN(&quot;%s() %s XFer In process\n&quot;, __func__, usb_ep-&gt;name);</span>
<span class="gi">+		retval = -EAGAIN;</span>
<span class="gi">+	}</span>
<span class="gi">+	else if (value == 0) {</span>
<span class="gi">+		dwc_otg_ep_clear_stall(ep-&gt;pcd-&gt;otg_dev-&gt;core_if, </span>
<span class="gi">+					&amp;ep-&gt;dwc_ep);		 </span>
<span class="gi">+	}</span>
<span class="gi">+	else if(value == 1) {</span>
<span class="gi">+		if (ep-&gt;dwc_ep.is_in == 1 &amp;&amp; ep-&gt;pcd-&gt;otg_dev-&gt;core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+			dtxfsts_data_t txstatus;</span>
<span class="gi">+			fifosize_data_t txfifosize;</span>
<span class="gi">+</span>
<span class="gi">+			txfifosize.d32 = dwc_read_reg32(&amp;ep-&gt;pcd-&gt;otg_dev-&gt;core_if-&gt;core_global_regs-&gt;dptxfsiz_dieptxf[ep-&gt;dwc_ep.tx_fifo_num]);</span>
<span class="gi">+			txstatus.d32 = dwc_read_reg32(&amp;ep-&gt;pcd-&gt;otg_dev-&gt;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;dwc_ep.num]-&gt;dtxfsts);</span>
<span class="gi">+</span>
<span class="gi">+			if(txstatus.b.txfspcavail &lt; txfifosize.b.depth) {</span>
<span class="gi">+				DWC_WARN(&quot;%s() %s Data In Tx Fifo\n&quot;, __func__, usb_ep-&gt;name);</span>
<span class="gi">+				retval = -EAGAIN;</span>
<span class="gi">+			}</span>
<span class="gi">+			else {</span>
<span class="gi">+				if (ep-&gt;dwc_ep.num == 0) {</span>
<span class="gi">+					ep-&gt;pcd-&gt;ep0state = EP0_STALL;</span>
<span class="gi">+				}</span>
<span class="gi">+				</span>
<span class="gi">+				ep-&gt;stopped = 1;</span>
<span class="gi">+				dwc_otg_ep_set_stall(ep-&gt;pcd-&gt;otg_dev-&gt;core_if, </span>
<span class="gi">+							&amp;ep-&gt;dwc_ep);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			if (ep-&gt;dwc_ep.num == 0) {</span>
<span class="gi">+				ep-&gt;pcd-&gt;ep0state = EP0_STALL;</span>
<span class="gi">+			}</span>
<span class="gi">+			</span>
<span class="gi">+			ep-&gt;stopped = 1;</span>
<span class="gi">+			dwc_otg_ep_set_stall(ep-&gt;pcd-&gt;otg_dev-&gt;core_if, </span>
<span class="gi">+						&amp;ep-&gt;dwc_ep);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	else if (value == 2) {</span>
<span class="gi">+		ep-&gt;dwc_ep.stall_clear_flag = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	else if (value == 3) {</span>
<span class="gi">+		ep-&gt;dwc_ep.stall_clear_flag = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;ep-&gt;pcd-&gt;lock, flags);</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function allocates a DMA Descriptor chain for the Endpoint </span>
<span class="gi">+ * buffer to be used for a transfer to/from the specified endpoint.</span>
<span class="gi">+ */</span>
<span class="gi">+dwc_otg_dma_desc_t* dwc_otg_ep_alloc_desc_chain(uint32_t * dma_desc_addr, uint32_t count)</span>
<span class="gi">+{</span>
<span class="gi">+</span>
<span class="gi">+	return dma_alloc_coherent(NULL, count * sizeof(dwc_otg_dma_desc_t), dma_desc_addr, GFP_KERNEL);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+LIST_HEAD(tofree_list);</span>
<span class="gi">+spinlock_t tofree_list_lock=SPIN_LOCK_UNLOCKED;</span>
<span class="gi">+</span>
<span class="gi">+struct free_param {</span>
<span class="gi">+	struct list_head list;</span>
<span class="gi">+</span>
<span class="gi">+	void* addr;</span>
<span class="gi">+	dma_addr_t dma_addr;</span>
<span class="gi">+	uint32_t size;</span>
<span class="gi">+};</span>
<span class="gi">+void free_list_agent_fn(void *data){</span>
<span class="gi">+	struct list_head free_list;</span>
<span class="gi">+	struct free_param *cur,*next;</span>
<span class="gi">+</span>
<span class="gi">+	spin_lock(&amp;tofree_list_lock);</span>
<span class="gi">+	list_add(&amp;free_list,&amp;tofree_list);</span>
<span class="gi">+	list_del_init(&amp;tofree_list);</span>
<span class="gi">+	spin_unlock(&amp;tofree_list_lock);</span>
<span class="gi">+</span>
<span class="gi">+	list_for_each_entry_safe(cur,next,&amp;free_list,list){</span>
<span class="gi">+		if(cur==&amp;free_list) break;</span>
<span class="gi">+		dma_free_coherent(NULL,cur-&gt;size,cur-&gt;addr,cur-&gt;dma_addr);</span>
<span class="gi">+		list_del(&amp;cur-&gt;list);</span>
<span class="gi">+		kfree(cur);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+DECLARE_WORK(free_list_agent,free_list_agent_fn);</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function frees a DMA Descriptor chain that was allocated by ep_alloc_desc.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_ep_free_desc_chain(dwc_otg_dma_desc_t* desc_addr, uint32_t dma_desc_addr, uint32_t count)</span>
<span class="gi">+{</span>
<span class="gi">+	if(irqs_disabled()){</span>
<span class="gi">+		struct free_param* fp=kmalloc(sizeof(struct free_param),GFP_KERNEL);</span>
<span class="gi">+		fp-&gt;addr=desc_addr;</span>
<span class="gi">+		fp-&gt;dma_addr=dma_desc_addr;</span>
<span class="gi">+		fp-&gt;size=count*sizeof(dwc_otg_dma_desc_t);</span>
<span class="gi">+</span>
<span class="gi">+		spin_lock(&amp;tofree_list_lock);</span>
<span class="gi">+		list_add(&amp;fp-&gt;list,&amp;tofree_list);</span>
<span class="gi">+		spin_unlock(&amp;tofree_list_lock);</span>
<span class="gi">+</span>
<span class="gi">+		schedule_work(&amp;free_list_agent);</span>
<span class="gi">+		return ;</span>
<span class="gi">+	}</span>
<span class="gi">+	dma_free_coherent(NULL, count * sizeof(dwc_otg_dma_desc_t), desc_addr, dma_desc_addr);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function initializes a descriptor chain for Isochronous transfer</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param dwc_ep The EP to start the transfer on.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_iso_ep_start_ddma_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *dwc_ep)</span>
<span class="gi">+{</span>
<span class="gi">+	</span>
<span class="gi">+ 	dsts_data_t 		dsts = { .d32 = 0};</span>
<span class="gi">+	depctl_data_t 		depctl = { .d32 = 0 };</span>
<span class="gi">+	volatile uint32_t 	*addr;</span>
<span class="gi">+ 	int 			i, j;</span>
<span class="gi">+		</span>
<span class="gi">+	if(dwc_ep-&gt;is_in) </span>
<span class="gi">+		dwc_ep-&gt;desc_cnt = dwc_ep-&gt;buf_proc_intrvl / dwc_ep-&gt;bInterval;</span>
<span class="gi">+	else</span>
<span class="gi">+		dwc_ep-&gt;desc_cnt = dwc_ep-&gt;buf_proc_intrvl * dwc_ep-&gt;pkt_per_frm / dwc_ep-&gt;bInterval;</span>
<span class="gi">+	</span>
<span class="gi">+	</span>
<span class="gi">+	/** Allocate descriptors for double buffering */</span>
<span class="gi">+	dwc_ep-&gt;iso_desc_addr = dwc_otg_ep_alloc_desc_chain(&amp;dwc_ep-&gt;iso_dma_desc_addr,dwc_ep-&gt;desc_cnt*2);</span>
<span class="gi">+	if(dwc_ep-&gt;desc_addr) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, can&#39;t allocate DMA descriptor chain\n&quot;, __func__);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dsts.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dsts);</span>
<span class="gi">+</span>
<span class="gi">+	/** ISO OUT EP */</span>
<span class="gi">+	if(dwc_ep-&gt;is_in == 0) {</span>
<span class="gi">+		desc_sts_data_t sts = { .d32 =0 };</span>
<span class="gi">+		dwc_otg_dma_desc_t* dma_desc = dwc_ep-&gt;iso_desc_addr;</span>
<span class="gi">+		dma_addr_t dma_ad;</span>
<span class="gi">+		uint32_t data_per_desc;</span>
<span class="gi">+		dwc_otg_dev_out_ep_regs_t *out_regs = </span>
<span class="gi">+			core_if-&gt;dev_if-&gt;out_ep_regs[dwc_ep-&gt;num];</span>
<span class="gi">+		int	offset;</span>
<span class="gi">+</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;out_ep_regs[dwc_ep-&gt;num]-&gt;doepctl;</span>
<span class="gi">+		dma_ad = (dma_addr_t)dwc_read_reg32(&amp;(out_regs-&gt;doepdma));</span>
<span class="gi">+</span>
<span class="gi">+		/** Buffer 0 descriptors setup */</span>
<span class="gi">+		dma_ad = dwc_ep-&gt;dma_addr0;</span>
<span class="gi">+</span>
<span class="gi">+		sts.b_iso_out.bs = BS_HOST_READY;</span>
<span class="gi">+		sts.b_iso_out.rxsts = 0;</span>
<span class="gi">+		sts.b_iso_out.l = 0;</span>
<span class="gi">+		sts.b_iso_out.sp = 0; </span>
<span class="gi">+		sts.b_iso_out.ioc = 0;</span>
<span class="gi">+		sts.b_iso_out.pid = 0;</span>
<span class="gi">+		sts.b_iso_out.framenum = 0;</span>
<span class="gi">+</span>
<span class="gi">+		offset = 0;</span>
<span class="gi">+		for(i = 0; i &lt; dwc_ep-&gt;desc_cnt - dwc_ep-&gt;pkt_per_frm; i+= dwc_ep-&gt;pkt_per_frm)</span>
<span class="gi">+		{</span>
<span class="gi">+			</span>
<span class="gi">+			for(j = 0; j &lt; dwc_ep-&gt;pkt_per_frm; ++j)</span>
<span class="gi">+			{</span>
<span class="gi">+				data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+					dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+				</span>
<span class="gi">+				data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+				sts.b_iso_out.rxbytes = data_per_desc;</span>
<span class="gi">+				writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+				writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+</span>
<span class="gi">+				offset += data_per_desc;</span>
<span class="gi">+				dma_desc ++;			</span>
<span class="gi">+				//(uint32_t)dma_ad += data_per_desc;</span>
<span class="gi">+				dma_ad = (uint32_t)dma_ad + data_per_desc;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		for(j = 0; j &lt; dwc_ep-&gt;pkt_per_frm - 1; ++j)</span>
<span class="gi">+		{</span>
<span class="gi">+			data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+				dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+			data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+			sts.b_iso_out.rxbytes = data_per_desc;</span>
<span class="gi">+			writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+			writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+</span>
<span class="gi">+			offset += data_per_desc;</span>
<span class="gi">+			dma_desc ++;		</span>
<span class="gi">+			//(uint32_t)dma_ad += data_per_desc;</span>
<span class="gi">+			dma_ad = (uint32_t)dma_ad + data_per_desc;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		sts.b_iso_out.ioc = 1;</span>
<span class="gi">+		data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+			dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+		data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+		sts.b_iso_out.rxbytes = data_per_desc;</span>
<span class="gi">+</span>
<span class="gi">+		writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+		writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+		dma_desc ++;	</span>
<span class="gi">+		</span>
<span class="gi">+		/** Buffer 1 descriptors setup */</span>
<span class="gi">+		sts.b_iso_out.ioc = 0;</span>
<span class="gi">+		dma_ad = dwc_ep-&gt;dma_addr1;</span>
<span class="gi">+</span>
<span class="gi">+		offset = 0;</span>
<span class="gi">+		for(i = 0; i &lt; dwc_ep-&gt;desc_cnt - dwc_ep-&gt;pkt_per_frm; i+= dwc_ep-&gt;pkt_per_frm)</span>
<span class="gi">+		{</span>
<span class="gi">+			for(j = 0; j &lt; dwc_ep-&gt;pkt_per_frm; ++j)</span>
<span class="gi">+			{</span>
<span class="gi">+				data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+					dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+				data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+				sts.b_iso_out.rxbytes = data_per_desc;</span>
<span class="gi">+				writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+				writel(sts.d32, &amp;dma_desc-&gt;status);</span>
<span class="gi">+				</span>
<span class="gi">+				offset += data_per_desc;</span>
<span class="gi">+				dma_desc ++;			</span>
<span class="gi">+				//(uint32_t)dma_ad += data_per_desc;</span>
<span class="gi">+				dma_ad = (uint32_t)dma_ad + data_per_desc;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		for(j = 0; j &lt; dwc_ep-&gt;pkt_per_frm - 1; ++j)</span>
<span class="gi">+		{</span>
<span class="gi">+			data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+				dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+			data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+			sts.b_iso_out.rxbytes = data_per_desc;</span>
<span class="gi">+			writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+			writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+			</span>
<span class="gi">+			offset += data_per_desc;</span>
<span class="gi">+			dma_desc ++;		</span>
<span class="gi">+			//(uint32_t)dma_ad += data_per_desc;</span>
<span class="gi">+			dma_ad = (uint32_t)dma_ad + data_per_desc;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		sts.b_iso_out.ioc = 1;</span>
<span class="gi">+		sts.b_iso_out.l = 1;</span>
<span class="gi">+		data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+			dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+		data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+		sts.b_iso_out.rxbytes = data_per_desc;</span>
<span class="gi">+</span>
<span class="gi">+		writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+		writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+</span>
<span class="gi">+		dwc_ep-&gt;next_frame = 0;</span>
<span class="gi">+			</span>
<span class="gi">+		/** Write dma_ad into DOEPDMA register */</span>
<span class="gi">+		dwc_write_reg32(&amp;(out_regs-&gt;doepdma),(uint32_t)dwc_ep-&gt;iso_dma_desc_addr);</span>
<span class="gi">+</span>
<span class="gi">+	}</span>
<span class="gi">+	/** ISO IN EP */</span>
<span class="gi">+	else {</span>
<span class="gi">+		desc_sts_data_t sts = { .d32 =0 };</span>
<span class="gi">+		dwc_otg_dma_desc_t* dma_desc = dwc_ep-&gt;iso_desc_addr;</span>
<span class="gi">+		dma_addr_t dma_ad;</span>
<span class="gi">+		dwc_otg_dev_in_ep_regs_t *in_regs = </span>
<span class="gi">+			core_if-&gt;dev_if-&gt;in_ep_regs[dwc_ep-&gt;num];</span>
<span class="gi">+		unsigned int		   frmnumber;</span>
<span class="gi">+		fifosize_data_t		txfifosize,rxfifosize;</span>
<span class="gi">+</span>
<span class="gi">+		txfifosize.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[dwc_ep-&gt;num]-&gt;dtxfsts);</span>
<span class="gi">+		rxfifosize.d32 = dwc_read_reg32(&amp;core_if-&gt;core_global_regs-&gt;grxfsiz);</span>
<span class="gi">+</span>
<span class="gi">+		</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;in_ep_regs[dwc_ep-&gt;num]-&gt;diepctl;</span>
<span class="gi">+</span>
<span class="gi">+		dma_ad = dwc_ep-&gt;dma_addr0;</span>
<span class="gi">+		</span>
<span class="gi">+		dsts.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dsts);</span>
<span class="gi">+</span>
<span class="gi">+		sts.b_iso_in.bs = BS_HOST_READY;</span>
<span class="gi">+		sts.b_iso_in.txsts = 0;</span>
<span class="gi">+		sts.b_iso_in.sp = (dwc_ep-&gt;data_per_frame % dwc_ep-&gt;maxpacket)? 1 : 0;</span>
<span class="gi">+		sts.b_iso_in.ioc = 0;</span>
<span class="gi">+		sts.b_iso_in.pid = dwc_ep-&gt;pkt_per_frm;</span>
<span class="gi">+</span>
<span class="gi">+		</span>
<span class="gi">+		frmnumber = dwc_ep-&gt;next_frame;</span>
<span class="gi">+</span>
<span class="gi">+		sts.b_iso_in.framenum = frmnumber;</span>
<span class="gi">+		sts.b_iso_in.txbytes = dwc_ep-&gt;data_per_frame;</span>
<span class="gi">+		sts.b_iso_in.l = 0;</span>
<span class="gi">+		</span>
<span class="gi">+		/** Buffer 0 descriptors setup */</span>
<span class="gi">+		for(i = 0; i &lt; dwc_ep-&gt;desc_cnt - 1; i++)</span>
<span class="gi">+		{</span>
<span class="gi">+			writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+			writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+			dma_desc ++;				</span>
<span class="gi">+			</span>
<span class="gi">+			//(uint32_t)dma_ad += dwc_ep-&gt;data_per_frame;</span>
<span class="gi">+			dma_ad = (uint32_t)dma_ad + dwc_ep-&gt;data_per_frame;</span>
<span class="gi">+			sts.b_iso_in.framenum += dwc_ep-&gt;bInterval;			</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		sts.b_iso_in.ioc = 1;</span>
<span class="gi">+		writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+		writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+		++dma_desc;</span>
<span class="gi">+</span>
<span class="gi">+		/** Buffer 1 descriptors setup */</span>
<span class="gi">+		sts.b_iso_in.ioc = 0;</span>
<span class="gi">+		dma_ad = dwc_ep-&gt;dma_addr1;</span>
<span class="gi">+</span>
<span class="gi">+		for(i = 0; i &lt; dwc_ep-&gt;desc_cnt - dwc_ep-&gt;pkt_per_frm; i+= dwc_ep-&gt;pkt_per_frm)</span>
<span class="gi">+		{</span>
<span class="gi">+			writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+			writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+			dma_desc ++;				</span>
<span class="gi">+			</span>
<span class="gi">+			//(uint32_t)dma_ad += dwc_ep-&gt;data_per_frame;</span>
<span class="gi">+			dma_ad = (uint32_t)dma_ad + dwc_ep-&gt;data_per_frame;</span>
<span class="gi">+			sts.b_iso_in.framenum += dwc_ep-&gt;bInterval;</span>
<span class="gi">+</span>
<span class="gi">+			sts.b_iso_in.ioc = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+		sts.b_iso_in.ioc = 1;</span>
<span class="gi">+		sts.b_iso_in.l = 1;</span>
<span class="gi">+</span>
<span class="gi">+		writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+		writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+		</span>
<span class="gi">+		dwc_ep-&gt;next_frame = sts.b_iso_in.framenum + dwc_ep-&gt;bInterval;</span>
<span class="gi">+</span>
<span class="gi">+		/** Write dma_ad into diepdma register */</span>
<span class="gi">+		dwc_write_reg32(&amp;(in_regs-&gt;diepdma),(uint32_t)dwc_ep-&gt;iso_dma_desc_addr);</span>
<span class="gi">+	}</span>
<span class="gi">+	/** Enable endpoint, clear nak  */</span>
<span class="gi">+	depctl.d32 = 0;	</span>
<span class="gi">+	depctl.b.epena = 1;</span>
<span class="gi">+	depctl.b.usbactep = 1;</span>
<span class="gi">+	depctl.b.cnak = 1;</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_modify_reg32(addr, depctl.d32,depctl.d32);</span>
<span class="gi">+	depctl.d32 = dwc_read_reg32(addr);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function initializes a descriptor chain for Isochronous transfer</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to start the transfer on.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+void dwc_otg_iso_ep_start_buf_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	depctl_data_t 		depctl = { .d32 = 0 };</span>
<span class="gi">+	volatile uint32_t 	*addr;</span>
<span class="gi">+	</span>
<span class="gi">+</span>
<span class="gi">+	if(ep-&gt;is_in) {</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepctl;</span>
<span class="gi">+	} else {	</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepctl;</span>
<span class="gi">+	}	</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	if(core_if-&gt;dma_enable == 0 || core_if-&gt;dma_desc_enable!= 0) {</span>
<span class="gi">+		return;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		deptsiz_data_t		deptsiz = { .d32 = 0 };</span>
<span class="gi">+		</span>
<span class="gi">+		ep-&gt;xfer_len = ep-&gt;data_per_frame * ep-&gt;buf_proc_intrvl / ep-&gt;bInterval;</span>
<span class="gi">+		ep-&gt;pkt_cnt = (ep-&gt;xfer_len - 1 + ep-&gt;maxpacket) / </span>
<span class="gi">+				ep-&gt;maxpacket;</span>
<span class="gi">+		ep-&gt;xfer_count = 0;</span>
<span class="gi">+		ep-&gt;xfer_buff = (ep-&gt;proc_buf_num) ? ep-&gt;xfer_buff1 : ep-&gt;xfer_buff0;</span>
<span class="gi">+		ep-&gt;dma_addr = (ep-&gt;proc_buf_num) ? ep-&gt;dma_addr1 : ep-&gt;dma_addr0;</span>
<span class="gi">+		</span>
<span class="gi">+		if(ep-&gt;is_in) {</span>
<span class="gi">+			/* Program the transfer size and packet count</span>
<span class="gi">+			 *	as follows: xfersize = N * maxpacket +</span>
<span class="gi">+			 *	short_packet pktcnt = N + (short_packet</span>
<span class="gi">+			 *	exist ? 1 : 0)	</span>
<span class="gi">+			 */</span>
<span class="gi">+			deptsiz.b.mc = ep-&gt;pkt_per_frm;</span>
<span class="gi">+			deptsiz.b.xfersize = ep-&gt;xfer_len;</span>
<span class="gi">+			deptsiz.b.pktcnt =</span>
<span class="gi">+				(ep-&gt;xfer_len - 1 + ep-&gt;maxpacket) / </span>
<span class="gi">+				ep-&gt;maxpacket;</span>
<span class="gi">+			dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;dieptsiz, deptsiz.d32);</span>
<span class="gi">+	</span>
<span class="gi">+			/* Write the DMA register */</span>
<span class="gi">+			dwc_write_reg32 (&amp;(core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepdma), (uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+			</span>
<span class="gi">+		} else {</span>
<span class="gi">+			deptsiz.b.pktcnt = </span>
<span class="gi">+					(ep-&gt;xfer_len + (ep-&gt;maxpacket - 1)) /</span>
<span class="gi">+					ep-&gt;maxpacket;</span>
<span class="gi">+			deptsiz.b.xfersize = deptsiz.b.pktcnt * ep-&gt;maxpacket;</span>
<span class="gi">+	</span>
<span class="gi">+			dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doeptsiz, deptsiz.d32);</span>
<span class="gi">+	</span>
<span class="gi">+			/* Write the DMA register */</span>
<span class="gi">+			dwc_write_reg32 (&amp;(core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepdma), (uint32_t)ep-&gt;dma_addr);</span>
<span class="gi">+			</span>
<span class="gi">+		}</span>
<span class="gi">+		/** Enable endpoint, clear nak  */</span>
<span class="gi">+		depctl.d32 = 0;	</span>
<span class="gi">+		dwc_modify_reg32(addr, depctl.d32,depctl.d32);</span>
<span class="gi">+		</span>
<span class="gi">+		depctl.b.epena = 1;</span>
<span class="gi">+		depctl.b.cnak = 1;</span>
<span class="gi">+			</span>
<span class="gi">+		dwc_modify_reg32(addr, depctl.d32,depctl.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function does the setup for a data transfer for an EP and</span>
<span class="gi">+ * starts the transfer.	 For an IN transfer, the packets will be</span>
<span class="gi">+ * loaded into the appropriate Tx FIFO in the ISR. For OUT transfers,</span>
<span class="gi">+ * the packets are unloaded from the Rx FIFO in the ISR.  the ISR.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to start the transfer on.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+void dwc_otg_iso_ep_start_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+ 	if(core_if-&gt;dma_enable) {</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+			if(ep-&gt;is_in) {</span>
<span class="gi">+				ep-&gt;desc_cnt = ep-&gt;pkt_cnt / ep-&gt;pkt_per_frm;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				ep-&gt;desc_cnt = ep-&gt;pkt_cnt;</span>
<span class="gi">+			}</span>
<span class="gi">+			dwc_otg_iso_ep_start_ddma_transfer(core_if, ep);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			if(core_if-&gt;pti_enh_enable) {</span>
<span class="gi">+				dwc_otg_iso_ep_start_buf_transfer(core_if, ep);</span>
<span class="gi">+			} else {</span>
<span class="gi">+				ep-&gt;cur_pkt_addr = (ep-&gt;proc_buf_num) ? ep-&gt;xfer_buff1 : ep-&gt;xfer_buff0;</span>
<span class="gi">+				ep-&gt;cur_pkt_dma_addr = (ep-&gt;proc_buf_num) ? ep-&gt;dma_addr1 : ep-&gt;dma_addr0;</span>
<span class="gi">+				dwc_otg_iso_ep_start_frm_transfer(core_if, ep);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		ep-&gt;cur_pkt_addr = (ep-&gt;proc_buf_num) ? ep-&gt;xfer_buff1 : ep-&gt;xfer_buff0;</span>
<span class="gi">+		ep-&gt;cur_pkt_dma_addr = (ep-&gt;proc_buf_num) ? ep-&gt;dma_addr1 : ep-&gt;dma_addr0;</span>
<span class="gi">+		dwc_otg_iso_ep_start_frm_transfer(core_if, ep);									</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function does the setup for a data transfer for an EP and</span>
<span class="gi">+ * starts the transfer.	 For an IN transfer, the packets will be</span>
<span class="gi">+ * loaded into the appropriate Tx FIFO in the ISR. For OUT transfers,</span>
<span class="gi">+ * the packets are unloaded from the Rx FIFO in the ISR.  the ISR.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to start the transfer on.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+void dwc_otg_iso_ep_stop_transfer(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	depctl_data_t depctl = { .d32 = 0 };</span>
<span class="gi">+	volatile uint32_t *addr;</span>
<span class="gi">+</span>
<span class="gi">+	if(ep-&gt;is_in == 1) {</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;diepctl;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doepctl;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	/* disable the ep */</span>
<span class="gi">+	depctl.d32 = dwc_read_reg32(addr);</span>
<span class="gi">+</span>
<span class="gi">+	depctl.b.epdis = 1;</span>
<span class="gi">+	depctl.b.snak = 1;</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_write_reg32(addr, depctl.d32);</span>
<span class="gi">+	</span>
<span class="gi">+	if(core_if-&gt;dma_desc_enable &amp;&amp;</span>
<span class="gi">+		ep-&gt;iso_desc_addr &amp;&amp; ep-&gt;iso_dma_desc_addr) {</span>
<span class="gi">+		dwc_otg_ep_free_desc_chain(ep-&gt;iso_desc_addr,ep-&gt;iso_dma_desc_addr,ep-&gt;desc_cnt * 2);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	/* reset varibales */</span>
<span class="gi">+	ep-&gt;dma_addr0 = 0;</span>
<span class="gi">+	ep-&gt;dma_addr1 = 0;</span>
<span class="gi">+	ep-&gt;xfer_buff0 = 0;</span>
<span class="gi">+	ep-&gt;xfer_buff1 = 0;</span>
<span class="gi">+	ep-&gt;data_per_frame = 0;</span>
<span class="gi">+	ep-&gt;data_pattern_frame = 0;</span>
<span class="gi">+	ep-&gt;sync_frame = 0;</span>
<span class="gi">+	ep-&gt;buf_proc_intrvl = 0;</span>
<span class="gi">+	ep-&gt;bInterval = 0;</span>
<span class="gi">+	ep-&gt;proc_buf_num = 0;</span>
<span class="gi">+	ep-&gt;pkt_per_frm = 0;</span>
<span class="gi">+	ep-&gt;pkt_per_frm = 0;</span>
<span class="gi">+	ep-&gt;desc_cnt = 	0;</span>
<span class="gi">+	ep-&gt;iso_desc_addr = 0;</span>
<span class="gi">+	ep-&gt;iso_dma_desc_addr = 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is used to submit an ISOC Transfer Request to an EP.</span>
<span class="gi">+ *</span>
<span class="gi">+ *	- Every time a sync period completes the request&#39;s completion callback</span>
<span class="gi">+ *	  is called to provide data to the gadget driver.</span>
<span class="gi">+ *	- Once submitted the request cannot be modified.</span>
<span class="gi">+ *	- Each request is turned into periodic data packets untill ISO </span>
<span class="gi">+ *	  Transfer is stopped..</span>
<span class="gi">+ */</span>
<span class="gi">+static int dwc_otg_pcd_iso_ep_start(struct usb_ep *usb_ep, struct usb_iso_request *req, </span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				int gfp_flags</span>
<span class="gi">+#else</span>
<span class="gi">+				gfp_t gfp_flags</span>
<span class="gi">+#endif</span>
<span class="gi">+)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_ep_t 	*ep;</span>
<span class="gi">+	dwc_otg_pcd_t		*pcd;</span>
<span class="gi">+	dwc_ep_t 		*dwc_ep;</span>
<span class="gi">+	unsigned long 		flags = 0;</span>
<span class="gi">+	int32_t 		frm_data;</span>
<span class="gi">+	dwc_otg_core_if_t	*core_if;</span>
<span class="gi">+	dcfg_data_t		dcfg;</span>
<span class="gi">+	dsts_data_t		dsts;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	if (!req || !req-&gt;process_buffer || !req-&gt;buf0 || !req-&gt;buf1) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bad params\n&quot;, __func__);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	ep = container_of(usb_ep, dwc_otg_pcd_ep_t, ep);</span>
<span class="gi">+</span>
<span class="gi">+	if (!usb_ep || !ep-&gt;desc || ep-&gt;dwc_ep.num == 0) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bad ep\n&quot;, __func__);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	pcd = ep-&gt;pcd;</span>
<span class="gi">+	core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	</span>
<span class="gi">+	dcfg.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dcfg);</span>
<span class="gi">+	</span>
<span class="gi">+	if (!pcd-&gt;driver || pcd-&gt;gadget.speed == USB_SPEED_UNKNOWN) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;gadget.speed=%d\n&quot;, pcd-&gt;gadget.speed);</span>
<span class="gi">+		DWC_WARN(&quot;%s, bogus device state\n&quot;, __func__);</span>
<span class="gi">+		return -ESHUTDOWN;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;ep-&gt;pcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	dwc_ep = &amp;ep-&gt;dwc_ep;</span>
<span class="gi">+</span>
<span class="gi">+	if(ep-&gt;iso_req) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, iso request in progress\n&quot;, __func__);</span>
<span class="gi">+	}		</span>
<span class="gi">+	req-&gt;status = -EINPROGRESS;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_ep-&gt;dma_addr0 = req-&gt;dma0;</span>
<span class="gi">+	dwc_ep-&gt;dma_addr1 = req-&gt;dma1;</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_ep-&gt;xfer_buff0 = req-&gt;buf0;</span>
<span class="gi">+	dwc_ep-&gt;xfer_buff1 = req-&gt;buf1;</span>
<span class="gi">+</span>
<span class="gi">+	ep-&gt;iso_req = req;</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_ep-&gt;data_per_frame = req-&gt;data_per_frame;</span>
<span class="gi">+</span>
<span class="gi">+	/** @todo - pattern data support is to be implemented in the future */</span>
<span class="gi">+	dwc_ep-&gt;data_pattern_frame = req-&gt;data_pattern_frame;</span>
<span class="gi">+	dwc_ep-&gt;sync_frame = req-&gt;sync_frame;</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_ep-&gt;buf_proc_intrvl = req-&gt;buf_proc_intrvl;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_ep-&gt;bInterval = 1 &lt;&lt; (ep-&gt;desc-&gt;bInterval - 1);</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_ep-&gt;proc_buf_num = 0;</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_ep-&gt;pkt_per_frm = 0;</span>
<span class="gi">+	frm_data = ep-&gt;dwc_ep.data_per_frame;</span>
<span class="gi">+	while(frm_data &gt; 0) {</span>
<span class="gi">+		dwc_ep-&gt;pkt_per_frm++;</span>
<span class="gi">+		frm_data -= ep-&gt;dwc_ep.maxpacket;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	dsts.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dsts);</span>
<span class="gi">+</span>
<span class="gi">+	if(req-&gt;flags &amp; USB_REQ_ISO_ASAP) {</span>
<span class="gi">+		dwc_ep-&gt;next_frame = dsts.b.soffn + 1;</span>
<span class="gi">+		if(dwc_ep-&gt;bInterval != 1){</span>
<span class="gi">+			dwc_ep-&gt;next_frame = dwc_ep-&gt;next_frame + (dwc_ep-&gt;bInterval - 1 - dwc_ep-&gt;next_frame % dwc_ep-&gt;bInterval);</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_ep-&gt;next_frame = req-&gt;start_frame;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+		</span>
<span class="gi">+	if(!core_if-&gt;pti_enh_enable) { </span>
<span class="gi">+		dwc_ep-&gt;pkt_cnt = dwc_ep-&gt;buf_proc_intrvl * dwc_ep-&gt;pkt_per_frm / dwc_ep-&gt;bInterval;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_ep-&gt;pkt_cnt = 	</span>
<span class="gi">+			(dwc_ep-&gt;data_per_frame * (dwc_ep-&gt;buf_proc_intrvl / dwc_ep-&gt;bInterval)</span>
<span class="gi">+			- 1 + dwc_ep-&gt;maxpacket) / dwc_ep-&gt;maxpacket;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+		dwc_ep-&gt;desc_cnt = </span>
<span class="gi">+			dwc_ep-&gt;buf_proc_intrvl * dwc_ep-&gt;pkt_per_frm / dwc_ep-&gt;bInterval;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_ep-&gt;pkt_info = kmalloc(sizeof(iso_pkt_info_t) * dwc_ep-&gt;pkt_cnt, GFP_KERNEL);</span>
<span class="gi">+	if(!dwc_ep-&gt;pkt_info) {</span>
<span class="gi">+		return -ENOMEM;			</span>
<span class="gi">+	}</span>
<span class="gi">+	if(core_if-&gt;pti_enh_enable) {</span>
<span class="gi">+		memset(dwc_ep-&gt;pkt_info, 0, sizeof(iso_pkt_info_t) * dwc_ep-&gt;pkt_cnt);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_ep-&gt;cur_pkt = 0;</span>
<span class="gi">+	</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_iso_ep_start_transfer(core_if, dwc_ep);</span>
<span class="gi">+</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function stops ISO EP Periodic Data Transfer.</span>
<span class="gi">+ */</span>
<span class="gi">+static int dwc_otg_pcd_iso_ep_stop(struct usb_ep *usb_ep, struct usb_iso_request *req)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	dwc_otg_pcd_t	*pcd;</span>
<span class="gi">+	dwc_ep_t *dwc_ep;</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+ </span>
<span class="gi">+	ep = container_of(usb_ep, dwc_otg_pcd_ep_t, ep);</span>
<span class="gi">+	</span>
<span class="gi">+	if (!usb_ep || !ep-&gt;desc || ep-&gt;dwc_ep.num == 0) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, bad ep\n&quot;, __func__);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+ 	</span>
<span class="gi">+	pcd = ep-&gt;pcd;</span>
<span class="gi">+	</span>
<span class="gi">+	if (!pcd-&gt;driver || pcd-&gt;gadget.speed == USB_SPEED_UNKNOWN) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;gadget.speed=%d\n&quot;, pcd-&gt;gadget.speed);</span>
<span class="gi">+		DWC_WARN(&quot;%s, bogus device state\n&quot;, __func__);</span>
<span class="gi">+		return -ESHUTDOWN;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_ep = &amp;ep-&gt;dwc_ep;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_iso_ep_stop_transfer(GET_CORE_IF(pcd), dwc_ep);</span>
<span class="gi">+</span>
<span class="gi">+	kfree(dwc_ep-&gt;pkt_info);</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	if(ep-&gt;iso_req != req) {</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	req-&gt;status = -ECONNRESET;</span>
<span class="gi">+		</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	ep-&gt;iso_req = 0;</span>
<span class="gi">+	</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is used for perodical data exchnage between PCD and gadget drivers.</span>
<span class="gi">+ * for Isochronous EPs</span>
<span class="gi">+ *</span>
<span class="gi">+ *	- Every time a sync period completes this function is called to </span>
<span class="gi">+ *	  perform data exchange between PCD and gadget</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_iso_buffer_done(dwc_otg_pcd_ep_t *ep, dwc_otg_pcd_iso_request_t *req)</span>
<span class="gi">+{</span>
<span class="gi">+ 	int i;</span>
<span class="gi">+	struct usb_gadget_iso_packet_descriptor *iso_packet;</span>
<span class="gi">+	dwc_ep_t *dwc_ep;</span>
<span class="gi">+</span>
<span class="gi">+	dwc_ep = &amp;ep-&gt;dwc_ep;</span>
<span class="gi">+</span>
<span class="gi">+	if(ep-&gt;iso_req-&gt;status == -ECONNRESET) {</span>
<span class="gi">+		DWC_PRINT(&quot;Device has already disconnected\n&quot;);</span>
<span class="gi">+		/*Device has been disconnected*/</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	if(dwc_ep-&gt;proc_buf_num != 0) {			</span>
<span class="gi">+		iso_packet = ep-&gt;iso_req-&gt;iso_packet_desc0;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	else {			</span>
<span class="gi">+		iso_packet = ep-&gt;iso_req-&gt;iso_packet_desc1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Fill in ISOC packets descriptors &amp; pass to gadget driver*/</span>
<span class="gi">+	</span>
<span class="gi">+	for(i = 0; i &lt; dwc_ep-&gt;pkt_cnt; ++i) {</span>
<span class="gi">+		iso_packet[i].status = dwc_ep-&gt;pkt_info[i].status;</span>
<span class="gi">+		iso_packet[i].offset = dwc_ep-&gt;pkt_info[i].offset;</span>
<span class="gi">+		iso_packet[i].actual_length = dwc_ep-&gt;pkt_info[i].length;</span>
<span class="gi">+		dwc_ep-&gt;pkt_info[i].status = 0;</span>
<span class="gi">+		dwc_ep-&gt;pkt_info[i].offset = 0;</span>
<span class="gi">+		dwc_ep-&gt;pkt_info[i].length = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Call callback function to process data buffer */</span>
<span class="gi">+	ep-&gt;iso_req-&gt;status = 0;/* success */</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_UNLOCK(&amp;ep-&gt;pcd-&gt;lock);</span>
<span class="gi">+	ep-&gt;iso_req-&gt;process_buffer(&amp;ep-&gt;ep, ep-&gt;iso_req);</span>
<span class="gi">+	SPIN_LOCK(&amp;ep-&gt;pcd-&gt;lock);</span>
<span class="gi">+}</span>
<span class="gi">+ </span>
<span class="gi">+ </span>
<span class="gi">+static struct usb_iso_request *dwc_otg_pcd_alloc_iso_request(struct usb_ep *ep,int packets,</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,20)</span>
<span class="gi">+				int gfp_flags</span>
<span class="gi">+#else</span>
<span class="gi">+				gfp_t gfp_flags</span>
<span class="gi">+#endif</span>
<span class="gi">+)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_iso_request	*pReq = NULL;</span>
<span class="gi">+	uint32_t		req_size;</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	req_size = sizeof(struct usb_iso_request);</span>
<span class="gi">+	req_size += (2 * packets * (sizeof(struct usb_gadget_iso_packet_descriptor)));</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	pReq = kmalloc(req_size, gfp_flags);</span>
<span class="gi">+	if (!pReq) {</span>
<span class="gi">+		DWC_WARN(&quot;%s, can&#39;t allocate Iso Request\n&quot;, __func__);</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	pReq-&gt;iso_packet_desc0 = (void*) (pReq +  1);</span>
<span class="gi">+	</span>
<span class="gi">+	pReq-&gt;iso_packet_desc1 = pReq-&gt;iso_packet_desc0 + packets;</span>
<span class="gi">+</span>
<span class="gi">+	return pReq;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static void dwc_otg_pcd_free_iso_request(struct usb_ep *ep, struct usb_iso_request *req)</span>
<span class="gi">+{</span>
<span class="gi">+	kfree(req);</span>
<span class="gi">+}</span>
<span class="gi">+ </span>
<span class="gi">+static struct usb_isoc_ep_ops dwc_otg_pcd_ep_ops = </span>
<span class="gi">+{</span>
<span class="gi">+	.ep_ops =</span>
<span class="gi">+	{</span>
<span class="gi">+		.enable		= dwc_otg_pcd_ep_enable,</span>
<span class="gi">+		.disable	= dwc_otg_pcd_ep_disable,</span>
<span class="gi">+	</span>
<span class="gi">+		.alloc_request	= dwc_otg_pcd_alloc_request,</span>
<span class="gi">+		.free_request	= dwc_otg_pcd_free_request,</span>
<span class="gi">+	</span>
<span class="gi">+		//.alloc_buffer	= dwc_otg_pcd_alloc_buffer,</span>
<span class="gi">+		//.free_buffer	= dwc_otg_pcd_free_buffer,</span>
<span class="gi">+	</span>
<span class="gi">+		.queue		= dwc_otg_pcd_ep_queue,</span>
<span class="gi">+		.dequeue	= dwc_otg_pcd_ep_dequeue,</span>
<span class="gi">+	</span>
<span class="gi">+		.set_halt	= dwc_otg_pcd_ep_set_halt,</span>
<span class="gi">+		.fifo_status	= 0,</span>
<span class="gi">+		.fifo_flush = 0,</span>
<span class="gi">+	},</span>
<span class="gi">+	.iso_ep_start		= dwc_otg_pcd_iso_ep_start,</span>
<span class="gi">+	.iso_ep_stop		= dwc_otg_pcd_iso_ep_stop,</span>
<span class="gi">+	.alloc_iso_request 	= dwc_otg_pcd_alloc_iso_request,</span>
<span class="gi">+	.free_iso_request	= dwc_otg_pcd_free_iso_request,</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+#else</span>
<span class="gi">+</span>
<span class="gi">+ </span>
<span class="gi">+static struct usb_ep_ops dwc_otg_pcd_ep_ops = </span>
<span class="gi">+{</span>
<span class="gi">+	.enable		= dwc_otg_pcd_ep_enable,</span>
<span class="gi">+	.disable	= dwc_otg_pcd_ep_disable,</span>
<span class="gi">+</span>
<span class="gi">+	.alloc_request	= dwc_otg_pcd_alloc_request,</span>
<span class="gi">+	.free_request	= dwc_otg_pcd_free_request,</span>
<span class="gi">+</span>
<span class="gi">+//	.alloc_buffer	= dwc_otg_pcd_alloc_buffer,</span>
<span class="gi">+//	.free_buffer	= dwc_otg_pcd_free_buffer,</span>
<span class="gi">+</span>
<span class="gi">+	.queue		= dwc_otg_pcd_ep_queue,</span>
<span class="gi">+	.dequeue	= dwc_otg_pcd_ep_dequeue,</span>
<span class="gi">+</span>
<span class="gi">+	.set_halt	= dwc_otg_pcd_ep_set_halt,</span>
<span class="gi">+	.fifo_status	= 0,</span>
<span class="gi">+	.fifo_flush = 0,</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+#endif /* DWC_EN_ISOC */</span>
<span class="gi">+/*	Gadget Operations */</span>
<span class="gi">+/**</span>
<span class="gi">+ * The following gadget operations will be implemented in the DWC_otg</span>
<span class="gi">+ * PCD. Functions in the API that are not described below are not</span>
<span class="gi">+ * implemented.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The Gadget API provides wrapper functions for each of the function</span>
<span class="gi">+ * pointers defined in usb_gadget_ops. The Gadget Driver calls the</span>
<span class="gi">+ * wrapper function, which then calls the underlying PCD function. The</span>
<span class="gi">+ * following sections are named according to the wrapper functions</span>
<span class="gi">+ * (except for ioctl, which doesn&#39;t have a wrapper function). Within</span>
<span class="gi">+ * each section, the corresponding DWC_otg PCD function name is</span>
<span class="gi">+ * specified.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ *Gets the USB Frame number of the last SOF.</span>
<span class="gi">+ */</span>
<span class="gi">+static int dwc_otg_pcd_get_frame(struct usb_gadget *gadget)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_t *pcd;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p)\n&quot;, __func__, gadget);</span>
<span class="gi">+		</span>
<span class="gi">+	if (gadget == 0) {</span>
<span class="gi">+		return -ENODEV;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		pcd = container_of(gadget, dwc_otg_pcd_t, gadget);</span>
<span class="gi">+		dwc_otg_get_frame_number(GET_CORE_IF(pcd));</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+void dwc_otg_pcd_initiate_srp(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t *addr = (uint32_t *)&amp;(GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gotgctl);</span>
<span class="gi">+	gotgctl_data_t mem;</span>
<span class="gi">+	gotgctl_data_t val;</span>
<span class="gi">+		</span>
<span class="gi">+	val.d32 = dwc_read_reg32(addr);</span>
<span class="gi">+	if (val.b.sesreq) {</span>
<span class="gi">+		DWC_ERROR(&quot;Session Request Already active!\n&quot;);</span>
<span class="gi">+			return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	DWC_NOTICE(&quot;Session Request Initated\n&quot;);</span>
<span class="gi">+	mem.d32 = dwc_read_reg32(addr);</span>
<span class="gi">+	mem.b.sesreq = 1;</span>
<span class="gi">+	dwc_write_reg32(addr, mem.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Start the SRP timer */</span>
<span class="gi">+	dwc_otg_pcd_start_srp_timer(pcd);</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+void dwc_otg_pcd_remote_wakeup(dwc_otg_pcd_t *pcd, int set)</span>
<span class="gi">+{</span>
<span class="gi">+	dctl_data_t dctl = {.d32=0};</span>
<span class="gi">+	volatile uint32_t *addr = &amp;(GET_CORE_IF(pcd)-&gt;dev_if-&gt;dev_global_regs-&gt;dctl);</span>
<span class="gi">+</span>
<span class="gi">+	if (dwc_otg_is_device_mode(GET_CORE_IF(pcd))) {</span>
<span class="gi">+		if (pcd-&gt;remote_wakeup_enable) {</span>
<span class="gi">+			if (set) {</span>
<span class="gi">+				dctl.b.rmtwkupsig = 1;</span>
<span class="gi">+				dwc_modify_reg32(addr, 0, dctl.d32);</span>
<span class="gi">+				DWC_DEBUGPL(DBG_PCD, &quot;Set Remote Wakeup\n&quot;);</span>
<span class="gi">+				mdelay(1);</span>
<span class="gi">+				dwc_modify_reg32(addr, dctl.d32, 0);</span>
<span class="gi">+				DWC_DEBUGPL(DBG_PCD, &quot;Clear Remote Wakeup\n&quot;);</span>
<span class="gi">+			}</span>
<span class="gi">+			else {</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCD, &quot;Remote Wakeup is disabled\n&quot;);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Initiates Session Request Protocol (SRP) to wakeup the host if no</span>
<span class="gi">+ * session is in progress. If a session is already in progress, but</span>
<span class="gi">+ * the device is suspended, remote wakeup signaling is started.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static int dwc_otg_pcd_wakeup(struct usb_gadget *gadget)</span>
<span class="gi">+{</span>
<span class="gi">+	unsigned long flags;</span>
<span class="gi">+	dwc_otg_pcd_t *pcd;</span>
<span class="gi">+	dsts_data_t		dsts;</span>
<span class="gi">+	gotgctl_data_t	gotgctl;</span>
<span class="gi">+		</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p)\n&quot;, __func__, gadget);</span>
<span class="gi">+		</span>
<span class="gi">+	if (gadget == 0) {</span>
<span class="gi">+		return -ENODEV;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		pcd = container_of(gadget, dwc_otg_pcd_t, gadget);</span>
<span class="gi">+	}</span>
<span class="gi">+	SPIN_LOCK_IRQSAVE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * This function starts the Protocol if no session is in progress. If</span>
<span class="gi">+	 * a session is already in progress, but the device is suspended,</span>
<span class="gi">+	 * remote wakeup signaling is started.</span>
<span class="gi">+	 */</span>
<span class="gi">+</span>
<span class="gi">+	/* Check if valid session */</span>
<span class="gi">+	gotgctl.d32 = dwc_read_reg32(&amp;(GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gotgctl));</span>
<span class="gi">+	if (gotgctl.b.bsesvld) {</span>
<span class="gi">+		/* Check if suspend state */</span>
<span class="gi">+		dsts.d32 = dwc_read_reg32(&amp;(GET_CORE_IF(pcd)-&gt;dev_if-&gt;dev_global_regs-&gt;dsts));</span>
<span class="gi">+		if (dsts.b.suspsts) {</span>
<span class="gi">+			dwc_otg_pcd_remote_wakeup(pcd, 1);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		dwc_otg_pcd_initiate_srp(pcd);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	SPIN_UNLOCK_IRQRESTORE(&amp;pcd-&gt;lock, flags);</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+static const struct usb_gadget_ops dwc_otg_pcd_ops = </span>
<span class="gi">+{</span>
<span class="gi">+	.get_frame	 = dwc_otg_pcd_get_frame,</span>
<span class="gi">+	.wakeup		 = dwc_otg_pcd_wakeup,</span>
<span class="gi">+	// current versions must always be self-powered</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function updates the otg values in the gadget structure. </span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_pcd_update_otg(dwc_otg_pcd_t *pcd, const unsigned reset)</span>
<span class="gi">+{</span>
<span class="gi">+		</span>
<span class="gi">+	if (!pcd-&gt;gadget.is_otg)</span>
<span class="gi">+		return;</span>
<span class="gi">+</span>
<span class="gi">+	if (reset) {</span>
<span class="gi">+		pcd-&gt;b_hnp_enable = 0;</span>
<span class="gi">+		pcd-&gt;a_hnp_support = 0;</span>
<span class="gi">+		pcd-&gt;a_alt_hnp_support = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	pcd-&gt;gadget.b_hnp_enable = pcd-&gt;b_hnp_enable;</span>
<span class="gi">+	pcd-&gt;gadget.a_hnp_support =  pcd-&gt;a_hnp_support;</span>
<span class="gi">+	pcd-&gt;gadget.a_alt_hnp_support = pcd-&gt;a_alt_hnp_support;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This function is the top level PCD interrupt handler.</span>
<span class="gi">+ */</span>
<span class="gi">+static irqreturn_t dwc_otg_pcd_irq(int irq, void *dev</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,19)</span>
<span class="gi">+				   , struct pt_regs *r</span>
<span class="gi">+#endif</span>
<span class="gi">+				 )</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = dev;</span>
<span class="gi">+	int32_t retval = IRQ_NONE;</span>
<span class="gi">+</span>
<span class="gi">+	retval = dwc_otg_pcd_handle_intr(pcd);</span>
<span class="gi">+	return IRQ_RETVAL(retval);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * PCD Callback function for initializing the PCD when switching to</span>
<span class="gi">+ * device mode.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param p void pointer to the &lt;code&gt;dwc_otg_pcd_t&lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t dwc_otg_pcd_start_cb(void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *)p;</span>
<span class="gi">+	</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Initialized the Core for Device mode.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (dwc_otg_is_device_mode(GET_CORE_IF(pcd))) {</span>
<span class="gi">+		dwc_otg_core_dev_init(GET_CORE_IF(pcd));</span>
<span class="gi">+	}</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * PCD Callback function for stopping the PCD when switching to Host</span>
<span class="gi">+ * mode.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param p void pointer to the &lt;code&gt;dwc_otg_pcd_t&lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t dwc_otg_pcd_stop_cb(void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *)p;</span>
<span class="gi">+	extern void dwc_otg_pcd_stop(dwc_otg_pcd_t *_pcd);</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_otg_pcd_stop(pcd);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * PCD Callback function for notifying the PCD when resuming from</span>
<span class="gi">+ * suspend.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param p void pointer to the &lt;code&gt;dwc_otg_pcd_t&lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t dwc_otg_pcd_suspend_cb(void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *)p;</span>
<span class="gi">+</span>
<span class="gi">+	if (pcd-&gt;driver &amp;&amp; pcd-&gt;driver-&gt;resume) {</span>
<span class="gi">+		SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+		pcd-&gt;driver-&gt;suspend(&amp;pcd-&gt;gadget);</span>
<span class="gi">+		SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * PCD Callback function for notifying the PCD when resuming from</span>
<span class="gi">+ * suspend.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param p void pointer to the &lt;code&gt;dwc_otg_pcd_t&lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t dwc_otg_pcd_resume_cb(void *p)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *)p;</span>
<span class="gi">+	</span>
<span class="gi">+	if (pcd-&gt;driver &amp;&amp; pcd-&gt;driver-&gt;resume) {</span>
<span class="gi">+			SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+			pcd-&gt;driver-&gt;resume(&amp;pcd-&gt;gadget);</span>
<span class="gi">+			SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	/* Stop the SRP timeout timer. */</span>
<span class="gi">+	if ((GET_CORE_IF(pcd)-&gt;core_params-&gt;phy_type != DWC_PHY_TYPE_PARAM_FS) ||</span>
<span class="gi">+		(!GET_CORE_IF(pcd)-&gt;core_params-&gt;i2c_enable)) {</span>
<span class="gi">+		if (GET_CORE_IF(pcd)-&gt;srp_timer_started) {</span>
<span class="gi">+			GET_CORE_IF(pcd)-&gt;srp_timer_started = 0;</span>
<span class="gi">+			del_timer(&amp;pcd-&gt;srp_timer);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * PCD Callback structure for handling mode switching.</span>
<span class="gi">+ */</span>
<span class="gi">+static dwc_otg_cil_callbacks_t pcd_callbacks = </span>
<span class="gi">+{</span>
<span class="gi">+	.start = dwc_otg_pcd_start_cb,</span>
<span class="gi">+	.stop = dwc_otg_pcd_stop_cb,</span>
<span class="gi">+	.suspend = dwc_otg_pcd_suspend_cb,</span>
<span class="gi">+	.resume_wakeup = dwc_otg_pcd_resume_cb,</span>
<span class="gi">+	.p = 0, /* Set at registration */</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is called when the SRP timer expires.	The SRP should</span>
<span class="gi">+ * complete within 6 seconds. </span>
<span class="gi">+ */</span>
<span class="gi">+static void srp_timeout(unsigned long ptr)</span>
<span class="gi">+{</span>
<span class="gi">+	gotgctl_data_t gotgctl;</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = (dwc_otg_core_if_t *)ptr;</span>
<span class="gi">+	volatile uint32_t *addr = &amp;core_if-&gt;core_global_regs-&gt;gotgctl;</span>
<span class="gi">+</span>
<span class="gi">+	gotgctl.d32 = dwc_read_reg32(addr);</span>
<span class="gi">+</span>
<span class="gi">+	core_if-&gt;srp_timer_started = 0;</span>
<span class="gi">+</span>
<span class="gi">+	if ((core_if-&gt;core_params-&gt;phy_type == DWC_PHY_TYPE_PARAM_FS) &amp;&amp; </span>
<span class="gi">+		(core_if-&gt;core_params-&gt;i2c_enable)) {</span>
<span class="gi">+		DWC_PRINT(&quot;SRP Timeout\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+		if ((core_if-&gt;srp_success) &amp;&amp; </span>
<span class="gi">+			(gotgctl.b.bsesvld)) {</span>
<span class="gi">+			if (core_if-&gt;pcd_cb &amp;&amp; core_if-&gt;pcd_cb-&gt;resume_wakeup) {</span>
<span class="gi">+				core_if-&gt;pcd_cb-&gt;resume_wakeup(core_if-&gt;pcd_cb-&gt;p);</span>
<span class="gi">+			}</span>
<span class="gi">+			</span>
<span class="gi">+			/* Clear Session Request */</span>
<span class="gi">+			gotgctl.d32 = 0;</span>
<span class="gi">+			gotgctl.b.sesreq = 1;</span>
<span class="gi">+			dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gotgctl, </span>
<span class="gi">+					  gotgctl.d32, 0);</span>
<span class="gi">+	</span>
<span class="gi">+			core_if-&gt;srp_success = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+		else {</span>
<span class="gi">+			DWC_ERROR(&quot;Device not connected/responding\n&quot;);</span>
<span class="gi">+			gotgctl.b.sesreq = 0;</span>
<span class="gi">+			dwc_write_reg32(addr, gotgctl.d32);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	else if (gotgctl.b.sesreq) {</span>
<span class="gi">+		DWC_PRINT(&quot;SRP Timeout\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+		DWC_ERROR(&quot;Device not connected/responding\n&quot;);</span>
<span class="gi">+		gotgctl.b.sesreq = 0;</span>
<span class="gi">+		dwc_write_reg32(addr, gotgctl.d32);</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		DWC_PRINT(&quot; SRP GOTGCTL=%0x\n&quot;, gotgctl.d32);</span>
<span class="gi">+	} </span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Start the SRP timer to detect when the SRP does not complete within </span>
<span class="gi">+ * 6 seconds.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param pcd the pcd structure.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_pcd_start_srp_timer(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	struct timer_list *srp_timer = &amp;pcd-&gt;srp_timer;</span>
<span class="gi">+	GET_CORE_IF(pcd)-&gt;srp_timer_started = 1;</span>
<span class="gi">+	init_timer(srp_timer);</span>
<span class="gi">+	srp_timer-&gt;function = srp_timeout;</span>
<span class="gi">+	srp_timer-&gt;data = (unsigned long)GET_CORE_IF(pcd);</span>
<span class="gi">+	srp_timer-&gt;expires = jiffies + (HZ*6);</span>
<span class="gi">+	add_timer(srp_timer);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Tasklet</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+extern void start_next_request(dwc_otg_pcd_ep_t *ep);</span>
<span class="gi">+</span>
<span class="gi">+static void start_xfer_tasklet_func (unsigned long data)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t*)data;</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = pcd-&gt;otg_dev-&gt;core_if;</span>
<span class="gi">+</span>
<span class="gi">+	int i;</span>
<span class="gi">+	depctl_data_t diepctl;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;Start xfer tasklet\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	diepctl.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[0]-&gt;diepctl);</span>
<span class="gi">+</span>
<span class="gi">+	if (pcd-&gt;ep0.queue_sof) {</span>
<span class="gi">+		pcd-&gt;ep0.queue_sof = 0;</span>
<span class="gi">+		start_next_request (&amp;pcd-&gt;ep0);</span>
<span class="gi">+		// break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	for (i=0; i&lt;core_if-&gt;dev_if-&gt;num_in_eps; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		depctl_data_t diepctl;</span>
<span class="gi">+		diepctl.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[i]-&gt;diepctl);</span>
<span class="gi">+</span>
<span class="gi">+		if (pcd-&gt;in_ep[i].queue_sof) {</span>
<span class="gi">+			pcd-&gt;in_ep[i].queue_sof = 0;</span>
<span class="gi">+			start_next_request (&amp;pcd-&gt;in_ep[i]);</span>
<span class="gi">+			// break;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+static struct tasklet_struct start_xfer_tasklet = {</span>
<span class="gi">+	.next = NULL,</span>
<span class="gi">+	.state = 0,</span>
<span class="gi">+	.count = ATOMIC_INIT(0),</span>
<span class="gi">+	.func = start_xfer_tasklet_func,</span>
<span class="gi">+	.data = 0,</span>
<span class="gi">+};</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function initialized the pcd Dp structures to there default</span>
<span class="gi">+ * state.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param pcd the pcd structure.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_pcd_reinit(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	static const char * names[] = </span>
<span class="gi">+		{</span>
<span class="gi">+			</span>
<span class="gi">+			&quot;ep0&quot;,</span>
<span class="gi">+			&quot;ep1in&quot;,	</span>
<span class="gi">+			&quot;ep2in&quot;,	</span>
<span class="gi">+			&quot;ep3in&quot;,	</span>
<span class="gi">+			&quot;ep4in&quot;,	</span>
<span class="gi">+			&quot;ep5in&quot;,	</span>
<span class="gi">+			&quot;ep6in&quot;,	</span>
<span class="gi">+			&quot;ep7in&quot;,	</span>
<span class="gi">+			&quot;ep8in&quot;,	</span>
<span class="gi">+			&quot;ep9in&quot;,	</span>
<span class="gi">+			&quot;ep10in&quot;,	</span>
<span class="gi">+			&quot;ep11in&quot;,	</span>
<span class="gi">+			&quot;ep12in&quot;,	</span>
<span class="gi">+			&quot;ep13in&quot;,	</span>
<span class="gi">+			&quot;ep14in&quot;,	</span>
<span class="gi">+			&quot;ep15in&quot;,	</span>
<span class="gi">+			&quot;ep1out&quot;,  </span>
<span class="gi">+			&quot;ep2out&quot;,  </span>
<span class="gi">+			&quot;ep3out&quot;,</span>
<span class="gi">+			&quot;ep4out&quot;,</span>
<span class="gi">+			&quot;ep5out&quot;,</span>
<span class="gi">+			&quot;ep6out&quot;,</span>
<span class="gi">+			&quot;ep7out&quot;,</span>
<span class="gi">+			&quot;ep8out&quot;,</span>
<span class="gi">+			&quot;ep9out&quot;,</span>
<span class="gi">+			&quot;ep10out&quot;,</span>
<span class="gi">+			&quot;ep11out&quot;,</span>
<span class="gi">+			&quot;ep12out&quot;,</span>
<span class="gi">+			&quot;ep13out&quot;,</span>
<span class="gi">+			&quot;ep14out&quot;,</span>
<span class="gi">+			&quot;ep15out&quot;</span>
<span class="gi">+			</span>
<span class="gi">+	};</span>
<span class="gi">+		</span>
<span class="gi">+	int i;</span>
<span class="gi">+	int in_ep_cntr, out_ep_cntr;</span>
<span class="gi">+	uint32_t hwcfg1;</span>
<span class="gi">+	uint32_t num_in_eps = (GET_CORE_IF(pcd))-&gt;dev_if-&gt;num_in_eps;</span>
<span class="gi">+	uint32_t num_out_eps = (GET_CORE_IF(pcd))-&gt;dev_if-&gt;num_out_eps;</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s(%p)\n&quot;, __func__, pcd);</span>
<span class="gi">+	</span>
<span class="gi">+	INIT_LIST_HEAD (&amp;pcd-&gt;gadget.ep_list);</span>
<span class="gi">+	pcd-&gt;gadget.ep0 = &amp;pcd-&gt;ep0.ep;</span>
<span class="gi">+	pcd-&gt;gadget.speed = USB_SPEED_UNKNOWN;</span>
<span class="gi">+</span>
<span class="gi">+	INIT_LIST_HEAD (&amp;pcd-&gt;gadget.ep0-&gt;ep_list);</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Initialize the EP0 structure.</span>
<span class="gi">+	 */</span>
<span class="gi">+	ep = &amp;pcd-&gt;ep0;</span>
<span class="gi">+</span>
<span class="gi">+	/* Init EP structure */</span>
<span class="gi">+	ep-&gt;desc = 0;</span>
<span class="gi">+	ep-&gt;pcd = pcd;</span>
<span class="gi">+	ep-&gt;stopped = 1;</span>
<span class="gi">+</span>
<span class="gi">+	/* Init DWC ep structure */</span>
<span class="gi">+	ep-&gt;dwc_ep.num = 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.active = 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.tx_fifo_num = 0;</span>
<span class="gi">+	/* Control until ep is actvated */</span>
<span class="gi">+	ep-&gt;dwc_ep.type = DWC_OTG_EP_TYPE_CONTROL;</span>
<span class="gi">+	ep-&gt;dwc_ep.maxpacket = MAX_PACKET_SIZE;</span>
<span class="gi">+	ep-&gt;dwc_ep.dma_addr = 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.start_xfer_buff = 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.xfer_buff = 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.xfer_len = 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.xfer_count = 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.total_len = 0;</span>
<span class="gi">+	ep-&gt;queue_sof = 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.desc_addr = 0;</span>
<span class="gi">+	ep-&gt;dwc_ep.dma_desc_addr = 0;</span>
<span class="gi">+	</span>
<span class="gi">+	ep-&gt;dwc_ep.aligned_buf=NULL;</span>
<span class="gi">+	ep-&gt;dwc_ep.aligned_buf_size=0;</span>
<span class="gi">+	ep-&gt;dwc_ep.aligned_dma_addr=0;</span>
<span class="gi">+	</span>
<span class="gi">+</span>
<span class="gi">+	/* Init the usb_ep structure. */</span>
<span class="gi">+	ep-&gt;ep.name = names[0];</span>
<span class="gi">+	ep-&gt;ep.ops = (struct usb_ep_ops*)&amp;dwc_otg_pcd_ep_ops;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * @todo NGS: What should the max packet size be set to</span>
<span class="gi">+	 * here?  Before EP type is set?</span>
<span class="gi">+	 */</span>
<span class="gi">+	ep-&gt;ep.maxpacket = MAX_PACKET_SIZE;</span>
<span class="gi">+</span>
<span class="gi">+	list_add_tail (&amp;ep-&gt;ep.ep_list, &amp;pcd-&gt;gadget.ep_list);</span>
<span class="gi">+		</span>
<span class="gi">+	INIT_LIST_HEAD (&amp;ep-&gt;queue);</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Initialize the EP structures.</span>
<span class="gi">+	 */</span>
<span class="gi">+	in_ep_cntr = 0;</span>
<span class="gi">+	hwcfg1 = (GET_CORE_IF(pcd))-&gt;hwcfg1.d32 &gt;&gt; 3;</span>
<span class="gi">+	 </span>
<span class="gi">+	for (i = 1; in_ep_cntr &lt; num_in_eps; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		if((hwcfg1 &amp; 0x1) == 0) {</span>
<span class="gi">+			dwc_otg_pcd_ep_t *ep = &amp;pcd-&gt;in_ep[in_ep_cntr];</span>
<span class="gi">+			in_ep_cntr ++;</span>
<span class="gi">+			</span>
<span class="gi">+			/* Init EP structure */</span>
<span class="gi">+			ep-&gt;desc = 0;</span>
<span class="gi">+			ep-&gt;pcd = pcd;</span>
<span class="gi">+			ep-&gt;stopped = 1;</span>
<span class="gi">+	</span>
<span class="gi">+			/* Init DWC ep structure */</span>
<span class="gi">+			ep-&gt;dwc_ep.is_in = 1;</span>
<span class="gi">+			ep-&gt;dwc_ep.num = i;</span>
<span class="gi">+			ep-&gt;dwc_ep.active = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.tx_fifo_num = 0;</span>
<span class="gi">+			</span>
<span class="gi">+			/* Control until ep is actvated */</span>
<span class="gi">+			ep-&gt;dwc_ep.type = DWC_OTG_EP_TYPE_CONTROL; </span>
<span class="gi">+			ep-&gt;dwc_ep.maxpacket = MAX_PACKET_SIZE;</span>
<span class="gi">+			ep-&gt;dwc_ep.dma_addr = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.start_xfer_buff = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_buff = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_len = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_count = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.total_len = 0;</span>
<span class="gi">+			ep-&gt;queue_sof = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.desc_addr = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.dma_desc_addr = 0;</span>
<span class="gi">+	</span>
<span class="gi">+			/* Init the usb_ep structure. */</span>
<span class="gi">+			ep-&gt;ep.name = names[i];</span>
<span class="gi">+			ep-&gt;ep.ops = (struct usb_ep_ops*)&amp;dwc_otg_pcd_ep_ops;</span>
<span class="gi">+			</span>
<span class="gi">+			/**</span>
<span class="gi">+			 * @todo NGS: What should the max packet size be set to</span>
<span class="gi">+			 * here?  Before EP type is set?</span>
<span class="gi">+			 */</span>
<span class="gi">+			ep-&gt;ep.maxpacket = MAX_PACKET_SIZE;</span>
<span class="gi">+	</span>
<span class="gi">+			//add only even number ep as in</span>
<span class="gi">+			if((i%2)==1)</span>
<span class="gi">+				list_add_tail (&amp;ep-&gt;ep.ep_list, &amp;pcd-&gt;gadget.ep_list);</span>
<span class="gi">+				</span>
<span class="gi">+			INIT_LIST_HEAD (&amp;ep-&gt;queue);</span>
<span class="gi">+		}</span>
<span class="gi">+		hwcfg1 &gt;&gt;= 2;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	out_ep_cntr = 0;</span>
<span class="gi">+	hwcfg1 = (GET_CORE_IF(pcd))-&gt;hwcfg1.d32 &gt;&gt; 2;</span>
<span class="gi">+</span>
<span class="gi">+	for (i = 1; out_ep_cntr &lt; num_out_eps; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		if((hwcfg1 &amp; 0x1) == 0) {</span>
<span class="gi">+			dwc_otg_pcd_ep_t *ep = &amp;pcd-&gt;out_ep[out_ep_cntr];</span>
<span class="gi">+			out_ep_cntr++;</span>
<span class="gi">+	</span>
<span class="gi">+			/* Init EP structure */</span>
<span class="gi">+			ep-&gt;desc = 0;</span>
<span class="gi">+			ep-&gt;pcd = pcd;</span>
<span class="gi">+			ep-&gt;stopped = 1;</span>
<span class="gi">+</span>
<span class="gi">+			/* Init DWC ep structure */</span>
<span class="gi">+			ep-&gt;dwc_ep.is_in = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.num = i;</span>
<span class="gi">+			ep-&gt;dwc_ep.active = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.tx_fifo_num = 0;</span>
<span class="gi">+			/* Control until ep is actvated */</span>
<span class="gi">+			ep-&gt;dwc_ep.type = DWC_OTG_EP_TYPE_CONTROL; </span>
<span class="gi">+			ep-&gt;dwc_ep.maxpacket = MAX_PACKET_SIZE;</span>
<span class="gi">+			ep-&gt;dwc_ep.dma_addr = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.start_xfer_buff = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_buff = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_len = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_count = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.total_len = 0;</span>
<span class="gi">+			ep-&gt;queue_sof = 0;</span>
<span class="gi">+	</span>
<span class="gi">+			/* Init the usb_ep structure. */</span>
<span class="gi">+			ep-&gt;ep.name = names[15 + i];</span>
<span class="gi">+			ep-&gt;ep.ops = (struct usb_ep_ops*)&amp;dwc_otg_pcd_ep_ops;</span>
<span class="gi">+			/**</span>
<span class="gi">+			 * @todo NGS: What should the max packet size be set to</span>
<span class="gi">+			 * here?  Before EP type is set?</span>
<span class="gi">+			 */</span>
<span class="gi">+			ep-&gt;ep.maxpacket = MAX_PACKET_SIZE;</span>
<span class="gi">+	</span>
<span class="gi">+			//add only odd number ep as out</span>
<span class="gi">+			if((i%2)==0)</span>
<span class="gi">+				list_add_tail (&amp;ep-&gt;ep.ep_list, &amp;pcd-&gt;gadget.ep_list);</span>
<span class="gi">+				</span>
<span class="gi">+			INIT_LIST_HEAD (&amp;ep-&gt;queue);</span>
<span class="gi">+		}</span>
<span class="gi">+		hwcfg1 &gt;&gt;= 2;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	/* remove ep0 from the list.  There is a ep0 pointer.*/</span>
<span class="gi">+	list_del_init (&amp;pcd-&gt;ep0.ep.ep_list);</span>
<span class="gi">+   </span>
<span class="gi">+	pcd-&gt;ep0state = EP0_DISCONNECT;</span>
<span class="gi">+	pcd-&gt;ep0.ep.maxpacket = MAX_EP0_SIZE;		  </span>
<span class="gi">+	pcd-&gt;ep0.dwc_ep.maxpacket = MAX_EP0_SIZE;</span>
<span class="gi">+	pcd-&gt;ep0.dwc_ep.type = DWC_OTG_EP_TYPE_CONTROL;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function releases the Gadget device.</span>
<span class="gi">+ * required by device_unregister().</span>
<span class="gi">+ *</span>
<span class="gi">+ * @todo Should this do something?	Should it free the PCD? </span>
<span class="gi">+ */</span>
<span class="gi">+static void dwc_otg_pcd_gadget_release(struct device *dev)</span>
<span class="gi">+{</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p)\n&quot;, __func__, dev);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * This function initialized the PCD portion of the driver.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+u8 dev_id[]=&quot;gadget&quot;; </span>
<span class="gi">+int dwc_otg_pcd_init(struct lm_device *lmdev)</span>
<span class="gi">+{</span>
<span class="gi">+	static char pcd_name[] = &quot;dwc_otg_pcd&quot;;</span>
<span class="gi">+	dwc_otg_pcd_t *pcd;</span>
<span class="gi">+	dwc_otg_core_if_t* core_if;</span>
<span class="gi">+	dwc_otg_dev_if_t* dev_if;</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lmdev);</span>
<span class="gi">+	int retval = 0;</span>
<span class="gi">+	</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p)\n&quot;,__func__, lmdev);</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Allocate PCD structure</span>
<span class="gi">+	 */</span>
<span class="gi">+	pcd = kmalloc(sizeof(dwc_otg_pcd_t), GFP_KERNEL);</span>
<span class="gi">+	</span>
<span class="gi">+	if (pcd == 0) {</span>
<span class="gi">+		return -ENOMEM;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	memset(pcd, 0, sizeof(dwc_otg_pcd_t));</span>
<span class="gi">+	spin_lock_init(&amp;pcd-&gt;lock);</span>
<span class="gi">+	</span>
<span class="gi">+	otg_dev-&gt;pcd = pcd;</span>
<span class="gi">+	s_pcd = pcd;</span>
<span class="gi">+	pcd-&gt;gadget.name = pcd_name;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &lt; KERNEL_VERSION(2,6,31)</span>
<span class="gi">+	strcpy(pcd-&gt;gadget.dev.bus_id, &quot;gadget&quot;);</span>
<span class="gi">+#else</span>
<span class="gi">+	pcd-&gt;gadget.dev.init_name = dev_id;</span>
<span class="gi">+#endif</span>
<span class="gi">+	pcd-&gt;otg_dev = lm_get_drvdata(lmdev);</span>
<span class="gi">+	</span>
<span class="gi">+	pcd-&gt;gadget.dev.parent = &amp;lmdev-&gt;dev;</span>
<span class="gi">+	pcd-&gt;gadget.dev.release = dwc_otg_pcd_gadget_release;</span>
<span class="gi">+	pcd-&gt;gadget.ops = &amp;dwc_otg_pcd_ops;</span>
<span class="gi">+	</span>
<span class="gi">+	core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+</span>
<span class="gi">+	if(core_if-&gt;hwcfg4.b.ded_fifo_en) {</span>
<span class="gi">+		DWC_PRINT(&quot;Dedicated Tx FIFOs mode\n&quot;);</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		DWC_PRINT(&quot;Shared Tx FIFO mode\n&quot;);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	/* If the module is set to FS or if the PHY_TYPE is FS then the gadget</span>
<span class="gi">+	 * should not report as dual-speed capable.	 replace the following line</span>
<span class="gi">+	 * with the block of code below it once the software is debugged for</span>
<span class="gi">+	 * this.  If is_dualspeed = 0 then the gadget driver should not report</span>
<span class="gi">+	 * a device qualifier descriptor when queried. */</span>
<span class="gi">+	if ((GET_CORE_IF(pcd)-&gt;core_params-&gt;speed == DWC_SPEED_PARAM_FULL) ||</span>
<span class="gi">+		((GET_CORE_IF(pcd)-&gt;hwcfg2.b.hs_phy_type == 2) &amp;&amp;</span>
<span class="gi">+		 (GET_CORE_IF(pcd)-&gt;hwcfg2.b.fs_phy_type == 1) &amp;&amp;</span>
<span class="gi">+		 (GET_CORE_IF(pcd)-&gt;core_params-&gt;ulpi_fs_ls))) {</span>
<span class="gi">+		pcd-&gt;gadget.is_dualspeed = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		pcd-&gt;gadget.is_dualspeed = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	if ((otg_dev-&gt;core_if-&gt;hwcfg2.b.op_mode == DWC_HWCFG2_OP_MODE_NO_SRP_CAPABLE_DEVICE) || </span>
<span class="gi">+	(otg_dev-&gt;core_if-&gt;hwcfg2.b.op_mode == DWC_HWCFG2_OP_MODE_NO_SRP_CAPABLE_HOST) || </span>
<span class="gi">+	(otg_dev-&gt;core_if-&gt;hwcfg2.b.op_mode == DWC_HWCFG2_OP_MODE_SRP_CAPABLE_DEVICE) || </span>
<span class="gi">+	(otg_dev-&gt;core_if-&gt;hwcfg2.b.op_mode == DWC_HWCFG2_OP_MODE_SRP_CAPABLE_HOST)) {</span>
<span class="gi">+		pcd-&gt;gadget.is_otg = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		pcd-&gt;gadget.is_otg = 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	  </span>
<span class="gi">+		</span>
<span class="gi">+	pcd-&gt;driver = 0;</span>
<span class="gi">+	/* Register the gadget device */</span>
<span class="gi">+printk(&quot;%s: 1\n&quot;,__func__);</span>
<span class="gi">+	retval = device_register(&amp;pcd-&gt;gadget.dev);</span>
<span class="gi">+	if (retval != 0) {</span>
<span class="gi">+		kfree (pcd);</span>
<span class="gi">+printk(&quot;%s: 2\n&quot;,__func__);</span>
<span class="gi">+		return retval;	</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Initialized the Core for Device mode.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (dwc_otg_is_device_mode(core_if)) {</span>
<span class="gi">+		dwc_otg_core_dev_init(core_if);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Initialize EP structures</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_pcd_reinit(pcd);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Register the PCD Callbacks. </span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_cil_register_pcd_callbacks(otg_dev-&gt;core_if, &amp;pcd_callbacks, </span>
<span class="gi">+						pcd);</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Setup interupt handler</span>
<span class="gi">+	 */</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;registering handler for irq%d\n&quot;, lmdev-&gt;irq);</span>
<span class="gi">+	retval = request_irq(lmdev-&gt;irq, dwc_otg_pcd_irq,</span>
<span class="gi">+				IRQF_SHARED, pcd-&gt;gadget.name, pcd);</span>
<span class="gi">+	if (retval != 0) {</span>
<span class="gi">+		DWC_ERROR(&quot;request of irq%d failed\n&quot;, lmdev-&gt;irq);</span>
<span class="gi">+		device_unregister(&amp;pcd-&gt;gadget.dev);</span>
<span class="gi">+		kfree (pcd);</span>
<span class="gi">+		return -EBUSY;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* </span>
<span class="gi">+	 * Initialize the DMA buffer for SETUP packets</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (GET_CORE_IF(pcd)-&gt;dma_enable) {</span>
<span class="gi">+		pcd-&gt;setup_pkt = dma_alloc_coherent (NULL, sizeof (*pcd-&gt;setup_pkt) * 5, &amp;pcd-&gt;setup_pkt_dma_handle, 0);</span>
<span class="gi">+		if (pcd-&gt;setup_pkt == 0) {</span>
<span class="gi">+			free_irq(lmdev-&gt;irq, pcd);</span>
<span class="gi">+			device_unregister(&amp;pcd-&gt;gadget.dev);</span>
<span class="gi">+			kfree (pcd);</span>
<span class="gi">+			return -ENOMEM;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		pcd-&gt;status_buf = dma_alloc_coherent (NULL, sizeof (uint16_t), &amp;pcd-&gt;status_buf_dma_handle, 0);</span>
<span class="gi">+		if (pcd-&gt;status_buf == 0) {</span>
<span class="gi">+			dma_free_coherent(NULL, sizeof(*pcd-&gt;setup_pkt), pcd-&gt;setup_pkt, pcd-&gt;setup_pkt_dma_handle);</span>
<span class="gi">+			free_irq(lmdev-&gt;irq, pcd);</span>
<span class="gi">+			device_unregister(&amp;pcd-&gt;gadget.dev);</span>
<span class="gi">+			kfree (pcd);</span>
<span class="gi">+			return -ENOMEM;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		if (GET_CORE_IF(pcd)-&gt;dma_desc_enable) {</span>
<span class="gi">+			dev_if-&gt;setup_desc_addr[0] = dwc_otg_ep_alloc_desc_chain(&amp;dev_if-&gt;dma_setup_desc_addr[0], 1);</span>
<span class="gi">+			dev_if-&gt;setup_desc_addr[1] = dwc_otg_ep_alloc_desc_chain(&amp;dev_if-&gt;dma_setup_desc_addr[1], 1);</span>
<span class="gi">+			dev_if-&gt;in_desc_addr = dwc_otg_ep_alloc_desc_chain(&amp;dev_if-&gt;dma_in_desc_addr, 1);</span>
<span class="gi">+			dev_if-&gt;out_desc_addr = dwc_otg_ep_alloc_desc_chain(&amp;dev_if-&gt;dma_out_desc_addr, 1);</span>
<span class="gi">+</span>
<span class="gi">+			if(dev_if-&gt;setup_desc_addr[0] == 0 </span>
<span class="gi">+			|| dev_if-&gt;setup_desc_addr[1] == 0</span>
<span class="gi">+			|| dev_if-&gt;in_desc_addr == 0</span>
<span class="gi">+			|| dev_if-&gt;out_desc_addr == 0 ) {</span>
<span class="gi">+				</span>
<span class="gi">+				if(dev_if-&gt;out_desc_addr)</span>
<span class="gi">+					dwc_otg_ep_free_desc_chain(dev_if-&gt;out_desc_addr, dev_if-&gt;dma_out_desc_addr, 1);</span>
<span class="gi">+				if(dev_if-&gt;in_desc_addr)</span>
<span class="gi">+					dwc_otg_ep_free_desc_chain(dev_if-&gt;in_desc_addr, dev_if-&gt;dma_in_desc_addr, 1);</span>
<span class="gi">+				if(dev_if-&gt;setup_desc_addr[1])</span>
<span class="gi">+					dwc_otg_ep_free_desc_chain(dev_if-&gt;setup_desc_addr[1], dev_if-&gt;dma_setup_desc_addr[1], 1);</span>
<span class="gi">+				if(dev_if-&gt;setup_desc_addr[0])</span>
<span class="gi">+					dwc_otg_ep_free_desc_chain(dev_if-&gt;setup_desc_addr[0], dev_if-&gt;dma_setup_desc_addr[0], 1);</span>
<span class="gi">+</span>
<span class="gi">+				</span>
<span class="gi">+				dma_free_coherent(NULL, sizeof(*pcd-&gt;status_buf), pcd-&gt;status_buf, pcd-&gt;setup_pkt_dma_handle);</span>
<span class="gi">+				dma_free_coherent(NULL, sizeof(*pcd-&gt;setup_pkt), pcd-&gt;setup_pkt, pcd-&gt;setup_pkt_dma_handle);</span>
<span class="gi">+				</span>
<span class="gi">+				free_irq(lmdev-&gt;irq, pcd);</span>
<span class="gi">+				device_unregister(&amp;pcd-&gt;gadget.dev);</span>
<span class="gi">+				kfree (pcd);</span>
<span class="gi">+				</span>
<span class="gi">+				return -ENOMEM;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		pcd-&gt;setup_pkt = kmalloc (sizeof (*pcd-&gt;setup_pkt) * 5, GFP_KERNEL);</span>
<span class="gi">+		if (pcd-&gt;setup_pkt == 0) {</span>
<span class="gi">+			free_irq(lmdev-&gt;irq, pcd);</span>
<span class="gi">+			device_unregister(&amp;pcd-&gt;gadget.dev);</span>
<span class="gi">+			kfree (pcd);</span>
<span class="gi">+			return -ENOMEM;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		pcd-&gt;status_buf = kmalloc (sizeof (uint16_t), GFP_KERNEL);</span>
<span class="gi">+		if (pcd-&gt;status_buf == 0) {</span>
<span class="gi">+			kfree(pcd-&gt;setup_pkt);</span>
<span class="gi">+			free_irq(lmdev-&gt;irq, pcd);</span>
<span class="gi">+			device_unregister(&amp;pcd-&gt;gadget.dev);</span>
<span class="gi">+			kfree (pcd);</span>
<span class="gi">+			return -ENOMEM;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	/* Initialize tasklet */</span>
<span class="gi">+	start_xfer_tasklet.data = (unsigned long)pcd;</span>
<span class="gi">+	pcd-&gt;start_xfer_tasklet = &amp;start_xfer_tasklet;</span>
<span class="gi">+</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Cleanup the PCD.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_pcd_remove(struct lm_device *lmdev)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_device_t *otg_dev = lm_get_drvdata(lmdev);</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = otg_dev-&gt;pcd;</span>
<span class="gi">+	dwc_otg_dev_if_t* dev_if = GET_CORE_IF(pcd)-&gt;dev_if;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s(%p)\n&quot;, __func__, lmdev);</span>
<span class="gi">+</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Free the IRQ </span>
<span class="gi">+	 */</span>
<span class="gi">+	free_irq(lmdev-&gt;irq, pcd);</span>
<span class="gi">+	</span>
<span class="gi">+	 /* start with the driver above us */</span>
<span class="gi">+	if (pcd-&gt;driver) {</span>
<span class="gi">+		/* should have been done already by driver model core */</span>
<span class="gi">+		DWC_WARN(&quot;driver &#39;%s&#39; is still registered\n&quot;,</span>
<span class="gi">+				 pcd-&gt;driver-&gt;driver.name);</span>
<span class="gi">+		usb_gadget_unregister_driver(pcd-&gt;driver);</span>
<span class="gi">+	}</span>
<span class="gi">+	device_unregister(&amp;pcd-&gt;gadget.dev);</span>
<span class="gi">+		</span>
<span class="gi">+	if (GET_CORE_IF(pcd)-&gt;dma_enable) {</span>
<span class="gi">+		dma_free_coherent (NULL, sizeof (*pcd-&gt;setup_pkt) * 5, pcd-&gt;setup_pkt, pcd-&gt;setup_pkt_dma_handle);</span>
<span class="gi">+		dma_free_coherent (NULL, sizeof (uint16_t), pcd-&gt;status_buf, pcd-&gt;status_buf_dma_handle);</span>
<span class="gi">+		if (GET_CORE_IF(pcd)-&gt;dma_desc_enable) {</span>
<span class="gi">+			dwc_otg_ep_free_desc_chain(dev_if-&gt;setup_desc_addr[0], dev_if-&gt;dma_setup_desc_addr[0], 1);</span>
<span class="gi">+			dwc_otg_ep_free_desc_chain(dev_if-&gt;setup_desc_addr[1], dev_if-&gt;dma_setup_desc_addr[1], 1);</span>
<span class="gi">+			dwc_otg_ep_free_desc_chain(dev_if-&gt;in_desc_addr, dev_if-&gt;dma_in_desc_addr, 1);</span>
<span class="gi">+			dwc_otg_ep_free_desc_chain(dev_if-&gt;out_desc_addr, dev_if-&gt;dma_out_desc_addr, 1);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		kfree (pcd-&gt;setup_pkt);</span>
<span class="gi">+		kfree (pcd-&gt;status_buf);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	kfree(pcd);</span>
<span class="gi">+	otg_dev-&gt;pcd = 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function registers a gadget driver with the PCD.</span>
<span class="gi">+ *</span>
<span class="gi">+ * When a driver is successfully registered, it will receive control</span>
<span class="gi">+ * requests including set_configuration(), which enables non-control</span>
<span class="gi">+ * requests.  then usb traffic follows until a disconnect is reported.</span>
<span class="gi">+ * then a host may connect again, or the driver might get unbound.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param driver The driver being registered</span>
<span class="gi">+ */</span>
<span class="gi">+int usb_gadget_register_driver(struct usb_gadget_driver *driver)</span>
<span class="gi">+{</span>
<span class="gi">+	int retval;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;registering gadget driver &#39;%s&#39;\n&quot;, driver-&gt;driver.name);</span>
<span class="gi">+		</span>
<span class="gi">+	if (!driver || driver-&gt;speed == USB_SPEED_UNKNOWN || </span>
<span class="gi">+		!driver-&gt;bind || </span>
<span class="gi">+		!driver-&gt;unbind || </span>
<span class="gi">+		!driver-&gt;disconnect || </span>
<span class="gi">+		!driver-&gt;setup) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV,&quot;EINVAL\n&quot;);	</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+	if (s_pcd == 0) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV,&quot;ENODEV\n&quot;);	</span>
<span class="gi">+		return -ENODEV;</span>
<span class="gi">+	}</span>
<span class="gi">+	if (s_pcd-&gt;driver != 0) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV,&quot;EBUSY (%p)\n&quot;, s_pcd-&gt;driver);   </span>
<span class="gi">+		return -EBUSY;</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	/* hook up the driver */</span>
<span class="gi">+	s_pcd-&gt;driver = driver;</span>
<span class="gi">+	s_pcd-&gt;gadget.dev.driver = &amp;driver-&gt;driver;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;bind to driver %s\n&quot;, driver-&gt;driver.name);</span>
<span class="gi">+	retval = driver-&gt;bind(&amp;s_pcd-&gt;gadget);</span>
<span class="gi">+	if (retval) {</span>
<span class="gi">+		DWC_ERROR(&quot;bind to driver %s --&gt; error %d\n&quot;,</span>
<span class="gi">+					driver-&gt;driver.name, retval);</span>
<span class="gi">+		s_pcd-&gt;driver = 0;</span>
<span class="gi">+		s_pcd-&gt;gadget.dev.driver = 0;</span>
<span class="gi">+		return retval;</span>
<span class="gi">+	}</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;registered gadget driver &#39;%s&#39;\n&quot;, </span>
<span class="gi">+					driver-&gt;driver.name);</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+EXPORT_SYMBOL(usb_gadget_register_driver);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function unregisters a gadget driver</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param driver The driver being unregistered</span>
<span class="gi">+ */</span>
<span class="gi">+int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)</span>
<span class="gi">+{</span>
<span class="gi">+	//DWC_DEBUGPL(DBG_PCDV,&quot;%s(%p)\n&quot;, __func__, _driver);</span>
<span class="gi">+</span>
<span class="gi">+	if (s_pcd == 0) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;%s Return(%d): s_pcd==0\n&quot;, __func__, </span>
<span class="gi">+				-ENODEV);</span>
<span class="gi">+		return -ENODEV;</span>
<span class="gi">+	}</span>
<span class="gi">+	if (driver == 0 || driver != s_pcd-&gt;driver) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;%s Return(%d): driver?\n&quot;, __func__, </span>
<span class="gi">+				-EINVAL);</span>
<span class="gi">+		return -EINVAL;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	driver-&gt;unbind(&amp;s_pcd-&gt;gadget);</span>
<span class="gi">+	s_pcd-&gt;driver = 0;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;unregistered driver &#39;%s&#39;\n&quot;, </span>
<span class="gi">+			driver-&gt;driver.name);</span>
<span class="gi">+	return 0;</span>
<span class="gi">+}</span>
<span class="gi">+EXPORT_SYMBOL(usb_gadget_unregister_driver);</span>
<span class="gi">+</span>
<span class="gi">+#endif /* DWC_HOST_ONLY */</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_pcd.h</span>
<span class="gu">@@ -0,0 +1,297 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd.h $</span>
<span class="gi">+ * $Revision: #36 $</span>
<span class="gi">+ * $Date: 2008/09/26 $</span>
<span class="gi">+ * $Change: 1103515 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+#if !defined(__DWC_PCD_H__)</span>
<span class="gi">+#define __DWC_PCD_H__</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/types.h&gt;</span>
<span class="gi">+#include &lt;linux/list.h&gt;</span>
<span class="gi">+#include &lt;linux/errno.h&gt;</span>
<span class="gi">+#include &lt;linux/device.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,6,21)</span>
<span class="gi">+# include &lt;linux/usb/ch9.h&gt;</span>
<span class="gi">+# include &lt;linux/usb/gadget.h&gt;</span>
<span class="gi">+#else</span>
<span class="gi">+# include &lt;linux/usb_ch9.h&gt;</span>
<span class="gi">+# include &lt;linux/usb_gadget.h&gt;</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/interrupt.h&gt;</span>
<span class="gi">+#include &lt;linux/dma-mapping.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+struct lm_device;</span>
<span class="gi">+struct dwc_otg_device;</span>
<span class="gi">+</span>
<span class="gi">+#include &quot;dwc_otg_cil.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @file</span>
<span class="gi">+ *</span>
<span class="gi">+ * This file contains the structures, constants, and interfaces for</span>
<span class="gi">+ * the Perpherial Contoller Driver (PCD).</span>
<span class="gi">+ *</span>
<span class="gi">+ * The Peripheral Controller Driver (PCD) for Linux will implement the</span>
<span class="gi">+ * Gadget API, so that the existing Gadget drivers can be used.	 For</span>
<span class="gi">+ * the Mass Storage Function driver the File-backed USB Storage Gadget</span>
<span class="gi">+ * (FBS) driver will be used.  The FBS driver supports the</span>
<span class="gi">+ * Control-Bulk (CB), Control-Bulk-Interrupt (CBI), and Bulk-Only</span>
<span class="gi">+ * transports.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+/** Invalid DMA Address */</span>
<span class="gi">+#define DMA_ADDR_INVALID	(~(dma_addr_t)0)</span>
<span class="gi">+/** Maxpacket size for EP0 */</span>
<span class="gi">+#define MAX_EP0_SIZE	64		   </span>
<span class="gi">+/** Maxpacket size for any EP */</span>
<span class="gi">+#define MAX_PACKET_SIZE 1024</span>
<span class="gi">+</span>
<span class="gi">+/** Max Transfer size for any EP */</span>
<span class="gi">+#define MAX_TRANSFER_SIZE 65535</span>
<span class="gi">+</span>
<span class="gi">+/** Max DMA Descriptor count for any EP */</span>
<span class="gi">+#define MAX_DMA_DESC_CNT 64</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Get the pointer to the core_if from the pcd pointer.</span>
<span class="gi">+ */</span>
<span class="gi">+#define GET_CORE_IF( _pcd ) (_pcd-&gt;otg_dev-&gt;core_if)</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * States of EP0.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef enum ep0_state </span>
<span class="gi">+{ </span>
<span class="gi">+	EP0_DISCONNECT,		/* no host */</span>
<span class="gi">+	EP0_IDLE,</span>
<span class="gi">+	EP0_IN_DATA_PHASE,</span>
<span class="gi">+	EP0_OUT_DATA_PHASE,</span>
<span class="gi">+	EP0_IN_STATUS_PHASE,</span>
<span class="gi">+	EP0_OUT_STATUS_PHASE,</span>
<span class="gi">+	EP0_STALL,</span>
<span class="gi">+} ep0state_e;</span>
<span class="gi">+</span>
<span class="gi">+/** Fordward declaration.*/</span>
<span class="gi">+struct dwc_otg_pcd;</span>
<span class="gi">+</span>
<span class="gi">+/** DWC_otg iso request structure.</span>
<span class="gi">+ * </span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct usb_iso_request  dwc_otg_pcd_iso_request_t;</span>
<span class="gi">+</span>
<span class="gi">+/**	  PCD EP structure.</span>
<span class="gi">+ * This structure describes an EP, there is an array of EPs in the PCD</span>
<span class="gi">+ * structure.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_pcd_ep </span>
<span class="gi">+{</span>
<span class="gi">+	/** USB EP data */</span>
<span class="gi">+	struct usb_ep		ep; </span>
<span class="gi">+	/** USB EP Descriptor */</span>
<span class="gi">+	const struct usb_endpoint_descriptor	*desc;	</span>
<span class="gi">+</span>
<span class="gi">+	/** queue of dwc_otg_pcd_requests. */</span>
<span class="gi">+	struct list_head	queue; </span>
<span class="gi">+	unsigned stopped : 1;		 </span>
<span class="gi">+	unsigned disabling : 1;</span>
<span class="gi">+	unsigned dma : 1;</span>
<span class="gi">+	unsigned queue_sof : 1;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+	/** DWC_otg Isochronous Transfer */</span>
<span class="gi">+	struct usb_iso_request* iso_req;</span>
<span class="gi">+#endif //DWC_EN_ISOC</span>
<span class="gi">+</span>
<span class="gi">+	/** DWC_otg ep data. */</span>
<span class="gi">+	dwc_ep_t dwc_ep;</span>
<span class="gi">+</span>
<span class="gi">+	/** Pointer to PCD */</span>
<span class="gi">+	struct dwc_otg_pcd *pcd;</span>
<span class="gi">+}dwc_otg_pcd_ep_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/** DWC_otg PCD Structure.</span>
<span class="gi">+ * This structure encapsulates the data for the dwc_otg PCD.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_pcd </span>
<span class="gi">+{</span>
<span class="gi">+	/** USB gadget */</span>
<span class="gi">+	struct usb_gadget gadget;</span>
<span class="gi">+	/** USB gadget driver pointer*/</span>
<span class="gi">+	struct usb_gadget_driver *driver; </span>
<span class="gi">+	/** The DWC otg device pointer. */</span>
<span class="gi">+	struct dwc_otg_device *otg_dev;</span>
<span class="gi">+		</span>
<span class="gi">+	/** State of EP0 */</span>
<span class="gi">+	ep0state_e	ep0state; </span>
<span class="gi">+	/** EP0 Request is pending */</span>
<span class="gi">+	unsigned	ep0_pending : 1;</span>
<span class="gi">+	/** Indicates when SET CONFIGURATION Request is in process */</span>
<span class="gi">+	unsigned	request_config : 1;</span>
<span class="gi">+	/** The state of the Remote Wakeup Enable. */</span>
<span class="gi">+	unsigned	remote_wakeup_enable : 1;</span>
<span class="gi">+	/** The state of the B-Device HNP Enable. */</span>
<span class="gi">+	unsigned	b_hnp_enable : 1;</span>
<span class="gi">+	/** The state of A-Device HNP Support. */</span>
<span class="gi">+	unsigned	a_hnp_support : 1;</span>
<span class="gi">+	/** The state of the A-Device Alt HNP support. */</span>
<span class="gi">+	unsigned	a_alt_hnp_support : 1;</span>
<span class="gi">+	/** Count of pending Requests */</span>
<span class="gi">+	unsigned	request_pending;</span>
<span class="gi">+		</span>
<span class="gi">+		/** SETUP packet for EP0 </span>
<span class="gi">+	 * This structure is allocated as a DMA buffer on PCD initialization</span>
<span class="gi">+	 * with enough space for up to 3 setup packets.</span>
<span class="gi">+	 */</span>
<span class="gi">+	union </span>
<span class="gi">+	{</span>
<span class="gi">+			struct usb_ctrlrequest	req;</span>
<span class="gi">+			uint32_t	d32[2];</span>
<span class="gi">+	} *setup_pkt;</span>
<span class="gi">+</span>
<span class="gi">+	dma_addr_t setup_pkt_dma_handle;</span>
<span class="gi">+</span>
<span class="gi">+	/** 2-byte dma buffer used to return status from GET_STATUS */</span>
<span class="gi">+	uint16_t *status_buf;</span>
<span class="gi">+	dma_addr_t status_buf_dma_handle;</span>
<span class="gi">+</span>
<span class="gi">+	/** EP0 */</span>
<span class="gi">+	dwc_otg_pcd_ep_t ep0; </span>
<span class="gi">+</span>
<span class="gi">+	/** Array of IN EPs. */</span>
<span class="gi">+	dwc_otg_pcd_ep_t in_ep[ MAX_EPS_CHANNELS - 1]; </span>
<span class="gi">+	/** Array of OUT EPs. */</span>
<span class="gi">+	dwc_otg_pcd_ep_t out_ep[ MAX_EPS_CHANNELS - 1]; </span>
<span class="gi">+	/** number of valid EPs in the above array. */</span>
<span class="gi">+//	  unsigned	num_eps : 4;		</span>
<span class="gi">+	spinlock_t	lock;</span>
<span class="gi">+	/** Timer for SRP.	If it expires before SRP is successful</span>
<span class="gi">+	 * clear the SRP. */</span>
<span class="gi">+	struct timer_list srp_timer;</span>
<span class="gi">+</span>
<span class="gi">+	/** Tasklet to defer starting of TEST mode transmissions until</span>
<span class="gi">+	 *	Status Phase has been completed.</span>
<span class="gi">+	 */</span>
<span class="gi">+	struct tasklet_struct test_mode_tasklet;</span>
<span class="gi">+</span>
<span class="gi">+	/** Tasklet to delay starting of xfer in DMA mode */</span>
<span class="gi">+	struct tasklet_struct *start_xfer_tasklet;</span>
<span class="gi">+</span>
<span class="gi">+	/** The test mode to enter when the tasklet is executed. */</span>
<span class="gi">+	unsigned test_mode;</span>
<span class="gi">+		</span>
<span class="gi">+} dwc_otg_pcd_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/** DWC_otg request structure.</span>
<span class="gi">+ * This structure is a list of requests.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct </span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_request	req; /**&lt; USB Request. */</span>
<span class="gi">+	struct list_head	queue;	/**&lt; queue of these requests. */</span>
<span class="gi">+} dwc_otg_pcd_request_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+extern int dwc_otg_pcd_init(struct lm_device *lmdev);</span>
<span class="gi">+</span>
<span class="gi">+//extern void dwc_otg_pcd_remove( struct dwc_otg_device *_otg_dev );</span>
<span class="gi">+extern void dwc_otg_pcd_remove( struct lm_device *lmdev );</span>
<span class="gi">+extern int32_t dwc_otg_pcd_handle_intr( dwc_otg_pcd_t *pcd );</span>
<span class="gi">+extern void dwc_otg_pcd_start_srp_timer(dwc_otg_pcd_t *pcd );</span>
<span class="gi">+</span>
<span class="gi">+extern void dwc_otg_pcd_initiate_srp(dwc_otg_pcd_t *pcd);</span>
<span class="gi">+extern void dwc_otg_pcd_remote_wakeup(dwc_otg_pcd_t *pcd, int set);</span>
<span class="gi">+</span>
<span class="gi">+extern void dwc_otg_iso_buffer_done(dwc_otg_pcd_ep_t *ep, dwc_otg_pcd_iso_request_t *req);</span>
<span class="gi">+extern void dwc_otg_request_done(dwc_otg_pcd_ep_t *_ep, dwc_otg_pcd_request_t *req, </span>
<span class="gi">+				int status);</span>
<span class="gi">+extern void dwc_otg_request_nuke(dwc_otg_pcd_ep_t *_ep); </span>
<span class="gi">+extern void dwc_otg_pcd_update_otg(dwc_otg_pcd_t *_pcd, </span>
<span class="gi">+					const unsigned reset);</span>
<span class="gi">+#ifndef VERBOSE</span>
<span class="gi">+#define VERIFY_PCD_DMA_ADDR(_addr_) 	BUG_ON(((_addr_)==DMA_ADDR_INVALID)||\</span>
<span class="gi">+				       ((_addr_)==0)||\</span>
<span class="gi">+				       ((_addr_)&amp;0x3))</span>
<span class="gi">+#else</span>
<span class="gi">+#define VERIFY_PCD_DMA_ADDR(_addr_) 	{\</span>
<span class="gi">+						if(((_addr_)==DMA_ADDR_INVALID)||\</span>
<span class="gi">+						       ((_addr_)==0)||\</span>
<span class="gi">+						       ((_addr_)&amp;0x3)) {\</span>
<span class="gi">+							printk(&quot;%s: Invalid DMA address &quot;#_addr_&quot;(%.8x)\n&quot;,__func__,_addr_);\</span>
<span class="gi">+							BUG();\</span>
<span class="gi">+						}\</span>
<span class="gi">+					}</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+static inline void ep_check_and_patch_dma_addr(dwc_otg_pcd_ep_t *ep){</span>
<span class="gi">+//void ep_check_and_patch_dma_addr(dwc_otg_pcd_ep_t *ep){</span>
<span class="gi">+	dwc_ep_t *dwc_ep=&amp;ep-&gt;dwc_ep;</span>
<span class="gi">+</span>
<span class="gi">+DWC_DEBUGPL(DBG_PCDV,&quot;%s: dwc_ep xfer_buf=%.8x, total_len=%d, dma_addr=%.8x\n&quot;,__func__,(u32)dwc_ep-&gt;xfer_buff,(dwc_ep-&gt;total_len),dwc_ep-&gt;dma_addr);</span>
<span class="gi">+	if (/*(core_if-&gt;dma_enable)&amp;&amp;*/(dwc_ep-&gt;dma_addr==DMA_ADDR_INVALID)) {</span>
<span class="gi">+		if((((u32)dwc_ep-&gt;xfer_buff)&amp;0x3)==0){</span>
<span class="gi">+			dwc_ep-&gt;dma_addr=dma_map_single(NULL,(void *)(dwc_ep-&gt;start_xfer_buff),(dwc_ep-&gt;total_len), DMA_TO_DEVICE);</span>
<span class="gi">+DWC_DEBUGPL(DBG_PCDV,&quot;    got dma_addr=%.8x\n&quot;,dwc_ep-&gt;dma_addr);</span>
<span class="gi">+		}else{</span>
<span class="gi">+DWC_DEBUGPL(DBG_PCDV,&quot;    buf not aligned, use aligned_buf instead. xfer_buf=%.8x, total_len=%d, aligned_buf_size=%d\n&quot;,(u32)dwc_ep-&gt;xfer_buff,(dwc_ep-&gt;total_len),dwc_ep-&gt;aligned_buf_size);</span>
<span class="gi">+			if(dwc_ep-&gt;aligned_buf_size&lt;dwc_ep-&gt;total_len){</span>
<span class="gi">+				if(dwc_ep-&gt;aligned_buf){ </span>
<span class="gi">+//printk(&quot;    free buff dwc_ep aligned_buf_size=%d, aligned_buf(%.8x), aligned_dma_addr(%.8x));\n&quot;,dwc_ep-&gt;aligned_buf_size,dwc_ep-&gt;aligned_buf,dwc_ep-&gt;aligned_dma_addr);</span>
<span class="gi">+					//dma_free_coherent(NULL,dwc_ep-&gt;aligned_buf_size,dwc_ep-&gt;aligned_buf,dwc_ep-&gt;aligned_dma_addr);</span>
<span class="gi">+					kfree(dwc_ep-&gt;aligned_buf);</span>
<span class="gi">+				}</span>
<span class="gi">+				dwc_ep-&gt;aligned_buf_size=((1&lt;&lt;20)&gt;(dwc_ep-&gt;total_len&lt;&lt;1))?(dwc_ep-&gt;total_len&lt;&lt;1):(1&lt;&lt;20);</span>
<span class="gi">+				//dwc_ep-&gt;aligned_buf = dma_alloc_coherent (NULL, dwc_ep-&gt;aligned_buf_size, &amp;dwc_ep-&gt;aligned_dma_addr, GFP_KERNEL|GFP_DMA);</span>
<span class="gi">+				dwc_ep-&gt;aligned_buf=kmalloc(dwc_ep-&gt;aligned_buf_size,GFP_KERNEL|GFP_DMA|GFP_ATOMIC);</span>
<span class="gi">+				dwc_ep-&gt;aligned_dma_addr=dma_map_single(NULL,(void *)(dwc_ep-&gt;aligned_buf),(dwc_ep-&gt;aligned_buf_size),DMA_FROM_DEVICE);</span>
<span class="gi">+				if(!dwc_ep-&gt;aligned_buf){</span>
<span class="gi">+					DWC_ERROR(&quot;Cannot alloc required buffer!!\n&quot;);</span>
<span class="gi">+					BUG();</span>
<span class="gi">+				}</span>
<span class="gi">+DWC_DEBUGPL(DBG_PCDV,&quot;    dwc_ep allocated aligned buf=%.8x, dma_addr=%.8x, size=%d(0x%x)\n&quot;, (u32)dwc_ep-&gt;aligned_buf, dwc_ep-&gt;aligned_dma_addr, dwc_ep-&gt;aligned_buf_size, dwc_ep-&gt;aligned_buf_size);</span>
<span class="gi">+			}</span>
<span class="gi">+			dwc_ep-&gt;dma_addr=dwc_ep-&gt;aligned_dma_addr;</span>
<span class="gi">+			if(dwc_ep-&gt;is_in) {</span>
<span class="gi">+				memcpy(dwc_ep-&gt;aligned_buf,dwc_ep-&gt;xfer_buff,dwc_ep-&gt;total_len);</span>
<span class="gi">+				dma_sync_single_for_device(NULL,dwc_ep-&gt;dma_addr,dwc_ep-&gt;total_len,DMA_TO_DEVICE);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#endif</span>
<span class="gi">+#endif /* DWC_HOST_ONLY */</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_pcd_intr.c</span>
<span class="gu">@@ -0,0 +1,3708 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_intr.c $</span>
<span class="gi">+ * $Revision: #83 $</span>
<span class="gi">+ * $Date: 2008/10/14 $</span>
<span class="gi">+ * $Change: 1115682 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+#ifndef DWC_HOST_ONLY</span>
<span class="gi">+#include &lt;linux/interrupt.h&gt;</span>
<span class="gi">+#include &lt;linux/dma-mapping.h&gt;</span>
<span class="gi">+#include &lt;linux/version.h&gt;</span>
<span class="gi">+#include &lt;linux/pci.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#include &quot;dwc_otg_driver.h&quot;</span>
<span class="gi">+#include &quot;dwc_otg_pcd.h&quot;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#define DEBUG_EP0</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/* request functions defined in &quot;dwc_otg_pcd.c&quot; */</span>
<span class="gi">+</span>
<span class="gi">+/** @file </span>
<span class="gi">+ * This file contains the implementation of the PCD Interrupt handlers.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The PCD handles the device interrupts.  Many conditions can cause a</span>
<span class="gi">+ * device interrupt. When an interrupt occurs, the device interrupt</span>
<span class="gi">+ * service routine determines the cause of the interrupt and</span>
<span class="gi">+ * dispatches handling to the appropriate function. These interrupt</span>
<span class="gi">+ * handling functions are described below.</span>
<span class="gi">+ * All interrupt registers are processed from LSB to MSB.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function prints the ep0 state for debug purposes.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void print_ep0_state(dwc_otg_pcd_t *pcd) </span>
<span class="gi">+{</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	char str[40];</span>
<span class="gi">+	</span>
<span class="gi">+	switch (pcd-&gt;ep0state) {</span>
<span class="gi">+	case EP0_DISCONNECT:</span>
<span class="gi">+		strcpy(str, &quot;EP0_DISCONNECT&quot;);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case EP0_IDLE:</span>
<span class="gi">+		strcpy(str, &quot;EP0_IDLE&quot;);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case EP0_IN_DATA_PHASE:</span>
<span class="gi">+		strcpy(str, &quot;EP0_IN_DATA_PHASE&quot;);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case EP0_OUT_DATA_PHASE:</span>
<span class="gi">+		strcpy(str, &quot;EP0_OUT_DATA_PHASE&quot;);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case EP0_IN_STATUS_PHASE:</span>
<span class="gi">+		strcpy(str,&quot;EP0_IN_STATUS_PHASE&quot;);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case EP0_OUT_STATUS_PHASE:</span>
<span class="gi">+		strcpy(str,&quot;EP0_OUT_STATUS_PHASE&quot;);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case EP0_STALL:</span>
<span class="gi">+		strcpy(str,&quot;EP0_STALL&quot;);</span>
<span class="gi">+		break;</span>
<span class="gi">+	default:</span>
<span class="gi">+		strcpy(str,&quot;EP0_INVALID&quot;);				 </span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;%s(%d)\n&quot;, str, pcd-&gt;ep0state);		  </span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function returns pointer to in ep struct with number ep_num</span>
<span class="gi">+ */</span>
<span class="gi">+static inline dwc_otg_pcd_ep_t* get_in_ep(dwc_otg_pcd_t *pcd, uint32_t ep_num) </span>
<span class="gi">+{</span>
<span class="gi">+	int i;</span>
<span class="gi">+	int num_in_eps = GET_CORE_IF(pcd)-&gt;dev_if-&gt;num_in_eps;</span>
<span class="gi">+	if(ep_num == 0) {</span>
<span class="gi">+		return &amp;pcd-&gt;ep0;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		for(i = 0; i &lt; num_in_eps; ++i)</span>
<span class="gi">+		{</span>
<span class="gi">+			if(pcd-&gt;in_ep[i].dwc_ep.num == ep_num)</span>
<span class="gi">+				return &amp;pcd-&gt;in_ep[i];</span>
<span class="gi">+		}</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function returns pointer to out ep struct with number ep_num</span>
<span class="gi">+ */</span>
<span class="gi">+static inline dwc_otg_pcd_ep_t* get_out_ep(dwc_otg_pcd_t *pcd, uint32_t ep_num) </span>
<span class="gi">+{</span>
<span class="gi">+	int i;</span>
<span class="gi">+	int num_out_eps = GET_CORE_IF(pcd)-&gt;dev_if-&gt;num_out_eps;</span>
<span class="gi">+	if(ep_num == 0) {</span>
<span class="gi">+		return &amp;pcd-&gt;ep0;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		for(i = 0; i &lt; num_out_eps; ++i)</span>
<span class="gi">+		{</span>
<span class="gi">+			if(pcd-&gt;out_ep[i].dwc_ep.num == ep_num) </span>
<span class="gi">+				return &amp;pcd-&gt;out_ep[i];</span>
<span class="gi">+		}</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * This functions gets a pointer to an EP from the wIndex address</span>
<span class="gi">+ * value of the control request.</span>
<span class="gi">+ */</span>
<span class="gi">+static dwc_otg_pcd_ep_t *get_ep_by_addr (dwc_otg_pcd_t *pcd, u16 wIndex)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_ep_t	*ep;</span>
<span class="gi">+</span>
<span class="gi">+	if ((wIndex &amp; USB_ENDPOINT_NUMBER_MASK) == 0)</span>
<span class="gi">+		return &amp;pcd-&gt;ep0;</span>
<span class="gi">+	list_for_each_entry(ep, &amp;pcd-&gt;gadget.ep_list, ep.ep_list) </span>
<span class="gi">+	{</span>
<span class="gi">+		u8	bEndpointAddress;</span>
<span class="gi">+</span>
<span class="gi">+		if (!ep-&gt;desc)</span>
<span class="gi">+			continue;</span>
<span class="gi">+		</span>
<span class="gi">+		bEndpointAddress = ep-&gt;desc-&gt;bEndpointAddress;</span>
<span class="gi">+		if((wIndex &amp; (USB_DIR_IN | USB_ENDPOINT_NUMBER_MASK)) </span>
<span class="gi">+			== (bEndpointAddress &amp; (USB_DIR_IN | USB_ENDPOINT_NUMBER_MASK)))</span>
<span class="gi">+			return ep;</span>
<span class="gi">+	}</span>
<span class="gi">+	return NULL;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function checks the EP request queue, if the queue is not</span>
<span class="gi">+ * empty the next request is started.</span>
<span class="gi">+ */</span>
<span class="gi">+void start_next_request(dwc_otg_pcd_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_request_t *req = 0;</span>
<span class="gi">+	uint32_t max_transfer = GET_CORE_IF(ep-&gt;pcd)-&gt;core_params-&gt;max_transfer_size;</span>
<span class="gi">+	if (!list_empty(&amp;ep-&gt;queue)) {</span>
<span class="gi">+		req = list_entry(ep-&gt;queue.next, </span>
<span class="gi">+			   dwc_otg_pcd_request_t, queue);</span>
<span class="gi">+			</span>
<span class="gi">+		/* Setup and start the Transfer */</span>
<span class="gi">+		ep-&gt;dwc_ep.dma_addr = req-&gt;req.dma;</span>
<span class="gi">+		ep-&gt;dwc_ep.start_xfer_buff = req-&gt;req.buf;</span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_buff = req-&gt;req.buf;</span>
<span class="gi">+		ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+		ep-&gt;dwc_ep.total_len = req-&gt;req.length;</span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_len = 0;</span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_count = 0;</span>
<span class="gi">+		</span>
<span class="gi">+		if(max_transfer &gt; MAX_TRANSFER_SIZE) {</span>
<span class="gi">+			ep-&gt;dwc_ep.maxxfer = max_transfer - (max_transfer % ep-&gt;dwc_ep.maxpacket);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			ep-&gt;dwc_ep.maxxfer = max_transfer;</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		if(req-&gt;req.zero) {</span>
<span class="gi">+			if((ep-&gt;dwc_ep.total_len % ep-&gt;dwc_ep.maxpacket == 0) </span>
<span class="gi">+					&amp;&amp; (ep-&gt;dwc_ep.total_len != 0)) {</span>
<span class="gi">+				ep-&gt;dwc_ep.sent_zlp = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+			</span>
<span class="gi">+		}</span>
<span class="gi">+	 	ep_check_and_patch_dma_addr(ep);	</span>
<span class="gi">+		dwc_otg_ep_start_transfer(GET_CORE_IF(ep-&gt;pcd), &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function handles the SOF Interrupts. At this time the SOF</span>
<span class="gi">+ * Interrupt is disabled.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_sof_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+		</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;SOF\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.sofintr = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function handles the Rx Status Queue Level Interrupt, which</span>
<span class="gi">+ * indicates that there is a least one packet in the Rx FIFO.  The</span>
<span class="gi">+ * packets are moved from the FIFO to memory, where they will be</span>
<span class="gi">+ * processed when the Endpoint Interrupt Register indicates Transfer</span>
<span class="gi">+ * Complete or SETUP Phase Done.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Repeat the following until the Rx Status Queue is empty:</span>
<span class="gi">+ *	 -# Read the Receive Status Pop Register (GRXSTSP) to get Packet</span>
<span class="gi">+ *		info</span>
<span class="gi">+ *	 -# If Receive FIFO is empty then skip to step Clear the interrupt</span>
<span class="gi">+ *		and exit</span>
<span class="gi">+ *	 -# If SETUP Packet call dwc_otg_read_setup_packet to copy the</span>
<span class="gi">+ *		SETUP data to the buffer</span>
<span class="gi">+ *	 -# If OUT Data Packet call dwc_otg_read_packet to copy the data</span>
<span class="gi">+ *		to the destination buffer</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_rx_status_q_level_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = core_if-&gt;core_global_regs;</span>
<span class="gi">+	gintmsk_data_t gintmask = {.d32=0};</span>
<span class="gi">+	device_grxsts_data_t status;</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	static char *dpid_str[] ={ &quot;D0&quot;, &quot;D2&quot;, &quot;D1&quot;, &quot;MDATA&quot; };</span>
<span class="gi">+#endif</span>
<span class="gi">+		</span>
<span class="gi">+	//DWC_DEBUGPL(DBG_PCDV, &quot;%s(%p)\n&quot;, __func__, _pcd);</span>
<span class="gi">+	/* Disable the Rx Status Queue Level interrupt */</span>
<span class="gi">+	gintmask.b.rxstsqlvl= 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, gintmask.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Get the Status from the top of the FIFO */</span>
<span class="gi">+	status.d32 = dwc_read_reg32(&amp;global_regs-&gt;grxstsp);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;EP:%d BCnt:%d DPID:%s &quot; </span>
<span class="gi">+					&quot;pktsts:%x Frame:%d(0x%0x)\n&quot;, </span>
<span class="gi">+					status.b.epnum, status.b.bcnt,</span>
<span class="gi">+					dpid_str[status.b.dpid], </span>
<span class="gi">+					status.b.pktsts, status.b.fn, status.b.fn);</span>
<span class="gi">+	/* Get pointer to EP structure */</span>
<span class="gi">+	ep = get_out_ep(pcd, status.b.epnum);</span>
<span class="gi">+		</span>
<span class="gi">+	switch (status.b.pktsts) {</span>
<span class="gi">+	case DWC_DSTS_GOUT_NAK:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;Global OUT NAK\n&quot;);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_STS_DATA_UPDT:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;OUT Data Packet\n&quot;);</span>
<span class="gi">+		if (status.b.bcnt &amp;&amp; ep-&gt;dwc_ep.xfer_buff) {</span>
<span class="gi">+			/** @todo NGS Check for buffer overflow? */</span>
<span class="gi">+			dwc_otg_read_packet(core_if, </span>
<span class="gi">+						 ep-&gt;dwc_ep.xfer_buff,</span>
<span class="gi">+						 status.b.bcnt);</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_count += status.b.bcnt;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_buff += status.b.bcnt;</span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_STS_XFER_COMP:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;OUT Complete\n&quot;);</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_DSTS_SETUP_COMP:</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;Setup Complete\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+		break;</span>
<span class="gi">+case DWC_DSTS_SETUP_UPDT:</span>
<span class="gi">+		dwc_otg_read_setup_packet(core_if, pcd-&gt;setup_pkt-&gt;d32);</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, </span>
<span class="gi">+				&quot;SETUP PKT: %02x.%02x v%04x i%04x l%04x\n&quot;,</span>
<span class="gi">+				pcd-&gt;setup_pkt-&gt;req.bRequestType, </span>
<span class="gi">+				pcd-&gt;setup_pkt-&gt;req.bRequest,</span>
<span class="gi">+				pcd-&gt;setup_pkt-&gt;req.wValue, </span>
<span class="gi">+				pcd-&gt;setup_pkt-&gt;req.wIndex, </span>
<span class="gi">+				pcd-&gt;setup_pkt-&gt;req.wLength);</span>
<span class="gi">+#endif</span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_count += status.b.bcnt;</span>
<span class="gi">+		break;</span>
<span class="gi">+	default:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;Invalid Packet Status (0x%0x)\n&quot;, </span>
<span class="gi">+				status.b.pktsts);</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Enable the Rx Status Queue Level interrupt */</span>
<span class="gi">+	dwc_modify_reg32(&amp;global_regs-&gt;gintmsk, 0, gintmask.d32);</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.rxstsqlvl = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	//DWC_DEBUGPL(DBG_PCDV, &quot;EXIT: %s\n&quot;, __func__);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function examines the Device IN Token Learning Queue to</span>
<span class="gi">+ * determine the EP number of the last IN token received.  This</span>
<span class="gi">+ * implementation is for the Mass Storage device where there are only</span>
<span class="gi">+ * 2 IN EPs (Control-IN and BULK-IN).</span>
<span class="gi">+ *</span>
<span class="gi">+ * The EP numbers for the first six IN Tokens are in DTKNQR1 and there</span>
<span class="gi">+ * are 8 EP Numbers in each of the other possible DTKNQ Registers.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static inline int get_ep_of_last_in_token(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_device_global_regs_t *dev_global_regs = </span>
<span class="gi">+			core_if-&gt;dev_if-&gt;dev_global_regs;</span>
<span class="gi">+	const uint32_t TOKEN_Q_DEPTH = core_if-&gt;hwcfg2.b.dev_token_q_depth;</span>
<span class="gi">+	/* Number of Token Queue Registers */</span>
<span class="gi">+	const int DTKNQ_REG_CNT = (TOKEN_Q_DEPTH + 7) / 8;</span>
<span class="gi">+	dtknq1_data_t dtknqr1;</span>
<span class="gi">+	uint32_t in_tkn_epnums[4];</span>
<span class="gi">+	int ndx = 0;</span>
<span class="gi">+	int i = 0;</span>
<span class="gi">+	volatile uint32_t *addr = &amp;dev_global_regs-&gt;dtknqr1;</span>
<span class="gi">+	int epnum = 0;</span>
<span class="gi">+</span>
<span class="gi">+	//DWC_DEBUGPL(DBG_PCD,&quot;dev_token_q_depth=%d\n&quot;,TOKEN_Q_DEPTH);</span>
<span class="gi">+	</span>
<span class="gi">+	</span>
<span class="gi">+	/* Read the DTKNQ Registers */</span>
<span class="gi">+	for (i = 0; i &lt; DTKNQ_REG_CNT; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		in_tkn_epnums[ i ] = dwc_read_reg32(addr);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;DTKNQR%d=0x%08x\n&quot;, i+1, </span>
<span class="gi">+				in_tkn_epnums[i]);</span>
<span class="gi">+		if (addr == &amp;dev_global_regs-&gt;dvbusdis) {</span>
<span class="gi">+			addr = &amp;dev_global_regs-&gt;dtknqr3_dthrctl;</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			++addr;</span>
<span class="gi">+		}</span>
<span class="gi">+				</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	/* Copy the DTKNQR1 data to the bit field. */</span>
<span class="gi">+	dtknqr1.d32 = in_tkn_epnums[0];</span>
<span class="gi">+	/* Get the EP numbers */</span>
<span class="gi">+	in_tkn_epnums[0] = dtknqr1.b.epnums0_5;</span>
<span class="gi">+	ndx = dtknqr1.b.intknwptr - 1;</span>
<span class="gi">+</span>
<span class="gi">+	//DWC_DEBUGPL(DBG_PCDV,&quot;ndx=%d\n&quot;,ndx);</span>
<span class="gi">+	if (ndx == -1) {</span>
<span class="gi">+		/** @todo Find a simpler way to calculate the max</span>
<span class="gi">+		 * queue position.*/</span>
<span class="gi">+		int cnt = TOKEN_Q_DEPTH;</span>
<span class="gi">+		if (TOKEN_Q_DEPTH &lt;= 6) {</span>
<span class="gi">+			cnt = TOKEN_Q_DEPTH - 1;</span>
<span class="gi">+		}</span>
<span class="gi">+		else if (TOKEN_Q_DEPTH &lt;= 14) {</span>
<span class="gi">+			cnt = TOKEN_Q_DEPTH - 7;</span>
<span class="gi">+		} </span>
<span class="gi">+		else if (TOKEN_Q_DEPTH &lt;= 22) {</span>
<span class="gi">+			cnt = TOKEN_Q_DEPTH - 15;</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			cnt = TOKEN_Q_DEPTH - 23;</span>
<span class="gi">+		}</span>
<span class="gi">+		epnum = (in_tkn_epnums[ DTKNQ_REG_CNT - 1 ] &gt;&gt; (cnt * 4)) &amp; 0xF;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		if (ndx &lt;= 5) {</span>
<span class="gi">+			epnum = (in_tkn_epnums[0] &gt;&gt; (ndx * 4)) &amp; 0xF;</span>
<span class="gi">+		} </span>
<span class="gi">+		else if (ndx &lt;= 13) {</span>
<span class="gi">+			ndx -= 6;</span>
<span class="gi">+			epnum = (in_tkn_epnums[1] &gt;&gt; (ndx * 4)) &amp; 0xF;</span>
<span class="gi">+		} </span>
<span class="gi">+		else if (ndx &lt;= 21) {</span>
<span class="gi">+			ndx -= 14;</span>
<span class="gi">+			epnum = (in_tkn_epnums[2] &gt;&gt; (ndx * 4)) &amp; 0xF;</span>
<span class="gi">+		} </span>
<span class="gi">+		else if (ndx &lt;= 29) {</span>
<span class="gi">+			ndx -= 22;</span>
<span class="gi">+			epnum = (in_tkn_epnums[3] &gt;&gt; (ndx * 4)) &amp; 0xF;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	//DWC_DEBUGPL(DBG_PCD,&quot;epnum=%d\n&quot;,epnum);</span>
<span class="gi">+	return epnum;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This interrupt occurs when the non-periodic Tx FIFO is half-empty.</span>
<span class="gi">+ * The active request is checked for the next packet to be loaded into</span>
<span class="gi">+ * the non-periodic Tx FIFO.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_np_tx_fifo_empty_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = </span>
<span class="gi">+			core_if-&gt;core_global_regs;</span>
<span class="gi">+	dwc_otg_dev_in_ep_regs_t *ep_regs;</span>
<span class="gi">+	gnptxsts_data_t txstatus = {.d32 = 0};</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+	</span>
<span class="gi">+	int epnum = 0;</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep = 0;</span>
<span class="gi">+	uint32_t len = 0;</span>
<span class="gi">+	int dwords;</span>
<span class="gi">+</span>
<span class="gi">+	/* Get the epnum from the IN Token Learning Queue. */</span>
<span class="gi">+	epnum = get_ep_of_last_in_token(core_if);</span>
<span class="gi">+	ep = get_in_ep(pcd, epnum);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;NP TxFifo Empty: %s(%d) \n&quot;, ep-&gt;ep.name, epnum);</span>
<span class="gi">+	ep_regs = core_if-&gt;dev_if-&gt;in_ep_regs[epnum];</span>
<span class="gi">+	</span>
<span class="gi">+	len = ep-&gt;dwc_ep.xfer_len - ep-&gt;dwc_ep.xfer_count;</span>
<span class="gi">+	if (len &gt; ep-&gt;dwc_ep.maxpacket) {</span>
<span class="gi">+		len = ep-&gt;dwc_ep.maxpacket;</span>
<span class="gi">+	}</span>
<span class="gi">+	dwords = (len + 3)/4;</span>
<span class="gi">+		</span>
<span class="gi">+		</span>
<span class="gi">+	/* While there is space in the queue and space in the FIFO and</span>
<span class="gi">+	* More data to tranfer, Write packets to the Tx FIFO */</span>
<span class="gi">+	txstatus.d32 = dwc_read_reg32(&amp;global_regs-&gt;gnptxsts);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;b4 GNPTXSTS=0x%08x\n&quot;,txstatus.d32);</span>
<span class="gi">+	</span>
<span class="gi">+	while  (txstatus.b.nptxqspcavail &gt; 0 &amp;&amp;</span>
<span class="gi">+		txstatus.b.nptxfspcavail &gt; dwords &amp;&amp;</span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_count &lt; ep-&gt;dwc_ep.xfer_len) {</span>
<span class="gi">+		/* Write the FIFO */</span>
<span class="gi">+		dwc_otg_ep_write_packet(core_if, &amp;ep-&gt;dwc_ep, 0);</span>
<span class="gi">+		len = ep-&gt;dwc_ep.xfer_len - ep-&gt;dwc_ep.xfer_count;</span>
<span class="gi">+		</span>
<span class="gi">+		if (len &gt; ep-&gt;dwc_ep.maxpacket) {</span>
<span class="gi">+			len = ep-&gt;dwc_ep.maxpacket;</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		dwords = (len + 3)/4;</span>
<span class="gi">+		txstatus.d32 = dwc_read_reg32(&amp;global_regs-&gt;gnptxsts);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV,&quot;GNPTXSTS=0x%08x\n&quot;,txstatus.d32);</span>
<span class="gi">+	}	</span>
<span class="gi">+				</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;GNPTXSTS=0x%08x\n&quot;,</span>
<span class="gi">+			dwc_read_reg32(&amp;global_regs-&gt;gnptxsts));</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.nptxfempty = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is called when dedicated Tx FIFO Empty interrupt occurs.</span>
<span class="gi">+ * The active request is checked for the next packet to be loaded into</span>
<span class="gi">+ * apropriate Tx FIFO.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t write_empty_tx_fifo(dwc_otg_pcd_t *pcd, uint32_t epnum)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_dev_if_t* dev_if = core_if-&gt;dev_if; </span>
<span class="gi">+	dwc_otg_dev_in_ep_regs_t *ep_regs;</span>
<span class="gi">+	dtxfsts_data_t txstatus = {.d32 = 0};</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep = 0;</span>
<span class="gi">+	uint32_t len = 0;</span>
<span class="gi">+	int dwords;</span>
<span class="gi">+</span>
<span class="gi">+	ep = get_in_ep(pcd, epnum);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;Dedicated TxFifo Empty: %s(%d) \n&quot;, ep-&gt;ep.name, epnum);</span>
<span class="gi">+</span>
<span class="gi">+	ep_regs = core_if-&gt;dev_if-&gt;in_ep_regs[epnum];</span>
<span class="gi">+		</span>
<span class="gi">+	len = ep-&gt;dwc_ep.xfer_len - ep-&gt;dwc_ep.xfer_count;</span>
<span class="gi">+</span>
<span class="gi">+	if (len &gt; ep-&gt;dwc_ep.maxpacket) {</span>
<span class="gi">+		len = ep-&gt;dwc_ep.maxpacket;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	dwords = (len + 3)/4;</span>
<span class="gi">+		</span>
<span class="gi">+	/* While there is space in the queue and space in the FIFO and</span>
<span class="gi">+	 * More data to tranfer, Write packets to the Tx FIFO */</span>
<span class="gi">+	txstatus.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;dtxfsts);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;b4 dtxfsts[%d]=0x%08x\n&quot;,epnum,txstatus.d32);</span>
<span class="gi">+</span>
<span class="gi">+	while  (txstatus.b.txfspcavail &gt; dwords &amp;&amp; </span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_count &lt; ep-&gt;dwc_ep.xfer_len &amp;&amp;</span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_len != 0) {</span>
<span class="gi">+		/* Write the FIFO */</span>
<span class="gi">+		dwc_otg_ep_write_packet(core_if, &amp;ep-&gt;dwc_ep, 0);</span>
<span class="gi">+</span>
<span class="gi">+		len = ep-&gt;dwc_ep.xfer_len - ep-&gt;dwc_ep.xfer_count;</span>
<span class="gi">+		if (len &gt; ep-&gt;dwc_ep.maxpacket) {</span>
<span class="gi">+			len = ep-&gt;dwc_ep.maxpacket;</span>
<span class="gi">+		}</span>
<span class="gi">+				</span>
<span class="gi">+		dwords = (len + 3)/4;</span>
<span class="gi">+		txstatus.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;dtxfsts);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV,&quot;dtxfsts[%d]=0x%08x\n&quot;, epnum, txstatus.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+				</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;b4 dtxfsts[%d]=0x%08x\n&quot;,epnum,dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;dtxfsts));</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+ </span>
<span class="gi">+/** </span>
<span class="gi">+ * This function is called when the Device is disconnected. It stops</span>
<span class="gi">+ * any active requests and informs the Gadget driver of the</span>
<span class="gi">+ * disconnect.</span>
<span class="gi">+ */</span>
<span class="gi">+void dwc_otg_pcd_stop(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	int i, num_in_eps, num_out_eps;</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	</span>
<span class="gi">+	gintmsk_data_t intr_mask = {.d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+	num_in_eps = GET_CORE_IF(pcd)-&gt;dev_if-&gt;num_in_eps;</span>
<span class="gi">+	num_out_eps = GET_CORE_IF(pcd)-&gt;dev_if-&gt;num_out_eps;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s() \n&quot;, __func__);</span>
<span class="gi">+	/* don&#39;t disconnect drivers more than once */</span>
<span class="gi">+	if (pcd-&gt;ep0state == EP0_DISCONNECT) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;%s() Already Disconnected\n&quot;, __func__);</span>
<span class="gi">+		return;		   </span>
<span class="gi">+	}</span>
<span class="gi">+	pcd-&gt;ep0state = EP0_DISCONNECT;</span>
<span class="gi">+</span>
<span class="gi">+	/* Reset the OTG state. */</span>
<span class="gi">+	dwc_otg_pcd_update_otg(pcd, 1);</span>
<span class="gi">+		</span>
<span class="gi">+	/* Disable the NP Tx Fifo Empty Interrupt. */</span>
<span class="gi">+	intr_mask.b.nptxfempty = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintmsk, </span>
<span class="gi">+					 intr_mask.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Flush the FIFOs */</span>
<span class="gi">+	/**@todo NGS Flush Periodic FIFOs */</span>
<span class="gi">+	dwc_otg_flush_tx_fifo(GET_CORE_IF(pcd), 0x10);</span>
<span class="gi">+	dwc_otg_flush_rx_fifo(GET_CORE_IF(pcd));</span>
<span class="gi">+</span>
<span class="gi">+	/* prevent new request submissions, kill any outstanding requests  */</span>
<span class="gi">+	ep = &amp;pcd-&gt;ep0;</span>
<span class="gi">+	dwc_otg_request_nuke(ep);</span>
<span class="gi">+	/* prevent new request submissions, kill any outstanding requests  */</span>
<span class="gi">+	for (i = 0; i &lt; num_in_eps; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		dwc_otg_pcd_ep_t *ep = &amp;pcd-&gt;in_ep[i];</span>
<span class="gi">+		dwc_otg_request_nuke(ep);</span>
<span class="gi">+	}</span>
<span class="gi">+	/* prevent new request submissions, kill any outstanding requests  */</span>
<span class="gi">+	for (i = 0; i &lt; num_out_eps; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		dwc_otg_pcd_ep_t *ep = &amp;pcd-&gt;out_ep[i];</span>
<span class="gi">+		dwc_otg_request_nuke(ep);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* report disconnect; the driver is already quiesced */</span>
<span class="gi">+	if (pcd-&gt;driver &amp;&amp; pcd-&gt;driver-&gt;disconnect) {</span>
<span class="gi">+		SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+		pcd-&gt;driver-&gt;disconnect(&amp;pcd-&gt;gadget);</span>
<span class="gi">+		SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This interrupt indicates that ...</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_i2c_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;INTERRUPT Handler not implemented for %s\n&quot;, &quot;i2cintr&quot;); </span>
<span class="gi">+	intr_mask.b.i2cintr = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintmsk, </span>
<span class="gi">+				intr_mask.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.i2cintr = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintsts, </span>
<span class="gi">+						 gintsts.d32);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This interrupt indicates that ...</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_early_suspend_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+#if defined(VERBOSE)</span>
<span class="gi">+	DWC_PRINT(&quot;Early Suspend Detected\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.erlysuspend = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintsts, </span>
<span class="gi">+				gintsts.d32);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function configures EPO to receive SETUP packets.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @todo NGS: Update the comments from the HW FS.</span>
<span class="gi">+ *</span>
<span class="gi">+ *	-# Program the following fields in the endpoint specific registers</span>
<span class="gi">+ *	for Control OUT EP 0, in order to receive a setup packet</span>
<span class="gi">+ *	- DOEPTSIZ0.Packet Count = 3 (To receive up to 3 back to back</span>
<span class="gi">+ *	  setup packets)</span>
<span class="gi">+ *	- DOEPTSIZE0.Transfer Size = 24 Bytes (To receive up to 3 back</span>
<span class="gi">+ *	  to back setup packets)</span>
<span class="gi">+ *		- In DMA mode, DOEPDMA0 Register with a memory address to</span>
<span class="gi">+ *		  store any setup packets received</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param pcd	  Programming view of the PCD.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void ep0_out_start(dwc_otg_core_if_t *core_if, dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	deptsiz0_data_t doeptsize0 = { .d32 = 0};</span>
<span class="gi">+	dwc_otg_dma_desc_t* dma_desc;</span>
<span class="gi">+	depctl_data_t doepctl = { .d32 = 0 };</span>
<span class="gi">+</span>
<span class="gi">+#ifdef VERBOSE</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s() doepctl0=%0x\n&quot;, __func__,</span>
<span class="gi">+				dwc_read_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doepctl));</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	doeptsize0.b.supcnt = 3;	</span>
<span class="gi">+	doeptsize0.b.pktcnt = 1;</span>
<span class="gi">+	doeptsize0.b.xfersize = 8*3;</span>
<span class="gi">+	</span>
<span class="gi">+</span>
<span class="gi">+	if (core_if-&gt;dma_enable) {</span>
<span class="gi">+		if (!core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+			/** put here as for Hermes mode deptisz register should not be written */</span>
<span class="gi">+			dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doeptsiz, </span>
<span class="gi">+			 doeptsize0.d32);		 </span>
<span class="gi">+</span>
<span class="gi">+			/** @todo dma needs to handle multiple setup packets (up to 3) */</span>
<span class="gi">+			VERIFY_PCD_DMA_ADDR(pcd-&gt;setup_pkt_dma_handle);</span>
<span class="gi">+</span>
<span class="gi">+			dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doepdma, </span>
<span class="gi">+			pcd-&gt;setup_pkt_dma_handle);</span>
<span class="gi">+		} else {</span>
<span class="gi">+			dev_if-&gt;setup_desc_index = (dev_if-&gt;setup_desc_index + 1) &amp; 1;</span>
<span class="gi">+			dma_desc = dev_if-&gt;setup_desc_addr[dev_if-&gt;setup_desc_index];</span>
<span class="gi">+</span>
<span class="gi">+			/** DMA Descriptor Setup */</span>
<span class="gi">+			dma_desc-&gt;status.b.bs = BS_HOST_BUSY; </span>
<span class="gi">+			dma_desc-&gt;status.b.l = 1;</span>
<span class="gi">+			dma_desc-&gt;status.b.ioc = 1;</span>
<span class="gi">+			dma_desc-&gt;status.b.bytes = pcd-&gt;ep0.dwc_ep.maxpacket;</span>
<span class="gi">+			dma_desc-&gt;buf = pcd-&gt;setup_pkt_dma_handle;</span>
<span class="gi">+			dma_desc-&gt;status.b.bs = BS_HOST_READY; </span>
<span class="gi">+</span>
<span class="gi">+			/** DOEPDMA0 Register write */</span>
<span class="gi">+			VERIFY_PCD_DMA_ADDR(dev_if-&gt;dma_setup_desc_addr[dev_if-&gt;setup_desc_index]);</span>
<span class="gi">+			dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doepdma, dev_if-&gt;dma_setup_desc_addr[dev_if-&gt;setup_desc_index]);</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+	} else {</span>
<span class="gi">+		/** put here as for Hermes mode deptisz register should not be written */</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doeptsiz, </span>
<span class="gi">+					 doeptsize0.d32);		 </span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/** DOEPCTL0 Register write */</span>
<span class="gi">+	doepctl.b.epena = 1;</span>
<span class="gi">+	doepctl.b.cnak = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doepctl, doepctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+#ifdef VERBOSE</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;doepctl0=%0x\n&quot;, </span>
<span class="gi">+				dwc_read_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doepctl));</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;diepctl0=%0x\n&quot;, </span>
<span class="gi">+				dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[0]-&gt;diepctl));</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+		</span>
<span class="gi">+/**</span>
<span class="gi">+ * This interrupt occurs when a USB Reset is detected.	When the USB</span>
<span class="gi">+ * Reset Interrupt occurs the device state is set to DEFAULT and the</span>
<span class="gi">+ * EP0 state is set to IDLE.</span>
<span class="gi">+ *	-#	Set the NAK bit for all OUT endpoints (DOEPCTLn.SNAK = 1)</span>
<span class="gi">+ *	-#	Unmask the following interrupt bits</span>
<span class="gi">+ *		- DAINTMSK.INEP0 = 1 (Control 0 IN endpoint)</span>
<span class="gi">+ *	- DAINTMSK.OUTEP0 = 1 (Control 0 OUT endpoint)</span>
<span class="gi">+ *	- DOEPMSK.SETUP = 1</span>
<span class="gi">+ *	- DOEPMSK.XferCompl = 1</span>
<span class="gi">+ *	- DIEPMSK.XferCompl = 1</span>
<span class="gi">+ *	- DIEPMSK.TimeOut = 1</span>
<span class="gi">+ *	-# Program the following fields in the endpoint specific registers</span>
<span class="gi">+ *	for Control OUT EP 0, in order to receive a setup packet</span>
<span class="gi">+ *	- DOEPTSIZ0.Packet Count = 3 (To receive up to 3 back to back</span>
<span class="gi">+ *	  setup packets)</span>
<span class="gi">+ *	- DOEPTSIZE0.Transfer Size = 24 Bytes (To receive up to 3 back</span>
<span class="gi">+ *	  to back setup packets)</span>
<span class="gi">+ *		- In DMA mode, DOEPDMA0 Register with a memory address to</span>
<span class="gi">+ *		  store any setup packets received</span>
<span class="gi">+ * At this point, all the required initialization, except for enabling</span>
<span class="gi">+ * the control 0 OUT endpoint is done, for receiving SETUP packets.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_usb_reset_intr(dwc_otg_pcd_t * pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	depctl_data_t doepctl = { .d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+	daint_data_t daintmsk = { .d32 = 0};</span>
<span class="gi">+	doepmsk_data_t doepmsk = { .d32 = 0};</span>
<span class="gi">+	diepmsk_data_t diepmsk = { .d32 = 0};</span>
<span class="gi">+	</span>
<span class="gi">+	dcfg_data_t dcfg = { .d32=0 };</span>
<span class="gi">+	grstctl_t resetctl = { .d32=0 };</span>
<span class="gi">+	dctl_data_t dctl = {.d32=0};</span>
<span class="gi">+	int i = 0;</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+						</span>
<span class="gi">+	DWC_PRINT(&quot;USB RESET\n&quot;);</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+	for(i = 1;i &lt; 16; ++i)</span>
<span class="gi">+	{</span>
<span class="gi">+		dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+		dwc_ep_t *dwc_ep;</span>
<span class="gi">+		ep = get_in_ep(pcd,i);</span>
<span class="gi">+		if(ep != 0){</span>
<span class="gi">+			dwc_ep = &amp;ep-&gt;dwc_ep;</span>
<span class="gi">+			dwc_ep-&gt;next_frame = 0xffffffff;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+#endif /* DWC_EN_ISOC  */</span>
<span class="gi">+</span>
<span class="gi">+	/* reset the HNP settings */</span>
<span class="gi">+	dwc_otg_pcd_update_otg(pcd, 1);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear the Remote Wakeup Signalling */</span>
<span class="gi">+	dctl.b.rmtwkupsig = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dctl, </span>
<span class="gi">+					  dctl.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Set NAK for all OUT EPs */</span>
<span class="gi">+	doepctl.b.snak = 1;</span>
<span class="gi">+	for (i=0; i &lt;= dev_if-&gt;num_out_eps; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;out_ep_regs[i]-&gt;doepctl, </span>
<span class="gi">+						 doepctl.d32);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Flush the NP Tx FIFO */</span>
<span class="gi">+	dwc_otg_flush_tx_fifo(core_if, 0x10);</span>
<span class="gi">+	/* Flush the Learning Queue */</span>
<span class="gi">+	resetctl.b.intknqflsh = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;core_if-&gt;core_global_regs-&gt;grstctl, resetctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		daintmsk.b.inep0 = 1;</span>
<span class="gi">+		daintmsk.b.outep0 = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;deachintmsk, daintmsk.d32);</span>
<span class="gi">+</span>
<span class="gi">+		doepmsk.b.setup = 1;</span>
<span class="gi">+		doepmsk.b.xfercompl = 1;</span>
<span class="gi">+		doepmsk.b.ahberr = 1;</span>
<span class="gi">+		doepmsk.b.epdisabled = 1;</span>
<span class="gi">+		</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+			doepmsk.b.stsphsercvd = 1;</span>
<span class="gi">+			doepmsk.b.bna = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+/*		</span>
<span class="gi">+		doepmsk.b.babble = 1;</span>
<span class="gi">+		doepmsk.b.nyet = 1;</span>
<span class="gi">+		</span>
<span class="gi">+		if(core_if-&gt;dma_enable) {</span>
<span class="gi">+			doepmsk.b.nak = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+*/</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;doepeachintmsk[0], doepmsk.d32);</span>
<span class="gi">+	</span>
<span class="gi">+		diepmsk.b.xfercompl = 1;</span>
<span class="gi">+		diepmsk.b.timeout = 1;</span>
<span class="gi">+		diepmsk.b.epdisabled = 1;</span>
<span class="gi">+		diepmsk.b.ahberr = 1;</span>
<span class="gi">+		diepmsk.b.intknepmis = 1;</span>
<span class="gi">+		</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+			diepmsk.b.bna = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+/*		</span>
<span class="gi">+		if(core_if-&gt;dma_enable) {</span>
<span class="gi">+			diepmsk.b.nak = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+*/</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepeachintmsk[0], diepmsk.d32);		 </span>
<span class="gi">+	} else{</span>
<span class="gi">+		daintmsk.b.inep0 = 1;</span>
<span class="gi">+		daintmsk.b.outep0 = 1;</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;daintmsk, daintmsk.d32);</span>
<span class="gi">+</span>
<span class="gi">+		doepmsk.b.setup = 1;</span>
<span class="gi">+		doepmsk.b.xfercompl = 1;</span>
<span class="gi">+		doepmsk.b.ahberr = 1;</span>
<span class="gi">+		doepmsk.b.epdisabled = 1;</span>
<span class="gi">+	</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+			doepmsk.b.stsphsercvd = 1;</span>
<span class="gi">+			doepmsk.b.bna = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+/*		</span>
<span class="gi">+		doepmsk.b.babble = 1;</span>
<span class="gi">+		doepmsk.b.nyet = 1;</span>
<span class="gi">+		doepmsk.b.nak = 1;</span>
<span class="gi">+*/</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;doepmsk, doepmsk.d32);</span>
<span class="gi">+	</span>
<span class="gi">+		diepmsk.b.xfercompl = 1;</span>
<span class="gi">+		diepmsk.b.timeout = 1;</span>
<span class="gi">+		diepmsk.b.epdisabled = 1;</span>
<span class="gi">+		diepmsk.b.ahberr = 1;</span>
<span class="gi">+		diepmsk.b.intknepmis = 1;</span>
<span class="gi">+		</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+			diepmsk.b.bna = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+//		diepmsk.b.nak = 1;</span>
<span class="gi">+</span>
<span class="gi">+		dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepmsk, diepmsk.d32);		 </span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Reset Device Address */</span>
<span class="gi">+	dcfg.d32 = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dcfg);</span>
<span class="gi">+	dcfg.b.devaddr = 0;</span>
<span class="gi">+	dwc_write_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dcfg, dcfg.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* setup EP0 to receive SETUP packets */</span>
<span class="gi">+	ep0_out_start(core_if, pcd);</span>
<span class="gi">+		</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.usbreset = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Get the device speed from the device status register and convert it</span>
<span class="gi">+ * to USB speed constant.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ */</span>
<span class="gi">+static int get_device_speed(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	dsts_data_t dsts;</span>
<span class="gi">+	enum usb_device_speed speed = USB_SPEED_UNKNOWN;</span>
<span class="gi">+	dsts.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dsts);</span>
<span class="gi">+</span>
<span class="gi">+	switch (dsts.b.enumspd) {</span>
<span class="gi">+	case DWC_DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ:</span>
<span class="gi">+		speed = USB_SPEED_HIGH;</span>
<span class="gi">+		break;</span>
<span class="gi">+	case DWC_DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ:</span>
<span class="gi">+	case DWC_DSTS_ENUMSPD_FS_PHY_48MHZ:</span>
<span class="gi">+		speed = USB_SPEED_FULL;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case DWC_DSTS_ENUMSPD_LS_PHY_6MHZ:</span>
<span class="gi">+		speed = USB_SPEED_LOW;</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return speed; </span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Read the device status register and set the device speed in the</span>
<span class="gi">+ * data structure.	</span>
<span class="gi">+ * Set up EP0 to receive SETUP packets by calling dwc_ep0_activate.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_enum_done_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep0 = &amp;pcd-&gt;ep0;</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+	gusbcfg_data_t gusbcfg;</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs =</span>
<span class="gi">+		GET_CORE_IF(pcd)-&gt;core_global_regs;</span>
<span class="gi">+	uint8_t utmi16b, utmi8b;</span>
<span class="gi">+//	DWC_DEBUGPL(DBG_PCD, &quot;SPEED ENUM\n&quot;);</span>
<span class="gi">+	DWC_PRINT(&quot;SPEED ENUM\n&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	if (GET_CORE_IF(pcd)-&gt;snpsid &gt;= 0x4F54260A) {</span>
<span class="gi">+		utmi16b = 6;</span>
<span class="gi">+		utmi8b = 9;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		utmi16b = 4;</span>
<span class="gi">+		utmi8b = 8;</span>
<span class="gi">+	}</span>
<span class="gi">+	dwc_otg_ep0_activate(GET_CORE_IF(pcd), &amp;ep0-&gt;dwc_ep);</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+	print_ep0_state(pcd);</span>
<span class="gi">+#endif</span>
<span class="gi">+		</span>
<span class="gi">+	if (pcd-&gt;ep0state == EP0_DISCONNECT) {</span>
<span class="gi">+		pcd-&gt;ep0state = EP0_IDLE;</span>
<span class="gi">+	} </span>
<span class="gi">+	else if (pcd-&gt;ep0state == EP0_STALL) {</span>
<span class="gi">+		pcd-&gt;ep0state = EP0_IDLE;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	pcd-&gt;ep0state = EP0_IDLE;</span>
<span class="gi">+</span>
<span class="gi">+	ep0-&gt;stopped = 0;</span>
<span class="gi">+		</span>
<span class="gi">+	pcd-&gt;gadget.speed = get_device_speed(GET_CORE_IF(pcd));</span>
<span class="gi">+</span>
<span class="gi">+	/* Set USB turnaround time based on device speed and PHY interface. */</span>
<span class="gi">+	gusbcfg.d32 = dwc_read_reg32(&amp;global_regs-&gt;gusbcfg);</span>
<span class="gi">+	if (pcd-&gt;gadget.speed == USB_SPEED_HIGH) {</span>
<span class="gi">+		if (GET_CORE_IF(pcd)-&gt;hwcfg2.b.hs_phy_type == DWC_HWCFG2_HS_PHY_TYPE_ULPI) {</span>
<span class="gi">+			/* ULPI interface */</span>
<span class="gi">+			gusbcfg.b.usbtrdtim = 9;</span>
<span class="gi">+		}</span>
<span class="gi">+		if (GET_CORE_IF(pcd)-&gt;hwcfg2.b.hs_phy_type == DWC_HWCFG2_HS_PHY_TYPE_UTMI) {</span>
<span class="gi">+			/* UTMI+ interface */</span>
<span class="gi">+			if (GET_CORE_IF(pcd)-&gt;hwcfg4.b.utmi_phy_data_width == 0) {</span>
<span class="gi">+				gusbcfg.b.usbtrdtim = utmi8b;</span>
<span class="gi">+			}</span>
<span class="gi">+			else if (GET_CORE_IF(pcd)-&gt;hwcfg4.b.utmi_phy_data_width == 1) {</span>
<span class="gi">+				gusbcfg.b.usbtrdtim = utmi16b;</span>
<span class="gi">+			}</span>
<span class="gi">+			else if (GET_CORE_IF(pcd)-&gt;core_params-&gt;phy_utmi_width == 8) {</span>
<span class="gi">+				gusbcfg.b.usbtrdtim = utmi8b;</span>
<span class="gi">+			} </span>
<span class="gi">+			else {</span>
<span class="gi">+				gusbcfg.b.usbtrdtim = utmi16b;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		if (GET_CORE_IF(pcd)-&gt;hwcfg2.b.hs_phy_type == DWC_HWCFG2_HS_PHY_TYPE_UTMI_ULPI) {</span>
<span class="gi">+			/* UTMI+  OR  ULPI interface */</span>
<span class="gi">+			if (gusbcfg.b.ulpi_utmi_sel == 1) {</span>
<span class="gi">+				/* ULPI interface */</span>
<span class="gi">+				gusbcfg.b.usbtrdtim = 9;</span>
<span class="gi">+			} </span>
<span class="gi">+			else {</span>
<span class="gi">+				/* UTMI+ interface */</span>
<span class="gi">+				if (GET_CORE_IF(pcd)-&gt;core_params-&gt;phy_utmi_width == 16) {</span>
<span class="gi">+					gusbcfg.b.usbtrdtim = utmi16b;</span>
<span class="gi">+				} </span>
<span class="gi">+				else {</span>
<span class="gi">+					gusbcfg.b.usbtrdtim = utmi8b;</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		/* Full or low speed */</span>
<span class="gi">+		gusbcfg.b.usbtrdtim = 9;</span>
<span class="gi">+	}</span>
<span class="gi">+	dwc_write_reg32(&amp;global_regs-&gt;gusbcfg, gusbcfg.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.enumdone = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintsts, </span>
<span class="gi">+			 gintsts.d32);</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This interrupt indicates that the ISO OUT Packet was dropped due to</span>
<span class="gi">+ * Rx FIFO full or Rx Status Queue Full.  If this interrupt occurs</span>
<span class="gi">+ * read all the data from the Rx FIFO.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_isoc_out_packet_dropped_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_PRINT(&quot;INTERRUPT Handler not implemented for %s\n&quot;,</span>
<span class="gi">+			  &quot;ISOC Out Dropped&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	intr_mask.b.isooutdrop = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintmsk, </span>
<span class="gi">+			  intr_mask.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.isooutdrop = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintsts, </span>
<span class="gi">+			 gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This interrupt indicates the end of the portion of the micro-frame</span>
<span class="gi">+ * for periodic transactions.  If there is a periodic transaction for</span>
<span class="gi">+ * the next frame, load the packets into the EP periodic Tx FIFO.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_end_periodic_frame_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+	DWC_PRINT(&quot;INTERRUPT Handler not implemented for %s\n&quot;, &quot;EOP&quot;);</span>
<span class="gi">+</span>
<span class="gi">+	intr_mask.b.eopframe = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintmsk, </span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.eopframe = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This interrupt indicates that EP of the packet on the top of the</span>
<span class="gi">+ * non-periodic Tx FIFO does not match EP of the IN Token received.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The &quot;Device IN Token Queue&quot; Registers are read to determine the</span>
<span class="gi">+ * order the IN Tokens have been received.	The non-periodic Tx FIFO</span>
<span class="gi">+ * is flushed, so it can be reloaded in the order seen in the IN Token</span>
<span class="gi">+ * Queue.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_ep_mismatch_intr(dwc_otg_core_if_t *core_if)</span>
<span class="gi">+{</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s(%p)\n&quot;, __func__, core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.epmismatch = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;core_if-&gt;core_global_regs-&gt;gintsts, gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This funcion stalls EP0.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void ep0_do_stall(dwc_otg_pcd_t *pcd, const int err_val) </span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep0 = &amp;pcd-&gt;ep0;</span>
<span class="gi">+	struct usb_ctrlrequest	*ctrl = &amp;pcd-&gt;setup_pkt-&gt;req;</span>
<span class="gi">+	DWC_WARN(&quot;req %02x.%02x protocol STALL; err %d\n&quot;,</span>
<span class="gi">+			 ctrl-&gt;bRequestType, ctrl-&gt;bRequest, err_val);</span>
<span class="gi">+</span>
<span class="gi">+	ep0-&gt;dwc_ep.is_in = 1;</span>
<span class="gi">+	dwc_otg_ep_set_stall(pcd-&gt;otg_dev-&gt;core_if, &amp;ep0-&gt;dwc_ep);		</span>
<span class="gi">+	pcd-&gt;ep0.stopped = 1;</span>
<span class="gi">+	pcd-&gt;ep0state = EP0_IDLE;</span>
<span class="gi">+	ep0_out_start(GET_CORE_IF(pcd), pcd);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This functions delegates the setup command to the gadget driver.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void do_gadget_setup(dwc_otg_pcd_t *pcd, </span>
<span class="gi">+					struct usb_ctrlrequest * ctrl)</span>
<span class="gi">+{</span>
<span class="gi">+	int ret = 0;</span>
<span class="gi">+	if (pcd-&gt;driver &amp;&amp; pcd-&gt;driver-&gt;setup) {</span>
<span class="gi">+		SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+		ret = pcd-&gt;driver-&gt;setup(&amp;pcd-&gt;gadget, ctrl);</span>
<span class="gi">+		SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+		if (ret &lt; 0) {</span>
<span class="gi">+			ep0_do_stall(pcd, ret);</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/** @todo This is a g_file_storage gadget driver specific</span>
<span class="gi">+		 * workaround: a DELAYED_STATUS result from the fsg_setup</span>
<span class="gi">+		 * routine will result in the gadget queueing a EP0 IN status</span>
<span class="gi">+		 * phase for a two-stage control transfer.	Exactly the same as</span>
<span class="gi">+		 * a SET_CONFIGURATION/SET_INTERFACE except that this is a class</span>
<span class="gi">+		 * specific request.  Need a generic way to know when the gadget</span>
<span class="gi">+		 * driver will queue the status phase.	Can we assume when we</span>
<span class="gi">+		 * call the gadget driver setup() function that it will always</span>
<span class="gi">+		 * queue and require the following flag?  Need to look into</span>
<span class="gi">+		 * this.</span>
<span class="gi">+		 */</span>
<span class="gi">+</span>
<span class="gi">+		if (ret == 256 + 999) {</span>
<span class="gi">+			pcd-&gt;request_config = 1;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function starts the Zero-Length Packet for the IN status phase</span>
<span class="gi">+ * of a 2 stage control transfer. </span>
<span class="gi">+ */</span>
<span class="gi">+static inline void do_setup_in_status_phase(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep0 = &amp;pcd-&gt;ep0;</span>
<span class="gi">+	if (pcd-&gt;ep0state == EP0_STALL) {</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+			</span>
<span class="gi">+	pcd-&gt;ep0state = EP0_IN_STATUS_PHASE;</span>
<span class="gi">+		</span>
<span class="gi">+	/* Prepare for more SETUP Packets */</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;EP0 IN ZLP\n&quot;);</span>
<span class="gi">+	ep0-&gt;dwc_ep.xfer_len = 0;</span>
<span class="gi">+	ep0-&gt;dwc_ep.xfer_count = 0;</span>
<span class="gi">+	ep0-&gt;dwc_ep.is_in = 1;</span>
<span class="gi">+	ep0-&gt;dwc_ep.dma_addr = pcd-&gt;setup_pkt_dma_handle;</span>
<span class="gi">+	dwc_otg_ep0_start_transfer(GET_CORE_IF(pcd), &amp;ep0-&gt;dwc_ep);</span>
<span class="gi">+</span>
<span class="gi">+	/* Prepare for more SETUP Packets */</span>
<span class="gi">+//	if(GET_CORE_IF(pcd)-&gt;dma_enable == 0) ep0_out_start(GET_CORE_IF(pcd), pcd);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function starts the Zero-Length Packet for the OUT status phase</span>
<span class="gi">+ * of a 2 stage control transfer. </span>
<span class="gi">+ */</span>
<span class="gi">+static inline void do_setup_out_status_phase(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep0 = &amp;pcd-&gt;ep0;</span>
<span class="gi">+	if (pcd-&gt;ep0state == EP0_STALL) {</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;EP0 STALLED\n&quot;);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+	pcd-&gt;ep0state = EP0_OUT_STATUS_PHASE;</span>
<span class="gi">+		</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;EP0 OUT ZLP\n&quot;);</span>
<span class="gi">+	ep0-&gt;dwc_ep.xfer_len = 0;</span>
<span class="gi">+	ep0-&gt;dwc_ep.xfer_count = 0;</span>
<span class="gi">+	ep0-&gt;dwc_ep.is_in = 0;</span>
<span class="gi">+	ep0-&gt;dwc_ep.dma_addr = pcd-&gt;setup_pkt_dma_handle;</span>
<span class="gi">+	dwc_otg_ep0_start_transfer(GET_CORE_IF(pcd), &amp;ep0-&gt;dwc_ep);</span>
<span class="gi">+</span>
<span class="gi">+	/* Prepare for more SETUP Packets */</span>
<span class="gi">+	if(GET_CORE_IF(pcd)-&gt;dma_enable == 0) {</span>
<span class="gi">+			ep0_out_start(GET_CORE_IF(pcd), pcd);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Clear the EP halt (STALL) and if pending requests start the</span>
<span class="gi">+ * transfer.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void pcd_clear_halt(dwc_otg_pcd_t *pcd, dwc_otg_pcd_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	if(ep-&gt;dwc_ep.stall_clear_flag == 0)</span>
<span class="gi">+		dwc_otg_ep_clear_stall(GET_CORE_IF(pcd), &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+</span>
<span class="gi">+	/* Reactive the EP */</span>
<span class="gi">+	dwc_otg_ep_activate(GET_CORE_IF(pcd), &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+	if (ep-&gt;stopped) {</span>
<span class="gi">+		ep-&gt;stopped = 0;</span>
<span class="gi">+		/* If there is a request in the EP queue start it */ </span>
<span class="gi">+</span>
<span class="gi">+		/** @todo FIXME: this causes an EP mismatch in DMA mode.</span>
<span class="gi">+		 * epmismatch not yet implemented. */</span>
<span class="gi">+</span>
<span class="gi">+		/*</span>
<span class="gi">+		 * Above fixme is solved by implmenting a tasklet to call the</span>
<span class="gi">+		 * start_next_request(), outside of interrupt context at some</span>
<span class="gi">+		 * time after the current time, after a clear-halt setup packet.</span>
<span class="gi">+		 * Still need to implement ep mismatch in the future if a gadget</span>
<span class="gi">+		 * ever uses more than one endpoint at once </span>
<span class="gi">+		 */</span>
<span class="gi">+		ep-&gt;queue_sof = 1;</span>
<span class="gi">+		tasklet_schedule (pcd-&gt;start_xfer_tasklet);</span>
<span class="gi">+	} </span>
<span class="gi">+	/* Start Control Status Phase */</span>
<span class="gi">+	do_setup_in_status_phase(pcd);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is called when the SET_FEATURE TEST_MODE Setup packet</span>
<span class="gi">+ * is sent from the host.  The Device Control register is written with</span>
<span class="gi">+ * the Test Mode bits set to the specified Test Mode.  This is done as</span>
<span class="gi">+ * a tasklet so that the &quot;Status&quot; phase of the control transfer</span>
<span class="gi">+ * completes before transmitting the TEST packets.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @todo This has not been tested since the tasklet struct was put</span>
<span class="gi">+ * into the PCD struct!</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static void do_test_mode(unsigned long data)</span>
<span class="gi">+{</span>
<span class="gi">+	dctl_data_t		dctl;</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = (dwc_otg_pcd_t *)data;</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	int test_mode = pcd-&gt;test_mode;</span>
<span class="gi">+		</span>
<span class="gi">+</span>
<span class="gi">+//	  DWC_WARN(&quot;%s() has not been tested since being rewritten!\n&quot;, __func__);		  </span>
<span class="gi">+						</span>
<span class="gi">+	dctl.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dctl);</span>
<span class="gi">+	switch (test_mode) {</span>
<span class="gi">+	case 1: // TEST_J</span>
<span class="gi">+		dctl.b.tstctl = 1;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case 2: // TEST_K	</span>
<span class="gi">+		dctl.b.tstctl = 2;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case 3: // TEST_SE0_NAK</span>
<span class="gi">+		dctl.b.tstctl = 3;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case 4: // TEST_PACKET</span>
<span class="gi">+		dctl.b.tstctl = 4;</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case 5: // TEST_FORCE_ENABLE</span>
<span class="gi">+		dctl.b.tstctl = 5;</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+	dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dctl, dctl.d32);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function process the GET_STATUS Setup Commands.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void do_get_status(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_ctrlrequest	ctrl = pcd-&gt;setup_pkt-&gt;req;</span>
<span class="gi">+	dwc_otg_pcd_ep_t	*ep;</span>
<span class="gi">+	dwc_otg_pcd_ep_t	*ep0 = &amp;pcd-&gt;ep0;</span>
<span class="gi">+	uint16_t		*status = pcd-&gt;status_buf;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, </span>
<span class="gi">+			&quot;GET_STATUS %02x.%02x v%04x i%04x l%04x\n&quot;,</span>
<span class="gi">+			ctrl.bRequestType, ctrl.bRequest,</span>
<span class="gi">+			ctrl.wValue, ctrl.wIndex, ctrl.wLength);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	switch (ctrl.bRequestType &amp; USB_RECIP_MASK) {</span>
<span class="gi">+	case USB_RECIP_DEVICE:</span>
<span class="gi">+		*status = 0x1; /* Self powered */</span>
<span class="gi">+		*status |= pcd-&gt;remote_wakeup_enable &lt;&lt; 1; </span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case USB_RECIP_INTERFACE:</span>
<span class="gi">+		*status = 0;</span>
<span class="gi">+		break;						  </span>
<span class="gi">+</span>
<span class="gi">+	case USB_RECIP_ENDPOINT:</span>
<span class="gi">+		ep = get_ep_by_addr(pcd, ctrl.wIndex);</span>
<span class="gi">+		if (ep == 0 || ctrl.wLength &gt; 2) {</span>
<span class="gi">+			ep0_do_stall(pcd, -EOPNOTSUPP);</span>
<span class="gi">+			return;</span>
<span class="gi">+		}</span>
<span class="gi">+		/** @todo check for EP stall */</span>
<span class="gi">+		*status = ep-&gt;stopped;</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+	pcd-&gt;ep0_pending = 1;</span>
<span class="gi">+	ep0-&gt;dwc_ep.start_xfer_buff = (uint8_t *)status;</span>
<span class="gi">+	ep0-&gt;dwc_ep.xfer_buff = (uint8_t *)status;</span>
<span class="gi">+	ep0-&gt;dwc_ep.dma_addr = pcd-&gt;status_buf_dma_handle;</span>
<span class="gi">+	ep0-&gt;dwc_ep.xfer_len = 2;</span>
<span class="gi">+	ep0-&gt;dwc_ep.xfer_count = 0;</span>
<span class="gi">+	ep0-&gt;dwc_ep.total_len = ep0-&gt;dwc_ep.xfer_len;</span>
<span class="gi">+	dwc_otg_ep0_start_transfer(GET_CORE_IF(pcd), &amp;ep0-&gt;dwc_ep);</span>
<span class="gi">+}		</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function process the SET_FEATURE Setup Commands.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void do_set_feature(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = </span>
<span class="gi">+			core_if-&gt;core_global_regs;</span>
<span class="gi">+	struct usb_ctrlrequest	ctrl = pcd-&gt;setup_pkt-&gt;req;</span>
<span class="gi">+	dwc_otg_pcd_ep_t	*ep = 0;</span>
<span class="gi">+	int32_t otg_cap_param = core_if-&gt;core_params-&gt;otg_cap;</span>
<span class="gi">+	gotgctl_data_t gotgctl = { .d32 = 0 }; </span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;SET_FEATURE:%02x.%02x v%04x i%04x l%04x\n&quot;,</span>
<span class="gi">+			ctrl.bRequestType, ctrl.bRequest,</span>
<span class="gi">+			ctrl.wValue, ctrl.wIndex, ctrl.wLength);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD,&quot;otg_cap=%d\n&quot;, otg_cap_param);</span>
<span class="gi">+		</span>
<span class="gi">+</span>
<span class="gi">+	switch (ctrl.bRequestType &amp; USB_RECIP_MASK) {</span>
<span class="gi">+	case USB_RECIP_DEVICE:</span>
<span class="gi">+		switch (ctrl.wValue) {</span>
<span class="gi">+		case USB_DEVICE_REMOTE_WAKEUP:</span>
<span class="gi">+			pcd-&gt;remote_wakeup_enable = 1;</span>
<span class="gi">+			break;</span>
<span class="gi">+</span>
<span class="gi">+		case USB_DEVICE_TEST_MODE:</span>
<span class="gi">+			/* Setup the Test Mode tasklet to do the Test</span>
<span class="gi">+			 * Packet generation after the SETUP Status</span>
<span class="gi">+			 * phase has completed. */</span>
<span class="gi">+</span>
<span class="gi">+			/** @todo This has not been tested since the</span>
<span class="gi">+			 * tasklet struct was put into the PCD</span>
<span class="gi">+			 * struct! */</span>
<span class="gi">+			pcd-&gt;test_mode_tasklet.next = 0;</span>
<span class="gi">+			pcd-&gt;test_mode_tasklet.state = 0;</span>
<span class="gi">+			atomic_set(&amp;pcd-&gt;test_mode_tasklet.count, 0);</span>
<span class="gi">+			pcd-&gt;test_mode_tasklet.func = do_test_mode;</span>
<span class="gi">+			pcd-&gt;test_mode_tasklet.data = (unsigned long)pcd;</span>
<span class="gi">+			pcd-&gt;test_mode = ctrl.wIndex &gt;&gt; 8; </span>
<span class="gi">+			tasklet_schedule(&amp;pcd-&gt;test_mode_tasklet);</span>
<span class="gi">+			break;</span>
<span class="gi">+</span>
<span class="gi">+		case USB_DEVICE_B_HNP_ENABLE:</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, &quot;SET_FEATURE: USB_DEVICE_B_HNP_ENABLE\n&quot;);</span>
<span class="gi">+						</span>
<span class="gi">+			/* dev may initiate HNP */</span>
<span class="gi">+			if (otg_cap_param == DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE) {</span>
<span class="gi">+				pcd-&gt;b_hnp_enable = 1;</span>
<span class="gi">+				dwc_otg_pcd_update_otg(pcd, 0);</span>
<span class="gi">+				DWC_DEBUGPL(DBG_PCD, &quot;Request B HNP\n&quot;);</span>
<span class="gi">+				/**@todo Is the gotgctl.devhnpen cleared</span>
<span class="gi">+				 * by a USB Reset? */</span>
<span class="gi">+				gotgctl.b.devhnpen = 1;</span>
<span class="gi">+				gotgctl.b.hnpreq = 1;</span>
<span class="gi">+				dwc_write_reg32(&amp;global_regs-&gt;gotgctl, gotgctl.d32);</span>
<span class="gi">+			}</span>
<span class="gi">+			else {</span>
<span class="gi">+				ep0_do_stall(pcd, -EOPNOTSUPP);</span>
<span class="gi">+			}						 </span>
<span class="gi">+			break;</span>
<span class="gi">+</span>
<span class="gi">+		case USB_DEVICE_A_HNP_SUPPORT:</span>
<span class="gi">+			/* RH port supports HNP */</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, &quot;SET_FEATURE: USB_DEVICE_A_HNP_SUPPORT\n&quot;);</span>
<span class="gi">+			if (otg_cap_param == DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE) {</span>
<span class="gi">+				pcd-&gt;a_hnp_support = 1;</span>
<span class="gi">+				dwc_otg_pcd_update_otg(pcd, 0);</span>
<span class="gi">+			} </span>
<span class="gi">+			else {</span>
<span class="gi">+				ep0_do_stall(pcd, -EOPNOTSUPP);</span>
<span class="gi">+			}						 </span>
<span class="gi">+			break;</span>
<span class="gi">+</span>
<span class="gi">+		case USB_DEVICE_A_ALT_HNP_SUPPORT:</span>
<span class="gi">+			/* other RH port does */</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, &quot;SET_FEATURE: USB_DEVICE_A_ALT_HNP_SUPPORT\n&quot;);</span>
<span class="gi">+			if (otg_cap_param == DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE) {</span>
<span class="gi">+				pcd-&gt;a_alt_hnp_support = 1;</span>
<span class="gi">+				dwc_otg_pcd_update_otg(pcd, 0);</span>
<span class="gi">+			} </span>
<span class="gi">+			else {</span>
<span class="gi">+				ep0_do_stall(pcd, -EOPNOTSUPP);</span>
<span class="gi">+			}						 </span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		do_setup_in_status_phase(pcd);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case USB_RECIP_INTERFACE:</span>
<span class="gi">+		do_gadget_setup(pcd, &amp;ctrl);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case USB_RECIP_ENDPOINT:</span>
<span class="gi">+		if (ctrl.wValue == USB_ENDPOINT_HALT) {</span>
<span class="gi">+			ep = get_ep_by_addr(pcd, ctrl.wIndex);</span>
<span class="gi">+			if (ep == 0) {</span>
<span class="gi">+				ep0_do_stall(pcd, -EOPNOTSUPP);</span>
<span class="gi">+				return;</span>
<span class="gi">+			} </span>
<span class="gi">+			ep-&gt;stopped = 1;</span>
<span class="gi">+			dwc_otg_ep_set_stall(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+		}</span>
<span class="gi">+		do_setup_in_status_phase(pcd);</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function process the CLEAR_FEATURE Setup Commands.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void do_clear_feature(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	struct usb_ctrlrequest	ctrl = pcd-&gt;setup_pkt-&gt;req;</span>
<span class="gi">+	dwc_otg_pcd_ep_t	*ep = 0;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, </span>
<span class="gi">+				&quot;CLEAR_FEATURE:%02x.%02x v%04x i%04x l%04x\n&quot;,</span>
<span class="gi">+				ctrl.bRequestType, ctrl.bRequest,</span>
<span class="gi">+				ctrl.wValue, ctrl.wIndex, ctrl.wLength);</span>
<span class="gi">+</span>
<span class="gi">+	switch (ctrl.bRequestType &amp; USB_RECIP_MASK) {</span>
<span class="gi">+	case USB_RECIP_DEVICE:</span>
<span class="gi">+		switch (ctrl.wValue) {</span>
<span class="gi">+		case USB_DEVICE_REMOTE_WAKEUP:</span>
<span class="gi">+			pcd-&gt;remote_wakeup_enable = 0;</span>
<span class="gi">+			break;</span>
<span class="gi">+</span>
<span class="gi">+		case USB_DEVICE_TEST_MODE:</span>
<span class="gi">+			/** @todo Add CLEAR_FEATURE for TEST modes. */</span>
<span class="gi">+			break;</span>
<span class="gi">+		}</span>
<span class="gi">+		do_setup_in_status_phase(pcd);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case USB_RECIP_ENDPOINT:</span>
<span class="gi">+		ep = get_ep_by_addr(pcd, ctrl.wIndex);</span>
<span class="gi">+		if (ep == 0) {</span>
<span class="gi">+			ep0_do_stall(pcd, -EOPNOTSUPP);</span>
<span class="gi">+			return;</span>
<span class="gi">+		} </span>
<span class="gi">+</span>
<span class="gi">+		pcd_clear_halt(pcd, ep);</span>
<span class="gi">+		</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function process the SET_ADDRESS Setup Commands.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void do_set_address(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = GET_CORE_IF(pcd)-&gt;dev_if;</span>
<span class="gi">+	struct usb_ctrlrequest	ctrl = pcd-&gt;setup_pkt-&gt;req;</span>
<span class="gi">+</span>
<span class="gi">+	if (ctrl.bRequestType == USB_RECIP_DEVICE) {</span>
<span class="gi">+		dcfg_data_t dcfg = {.d32=0};</span>
<span class="gi">+					</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+//			DWC_DEBUGPL(DBG_PCDV, &quot;SET_ADDRESS:%d\n&quot;, ctrl.wValue);</span>
<span class="gi">+#endif</span>
<span class="gi">+		dcfg.b.devaddr = ctrl.wValue;</span>
<span class="gi">+		dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dcfg, 0, dcfg.d32);</span>
<span class="gi">+		do_setup_in_status_phase(pcd);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ *	This function processes SETUP commands.	 In Linux, the USB Command</span>
<span class="gi">+ *	processing is done in two places - the first being the PCD and the</span>
<span class="gi">+ *	second in the Gadget Driver (for example, the File-Backed Storage</span>
<span class="gi">+ *	Gadget Driver).</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;table&gt;</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;Command	&lt;/td&gt;&lt;td&gt;Driver &lt;/td&gt;&lt;td&gt;Description&lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;GET_STATUS &lt;/td&gt;&lt;td&gt;PCD &lt;/td&gt;&lt;td&gt;Command is processed as</span>
<span class="gi">+ * defined in chapter 9 of the USB 2.0 Specification chapter 9</span>
<span class="gi">+ * &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;CLEAR_FEATURE &lt;/td&gt;&lt;td&gt;PCD &lt;/td&gt;&lt;td&gt;The Device and Endpoint</span>
<span class="gi">+ * requests are the ENDPOINT_HALT feature is procesed, all others the</span>
<span class="gi">+ * interface requests are ignored.&lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;SET_FEATURE &lt;/td&gt;&lt;td&gt;PCD &lt;/td&gt;&lt;td&gt;The Device and Endpoint</span>
<span class="gi">+ * requests are processed by the PCD.  Interface requests are passed</span>
<span class="gi">+ * to the Gadget Driver.&lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;SET_ADDRESS &lt;/td&gt;&lt;td&gt;PCD &lt;/td&gt;&lt;td&gt;Program the DCFG reg,</span>
<span class="gi">+ * with device address received &lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;GET_DESCRIPTOR &lt;/td&gt;&lt;td&gt;Gadget Driver &lt;/td&gt;&lt;td&gt;Return the</span>
<span class="gi">+ * requested descriptor&lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;SET_DESCRIPTOR &lt;/td&gt;&lt;td&gt;Gadget Driver &lt;/td&gt;&lt;td&gt;Optional -</span>
<span class="gi">+ * not implemented by any of the existing Gadget Drivers.&lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;SET_CONFIGURATION &lt;/td&gt;&lt;td&gt;Gadget Driver &lt;/td&gt;&lt;td&gt;Disable</span>
<span class="gi">+ * all EPs and enable EPs for new configuration.&lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;GET_CONFIGURATION &lt;/td&gt;&lt;td&gt;Gadget Driver &lt;/td&gt;&lt;td&gt;Return</span>
<span class="gi">+ * the current configuration&lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;SET_INTERFACE &lt;/td&gt;&lt;td&gt;Gadget Driver &lt;/td&gt;&lt;td&gt;Disable all</span>
<span class="gi">+ * EPs and enable EPs for new configuration.&lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;GET_INTERFACE &lt;/td&gt;&lt;td&gt;Gadget Driver &lt;/td&gt;&lt;td&gt;Return the</span>
<span class="gi">+ * current interface.&lt;/td&gt;&lt;/tr&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;tr&gt;&lt;td&gt;SYNC_FRAME &lt;/td&gt;&lt;td&gt;PCD &lt;/td&gt;&lt;td&gt;Display debug</span>
<span class="gi">+ * message.&lt;/td&gt;&lt;/tr&gt; </span>
<span class="gi">+ * &lt;/table&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * When the SETUP Phase Done interrupt occurs, the PCD SETUP commands are</span>
<span class="gi">+ * processed by pcd_setup. Calling the Function Driver&#39;s setup function from</span>
<span class="gi">+ * pcd_setup processes the gadget SETUP commands.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void pcd_setup(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	struct usb_ctrlrequest	ctrl = pcd-&gt;setup_pkt-&gt;req;</span>
<span class="gi">+	dwc_otg_pcd_ep_t	*ep0 = &amp;pcd-&gt;ep0;</span>
<span class="gi">+</span>
<span class="gi">+	deptsiz0_data_t doeptsize0 = { .d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;SETUP %02x.%02x v%04x i%04x l%04x\n&quot;,</span>
<span class="gi">+			ctrl.bRequestType, ctrl.bRequest,</span>
<span class="gi">+			ctrl.wValue, ctrl.wIndex, ctrl.wLength);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	doeptsize0.d32 = dwc_read_reg32(&amp;dev_if-&gt;out_ep_regs[0]-&gt;doeptsiz);</span>
<span class="gi">+</span>
<span class="gi">+	/** @todo handle &gt; 1 setup packet , assert error for now */</span>
<span class="gi">+</span>
<span class="gi">+	if (core_if-&gt;dma_enable &amp;&amp; core_if-&gt;dma_desc_enable == 0 &amp;&amp; (doeptsize0.b.supcnt &lt; 2)) {</span>
<span class="gi">+		DWC_ERROR (&quot;\n\n-----------	 CANNOT handle &gt; 1 setup packet in DMA mode\n\n&quot;);</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/* Clean up the request queue */</span>
<span class="gi">+	dwc_otg_request_nuke(ep0);</span>
<span class="gi">+	ep0-&gt;stopped = 0;</span>
<span class="gi">+</span>
<span class="gi">+	if (ctrl.bRequestType &amp; USB_DIR_IN) {		 </span>
<span class="gi">+		ep0-&gt;dwc_ep.is_in = 1;</span>
<span class="gi">+		pcd-&gt;ep0state = EP0_IN_DATA_PHASE;</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		ep0-&gt;dwc_ep.is_in = 0;</span>
<span class="gi">+		pcd-&gt;ep0state = EP0_OUT_DATA_PHASE;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	if(ctrl.wLength == 0) {</span>
<span class="gi">+		ep0-&gt;dwc_ep.is_in = 1;</span>
<span class="gi">+		pcd-&gt;ep0state = EP0_IN_STATUS_PHASE;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	if ((ctrl.bRequestType &amp; USB_TYPE_MASK) != USB_TYPE_STANDARD) {</span>
<span class="gi">+		/* handle non-standard (class/vendor) requests in the gadget driver */</span>
<span class="gi">+		do_gadget_setup(pcd, &amp;ctrl);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	/** @todo NGS: Handle bad setup packet? */</span>
<span class="gi">+</span>
<span class="gi">+///////////////////////////////////////////</span>
<span class="gi">+//// --- Standard Request handling --- ////</span>
<span class="gi">+	</span>
<span class="gi">+	switch (ctrl.bRequest) {</span>
<span class="gi">+	case USB_REQ_GET_STATUS:</span>
<span class="gi">+		do_get_status(pcd);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case USB_REQ_CLEAR_FEATURE:</span>
<span class="gi">+		do_clear_feature(pcd);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case USB_REQ_SET_FEATURE:</span>
<span class="gi">+		do_set_feature(pcd);</span>
<span class="gi">+		break;</span>
<span class="gi">+				</span>
<span class="gi">+	case USB_REQ_SET_ADDRESS:</span>
<span class="gi">+		do_set_address(pcd);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case USB_REQ_SET_INTERFACE:</span>
<span class="gi">+	case USB_REQ_SET_CONFIGURATION:</span>
<span class="gi">+//		_pcd-&gt;request_config = 1;	/* Configuration changed */</span>
<span class="gi">+		do_gadget_setup(pcd, &amp;ctrl);</span>
<span class="gi">+		break;</span>
<span class="gi">+				</span>
<span class="gi">+	case USB_REQ_SYNCH_FRAME:</span>
<span class="gi">+		do_gadget_setup(pcd, &amp;ctrl);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	default:</span>
<span class="gi">+		/* Call the Gadget Driver&#39;s setup functions */		  </span>
<span class="gi">+		do_gadget_setup(pcd, &amp;ctrl);</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function completes the ep0 control transfer.</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t ep0_complete_request(dwc_otg_pcd_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(ep-&gt;pcd);</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	dwc_otg_dev_in_ep_regs_t *in_ep_regs = </span>
<span class="gi">+	dev_if-&gt;in_ep_regs[ep-&gt;dwc_ep.num];</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+	dwc_otg_dev_out_ep_regs_t *out_ep_regs = </span>
<span class="gi">+			dev_if-&gt;out_ep_regs[ep-&gt;dwc_ep.num];</span>
<span class="gi">+#endif</span>
<span class="gi">+	deptsiz0_data_t deptsiz;</span>
<span class="gi">+	desc_sts_data_t desc_sts;</span>
<span class="gi">+	dwc_otg_pcd_request_t *req;</span>
<span class="gi">+	int is_last = 0;</span>
<span class="gi">+	dwc_otg_pcd_t *pcd = ep-&gt;pcd;</span>
<span class="gi">+		</span>
<span class="gi">+	//DWC_DEBUGPL(DBG_PCDV, &quot;%s() %s\n&quot;, __func__, _ep-&gt;ep.name);</span>
<span class="gi">+</span>
<span class="gi">+	if (pcd-&gt;ep0_pending &amp;&amp; list_empty(&amp;ep-&gt;queue)) {</span>
<span class="gi">+		if (ep-&gt;dwc_ep.is_in) {</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, &quot;Do setup OUT status phase\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+			do_setup_out_status_phase(pcd);</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, &quot;Do setup IN status phase\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+			do_setup_in_status_phase(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		pcd-&gt;ep0_pending = 0;</span>
<span class="gi">+		return 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	if (list_empty(&amp;ep-&gt;queue)) {</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	req = list_entry(ep-&gt;queue.next, dwc_otg_pcd_request_t, queue);</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	if (pcd-&gt;ep0state == EP0_OUT_STATUS_PHASE || pcd-&gt;ep0state == EP0_IN_STATUS_PHASE) {</span>
<span class="gi">+		is_last = 1;						</span>
<span class="gi">+	} </span>
<span class="gi">+	else if (ep-&gt;dwc_ep.is_in) {</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;in_ep_regs-&gt;dieptsiz);</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable != 0)</span>
<span class="gi">+			desc_sts.d32 = readl(dev_if-&gt;in_desc_addr);</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;%s len=%d  xfersize=%d pktcnt=%d\n&quot;, </span>
<span class="gi">+				ep-&gt;ep.name, ep-&gt;dwc_ep.xfer_len,</span>
<span class="gi">+				deptsiz.b.xfersize, deptsiz.b.pktcnt);</span>
<span class="gi">+#endif				  </span>
<span class="gi">+		</span>
<span class="gi">+		if (((core_if-&gt;dma_desc_enable == 0) &amp;&amp; (deptsiz.b.xfersize == 0)) ||</span>
<span class="gi">+			((core_if-&gt;dma_desc_enable != 0) &amp;&amp; (desc_sts.b.bytes == 0))) {</span>
<span class="gi">+			req-&gt;req.actual = ep-&gt;dwc_ep.xfer_count;</span>
<span class="gi">+			/* Is a Zero Len Packet needed? */</span>
<span class="gi">+			if (req-&gt;req.zero) {</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+				DWC_DEBUGPL(DBG_PCD, &quot;Setup Rx ZLP\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+			    req-&gt;req.zero = 0;</span>
<span class="gi">+			}</span>
<span class="gi">+			do_setup_out_status_phase(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		/* ep0-OUT */</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;out_ep_regs-&gt;doeptsiz);</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;%s len=%d xsize=%d pktcnt=%d\n&quot;,</span>
<span class="gi">+				ep-&gt;ep.name, ep-&gt;dwc_ep.xfer_len,</span>
<span class="gi">+				deptsiz.b.xfersize, </span>
<span class="gi">+				deptsiz.b.pktcnt);</span>
<span class="gi">+#endif</span>
<span class="gi">+		req-&gt;req.actual = ep-&gt;dwc_ep.xfer_count;</span>
<span class="gi">+		/* Is a Zero Len Packet needed? */</span>
<span class="gi">+		if (req-&gt;req.zero) {</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, &quot;Setup Tx ZLP\n&quot;);</span>
<span class="gi">+#endif</span>
<span class="gi">+    			req-&gt;req.zero = 0;</span>
<span class="gi">+		}</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable == 0)</span>
<span class="gi">+			do_setup_in_status_phase(pcd);</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	/* Complete the request */</span>
<span class="gi">+	if (is_last) {</span>
<span class="gi">+		dwc_otg_request_done(ep, req, 0);</span>
<span class="gi">+		ep-&gt;dwc_ep.start_xfer_buff = 0;</span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_buff = 0;</span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_len = 0;</span>
<span class="gi">+		return 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	return 0;		</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+inline void aligned_buf_patch_on_buf_dma_oep_completion(dwc_otg_pcd_ep_t *ep, uint32_t byte_count)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_ep_t *dwc_ep = &amp;ep-&gt;dwc_ep;</span>
<span class="gi">+	if(byte_count &amp;&amp; dwc_ep-&gt;aligned_buf &amp;&amp; </span>
<span class="gi">+		dwc_ep-&gt;dma_addr&gt;=dwc_ep-&gt;aligned_dma_addr &amp;&amp; </span>
<span class="gi">+		dwc_ep-&gt;dma_addr&lt;=(dwc_ep-&gt;aligned_dma_addr+dwc_ep-&gt;aligned_buf_size))\</span>
<span class="gi">+	{</span>
<span class="gi">+		//aligned buf used, apply complete patch</span>
<span class="gi">+		u32 offset=(dwc_ep-&gt;dma_addr-dwc_ep-&gt;aligned_dma_addr);</span>
<span class="gi">+		memcpy(dwc_ep-&gt;start_xfer_buff+offset, dwc_ep-&gt;aligned_buf+offset, byte_count);</span>
<span class="gi">+	</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function completes the request for the EP.	If there are</span>
<span class="gi">+ * additional requests for the EP in the queue they will be started.</span>
<span class="gi">+ */</span>
<span class="gi">+static void complete_ep(dwc_otg_pcd_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(ep-&gt;pcd);</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	dwc_otg_dev_in_ep_regs_t *in_ep_regs = </span>
<span class="gi">+	dev_if-&gt;in_ep_regs[ep-&gt;dwc_ep.num];</span>
<span class="gi">+	deptsiz_data_t deptsiz;</span>
<span class="gi">+	desc_sts_data_t desc_sts;</span>
<span class="gi">+	dwc_otg_pcd_request_t *req = 0;</span>
<span class="gi">+	dwc_otg_dma_desc_t* dma_desc;</span>
<span class="gi">+	uint32_t byte_count = 0;</span>
<span class="gi">+	int is_last = 0;</span>
<span class="gi">+	int i;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV,&quot;%s() %s-%s\n&quot;, __func__, ep-&gt;ep.name,</span>
<span class="gi">+					(ep-&gt;dwc_ep.is_in?&quot;IN&quot;:&quot;OUT&quot;));</span>
<span class="gi">+</span>
<span class="gi">+	/* Get any pending requests */</span>
<span class="gi">+	if (!list_empty(&amp;ep-&gt;queue)) {</span>
<span class="gi">+		req = list_entry(ep-&gt;queue.next, dwc_otg_pcd_request_t, </span>
<span class="gi">+				 queue);</span>
<span class="gi">+		if (!req) {</span>
<span class="gi">+			printk(&quot;complete_ep 0x%p, req = NULL!\n&quot;, ep);</span>
<span class="gi">+			return;</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		printk(&quot;complete_ep 0x%p, ep-&gt;queue empty!\n&quot;, ep);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;Requests %d\n&quot;, ep-&gt;pcd-&gt;request_pending);</span>
<span class="gi">+</span>
<span class="gi">+	if (ep-&gt;dwc_ep.is_in) {</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;in_ep_regs-&gt;dieptsiz);</span>
<span class="gi">+</span>
<span class="gi">+		if (core_if-&gt;dma_enable) {</span>
<span class="gi">+			//dma_unmap_single(NULL,ep-&gt;dwc_ep.dma_addr,ep-&gt;dwc_ep.xfer_count,DMA_NONE);</span>
<span class="gi">+			if(core_if-&gt;dma_desc_enable == 0) {</span>
<span class="gi">+				//dma_unmap_single(NULL,ep-&gt;dwc_ep.dma_addr,ep-&gt;dwc_ep.xfer_count,DMA_NONE);</span>
<span class="gi">+				if (deptsiz.b.xfersize == 0 &amp;&amp; deptsiz.b.pktcnt == 0) {</span>
<span class="gi">+					byte_count = ep-&gt;dwc_ep.xfer_len - ep-&gt;dwc_ep.xfer_count;</span>
<span class="gi">+DWC_DEBUGPL(DBG_PCDV,&quot;byte_count(%.8x) = (ep-&gt;dwc_ep.xfer_len(%.8x) - ep-&gt;dwc_ep.xfer_count(%.8x)\n&quot;, byte_count ,ep-&gt;dwc_ep.xfer_len , ep-&gt;dwc_ep.xfer_count );</span>
<span class="gi">+					</span>
<span class="gi">+					ep-&gt;dwc_ep.xfer_buff += byte_count;</span>
<span class="gi">+					ep-&gt;dwc_ep.dma_addr += byte_count;</span>
<span class="gi">+					ep-&gt;dwc_ep.xfer_count += byte_count;</span>
<span class="gi">+	</span>
<span class="gi">+					DWC_DEBUGPL(DBG_PCDV, &quot;%s len=%d  xfersize=%d pktcnt=%d\n&quot;, </span>
<span class="gi">+							ep-&gt;ep.name, ep-&gt;dwc_ep.xfer_len,</span>
<span class="gi">+							deptsiz.b.xfersize, deptsiz.b.pktcnt);</span>
<span class="gi">+		</span>
<span class="gi">+				</span>
<span class="gi">+					if(ep-&gt;dwc_ep.xfer_len &lt; ep-&gt;dwc_ep.total_len) {</span>
<span class="gi">+						//dwc_otg_ep_start_transfer(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+printk(&quot;Warning: transfer ended, but specified len is not accomplished!! ep-&gt;total_len=%.x,ep-&gt;dwc_ep.sent_zlp=%d, byte_count(%.8x) = (ep-&gt;dwc_ep.xfer_len(%.8x) - ep-&gt;dwc_ep.xfer_count(%.8x) - deptsiz.b.xfersize(%.8x)\n&quot;, ep-&gt;dwc_ep.total_len, ep-&gt;dwc_ep.sent_zlp, byte_count ,ep-&gt;dwc_ep.xfer_len , ep-&gt;dwc_ep.xfer_count , deptsiz.b.xfersize);</span>
<span class="gi">+					} else if(ep-&gt;dwc_ep.sent_zlp) {</span>
<span class="gi">+						/* 	</span>
<span class="gi">+						 * This fragment of code should initiate 0 </span>
<span class="gi">+						 * length trasfer in case if it is queued</span>
<span class="gi">+						 * a trasfer with size divisible to EPs max </span>
<span class="gi">+						 * packet size and with usb_request zero field </span>
<span class="gi">+						 * is set, which means that after data is transfered, </span>
<span class="gi">+						 * it is also should be transfered </span>
<span class="gi">+						 * a 0 length packet at the end. For Slave and </span>
<span class="gi">+						 * Buffer DMA modes in this case SW has </span>
<span class="gi">+						 * to initiate 2 transfers one with transfer size, </span>
<span class="gi">+						 * and the second with 0 size. For Desriptor </span>
<span class="gi">+						 * DMA mode SW is able to initiate a transfer, </span>
<span class="gi">+						 * which will handle all the packets including </span>
<span class="gi">+						 * the last  0 legth.</span>
<span class="gi">+						 */</span>
<span class="gi">+						ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+						dwc_otg_ep_start_zl_transfer(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+					} else {</span>
<span class="gi">+						is_last = 1;</span>
<span class="gi">+					}</span>
<span class="gi">+				} else {</span>
<span class="gi">+					DWC_WARN(&quot;Incomplete transfer (%s-%s [siz=%d pkt=%d])\n&quot;, </span>
<span class="gi">+							 ep-&gt;ep.name, (ep-&gt;dwc_ep.is_in?&quot;IN&quot;:&quot;OUT&quot;),</span>
<span class="gi">+							 deptsiz.b.xfersize, deptsiz.b.pktcnt);</span>
<span class="gi">+				}</span>
<span class="gi">+			} else {</span>
<span class="gi">+</span>
<span class="gi">+				dma_desc = ep-&gt;dwc_ep.desc_addr;</span>
<span class="gi">+				byte_count = 0;</span>
<span class="gi">+				ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+</span>
<span class="gi">+				for(i = 0; i &lt; ep-&gt;dwc_ep.desc_cnt; ++i) {</span>
<span class="gi">+					desc_sts.d32 = readl(dma_desc);</span>
<span class="gi">+					byte_count += desc_sts.b.bytes;</span>
<span class="gi">+					dma_desc++;</span>
<span class="gi">+				}</span>
<span class="gi">+				</span>
<span class="gi">+				if(byte_count == 0) {</span>
<span class="gi">+					ep-&gt;dwc_ep.xfer_count = ep-&gt;dwc_ep.total_len;</span>
<span class="gi">+					is_last = 1;</span>
<span class="gi">+				} else {</span>
<span class="gi">+					DWC_WARN(&quot;Incomplete transfer\n&quot;);</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+		} else {</span>
<span class="gi">+			if (deptsiz.b.xfersize == 0 &amp;&amp; deptsiz.b.pktcnt == 0) {</span>
<span class="gi">+				/* 	Check if the whole transfer was completed,  </span>
<span class="gi">+				 * 	if no, setup transfer for next portion of data</span>
<span class="gi">+				 */</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, &quot;%s len=%d  xfersize=%d pktcnt=%d\n&quot;, </span>
<span class="gi">+					ep-&gt;ep.name, ep-&gt;dwc_ep.xfer_len,</span>
<span class="gi">+					deptsiz.b.xfersize, deptsiz.b.pktcnt);</span>
<span class="gi">+				if(ep-&gt;dwc_ep.xfer_len &lt; ep-&gt;dwc_ep.total_len) {</span>
<span class="gi">+					//dwc_otg_ep_start_transfer(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+printk(&quot;Warning: transfer ended, but specified len is not accomplished!! ep-&gt;total_len=%.x,ep-&gt;dwc_ep.sent_zlp=%d, ep-&gt;dwc_ep.xfer_len(%.8x) \n&quot;, ep-&gt;dwc_ep.total_len, ep-&gt;dwc_ep.sent_zlp, ep-&gt;dwc_ep.xfer_len );</span>
<span class="gi">+				} else if(ep-&gt;dwc_ep.sent_zlp) {</span>
<span class="gi">+					/* 	</span>
<span class="gi">+					 * This fragment of code should initiate 0 </span>
<span class="gi">+					 * length trasfer in case if it is queued</span>
<span class="gi">+					 * a trasfer with size divisible to EPs max </span>
<span class="gi">+					 * packet size and with usb_request zero field </span>
<span class="gi">+					 * is set, which means that after data is transfered, </span>
<span class="gi">+					 * it is also should be transfered </span>
<span class="gi">+					 * a 0 length packet at the end. For Slave and </span>
<span class="gi">+					 * Buffer DMA modes in this case SW has </span>
<span class="gi">+					 * to initiate 2 transfers one with transfer size, </span>
<span class="gi">+					 * and the second with 0 size. For Desriptor </span>
<span class="gi">+					 * DMA mode SW is able to initiate a transfer, </span>
<span class="gi">+					 * which will handle all the packets including </span>
<span class="gi">+					 * the last  0 legth.</span>
<span class="gi">+					 */</span>
<span class="gi">+					ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+					dwc_otg_ep_start_zl_transfer(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+				} else {</span>
<span class="gi">+					is_last = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+			} </span>
<span class="gi">+			else {</span>
<span class="gi">+				DWC_WARN(&quot;Incomplete transfer (%s-%s [siz=%d pkt=%d])\n&quot;, </span>
<span class="gi">+						ep-&gt;ep.name, (ep-&gt;dwc_ep.is_in?&quot;IN&quot;:&quot;OUT&quot;),</span>
<span class="gi">+						deptsiz.b.xfersize, deptsiz.b.pktcnt);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_otg_dev_out_ep_regs_t *out_ep_regs = </span>
<span class="gi">+				dev_if-&gt;out_ep_regs[ep-&gt;dwc_ep.num];</span>
<span class="gi">+		desc_sts.d32 = 0;</span>
<span class="gi">+		if(core_if-&gt;dma_enable) {</span>
<span class="gi">+			//dma_unmap_single(NULL,ep-&gt;dwc_ep.dma_addr,ep-&gt;dwc_ep.xfer_count,DMA_FROM_DEVICE);</span>
<span class="gi">+			if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+				DWC_WARN(&quot;\n\n%s: we need a cache invalidation here!!\n\n&quot;,__func__);</span>
<span class="gi">+				dma_desc = ep-&gt;dwc_ep.desc_addr;</span>
<span class="gi">+				byte_count = 0;</span>
<span class="gi">+				ep-&gt;dwc_ep.sent_zlp = 0;				</span>
<span class="gi">+				for(i = 0; i &lt; ep-&gt;dwc_ep.desc_cnt; ++i) {</span>
<span class="gi">+					desc_sts.d32 = readl(dma_desc);</span>
<span class="gi">+					byte_count += desc_sts.b.bytes;</span>
<span class="gi">+					dma_desc++;</span>
<span class="gi">+				}</span>
<span class="gi">+				</span>
<span class="gi">+				ep-&gt;dwc_ep.xfer_count = ep-&gt;dwc_ep.total_len </span>
<span class="gi">+						- byte_count + ((4 - (ep-&gt;dwc_ep.total_len &amp; 0x3)) &amp; 0x3);</span>
<span class="gi">+</span>
<span class="gi">+				//todo: invalidate cache &amp; aligned buf patch on completion</span>
<span class="gi">+				//</span>
<span class="gi">+							</span>
<span class="gi">+				is_last = 1;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				deptsiz.d32 = 0;</span>
<span class="gi">+				deptsiz.d32 = dwc_read_reg32(&amp;out_ep_regs-&gt;doeptsiz);</span>
<span class="gi">+	</span>
<span class="gi">+				byte_count = (ep-&gt;dwc_ep.xfer_len -</span>
<span class="gi">+							 ep-&gt;dwc_ep.xfer_count - deptsiz.b.xfersize);</span>
<span class="gi">+</span>
<span class="gi">+//				dma_sync_single_for_device(NULL,ep-&gt;dwc_ep.dma_addr,byte_count,DMA_FROM_DEVICE);</span>
<span class="gi">+</span>
<span class="gi">+DWC_DEBUGPL(DBG_PCDV,&quot;ep-&gt;total_len=%.x,ep-&gt;dwc_ep.sent_zlp=%d, byte_count(%.8x) = (ep-&gt;dwc_ep.xfer_len(%.8x) - ep-&gt;dwc_ep.xfer_count(%.8x) - deptsiz.b.xfersize(%.8x)\n&quot;, ep-&gt;dwc_ep.total_len, ep-&gt;dwc_ep.sent_zlp, byte_count ,ep-&gt;dwc_ep.xfer_len , ep-&gt;dwc_ep.xfer_count , deptsiz.b.xfersize);</span>
<span class="gi">+				//todo: invalidate cache &amp; aligned buf patch on completion</span>
<span class="gi">+				dma_sync_single_for_device(NULL,ep-&gt;dwc_ep.dma_addr,byte_count,DMA_FROM_DEVICE);</span>
<span class="gi">+				aligned_buf_patch_on_buf_dma_oep_completion(ep,byte_count);</span>
<span class="gi">+</span>
<span class="gi">+				ep-&gt;dwc_ep.xfer_buff += byte_count;</span>
<span class="gi">+				ep-&gt;dwc_ep.dma_addr += byte_count;</span>
<span class="gi">+				ep-&gt;dwc_ep.xfer_count += byte_count;</span>
<span class="gi">+				</span>
<span class="gi">+				/* 	Check if the whole transfer was completed,  </span>
<span class="gi">+				 * 	if no, setup transfer for next portion of data</span>
<span class="gi">+				 */</span>
<span class="gi">+				if(ep-&gt;dwc_ep.xfer_len &lt; ep-&gt;dwc_ep.total_len) {</span>
<span class="gi">+					//dwc_otg_ep_start_transfer(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+printk(&quot;Warning: transfer ended, but specified len is not accomplished!! ep-&gt;total_len=%.x,ep-&gt;dwc_ep.sent_zlp=%d, byte_count(%.8x) = (ep-&gt;dwc_ep.xfer_len(%.8x) - ep-&gt;dwc_ep.xfer_count(%.8x) - deptsiz.b.xfersize(%.8x)\n&quot;, ep-&gt;dwc_ep.total_len, ep-&gt;dwc_ep.sent_zlp, byte_count ,ep-&gt;dwc_ep.xfer_len , ep-&gt;dwc_ep.xfer_count , deptsiz.b.xfersize);</span>
<span class="gi">+				}</span>
<span class="gi">+				else if(ep-&gt;dwc_ep.sent_zlp) {</span>
<span class="gi">+					/* 	</span>
<span class="gi">+					 * This fragment of code should initiate 0 </span>
<span class="gi">+					 * length trasfer in case if it is queued</span>
<span class="gi">+					 * a trasfer with size divisible to EPs max </span>
<span class="gi">+					 * packet size and with usb_request zero field </span>
<span class="gi">+					 * is set, which means that after data is transfered, </span>
<span class="gi">+					 * it is also should be transfered </span>
<span class="gi">+					 * a 0 length packet at the end. For Slave and </span>
<span class="gi">+					 * Buffer DMA modes in this case SW has </span>
<span class="gi">+					 * to initiate 2 transfers one with transfer size, </span>
<span class="gi">+					 * and the second with 0 size. For Desriptor </span>
<span class="gi">+					 * DMA mode SW is able to initiate a transfer, </span>
<span class="gi">+					 * which will handle all the packets including </span>
<span class="gi">+					 * the last  0 legth.</span>
<span class="gi">+					 */</span>
<span class="gi">+					ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+					dwc_otg_ep_start_zl_transfer(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+				} else {</span>
<span class="gi">+					is_last = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+		} else {</span>
<span class="gi">+			/* 	Check if the whole transfer was completed,  </span>
<span class="gi">+			 * 	if no, setup transfer for next portion of data</span>
<span class="gi">+			 */</span>
<span class="gi">+			if(ep-&gt;dwc_ep.xfer_len &lt; ep-&gt;dwc_ep.total_len) {</span>
<span class="gi">+				//dwc_otg_ep_start_transfer(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+printk(&quot;Warning: transfer ended, but specified len is not accomplished!! ep-&gt;total_len=%.x,ep-&gt;dwc_ep.sent_zlp=%d, ep-&gt;dwc_ep.xfer_len(%.8x) \n&quot;, ep-&gt;dwc_ep.total_len, ep-&gt;dwc_ep.sent_zlp, ep-&gt;dwc_ep.xfer_len );</span>
<span class="gi">+			}</span>
<span class="gi">+			else if(ep-&gt;dwc_ep.sent_zlp) {</span>
<span class="gi">+				/* 	</span>
<span class="gi">+				 * This fragment of code should initiate 0 </span>
<span class="gi">+				 * length trasfer in case if it is queued</span>
<span class="gi">+				 * a trasfer with size divisible to EPs max </span>
<span class="gi">+				 * packet size and with usb_request zero field </span>
<span class="gi">+				 * is set, which means that after data is transfered, </span>
<span class="gi">+				 * it is also should be transfered </span>
<span class="gi">+				 * a 0 length packet at the end. For Slave and </span>
<span class="gi">+				 * Buffer DMA modes in this case SW has </span>
<span class="gi">+				 * to initiate 2 transfers one with transfer size, </span>
<span class="gi">+				 * and the second with 0 size. For Desriptor </span>
<span class="gi">+				 * DMA mode SW is able to initiate a transfer, </span>
<span class="gi">+				 * which will handle all the packets including </span>
<span class="gi">+				 * the last  0 legth.</span>
<span class="gi">+				 */</span>
<span class="gi">+				ep-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+				dwc_otg_ep_start_zl_transfer(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+			} else {</span>
<span class="gi">+				is_last = 1;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+			</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;addr %p,	 %s len=%d cnt=%d xsize=%d pktcnt=%d\n&quot;,</span>
<span class="gi">+				&amp;out_ep_regs-&gt;doeptsiz, ep-&gt;ep.name, ep-&gt;dwc_ep.xfer_len,</span>
<span class="gi">+				ep-&gt;dwc_ep.xfer_count,</span>
<span class="gi">+				deptsiz.b.xfersize, </span>
<span class="gi">+				deptsiz.b.pktcnt);</span>
<span class="gi">+#endif</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	/* Complete the request */</span>
<span class="gi">+	if (is_last) {</span>
<span class="gi">+		req-&gt;req.actual = ep-&gt;dwc_ep.xfer_count;</span>
<span class="gi">+</span>
<span class="gi">+		dwc_otg_request_done(ep, req, 0);</span>
<span class="gi">+</span>
<span class="gi">+		ep-&gt;dwc_ep.start_xfer_buff = 0;</span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_buff = 0;</span>
<span class="gi">+		ep-&gt;dwc_ep.xfer_len = 0;</span>
<span class="gi">+</span>
<span class="gi">+		/* If there is a request in the queue start it.*/</span>
<span class="gi">+		start_next_request(ep);</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function BNA interrupt for Isochronous EPs</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static void dwc_otg_pcd_handle_iso_bna(dwc_otg_pcd_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_ep_t		*dwc_ep = &amp;ep-&gt;dwc_ep;</span>
<span class="gi">+	volatile uint32_t	*addr;</span>
<span class="gi">+	depctl_data_t		depctl = {.d32 = 0};</span>
<span class="gi">+	dwc_otg_pcd_t		*pcd = ep-&gt;pcd;	</span>
<span class="gi">+	dwc_otg_dma_desc_t	*dma_desc;	</span>
<span class="gi">+	int	i;</span>
<span class="gi">+</span>
<span class="gi">+	dma_desc = dwc_ep-&gt;iso_desc_addr + dwc_ep-&gt;desc_cnt * (dwc_ep-&gt;proc_buf_num);</span>
<span class="gi">+	</span>
<span class="gi">+	if(dwc_ep-&gt;is_in) {</span>
<span class="gi">+		desc_sts_data_t	sts = {.d32 = 0};</span>
<span class="gi">+		for(i = 0;i &lt; dwc_ep-&gt;desc_cnt; ++i, ++dma_desc)</span>
<span class="gi">+		{</span>
<span class="gi">+			sts.d32 = readl(&amp;dma_desc-&gt;status);</span>
<span class="gi">+			sts.b_iso_in.bs = BS_HOST_READY;</span>
<span class="gi">+			writel(sts.d32,&amp;dma_desc-&gt;status);	</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	else {</span>
<span class="gi">+		desc_sts_data_t	sts = {.d32 = 0};</span>
<span class="gi">+		for(i = 0;i &lt; dwc_ep-&gt;desc_cnt; ++i, ++dma_desc)</span>
<span class="gi">+		{</span>
<span class="gi">+			sts.d32 = readl(&amp;dma_desc-&gt;status);</span>
<span class="gi">+			sts.b_iso_out.bs = BS_HOST_READY;</span>
<span class="gi">+			writel(sts.d32,&amp;dma_desc-&gt;status);	</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	if(dwc_ep-&gt;is_in == 0){</span>
<span class="gi">+		addr = &amp;GET_CORE_IF(pcd)-&gt;dev_if-&gt;out_ep_regs[dwc_ep-&gt;num]-&gt;doepctl;</span>
<span class="gi">+	}</span>
<span class="gi">+	else{	</span>
<span class="gi">+		addr = &amp;GET_CORE_IF(pcd)-&gt;dev_if-&gt;in_ep_regs[dwc_ep-&gt;num]-&gt;diepctl;</span>
<span class="gi">+	}</span>
<span class="gi">+	depctl.b.epena = 1;</span>
<span class="gi">+	dwc_modify_reg32(addr,depctl.d32,depctl.d32);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function sets latest iso packet information(non-PTI mode)</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to start the transfer on.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+void set_current_pkt_info(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	deptsiz_data_t		deptsiz = { .d32 = 0 };</span>
<span class="gi">+	dma_addr_t		dma_addr;</span>
<span class="gi">+	uint32_t		offset;</span>
<span class="gi">+	</span>
<span class="gi">+	if(ep-&gt;proc_buf_num)</span>
<span class="gi">+		dma_addr = ep-&gt;dma_addr1;</span>
<span class="gi">+	else</span>
<span class="gi">+		dma_addr = ep-&gt;dma_addr0;</span>
<span class="gi">+	</span>
<span class="gi">+</span>
<span class="gi">+	if(ep-&gt;is_in) {</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;dieptsiz);</span>
<span class="gi">+		offset = ep-&gt;data_per_frame;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doeptsiz);</span>
<span class="gi">+		offset = ep-&gt;data_per_frame + (0x4 &amp; (0x4 - (ep-&gt;data_per_frame &amp; 0x3)));</span>
<span class="gi">+	}</span>
<span class="gi">+		</span>
<span class="gi">+	if(!deptsiz.b.xfersize) {</span>
<span class="gi">+		ep-&gt;pkt_info[ep-&gt;cur_pkt].length = ep-&gt;data_per_frame;</span>
<span class="gi">+		ep-&gt;pkt_info[ep-&gt;cur_pkt].offset = ep-&gt;cur_pkt_dma_addr - dma_addr;</span>
<span class="gi">+		ep-&gt;pkt_info[ep-&gt;cur_pkt].status = 0;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		ep-&gt;pkt_info[ep-&gt;cur_pkt].length = ep-&gt;data_per_frame;</span>
<span class="gi">+		ep-&gt;pkt_info[ep-&gt;cur_pkt].offset = ep-&gt;cur_pkt_dma_addr - dma_addr;</span>
<span class="gi">+		ep-&gt;pkt_info[ep-&gt;cur_pkt].status = -ENODATA;</span>
<span class="gi">+	}</span>
<span class="gi">+	ep-&gt;cur_pkt_addr += offset;</span>
<span class="gi">+	ep-&gt;cur_pkt_dma_addr += offset;</span>
<span class="gi">+	ep-&gt;cur_pkt++;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function sets latest iso packet information(DDMA mode)</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param dwc_ep The EP to start the transfer on.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static void set_ddma_iso_pkts_info(dwc_otg_core_if_t *core_if, dwc_ep_t *dwc_ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_dma_desc_t* dma_desc;</span>
<span class="gi">+	desc_sts_data_t sts = {.d32 = 0};</span>
<span class="gi">+	iso_pkt_info_t *iso_packet;</span>
<span class="gi">+	uint32_t data_per_desc;</span>
<span class="gi">+	uint32_t offset;</span>
<span class="gi">+ 	int i, j;</span>
<span class="gi">+</span>
<span class="gi">+	iso_packet = dwc_ep-&gt;pkt_info;</span>
<span class="gi">+	</span>
<span class="gi">+	/** Reinit closed DMA Descriptors*/</span>
<span class="gi">+	/** ISO OUT EP */</span>
<span class="gi">+	if(dwc_ep-&gt;is_in == 0) {</span>
<span class="gi">+		dma_desc = dwc_ep-&gt;iso_desc_addr + dwc_ep-&gt;desc_cnt * dwc_ep-&gt;proc_buf_num;</span>
<span class="gi">+		offset = 0;	</span>
<span class="gi">+	</span>
<span class="gi">+		for(i = 0; i &lt; dwc_ep-&gt;desc_cnt - dwc_ep-&gt;pkt_per_frm; i+= dwc_ep-&gt;pkt_per_frm)</span>
<span class="gi">+		{</span>
<span class="gi">+			for(j = 0; j &lt; dwc_ep-&gt;pkt_per_frm; ++j)</span>
<span class="gi">+			{</span>
<span class="gi">+				data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+					dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+				data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+				</span>
<span class="gi">+				sts.d32 = readl(&amp;dma_desc-&gt;status);</span>
<span class="gi">+				</span>
<span class="gi">+				/* Write status in iso_packet_decsriptor  */</span>
<span class="gi">+				iso_packet-&gt;status = sts.b_iso_out.rxsts + (sts.b_iso_out.bs^BS_DMA_DONE);</span>
<span class="gi">+				if(iso_packet-&gt;status) {</span>
<span class="gi">+					iso_packet-&gt;status = -ENODATA;</span>
<span class="gi">+				}</span>
<span class="gi">+				</span>
<span class="gi">+				/* Received data length */</span>
<span class="gi">+				if(!sts.b_iso_out.rxbytes){</span>
<span class="gi">+					iso_packet-&gt;length = data_per_desc - sts.b_iso_out.rxbytes;				</span>
<span class="gi">+				} else {</span>
<span class="gi">+					iso_packet-&gt;length = data_per_desc - sts.b_iso_out.rxbytes +</span>
<span class="gi">+								(4 - dwc_ep-&gt;data_per_frame % 4);</span>
<span class="gi">+				}</span>
<span class="gi">+				</span>
<span class="gi">+				iso_packet-&gt;offset = offset;</span>
<span class="gi">+				</span>
<span class="gi">+				offset += data_per_desc;</span>
<span class="gi">+				dma_desc ++;				</span>
<span class="gi">+				iso_packet ++;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		for(j = 0; j &lt; dwc_ep-&gt;pkt_per_frm - 1; ++j)</span>
<span class="gi">+		{</span>
<span class="gi">+			data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+				dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+			data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+</span>
<span class="gi">+			sts.d32 = readl(&amp;dma_desc-&gt;status);</span>
<span class="gi">+</span>
<span class="gi">+			/* Write status in iso_packet_decsriptor  */</span>
<span class="gi">+			iso_packet-&gt;status = sts.b_iso_out.rxsts + (sts.b_iso_out.bs^BS_DMA_DONE);</span>
<span class="gi">+			if(iso_packet-&gt;status) {</span>
<span class="gi">+				iso_packet-&gt;status = -ENODATA;</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			/* Received data length */</span>
<span class="gi">+			iso_packet-&gt;length = dwc_ep-&gt;data_per_frame - sts.b_iso_out.rxbytes;				</span>
<span class="gi">+</span>
<span class="gi">+			iso_packet-&gt;offset = offset;</span>
<span class="gi">+				</span>
<span class="gi">+			offset += data_per_desc;</span>
<span class="gi">+			iso_packet++;</span>
<span class="gi">+			dma_desc++;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		sts.d32 = readl(&amp;dma_desc-&gt;status);</span>
<span class="gi">+</span>
<span class="gi">+		/* Write status in iso_packet_decsriptor  */</span>
<span class="gi">+		iso_packet-&gt;status = sts.b_iso_out.rxsts + (sts.b_iso_out.bs^BS_DMA_DONE);</span>
<span class="gi">+		if(iso_packet-&gt;status) {</span>
<span class="gi">+			iso_packet-&gt;status = -ENODATA;</span>
<span class="gi">+		}</span>
<span class="gi">+		/* Received data length */</span>
<span class="gi">+		if(!sts.b_iso_out.rxbytes){</span>
<span class="gi">+		iso_packet-&gt;length = dwc_ep-&gt;data_per_frame - sts.b_iso_out.rxbytes;				</span>
<span class="gi">+		} else {</span>
<span class="gi">+			iso_packet-&gt;length = dwc_ep-&gt;data_per_frame - sts.b_iso_out.rxbytes +</span>
<span class="gi">+							(4 - dwc_ep-&gt;data_per_frame % 4);</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		iso_packet-&gt;offset = offset;</span>
<span class="gi">+	}</span>
<span class="gi">+	else /** ISO IN EP */</span>
<span class="gi">+	{</span>
<span class="gi">+		dma_desc = dwc_ep-&gt;iso_desc_addr + dwc_ep-&gt;desc_cnt * dwc_ep-&gt;proc_buf_num;</span>
<span class="gi">+</span>
<span class="gi">+		for(i = 0; i &lt; dwc_ep-&gt;desc_cnt - 1; i++)</span>
<span class="gi">+		{</span>
<span class="gi">+			sts.d32 = readl(&amp;dma_desc-&gt;status);</span>
<span class="gi">+</span>
<span class="gi">+			/* Write status in iso packet descriptor */</span>
<span class="gi">+			iso_packet-&gt;status = sts.b_iso_in.txsts + (sts.b_iso_in.bs^BS_DMA_DONE);</span>
<span class="gi">+			if(iso_packet-&gt;status != 0) {</span>
<span class="gi">+				iso_packet-&gt;status = -ENODATA;</span>
<span class="gi">+</span>
<span class="gi">+			}</span>
<span class="gi">+			/* Bytes has been transfered */</span>
<span class="gi">+			iso_packet-&gt;length = dwc_ep-&gt;data_per_frame - sts.b_iso_in.txbytes;</span>
<span class="gi">+</span>
<span class="gi">+			dma_desc ++;				</span>
<span class="gi">+			iso_packet++;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		sts.d32 = readl(&amp;dma_desc-&gt;status);</span>
<span class="gi">+		while(sts.b_iso_in.bs == BS_DMA_BUSY) {</span>
<span class="gi">+			sts.d32 = readl(&amp;dma_desc-&gt;status);</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/* Write status in iso packet descriptor ??? do be done with ERROR codes*/</span>
<span class="gi">+		iso_packet-&gt;status = sts.b_iso_in.txsts + (sts.b_iso_in.bs^BS_DMA_DONE);</span>
<span class="gi">+		if(iso_packet-&gt;status != 0) {</span>
<span class="gi">+			iso_packet-&gt;status = -ENODATA;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		/* Bytes has been transfered */</span>
<span class="gi">+		iso_packet-&gt;length = dwc_ep-&gt;data_per_frame - sts.b_iso_in.txbytes;</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function reinitialize DMA Descriptors for Isochronous transfer</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param dwc_ep The EP to start the transfer on.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static void reinit_ddma_iso_xfer(dwc_otg_core_if_t *core_if, dwc_ep_t *dwc_ep)</span>
<span class="gi">+{</span>
<span class="gi">+ 	int i, j;</span>
<span class="gi">+	dwc_otg_dma_desc_t* dma_desc;</span>
<span class="gi">+	dma_addr_t dma_ad;</span>
<span class="gi">+	volatile uint32_t	*addr;</span>
<span class="gi">+	desc_sts_data_t sts = { .d32 =0 };</span>
<span class="gi">+	uint32_t data_per_desc;</span>
<span class="gi">+</span>
<span class="gi">+	if(dwc_ep-&gt;is_in == 0) {</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;out_ep_regs[dwc_ep-&gt;num]-&gt;doepctl;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {	</span>
<span class="gi">+		addr = &amp;core_if-&gt;dev_if-&gt;in_ep_regs[dwc_ep-&gt;num]-&gt;diepctl;</span>
<span class="gi">+	}	</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	if(dwc_ep-&gt;proc_buf_num == 0) {			</span>
<span class="gi">+		/** Buffer 0 descriptors setup */</span>
<span class="gi">+		dma_ad = dwc_ep-&gt;dma_addr0;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {			</span>
<span class="gi">+		/** Buffer 1 descriptors setup */</span>
<span class="gi">+		dma_ad = dwc_ep-&gt;dma_addr1;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+</span>
<span class="gi">+	/** Reinit closed DMA Descriptors*/</span>
<span class="gi">+	/** ISO OUT EP */</span>
<span class="gi">+	if(dwc_ep-&gt;is_in == 0) {</span>
<span class="gi">+		dma_desc = dwc_ep-&gt;iso_desc_addr + dwc_ep-&gt;desc_cnt * dwc_ep-&gt;proc_buf_num;</span>
<span class="gi">+		</span>
<span class="gi">+		sts.b_iso_out.bs = BS_HOST_READY;</span>
<span class="gi">+		sts.b_iso_out.rxsts = 0;</span>
<span class="gi">+		sts.b_iso_out.l = 0;</span>
<span class="gi">+		sts.b_iso_out.sp = 0; </span>
<span class="gi">+		sts.b_iso_out.ioc = 0;</span>
<span class="gi">+		sts.b_iso_out.pid = 0;</span>
<span class="gi">+		sts.b_iso_out.framenum = 0;</span>
<span class="gi">+</span>
<span class="gi">+		for(i = 0; i &lt; dwc_ep-&gt;desc_cnt - dwc_ep-&gt;pkt_per_frm; i+= dwc_ep-&gt;pkt_per_frm)</span>
<span class="gi">+		{</span>
<span class="gi">+			for(j = 0; j &lt; dwc_ep-&gt;pkt_per_frm; ++j)</span>
<span class="gi">+			{</span>
<span class="gi">+				data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+					dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+				data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+				sts.b_iso_out.rxbytes = data_per_desc;</span>
<span class="gi">+				writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+				writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+				</span>
<span class="gi">+				//(uint32_t)dma_ad += data_per_desc;				</span>
<span class="gi">+				dma_ad = (uint32_t)dma_ad + data_per_desc;				</span>
<span class="gi">+				dma_desc ++;				</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		for(j = 0; j &lt; dwc_ep-&gt;pkt_per_frm - 1; ++j)</span>
<span class="gi">+		{</span>
<span class="gi">+</span>
<span class="gi">+			data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+				dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+			data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+			sts.b_iso_out.rxbytes = data_per_desc;</span>
<span class="gi">+</span>
<span class="gi">+			writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+			writel(sts.d32, &amp;dma_desc-&gt;status);</span>
<span class="gi">+			</span>
<span class="gi">+			dma_desc++;</span>
<span class="gi">+			//(uint32_t)dma_ad += data_per_desc;</span>
<span class="gi">+			dma_ad = (uint32_t)dma_ad + data_per_desc;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		sts.b_iso_out.ioc = 1;</span>
<span class="gi">+		sts.b_iso_out.l = dwc_ep-&gt;proc_buf_num;</span>
<span class="gi">+</span>
<span class="gi">+		data_per_desc = ((j + 1) * dwc_ep-&gt;maxpacket &gt; dwc_ep-&gt;data_per_frame) ?</span>
<span class="gi">+			dwc_ep-&gt;data_per_frame - j * dwc_ep-&gt;maxpacket : dwc_ep-&gt;maxpacket;</span>
<span class="gi">+		data_per_desc += (data_per_desc % 4) ? (4 - data_per_desc % 4):0;</span>
<span class="gi">+		sts.b_iso_out.rxbytes = data_per_desc;</span>
<span class="gi">+</span>
<span class="gi">+		writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+		writel(sts.d32, &amp;dma_desc-&gt;status);</span>
<span class="gi">+	}</span>
<span class="gi">+	else /** ISO IN EP */</span>
<span class="gi">+	{</span>
<span class="gi">+		dma_desc = dwc_ep-&gt;iso_desc_addr + dwc_ep-&gt;desc_cnt * dwc_ep-&gt;proc_buf_num;</span>
<span class="gi">+</span>
<span class="gi">+		sts.b_iso_in.bs = BS_HOST_READY;</span>
<span class="gi">+		sts.b_iso_in.txsts = 0;</span>
<span class="gi">+		sts.b_iso_in.sp = 0;</span>
<span class="gi">+		sts.b_iso_in.ioc = 0;</span>
<span class="gi">+		sts.b_iso_in.pid = dwc_ep-&gt;pkt_per_frm;</span>
<span class="gi">+		sts.b_iso_in.framenum = dwc_ep-&gt;next_frame;</span>
<span class="gi">+		sts.b_iso_in.txbytes = dwc_ep-&gt;data_per_frame;</span>
<span class="gi">+		sts.b_iso_in.l = 0;</span>
<span class="gi">+</span>
<span class="gi">+		for(i = 0; i &lt; dwc_ep-&gt;desc_cnt - 1; i++)</span>
<span class="gi">+		{</span>
<span class="gi">+			writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+			writel(sts.d32, &amp;dma_desc-&gt;status); </span>
<span class="gi">+			</span>
<span class="gi">+			sts.b_iso_in.framenum  += dwc_ep-&gt;bInterval;			</span>
<span class="gi">+			//(uint32_t)dma_ad += dwc_ep-&gt;data_per_frame;</span>
<span class="gi">+			dma_ad = (uint32_t)dma_ad + dwc_ep-&gt;data_per_frame;</span>
<span class="gi">+			dma_desc ++;</span>
<span class="gi">+		}</span>
<span class="gi">+</span>
<span class="gi">+		sts.b_iso_in.ioc = 1;</span>
<span class="gi">+		sts.b_iso_in.l = dwc_ep-&gt;proc_buf_num;</span>
<span class="gi">+</span>
<span class="gi">+		writel((uint32_t)dma_ad, &amp;dma_desc-&gt;buf);</span>
<span class="gi">+		writel(sts.d32, &amp;dma_desc-&gt;status);</span>
<span class="gi">+</span>
<span class="gi">+		dwc_ep-&gt;next_frame = sts.b_iso_in.framenum + dwc_ep-&gt;bInterval * 1;</span>
<span class="gi">+	}</span>
<span class="gi">+	dwc_ep-&gt;proc_buf_num = (dwc_ep-&gt;proc_buf_num ^ 1) &amp; 0x1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is to handle Iso EP transfer complete interrupt</span>
<span class="gi">+ * in case Iso out packet was dropped</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param dwc_ep The EP for wihich transfer complete was asserted</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static uint32_t handle_iso_out_pkt_dropped(dwc_otg_core_if_t *core_if, dwc_ep_t *dwc_ep)</span>
<span class="gi">+{</span>
<span class="gi">+	uint32_t dma_addr;</span>
<span class="gi">+	uint32_t drp_pkt;</span>
<span class="gi">+	uint32_t drp_pkt_cnt;</span>
<span class="gi">+	deptsiz_data_t deptsiz = { .d32 = 0 };</span>
<span class="gi">+	depctl_data_t depctl  = { .d32 = 0 };</span>
<span class="gi">+	int i;</span>
<span class="gi">+</span>
<span class="gi">+	deptsiz.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[dwc_ep-&gt;num]-&gt;doeptsiz);</span>
<span class="gi">+	</span>
<span class="gi">+	drp_pkt = dwc_ep-&gt;pkt_cnt - deptsiz.b.pktcnt;</span>
<span class="gi">+	drp_pkt_cnt = dwc_ep-&gt;pkt_per_frm - (drp_pkt % dwc_ep-&gt;pkt_per_frm);</span>
<span class="gi">+	</span>
<span class="gi">+	/* Setting dropped packets status */</span>
<span class="gi">+	for(i = 0; i &lt; drp_pkt_cnt; ++i) {</span>
<span class="gi">+		dwc_ep-&gt;pkt_info[drp_pkt].status = -ENODATA;</span>
<span class="gi">+		drp_pkt ++;</span>
<span class="gi">+		deptsiz.b.pktcnt--;	</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	</span>
<span class="gi">+	if(deptsiz.b.pktcnt &gt; 0) {</span>
<span class="gi">+		deptsiz.b.xfersize = dwc_ep-&gt;xfer_len - (dwc_ep-&gt;pkt_cnt - deptsiz.b.pktcnt) * dwc_ep-&gt;maxpacket;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		deptsiz.b.xfersize = 0;</span>
<span class="gi">+		deptsiz.b.pktcnt = 0;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[dwc_ep-&gt;num]-&gt;doeptsiz, deptsiz.d32);</span>
<span class="gi">+	</span>
<span class="gi">+	if(deptsiz.b.pktcnt &gt; 0) {</span>
<span class="gi">+		if(dwc_ep-&gt;proc_buf_num) {</span>
<span class="gi">+			dma_addr = dwc_ep-&gt;dma_addr1 + dwc_ep-&gt;xfer_len - deptsiz.b.xfersize;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			dma_addr = dwc_ep-&gt;dma_addr0 + dwc_ep-&gt;xfer_len - deptsiz.b.xfersize;;</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		VERIFY_PCD_DMA_ADDR(dma_addr);</span>
<span class="gi">+		dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[dwc_ep-&gt;num]-&gt;doepdma, dma_addr);</span>
<span class="gi">+</span>
<span class="gi">+		/** Re-enable endpoint, clear nak  */</span>
<span class="gi">+		depctl.d32 = 0;	</span>
<span class="gi">+		depctl.b.epena = 1;</span>
<span class="gi">+		depctl.b.cnak = 1;</span>
<span class="gi">+			</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[dwc_ep-&gt;num]-&gt;doepctl, </span>
<span class="gi">+				depctl.d32,depctl.d32);</span>
<span class="gi">+		return 0;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		return 1;</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function sets iso packets information(PTI mode)</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param core_if Programming view of DWC_otg controller.</span>
<span class="gi">+ * @param ep The EP to start the transfer on.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static uint32_t set_iso_pkts_info(dwc_otg_core_if_t *core_if, dwc_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+ 	int i, j;</span>
<span class="gi">+	dma_addr_t dma_ad;</span>
<span class="gi">+	iso_pkt_info_t *packet_info = ep-&gt;pkt_info;</span>
<span class="gi">+	uint32_t offset;</span>
<span class="gi">+	uint32_t frame_data;</span>
<span class="gi">+	deptsiz_data_t deptsiz;</span>
<span class="gi">+</span>
<span class="gi">+	if(ep-&gt;proc_buf_num == 0) {			</span>
<span class="gi">+		/** Buffer 0 descriptors setup */</span>
<span class="gi">+		dma_ad = ep-&gt;dma_addr0;</span>
<span class="gi">+	}</span>
<span class="gi">+	else {			</span>
<span class="gi">+		/** Buffer 1 descriptors setup */</span>
<span class="gi">+		dma_ad = ep-&gt;dma_addr1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	if(ep-&gt;is_in) {</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[ep-&gt;num]-&gt;dieptsiz);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		deptsiz.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[ep-&gt;num]-&gt;doeptsiz);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	if(!deptsiz.b.xfersize) {</span>
<span class="gi">+		offset = 0;</span>
<span class="gi">+		for(i = 0; i &lt; ep-&gt;pkt_cnt; i += ep-&gt;pkt_per_frm)</span>
<span class="gi">+		{</span>
<span class="gi">+			frame_data = ep-&gt;data_per_frame;</span>
<span class="gi">+			for(j = 0; j &lt; ep-&gt;pkt_per_frm; ++j) {</span>
<span class="gi">+			</span>
<span class="gi">+				/* Packet status - is not set as initially </span>
<span class="gi">+				 * it is set to 0 and if packet was sent </span>
<span class="gi">+				 successfully, status field will remain 0*/</span>
<span class="gi">+				</span>
<span class="gi">+				</span>
<span class="gi">+				/* Bytes has been transfered */</span>
<span class="gi">+				packet_info-&gt;length = (ep-&gt;maxpacket &lt; frame_data) ? </span>
<span class="gi">+							ep-&gt;maxpacket : frame_data;</span>
<span class="gi">+	</span>
<span class="gi">+				/* Received packet offset */</span>
<span class="gi">+				packet_info-&gt;offset = offset;</span>
<span class="gi">+				offset += packet_info-&gt;length;</span>
<span class="gi">+				frame_data -= packet_info-&gt;length;</span>
<span class="gi">+				</span>
<span class="gi">+				packet_info ++;</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		return 1;</span>
<span class="gi">+	} else {</span>
<span class="gi">+		/* This is a workaround for in case of Transfer Complete with </span>
<span class="gi">+		 * PktDrpSts interrupts	merging - in this case Transfer complete </span>
<span class="gi">+		 * interrupt for Isoc Out Endpoint is asserted without PktDrpSts </span>
<span class="gi">+		 * set and with DOEPTSIZ register non zero. Investigations showed,</span>
<span class="gi">+		 * that this happens when Out packet is dropped, but because of </span>
<span class="gi">+		 * interrupts merging during first interrupt handling PktDrpSts</span>
<span class="gi">+		 * bit is cleared and for next merged interrupts it is not reset.</span>
<span class="gi">+		 * In this case SW hadles the interrupt as if PktDrpSts bit is set.</span>
<span class="gi">+		 */</span>
<span class="gi">+		if(ep-&gt;is_in) {</span>
<span class="gi">+			return 1;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			return handle_iso_out_pkt_dropped(core_if, ep);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function is to handle Iso EP transfer complete interrupt</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param ep The EP for which transfer complete was asserted</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+static void complete_iso_ep(dwc_otg_pcd_ep_t *ep)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(ep-&gt;pcd);</span>
<span class="gi">+	dwc_ep_t *dwc_ep = &amp;ep-&gt;dwc_ep;</span>
<span class="gi">+	uint8_t is_last = 0;</span>
<span class="gi">+</span>
<span class="gi">+	if(core_if-&gt;dma_enable) {</span>
<span class="gi">+		if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+			set_ddma_iso_pkts_info(core_if, dwc_ep);</span>
<span class="gi">+			reinit_ddma_iso_xfer(core_if, dwc_ep);</span>
<span class="gi">+			is_last = 1;</span>
<span class="gi">+		} else {</span>
<span class="gi">+			if(core_if-&gt;pti_enh_enable) {</span>
<span class="gi">+				if(set_iso_pkts_info(core_if, dwc_ep)) {</span>
<span class="gi">+					dwc_ep-&gt;proc_buf_num = (dwc_ep-&gt;proc_buf_num ^ 1) &amp; 0x1;</span>
<span class="gi">+					dwc_otg_iso_ep_start_buf_transfer(core_if, dwc_ep);</span>
<span class="gi">+					is_last = 1;</span>
<span class="gi">+				}</span>
<span class="gi">+			} else {</span>
<span class="gi">+				set_current_pkt_info(core_if, dwc_ep);</span>
<span class="gi">+				if(dwc_ep-&gt;cur_pkt &gt;= dwc_ep-&gt;pkt_cnt) {</span>
<span class="gi">+					is_last = 1;</span>
<span class="gi">+					dwc_ep-&gt;cur_pkt = 0;</span>
<span class="gi">+					dwc_ep-&gt;proc_buf_num = (dwc_ep-&gt;proc_buf_num ^ 1) &amp; 0x1;</span>
<span class="gi">+					if(dwc_ep-&gt;proc_buf_num) {</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_addr = dwc_ep-&gt;xfer_buff1;</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_dma_addr = dwc_ep-&gt;dma_addr1;</span>
<span class="gi">+					} else {</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_addr = dwc_ep-&gt;xfer_buff0;</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_dma_addr = dwc_ep-&gt;dma_addr0;</span>
<span class="gi">+					}</span>
<span class="gi">+					</span>
<span class="gi">+				}</span>
<span class="gi">+				dwc_otg_iso_ep_start_frm_transfer(core_if, dwc_ep);</span>
<span class="gi">+			}</span>
<span class="gi">+		}	</span>
<span class="gi">+	} else {</span>
<span class="gi">+		set_current_pkt_info(core_if, dwc_ep);</span>
<span class="gi">+		if(dwc_ep-&gt;cur_pkt &gt;= dwc_ep-&gt;pkt_cnt) {</span>
<span class="gi">+			is_last = 1;</span>
<span class="gi">+			dwc_ep-&gt;cur_pkt = 0;</span>
<span class="gi">+			dwc_ep-&gt;proc_buf_num = (dwc_ep-&gt;proc_buf_num ^ 1) &amp; 0x1;</span>
<span class="gi">+			if(dwc_ep-&gt;proc_buf_num) {</span>
<span class="gi">+				dwc_ep-&gt;cur_pkt_addr = dwc_ep-&gt;xfer_buff1;</span>
<span class="gi">+				dwc_ep-&gt;cur_pkt_dma_addr = dwc_ep-&gt;dma_addr1;</span>
<span class="gi">+			} else {</span>
<span class="gi">+				dwc_ep-&gt;cur_pkt_addr = dwc_ep-&gt;xfer_buff0;</span>
<span class="gi">+				dwc_ep-&gt;cur_pkt_dma_addr = dwc_ep-&gt;dma_addr0;</span>
<span class="gi">+			}</span>
<span class="gi">+			</span>
<span class="gi">+		}</span>
<span class="gi">+		dwc_otg_iso_ep_start_frm_transfer(core_if, dwc_ep);</span>
<span class="gi">+	}</span>
<span class="gi">+	if(is_last)</span>
<span class="gi">+		dwc_otg_iso_buffer_done(ep, ep-&gt;iso_req);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#endif  //DWC_EN_ISOC</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function handles EP0 Control transfers.	 </span>
<span class="gi">+ *</span>
<span class="gi">+ * The state of the control tranfers are tracked in</span>
<span class="gi">+ * &lt;code&gt;ep0state&lt;/code&gt;.</span>
<span class="gi">+ */</span>
<span class="gi">+static void handle_ep0(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep0 = &amp;pcd-&gt;ep0;</span>
<span class="gi">+	desc_sts_data_t desc_sts;</span>
<span class="gi">+	deptsiz0_data_t deptsiz;</span>
<span class="gi">+	uint32_t byte_count;</span>
<span class="gi">+	</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s()\n&quot;, __func__);</span>
<span class="gi">+	print_ep0_state(pcd);</span>
<span class="gi">+#endif</span>
<span class="gi">+	</span>
<span class="gi">+	switch (pcd-&gt;ep0state) {</span>
<span class="gi">+	case EP0_DISCONNECT:</span>
<span class="gi">+		break;</span>
<span class="gi">+				</span>
<span class="gi">+	case EP0_IDLE:</span>
<span class="gi">+		pcd-&gt;request_config = 0;</span>
<span class="gi">+		</span>
<span class="gi">+		pcd_setup(pcd);</span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case EP0_IN_DATA_PHASE:</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;DATA_IN EP%d-%s: type=%d, mps=%d\n&quot;, </span>
<span class="gi">+				ep0-&gt;dwc_ep.num, (ep0-&gt;dwc_ep.is_in ?&quot;IN&quot;:&quot;OUT&quot;),</span>
<span class="gi">+				ep0-&gt;dwc_ep.type, ep0-&gt;dwc_ep.maxpacket);</span>
<span class="gi">+#endif				  </span>
<span class="gi">+</span>
<span class="gi">+		if (core_if-&gt;dma_enable != 0) {</span>
<span class="gi">+			/* </span>
<span class="gi">+			 * For EP0 we can only program 1 packet at a time so we</span>
<span class="gi">+			 * need to do the make calculations after each complete.</span>
<span class="gi">+			 * Call write_packet to make the calculations, as in</span>
<span class="gi">+			 * slave mode, and use those values to determine if we</span>
<span class="gi">+			 * can complete.</span>
<span class="gi">+			 */</span>
<span class="gi">+			if(core_if-&gt;dma_desc_enable == 0) {</span>
<span class="gi">+				deptsiz.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;in_ep_regs[0]-&gt;dieptsiz);</span>
<span class="gi">+				byte_count = ep0-&gt;dwc_ep.xfer_len - deptsiz.b.xfersize;</span>
<span class="gi">+			}</span>
<span class="gi">+			else {</span>
<span class="gi">+				desc_sts.d32 = readl(core_if-&gt;dev_if-&gt;in_desc_addr);</span>
<span class="gi">+				byte_count = ep0-&gt;dwc_ep.xfer_len - desc_sts.b.bytes;</span>
<span class="gi">+			}			 </span>
<span class="gi">+</span>
<span class="gi">+			ep0-&gt;dwc_ep.xfer_count += byte_count;</span>
<span class="gi">+			ep0-&gt;dwc_ep.xfer_buff += byte_count;</span>
<span class="gi">+			ep0-&gt;dwc_ep.dma_addr += byte_count;</span>
<span class="gi">+		}</span>
<span class="gi">+		if (ep0-&gt;dwc_ep.xfer_count &lt; ep0-&gt;dwc_ep.total_len) {</span>
<span class="gi">+			dwc_otg_ep0_continue_transfer (GET_CORE_IF(pcd), &amp;ep0-&gt;dwc_ep);</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCD, &quot;CONTINUE TRANSFER\n&quot;); </span>
<span class="gi">+		}</span>
<span class="gi">+		else if(ep0-&gt;dwc_ep.sent_zlp) {</span>
<span class="gi">+			dwc_otg_ep0_continue_transfer (GET_CORE_IF(pcd), &amp;ep0-&gt;dwc_ep);</span>
<span class="gi">+			ep0-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCD, &quot;CONTINUE TRANSFER\n&quot;); </span>
<span class="gi">+		}</span>
<span class="gi">+		else {		</span>
<span class="gi">+			ep0_complete_request(ep0);</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCD, &quot;COMPLETE TRANSFER\n&quot;); </span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+	case EP0_OUT_DATA_PHASE:</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;DATA_OUT EP%d-%s: type=%d, mps=%d\n&quot;, </span>
<span class="gi">+				ep0-&gt;dwc_ep.num, (ep0-&gt;dwc_ep.is_in ?&quot;IN&quot;:&quot;OUT&quot;),</span>
<span class="gi">+				ep0-&gt;dwc_ep.type, ep0-&gt;dwc_ep.maxpacket);</span>
<span class="gi">+#endif</span>
<span class="gi">+		if (core_if-&gt;dma_enable != 0) {</span>
<span class="gi">+			if(core_if-&gt;dma_desc_enable == 0) {</span>
<span class="gi">+				deptsiz.d32 = dwc_read_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[0]-&gt;doeptsiz);</span>
<span class="gi">+				byte_count = ep0-&gt;dwc_ep.maxpacket - deptsiz.b.xfersize; </span>
<span class="gi">+</span>
<span class="gi">+				//todo: invalidate cache &amp; aligned buf patch on completion</span>
<span class="gi">+				dma_sync_single_for_device(NULL,ep0-&gt;dwc_ep.dma_addr,byte_count,DMA_FROM_DEVICE);</span>
<span class="gi">+				aligned_buf_patch_on_buf_dma_oep_completion(ep0,byte_count);</span>
<span class="gi">+			}</span>
<span class="gi">+			else {</span>
<span class="gi">+				desc_sts.d32 = readl(core_if-&gt;dev_if-&gt;out_desc_addr);</span>
<span class="gi">+				byte_count = ep0-&gt;dwc_ep.maxpacket - desc_sts.b.bytes;</span>
<span class="gi">+				</span>
<span class="gi">+				//todo: invalidate cache &amp; aligned buf patch on completion</span>
<span class="gi">+				//</span>
<span class="gi">+</span>
<span class="gi">+			}			 </span>
<span class="gi">+			ep0-&gt;dwc_ep.xfer_count += byte_count;</span>
<span class="gi">+			ep0-&gt;dwc_ep.xfer_buff += byte_count;</span>
<span class="gi">+			ep0-&gt;dwc_ep.dma_addr += byte_count;</span>
<span class="gi">+		}</span>
<span class="gi">+		if (ep0-&gt;dwc_ep.xfer_count &lt; ep0-&gt;dwc_ep.total_len) {</span>
<span class="gi">+			dwc_otg_ep0_continue_transfer (GET_CORE_IF(pcd), &amp;ep0-&gt;dwc_ep);</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCD, &quot;CONTINUE TRANSFER\n&quot;); </span>
<span class="gi">+		}</span>
<span class="gi">+		else if(ep0-&gt;dwc_ep.sent_zlp) {</span>
<span class="gi">+			dwc_otg_ep0_continue_transfer (GET_CORE_IF(pcd), &amp;ep0-&gt;dwc_ep);</span>
<span class="gi">+			ep0-&gt;dwc_ep.sent_zlp = 0;</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCD, &quot;CONTINUE TRANSFER\n&quot;); </span>
<span class="gi">+	}</span>
<span class="gi">+		else {		</span>
<span class="gi">+			ep0_complete_request(ep0);</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCD, &quot;COMPLETE TRANSFER\n&quot;); </span>
<span class="gi">+		}</span>
<span class="gi">+		break;</span>
<span class="gi">+				</span>
<span class="gi">+</span>
<span class="gi">+	case EP0_IN_STATUS_PHASE:</span>
<span class="gi">+	case EP0_OUT_STATUS_PHASE:</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD, &quot;CASE: EP0_STATUS\n&quot;); </span>
<span class="gi">+				ep0_complete_request(ep0);</span>
<span class="gi">+				pcd-&gt;ep0state = EP0_IDLE;</span>
<span class="gi">+				ep0-&gt;stopped = 1;</span>
<span class="gi">+				ep0-&gt;dwc_ep.is_in = 0;	/* OUT for next SETUP */</span>
<span class="gi">+</span>
<span class="gi">+		/* Prepare for more SETUP Packets */</span>
<span class="gi">+		if(core_if-&gt;dma_enable) {</span>
<span class="gi">+			ep0_out_start(core_if, pcd);</span>
<span class="gi">+		} </span>
<span class="gi">+		break;</span>
<span class="gi">+</span>
<span class="gi">+	case EP0_STALL:</span>
<span class="gi">+		DWC_ERROR(&quot;EP0 STALLed, should not get here pcd_setup()\n&quot;);</span>
<span class="gi">+		break;</span>
<span class="gi">+	}</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+	print_ep0_state(pcd);</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Restart transfer</span>
<span class="gi">+ */</span>
<span class="gi">+static void restart_transfer(dwc_otg_pcd_t *pcd, const uint32_t epnum)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if;</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if;</span>
<span class="gi">+	deptsiz_data_t dieptsiz = {.d32=0};</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+</span>
<span class="gi">+	ep = get_in_ep(pcd, epnum);</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+	if(ep-&gt;dwc_ep.type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+#endif /* DWC_EN_ISOC  */</span>
<span class="gi">+</span>
<span class="gi">+	core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+</span>
<span class="gi">+	dieptsiz.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;dieptsiz);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD,&quot;xfer_buff=%p xfer_count=%0x xfer_len=%0x&quot; </span>
<span class="gi">+			&quot; stopped=%d\n&quot;, ep-&gt;dwc_ep.xfer_buff,</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_count, ep-&gt;dwc_ep.xfer_len ,</span>
<span class="gi">+			ep-&gt;stopped);</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * If xfersize is 0 and pktcnt in not 0, resend the last packet.</span>
<span class="gi">+	 */</span>
<span class="gi">+	if (dieptsiz.b.pktcnt &amp;&amp; dieptsiz.b.xfersize == 0 &amp;&amp;</span>
<span class="gi">+		 ep-&gt;dwc_ep.start_xfer_buff != 0) {</span>
<span class="gi">+		if (ep-&gt;dwc_ep.total_len &lt;= ep-&gt;dwc_ep.maxpacket) {</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_count = 0;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_buff = ep-&gt;dwc_ep.start_xfer_buff;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_len = ep-&gt;dwc_ep.xfer_count;</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_count -= ep-&gt;dwc_ep.maxpacket;</span>
<span class="gi">+			/* convert packet size to dwords. */</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_buff -= ep-&gt;dwc_ep.maxpacket;</span>
<span class="gi">+			ep-&gt;dwc_ep.xfer_len = ep-&gt;dwc_ep.xfer_count;</span>
<span class="gi">+		}</span>
<span class="gi">+		ep-&gt;stopped = 0;</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCD,&quot;xfer_buff=%p xfer_count=%0x &quot;</span>
<span class="gi">+					&quot;xfer_len=%0x stopped=%d\n&quot;, </span>
<span class="gi">+					ep-&gt;dwc_ep.xfer_buff,</span>
<span class="gi">+					ep-&gt;dwc_ep.xfer_count, ep-&gt;dwc_ep.xfer_len ,</span>
<span class="gi">+					ep-&gt;stopped</span>
<span class="gi">+					);</span>
<span class="gi">+		if (epnum == 0) {</span>
<span class="gi">+			dwc_otg_ep0_start_transfer(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+		} </span>
<span class="gi">+		else {</span>
<span class="gi">+			dwc_otg_ep_start_transfer(core_if, &amp;ep-&gt;dwc_ep);</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * handle the IN EP disable interrupt.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline void handle_in_ep_disable_intr(dwc_otg_pcd_t *pcd, </span>
<span class="gi">+						 const uint32_t epnum)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	deptsiz_data_t dieptsiz = {.d32=0};</span>
<span class="gi">+	dctl_data_t dctl = {.d32=0};</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	dwc_ep_t *dwc_ep;</span>
<span class="gi">+</span>
<span class="gi">+	ep = get_in_ep(pcd, epnum);</span>
<span class="gi">+	dwc_ep = &amp;ep-&gt;dwc_ep;</span>
<span class="gi">+</span>
<span class="gi">+	if(dwc_ep-&gt;type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+		dwc_otg_flush_tx_fifo(core_if, dwc_ep-&gt;tx_fifo_num);</span>
<span class="gi">+		return;</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD,&quot;diepctl%d=%0x\n&quot;, epnum,</span>
<span class="gi">+			dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;diepctl));</span>
<span class="gi">+	dieptsiz.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;dieptsiz);</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;pktcnt=%d size=%d\n&quot;,</span>
<span class="gi">+			dieptsiz.b.pktcnt, </span>
<span class="gi">+			dieptsiz.b.xfersize);</span>
<span class="gi">+</span>
<span class="gi">+	if (ep-&gt;stopped) {</span>
<span class="gi">+		/* Flush the Tx FIFO */</span>
<span class="gi">+		dwc_otg_flush_tx_fifo(core_if, dwc_ep-&gt;tx_fifo_num);</span>
<span class="gi">+		/* Clear the Global IN NP NAK */</span>
<span class="gi">+		dctl.d32 = 0;</span>
<span class="gi">+		dctl.b.cgnpinnak = 1;</span>
<span class="gi">+		dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dctl, </span>
<span class="gi">+					 dctl.d32, 0);</span>
<span class="gi">+		/* Restart the transaction */</span>
<span class="gi">+		if (dieptsiz.b.pktcnt != 0 || </span>
<span class="gi">+			dieptsiz.b.xfersize != 0) {</span>
<span class="gi">+			restart_transfer(pcd, epnum);</span>
<span class="gi">+		}</span>
<span class="gi">+	} </span>
<span class="gi">+	else {</span>
<span class="gi">+		/* Restart the transaction */</span>
<span class="gi">+		if (dieptsiz.b.pktcnt != 0 || </span>
<span class="gi">+			dieptsiz.b.xfersize != 0) {</span>
<span class="gi">+			restart_transfer(pcd, epnum);</span>
<span class="gi">+		}</span>
<span class="gi">+		DWC_DEBUGPL(DBG_ANY, &quot;STOPPED!!!\n&quot;);</span>
<span class="gi">+	}								 </span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handler for the IN EP timeout handshake interrupt. </span>
<span class="gi">+ */</span>
<span class="gi">+static inline void handle_in_ep_timeout_intr(dwc_otg_pcd_t *pcd, </span>
<span class="gi">+						const uint32_t epnum)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	deptsiz_data_t dieptsiz = {.d32=0};</span>
<span class="gi">+	uint32_t num = 0;</span>
<span class="gi">+#endif</span>
<span class="gi">+	dctl_data_t dctl = {.d32=0};</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+</span>
<span class="gi">+	gintmsk_data_t intr_mask = {.d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+	ep = get_in_ep(pcd, epnum);</span>
<span class="gi">+</span>
<span class="gi">+	/* Disable the NP Tx Fifo Empty Interrrupt */</span>
<span class="gi">+	if (!core_if-&gt;dma_enable) {</span>
<span class="gi">+		intr_mask.b.nptxfempty = 1;</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk, intr_mask.d32, 0);</span>
<span class="gi">+	}</span>
<span class="gi">+	/** @todo NGS Check EP type.</span>
<span class="gi">+	 * Implement for Periodic EPs */</span>
<span class="gi">+	/* </span>
<span class="gi">+	 * Non-periodic EP </span>
<span class="gi">+	 */</span>
<span class="gi">+	/* Enable the Global IN NAK Effective Interrupt */</span>
<span class="gi">+	intr_mask.b.ginnakeff = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk, </span>
<span class="gi">+					  0, intr_mask.d32);</span>
<span class="gi">+</span>
<span class="gi">+	/* Set Global IN NAK */</span>
<span class="gi">+	dctl.b.sgnpinnak = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dctl,</span>
<span class="gi">+					 dctl.d32, dctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+	ep-&gt;stopped = 1;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+	dieptsiz.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[num]-&gt;dieptsiz);</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;pktcnt=%d size=%d\n&quot;,</span>
<span class="gi">+			dieptsiz.b.pktcnt, </span>
<span class="gi">+			dieptsiz.b.xfersize);</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DISABLE_PERIODIC_EP</span>
<span class="gi">+	/*</span>
<span class="gi">+	 * Set the NAK bit for this EP to</span>
<span class="gi">+	 * start the disable process.</span>
<span class="gi">+	 */</span>
<span class="gi">+	diepctl.d32 = 0;</span>
<span class="gi">+	diepctl.b.snak = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;dev_if-&gt;in_ep_regs[num]-&gt;diepctl, diepctl.d32, diepctl.d32);</span>
<span class="gi">+	ep-&gt;disabling = 1;</span>
<span class="gi">+	ep-&gt;stopped = 1;</span>
<span class="gi">+#endif</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handler for the IN EP NAK interrupt. </span>
<span class="gi">+ */</span>
<span class="gi">+static inline int32_t handle_in_ep_nak_intr(dwc_otg_pcd_t *pcd, </span>
<span class="gi">+						const uint32_t epnum)</span>
<span class="gi">+{</span>
<span class="gi">+        /** @todo implement ISR */</span>
<span class="gi">+        dwc_otg_core_if_t* core_if;		</span>
<span class="gi">+	diepmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_PRINT(&quot;INTERRUPT Handler not implemented for %s\n&quot;, &quot;IN EP NAK&quot;);</span>
<span class="gi">+	core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	intr_mask.b.nak = 1;</span>
<span class="gi">+</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;diepeachintmsk[epnum],</span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;diepmsk,</span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handler for the OUT EP Babble interrupt. </span>
<span class="gi">+ */</span>
<span class="gi">+static inline int32_t handle_out_ep_babble_intr(dwc_otg_pcd_t *pcd, </span>
<span class="gi">+						const uint32_t epnum)</span>
<span class="gi">+{</span>
<span class="gi">+        /** @todo implement ISR */</span>
<span class="gi">+        dwc_otg_core_if_t* core_if;		</span>
<span class="gi">+	doepmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	</span>
<span class="gi">+ 	DWC_PRINT(&quot;INTERRUPT Handler not implemented for %s\n&quot;, &quot;OUT EP Babble&quot;);</span>
<span class="gi">+	core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	intr_mask.b.babble = 1;</span>
<span class="gi">+</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;doepeachintmsk[epnum],</span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;doepmsk,</span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handler for the OUT EP NAK interrupt. </span>
<span class="gi">+ */</span>
<span class="gi">+static inline int32_t handle_out_ep_nak_intr(dwc_otg_pcd_t *pcd, </span>
<span class="gi">+						const uint32_t epnum)</span>
<span class="gi">+{</span>
<span class="gi">+        /** @todo implement ISR */</span>
<span class="gi">+        dwc_otg_core_if_t* core_if;		</span>
<span class="gi">+	doepmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_PRINT(&quot;INTERRUPT Handler not implemented for %s\n&quot;, &quot;OUT EP NAK&quot;);</span>
<span class="gi">+	core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	intr_mask.b.nak = 1;</span>
<span class="gi">+</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;doepeachintmsk[epnum],</span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;doepmsk,</span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Handler for the OUT EP NYET interrupt. </span>
<span class="gi">+ */</span>
<span class="gi">+static inline int32_t handle_out_ep_nyet_intr(dwc_otg_pcd_t *pcd, </span>
<span class="gi">+						const uint32_t epnum)</span>
<span class="gi">+{</span>
<span class="gi">+        /** @todo implement ISR */</span>
<span class="gi">+        dwc_otg_core_if_t* core_if;		</span>
<span class="gi">+	doepmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_PRINT(&quot;INTERRUPT Handler not implemented for %s\n&quot;, &quot;OUT EP NYET&quot;);</span>
<span class="gi">+	core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	intr_mask.b.nyet = 1;</span>
<span class="gi">+</span>
<span class="gi">+	if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;doepeachintmsk[epnum],</span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+	} else {</span>
<span class="gi">+		dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;doepmsk,</span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This interrupt indicates that an IN EP has a pending Interrupt.</span>
<span class="gi">+ * The sequence for handling the IN EP interrupt is shown below:</span>
<span class="gi">+ * -#	Read the Device All Endpoint Interrupt register</span>
<span class="gi">+ * -#	Repeat the following for each IN EP interrupt bit set (from</span>
<span class="gi">+ *		LSB to MSB).</span>
<span class="gi">+ * -#	Read the Device Endpoint Interrupt (DIEPINTn) register</span>
<span class="gi">+ * -#	If &quot;Transfer Complete&quot; call the request complete function</span>
<span class="gi">+ * -#	If &quot;Endpoint Disabled&quot; complete the EP disable procedure.</span>
<span class="gi">+ * -#	If &quot;AHB Error Interrupt&quot; log error</span>
<span class="gi">+ * -#	If &quot;Time-out Handshake&quot; log error</span>
<span class="gi">+ * -#	If &quot;IN Token Received when TxFIFO Empty&quot; write packet to Tx</span>
<span class="gi">+ *		FIFO.</span>
<span class="gi">+ * -#	If &quot;IN Token EP Mismatch&quot; (disable, this is handled by EP</span>
<span class="gi">+ *		Mismatch Interrupt)</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t dwc_otg_pcd_handle_in_ep_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+#define CLEAR_IN_EP_INTR(__core_if,__epnum,__intr) \</span>
<span class="gi">+do { \</span>
<span class="gi">+		diepint_data_t diepint = {.d32=0}; \</span>
<span class="gi">+		diepint.b.__intr = 1; \</span>
<span class="gi">+		dwc_write_reg32(&amp;__core_if-&gt;dev_if-&gt;in_ep_regs[__epnum]-&gt;diepint, \</span>
<span class="gi">+		diepint.d32); \</span>
<span class="gi">+} while (0)</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	diepint_data_t diepint = {.d32=0};</span>
<span class="gi">+	dctl_data_t dctl = {.d32=0};</span>
<span class="gi">+	depctl_data_t depctl = {.d32=0};</span>
<span class="gi">+	uint32_t ep_intr;</span>
<span class="gi">+	uint32_t epnum = 0;</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	dwc_ep_t *dwc_ep;</span>
<span class="gi">+	gintmsk_data_t intr_mask = {.d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+	</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s(%p)\n&quot;, __func__, pcd);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read in the device interrupt bits */</span>
<span class="gi">+	ep_intr = dwc_otg_read_dev_all_in_ep_intr(core_if);</span>
<span class="gi">+</span>
<span class="gi">+	/* Service the Device IN interrupts for each endpoint */</span>
<span class="gi">+	while(ep_intr) {</span>
<span class="gi">+		if (ep_intr&amp;0x1) {			</span>
<span class="gi">+			uint32_t empty_msk;</span>
<span class="gi">+			/* Get EP pointer */	   </span>
<span class="gi">+			ep = get_in_ep(pcd, epnum);</span>
<span class="gi">+			dwc_ep = &amp;ep-&gt;dwc_ep;</span>
<span class="gi">+</span>
<span class="gi">+			depctl.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;diepctl);</span>
<span class="gi">+			empty_msk = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dtknqr4_fifoemptymsk);</span>
<span class="gi">+</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, </span>
<span class="gi">+					&quot;IN EP INTERRUPT - %d\nepmty_msk - %8x  diepctl - %8x\n&quot;,</span>
<span class="gi">+					epnum, </span>
<span class="gi">+					empty_msk, </span>
<span class="gi">+					depctl.d32);</span>
<span class="gi">+</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCD, </span>
<span class="gi">+					&quot;EP%d-%s: type=%d, mps=%d\n&quot;, </span>
<span class="gi">+					dwc_ep-&gt;num, (dwc_ep-&gt;is_in ?&quot;IN&quot;:&quot;OUT&quot;),</span>
<span class="gi">+					dwc_ep-&gt;type, dwc_ep-&gt;maxpacket);</span>
<span class="gi">+</span>
<span class="gi">+			diepint.d32 = dwc_otg_read_dev_in_ep_intr(core_if, dwc_ep);</span>
<span class="gi">+									   </span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, &quot;EP %d Interrupt Register - 0x%x\n&quot;, epnum, diepint.d32);</span>
<span class="gi">+			/* Transfer complete */</span>
<span class="gi">+			if (diepint.b.xfercompl) {</span>
<span class="gi">+				/* Disable the NP Tx FIFO Empty</span>
<span class="gi">+				 * Interrrupt */</span>
<span class="gi">+					if(core_if-&gt;en_multiple_tx_fifo == 0) {</span>
<span class="gi">+					intr_mask.b.nptxfempty = 1;</span>
<span class="gi">+					dwc_modify_reg32(&amp;core_if-&gt;core_global_regs-&gt;gintmsk, intr_mask.d32, 0);</span>
<span class="gi">+				}</span>
<span class="gi">+				else {						</span>
<span class="gi">+					/* Disable the Tx FIFO Empty Interrupt for this EP */</span>
<span class="gi">+					uint32_t fifoemptymsk = 0x1 &lt;&lt; dwc_ep-&gt;num;</span>
<span class="gi">+					dwc_modify_reg32(&amp;core_if-&gt;dev_if-&gt;dev_global_regs-&gt;dtknqr4_fifoemptymsk,</span>
<span class="gi">+					fifoemptymsk, 0);</span>
<span class="gi">+				}</span>
<span class="gi">+				/* Clear the bit in DIEPINTn for this interrupt */</span>
<span class="gi">+				CLEAR_IN_EP_INTR(core_if,epnum,xfercompl);</span>
<span class="gi">+	</span>
<span class="gi">+				/* Complete the transfer */</span>
<span class="gi">+				if (epnum == 0) {</span>
<span class="gi">+					handle_ep0(pcd);</span>
<span class="gi">+				}</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+				else if(dwc_ep-&gt;type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+					if(!ep-&gt;stopped)</span>
<span class="gi">+						complete_iso_ep(ep);</span>
<span class="gi">+				}</span>
<span class="gi">+#endif //DWC_EN_ISOC</span>
<span class="gi">+				else {</span>
<span class="gi">+</span>
<span class="gi">+					complete_ep(ep);</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+			/* Endpoint disable	 */</span>
<span class="gi">+			if (diepint.b.epdisabled) {</span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d IN disabled\n&quot;, epnum);</span>
<span class="gi">+				handle_in_ep_disable_intr(pcd, epnum);</span>
<span class="gi">+</span>
<span class="gi">+				/* Clear the bit in DIEPINTn for this interrupt */</span>
<span class="gi">+				CLEAR_IN_EP_INTR(core_if,epnum,epdisabled);</span>
<span class="gi">+			}</span>
<span class="gi">+			/* AHB Error */</span>
<span class="gi">+			if (diepint.b.ahberr) {</span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d IN AHB Error\n&quot;, epnum);</span>
<span class="gi">+				/* Clear the bit in DIEPINTn for this interrupt */</span>
<span class="gi">+				CLEAR_IN_EP_INTR(core_if,epnum,ahberr);</span>
<span class="gi">+			}</span>
<span class="gi">+			/* TimeOUT Handshake (non-ISOC IN EPs) */</span>
<span class="gi">+			if (diepint.b.timeout) { </span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d IN Time-out\n&quot;, epnum);</span>
<span class="gi">+				handle_in_ep_timeout_intr(pcd, epnum);</span>
<span class="gi">+</span>
<span class="gi">+				CLEAR_IN_EP_INTR(core_if,epnum,timeout);</span>
<span class="gi">+			}</span>
<span class="gi">+			/** IN Token received with TxF Empty */</span>
<span class="gi">+			if (diepint.b.intktxfemp) {</span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d IN TKN TxFifo Empty\n&quot;,</span>
<span class="gi">+								epnum);</span>
<span class="gi">+				if (!ep-&gt;stopped &amp;&amp; epnum != 0) {</span>
<span class="gi">+	</span>
<span class="gi">+					diepmsk_data_t diepmsk = { .d32 = 0};</span>
<span class="gi">+					diepmsk.b.intktxfemp = 1;</span>
<span class="gi">+					</span>
<span class="gi">+					if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+						dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepeachintmsk[epnum], </span>
<span class="gi">+							diepmsk.d32, 0);</span>
<span class="gi">+					} else {</span>
<span class="gi">+						dwc_modify_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;diepmsk, diepmsk.d32, 0);</span>
<span class="gi">+					}</span>
<span class="gi">+					start_next_request(ep);</span>
<span class="gi">+				}</span>
<span class="gi">+				else if(core_if-&gt;dma_desc_enable &amp;&amp; epnum == 0 &amp;&amp; </span>
<span class="gi">+						pcd-&gt;ep0state == EP0_OUT_STATUS_PHASE) {</span>
<span class="gi">+					// EP0 IN set STALL</span>
<span class="gi">+					depctl.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;diepctl);</span>
<span class="gi">+</span>
<span class="gi">+					/* set the disable and stall bits */</span>
<span class="gi">+					if (depctl.b.epena) {</span>
<span class="gi">+						depctl.b.epdis = 1;</span>
<span class="gi">+					}</span>
<span class="gi">+					depctl.b.stall = 1;</span>
<span class="gi">+					dwc_write_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;diepctl, depctl.d32);</span>
<span class="gi">+				}</span>
<span class="gi">+				CLEAR_IN_EP_INTR(core_if,epnum,intktxfemp);</span>
<span class="gi">+			}					</span>
<span class="gi">+			/** IN Token Received with EP mismatch */</span>
<span class="gi">+			if (diepint.b.intknepmis) {</span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d IN TKN EP Mismatch\n&quot;, epnum);</span>
<span class="gi">+				CLEAR_IN_EP_INTR(core_if,epnum,intknepmis);</span>
<span class="gi">+			}</span>
<span class="gi">+			/** IN Endpoint NAK Effective */</span>
<span class="gi">+			if (diepint.b.inepnakeff) {</span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d IN EP NAK Effective\n&quot;, epnum);</span>
<span class="gi">+				/* Periodic EP */</span>
<span class="gi">+				if (ep-&gt;disabling) {</span>
<span class="gi">+					depctl.d32 = 0;</span>
<span class="gi">+					depctl.b.snak = 1;</span>
<span class="gi">+					depctl.b.epdis = 1;</span>
<span class="gi">+					dwc_modify_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;diepctl, depctl.d32, depctl.d32);</span>
<span class="gi">+				}</span>
<span class="gi">+				CLEAR_IN_EP_INTR(core_if,epnum,inepnakeff);</span>
<span class="gi">+</span>
<span class="gi">+			}</span>
<span class="gi">+					</span>
<span class="gi">+			/** IN EP Tx FIFO Empty Intr */</span>
<span class="gi">+			if (diepint.b.emptyintr) {</span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d Tx FIFO Empty Intr \n&quot;, epnum);</span>
<span class="gi">+				write_empty_tx_fifo(pcd, epnum);										</span>
<span class="gi">+</span>
<span class="gi">+				CLEAR_IN_EP_INTR(core_if,epnum,emptyintr);</span>
<span class="gi">+						</span>
<span class="gi">+			}</span>
<span class="gi">+			</span>
<span class="gi">+			/** IN EP BNA Intr */</span>
<span class="gi">+			if (diepint.b.bna) {</span>
<span class="gi">+				CLEAR_IN_EP_INTR(core_if,epnum,bna);</span>
<span class="gi">+				if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+					if(dwc_ep-&gt;type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+						/*</span>
<span class="gi">+						 * This checking is performed to prevent first &quot;false&quot; BNA </span>
<span class="gi">+						 * handling occuring right after reconnect </span>
<span class="gi">+						 */ </span>
<span class="gi">+						if(dwc_ep-&gt;next_frame != 0xffffffff)</span>
<span class="gi">+							dwc_otg_pcd_handle_iso_bna(ep);</span>
<span class="gi">+					}</span>
<span class="gi">+					else </span>
<span class="gi">+#endif //DWC_EN_ISOC</span>
<span class="gi">+					{</span>
<span class="gi">+						dctl.d32 = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dctl);</span>
<span class="gi">+					</span>
<span class="gi">+						/* If Global Continue on BNA is disabled - disable EP */</span>
<span class="gi">+						if(!dctl.b.gcontbna) 						{</span>
<span class="gi">+							depctl.d32 = 0;</span>
<span class="gi">+							depctl.b.snak = 1;</span>
<span class="gi">+							depctl.b.epdis = 1;</span>
<span class="gi">+							dwc_modify_reg32(&amp;dev_if-&gt;in_ep_regs[epnum]-&gt;diepctl, depctl.d32, depctl.d32);</span>
<span class="gi">+						} else {</span>
<span class="gi">+							start_next_request(ep);</span>
<span class="gi">+						}</span>
<span class="gi">+					}</span>
<span class="gi">+				}</span>
<span class="gi">+			}			</span>
<span class="gi">+			/* NAK Interrutp */</span>
<span class="gi">+			if (diepint.b.nak) { </span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d IN NAK Interrupt\n&quot;, epnum);</span>
<span class="gi">+				handle_in_ep_nak_intr(pcd, epnum);</span>
<span class="gi">+</span>
<span class="gi">+				CLEAR_IN_EP_INTR(core_if,epnum,nak);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		epnum++;</span>
<span class="gi">+		ep_intr &gt;&gt;=1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+#undef CLEAR_IN_EP_INTR</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This interrupt indicates that an OUT EP has a pending Interrupt.</span>
<span class="gi">+ * The sequence for handling the OUT EP interrupt is shown below:</span>
<span class="gi">+ * -#	Read the Device All Endpoint Interrupt register</span>
<span class="gi">+ * -#	Repeat the following for each OUT EP interrupt bit set (from</span>
<span class="gi">+ *		LSB to MSB).</span>
<span class="gi">+ * -#	Read the Device Endpoint Interrupt (DOEPINTn) register</span>
<span class="gi">+ * -#	If &quot;Transfer Complete&quot; call the request complete function</span>
<span class="gi">+ * -#	If &quot;Endpoint Disabled&quot; complete the EP disable procedure.</span>
<span class="gi">+ * -#	If &quot;AHB Error Interrupt&quot; log error</span>
<span class="gi">+ * -#	If &quot;Setup Phase Done&quot; process Setup Packet (See Standard USB</span>
<span class="gi">+ *		Command Processing)</span>
<span class="gi">+ */</span>
<span class="gi">+static int32_t dwc_otg_pcd_handle_out_ep_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+#define CLEAR_OUT_EP_INTR(__core_if,__epnum,__intr) \</span>
<span class="gi">+do { \</span>
<span class="gi">+		doepint_data_t doepint = {.d32=0}; \</span>
<span class="gi">+		doepint.b.__intr = 1; \</span>
<span class="gi">+		dwc_write_reg32(&amp;__core_if-&gt;dev_if-&gt;out_ep_regs[__epnum]-&gt;doepint, \</span>
<span class="gi">+		doepint.d32); \</span>
<span class="gi">+} while (0)</span>
<span class="gi">+</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = core_if-&gt;dev_if;</span>
<span class="gi">+	uint32_t ep_intr;</span>
<span class="gi">+	doepint_data_t doepint = {.d32=0};</span>
<span class="gi">+	dctl_data_t dctl = {.d32=0};</span>
<span class="gi">+	depctl_data_t doepctl = {.d32=0};</span>
<span class="gi">+	uint32_t epnum = 0;</span>
<span class="gi">+	dwc_otg_pcd_ep_t *ep;</span>
<span class="gi">+	dwc_ep_t *dwc_ep;</span>
<span class="gi">+	</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCDV, &quot;%s()\n&quot;, __func__);</span>
<span class="gi">+</span>
<span class="gi">+	/* Read in the device interrupt bits */</span>
<span class="gi">+	ep_intr = dwc_otg_read_dev_all_out_ep_intr(core_if);</span>
<span class="gi">+</span>
<span class="gi">+	while(ep_intr) {</span>
<span class="gi">+		if (ep_intr&amp;0x1) {</span>
<span class="gi">+			/* Get EP pointer */	   </span>
<span class="gi">+			ep = get_out_ep(pcd, epnum);</span>
<span class="gi">+			dwc_ep = &amp;ep-&gt;dwc_ep;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef VERBOSE</span>
<span class="gi">+			DWC_DEBUGPL(DBG_PCDV, </span>
<span class="gi">+					&quot;EP%d-%s: type=%d, mps=%d\n&quot;, </span>
<span class="gi">+					dwc_ep-&gt;num, (dwc_ep-&gt;is_in ?&quot;IN&quot;:&quot;OUT&quot;),</span>
<span class="gi">+					dwc_ep-&gt;type, dwc_ep-&gt;maxpacket);</span>
<span class="gi">+#endif</span>
<span class="gi">+			doepint.d32 = dwc_otg_read_dev_out_ep_intr(core_if, dwc_ep);</span>
<span class="gi">+</span>
<span class="gi">+			/* Transfer complete */</span>
<span class="gi">+			if (doepint.b.xfercompl) {</span>
<span class="gi">+				</span>
<span class="gi">+				if (epnum == 0) {</span>
<span class="gi">+					/* Clear the bit in DOEPINTn for this interrupt */</span>
<span class="gi">+					CLEAR_OUT_EP_INTR(core_if,epnum,xfercompl);</span>
<span class="gi">+					if(core_if-&gt;dma_desc_enable == 0 || pcd-&gt;ep0state != EP0_IDLE)</span>
<span class="gi">+						handle_ep0(pcd);</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+				} else if(dwc_ep-&gt;type == DWC_OTG_EP_TYPE_ISOC) {</span>
<span class="gi">+					if (doepint.b.pktdrpsts == 0) {</span>
<span class="gi">+						/* Clear the bit in DOEPINTn for this interrupt */</span>
<span class="gi">+						CLEAR_OUT_EP_INTR(core_if,epnum,xfercompl);</span>
<span class="gi">+						complete_iso_ep(ep);</span>
<span class="gi">+					} else {</span>
<span class="gi">+						</span>
<span class="gi">+						doepint_data_t doepint = {.d32=0}; </span>
<span class="gi">+						doepint.b.xfercompl = 1; </span>
<span class="gi">+						doepint.b.pktdrpsts = 1; </span>
<span class="gi">+						dwc_write_reg32(&amp;core_if-&gt;dev_if-&gt;out_ep_regs[epnum]-&gt;doepint,</span>
<span class="gi">+							doepint.d32); </span>
<span class="gi">+						if(handle_iso_out_pkt_dropped(core_if,dwc_ep)) {</span>
<span class="gi">+							complete_iso_ep(ep);</span>
<span class="gi">+						}</span>
<span class="gi">+					}</span>
<span class="gi">+#endif //DWC_EN_ISOC</span>
<span class="gi">+				} else {</span>
<span class="gi">+					/* Clear the bit in DOEPINTn for this interrupt */</span>
<span class="gi">+					CLEAR_OUT_EP_INTR(core_if,epnum,xfercompl);</span>
<span class="gi">+					complete_ep(ep);</span>
<span class="gi">+				}</span>
<span class="gi">+</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			/* Endpoint disable	 */</span>
<span class="gi">+			if (doepint.b.epdisabled) {</span>
<span class="gi">+				</span>
<span class="gi">+				/* Clear the bit in DOEPINTn for this interrupt */</span>
<span class="gi">+				CLEAR_OUT_EP_INTR(core_if,epnum,epdisabled);</span>
<span class="gi">+			}</span>
<span class="gi">+			/* AHB Error */</span>
<span class="gi">+			if (doepint.b.ahberr) {</span>
<span class="gi">+				DWC_DEBUGPL(DBG_PCD,&quot;EP%d OUT AHB Error\n&quot;, epnum);</span>
<span class="gi">+				DWC_DEBUGPL(DBG_PCD,&quot;EP DMA REG	 %d \n&quot;, core_if-&gt;dev_if-&gt;out_ep_regs[epnum]-&gt;doepdma);													</span>
<span class="gi">+				CLEAR_OUT_EP_INTR(core_if,epnum,ahberr);</span>
<span class="gi">+			}</span>
<span class="gi">+			/* Setup Phase Done (contorl EPs) */</span>
<span class="gi">+			if (doepint.b.setup) {</span>
<span class="gi">+#ifdef DEBUG_EP0</span>
<span class="gi">+				DWC_DEBUGPL(DBG_PCD,&quot;EP%d SETUP Done\n&quot;, </span>
<span class="gi">+							epnum);</span>
<span class="gi">+#endif</span>
<span class="gi">+				CLEAR_OUT_EP_INTR(core_if,epnum,setup);</span>
<span class="gi">+				</span>
<span class="gi">+				handle_ep0(pcd);</span>
<span class="gi">+			}</span>
<span class="gi">+</span>
<span class="gi">+			/** OUT EP BNA Intr */</span>
<span class="gi">+			if (doepint.b.bna) {</span>
<span class="gi">+				CLEAR_OUT_EP_INTR(core_if,epnum,bna);</span>
<span class="gi">+				if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+					if(dwc_ep-&gt;type == DWC_OTG_EP_TYPE_ISOC) {	</span>
<span class="gi">+						/*</span>
<span class="gi">+						 * This checking is performed to prevent first &quot;false&quot; BNA </span>
<span class="gi">+						 * handling occuring right after reconnect </span>
<span class="gi">+						 */ </span>
<span class="gi">+						if(dwc_ep-&gt;next_frame != 0xffffffff)</span>
<span class="gi">+							dwc_otg_pcd_handle_iso_bna(ep);</span>
<span class="gi">+					}</span>
<span class="gi">+					else </span>
<span class="gi">+#endif //DWC_EN_ISOC</span>
<span class="gi">+					{</span>
<span class="gi">+						dctl.d32 = dwc_read_reg32(&amp;dev_if-&gt;dev_global_regs-&gt;dctl);</span>
<span class="gi">+						</span>
<span class="gi">+						/* If Global Continue on BNA is disabled - disable EP*/</span>
<span class="gi">+						if(!dctl.b.gcontbna) {</span>
<span class="gi">+							doepctl.d32 = 0;</span>
<span class="gi">+							doepctl.b.snak = 1;</span>
<span class="gi">+							doepctl.b.epdis = 1;</span>
<span class="gi">+							dwc_modify_reg32(&amp;dev_if-&gt;out_ep_regs[epnum]-&gt;doepctl, doepctl.d32, doepctl.d32);</span>
<span class="gi">+						} else {</span>
<span class="gi">+							start_next_request(ep);</span>
<span class="gi">+						}</span>
<span class="gi">+					}</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+			if (doepint.b.stsphsercvd) {</span>
<span class="gi">+				CLEAR_OUT_EP_INTR(core_if,epnum,stsphsercvd);</span>
<span class="gi">+				if(core_if-&gt;dma_desc_enable) {</span>
<span class="gi">+					do_setup_in_status_phase(pcd);</span>
<span class="gi">+				}</span>
<span class="gi">+			}</span>
<span class="gi">+			/* Babble Interrutp */</span>
<span class="gi">+			if (doepint.b.babble) { </span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d OUT Babble\n&quot;, epnum);</span>
<span class="gi">+				handle_out_ep_babble_intr(pcd, epnum);</span>
<span class="gi">+</span>
<span class="gi">+				CLEAR_OUT_EP_INTR(core_if,epnum,babble);</span>
<span class="gi">+			}</span>
<span class="gi">+			/* NAK Interrutp */</span>
<span class="gi">+			if (doepint.b.nak) { </span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d OUT NAK\n&quot;, epnum);</span>
<span class="gi">+				handle_out_ep_nak_intr(pcd, epnum);</span>
<span class="gi">+</span>
<span class="gi">+				CLEAR_OUT_EP_INTR(core_if,epnum,nak);</span>
<span class="gi">+			}</span>
<span class="gi">+			/* NYET Interrutp */</span>
<span class="gi">+			if (doepint.b.nyet) { </span>
<span class="gi">+				DWC_DEBUGPL(DBG_ANY,&quot;EP%d OUT NYET\n&quot;, epnum);</span>
<span class="gi">+				handle_out_ep_nyet_intr(pcd, epnum);</span>
<span class="gi">+</span>
<span class="gi">+				CLEAR_OUT_EP_INTR(core_if,epnum,nyet);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		epnum++;</span>
<span class="gi">+		ep_intr &gt;&gt;=1;</span>
<span class="gi">+	}</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+</span>
<span class="gi">+#undef CLEAR_OUT_EP_INTR</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Incomplete ISO IN Transfer Interrupt.</span>
<span class="gi">+ * This interrupt indicates one of the following conditions occurred</span>
<span class="gi">+ * while transmitting an ISOC transaction.</span>
<span class="gi">+ * - Corrupted IN Token for ISOC EP.</span>
<span class="gi">+ * - Packet not complete in FIFO.</span>
<span class="gi">+ * The follow actions will be taken:</span>
<span class="gi">+ *	-#	Determine the EP</span>
<span class="gi">+ *	-#	Set incomplete flag in dwc_ep structure</span>
<span class="gi">+ *	-#	Disable EP; when &quot;Endpoint Disabled&quot; interrupt is received</span>
<span class="gi">+ *		Flush FIFO</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_incomplete_isoc_in_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	gintsts_data_t 		gintsts;</span>
<span class="gi">+	</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_EN_ISOC	</span>
<span class="gi">+	dwc_otg_dev_if_t 	*dev_if;</span>
<span class="gi">+	deptsiz_data_t 		deptsiz = { .d32 = 0};</span>
<span class="gi">+	depctl_data_t		depctl = { .d32 = 0};</span>
<span class="gi">+	dsts_data_t		dsts = { .d32 = 0};</span>
<span class="gi">+	dwc_ep_t		*dwc_ep;</span>
<span class="gi">+	int i;</span>
<span class="gi">+</span>
<span class="gi">+	dev_if = GET_CORE_IF(pcd)-&gt;dev_if;</span>
<span class="gi">+	</span>
<span class="gi">+	for(i = 1; i &lt;= dev_if-&gt;num_in_eps; ++i) {</span>
<span class="gi">+		dwc_ep = &amp;pcd-&gt;in_ep[i].dwc_ep;</span>
<span class="gi">+		if(dwc_ep-&gt;active &amp;&amp; </span>
<span class="gi">+			dwc_ep-&gt;type == USB_ENDPOINT_XFER_ISOC)</span>
<span class="gi">+		{</span>
<span class="gi">+			deptsiz.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[i]-&gt;dieptsiz);</span>
<span class="gi">+			depctl.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[i]-&gt;diepctl);</span>
<span class="gi">+</span>
<span class="gi">+			if(depctl.b.epdis &amp;&amp; deptsiz.d32) {</span>
<span class="gi">+				set_current_pkt_info(GET_CORE_IF(pcd), dwc_ep);</span>
<span class="gi">+				if(dwc_ep-&gt;cur_pkt &gt;= dwc_ep-&gt;pkt_cnt) {</span>
<span class="gi">+					dwc_ep-&gt;cur_pkt = 0;</span>
<span class="gi">+					dwc_ep-&gt;proc_buf_num = (dwc_ep-&gt;proc_buf_num ^ 1) &amp; 0x1;</span>
<span class="gi">+				</span>
<span class="gi">+					if(dwc_ep-&gt;proc_buf_num) {</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_addr = dwc_ep-&gt;xfer_buff1;</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_dma_addr = dwc_ep-&gt;dma_addr1;</span>
<span class="gi">+					} else {</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_addr = dwc_ep-&gt;xfer_buff0;</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_dma_addr = dwc_ep-&gt;dma_addr0;</span>
<span class="gi">+					}</span>
<span class="gi">+					</span>
<span class="gi">+				}</span>
<span class="gi">+				</span>
<span class="gi">+				dsts.d32 = dwc_read_reg32(&amp;GET_CORE_IF(pcd)-&gt;dev_if-&gt;dev_global_regs-&gt;dsts);</span>
<span class="gi">+				dwc_ep-&gt;next_frame = dsts.b.soffn;</span>
<span class="gi">+				</span>
<span class="gi">+				dwc_otg_iso_ep_start_frm_transfer(GET_CORE_IF(pcd), dwc_ep);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+#else</span>
<span class="gi">+        gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+        DWC_PRINT(&quot;INTERRUPT Handler not implemented for %s\n&quot;,</span>
<span class="gi">+                          &quot;IN ISOC Incomplete&quot;);</span>
<span class="gi">+</span>
<span class="gi">+        intr_mask.b.incomplisoin = 1;</span>
<span class="gi">+        dwc_modify_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintmsk,</span>
<span class="gi">+                                intr_mask.d32, 0);</span>
<span class="gi">+#endif //DWC_EN_ISOC</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.incomplisoin = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintsts, </span>
<span class="gi">+				gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Incomplete ISO OUT Transfer Interrupt.  </span>
<span class="gi">+ *</span>
<span class="gi">+ * This interrupt indicates that the core has dropped an ISO OUT</span>
<span class="gi">+ * packet.	The following conditions can be the cause:</span>
<span class="gi">+ * - FIFO Full, the entire packet would not fit in the FIFO.</span>
<span class="gi">+ * - CRC Error</span>
<span class="gi">+ * - Corrupted Token</span>
<span class="gi">+ * The follow actions will be taken:</span>
<span class="gi">+ *	-#	Determine the EP</span>
<span class="gi">+ *	-#	Set incomplete flag in dwc_ep structure</span>
<span class="gi">+ *	-#	Read any data from the FIFO</span>
<span class="gi">+ *	-#	Disable EP.	 when &quot;Endpoint Disabled&quot; interrupt is received</span>
<span class="gi">+ *		re-enable EP.</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_incomplete_isoc_out_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	/* @todo implement ISR */</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_EN_ISOC	</span>
<span class="gi">+	dwc_otg_dev_if_t 	*dev_if;</span>
<span class="gi">+	deptsiz_data_t 		deptsiz = { .d32 = 0};</span>
<span class="gi">+	depctl_data_t		depctl = { .d32 = 0};</span>
<span class="gi">+	dsts_data_t		dsts = { .d32 = 0};</span>
<span class="gi">+	dwc_ep_t		*dwc_ep;</span>
<span class="gi">+	int i;</span>
<span class="gi">+</span>
<span class="gi">+	dev_if = GET_CORE_IF(pcd)-&gt;dev_if;</span>
<span class="gi">+	</span>
<span class="gi">+	for(i = 1; i &lt;= dev_if-&gt;num_out_eps; ++i) {</span>
<span class="gi">+		dwc_ep = &amp;pcd-&gt;in_ep[i].dwc_ep;</span>
<span class="gi">+		if(pcd-&gt;out_ep[i].dwc_ep.active &amp;&amp; </span>
<span class="gi">+			pcd-&gt;out_ep[i].dwc_ep.type == USB_ENDPOINT_XFER_ISOC)</span>
<span class="gi">+		{</span>
<span class="gi">+			deptsiz.d32 = dwc_read_reg32(&amp;dev_if-&gt;out_ep_regs[i]-&gt;doeptsiz);</span>
<span class="gi">+			depctl.d32 = dwc_read_reg32(&amp;dev_if-&gt;out_ep_regs[i]-&gt;doepctl);</span>
<span class="gi">+</span>
<span class="gi">+			if(depctl.b.epdis &amp;&amp; deptsiz.d32) {</span>
<span class="gi">+				set_current_pkt_info(GET_CORE_IF(pcd), &amp;pcd-&gt;out_ep[i].dwc_ep);</span>
<span class="gi">+				if(dwc_ep-&gt;cur_pkt &gt;= dwc_ep-&gt;pkt_cnt) {</span>
<span class="gi">+					dwc_ep-&gt;cur_pkt = 0;</span>
<span class="gi">+					dwc_ep-&gt;proc_buf_num = (dwc_ep-&gt;proc_buf_num ^ 1) &amp; 0x1;</span>
<span class="gi">+				</span>
<span class="gi">+					if(dwc_ep-&gt;proc_buf_num) {</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_addr = dwc_ep-&gt;xfer_buff1;</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_dma_addr = dwc_ep-&gt;dma_addr1;</span>
<span class="gi">+					} else {</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_addr = dwc_ep-&gt;xfer_buff0;</span>
<span class="gi">+						dwc_ep-&gt;cur_pkt_dma_addr = dwc_ep-&gt;dma_addr0;</span>
<span class="gi">+					}</span>
<span class="gi">+					</span>
<span class="gi">+				}</span>
<span class="gi">+				</span>
<span class="gi">+				dsts.d32 = dwc_read_reg32(&amp;GET_CORE_IF(pcd)-&gt;dev_if-&gt;dev_global_regs-&gt;dsts);</span>
<span class="gi">+				dwc_ep-&gt;next_frame = dsts.b.soffn;</span>
<span class="gi">+</span>
<span class="gi">+				dwc_otg_iso_ep_start_frm_transfer(GET_CORE_IF(pcd), dwc_ep);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+#else</span>
<span class="gi">+        /** @todo implement ISR */</span>
<span class="gi">+        gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+</span>
<span class="gi">+        DWC_PRINT(&quot;INTERRUPT Handler not implemented for %s\n&quot;,</span>
<span class="gi">+                          &quot;OUT ISOC Incomplete&quot;);</span>
<span class="gi">+</span>
<span class="gi">+        intr_mask.b.incomplisoout = 1;</span>
<span class="gi">+        dwc_modify_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintmsk,</span>
<span class="gi">+                                intr_mask.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+#endif // DWC_EN_ISOC</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.incomplisoout = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintsts, </span>
<span class="gi">+				gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This function handles the Global IN NAK Effective interrupt.</span>
<span class="gi">+ *	</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_in_nak_effective(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_dev_if_t *dev_if = GET_CORE_IF(pcd)-&gt;dev_if;</span>
<span class="gi">+	depctl_data_t diepctl = { .d32 = 0};</span>
<span class="gi">+	depctl_data_t diepctl_rd = { .d32 = 0};</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+	int i;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_DEBUGPL(DBG_PCD, &quot;Global IN NAK Effective\n&quot;);</span>
<span class="gi">+	</span>
<span class="gi">+	/* Disable all active IN EPs */</span>
<span class="gi">+	diepctl.b.epdis = 1;</span>
<span class="gi">+	diepctl.b.snak = 1;</span>
<span class="gi">+	</span>
<span class="gi">+	for (i=0; i &lt;= dev_if-&gt;num_in_eps; i++) </span>
<span class="gi">+	{</span>
<span class="gi">+		diepctl_rd.d32 = dwc_read_reg32(&amp;dev_if-&gt;in_ep_regs[i]-&gt;diepctl);</span>
<span class="gi">+		if (diepctl_rd.b.epena) {</span>
<span class="gi">+			dwc_write_reg32(&amp;dev_if-&gt;in_ep_regs[i]-&gt;diepctl, </span>
<span class="gi">+						diepctl.d32);	</span>
<span class="gi">+		}</span>
<span class="gi">+	}</span>
<span class="gi">+	/* Disable the Global IN NAK Effective Interrupt */</span>
<span class="gi">+	intr_mask.b.ginnakeff = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintmsk, </span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.ginnakeff = 1;</span>
<span class="gi">+	dwc_write_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintsts, </span>
<span class="gi">+						 gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * OUT NAK Effective.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_out_nak_effective(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	gintmsk_data_t intr_mask = { .d32 = 0};</span>
<span class="gi">+	gintsts_data_t gintsts;</span>
<span class="gi">+</span>
<span class="gi">+	DWC_PRINT(&quot;INTERRUPT Handler not implemented for %s\n&quot;, </span>
<span class="gi">+			  &quot;Global IN NAK Effective\n&quot;);</span>
<span class="gi">+	/* Disable the Global IN NAK Effective Interrupt */</span>
<span class="gi">+	intr_mask.b.goutnakeff = 1;</span>
<span class="gi">+	dwc_modify_reg32(&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintmsk, </span>
<span class="gi">+					  intr_mask.d32, 0);</span>
<span class="gi">+</span>
<span class="gi">+	/* Clear interrupt */</span>
<span class="gi">+	gintsts.d32 = 0;</span>
<span class="gi">+	gintsts.b.goutnakeff = 1;</span>
<span class="gi">+	dwc_write_reg32 (&amp;GET_CORE_IF(pcd)-&gt;core_global_regs-&gt;gintsts, </span>
<span class="gi">+						 gintsts.d32);</span>
<span class="gi">+</span>
<span class="gi">+	return 1;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * PCD interrupt handler.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The PCD handles the device interrupts.  Many conditions can cause a</span>
<span class="gi">+ * device interrupt. When an interrupt occurs, the device interrupt</span>
<span class="gi">+ * service routine determines the cause of the interrupt and</span>
<span class="gi">+ * dispatches handling to the appropriate function. These interrupt</span>
<span class="gi">+ * handling functions are described below.</span>
<span class="gi">+ *</span>
<span class="gi">+ * All interrupt registers are processed from LSB to MSB.</span>
<span class="gi">+ * </span>
<span class="gi">+ */</span>
<span class="gi">+int32_t dwc_otg_pcd_handle_intr(dwc_otg_pcd_t *pcd)</span>
<span class="gi">+{</span>
<span class="gi">+	dwc_otg_core_if_t *core_if = GET_CORE_IF(pcd);</span>
<span class="gi">+#ifdef VERBOSE</span>
<span class="gi">+	dwc_otg_core_global_regs_t *global_regs = </span>
<span class="gi">+			core_if-&gt;core_global_regs;</span>
<span class="gi">+#endif</span>
<span class="gi">+	gintsts_data_t gintr_status;</span>
<span class="gi">+	int32_t retval = 0;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#ifdef VERBOSE</span>
<span class="gi">+	DWC_DEBUGPL(DBG_ANY, &quot;%s() gintsts=%08x	 gintmsk=%08x\n&quot;, </span>
<span class="gi">+				__func__,</span>
<span class="gi">+				dwc_read_reg32(&amp;global_regs-&gt;gintsts),</span>
<span class="gi">+				dwc_read_reg32(&amp;global_regs-&gt;gintmsk));</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gi">+	if (dwc_otg_is_device_mode(core_if)) {</span>
<span class="gi">+		SPIN_LOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+#ifdef VERBOSE</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;%s() gintsts=%08x  gintmsk=%08x\n&quot;, </span>
<span class="gi">+						__func__,</span>
<span class="gi">+						dwc_read_reg32(&amp;global_regs-&gt;gintsts),</span>
<span class="gi">+						dwc_read_reg32(&amp;global_regs-&gt;gintmsk));				</span>
<span class="gi">+#endif</span>
<span class="gi">+						</span>
<span class="gi">+		gintr_status.d32 = dwc_otg_read_core_intr(core_if);</span>
<span class="gi">+		</span>
<span class="gi">+/*</span>
<span class="gi">+		if (!gintr_status.d32) {</span>
<span class="gi">+			SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+			return 0;</span>
<span class="gi">+		}</span>
<span class="gi">+*/</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;%s: gintsts&amp;gintmsk=%08x\n&quot;,</span>
<span class="gi">+					__func__, gintr_status.d32);</span>
<span class="gi">+	</span>
<span class="gi">+		if (gintr_status.b.sofintr) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_sof_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.rxstsqlvl) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_rx_status_q_level_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.nptxfempty) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_np_tx_fifo_empty_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.ginnakeff) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_in_nak_effective(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.goutnakeff) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_out_nak_effective(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.i2cintr) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_i2c_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.erlysuspend) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_early_suspend_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.usbreset) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_usb_reset_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.enumdone) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_enum_done_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.isooutdrop) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_isoc_out_packet_dropped_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.eopframe) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_end_periodic_frame_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.epmismatch) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_ep_mismatch_intr(core_if);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.inepint) {</span>
<span class="gi">+			if(!core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+				retval |= dwc_otg_pcd_handle_in_ep_intr(pcd);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.outepintr) {</span>
<span class="gi">+			if(!core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+				retval |= dwc_otg_pcd_handle_out_ep_intr(pcd);</span>
<span class="gi">+			}</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.incomplisoin) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_incomplete_isoc_in_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		if (gintr_status.b.incomplisoout) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_incomplete_isoc_out_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+		</span>
<span class="gi">+		/* In MPI mode De vice Endpoints intterrupts are asserted </span>
<span class="gi">+		 * without setting outepintr and inepint bits set, so these</span>
<span class="gi">+		 * Interrupt handlers are called without checking these bit-fields</span>
<span class="gi">+		 */</span>
<span class="gi">+		if(core_if-&gt;multiproc_int_enable) {</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_in_ep_intr(pcd);</span>
<span class="gi">+			retval |= dwc_otg_pcd_handle_out_ep_intr(pcd);</span>
<span class="gi">+		}</span>
<span class="gi">+#ifdef VERBOSE</span>
<span class="gi">+		DWC_DEBUGPL(DBG_PCDV, &quot;%s() gintsts=%0x\n&quot;, __func__,</span>
<span class="gi">+						dwc_read_reg32(&amp;global_regs-&gt;gintsts));</span>
<span class="gi">+#endif</span>
<span class="gi">+		SPIN_UNLOCK(&amp;pcd-&gt;lock);</span>
<span class="gi">+	}</span>
<span class="gi">+	</span>
<span class="gi">+	S3C2410X_CLEAR_EINTPEND();</span>
<span class="gi">+	</span>
<span class="gi">+	return retval;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+#endif /* DWC_HOST_ONLY */</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_plat.h</span>
<span class="gu">@@ -0,0 +1,268 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/platform/dwc_otg_plat.h $</span>
<span class="gi">+ * $Revision: #23 $</span>
<span class="gi">+ * $Date: 2008/07/15 $</span>
<span class="gi">+ * $Change: 1064915 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+</span>
<span class="gi">+#if !defined(__DWC_OTG_PLAT_H__)</span>
<span class="gi">+#define __DWC_OTG_PLAT_H__</span>
<span class="gi">+</span>
<span class="gi">+#include &lt;linux/types.h&gt;</span>
<span class="gi">+#include &lt;linux/slab.h&gt;</span>
<span class="gi">+#include &lt;linux/list.h&gt;</span>
<span class="gi">+#include &lt;linux/delay.h&gt;</span>
<span class="gi">+#include &lt;asm/io.h&gt;</span>
<span class="gi">+</span>
<span class="gi">+#define cns3xxx_ioremap(addr, size)       ioremap(addr, size)</span>
<span class="gi">+#define cns3xxx_iounmap(addr)            iounmap(addr)</span>
<span class="gi">+/* Changed all readl and writel to __raw_readl, __raw_writel */</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @file </span>
<span class="gi">+ *</span>
<span class="gi">+ * This file contains the Platform Specific constants, interfaces</span>
<span class="gi">+ * (functions and macros) for Linux.</span>
<span class="gi">+ *</span>
<span class="gi">+ */</span>
<span class="gi">+//#if !defined(__LINUX_ARM_ARCH__)</span>
<span class="gi">+//#error &quot;The contents of this file is Linux specific!!!&quot;</span>
<span class="gi">+//#endif</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Reads the content of a register.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param reg address of register to read.</span>
<span class="gi">+ * @return contents of the register.</span>
<span class="gi">+ *</span>
<span class="gi">+</span>
<span class="gi">+ * Usage:&lt;br&gt;</span>
<span class="gi">+ * &lt;code&gt;uint32_t dev_ctl = dwc_read_reg32(&amp;dev_regs-&gt;dctl);&lt;/code&gt; </span>
<span class="gi">+ */</span>
<span class="gi">+static __inline__ uint32_t dwc_read_reg32( volatile uint32_t *reg) </span>
<span class="gi">+{</span>
<span class="gi">+		  return __raw_readl(reg);</span>
<span class="gi">+     //   return readl(reg);</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * Writes a register with a 32 bit value.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param reg address of register to read.</span>
<span class="gi">+ * @param value to write to _reg.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Usage:&lt;br&gt;</span>
<span class="gi">+ * &lt;code&gt;dwc_write_reg32(&amp;dev_regs-&gt;dctl, 0); &lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+static __inline__ void dwc_write_reg32( volatile uint32_t *reg, const uint32_t value) </span>
<span class="gi">+{</span>
<span class="gi">+     //   writel( value, reg );</span>
<span class="gi">+		  __raw_writel(value, reg);</span>
<span class="gi">+</span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+/**  </span>
<span class="gi">+ * This function modifies bit values in a register.  Using the</span>
<span class="gi">+ * algorithm: (reg_contents &amp; ~clear_mask) | set_mask.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param reg address of register to read.</span>
<span class="gi">+ * @param clear_mask bit mask to be cleared.</span>
<span class="gi">+ * @param set_mask bit mask to be set.</span>
<span class="gi">+ *</span>
<span class="gi">+ * Usage:&lt;br&gt; </span>
<span class="gi">+ * &lt;code&gt; // Clear the SOF Interrupt Mask bit and &lt;br&gt;</span>
<span class="gi">+ * // set the OTG Interrupt mask bit, leaving all others as they were.</span>
<span class="gi">+ *    dwc_modify_reg32(&amp;dev_regs-&gt;gintmsk, DWC_SOF_INT, DWC_OTG_INT);&lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+static __inline__</span>
<span class="gi">+ void dwc_modify_reg32( volatile uint32_t *reg, const uint32_t clear_mask, const uint32_t set_mask) </span>
<span class="gi">+{</span>
<span class="gi">+      //  writel( (readl(reg) &amp; ~clear_mask) | set_mask, reg );  </span>
<span class="gi">+        __raw_writel( (__raw_readl(reg) &amp; ~clear_mask) | set_mask, reg );  </span>
<span class="gi">+};</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Wrapper for the OS micro-second delay function.</span>
<span class="gi">+ * @param[in] usecs Microseconds of delay</span>
<span class="gi">+ */</span>
<span class="gi">+static __inline__ void UDELAY( const uint32_t usecs ) </span>
<span class="gi">+{</span>
<span class="gi">+        udelay( usecs );</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Wrapper for the OS milli-second delay function.</span>
<span class="gi">+ * @param[in] msecs milliseconds of delay</span>
<span class="gi">+ */</span>
<span class="gi">+static __inline__ void MDELAY( const uint32_t msecs ) </span>
<span class="gi">+{</span>
<span class="gi">+        mdelay( msecs );</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Wrapper for the Linux spin_lock.  On the ARM (Integrator)</span>
<span class="gi">+ * spin_lock() is a nop.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param lock Pointer to the spinlock.</span>
<span class="gi">+ */</span>
<span class="gi">+static __inline__ void SPIN_LOCK( spinlock_t *lock )  </span>
<span class="gi">+{</span>
<span class="gi">+        spin_lock(lock);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Wrapper for the Linux spin_unlock.  On the ARM (Integrator)</span>
<span class="gi">+ * spin_lock() is a nop.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param lock Pointer to the spinlock.</span>
<span class="gi">+ */</span>
<span class="gi">+static __inline__ void SPIN_UNLOCK( spinlock_t *lock )     </span>
<span class="gi">+{ </span>
<span class="gi">+        spin_unlock(lock);</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Wrapper (macro) for the Linux spin_lock_irqsave.  On the ARM</span>
<span class="gi">+ * (Integrator) spin_lock() is a nop.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param l Pointer to the spinlock.</span>
<span class="gi">+ * @param f unsigned long for irq flags storage.</span>
<span class="gi">+ */</span>
<span class="gi">+#define SPIN_LOCK_IRQSAVE( l, f )  spin_lock_irqsave(l,f);</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Wrapper (macro) for the Linux spin_unlock_irqrestore.  On the ARM</span>
<span class="gi">+ * (Integrator) spin_lock() is a nop.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param l Pointer to the spinlock.</span>
<span class="gi">+ * @param f unsigned long for irq flags storage.</span>
<span class="gi">+ */</span>
<span class="gi">+#define SPIN_UNLOCK_IRQRESTORE( l,f ) spin_unlock_irqrestore(l,f);</span>
<span class="gi">+</span>
<span class="gi">+/*</span>
<span class="gi">+ * Debugging support vanishes in non-debug builds.  </span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * The Debug Level bit-mask variable.</span>
<span class="gi">+ */</span>
<span class="gi">+extern uint32_t g_dbg_lvl;</span>
<span class="gi">+/**</span>
<span class="gi">+ * Set the Debug Level variable.</span>
<span class="gi">+ */</span>
<span class="gi">+static inline uint32_t SET_DEBUG_LEVEL( const uint32_t new )</span>
<span class="gi">+{</span>
<span class="gi">+        uint32_t old = g_dbg_lvl;</span>
<span class="gi">+        g_dbg_lvl = new;</span>
<span class="gi">+        return old;</span>
<span class="gi">+}</span>
<span class="gi">+</span>
<span class="gi">+/** When debug level has the DBG_CIL bit set, display CIL Debug messages. */</span>
<span class="gi">+#define DBG_CIL		(0x2)</span>
<span class="gi">+/** When debug level has the DBG_CILV bit set, display CIL Verbose debug</span>
<span class="gi">+ * messages */</span>
<span class="gi">+#define DBG_CILV	(0x20)</span>
<span class="gi">+/**  When debug level has the DBG_PCD bit set, display PCD (Device) debug</span>
<span class="gi">+ *  messages */</span>
<span class="gi">+#define DBG_PCD		(0x4)	</span>
<span class="gi">+/** When debug level has the DBG_PCDV set, display PCD (Device) Verbose debug</span>
<span class="gi">+ * messages */</span>
<span class="gi">+#define DBG_PCDV	(0x40)	</span>
<span class="gi">+/** When debug level has the DBG_HCD bit set, display Host debug messages */</span>
<span class="gi">+#define DBG_HCD		(0x8)	</span>
<span class="gi">+/** When debug level has the DBG_HCDV bit set, display Verbose Host debug</span>
<span class="gi">+ * messages */</span>
<span class="gi">+#define DBG_HCDV	(0x80)</span>
<span class="gi">+/** When debug level has the DBG_HCD_URB bit set, display enqueued URBs in host</span>
<span class="gi">+ *  mode. */</span>
<span class="gi">+#define DBG_HCD_URB	(0x800)</span>
<span class="gi">+</span>
<span class="gi">+/** When debug level has any bit set, display debug messages */</span>
<span class="gi">+#define DBG_ANY		(0xFF)</span>
<span class="gi">+</span>
<span class="gi">+/** All debug messages off */</span>
<span class="gi">+#define DBG_OFF		0</span>
<span class="gi">+</span>
<span class="gi">+/** Prefix string for DWC_DEBUG print macros. */</span>
<span class="gi">+#define USB_DWC &quot;DWC_otg: &quot;</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * Print a debug message when the Global debug level variable contains</span>
<span class="gi">+ * the bit defined in &lt;code&gt;lvl&lt;/code&gt;.</span>
<span class="gi">+ *</span>
<span class="gi">+ * @param[in] lvl - Debug level, use one of the DBG_ constants above.</span>
<span class="gi">+ * @param[in] x - like printf</span>
<span class="gi">+ *</span>
<span class="gi">+ *    Example:&lt;p&gt;</span>
<span class="gi">+ * &lt;code&gt;</span>
<span class="gi">+ *      DWC_DEBUGPL( DBG_ANY, &quot;%s(%p)\n&quot;, __func__, _reg_base_addr);</span>
<span class="gi">+ * &lt;/code&gt;</span>
<span class="gi">+ * &lt;br&gt;</span>
<span class="gi">+ * results in:&lt;br&gt; </span>
<span class="gi">+ * &lt;code&gt;</span>
<span class="gi">+ * usb-DWC_otg: dwc_otg_cil_init(ca867000)</span>
<span class="gi">+ * &lt;/code&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+#ifdef DEBUG</span>
<span class="gi">+</span>
<span class="gi">+# define DWC_DEBUGPL(lvl, x...) do{ if ((lvl)&amp;g_dbg_lvl)printk( KERN_DEBUG USB_DWC x ); }while(0)</span>
<span class="gi">+# define DWC_DEBUGP(x...)	DWC_DEBUGPL(DBG_ANY, x )</span>
<span class="gi">+</span>
<span class="gi">+# define CHK_DEBUG_LEVEL(level) ((level) &amp; g_dbg_lvl)</span>
<span class="gi">+</span>
<span class="gi">+#else</span>
<span class="gi">+</span>
<span class="gi">+# define DWC_DEBUGPL(lvl, x...) do{}while(0)</span>
<span class="gi">+# define DWC_DEBUGP(x...)</span>
<span class="gi">+</span>
<span class="gi">+# define CHK_DEBUG_LEVEL(level) (0)</span>
<span class="gi">+</span>
<span class="gi">+#endif /*DEBUG*/</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Print an Error message.</span>
<span class="gi">+ */</span>
<span class="gi">+#define DWC_ERROR(x...) printk( KERN_ERR USB_DWC x )</span>
<span class="gi">+/**</span>
<span class="gi">+ * Print a Warning message.</span>
<span class="gi">+ */</span>
<span class="gi">+#define DWC_WARN(x...) printk( KERN_WARNING USB_DWC x )</span>
<span class="gi">+/**</span>
<span class="gi">+ * Print a notice (normal but significant message).</span>
<span class="gi">+ */</span>
<span class="gi">+#define DWC_NOTICE(x...) printk( KERN_NOTICE USB_DWC x )</span>
<span class="gi">+/**</span>
<span class="gi">+ *  Basic message printing.</span>
<span class="gi">+ */</span>
<span class="gi">+#define DWC_PRINT(x...) printk( KERN_INFO USB_DWC x )</span>
<span class="gi">+</span>
<span class="gi">+#endif</span>
<span class="gi">+</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/dwc_otg_regs.h</span>
<span class="gu">@@ -0,0 +1,2075 @@</span>
<span class="gi">+/* ==========================================================================</span>
<span class="gi">+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_regs.h $</span>
<span class="gi">+ * $Revision: #72 $</span>
<span class="gi">+ * $Date: 2008/09/19 $</span>
<span class="gi">+ * $Change: 1099526 $</span>
<span class="gi">+ *</span>
<span class="gi">+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,</span>
<span class="gi">+ * &quot;Software&quot;) is an Unsupported proprietary work of Synopsys, Inc. unless</span>
<span class="gi">+ * otherwise expressly agreed to in writing between Synopsys and you.</span>
<span class="gi">+ * </span>
<span class="gi">+ * The Software IS NOT an item of Licensed Software or Licensed Product under</span>
<span class="gi">+ * any End User Software License Agreement or Agreement for Licensed Product</span>
<span class="gi">+ * with Synopsys or any supplement thereto. You are permitted to use and</span>
<span class="gi">+ * redistribute this Software in source and binary forms, with or without</span>
<span class="gi">+ * modification, provided that redistributions of source code must retain this</span>
<span class="gi">+ * notice. You may not view, use, disclose, copy or distribute this file or</span>
<span class="gi">+ * any information contained herein except pursuant to this license grant from</span>
<span class="gi">+ * Synopsys. If you do not agree with this notice, including the disclaimer</span>
<span class="gi">+ * below, then you are not authorized to use the Software.</span>
<span class="gi">+ * </span>
<span class="gi">+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN &quot;AS IS&quot; BASIS</span>
<span class="gi">+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<span class="gi">+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<span class="gi">+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,</span>
<span class="gi">+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES</span>
<span class="gi">+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR</span>
<span class="gi">+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<span class="gi">+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<span class="gi">+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<span class="gi">+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH</span>
<span class="gi">+ * DAMAGE.</span>
<span class="gi">+ * ========================================================================== */</span>
<span class="gi">+</span>
<span class="gi">+#ifndef __DWC_OTG_REGS_H__</span>
<span class="gi">+#define __DWC_OTG_REGS_H__</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * @file</span>
<span class="gi">+ *</span>
<span class="gi">+ * This file contains the data structures for accessing the DWC_otg core registers.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The application interfaces with the HS OTG core by reading from and</span>
<span class="gi">+ * writing to the Control and Status Register (CSR) space through the</span>
<span class="gi">+ * AHB Slave interface. These registers are 32 bits wide, and the</span>
<span class="gi">+ * addresses are 32-bit-block aligned.</span>
<span class="gi">+ * CSRs are classified as follows:</span>
<span class="gi">+ * - Core Global Registers</span>
<span class="gi">+ * - Device Mode Registers</span>
<span class="gi">+ * - Device Global Registers</span>
<span class="gi">+ * - Device Endpoint Specific Registers</span>
<span class="gi">+ * - Host Mode Registers</span>
<span class="gi">+ * - Host Global Registers</span>
<span class="gi">+ * - Host Port CSRs</span>
<span class="gi">+ * - Host Channel Specific Registers</span>
<span class="gi">+ *</span>
<span class="gi">+ * Only the Core Global registers can be accessed in both Device and</span>
<span class="gi">+ * Host modes. When the HS OTG core is operating in one mode, either</span>
<span class="gi">+ * Device or Host, the application must not access registers from the</span>
<span class="gi">+ * other mode. When the core switches from one mode to another, the</span>
<span class="gi">+ * registers in the new mode of operation must be reprogrammed as they</span>
<span class="gi">+ * would be after a power-on reset.</span>
<span class="gi">+ */</span>
<span class="gi">+</span>
<span class="gi">+/** Maximum number of Periodic FIFOs */</span>
<span class="gi">+#define MAX_PERIO_FIFOS 15</span>
<span class="gi">+/** Maximum number of Transmit FIFOs */</span>
<span class="gi">+#define MAX_TX_FIFOS 15</span>
<span class="gi">+</span>
<span class="gi">+/** Maximum number of Endpoints/HostChannels */</span>
<span class="gi">+#define MAX_EPS_CHANNELS 16</span>
<span class="gi">+</span>
<span class="gi">+/****************************************************************************/</span>
<span class="gi">+/** DWC_otg Core registers .  </span>
<span class="gi">+ * The dwc_otg_core_global_regs structure defines the size</span>
<span class="gi">+ * and relative field offsets for the Core Global registers.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_core_global_regs </span>
<span class="gi">+{</span>
<span class="gi">+	/** OTG Control and Status Register.  &lt;i&gt;Offset: 000h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gotgctl; </span>
<span class="gi">+	/** OTG Interrupt Register.	 &lt;i&gt;Offset: 004h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gotgint; </span>
<span class="gi">+	/**Core AHB Configuration Register.	 &lt;i&gt;Offset: 008h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gahbcfg; </span>
<span class="gi">+</span>
<span class="gi">+#define DWC_GLBINTRMASK		0x0001</span>
<span class="gi">+#define DWC_DMAENABLE		0x0020</span>
<span class="gi">+#define DWC_NPTXEMPTYLVL_EMPTY	0x0080</span>
<span class="gi">+#define DWC_NPTXEMPTYLVL_HALFEMPTY	0x0000</span>
<span class="gi">+#define DWC_PTXEMPTYLVL_EMPTY	0x0100</span>
<span class="gi">+#define DWC_PTXEMPTYLVL_HALFEMPTY	0x0000</span>
<span class="gi">+</span>
<span class="gi">+	/**Core USB Configuration Register.	 &lt;i&gt;Offset: 00Ch&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gusbcfg; </span>
<span class="gi">+	/**Core Reset Register.	 &lt;i&gt;Offset: 010h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t grstctl; </span>
<span class="gi">+	/**Core Interrupt Register.	 &lt;i&gt;Offset: 014h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gintsts; </span>
<span class="gi">+	/**Core Interrupt Mask Register.  &lt;i&gt;Offset: 018h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gintmsk; </span>
<span class="gi">+	/**Receive Status Queue Read Register (Read Only).	&lt;i&gt;Offset: 01Ch&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t grxstsr; </span>
<span class="gi">+	/**Receive Status Queue Read &amp; POP Register (Read Only).  &lt;i&gt;Offset: 020h&lt;/i&gt;*/</span>
<span class="gi">+	volatile uint32_t grxstsp; </span>
<span class="gi">+	/**Receive FIFO Size Register.	&lt;i&gt;Offset: 024h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t grxfsiz; </span>
<span class="gi">+	/**Non Periodic Transmit FIFO Size Register.  &lt;i&gt;Offset: 028h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gnptxfsiz; </span>
<span class="gi">+	/**Non Periodic Transmit FIFO/Queue Status Register (Read</span>
<span class="gi">+	 * Only). &lt;i&gt;Offset: 02Ch&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gnptxsts; </span>
<span class="gi">+	/**I2C Access Register.	 &lt;i&gt;Offset: 030h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gi2cctl; </span>
<span class="gi">+	/**PHY Vendor Control Register.	 &lt;i&gt;Offset: 034h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gpvndctl;</span>
<span class="gi">+	/**General Purpose Input/Output Register.  &lt;i&gt;Offset: 038h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t ggpio; </span>
<span class="gi">+	/**User ID Register.  &lt;i&gt;Offset: 03Ch&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t guid; </span>
<span class="gi">+	/**Synopsys ID Register (Read Only).  &lt;i&gt;Offset: 040h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t gsnpsid;</span>
<span class="gi">+	/**User HW Config1 Register (Read Only).  &lt;i&gt;Offset: 044h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t ghwcfg1; </span>
<span class="gi">+	/**User HW Config2 Register (Read Only).  &lt;i&gt;Offset: 048h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t ghwcfg2;</span>
<span class="gi">+#define DWC_SLAVE_ONLY_ARCH 0</span>
<span class="gi">+#define DWC_EXT_DMA_ARCH 1</span>
<span class="gi">+#define DWC_INT_DMA_ARCH 2</span>
<span class="gi">+</span>
<span class="gi">+#define DWC_MODE_HNP_SRP_CAPABLE	0</span>
<span class="gi">+#define DWC_MODE_SRP_ONLY_CAPABLE	1</span>
<span class="gi">+#define DWC_MODE_NO_HNP_SRP_CAPABLE		2</span>
<span class="gi">+#define DWC_MODE_SRP_CAPABLE_DEVICE		3</span>
<span class="gi">+#define DWC_MODE_NO_SRP_CAPABLE_DEVICE	4</span>
<span class="gi">+#define DWC_MODE_SRP_CAPABLE_HOST	5</span>
<span class="gi">+#define DWC_MODE_NO_SRP_CAPABLE_HOST	6</span>
<span class="gi">+</span>
<span class="gi">+	/**User HW Config3 Register (Read Only).  &lt;i&gt;Offset: 04Ch&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t ghwcfg3;</span>
<span class="gi">+	/**User HW Config4 Register (Read Only).  &lt;i&gt;Offset: 050h&lt;/i&gt;*/</span>
<span class="gi">+	volatile uint32_t ghwcfg4;</span>
<span class="gi">+	/** Reserved  &lt;i&gt;Offset: 054h-0FFh&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t reserved[43];</span>
<span class="gi">+	/** Host Periodic Transmit FIFO Size Register. &lt;i&gt;Offset: 100h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hptxfsiz;</span>
<span class="gi">+	/** Device Periodic Transmit FIFO#n Register if dedicated fifos are disabled, </span>
<span class="gi">+		otherwise Device Transmit FIFO#n Register. </span>
<span class="gi">+	 * &lt;i&gt;Offset: 104h + (FIFO_Number-1)*04h, 1 &lt;= FIFO Number &lt;= 15 (1&lt;=n&lt;=15).&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t dptxfsiz_dieptxf[15]; </span>
<span class="gi">+} dwc_otg_core_global_regs_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields of the Core OTG Control</span>
<span class="gi">+ * and Status Register (GOTGCTL).  Set the bits using the bit </span>
<span class="gi">+ * fields then write the &lt;i&gt;d32&lt;/i&gt; value to the register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union gotgctl_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned sesreqscs : 1;</span>
<span class="gi">+		unsigned sesreq : 1;</span>
<span class="gi">+		unsigned reserved2_7 : 6;</span>
<span class="gi">+		unsigned hstnegscs : 1;</span>
<span class="gi">+		unsigned hnpreq : 1;</span>
<span class="gi">+		unsigned hstsethnpen : 1;</span>
<span class="gi">+		unsigned devhnpen : 1;</span>
<span class="gi">+		unsigned reserved12_15 : 4;</span>
<span class="gi">+		unsigned conidsts : 1;</span>
<span class="gi">+		unsigned reserved17 : 1;</span>
<span class="gi">+		unsigned asesvld : 1;</span>
<span class="gi">+		unsigned bsesvld : 1;</span>
<span class="gi">+		unsigned currmod : 1;</span>
<span class="gi">+		unsigned reserved21_31 : 11;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} gotgctl_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields of the Core OTG Interrupt Register</span>
<span class="gi">+ * (GOTGINT).  Set/clear the bits using the bit fields then write the &lt;i&gt;d32&lt;/i&gt;</span>
<span class="gi">+ * value to the register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union gotgint_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Current Mode */</span>
<span class="gi">+		unsigned reserved0_1 : 2;</span>
<span class="gi">+</span>
<span class="gi">+		/** Session End Detected */</span>
<span class="gi">+		unsigned sesenddet : 1;</span>
<span class="gi">+		</span>
<span class="gi">+		unsigned reserved3_7 : 5;</span>
<span class="gi">+</span>
<span class="gi">+		/** Session Request Success Status Change */</span>
<span class="gi">+		unsigned sesreqsucstschng : 1;</span>
<span class="gi">+		/** Host Negotiation Success Status Change */</span>
<span class="gi">+		unsigned hstnegsucstschng : 1;</span>
<span class="gi">+</span>
<span class="gi">+		unsigned reserver10_16 : 7;</span>
<span class="gi">+</span>
<span class="gi">+		/** Host Negotiation Detected */</span>
<span class="gi">+		unsigned hstnegdet : 1;</span>
<span class="gi">+		/** A-Device Timeout Change */</span>
<span class="gi">+		unsigned adevtoutchng : 1;</span>
<span class="gi">+		/** Debounce Done */</span>
<span class="gi">+		unsigned debdone : 1;</span>
<span class="gi">+		</span>
<span class="gi">+		unsigned reserved31_20 : 12;</span>
<span class="gi">+</span>
<span class="gi">+	} b;</span>
<span class="gi">+} gotgint_data_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields of the Core AHB Configuration</span>
<span class="gi">+ * Register (GAHBCFG).	Set/clear the bits using the bit fields then</span>
<span class="gi">+ * write the &lt;i&gt;d32&lt;/i&gt; value to the register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union gahbcfg_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned glblintrmsk : 1;</span>
<span class="gi">+#define DWC_GAHBCFG_GLBINT_ENABLE		1</span>
<span class="gi">+</span>
<span class="gi">+		unsigned hburstlen : 4;</span>
<span class="gi">+#define DWC_GAHBCFG_INT_DMA_BURST_SINGLE	0</span>
<span class="gi">+#define DWC_GAHBCFG_INT_DMA_BURST_INCR		1</span>
<span class="gi">+#define DWC_GAHBCFG_INT_DMA_BURST_INCR4		3</span>
<span class="gi">+#define DWC_GAHBCFG_INT_DMA_BURST_INCR8		5</span>
<span class="gi">+#define DWC_GAHBCFG_INT_DMA_BURST_INCR16	7</span>
<span class="gi">+</span>
<span class="gi">+		unsigned dmaenable : 1;</span>
<span class="gi">+#define DWC_GAHBCFG_DMAENABLE			1</span>
<span class="gi">+		unsigned reserved : 1;</span>
<span class="gi">+		unsigned nptxfemplvl_txfemplvl : 1;</span>
<span class="gi">+		unsigned ptxfemplvl : 1;</span>
<span class="gi">+#define DWC_GAHBCFG_TXFEMPTYLVL_EMPTY		1</span>
<span class="gi">+#define DWC_GAHBCFG_TXFEMPTYLVL_HALFEMPTY	0</span>
<span class="gi">+		unsigned reserved9_31 : 23;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} gahbcfg_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields of the Core USB Configuration</span>
<span class="gi">+ * Register (GUSBCFG).	Set the bits using the bit fields then write</span>
<span class="gi">+ * the &lt;i&gt;d32&lt;/i&gt; value to the register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union gusbcfg_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned toutcal : 3;</span>
<span class="gi">+		unsigned phyif : 1;</span>
<span class="gi">+		unsigned ulpi_utmi_sel : 1;</span>
<span class="gi">+		unsigned fsintf : 1;</span>
<span class="gi">+		unsigned physel : 1;</span>
<span class="gi">+		unsigned ddrsel : 1;</span>
<span class="gi">+		unsigned srpcap : 1;</span>
<span class="gi">+		unsigned hnpcap : 1;</span>
<span class="gi">+		unsigned usbtrdtim : 4;</span>
<span class="gi">+		unsigned nptxfrwnden : 1;</span>
<span class="gi">+		unsigned phylpwrclksel : 1;</span>
<span class="gi">+		unsigned otgutmifssel : 1;</span>
<span class="gi">+		unsigned ulpi_fsls : 1;</span>
<span class="gi">+		unsigned ulpi_auto_res : 1;</span>
<span class="gi">+		unsigned ulpi_clk_sus_m : 1;</span>
<span class="gi">+		unsigned ulpi_ext_vbus_drv : 1;</span>
<span class="gi">+		unsigned ulpi_int_vbus_indicator : 1;</span>
<span class="gi">+		unsigned term_sel_dl_pulse : 1;</span>
<span class="gi">+		unsigned reserved23_27 : 5;</span>
<span class="gi">+		unsigned tx_end_delay : 1;</span>
<span class="gi">+		unsigned reserved29_31 : 3;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} gusbcfg_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields of the Core Reset Register</span>
<span class="gi">+ * (GRSTCTL).  Set/clear the bits using the bit fields then write the</span>
<span class="gi">+ * &lt;i&gt;d32&lt;/i&gt; value to the register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union grstctl_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Core Soft Reset (CSftRst) (Device and Host)</span>
<span class="gi">+		 *</span>
<span class="gi">+		 * The application can flush the control logic in the</span>
<span class="gi">+		 * entire core using this bit. This bit resets the</span>
<span class="gi">+		 * pipelines in the AHB Clock domain as well as the</span>
<span class="gi">+		 * PHY Clock domain.</span>
<span class="gi">+		 *</span>
<span class="gi">+		 * The state machines are reset to an IDLE state, the</span>
<span class="gi">+		 * control bits in the CSRs are cleared, all the</span>
<span class="gi">+		 * transmit FIFOs and the receive FIFO are flushed.</span>
<span class="gi">+		 *</span>
<span class="gi">+		 * The status mask bits that control the generation of</span>
<span class="gi">+		 * the interrupt, are cleared, to clear the</span>
<span class="gi">+		 * interrupt. The interrupt status bits are not</span>
<span class="gi">+		 * cleared, so the application can get the status of</span>
<span class="gi">+		 * any events that occurred in the core after it has</span>
<span class="gi">+		 * set this bit.</span>
<span class="gi">+		 *</span>
<span class="gi">+		 * Any transactions on the AHB are terminated as soon</span>
<span class="gi">+		 * as possible following the protocol. Any</span>
<span class="gi">+		 * transactions on the USB are terminated immediately.</span>
<span class="gi">+		 *</span>
<span class="gi">+		 * The configuration settings in the CSRs are</span>
<span class="gi">+		 * unchanged, so the software doesn&#39;t have to</span>
<span class="gi">+		 * reprogram these registers (Device</span>
<span class="gi">+		 * Configuration/Host Configuration/Core System</span>
<span class="gi">+		 * Configuration/Core PHY Configuration).</span>
<span class="gi">+		 *</span>
<span class="gi">+		 * The application can write to this bit, any time it</span>
<span class="gi">+		 * wants to reset the core. This is a self clearing</span>
<span class="gi">+		 * bit and the core clears this bit after all the</span>
<span class="gi">+		 * necessary logic is reset in the core, which may</span>
<span class="gi">+		 * take several clocks, depending on the current state</span>
<span class="gi">+		 * of the core.</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned csftrst : 1;</span>
<span class="gi">+		/** Hclk Soft Reset</span>
<span class="gi">+		 *</span>
<span class="gi">+		 * The application uses this bit to reset the control logic in</span>
<span class="gi">+		 * the AHB clock domain. Only AHB clock domain pipelines are</span>
<span class="gi">+		 * reset.</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned hsftrst : 1;</span>
<span class="gi">+		/** Host Frame Counter Reset (Host Only)&lt;br&gt;</span>
<span class="gi">+		 * </span>
<span class="gi">+		 * The application can reset the (micro)frame number</span>
<span class="gi">+		 * counter inside the core, using this bit. When the</span>
<span class="gi">+		 * (micro)frame counter is reset, the subsequent SOF</span>
<span class="gi">+		 * sent out by the core, will have a (micro)frame</span>
<span class="gi">+		 * number of 0.</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned hstfrm : 1;</span>
<span class="gi">+		/** In Token Sequence Learning Queue Flush</span>
<span class="gi">+		 * (INTknQFlsh) (Device Only)</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned intknqflsh : 1;</span>
<span class="gi">+		/** RxFIFO Flush (RxFFlsh) (Device and Host)</span>
<span class="gi">+		 *</span>
<span class="gi">+		 * The application can flush the entire Receive FIFO</span>
<span class="gi">+		 * using this bit.	&lt;p&gt;The application must first</span>
<span class="gi">+		 * ensure that the core is not in the middle of a</span>
<span class="gi">+		 * transaction.	 &lt;p&gt;The application should write into</span>
<span class="gi">+		 * this bit, only after making sure that neither the</span>
<span class="gi">+		 * DMA engine is reading from the RxFIFO nor the MAC</span>
<span class="gi">+		 * is writing the data in to the FIFO.	&lt;p&gt;The</span>
<span class="gi">+		 * application should wait until the bit is cleared</span>
<span class="gi">+		 * before performing any other operations. This bit</span>
<span class="gi">+		 * will takes 8 clocks (slowest of PHY or AHB clock)</span>
<span class="gi">+		 * to clear.</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned rxfflsh : 1;</span>
<span class="gi">+		/** TxFIFO Flush (TxFFlsh) (Device and Host).  </span>
<span class="gi">+		 *</span>
<span class="gi">+		 * This bit is used to selectively flush a single or</span>
<span class="gi">+		 * all transmit FIFOs.	The application must first</span>
<span class="gi">+		 * ensure that the core is not in the middle of a</span>
<span class="gi">+		 * transaction.	 &lt;p&gt;The application should write into</span>
<span class="gi">+		 * this bit, only after making sure that neither the</span>
<span class="gi">+		 * DMA engine is writing into the TxFIFO nor the MAC</span>
<span class="gi">+		 * is reading the data out of the FIFO.	 &lt;p&gt;The</span>
<span class="gi">+		 * application should wait until the core clears this</span>
<span class="gi">+		 * bit, before performing any operations. This bit</span>
<span class="gi">+		 * will takes 8 clocks (slowest of PHY or AHB clock)</span>
<span class="gi">+		 * to clear.</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned txfflsh : 1;</span>
<span class="gi">+		</span>
<span class="gi">+		/** TxFIFO Number (TxFNum) (Device and Host).</span>
<span class="gi">+		 * </span>
<span class="gi">+		 * This is the FIFO number which needs to be flushed,</span>
<span class="gi">+		 * using the TxFIFO Flush bit. This field should not</span>
<span class="gi">+		 * be changed until the TxFIFO Flush bit is cleared by</span>
<span class="gi">+		 * the core.</span>
<span class="gi">+		 *	 - 0x0 : Non Periodic TxFIFO Flush</span>
<span class="gi">+		 *	 - 0x1 : Periodic TxFIFO #1 Flush in device mode</span>
<span class="gi">+		 *	   or Periodic TxFIFO in host mode</span>
<span class="gi">+		 *	 - 0x2 : Periodic TxFIFO #2 Flush in device mode.</span>
<span class="gi">+		 *	 - ...</span>
<span class="gi">+		 *	 - 0xF : Periodic TxFIFO #15 Flush in device mode</span>
<span class="gi">+		 *	 - 0x10: Flush all the Transmit NonPeriodic and</span>
<span class="gi">+		 *	   Transmit Periodic FIFOs in the core</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned txfnum : 5;</span>
<span class="gi">+		/** Reserved */</span>
<span class="gi">+		unsigned reserved11_29 : 19;</span>
<span class="gi">+		/** DMA Request Signal.	 Indicated DMA request is in</span>
<span class="gi">+		 * probress.  Used for debug purpose. */</span>
<span class="gi">+		unsigned dmareq : 1;</span>
<span class="gi">+		/** AHB Master Idle.  Indicates the AHB Master State</span>
<span class="gi">+		 * Machine is in IDLE condition. */</span>
<span class="gi">+		unsigned ahbidle : 1;				 </span>
<span class="gi">+	} b;</span>
<span class="gi">+} grstctl_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields of the Core Interrupt Mask</span>
<span class="gi">+ * Register (GINTMSK).	Set/clear the bits using the bit fields then</span>
<span class="gi">+ * write the &lt;i&gt;d32&lt;/i&gt; value to the register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union gintmsk_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned reserved0 : 1;</span>
<span class="gi">+		unsigned modemismatch : 1;</span>
<span class="gi">+		unsigned otgintr : 1;</span>
<span class="gi">+		unsigned sofintr : 1;</span>
<span class="gi">+		unsigned rxstsqlvl : 1;</span>
<span class="gi">+		unsigned nptxfempty : 1;</span>
<span class="gi">+		unsigned ginnakeff : 1;</span>
<span class="gi">+		unsigned goutnakeff : 1;</span>
<span class="gi">+		unsigned reserved8 : 1;</span>
<span class="gi">+		unsigned i2cintr : 1;</span>
<span class="gi">+		unsigned erlysuspend : 1;</span>
<span class="gi">+		unsigned usbsuspend : 1;</span>
<span class="gi">+		unsigned usbreset : 1;</span>
<span class="gi">+		unsigned enumdone : 1;</span>
<span class="gi">+		unsigned isooutdrop : 1;</span>
<span class="gi">+		unsigned eopframe : 1;</span>
<span class="gi">+		unsigned reserved16 : 1;</span>
<span class="gi">+		unsigned epmismatch : 1;</span>
<span class="gi">+		unsigned inepintr : 1;</span>
<span class="gi">+		unsigned outepintr : 1;</span>
<span class="gi">+		unsigned incomplisoin : 1;</span>
<span class="gi">+		unsigned incomplisoout : 1;</span>
<span class="gi">+		unsigned reserved22_23 : 2;</span>
<span class="gi">+		unsigned portintr : 1;</span>
<span class="gi">+		unsigned hcintr : 1;</span>
<span class="gi">+		unsigned ptxfempty : 1;</span>
<span class="gi">+		unsigned reserved27 : 1;</span>
<span class="gi">+		unsigned conidstschng : 1;</span>
<span class="gi">+		unsigned disconnect : 1;</span>
<span class="gi">+		unsigned sessreqintr : 1;</span>
<span class="gi">+		unsigned wkupintr : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} gintmsk_data_t;</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields of the Core Interrupt Register</span>
<span class="gi">+ * (GINTSTS).  Set/clear the bits using the bit fields then write the</span>
<span class="gi">+ * &lt;i&gt;d32&lt;/i&gt; value to the register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union gintsts_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+#define DWC_SOF_INTR_MASK 0x0008</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+#define DWC_HOST_MODE 1</span>
<span class="gi">+		unsigned curmode : 1;</span>
<span class="gi">+		unsigned modemismatch : 1;</span>
<span class="gi">+		unsigned otgintr : 1;</span>
<span class="gi">+		unsigned sofintr : 1;</span>
<span class="gi">+		unsigned rxstsqlvl : 1;</span>
<span class="gi">+		unsigned nptxfempty : 1;</span>
<span class="gi">+		unsigned ginnakeff : 1;</span>
<span class="gi">+		unsigned goutnakeff : 1;</span>
<span class="gi">+		unsigned reserved8 : 1;</span>
<span class="gi">+		unsigned i2cintr : 1;</span>
<span class="gi">+		unsigned erlysuspend : 1;</span>
<span class="gi">+		unsigned usbsuspend : 1;</span>
<span class="gi">+		unsigned usbreset : 1;</span>
<span class="gi">+		unsigned enumdone : 1;</span>
<span class="gi">+		unsigned isooutdrop : 1;</span>
<span class="gi">+		unsigned eopframe : 1;</span>
<span class="gi">+		unsigned intokenrx : 1;</span>
<span class="gi">+		unsigned epmismatch : 1;</span>
<span class="gi">+		unsigned inepint: 1;</span>
<span class="gi">+		unsigned outepintr : 1;</span>
<span class="gi">+		unsigned incomplisoin : 1;</span>
<span class="gi">+		unsigned incomplisoout : 1;</span>
<span class="gi">+		unsigned reserved22_23 : 2;</span>
<span class="gi">+		unsigned portintr : 1;</span>
<span class="gi">+		unsigned hcintr : 1;</span>
<span class="gi">+		unsigned ptxfempty : 1;</span>
<span class="gi">+		unsigned reserved27 : 1;</span>
<span class="gi">+		unsigned conidstschng : 1;</span>
<span class="gi">+		unsigned disconnect : 1;</span>
<span class="gi">+		unsigned sessreqintr : 1;</span>
<span class="gi">+		unsigned wkupintr : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} gintsts_data_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device Receive Status Read and </span>
<span class="gi">+ * Pop Registers (GRXSTSR, GRXSTSP) Read the register into the &lt;i&gt;d32&lt;/i&gt; </span>
<span class="gi">+ * element then read out the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union device_grxsts_data </span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned epnum : 4;</span>
<span class="gi">+		unsigned bcnt : 11;</span>
<span class="gi">+		unsigned dpid : 2;</span>
<span class="gi">+		</span>
<span class="gi">+#define DWC_STS_DATA_UPDT		0x2				  // OUT Data Packet</span>
<span class="gi">+#define DWC_STS_XFER_COMP		0x3				  // OUT Data Transfer Complete</span>
<span class="gi">+</span>
<span class="gi">+#define DWC_DSTS_GOUT_NAK		0x1				  // Global OUT NAK</span>
<span class="gi">+#define DWC_DSTS_SETUP_COMP		0x4				  // Setup Phase Complete</span>
<span class="gi">+#define DWC_DSTS_SETUP_UPDT 0x6				  // SETUP Packet</span>
<span class="gi">+		unsigned pktsts : 4;</span>
<span class="gi">+		unsigned fn : 4;</span>
<span class="gi">+		unsigned reserved : 7;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} device_grxsts_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host Receive Status Read and </span>
<span class="gi">+ * Pop Registers (GRXSTSR, GRXSTSP) Read the register into the &lt;i&gt;d32&lt;/i&gt; </span>
<span class="gi">+ * element then read out the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union host_grxsts_data </span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned chnum : 4;</span>
<span class="gi">+		unsigned bcnt : 11;</span>
<span class="gi">+		unsigned dpid : 2;</span>
<span class="gi">+		</span>
<span class="gi">+		unsigned pktsts : 4;</span>
<span class="gi">+#define DWC_GRXSTS_PKTSTS_IN			  0x2</span>
<span class="gi">+#define DWC_GRXSTS_PKTSTS_IN_XFER_COMP	  0x3</span>
<span class="gi">+#define DWC_GRXSTS_PKTSTS_DATA_TOGGLE_ERR 0x5</span>
<span class="gi">+#define DWC_GRXSTS_PKTSTS_CH_HALTED		  0x7</span>
<span class="gi">+		</span>
<span class="gi">+		unsigned reserved : 11;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} host_grxsts_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the FIFO Size Registers (HPTXFSIZ,</span>
<span class="gi">+ * GNPTXFSIZ, DPTXFSIZn, DIEPTXFn). Read the register into the &lt;i&gt;d32&lt;/i&gt; element then</span>
<span class="gi">+ * read out the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union fifosize_data </span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned startaddr : 16;</span>
<span class="gi">+		unsigned depth : 16;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} fifosize_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Non-Periodic Transmit</span>
<span class="gi">+ * FIFO/Queue Status Register (GNPTXSTS). Read the register into the</span>
<span class="gi">+ * &lt;i&gt;d32&lt;/i&gt; element then read out the bits using the &lt;i&gt;b&lt;/i&gt;it</span>
<span class="gi">+ * elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union gnptxsts_data </span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned nptxfspcavail : 16;</span>
<span class="gi">+		unsigned nptxqspcavail : 8;</span>
<span class="gi">+		/** Top of the Non-Periodic Transmit Request Queue </span>
<span class="gi">+		 *	- bit 24 - Terminate (Last entry for the selected</span>
<span class="gi">+		 *	  channel/EP)</span>
<span class="gi">+		 *	- bits 26:25 - Token Type </span>
<span class="gi">+		 *	  - 2&#39;b00 - IN/OUT</span>
<span class="gi">+		 *	  - 2&#39;b01 - Zero Length OUT</span>
<span class="gi">+		 *	  - 2&#39;b10 - PING/Complete Split</span>
<span class="gi">+		 *	  - 2&#39;b11 - Channel Halt</span>
<span class="gi">+		 *	- bits 30:27 - Channel/EP Number</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned nptxqtop_terminate : 1;</span>
<span class="gi">+		unsigned nptxqtop_token : 2;</span>
<span class="gi">+		unsigned nptxqtop_chnep : 4;</span>
<span class="gi">+		unsigned reserved : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} gnptxsts_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Transmit</span>
<span class="gi">+ * FIFO Status Register (DTXFSTS). Read the register into the</span>
<span class="gi">+ * &lt;i&gt;d32&lt;/i&gt; element then read out the bits using the &lt;i&gt;b&lt;/i&gt;it</span>
<span class="gi">+ * elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union dtxfsts_data </span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned txfspcavail : 16;</span>
<span class="gi">+		unsigned reserved : 16;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} dtxfsts_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the I2C Control Register</span>
<span class="gi">+ * (I2CCTL). Read the register into the &lt;i&gt;d32&lt;/i&gt; element then read out the</span>
<span class="gi">+ * bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union gi2cctl_data </span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned rwdata : 8;</span>
<span class="gi">+		unsigned regaddr : 8;</span>
<span class="gi">+		unsigned addr : 7;</span>
<span class="gi">+		unsigned i2cen : 1;</span>
<span class="gi">+		unsigned ack : 1;</span>
<span class="gi">+		unsigned i2csuspctl : 1;</span>
<span class="gi">+		unsigned i2cdevaddr : 2;</span>
<span class="gi">+		unsigned reserved : 2;</span>
<span class="gi">+		unsigned rw : 1;</span>
<span class="gi">+		unsigned bsydne : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} gi2cctl_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the User HW Config1</span>
<span class="gi">+ * Register.  Read the register into the &lt;i&gt;d32&lt;/i&gt; element then read</span>
<span class="gi">+ * out the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hwcfg1_data </span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned ep_dir0 : 2;</span>
<span class="gi">+		unsigned ep_dir1 : 2;</span>
<span class="gi">+		unsigned ep_dir2 : 2;</span>
<span class="gi">+		unsigned ep_dir3 : 2;</span>
<span class="gi">+		unsigned ep_dir4 : 2;</span>
<span class="gi">+		unsigned ep_dir5 : 2;</span>
<span class="gi">+		unsigned ep_dir6 : 2;</span>
<span class="gi">+		unsigned ep_dir7 : 2;</span>
<span class="gi">+		unsigned ep_dir8 : 2;</span>
<span class="gi">+		unsigned ep_dir9 : 2;</span>
<span class="gi">+		unsigned ep_dir10 : 2;</span>
<span class="gi">+		unsigned ep_dir11 : 2;</span>
<span class="gi">+		unsigned ep_dir12 : 2;</span>
<span class="gi">+		unsigned ep_dir13 : 2;</span>
<span class="gi">+		unsigned ep_dir14 : 2;</span>
<span class="gi">+		unsigned ep_dir15 : 2;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hwcfg1_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the User HW Config2</span>
<span class="gi">+ * Register.  Read the register into the &lt;i&gt;d32&lt;/i&gt; element then read</span>
<span class="gi">+ * out the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hwcfg2_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/* GHWCFG2 */</span>
<span class="gi">+		unsigned op_mode : 3;</span>
<span class="gi">+#define DWC_HWCFG2_OP_MODE_HNP_SRP_CAPABLE_OTG 0</span>
<span class="gi">+#define DWC_HWCFG2_OP_MODE_SRP_ONLY_CAPABLE_OTG 1</span>
<span class="gi">+#define DWC_HWCFG2_OP_MODE_NO_HNP_SRP_CAPABLE_OTG 2</span>
<span class="gi">+#define DWC_HWCFG2_OP_MODE_SRP_CAPABLE_DEVICE 3</span>
<span class="gi">+#define DWC_HWCFG2_OP_MODE_NO_SRP_CAPABLE_DEVICE 4</span>
<span class="gi">+#define DWC_HWCFG2_OP_MODE_SRP_CAPABLE_HOST 5</span>
<span class="gi">+#define DWC_HWCFG2_OP_MODE_NO_SRP_CAPABLE_HOST 6</span>
<span class="gi">+</span>
<span class="gi">+		unsigned architecture : 2;</span>
<span class="gi">+		unsigned point2point : 1;</span>
<span class="gi">+		unsigned hs_phy_type : 2;</span>
<span class="gi">+#define DWC_HWCFG2_HS_PHY_TYPE_NOT_SUPPORTED 0</span>
<span class="gi">+#define DWC_HWCFG2_HS_PHY_TYPE_UTMI 1</span>
<span class="gi">+#define DWC_HWCFG2_HS_PHY_TYPE_ULPI 2</span>
<span class="gi">+#define DWC_HWCFG2_HS_PHY_TYPE_UTMI_ULPI 3</span>
<span class="gi">+</span>
<span class="gi">+		unsigned fs_phy_type : 2;</span>
<span class="gi">+		unsigned num_dev_ep : 4;</span>
<span class="gi">+		unsigned num_host_chan : 4;</span>
<span class="gi">+		unsigned perio_ep_supported : 1;</span>
<span class="gi">+		unsigned dynamic_fifo : 1;</span>
<span class="gi">+		unsigned multi_proc_int : 1;</span>
<span class="gi">+		unsigned reserved21 : 1;</span>
<span class="gi">+		unsigned nonperio_tx_q_depth : 2;</span>
<span class="gi">+		unsigned host_perio_tx_q_depth : 2;</span>
<span class="gi">+		unsigned dev_token_q_depth : 5;</span>
<span class="gi">+		unsigned reserved31 : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hwcfg2_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the User HW Config3</span>
<span class="gi">+ * Register.  Read the register into the &lt;i&gt;d32&lt;/i&gt; element then read</span>
<span class="gi">+ * out the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hwcfg3_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/* GHWCFG3 */</span>
<span class="gi">+		unsigned xfer_size_cntr_width : 4;</span>
<span class="gi">+		unsigned packet_size_cntr_width : 3;</span>
<span class="gi">+		unsigned otg_func : 1;</span>
<span class="gi">+		unsigned i2c : 1;</span>
<span class="gi">+		unsigned vendor_ctrl_if : 1;</span>
<span class="gi">+		unsigned optional_features : 1;</span>
<span class="gi">+		unsigned synch_reset_type : 1;</span>
<span class="gi">+		unsigned ahb_phy_clock_synch : 1;</span>
<span class="gi">+		unsigned reserved15_13 : 3;</span>
<span class="gi">+		unsigned dfifo_depth : 16;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hwcfg3_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the User HW Config4</span>
<span class="gi">+ * Register.  Read the register into the &lt;i&gt;d32&lt;/i&gt; element then read</span>
<span class="gi">+ * out the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hwcfg4_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned num_dev_perio_in_ep : 4;</span>
<span class="gi">+		unsigned power_optimiz : 1;</span>
<span class="gi">+		unsigned min_ahb_freq : 9;</span>
<span class="gi">+		unsigned utmi_phy_data_width : 2;</span>
<span class="gi">+		unsigned num_dev_mode_ctrl_ep : 4;</span>
<span class="gi">+		unsigned iddig_filt_en : 1;</span>
<span class="gi">+		unsigned vbus_valid_filt_en : 1;</span>
<span class="gi">+		unsigned a_valid_filt_en : 1;</span>
<span class="gi">+		unsigned b_valid_filt_en : 1;				 </span>
<span class="gi">+		unsigned session_end_filt_en : 1;				 </span>
<span class="gi">+		unsigned ded_fifo_en : 1;</span>
<span class="gi">+		unsigned num_in_eps : 4;</span>
<span class="gi">+		unsigned desc_dma : 1;</span>
<span class="gi">+		unsigned desc_dma_dyn : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hwcfg4_data_t;</span>
<span class="gi">+</span>
<span class="gi">+////////////////////////////////////////////</span>
<span class="gi">+// Device Registers</span>
<span class="gi">+/**</span>
<span class="gi">+ * Device Global Registers. &lt;i&gt;Offsets 800h-BFFh&lt;/i&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * The following structures define the size and relative field offsets</span>
<span class="gi">+ * for the Device Mode Registers.</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;i&gt;These registers are visible only in Device mode and must not be</span>
<span class="gi">+ * accessed in Host mode, as the results are unknown.&lt;/i&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_dev_global_regs </span>
<span class="gi">+{</span>
<span class="gi">+	/** Device Configuration Register. &lt;i&gt;Offset 800h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t dcfg; </span>
<span class="gi">+	/** Device Control Register. &lt;i&gt;Offset: 804h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t dctl; </span>
<span class="gi">+	/** Device Status Register (Read Only). &lt;i&gt;Offset: 808h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t dsts; </span>
<span class="gi">+	/** Reserved. &lt;i&gt;Offset: 80Ch&lt;/i&gt; */</span>
<span class="gi">+	uint32_t unused;		</span>
<span class="gi">+	/** Device IN Endpoint Common Interrupt Mask</span>
<span class="gi">+	 * Register. &lt;i&gt;Offset: 810h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t diepmsk; </span>
<span class="gi">+	/** Device OUT Endpoint Common Interrupt Mask</span>
<span class="gi">+	 * Register. &lt;i&gt;Offset: 814h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t doepmsk;	</span>
<span class="gi">+	/** Device All Endpoints Interrupt Register.  &lt;i&gt;Offset: 818h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t daint;	</span>
<span class="gi">+	/** Device All Endpoints Interrupt Mask Register.  &lt;i&gt;Offset:</span>
<span class="gi">+	 * 81Ch&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t daintmsk; </span>
<span class="gi">+	/** Device IN Token Queue Read Register-1 (Read Only).</span>
<span class="gi">+	 * &lt;i&gt;Offset: 820h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t dtknqr1;	</span>
<span class="gi">+	/** Device IN Token Queue Read Register-2 (Read Only).</span>
<span class="gi">+	 * &lt;i&gt;Offset: 824h&lt;/i&gt; */ </span>
<span class="gi">+	volatile uint32_t dtknqr2;	</span>
<span class="gi">+	/** Device VBUS	 discharge Register.  &lt;i&gt;Offset: 828h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t dvbusdis;		</span>
<span class="gi">+	/** Device VBUS Pulse Register.	 &lt;i&gt;Offset: 82Ch&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t dvbuspulse;</span>
<span class="gi">+	/** Device IN Token Queue Read Register-3 (Read Only). /</span>
<span class="gi">+	 *	Device Thresholding control register (Read/Write)</span>
<span class="gi">+	 * &lt;i&gt;Offset: 830h&lt;/i&gt; */ </span>
<span class="gi">+	volatile uint32_t dtknqr3_dthrctl;	</span>
<span class="gi">+	/** Device IN Token Queue Read Register-4 (Read Only). /</span>
<span class="gi">+	 *	Device IN EPs empty Inr. Mask Register (Read/Write)</span>
<span class="gi">+	 * &lt;i&gt;Offset: 834h&lt;/i&gt; */ </span>
<span class="gi">+	volatile uint32_t dtknqr4_fifoemptymsk;		</span>
<span class="gi">+	/** Device Each Endpoint Interrupt Register (Read Only). /</span>
<span class="gi">+	 * &lt;i&gt;Offset: 838h&lt;/i&gt; */ </span>
<span class="gi">+	volatile uint32_t deachint;		</span>
<span class="gi">+	/** Device Each Endpoint Interrupt mask Register (Read/Write). /</span>
<span class="gi">+	 * &lt;i&gt;Offset: 83Ch&lt;/i&gt; */ </span>
<span class="gi">+	volatile uint32_t deachintmsk;		</span>
<span class="gi">+	/** Device Each In Endpoint Interrupt mask Register (Read/Write). /</span>
<span class="gi">+	 * &lt;i&gt;Offset: 840h&lt;/i&gt; */ </span>
<span class="gi">+	volatile uint32_t diepeachintmsk[MAX_EPS_CHANNELS];		</span>
<span class="gi">+	/** Device Each Out Endpoint Interrupt mask Register (Read/Write). /</span>
<span class="gi">+	 * &lt;i&gt;Offset: 880h&lt;/i&gt; */ </span>
<span class="gi">+	volatile uint32_t doepeachintmsk[MAX_EPS_CHANNELS];		</span>
<span class="gi">+} dwc_otg_device_global_regs_t; </span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device Configuration</span>
<span class="gi">+ * Register.  Read the register into the &lt;i&gt;d32&lt;/i&gt; member then</span>
<span class="gi">+ * set/clear the bits using the &lt;i&gt;b&lt;/i&gt;it elements.  Write the</span>
<span class="gi">+ * &lt;i&gt;d32&lt;/i&gt; member to the dcfg register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union dcfg_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Device Speed */</span>
<span class="gi">+		unsigned devspd : 2;</span>
<span class="gi">+		/** Non Zero Length Status OUT Handshake */</span>
<span class="gi">+		unsigned nzstsouthshk : 1;</span>
<span class="gi">+#define DWC_DCFG_SEND_STALL 1</span>
<span class="gi">+</span>
<span class="gi">+		unsigned reserved3 : 1;</span>
<span class="gi">+		/** Device Addresses */</span>
<span class="gi">+		unsigned devaddr : 7;</span>
<span class="gi">+		/** Periodic Frame Interval */</span>
<span class="gi">+		unsigned perfrint : 2;</span>
<span class="gi">+#define DWC_DCFG_FRAME_INTERVAL_80 0</span>
<span class="gi">+#define DWC_DCFG_FRAME_INTERVAL_85 1</span>
<span class="gi">+#define DWC_DCFG_FRAME_INTERVAL_90 2</span>
<span class="gi">+#define DWC_DCFG_FRAME_INTERVAL_95 3</span>
<span class="gi">+</span>
<span class="gi">+		unsigned reserved13_17 : 5;</span>
<span class="gi">+		/** In Endpoint Mis-match count */</span>
<span class="gi">+		unsigned epmscnt : 5;</span>
<span class="gi">+		/** Enable Descriptor DMA in Device mode */</span>
<span class="gi">+		unsigned descdma : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} dcfg_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device Control</span>
<span class="gi">+ * Register.  Read the register into the &lt;i&gt;d32&lt;/i&gt; member then</span>
<span class="gi">+ * set/clear the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union dctl_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Remote Wakeup */</span>
<span class="gi">+		unsigned rmtwkupsig : 1;</span>
<span class="gi">+		/** Soft Disconnect */</span>
<span class="gi">+		unsigned sftdiscon : 1;</span>
<span class="gi">+		/** Global Non-Periodic IN NAK Status */</span>
<span class="gi">+		unsigned gnpinnaksts : 1;</span>
<span class="gi">+		/** Global OUT NAK Status */</span>
<span class="gi">+		unsigned goutnaksts : 1;</span>
<span class="gi">+		/** Test Control */</span>
<span class="gi">+		unsigned tstctl : 3;</span>
<span class="gi">+		/** Set Global Non-Periodic IN NAK */</span>
<span class="gi">+		unsigned sgnpinnak : 1;</span>
<span class="gi">+		/** Clear Global Non-Periodic IN NAK */</span>
<span class="gi">+		unsigned cgnpinnak : 1;</span>
<span class="gi">+		/** Set Global OUT NAK */</span>
<span class="gi">+		unsigned sgoutnak : 1;</span>
<span class="gi">+		/** Clear Global OUT NAK */</span>
<span class="gi">+		unsigned cgoutnak : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** Power-On Programming Done */</span>
<span class="gi">+		unsigned pwronprgdone : 1;</span>
<span class="gi">+		/** Global Continue on BNA */</span>
<span class="gi">+		unsigned gcontbna : 1;</span>
<span class="gi">+		/** Global Multi Count */</span>
<span class="gi">+		unsigned gmc : 2;</span>
<span class="gi">+		/** Ignore Frame Number for ISOC EPs */</span>
<span class="gi">+		unsigned ifrmnum : 1;</span>
<span class="gi">+		/** NAK on Babble */</span>
<span class="gi">+		unsigned nakonbble : 1;</span>
<span class="gi">+</span>
<span class="gi">+		unsigned reserved16_31 : 16;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} dctl_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device Status</span>
<span class="gi">+ * Register.  Read the register into the &lt;i&gt;d32&lt;/i&gt; member then</span>
<span class="gi">+ * set/clear the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union dsts_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Suspend Status */</span>
<span class="gi">+		unsigned suspsts : 1;</span>
<span class="gi">+		/** Enumerated Speed */</span>
<span class="gi">+		unsigned enumspd : 2;</span>
<span class="gi">+#define DWC_DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ 0</span>
<span class="gi">+#define DWC_DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ 1</span>
<span class="gi">+#define DWC_DSTS_ENUMSPD_LS_PHY_6MHZ		   2</span>
<span class="gi">+#define DWC_DSTS_ENUMSPD_FS_PHY_48MHZ		   3</span>
<span class="gi">+		/** Erratic Error */</span>
<span class="gi">+		unsigned errticerr : 1;</span>
<span class="gi">+		unsigned reserved4_7: 4;</span>
<span class="gi">+		/** Frame or Microframe Number of the received SOF */</span>
<span class="gi">+		unsigned soffn : 14;</span>
<span class="gi">+		unsigned reserved22_31 : 10;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} dsts_data_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device IN EP Interrupt</span>
<span class="gi">+ * Register and the Device IN EP Common Mask Register.</span>
<span class="gi">+ *</span>
<span class="gi">+ * - Read the register into the &lt;i&gt;d32&lt;/i&gt; member then set/clear the</span>
<span class="gi">+ *	 bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union diepint_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Transfer complete mask */</span>
<span class="gi">+		unsigned xfercompl : 1;</span>
<span class="gi">+		/** Endpoint disable mask */</span>
<span class="gi">+		unsigned epdisabled : 1;</span>
<span class="gi">+		/** AHB Error mask */</span>
<span class="gi">+		unsigned ahberr : 1;</span>
<span class="gi">+		/** TimeOUT Handshake mask (non-ISOC EPs) */</span>
<span class="gi">+		unsigned timeout : 1;</span>
<span class="gi">+		/** IN Token received with TxF Empty mask */</span>
<span class="gi">+		unsigned intktxfemp : 1;</span>
<span class="gi">+		/** IN Token Received with EP mismatch mask */</span>
<span class="gi">+		unsigned intknepmis : 1;</span>
<span class="gi">+		/** IN Endpoint HAK Effective mask */</span>
<span class="gi">+		unsigned inepnakeff : 1;</span>
<span class="gi">+		/** IN Endpoint HAK Effective mask */</span>
<span class="gi">+		unsigned emptyintr : 1;</span>
<span class="gi">+		</span>
<span class="gi">+		unsigned txfifoundrn : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** BNA Interrupt mask */</span>
<span class="gi">+		unsigned bna : 1;</span>
<span class="gi">+		</span>
<span class="gi">+		unsigned reserved10_12 : 3;</span>
<span class="gi">+		/** BNA Interrupt mask */</span>
<span class="gi">+		unsigned nak : 1;</span>
<span class="gi">+		</span>
<span class="gi">+		unsigned reserved14_31 : 18;</span>
<span class="gi">+		} b;</span>
<span class="gi">+} diepint_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device IN EP </span>
<span class="gi">+ * Common/Dedicated Interrupt Mask Register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union diepint_data diepmsk_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device OUT EP Interrupt</span>
<span class="gi">+ * Registerand Device OUT EP Common Interrupt Mask Register.</span>
<span class="gi">+ *</span>
<span class="gi">+ * - Read the register into the &lt;i&gt;d32&lt;/i&gt; member then set/clear the</span>
<span class="gi">+ *	 bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union doepint_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Transfer complete */</span>
<span class="gi">+		unsigned xfercompl : 1;</span>
<span class="gi">+		/** Endpoint disable  */</span>
<span class="gi">+		unsigned epdisabled : 1;</span>
<span class="gi">+		/** AHB Error */</span>
<span class="gi">+		unsigned ahberr : 1;</span>
<span class="gi">+		/** Setup Phase Done (contorl EPs) */</span>
<span class="gi">+		unsigned setup : 1;</span>
<span class="gi">+		/** OUT Token Received when Endpoint Disabled */</span>
<span class="gi">+		unsigned outtknepdis : 1;</span>
<span class="gi">+		</span>
<span class="gi">+		unsigned stsphsercvd : 1;</span>
<span class="gi">+		/** Back-to-Back SETUP Packets Received */ </span>
<span class="gi">+		unsigned back2backsetup : 1;</span>
<span class="gi">+		</span>
<span class="gi">+		unsigned reserved7 : 1;</span>
<span class="gi">+		/** OUT packet Error */</span>
<span class="gi">+		unsigned outpkterr : 1;</span>
<span class="gi">+		/** BNA Interrupt */</span>
<span class="gi">+		unsigned bna : 1;</span>
<span class="gi">+	</span>
<span class="gi">+		unsigned reserved10 : 1;</span>
<span class="gi">+		/** Packet Drop Status */</span>
<span class="gi">+		unsigned pktdrpsts : 1;</span>
<span class="gi">+		/** Babble Interrupt */</span>
<span class="gi">+		unsigned babble : 1;</span>
<span class="gi">+		/** NAK Interrupt */</span>
<span class="gi">+		unsigned nak : 1;</span>
<span class="gi">+		/** NYET Interrupt */</span>
<span class="gi">+		unsigned nyet : 1;</span>
<span class="gi">+</span>
<span class="gi">+		unsigned reserved15_31 : 17;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} doepint_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device OUT EP </span>
<span class="gi">+ * Common/Dedicated Interrupt Mask Register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union doepint_data doepmsk_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device All EP Interrupt</span>
<span class="gi">+ * and Mask Registers.</span>
<span class="gi">+ * - Read the register into the &lt;i&gt;d32&lt;/i&gt; member then set/clear the</span>
<span class="gi">+ *	 bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union daint_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** IN Endpoint bits */</span>
<span class="gi">+		unsigned in : 16;</span>
<span class="gi">+		/** OUT Endpoint bits */</span>
<span class="gi">+		unsigned out : 16;</span>
<span class="gi">+	} ep;</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** IN Endpoint bits */</span>
<span class="gi">+		unsigned inep0	: 1;</span>
<span class="gi">+		unsigned inep1	: 1;</span>
<span class="gi">+		unsigned inep2	: 1;</span>
<span class="gi">+		unsigned inep3	: 1;</span>
<span class="gi">+		unsigned inep4	: 1;</span>
<span class="gi">+		unsigned inep5	: 1;</span>
<span class="gi">+		unsigned inep6	: 1;</span>
<span class="gi">+		unsigned inep7	: 1;</span>
<span class="gi">+		unsigned inep8	: 1;</span>
<span class="gi">+		unsigned inep9	: 1;</span>
<span class="gi">+		unsigned inep10 : 1;</span>
<span class="gi">+		unsigned inep11 : 1;</span>
<span class="gi">+		unsigned inep12 : 1;</span>
<span class="gi">+		unsigned inep13 : 1;</span>
<span class="gi">+		unsigned inep14 : 1;</span>
<span class="gi">+		unsigned inep15 : 1;</span>
<span class="gi">+		/** OUT Endpoint bits */</span>
<span class="gi">+		unsigned outep0	 : 1;</span>
<span class="gi">+		unsigned outep1	 : 1;</span>
<span class="gi">+		unsigned outep2	 : 1;</span>
<span class="gi">+		unsigned outep3	 : 1;</span>
<span class="gi">+		unsigned outep4	 : 1;</span>
<span class="gi">+		unsigned outep5	 : 1;</span>
<span class="gi">+		unsigned outep6	 : 1;</span>
<span class="gi">+		unsigned outep7	 : 1;</span>
<span class="gi">+		unsigned outep8	 : 1;</span>
<span class="gi">+		unsigned outep9	 : 1;</span>
<span class="gi">+		unsigned outep10 : 1;</span>
<span class="gi">+		unsigned outep11 : 1;</span>
<span class="gi">+		unsigned outep12 : 1;</span>
<span class="gi">+		unsigned outep13 : 1;</span>
<span class="gi">+		unsigned outep14 : 1;</span>
<span class="gi">+		unsigned outep15 : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} daint_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device IN Token Queue</span>
<span class="gi">+ * Read Registers.</span>
<span class="gi">+ * - Read the register into the &lt;i&gt;d32&lt;/i&gt; member.</span>
<span class="gi">+ * - READ-ONLY Register</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union dtknq1_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** In Token Queue Write Pointer */</span>
<span class="gi">+		unsigned intknwptr : 5;</span>
<span class="gi">+		/** Reserved */</span>
<span class="gi">+		unsigned reserved05_06 : 2;</span>
<span class="gi">+		/** write pointer has wrapped. */</span>
<span class="gi">+		unsigned wrap_bit : 1;</span>
<span class="gi">+		/** EP Numbers of IN Tokens 0 ... 4 */</span>
<span class="gi">+		unsigned epnums0_5 : 24;</span>
<span class="gi">+	}b;</span>
<span class="gi">+} dtknq1_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents Threshold control Register</span>
<span class="gi">+ * - Read and write the register into the &lt;i&gt;d32&lt;/i&gt; member.</span>
<span class="gi">+ * - READ-WRITABLE Register</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union dthrctl_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** non ISO Tx Thr. Enable */</span>
<span class="gi">+		unsigned non_iso_thr_en : 1;</span>
<span class="gi">+		/** ISO Tx Thr. Enable */</span>
<span class="gi">+		unsigned iso_thr_en : 1;</span>
<span class="gi">+		/** Tx Thr. Length */</span>
<span class="gi">+		unsigned tx_thr_len : 9;</span>
<span class="gi">+		/** Reserved */</span>
<span class="gi">+		unsigned reserved11_15 : 5;</span>
<span class="gi">+		/** Rx Thr. Enable */</span>
<span class="gi">+		unsigned rx_thr_en : 1;</span>
<span class="gi">+		/** Rx Thr. Length */</span>
<span class="gi">+		unsigned rx_thr_len : 9;</span>
<span class="gi">+		/** Reserved */</span>
<span class="gi">+		unsigned reserved26_31 : 6;</span>
<span class="gi">+	}b;</span>
<span class="gi">+} dthrctl_data_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Device Logical IN Endpoint-Specific Registers. &lt;i&gt;Offsets</span>
<span class="gi">+ * 900h-AFCh&lt;/i&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * There will be one set of endpoint registers per logical endpoint</span>
<span class="gi">+ * implemented.</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;i&gt;These registers are visible only in Device mode and must not be</span>
<span class="gi">+ * accessed in Host mode, as the results are unknown.&lt;/i&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_dev_in_ep_regs </span>
<span class="gi">+{</span>
<span class="gi">+	/** Device IN Endpoint Control Register. &lt;i&gt;Offset:900h +</span>
<span class="gi">+	 * (ep_num * 20h) + 00h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t diepctl;</span>
<span class="gi">+	/** Reserved. &lt;i&gt;Offset:900h + (ep_num * 20h) + 04h&lt;/i&gt; */</span>
<span class="gi">+	uint32_t reserved04;	</span>
<span class="gi">+	/** Device IN Endpoint Interrupt Register. &lt;i&gt;Offset:900h +</span>
<span class="gi">+	 * (ep_num * 20h) + 08h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t diepint; </span>
<span class="gi">+	/** Reserved. &lt;i&gt;Offset:900h + (ep_num * 20h) + 0Ch&lt;/i&gt; */</span>
<span class="gi">+	uint32_t reserved0C;	</span>
<span class="gi">+	/** Device IN Endpoint Transfer Size</span>
<span class="gi">+	 * Register. &lt;i&gt;Offset:900h + (ep_num * 20h) + 10h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t dieptsiz; </span>
<span class="gi">+	/** Device IN Endpoint DMA Address Register. &lt;i&gt;Offset:900h +</span>
<span class="gi">+	 * (ep_num * 20h) + 14h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t diepdma; </span>
<span class="gi">+	/** Device IN Endpoint Transmit FIFO Status Register. &lt;i&gt;Offset:900h +</span>
<span class="gi">+	 * (ep_num * 20h) + 18h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t dtxfsts;</span>
<span class="gi">+	/** Device IN Endpoint DMA Buffer Register. &lt;i&gt;Offset:900h +</span>
<span class="gi">+	 * (ep_num * 20h) + 1Ch&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t diepdmab;</span>
<span class="gi">+} dwc_otg_dev_in_ep_regs_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * Device Logical OUT Endpoint-Specific Registers. &lt;i&gt;Offsets:</span>
<span class="gi">+ * B00h-CFCh&lt;/i&gt;</span>
<span class="gi">+ *</span>
<span class="gi">+ * There will be one set of endpoint registers per logical endpoint</span>
<span class="gi">+ * implemented.</span>
<span class="gi">+ *</span>
<span class="gi">+ * &lt;i&gt;These registers are visible only in Device mode and must not be</span>
<span class="gi">+ * accessed in Host mode, as the results are unknown.&lt;/i&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_dev_out_ep_regs </span>
<span class="gi">+{</span>
<span class="gi">+	/** Device OUT Endpoint Control Register. &lt;i&gt;Offset:B00h +</span>
<span class="gi">+	 * (ep_num * 20h) + 00h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t doepctl; </span>
<span class="gi">+	/** Device OUT Endpoint Frame number Register.	&lt;i&gt;Offset:</span>
<span class="gi">+	 * B00h + (ep_num * 20h) + 04h&lt;/i&gt; */ </span>
<span class="gi">+	volatile uint32_t doepfn; </span>
<span class="gi">+	/** Device OUT Endpoint Interrupt Register. &lt;i&gt;Offset:B00h +</span>
<span class="gi">+	 * (ep_num * 20h) + 08h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t doepint; </span>
<span class="gi">+	/** Reserved. &lt;i&gt;Offset:B00h + (ep_num * 20h) + 0Ch&lt;/i&gt; */</span>
<span class="gi">+	uint32_t reserved0C;	</span>
<span class="gi">+	/** Device OUT Endpoint Transfer Size Register. &lt;i&gt;Offset:</span>
<span class="gi">+	 * B00h + (ep_num * 20h) + 10h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t doeptsiz; </span>
<span class="gi">+	/** Device OUT Endpoint DMA Address Register. &lt;i&gt;Offset:B00h</span>
<span class="gi">+	 * + (ep_num * 20h) + 14h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t doepdma; </span>
<span class="gi">+	/** Reserved. &lt;i&gt;Offset:B00h + 	 * (ep_num * 20h) + 1Ch&lt;/i&gt; */</span>
<span class="gi">+	uint32_t unused;		</span>
<span class="gi">+	/** Device OUT Endpoint DMA Buffer Register. &lt;i&gt;Offset:B00h</span>
<span class="gi">+	 * + (ep_num * 20h) + 1Ch&lt;/i&gt; */</span>
<span class="gi">+	uint32_t doepdmab;		</span>
<span class="gi">+} dwc_otg_dev_out_ep_regs_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device EP Control</span>
<span class="gi">+ * Register.  Read the register into the &lt;i&gt;d32&lt;/i&gt; member then</span>
<span class="gi">+ * set/clear the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union depctl_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Maximum Packet Size </span>
<span class="gi">+		 * IN/OUT EPn</span>
<span class="gi">+		 * IN/OUT EP0 - 2 bits</span>
<span class="gi">+		 *	 2&#39;b00: 64 Bytes</span>
<span class="gi">+		 *	 2&#39;b01: 32</span>
<span class="gi">+		 *	 2&#39;b10: 16</span>
<span class="gi">+		 *	 2&#39;b11: 8 */</span>
<span class="gi">+		unsigned mps : 11;</span>
<span class="gi">+#define DWC_DEP0CTL_MPS_64	 0</span>
<span class="gi">+#define DWC_DEP0CTL_MPS_32	 1</span>
<span class="gi">+#define DWC_DEP0CTL_MPS_16	 2</span>
<span class="gi">+#define DWC_DEP0CTL_MPS_8	 3</span>
<span class="gi">+</span>
<span class="gi">+		/** Next Endpoint </span>
<span class="gi">+		 * IN EPn/IN EP0 </span>
<span class="gi">+		 * OUT EPn/OUT EP0 - reserved */</span>
<span class="gi">+		unsigned nextep : 4;</span>
<span class="gi">+</span>
<span class="gi">+		/** USB Active Endpoint */</span>
<span class="gi">+		unsigned usbactep : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** Endpoint DPID (INTR/Bulk IN and OUT endpoints)</span>
<span class="gi">+		 * This field contains the PID of the packet going to</span>
<span class="gi">+		 * be received or transmitted on this endpoint. The</span>
<span class="gi">+		 * application should program the PID of the first</span>
<span class="gi">+		 * packet going to be received or transmitted on this</span>
<span class="gi">+		 * endpoint , after the endpoint is</span>
<span class="gi">+		 * activated. Application use the SetD1PID and</span>
<span class="gi">+		 * SetD0PID fields of this register to program either</span>
<span class="gi">+		 * D0 or D1 PID.</span>
<span class="gi">+		 * </span>
<span class="gi">+		 * The encoding for this field is</span>
<span class="gi">+		 *	 - 0: D0</span>
<span class="gi">+		 *	 - 1: D1</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned dpid : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** NAK Status */</span>
<span class="gi">+		unsigned naksts : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** Endpoint Type </span>
<span class="gi">+		 *	2&#39;b00: Control</span>
<span class="gi">+		 *	2&#39;b01: Isochronous</span>
<span class="gi">+		 *	2&#39;b10: Bulk</span>
<span class="gi">+		 *	2&#39;b11: Interrupt */</span>
<span class="gi">+		unsigned eptype : 2;</span>
<span class="gi">+</span>
<span class="gi">+		/** Snoop Mode </span>
<span class="gi">+		 * OUT EPn/OUT EP0</span>
<span class="gi">+		 * IN EPn/IN EP0 - reserved */</span>
<span class="gi">+		unsigned snp : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** Stall Handshake */</span>
<span class="gi">+		unsigned stall : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** Tx Fifo Number </span>
<span class="gi">+		 * IN EPn/IN EP0</span>
<span class="gi">+		 * OUT EPn/OUT EP0 - reserved */</span>
<span class="gi">+		unsigned txfnum : 4;</span>
<span class="gi">+</span>
<span class="gi">+		/** Clear NAK */</span>
<span class="gi">+		unsigned cnak : 1;</span>
<span class="gi">+		/** Set NAK */</span>
<span class="gi">+		unsigned snak : 1;</span>
<span class="gi">+		/** Set DATA0 PID (INTR/Bulk IN and OUT endpoints)</span>
<span class="gi">+		 * Writing to this field sets the Endpoint DPID (DPID)</span>
<span class="gi">+		 * field in this register to DATA0. Set Even</span>
<span class="gi">+		 * (micro)frame (SetEvenFr) (ISO IN and OUT Endpoints)</span>
<span class="gi">+		 * Writing to this field sets the Even/Odd</span>
<span class="gi">+		 * (micro)frame (EO_FrNum) field to even (micro)</span>
<span class="gi">+		 * frame.</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned setd0pid : 1;</span>
<span class="gi">+		/** Set DATA1 PID (INTR/Bulk IN and OUT endpoints)</span>
<span class="gi">+		 * Writing to this field sets the Endpoint DPID (DPID)</span>
<span class="gi">+		 * field in this register to DATA1 Set Odd</span>
<span class="gi">+		 * (micro)frame (SetOddFr) (ISO IN and OUT Endpoints)</span>
<span class="gi">+		 * Writing to this field sets the Even/Odd</span>
<span class="gi">+		 * (micro)frame (EO_FrNum) field to odd (micro) frame.</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned setd1pid : 1;</span>
<span class="gi">+		</span>
<span class="gi">+		/** Endpoint Disable */</span>
<span class="gi">+		unsigned epdis : 1;</span>
<span class="gi">+		/** Endpoint Enable */</span>
<span class="gi">+		unsigned epena : 1;</span>
<span class="gi">+		} b;</span>
<span class="gi">+} depctl_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device EP Transfer</span>
<span class="gi">+ * Size Register.  Read the register into the &lt;i&gt;d32&lt;/i&gt; member then</span>
<span class="gi">+ * set/clear the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union deptsiz_data</span>
<span class="gi">+{</span>
<span class="gi">+		/** raw register data */</span>
<span class="gi">+		uint32_t d32;</span>
<span class="gi">+		/** register bits */</span>
<span class="gi">+		struct {</span>
<span class="gi">+		/** Transfer size */</span>
<span class="gi">+		unsigned xfersize : 19;</span>
<span class="gi">+		/** Packet Count */</span>
<span class="gi">+		unsigned pktcnt : 10;</span>
<span class="gi">+		/** Multi Count - Periodic IN endpoints */</span>
<span class="gi">+		unsigned mc : 2;</span>
<span class="gi">+		unsigned reserved : 1;</span>
<span class="gi">+		} b;</span>
<span class="gi">+} deptsiz_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Device EP 0 Transfer</span>
<span class="gi">+ * Size Register.  Read the register into the &lt;i&gt;d32&lt;/i&gt; member then</span>
<span class="gi">+ * set/clear the bits using the &lt;i&gt;b&lt;/i&gt;it elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union deptsiz0_data</span>
<span class="gi">+{</span>
<span class="gi">+		/** raw register data */</span>
<span class="gi">+		uint32_t d32;</span>
<span class="gi">+		/** register bits */</span>
<span class="gi">+		struct {</span>
<span class="gi">+		/** Transfer size */</span>
<span class="gi">+		unsigned xfersize : 7;</span>
<span class="gi">+				/** Reserved */</span>
<span class="gi">+				unsigned reserved7_18 : 12;</span>
<span class="gi">+		/** Packet Count */</span>
<span class="gi">+		unsigned pktcnt : 1;</span>
<span class="gi">+				/** Reserved */</span>
<span class="gi">+		unsigned reserved20_28 : 9;</span>
<span class="gi">+				/**Setup Packet Count (DOEPTSIZ0 Only) */</span>
<span class="gi">+				unsigned supcnt : 2;</span>
<span class="gi">+				unsigned reserved31;</span>
<span class="gi">+		} b;</span>
<span class="gi">+} deptsiz0_data_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/////////////////////////////////////////////////</span>
<span class="gi">+// DMA Descriptor Specific Structures</span>
<span class="gi">+//</span>
<span class="gi">+</span>
<span class="gi">+/** Buffer status definitions */</span>
<span class="gi">+</span>
<span class="gi">+#define BS_HOST_READY	0x0</span>
<span class="gi">+#define BS_DMA_BUSY		0x1</span>
<span class="gi">+#define BS_DMA_DONE		0x2</span>
<span class="gi">+#define BS_HOST_BUSY	0x3</span>
<span class="gi">+</span>
<span class="gi">+/** Receive/Transmit status definitions */</span>
<span class="gi">+</span>
<span class="gi">+#define RTS_SUCCESS		0x0</span>
<span class="gi">+#define RTS_BUFFLUSH	0x1</span>
<span class="gi">+#define RTS_RESERVED	0x2</span>
<span class="gi">+#define RTS_BUFERR		0x3</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the DMA Descriptor</span>
<span class="gi">+ * status quadlet. Read the quadlet into the &lt;i&gt;d32&lt;/i&gt; member then</span>
<span class="gi">+ * set/clear the bits using the &lt;i&gt;b&lt;/i&gt;it, &lt;i&gt;b_iso_out&lt;/i&gt; and </span>
<span class="gi">+ * &lt;i&gt;b_iso_in&lt;/i&gt; elements.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union desc_sts_data</span>
<span class="gi">+{</span>
<span class="gi">+		/** raw register data */</span>
<span class="gi">+		uint32_t d32;</span>
<span class="gi">+		/** quadlet bits */</span>
<span class="gi">+		struct {</span>
<span class="gi">+		/** Received number of bytes */</span>
<span class="gi">+		unsigned bytes : 16;</span>
<span class="gi">+</span>
<span class="gi">+		unsigned reserved16_22 : 7;</span>
<span class="gi">+		/** Multiple Transfer - only for OUT EPs */</span>
<span class="gi">+		unsigned mtrf : 1;</span>
<span class="gi">+		/** Setup Packet received - only for OUT EPs */</span>
<span class="gi">+		unsigned sr : 1;</span>
<span class="gi">+		/** Interrupt On Complete */</span>
<span class="gi">+		unsigned ioc : 1;</span>
<span class="gi">+		/** Short Packet */</span>
<span class="gi">+		unsigned sp : 1;</span>
<span class="gi">+		/** Last */</span>
<span class="gi">+		unsigned l : 1;</span>
<span class="gi">+		/** Receive Status */</span>
<span class="gi">+		unsigned sts : 2;</span>
<span class="gi">+		/** Buffer Status */</span>
<span class="gi">+		unsigned bs : 2;</span>
<span class="gi">+		} b;</span>
<span class="gi">+</span>
<span class="gi">+#ifdef DWC_EN_ISOC</span>
<span class="gi">+		/** iso out quadlet bits */</span>
<span class="gi">+		struct {</span>
<span class="gi">+		/** Received number of bytes */</span>
<span class="gi">+		unsigned rxbytes : 11;</span>
<span class="gi">+</span>
<span class="gi">+		unsigned reserved11 : 1;</span>
<span class="gi">+		/** Frame Number */</span>
<span class="gi">+		unsigned framenum : 11;</span>
<span class="gi">+		/** Received ISO Data PID */</span>
<span class="gi">+		unsigned pid : 2;</span>
<span class="gi">+		/** Interrupt On Complete */</span>
<span class="gi">+		unsigned ioc : 1;</span>
<span class="gi">+		/** Short Packet */</span>
<span class="gi">+		unsigned sp : 1;</span>
<span class="gi">+		/** Last */</span>
<span class="gi">+		unsigned l : 1;</span>
<span class="gi">+		/** Receive Status */</span>
<span class="gi">+		unsigned rxsts : 2;</span>
<span class="gi">+		/** Buffer Status */</span>
<span class="gi">+		unsigned bs : 2;</span>
<span class="gi">+		} b_iso_out;</span>
<span class="gi">+		</span>
<span class="gi">+		/** iso in quadlet bits */</span>
<span class="gi">+		struct {</span>
<span class="gi">+		/** Transmited number of bytes */</span>
<span class="gi">+		unsigned txbytes : 12;</span>
<span class="gi">+		/** Frame Number */</span>
<span class="gi">+		unsigned framenum : 11;</span>
<span class="gi">+		/** Transmited ISO Data PID */</span>
<span class="gi">+		unsigned pid : 2;</span>
<span class="gi">+		/** Interrupt On Complete */</span>
<span class="gi">+		unsigned ioc : 1;</span>
<span class="gi">+		/** Short Packet */</span>
<span class="gi">+		unsigned sp : 1;</span>
<span class="gi">+		/** Last */</span>
<span class="gi">+		unsigned l : 1;</span>
<span class="gi">+		/** Transmit Status */</span>
<span class="gi">+		unsigned txsts : 2;</span>
<span class="gi">+		/** Buffer Status */</span>
<span class="gi">+		unsigned bs : 2;</span>
<span class="gi">+		} b_iso_in;</span>
<span class="gi">+#endif //DWC_EN_ISOC</span>
<span class="gi">+} desc_sts_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * DMA Descriptor structure </span>
<span class="gi">+ *</span>
<span class="gi">+ * DMA Descriptor structure contains two quadlets:</span>
<span class="gi">+ * Status quadlet and Data buffer pointer.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_dma_desc</span>
<span class="gi">+{</span>
<span class="gi">+	/** DMA Descriptor status quadlet */</span>
<span class="gi">+	desc_sts_data_t	status;</span>
<span class="gi">+	/** DMA Descriptor data buffer pointer */</span>
<span class="gi">+ 	dma_addr_t	buf;</span>
<span class="gi">+} dwc_otg_dma_desc_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * The dwc_otg_dev_if structure contains information needed to manage</span>
<span class="gi">+ * the DWC_otg controller acting in device mode. It represents the</span>
<span class="gi">+ * programming view of the device-specific aspects of the controller.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_dev_if </span>
<span class="gi">+{</span>
<span class="gi">+	/** Pointer to device Global registers.</span>
<span class="gi">+	 * Device Global Registers starting at offset 800h</span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_device_global_regs_t *dev_global_regs; </span>
<span class="gi">+#define DWC_DEV_GLOBAL_REG_OFFSET 0x800</span>
<span class="gi">+</span>
<span class="gi">+	/** </span>
<span class="gi">+	 * Device Logical IN Endpoint-Specific Registers 900h-AFCh </span>
<span class="gi">+	 */</span>
<span class="gi">+	dwc_otg_dev_in_ep_regs_t	 *in_ep_regs[MAX_EPS_CHANNELS];</span>
<span class="gi">+#define DWC_DEV_IN_EP_REG_OFFSET 0x900</span>
<span class="gi">+#define DWC_EP_REG_OFFSET 0x20</span>
<span class="gi">+</span>
<span class="gi">+	/** Device Logical OUT Endpoint-Specific Registers B00h-CFCh */</span>
<span class="gi">+	dwc_otg_dev_out_ep_regs_t	 *out_ep_regs[MAX_EPS_CHANNELS];</span>
<span class="gi">+#define DWC_DEV_OUT_EP_REG_OFFSET 0xB00</span>
<span class="gi">+</span>
<span class="gi">+	/* Device configuration information*/</span>
<span class="gi">+	uint8_t	 speed;				 /**&lt; Device Speed	0: Unknown, 1: LS, 2:FS, 3: HS */</span>
<span class="gi">+	uint8_t	 num_in_eps;		 /**&lt; Number # of Tx EP range: 0-15 exept ep0 */</span>
<span class="gi">+	uint8_t	 num_out_eps;		 /**&lt; Number # of Rx EP range: 0-15 exept ep 0*/</span>
<span class="gi">+</span>
<span class="gi">+	/** Size of periodic FIFOs (Bytes) */</span>
<span class="gi">+	uint16_t perio_tx_fifo_size[MAX_PERIO_FIFOS];  </span>
<span class="gi">+</span>
<span class="gi">+	/** Size of Tx FIFOs (Bytes) */</span>
<span class="gi">+	uint16_t tx_fifo_size[MAX_TX_FIFOS];  </span>
<span class="gi">+</span>
<span class="gi">+	/** Thresholding enable flags and length varaiables **/</span>
<span class="gi">+	uint16_t rx_thr_en;</span>
<span class="gi">+	uint16_t iso_tx_thr_en;</span>
<span class="gi">+	uint16_t non_iso_tx_thr_en;</span>
<span class="gi">+</span>
<span class="gi">+	uint16_t rx_thr_length;</span>
<span class="gi">+	uint16_t tx_thr_length;</span>
<span class="gi">+</span>
<span class="gi">+	/**</span>
<span class="gi">+	 * Pointers to the DMA Descriptors for EP0 Control</span>
<span class="gi">+	 * transfers (virtual and physical)</span>
<span class="gi">+	 */</span>
<span class="gi">+		</span>
<span class="gi">+	/** 2 descriptors for SETUP packets */</span>
<span class="gi">+	uint32_t dma_setup_desc_addr[2];</span>
<span class="gi">+	dwc_otg_dma_desc_t* setup_desc_addr[2];</span>
<span class="gi">+</span>
<span class="gi">+	/** Pointer to Descriptor with latest SETUP packet */</span>
<span class="gi">+	dwc_otg_dma_desc_t* psetup;</span>
<span class="gi">+</span>
<span class="gi">+	/** Index of current SETUP handler descriptor */</span>
<span class="gi">+	uint32_t setup_desc_index;</span>
<span class="gi">+</span>
<span class="gi">+	/** Descriptor for Data In or Status In phases */</span>
<span class="gi">+	uint32_t dma_in_desc_addr;</span>
<span class="gi">+	dwc_otg_dma_desc_t* in_desc_addr;;</span>
<span class="gi">+	</span>
<span class="gi">+	/** Descriptor for Data Out or Status Out phases */</span>
<span class="gi">+	uint32_t dma_out_desc_addr;</span>
<span class="gi">+	dwc_otg_dma_desc_t* out_desc_addr;</span>
<span class="gi">+		</span>
<span class="gi">+} dwc_otg_dev_if_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/////////////////////////////////////////////////</span>
<span class="gi">+// Host Mode Register Structures</span>
<span class="gi">+//</span>
<span class="gi">+/**</span>
<span class="gi">+ * The Host Global Registers structure defines the size and relative</span>
<span class="gi">+ * field offsets for the Host Mode Global Registers.  Host Global</span>
<span class="gi">+ * Registers offsets 400h-7FFh.</span>
<span class="gi">+*/</span>
<span class="gi">+typedef struct dwc_otg_host_global_regs </span>
<span class="gi">+{</span>
<span class="gi">+	/** Host Configuration Register.   &lt;i&gt;Offset: 400h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hcfg;		  </span>
<span class="gi">+	/** Host Frame Interval Register.	&lt;i&gt;Offset: 404h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hfir;		  </span>
<span class="gi">+	/** Host Frame Number / Frame Remaining Register. &lt;i&gt;Offset: 408h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hfnum; </span>
<span class="gi">+	/** Reserved.	&lt;i&gt;Offset: 40Ch&lt;/i&gt; */</span>
<span class="gi">+	uint32_t reserved40C;</span>
<span class="gi">+	/** Host Periodic Transmit FIFO/ Queue Status Register. &lt;i&gt;Offset: 410h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hptxsts;	  </span>
<span class="gi">+	/** Host All Channels Interrupt Register. &lt;i&gt;Offset: 414h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t haint;	  </span>
<span class="gi">+	/** Host All Channels Interrupt Mask Register. &lt;i&gt;Offset: 418h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t haintmsk;	  </span>
<span class="gi">+} dwc_otg_host_global_regs_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host Configuration Register.</span>
<span class="gi">+ * Read the register into the &lt;i&gt;d32&lt;/i&gt; member then set/clear the bits using</span>
<span class="gi">+ * the &lt;i&gt;b&lt;/i&gt;it elements. Write the &lt;i&gt;d32&lt;/i&gt; member to the hcfg register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hcfg_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** FS/LS Phy Clock Select */</span>
<span class="gi">+		unsigned fslspclksel : 2;</span>
<span class="gi">+#define DWC_HCFG_30_60_MHZ 0</span>
<span class="gi">+#define DWC_HCFG_48_MHZ	   1</span>
<span class="gi">+#define DWC_HCFG_6_MHZ	   2</span>
<span class="gi">+</span>
<span class="gi">+		/** FS/LS Only Support */</span>
<span class="gi">+		unsigned fslssupp : 1;</span>
<span class="gi">+		} b;</span>
<span class="gi">+} hcfg_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host Frame Remaing/Number</span>
<span class="gi">+ * Register.  </span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hfir_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned frint : 16;</span>
<span class="gi">+		unsigned reserved : 16;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hfir_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host Frame Remaing/Number</span>
<span class="gi">+ * Register.  </span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hfnum_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned frnum : 16;</span>
<span class="gi">+#define DWC_HFNUM_MAX_FRNUM 0x3FFF</span>
<span class="gi">+		unsigned frrem : 16;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hfnum_data_t;</span>
<span class="gi">+</span>
<span class="gi">+typedef union hptxsts_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned ptxfspcavail : 16;</span>
<span class="gi">+		unsigned ptxqspcavail : 8;</span>
<span class="gi">+		/** Top of the Periodic Transmit Request Queue</span>
<span class="gi">+		 *	- bit 24 - Terminate (last entry for the selected channel)</span>
<span class="gi">+		 *	- bits 26:25 - Token Type</span>
<span class="gi">+		 *	  - 2&#39;b00 - Zero length</span>
<span class="gi">+		 *	  - 2&#39;b01 - Ping</span>
<span class="gi">+		 *	  - 2&#39;b10 - Disable</span>
<span class="gi">+		 *	- bits 30:27 - Channel Number</span>
<span class="gi">+		 *	- bit 31 - Odd/even microframe</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned ptxqtop_terminate : 1;</span>
<span class="gi">+		unsigned ptxqtop_token : 2;</span>
<span class="gi">+		unsigned ptxqtop_chnum : 4;</span>
<span class="gi">+		unsigned ptxqtop_odd : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hptxsts_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host Port Control and Status</span>
<span class="gi">+ * Register. Read the register into the &lt;i&gt;d32&lt;/i&gt; member then set/clear the</span>
<span class="gi">+ * bits using the &lt;i&gt;b&lt;/i&gt;it elements. Write the &lt;i&gt;d32&lt;/i&gt; member to the</span>
<span class="gi">+ * hprt0 register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hprt0_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned prtconnsts : 1;</span>
<span class="gi">+		unsigned prtconndet : 1;</span>
<span class="gi">+		unsigned prtena : 1;</span>
<span class="gi">+		unsigned prtenchng : 1;</span>
<span class="gi">+		unsigned prtovrcurract : 1;</span>
<span class="gi">+		unsigned prtovrcurrchng : 1;</span>
<span class="gi">+		unsigned prtres : 1;</span>
<span class="gi">+		unsigned prtsusp : 1;</span>
<span class="gi">+		unsigned prtrst : 1;</span>
<span class="gi">+		unsigned reserved9 : 1;</span>
<span class="gi">+		unsigned prtlnsts : 2;</span>
<span class="gi">+		unsigned prtpwr : 1;</span>
<span class="gi">+		unsigned prttstctl : 4;</span>
<span class="gi">+		unsigned prtspd : 2;</span>
<span class="gi">+#define DWC_HPRT0_PRTSPD_HIGH_SPEED 0</span>
<span class="gi">+#define DWC_HPRT0_PRTSPD_FULL_SPEED 1</span>
<span class="gi">+#define DWC_HPRT0_PRTSPD_LOW_SPEED	2</span>
<span class="gi">+		unsigned reserved19_31 : 13;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hprt0_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host All Interrupt </span>
<span class="gi">+ * Register.  </span>
<span class="gi">+ */</span>
<span class="gi">+typedef union haint_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned ch0 : 1;</span>
<span class="gi">+		unsigned ch1 : 1;</span>
<span class="gi">+		unsigned ch2 : 1;</span>
<span class="gi">+		unsigned ch3 : 1;</span>
<span class="gi">+		unsigned ch4 : 1;</span>
<span class="gi">+		unsigned ch5 : 1;</span>
<span class="gi">+		unsigned ch6 : 1;</span>
<span class="gi">+		unsigned ch7 : 1;</span>
<span class="gi">+		unsigned ch8 : 1;</span>
<span class="gi">+		unsigned ch9 : 1;</span>
<span class="gi">+		unsigned ch10 : 1;</span>
<span class="gi">+		unsigned ch11 : 1;</span>
<span class="gi">+		unsigned ch12 : 1;</span>
<span class="gi">+		unsigned ch13 : 1;</span>
<span class="gi">+		unsigned ch14 : 1;</span>
<span class="gi">+		unsigned ch15 : 1;</span>
<span class="gi">+		unsigned reserved : 16;</span>
<span class="gi">+	} b;</span>
<span class="gi">+	</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned chint : 16;</span>
<span class="gi">+		unsigned reserved : 16;</span>
<span class="gi">+	} b2;</span>
<span class="gi">+} haint_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host All Interrupt </span>
<span class="gi">+ * Register.  </span>
<span class="gi">+ */</span>
<span class="gi">+typedef union haintmsk_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned ch0 : 1;</span>
<span class="gi">+		unsigned ch1 : 1;</span>
<span class="gi">+		unsigned ch2 : 1;</span>
<span class="gi">+		unsigned ch3 : 1;</span>
<span class="gi">+		unsigned ch4 : 1;</span>
<span class="gi">+		unsigned ch5 : 1;</span>
<span class="gi">+		unsigned ch6 : 1;</span>
<span class="gi">+		unsigned ch7 : 1;</span>
<span class="gi">+		unsigned ch8 : 1;</span>
<span class="gi">+		unsigned ch9 : 1;</span>
<span class="gi">+		unsigned ch10 : 1;</span>
<span class="gi">+		unsigned ch11 : 1;</span>
<span class="gi">+		unsigned ch12 : 1;</span>
<span class="gi">+		unsigned ch13 : 1;</span>
<span class="gi">+		unsigned ch14 : 1;</span>
<span class="gi">+		unsigned ch15 : 1;</span>
<span class="gi">+		unsigned reserved : 16;</span>
<span class="gi">+	} b;</span>
<span class="gi">+	</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned chint : 16;</span>
<span class="gi">+		unsigned reserved : 16;</span>
<span class="gi">+	} b2;</span>
<span class="gi">+} haintmsk_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/** </span>
<span class="gi">+ * Host Channel Specific Registers. &lt;i&gt;500h-5FCh&lt;/i&gt;</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_hc_regs </span>
<span class="gi">+{</span>
<span class="gi">+	/** Host Channel 0 Characteristic Register. &lt;i&gt;Offset: 500h + (chan_num * 20h) + 00h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hcchar;	  </span>
<span class="gi">+	/** Host Channel 0 Split Control Register. &lt;i&gt;Offset: 500h + (chan_num * 20h) + 04h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hcsplt;	  </span>
<span class="gi">+	/** Host Channel 0 Interrupt Register. &lt;i&gt;Offset: 500h + (chan_num * 20h) + 08h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hcint;</span>
<span class="gi">+	/** Host Channel 0 Interrupt Mask Register. &lt;i&gt;Offset: 500h + (chan_num * 20h) + 0Ch&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hcintmsk;</span>
<span class="gi">+	/** Host Channel 0 Transfer Size Register. &lt;i&gt;Offset: 500h + (chan_num * 20h) + 10h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hctsiz;</span>
<span class="gi">+	/** Host Channel 0 DMA Address Register. &lt;i&gt;Offset: 500h + (chan_num * 20h) + 14h&lt;/i&gt; */</span>
<span class="gi">+	volatile uint32_t hcdma;</span>
<span class="gi">+	/** Reserved.  &lt;i&gt;Offset: 500h + (chan_num * 20h) + 18h - 500h + (chan_num * 20h) + 1Ch&lt;/i&gt; */</span>
<span class="gi">+	uint32_t reserved[2];</span>
<span class="gi">+} dwc_otg_hc_regs_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host Channel Characteristics</span>
<span class="gi">+ * Register. Read the register into the &lt;i&gt;d32&lt;/i&gt; member then set/clear the</span>
<span class="gi">+ * bits using the &lt;i&gt;b&lt;/i&gt;it elements. Write the &lt;i&gt;d32&lt;/i&gt; member to the</span>
<span class="gi">+ * hcchar register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hcchar_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Maximum packet size in bytes */</span>
<span class="gi">+		unsigned mps : 11;</span>
<span class="gi">+</span>
<span class="gi">+		/** Endpoint number */</span>
<span class="gi">+		unsigned epnum : 4;</span>
<span class="gi">+</span>
<span class="gi">+		/** 0: OUT, 1: IN */</span>
<span class="gi">+		unsigned epdir : 1;</span>
<span class="gi">+</span>
<span class="gi">+		unsigned reserved : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** 0: Full/high speed device, 1: Low speed device */</span>
<span class="gi">+		unsigned lspddev : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** 0: Control, 1: Isoc, 2: Bulk, 3: Intr */</span>
<span class="gi">+		unsigned eptype : 2;</span>
<span class="gi">+</span>
<span class="gi">+		/** Packets per frame for periodic transfers. 0 is reserved. */</span>
<span class="gi">+		unsigned multicnt : 2;</span>
<span class="gi">+</span>
<span class="gi">+		/** Device address */</span>
<span class="gi">+		unsigned devaddr : 7;</span>
<span class="gi">+</span>
<span class="gi">+		/**</span>
<span class="gi">+		 * Frame to transmit periodic transaction.</span>
<span class="gi">+		 * 0: even, 1: odd</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned oddfrm : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** Channel disable */</span>
<span class="gi">+		unsigned chdis : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** Channel enable */</span>
<span class="gi">+		unsigned chen : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hcchar_data_t;</span>
<span class="gi">+</span>
<span class="gi">+typedef union hcsplt_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Port Address */</span>
<span class="gi">+		unsigned prtaddr : 7;</span>
<span class="gi">+</span>
<span class="gi">+		/** Hub Address */</span>
<span class="gi">+		unsigned hubaddr : 7;</span>
<span class="gi">+</span>
<span class="gi">+		/** Transaction Position */</span>
<span class="gi">+		unsigned xactpos : 2;</span>
<span class="gi">+#define DWC_HCSPLIT_XACTPOS_MID 0</span>
<span class="gi">+#define DWC_HCSPLIT_XACTPOS_END 1</span>
<span class="gi">+#define DWC_HCSPLIT_XACTPOS_BEGIN 2</span>
<span class="gi">+#define DWC_HCSPLIT_XACTPOS_ALL 3</span>
<span class="gi">+</span>
<span class="gi">+		/** Do Complete Split */</span>
<span class="gi">+		unsigned compsplt : 1;</span>
<span class="gi">+</span>
<span class="gi">+		/** Reserved */</span>
<span class="gi">+		unsigned reserved : 14;</span>
<span class="gi">+</span>
<span class="gi">+		/** Split Enble */</span>
<span class="gi">+		unsigned spltena : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hcsplt_data_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host All Interrupt </span>
<span class="gi">+ * Register.  </span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hcint_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Transfer Complete */</span>
<span class="gi">+		unsigned xfercomp : 1;</span>
<span class="gi">+		/** Channel Halted */</span>
<span class="gi">+		unsigned chhltd : 1;</span>
<span class="gi">+		/** AHB Error */</span>
<span class="gi">+		unsigned ahberr : 1;</span>
<span class="gi">+		/** STALL Response Received */</span>
<span class="gi">+		unsigned stall : 1;</span>
<span class="gi">+		/** NAK Response Received */</span>
<span class="gi">+		unsigned nak : 1;</span>
<span class="gi">+		/** ACK Response Received */</span>
<span class="gi">+		unsigned ack : 1;</span>
<span class="gi">+		/** NYET Response Received */</span>
<span class="gi">+		unsigned nyet : 1;</span>
<span class="gi">+		/** Transaction Err */</span>
<span class="gi">+		unsigned xacterr : 1;</span>
<span class="gi">+		/** Babble Error */</span>
<span class="gi">+		unsigned bblerr : 1;</span>
<span class="gi">+		/** Frame Overrun */</span>
<span class="gi">+		unsigned frmovrun : 1;</span>
<span class="gi">+		/** Data Toggle Error */</span>
<span class="gi">+		unsigned datatglerr : 1;</span>
<span class="gi">+		/** Reserved */</span>
<span class="gi">+		unsigned reserved : 21;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hcint_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host Channel Transfer Size</span>
<span class="gi">+ * Register. Read the register into the &lt;i&gt;d32&lt;/i&gt; member then set/clear the</span>
<span class="gi">+ * bits using the &lt;i&gt;b&lt;/i&gt;it elements. Write the &lt;i&gt;d32&lt;/i&gt; member to the</span>
<span class="gi">+ * hcchar register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hctsiz_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Total transfer size in bytes */</span>
<span class="gi">+		unsigned xfersize : 19;</span>
<span class="gi">+</span>
<span class="gi">+		/** Data packets to transfer */</span>
<span class="gi">+		unsigned pktcnt : 10;</span>
<span class="gi">+</span>
<span class="gi">+		/**</span>
<span class="gi">+		 * Packet ID for next data packet</span>
<span class="gi">+		 * 0: DATA0</span>
<span class="gi">+		 * 1: DATA2</span>
<span class="gi">+		 * 2: DATA1</span>
<span class="gi">+		 * 3: MDATA (non-Control), SETUP (Control)</span>
<span class="gi">+		 */</span>
<span class="gi">+		unsigned pid : 2;</span>
<span class="gi">+#define DWC_HCTSIZ_DATA0 0</span>
<span class="gi">+#define DWC_HCTSIZ_DATA1 2</span>
<span class="gi">+#define DWC_HCTSIZ_DATA2 1</span>
<span class="gi">+#define DWC_HCTSIZ_MDATA 3</span>
<span class="gi">+#define DWC_HCTSIZ_SETUP 3		</span>
<span class="gi">+</span>
<span class="gi">+		/** Do PING protocol when 1 */</span>
<span class="gi">+		unsigned dopng : 1;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hctsiz_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Host Channel Interrupt Mask</span>
<span class="gi">+ * Register. Read the register into the &lt;i&gt;d32&lt;/i&gt; member then set/clear the</span>
<span class="gi">+ * bits using the &lt;i&gt;b&lt;/i&gt;it elements. Write the &lt;i&gt;d32&lt;/i&gt; member to the</span>
<span class="gi">+ * hcintmsk register.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef union hcintmsk_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		unsigned xfercompl : 1;</span>
<span class="gi">+		unsigned chhltd : 1;</span>
<span class="gi">+		unsigned ahberr : 1;</span>
<span class="gi">+		unsigned stall : 1;</span>
<span class="gi">+		unsigned nak : 1;</span>
<span class="gi">+		unsigned ack : 1;</span>
<span class="gi">+		unsigned nyet : 1;</span>
<span class="gi">+		unsigned xacterr : 1;</span>
<span class="gi">+		unsigned bblerr : 1;</span>
<span class="gi">+		unsigned frmovrun : 1;</span>
<span class="gi">+		unsigned datatglerr : 1;</span>
<span class="gi">+		unsigned reserved : 21;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} hcintmsk_data_t;</span>
<span class="gi">+</span>
<span class="gi">+/** OTG Host Interface Structure.</span>
<span class="gi">+ *</span>
<span class="gi">+ * The OTG Host Interface Structure structure contains information</span>
<span class="gi">+ * needed to manage the DWC_otg controller acting in host mode. It</span>
<span class="gi">+ * represents the programming view of the host-specific aspects of the</span>
<span class="gi">+ * controller.</span>
<span class="gi">+ */</span>
<span class="gi">+typedef struct dwc_otg_host_if </span>
<span class="gi">+{</span>
<span class="gi">+	/** Host Global Registers starting at offset 400h.*/</span>
<span class="gi">+	dwc_otg_host_global_regs_t *host_global_regs;</span>
<span class="gi">+#define DWC_OTG_HOST_GLOBAL_REG_OFFSET 0x400 </span>
<span class="gi">+</span>
<span class="gi">+	/** Host Port 0 Control and Status Register */</span>
<span class="gi">+	volatile uint32_t *hprt0;</span>
<span class="gi">+#define DWC_OTG_HOST_PORT_REGS_OFFSET 0x440</span>
<span class="gi">+		</span>
<span class="gi">+</span>
<span class="gi">+	/** Host Channel Specific Registers at offsets 500h-5FCh. */</span>
<span class="gi">+	dwc_otg_hc_regs_t *hc_regs[MAX_EPS_CHANNELS];</span>
<span class="gi">+#define DWC_OTG_HOST_CHAN_REGS_OFFSET 0x500</span>
<span class="gi">+#define DWC_OTG_CHAN_REGS_OFFSET 0x20</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+	/* Host configuration information */</span>
<span class="gi">+	/** Number of Host Channels (range: 1-16) */</span>
<span class="gi">+	uint8_t	 num_host_channels;	   </span>
<span class="gi">+	/** Periodic EPs supported (0: no, 1: yes) */</span>
<span class="gi">+	uint8_t	 perio_eps_supported;</span>
<span class="gi">+	/** Periodic Tx FIFO Size (Only 1 host periodic Tx FIFO) */</span>
<span class="gi">+	uint16_t perio_tx_fifo_size;   </span>
<span class="gi">+  </span>
<span class="gi">+} dwc_otg_host_if_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+/**</span>
<span class="gi">+ * This union represents the bit fields in the Power and Clock Gating Control</span>
<span class="gi">+ * Register. Read the register into the &lt;i&gt;d32&lt;/i&gt; member then set/clear the</span>
<span class="gi">+ * bits using the &lt;i&gt;b&lt;/i&gt;it elements. </span>
<span class="gi">+ */</span>
<span class="gi">+typedef union pcgcctl_data</span>
<span class="gi">+{</span>
<span class="gi">+	/** raw register data */</span>
<span class="gi">+	uint32_t d32;</span>
<span class="gi">+</span>
<span class="gi">+	/** register bits */</span>
<span class="gi">+	struct </span>
<span class="gi">+	{</span>
<span class="gi">+		/** Stop Pclk */</span>
<span class="gi">+		unsigned stoppclk : 1;</span>
<span class="gi">+		/** Gate Hclk */</span>
<span class="gi">+		unsigned gatehclk : 1;</span>
<span class="gi">+		/** Power Clamp */</span>
<span class="gi">+		unsigned pwrclmp : 1;</span>
<span class="gi">+		/** Reset Power Down Modules */</span>
<span class="gi">+		unsigned rstpdwnmodule : 1;</span>
<span class="gi">+		/** PHY Suspended */</span>
<span class="gi">+		unsigned physuspended : 1;</span>
<span class="gi">+		</span>
<span class="gi">+		unsigned reserved : 27;</span>
<span class="gi">+	} b;</span>
<span class="gi">+} pcgcctl_data_t;</span>
<span class="gi">+</span>
<span class="gi">+</span>
<span class="gi">+#endif</span>
<span class="gd">--- /dev/null</span>
<span class="gi">+++ b/drivers/usb/host/otg/Makefile</span>
<span class="gu">@@ -0,0 +1,52 @@</span>
<span class="gi">+#</span>
<span class="gi">+# Makefile for DWC_otg Highspeed USB controller driver</span>
<span class="gi">+#</span>
<span class="gi">+</span>
<span class="gi">+ifneq ($(KERNELRELEASE),)</span>
<span class="gi">+EXTRA_CFLAGS	+= -DDEBUG </span>
<span class="gi">+</span>
<span class="gi">+# Use one of the following flags to compile the software in host-only or</span>
<span class="gi">+# device-only mode.</span>
<span class="gi">+#CPPFLAGS        += -DDWC_HOST_ONLY</span>
<span class="gi">+#CPPFLAGS        += -DDWC_DEVICE_ONLY</span>
<span class="gi">+</span>
<span class="gi">+EXTRA_CFLAGS	+= -Dlinux -DDWC_HS_ELECT_TST</span>
<span class="gi">+#EXTRA_CFLAGS	+= -DDWC_EN_ISOC </span>
<span class="gi">+</span>
<span class="gi">+ifneq ($(CONFIG_USB_CNS3XXX_OTG_HCD_ONLY),)</span>
<span class="gi">+EXTRA_CFLAGS    += -DDWC_HOST_ONLY</span>
<span class="gi">+endif</span>
<span class="gi">+</span>
<span class="gi">+ifneq ($(CONFIG_USB_CNS3XXX_OTG_PCD_ONLY),)</span>
<span class="gi">+EXTRA_CFLAGS    += -DDWC_DEVICE_ONLY</span>
<span class="gi">+endif</span>
<span class="gi">+</span>
<span class="gi">+obj-$(CONFIG_USB_CNS3XXX_OTG)	:= dwc_otg.o</span>
<span class="gi">+#obj-$(CONFIG_USB_GADGET_CNS3XXX_OTG)	:= dwc_otg.o</span>
<span class="gi">+</span>
<span class="gi">+dwc_otg-objs	:= dwc_otg_driver.o dwc_otg_attr.o </span>
<span class="gi">+dwc_otg-objs	+= dwc_otg_cil.o dwc_otg_cil_intr.o </span>
<span class="gi">+dwc_otg-objs	+= dwc_otg_pcd.o dwc_otg_pcd_intr.o </span>
<span class="gi">+dwc_otg-objs	+= dwc_otg_hcd.o dwc_otg_hcd_intr.o dwc_otg_hcd_queue.o</span>
<span class="gi">+</span>
<span class="gi">+else</span>
<span class="gi">+</span>
<span class="gi">+PWD		:= $(shell pwd)</span>
<span class="gi">+</span>
<span class="gi">+# Command paths</span>
<span class="gi">+CTAGS		:= $(CTAGS)</span>
<span class="gi">+DOXYGEN		:= $(DOXYGEN)</span>
<span class="gi">+</span>
<span class="gi">+default:</span>
<span class="gi">+	$(MAKE) -C$(KDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules</span>
<span class="gi">+</span>
<span class="gi">+docs:	$(wildcard *.[hc]) doc/doxygen.cfg</span>
<span class="gi">+	$(DOXYGEN) doc/doxygen.cfg</span>
<span class="gi">+</span>
<span class="gi">+tags:	$(wildcard *.[hc])</span>
<span class="gi">+	$(CTAGS) -e $(wildcard *.[hc]) $(wildcard linux/*.[hc]) $(wildcard $(KDIR)/include/linux/usb*.h)</span>
<span class="gi">+</span>
<span class="gi">+endif</span>
<span class="gi">+</span>
<span class="gi">+clean:</span>
<span class="gi">+	rm -rf   *.o *.ko .*cmd *.mod.c .tmp_versions</span>
<span class="gd">--- a/drivers/usb/Kconfig</span>
<span class="gi">+++ b/drivers/usb/Kconfig</span>
<span class="gu">@@ -39,6 +39,7 @@ config USB_ARCH_HAS_OHCI</span>
 	default y if ARCH_AT91
 	default y if ARCH_PNX4008 &amp;&amp; I2C
 	default y if MFD_TC6393XB
<span class="gi">+	default y if ARCH_CNS3XXX</span>
 	# PPC:
 	default y if STB03xxx
 	default y if PPC_MPC52xx
<span class="gu">@@ -58,6 +59,7 @@ config USB_ARCH_HAS_EHCI</span>
 	default y if PPC_83xx
 	default y if SOC_AU1200
 	default y if ARCH_IXP4XX
<span class="gi">+	default y if ARCH_CNS3XXX</span>
 	default PCI
 
 # ARM SA1111 chips have a non-PCI based &quot;OHCI-compatible&quot; USB host interface.
<span class="gd">--- a/drivers/usb/Makefile</span>
<span class="gi">+++ b/drivers/usb/Makefile</span>
<span class="gu">@@ -20,6 +20,8 @@ obj-$(CONFIG_USB_U132_HCD)	+= host/</span>
 obj-$(CONFIG_USB_R8A66597_HCD)	+= host/
 obj-$(CONFIG_USB_HWA_HCD)	+= host/
 obj-$(CONFIG_USB_ISP1760_HCD)	+= host/
<span class="gi">+obj-$(CONFIG_USB_CNS3XXX_OTG)	+= host/</span>
<span class="gi">+obj-$(CONFIG_USB_GADGET_CNS3XXX_OTG)	+= host/</span>
 
 obj-$(CONFIG_USB_C67X00_HCD)	+= c67x00/
 
<span class="gd">--- a/drivers/usb/storage/protocol.c</span>
<span class="gi">+++ b/drivers/usb/storage/protocol.c</span>
<span class="gu">@@ -182,9 +182,10 @@ unsigned int usb_stor_access_xfer_buf(un</span>
 					PAGE_SIZE - poff);
 			unsigned char *ptr = kmap(page);
 
<span class="gd">-			if (dir == TO_XFER_BUF)</span>
<span class="gi">+			if (dir == TO_XFER_BUF) {</span>
 				memcpy(ptr + poff, buffer + cnt, plen);
<span class="gd">-			else</span>
<span class="gi">+				flush_dcache_page(page);</span>
<span class="gi">+			} else</span>
 				memcpy(buffer + cnt, ptr + poff, plen);
 			kunmap(page);
 
<span class="gd">--- a/include/linux/usb.h</span>
<span class="gi">+++ b/include/linux/usb.h</span>
<span class="gu">@@ -1201,8 +1201,14 @@ struct urb {</span>
 	unsigned int pipe;		/* (in) pipe information */
 	int status;			/* (return) non-ISO status */
 	unsigned int transfer_flags;	/* (in) URB_SHORT_NOT_OK | ...*/
<span class="gi">+</span>
 	void *transfer_buffer;		/* (in) associated data buffer */
 	dma_addr_t transfer_dma;	/* (in) dma addr for transfer_buffer */
<span class="gi">+</span>
<span class="gi">+	void *		aligned_transfer_buffer;		/* (in) associated data buffer */</span>
<span class="gi">+	dma_addr_t 	aligned_transfer_dma;	/* (in) dma addr for transfer_buffer */</span>
<span class="gi">+	u32 		aligned_transfer_buffer_length;	/* (in) data buffer length */</span>
<span class="gi">+</span>
 	struct usb_sg_request *sg;	/* (in) scatter gather buffer list */
 	int num_sgs;			/* (in) number of entries in the sg list */
 	u32 transfer_buffer_length;	/* (in) data buffer length */
</pre></div>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.25.1</a>) at 2024-08-29 23:34:40 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
