Browse Source

fw: download SPI ROM ID and send to USB very early in execution

Don't want to take too long or USB might enumerate without us :)

Do the download of the SPI ROM ID before beginning the SDRAM download,
immediately after conditioning the SPI ROM.
H. Peter Anvin 3 years ago
parent
commit
aea92d6f7a
10 changed files with 1444 additions and 1437 deletions
  1. 3 3
      fpga/max80.qpf
  2. 1337 1361
      fpga/output/sram.mif
  3. BIN
      fpga/output/v1.jic
  4. BIN
      fpga/output/v1.sof
  5. BIN
      fpga/output/v2.jic
  6. BIN
      fpga/output/v2.sof
  7. 1 1
      rv32/checksum.h
  8. 20 2
      rv32/fw.h
  9. 75 66
      rv32/romcopy.c
  10. 8 4
      rv32/system.c

+ 3 - 3
fpga/max80.qpf

@@ -19,14 +19,14 @@
 #
 # Quartus Prime
 # Version 21.1.0 Build 842 10/21/2021 SJ Lite Edition
-# Date created = 04:05:18  February 02, 2022
+# Date created = 05:12:58  February 02, 2022
 #
 # -------------------------------------------------------------------------- #
 
 QUARTUS_VERSION = "21.1"
-DATE = "04:05:18  February 02, 2022"
+DATE = "05:12:58  February 02, 2022"
 
 # Revisions
 
-PROJECT_REVISION = "v2"
 PROJECT_REVISION = "v1"
+PROJECT_REVISION = "v2"

+ 1337 - 1361
fpga/output/sram.mif

@@ -6,7 +6,7 @@ DATA_RADIX = HEX;
 CONTENT BEGIN
 0000 : 00000000;
 0001 : 00000000;
-0002 : E3ABE76A;
+0002 : B09378DE;
 0003 : 00100000;
 0004 : C0102473;
 0005 : 00008137;
@@ -15,7 +15,7 @@ CONTENT BEGIN
 0008 : 0001210B;
 0009 : 008DF413;
 000A : 00040863;
-000B : 3CF000EF;
+000B : 359000EF;
 000C : 408D8DB3;
 000D : 060D8063;
 000E : 00000493;
@@ -48,26 +48,26 @@ CONTENT BEGIN
 0029 : 0000250B;
 002A : 0005B00B;
 002B : 00000000;
-002C : 0DB0006F;
+002C : 1230006F;
 002D : 5880006F;
 002E : 5780006F;
-002F : 33F0006F;
+002F : 2C90006F;
 0030 : 5880006F;
-0031 : 0C70006F;
-0032 : 08F0106F;
-0033 : 0BF0006F;
-0034 : 0BB0006F;
-0035 : 0FF0006F;
-0036 : 0B30006F;
-0037 : 0AF0006F;
-0038 : 0AB0006F;
-0039 : 0A70006F;
+0031 : 10F0006F;
+0032 : 0190106F;
+0033 : 1070006F;
+0034 : 1030006F;
+0035 : 1470006F;
+0036 : 0FB0006F;
+0037 : 0F70006F;
+0038 : 0F30006F;
+0039 : 0EF0006F;
 003A : 00000000;
 003B : 7C5C2D2F;
-003C : 4101D4A0;
+003C : 4101D0A0;
 003D : FFFFFFFF;
 003E : FFFFFFFF;
-003F : 00001B70;
+003F : 00001B10;
 0040 : 00000040;
 0041 : 00000000;
 0042 : 00000000;
@@ -198,29 +198,29 @@ CONTENT BEGIN
 00BF : 16204283;
 00C0 : 00028663;
 00C1 : 40007097;
-00C2 : F9E080E7;
+00C2 : C3A080E7;
 00C3 : 400074B7;
 00C4 : 40007937;
 00C5 : 5AFD4981;
-00C6 : 2F448493;
-00C7 : 36B90913;
+00C6 : F9048493;
+00C7 : 00790913;
 00C8 : 40007A37;
 00C9 : 0750008B;
 00CA : 0810878B;
 00CB : 16304303;
 00CC : 00030663;
 00CD : 40001097;
-00CE : 68E080E7;
-00CF : 435000EF;
+00CE : 688080E7;
+00CF : 3BF000EF;
 00D0 : 89C02403;
 00D1 : FE89F0E3;
 00D2 : 00845393;
 00D3 : 0FF47593;
 00D4 : 93638626;
 00D5 : 864A0003;
-00D6 : 2FEA0513;
+00D6 : F9AA0513;
 00D7 : 40001097;
-00D8 : 38A080E7;
+00D8 : 384080E7;
 00D9 : BF7D89A2;
 00DA : 00000697;
 00DB : D3468693;
@@ -328,9 +328,9 @@ CONTENT BEGIN
 0141 : 84933430;
 0142 : 64090015;
 0143 : FFE4FA13;
-0144 : 96840693;
+0144 : 8F440693;
 0145 : FFCA0993;
-0146 : 96840413;
+0146 : 8F440413;
 0147 : 4AB54E29;
 0148 : 0006C703;
 0149 : E3710685;
@@ -401,10 +401,10 @@ CONTENT BEGIN
 018A : 00239850;
 018B : B7A19930;
 018C : 11416509;
-018D : 98E50513;
+018D : 91A50513;
 018E : 3D5DC606;
 018F : 11416509;
-0190 : 99950513;
+0190 : 92550513;
 0191 : 356DC606;
 0192 : 12400293;
 0193 : 0002A783;
@@ -423,22 +423,22 @@ CONTENT BEGIN
 01A0 : CE061101;
 01A1 : CA26CC22;
 01A2 : C64EC84A;
-01A3 : C0102773;
-01A4 : 12E02423;
-01A5 : DE900093;
-01A6 : 0610078B;
-01A7 : 02936409;
-01A8 : 83139684;
-01A9 : 04130452;
-01AA : 44A99684;
-01AB : 43834935;
-01AC : 03050003;
-01AD : 1C039A63;
-01AE : 85136489;
-01AF : 4329BDE4;
-01B0 : 458347B5;
-01B1 : 05050005;
-01B2 : 1C059763;
+01A3 : 2773C452;
+01A4 : 2423C010;
+01A5 : 009312E0;
+01A6 : 078BDE90;
+01A7 : 64090610;
+01A8 : 8F440293;
+01A9 : 04528313;
+01AA : 8F440413;
+01AB : 4F354FA9;
+01AC : 00034383;
+01AD : 95630305;
+01AE : 64890803;
+01AF : B7E48513;
+01B0 : 4EB546A9;
+01B1 : 00054583;
+01B2 : E1D10505;
 01B3 : 00234635;
 01B4 : 46A998C0;
 01B5 : 98D00023;
@@ -447,1353 +447,1329 @@ CONTENT BEGIN
 01B8 : 0710090B;
 01B9 : 20097993;
 01BA : FE098CE3;
-01BB : 193ACE37;
-01BC : 40000EB7;
-01BD : 40008F37;
-01BE : F4D57FB7;
-01BF : 604E0093;
-01C0 : 000E8713;
-01C1 : 448159FD;
-01C2 : 45014901;
-01C3 : A80F0E93;
-01C4 : 25FF8E13;
-01C5 : 19D76863;
-01C6 : 07A40713;
-01C7 : 463548A9;
-01C8 : 00074783;
-01C9 : 93630705;
-01CA : 334D1A07;
-01CB : 09040293;
-01CC : 45B54829;
-01CD : 0002C083;
-01CE : 90630285;
-01CF : 25031A00;
-01D0 : 33690080;
-01D1 : 002343B5;
-01D2 : 45299870;
-01D3 : 98A00023;
-01D4 : 09B40593;
-01D5 : 43B54529;
-01D6 : 0005C803;
-01D7 : 15630585;
-01D8 : 854E1808;
-01D9 : 061333A5;
-01DA : C5130200;
-01DB : 0023FFF4;
-01DC : 3BA998C0;
-01DD : 002344B5;
-01DE : 46A99890;
-01DF : 98D00023;
-01E0 : 0B440893;
-01E1 : 433544A9;
-01E2 : 0008C983;
-01E3 : 94630885;
-01E4 : 8E371609;
-01E5 : 04934000;
-01E6 : 4088A74E;
-01E7 : 0E933B05;
-01E8 : 00230200;
-01E9 : 40C899D0;
-01EA : 4F353315;
-01EB : 99E00023;
-01EC : 00234FA9;
-01ED : 126399F0;
-01EE : 80B71609;
-01EF : 33374000;
-01F0 : 47014001;
-01F1 : A8008793;
-01F2 : 4A030293;
-01F3 : 1457EC63;
-01F4 : 16071C63;
-01F5 : 80800613;
-01F6 : C2144699;
-01F7 : 20234895;
-01F8 : 09930116;
-01F9 : 4FA90F14;
-01FA : CE034F35;
-01FB : 09850009;
-01FC : 160E1163;
-01FD : C01024F3;
-01FE : 1908BEB7;
-01FF : 0FFE8F13;
-0200 : C0102FF3;
-0201 : 409F8933;
-0202 : FF2F7CE3;
-0203 : 002342B5;
-0204 : 47299850;
-0205 : 98E00023;
-0206 : 10C40093;
-0207 : 4E354EA9;
-0208 : 0000C783;
-0209 : 9D630085;
-020A : 13371207;
-020B : 04934000;
-020C : 89134343;
-020D : 09930104;
-020E : 00230200;
-020F : 40889930;
-0210 : 31690491;
-0211 : FF249BE3;
-0212 : 11D40393;
-0213 : 48B546A9;
-0214 : 0003C503;
-0215 : 1C630385;
-0216 : 10971005;
-0217 : 80E74000;
-0218 : 0413BDA0;
-0219 : 46291334;
-021A : 45834835;
-021B : 04050004;
-021C : 10059663;
-021D : 40F24462;
-021E : 494244D2;
-021F : 610549B2;
-0220 : 40001317;
-0221 : BD830067;
-0222 : 00939463;
-0223 : 99200023;
-0224 : 98700023;
-0225 : 9463BD29;
-0226 : 00230065;
-0227 : 002398F0;
-0228 : B50598B0;
-0229 : CF334314;
-022A : 202300D0;
-022B : 2F8301E7;
-022C : 80B30007;
-022D : C31403C0;
-022E : 01EFC2B3;
-022F : 69339536;
-0230 : 8CD50059;
-0231 : 00D9F9B3;
-0232 : B5A90711;
-0233 : 01179463;
-0234 : 98C00023;
-0235 : 98F00023;
-0236 : 9463B5A1;
-0237 : 00230100;
-0238 : 002398B0;
-0239 : B5B99810;
-023A : 00A81463;
-023B : 98700023;
-023C : 99000023;
-023D : 9463B595;
-023E : 00230099;
-023F : 00239860;
-0240 : B5599930;
-0241 : 01279463;
-0242 : 98500023;
-0243 : 98F00023;
-0244 : 00074783;
-0245 : F7FD0705;
-0246 : 0713B54D;
-0247 : 49290C04;
-0248 : B7FD42B5;
-0249 : 0007A083;
-024A : 67330791;
-024B : BD790017;
-024C : 00781463;
-024D : 98A00023;
-024E : 99000023;
-024F : 0005C803;
-0250 : 17E30585;
-0251 : B579FE08;
-0252 : 0D840593;
-0253 : 453543A9;
-0254 : 1463B7F5;
-0255 : 002301FE;
-0256 : 002399E0;
-0257 : B57199C0;
-0258 : 01D79463;
-0259 : 99C00023;
-025A : 98F00023;
-025B : 1463BD55;
-025C : 002300D5;
-025D : 00239910;
-025E : BDD998A0;
-025F : 00C59463;
-0260 : 99000023;
-0261 : 98B00023;
-0262 : 4785B5CD;
-0263 : 00A79533;
-0264 : FFF54293;
-0265 : 0655050B;
-0266 : 27038082;
-0267 : 02B700C0;
-0268 : 20233B00;
-0269 : 8333A0A0;
-026A : 03B300E2;
-026B : 053700B3;
-026C : 22232D00;
-026D : 8E49A070;
-026E : A0C02423;
-026F : 20238082;
-0270 : 07B7A0A0;
-0271 : 22232000;
-0272 : 8DDDA000;
-0273 : A0B02423;
-0274 : 02938082;
-0275 : A70312C0;
-0276 : 06930002;
-0277 : A0230017;
-0278 : CB1900D2;
-0279 : 06634605;
-027A : 0E130EC7;
-027B : 0E932000;
-027C : 078BDFF0;
-027D : 808207DE;
-027E : C6061141;
-027F : C226C422;
-0280 : 0093C04A;
-0281 : 0337A040;
-0282 : A0235000;
-0283 : 03930060;
-0284 : 0437A080;
-0285 : A0230100;
-0286 : 04930083;
-0287 : 860B2000;
-0288 : 06370804;
-0289 : A0231100;
-028A : 053700C0;
-028B : A0230200;
-028C : 878B00A3;
-028D : 00010804;
-028E : 65890001;
-028F : AAA58813;
-0290 : 40B543A9;
-0291 : 00084883;
-0292 : 9D630805;
-0293 : 09370608;
-0294 : 22234B00;
-0295 : 0493A120;
-0296 : 0E37A080;
-0297 : A0231500;
-0298 : 041301C4;
-0299 : 078B2000;
-029A : 0EB70804;
-029B : A0231400;
-029C : 078B01D4;
-029D : 09130804;
-029E : 2503A100;
-029F : 34B90009;
-02A0 : 04000F37;
-02A1 : 01E4A023;
-02A2 : 0804040B;
-02A3 : 00092503;
-02A4 : 4FB53C35;
-02A5 : 99F00023;
-02A6 : 002347A9;
-02A7 : 442298F0;
-02A8 : 449240B2;
-02A9 : 02B74902;
-02AA : 86B74000;
-02AB : 87134000;
-02AC : 83130002;
-02AD : 0633A806;
-02AE : 458140E3;
-02AF : 00028513;
-02B0 : BDE10141;
-02B1 : 00789463;
-02B2 : 98100023;
-02B3 : 99100023;
-02B4 : 8537BF95;
-02B5 : 38374000;
-02B6 : 05934001;
-02B7 : 0893A805;
-02B8 : 85B34A08;
-02B9 : 051340B8;
-02BA : BDD1A805;
-02BB : DE067139;
-02BC : DA26DC22;
-02BD : D64ED84A;
-02BE : D256D452;
-02BF : CE5ED05A;
-02C0 : CA66CC62;
-02C1 : C66EC86A;
-02C2 : 20000793;
-02C3 : 0807870B;
-02C4 : 4B000737;
-02C5 : A0E02223;
-02C6 : A0800093;
-02C7 : 150006B7;
-02C8 : 00D0A023;
-02C9 : 0807868B;
-02CA : 140002B7;
-02CB : 0050A023;
-02CC : 0807868B;
-02CD : A1000313;
-02CE : 04000637;
-02CF : 00032A03;
-02D0 : 00C0A023;
-02D1 : 0807878B;
-02D2 : 00032A83;
-02D3 : 27C00393;
-02D4 : D0000BB7;
-02D5 : 00038623;
-02D6 : 84D28456;
-02D7 : 0C9349AD;
-02D8 : 4D2527C0;
-02D9 : 5C7D0BA1;
-02DA : 02400613;
-02DB : 85224681;
-02DC : 509785A6;
-02DD : 80E74000;
-02DE : 85A67E20;
-02DF : 0613892A;
-02E0 : 85220240;
-02E1 : 50974681;
-02E2 : 80E74000;
-02E3 : 842A41A0;
-02E4 : 451D84AE;
-02E5 : 012D6363;
-02E6 : 05934501;
-02E7 : 08330309;
-02E8 : 789300B5;
-02E9 : 8E330FF8;
-02EA : 9E93013C;
-02EB : 00230039;
-02EC : 8F33011E;
-02ED : 2023017E;
-02EE : 19FD011F;
-02EF : FB8996E3;
-02F0 : 40007FB7;
-02F1 : 069385D2;
-02F2 : 865627C0;
-02F3 : 467F8513;
-02F4 : 40001097;
-02F5 : B16080E7;
-02F6 : 546250F2;
-02F7 : 594254D2;
-02F8 : 5B0259B2;
-02F9 : 4C624BF2;
-02FA : 4D424CD2;
-02FB : 85564DB2;
-02FC : 5A9285D2;
-02FD : 61215A22;
-02FE : 11018082;
-02FF : CA26CE06;
-0300 : C84ACC22;
-0301 : C452C64E;
-0302 : 88805783;
-0303 : 14800093;
-0304 : 01079493;
-0305 : 0FF7F293;
-0306 : 0000A403;
-0307 : 826380C1;
-0308 : 43031202;
-0309 : 45838910;
-030A : 46958900;
-030B : 0FF37613;
-030C : 0FF5F593;
-030D : 1066E463;
-030E : 6F634F05;
-030F : 146314CF;
-0310 : 0D631006;
-0311 : 2F831404;
-0312 : 89630044;
-0313 : 401C020F;
-0314 : 00178713;
-0315 : 8023C018;
-0316 : 408300B7;
-0317 : 428301D4;
-0318 : F3330144;
-0319 : 0EA30050;
-031A : 0AA30064;
-031B : 40548860;
-031C : FFF68393;
-031D : 00742223;
-031E : 02039863;
-031F : 00C403B3;
-0320 : 00B38B23;
-0321 : 01045A03;
-0322 : 40CA5533;
-0323 : 00157913;
-0324 : 00090C63;
-0325 : 00860993;
-0326 : 00299813;
-0327 : 010408B3;
-0328 : 0008AE03;
-0329 : 9E028522;
-032A : 1004F593;
-032B : 4450C1A1;
-032C : 14060D63;
-032D : FFF60E93;
-032E : 01D42623;
-032F : 140E8763;
-0330 : 01D44083;
-0331 : 01544283;
-0332 : 0050F6B3;
-0333 : 00D40EA3;
-0334 : 88D00AA3;
-0335 : 00842383;
-0336 : 00138A13;
-0337 : 01442423;
-0338 : 0003C503;
-0339 : 00A40E23;
-033A : 88A00A23;
-033B : 2004F913;
-033C : 02090563;
-033D : 01D44803;
-033E : 89504983;
-033F : 89000AA3;
-0340 : 01045883;
-0341 : 0FF9F593;
-0342 : 2008FE13;
-0343 : 000E0763;
-0344 : 03C42E83;
-0345 : 85224605;
-0346 : 444C9E82;
-0347 : 01045F83;
-0348 : 36334040;
-0349 : 1F1300B0;
-034A : 67330086;
-034B : 37B301FF;
-034C : E3330080;
-034D : 609300E7;
-034E : A09D0823;
-034F : 0F63439D;
-0350 : F03D0676;
-0351 : FA13A8A1;
-0352 : 191303F5;
-0353 : 0813002A;
-0354 : 08B31780;
-0355 : A4030128;
-0356 : 00230008;
-0357 : A0231140;
-0358 : 03130080;
-0359 : C0150820;
-035A : 00C42E03;
-035B : 01045F83;
-035C : 3EB3405C;
-035D : 9F1301C0;
-035E : 6733008E;
-035F : 30B301FF;
-0360 : E2B300F0;
-0361 : E31300E0;
-0362 : 15230822;
-0363 : 46818860;
-0364 : 4C54C011;
-0365 : 88D02A23;
-0366 : EE0412E3;
-0367 : 08200093;
-0368 : 01009293;
-0369 : 0092E4B3;
-036A : 88902423;
-036B : 446240F2;
-036C : 494244D2;
-036D : 4A2249B2;
-036E : 80826105;
-036F : 04000513;
-0370 : 10004A03;
-0371 : 0000A023;
-0372 : 10A00023;
-0373 : 08200613;
-0374 : 88C01523;
-0375 : 88002A23;
-0376 : 09134401;
-0377 : 09931780;
-0378 : 08331000;
-0379 : 25030089;
-037A : CD010008;
-037B : 01055883;
-037C : 0808FE13;
-037D : 000E0763;
-037E : 04052E83;
-037F : 85D2461D;
-0380 : 04119E82;
-0381 : FD341FE3;
-0382 : 4F83BF51;
-0383 : 4F0301F4;
-0384 : 0E238940;
-0385 : 0A2301F4;
-0386 : 570389F0;
-0387 : 75930104;
-0388 : 77930FFF;
-0389 : 83E31007;
-038A : 2303EC07;
-038B : 46010384;
-038C : 93028522;
-038D : 47A1BD65;
-038E : 828B575D;
-038F : C10C06E7;
-0390 : 14802383;
-0391 : 0EA3C150;
-0392 : 166300D5;
-0393 : 454C0275;
-0394 : 01055E03;
-0395 : 00C03633;
-0396 : 00B036B3;
-0397 : 00869813;
-0398 : 010668B3;
-0399 : 01C8EEB3;
-039A : 082EEF13;
-039B : 89E01523;
-039C : 2A234D48;
-039D : FF9388A0;
-039E : 57DD0082;
-039F : 06FF878B;
-03A0 : 47A18082;
-03A1 : 828B575D;
-03A2 : 831306E7;
-03A3 : C5500015;
-03A4 : 00652423;
-03A5 : 0005C383;
-03A6 : 00D50EA3;
-03A7 : 14802683;
-03A8 : 00750E23;
-03A9 : 02D51763;
-03AA : 00452803;
-03AB : 01055F03;
-03AC : 00C03633;
-03AD : 010038B3;
-03AE : 00861E13;
-03AF : 01C8EEB3;
-03B0 : 01EEEFB3;
-03B1 : 082FE793;
-03B2 : 88F01523;
-03B3 : 2A234D48;
-03B4 : F29388A0;
-03B5 : 575D0082;
-03B6 : 06E2878B;
-03B7 : 47A18082;
-03B8 : 828B575D;
-03B9 : 230306E7;
-03BA : 0FA300C5;
-03BB : 1A6300B5;
-03BC : 26030003;
-03BD : 0E231480;
-03BE : 146300B5;
-03BF : 0A2300C5;
-03C0 : F51388B0;
-03C1 : 55DD0082;
-03C2 : 06B5078B;
-03C3 : 47A18082;
-03C4 : 828B575D;
-03C5 : 238306E7;
-03C6 : 0EA31480;
-03C7 : 146300B5;
-03C8 : 0AA30075;
-03C9 : F51388B0;
-03CA : 55DD0082;
-03CB : 06B5078B;
-03CC : 07938082;
-03CD : 18230940;
-03CE : 0EA300F5;
-03CF : 0AA30005;
-03D0 : 42838800;
-03D1 : 06A304F5;
-03D2 : E3130405;
-03D3 : 07A30012;
-03D4 : 80820465;
-03D5 : 04F54783;
-03D6 : 0027E293;
-03D7 : 045507A3;
-03D8 : 47838082;
-03D9 : E29304F5;
-03DA : 07A30047;
-03DB : 80820455;
-03DC : C7CE7115;
-03DD : CDA2CF86;
-03DE : CBA6C1DA;
-03DF : C5D2C9CA;
-03E0 : DF5EC3D6;
-03E1 : DB66DD62;
-03E2 : D76ED96A;
-03E3 : 0F400093;
-03E4 : 12402B03;
-03E5 : 0000A283;
-03E6 : 88002483;
-03E7 : 0054F413;
-03E8 : 17628063;
-03E9 : 43836309;
-03EA : 0B93AB83;
-03EB : F5130F40;
-03EC : C1710013;
-03ED : 40001097;
-03EE : 12A080E7;
-03EF : 00157913;
-03F0 : 00090563;
-03F1 : 4A014A85;
-03F2 : 0A93A8D9;
-03F3 : AA038080;
-03F4 : 7CB7000A;
-03F5 : 3D374000;
-03F6 : 6C134001;
-03F7 : A023002A;
-03F8 : 4605018A;
-03F9 : 36BC8593;
-03FA : 260D0513;
-03FB : 40004097;
-03FC : FA8080E7;
-03FD : 77B7C105;
-03FE : 85134000;
-03FF : 00977467;
-0400 : 80E74000;
-0401 : A9836E80;
-0402 : F293000A;
-0403 : A023FFD9;
-0404 : BF4D005A;
-0405 : 100C0850;
-0406 : 36BC8513;
-0407 : 02010023;
-0408 : 5097CA02;
-0409 : 80E74000;
-040A : 4652DEC0;
-040B : 40007DB7;
-040C : 8513100C;
-040D : 009775FD;
-040E : 80E74000;
-040F : 08706B00;
-0410 : 8513082C;
-0411 : CC0236BC;
-0412 : 40005097;
-0413 : C5E080E7;
-0414 : 45E24E72;
-0415 : 40007FB7;
-0416 : 00AE5E83;
-0417 : 01CE2F03;
-0418 : 78DF8513;
-0419 : 009E9693;
-041A : FFEF0613;
-041B : 40000097;
-041C : 67A080E7;
-041D : 1097BF81;
-041E : 80E74000;
-041F : 759301A0;
-0420 : F1A90015;
-0421 : 14C00813;
-0422 : 00082703;
-0423 : 08B346FD;
-0424 : F56340EB;
-0425 : 20230716;
-0426 : 4A810168;
-0427 : A0234A05;
-0428 : 0093016B;
-0429 : A7030F80;
-042A : FB930000;
-042B : C25E0014;
-042C : 0E63C002;
-042D : 03130A87;
-042E : A0238080;
-042F : 23830080;
-0430 : F5930003;
-0431 : 96130014;
-0432 : F5130025;
-0433 : 6833FFB3;
-0434 : 78B700A6;
-0435 : 20234000;
-0436 : 89130103;
-0437 : 43297138;
-0438 : 46834C35;
-0439 : 09050009;
-043A : 8891EE99;
-043B : 7A37C8A9;
-043C : 0D134000;
-043D : 4C29728A;
-043E : A01D4CB5;
-043F : B5E14A81;
-0440 : 4A014A81;
-0441 : 9463BF79;
-0442 : 00230066;
-0443 : 00239980;
-0444 : BFC198D0;
-0445 : 018D9463;
-0446 : 99900023;
-0447 : 99B00023;
-0448 : 000D4D83;
-0449 : 97E30D05;
-044A : 4E12FE0D;
-044B : 160E1563;
-044C : 40007EB7;
-044D : 72FE8793;
-044E : 49B54FA9;
-044F : 7AB7A821;
-0450 : 8D134000;
-0451 : BF45722A;
-0452 : 01F29463;
-0453 : 99300023;
-0454 : 98500023;
-0455 : 0007C283;
-0456 : 97E30785;
-0457 : 8C39FE02;
-0458 : 00245713;
-0459 : 7A934B05;
-045A : C05A0017;
-045B : 63894A05;
-045C : 4000C0B7;
-045D : 85136309;
-045E : 8D13BD03;
-045F : 4B814000;
-0460 : 84934B01;
-0461 : 0C134000;
-0462 : C42AAB83;
-0463 : 04ED4583;
-0464 : 100A8863;
-0465 : 10058763;
-0466 : 4901846A;
-0467 : 47834DA1;
-0468 : F2932AE4;
-0469 : 84630017;
-046A : 47030402;
-046B : 7313001C;
-046C : 18630017;
-046D : 05130003;
-046E : 40970504;
-046F : 80E74000;
-0470 : 43837520;
-0471 : F0932AE4;
-0472 : 0723FFE3;
-0473 : 45032A14;
-0474 : 059304CD;
-0475 : 0623FFF5;
-0476 : 480304BD;
-0477 : 78932AF4;
-0478 : 96630048;
-0479 : 76130008;
-047A : 0723FFE8;
-047B : 09052AC4;
-047C : 2E840413;
-047D : FBB915E3;
-047E : 040D0723;
-047F : C6914682;
-0480 : 2097856A;
-0481 : 80E74000;
-0482 : 4E1292A0;
-0483 : 0E634981;
-0484 : 5CDD020E;
-0485 : 870B4EA1;
-0486 : 6F09079E;
-0487 : B90F0F93;
-0488 : 03FB07B3;
-0489 : 00F48DB3;
-048A : 04FDC983;
-048B : 040D87A3;
-048C : 0FF9F993;
-048D : 0790068B;
-048E : 0069F293;
-048F : 20028D63;
-0490 : 2097856A;
-0491 : 80E74000;
-0492 : 46038EA0;
-0493 : 106304ED;
-0494 : 6F894606;
-0495 : B90F8793;
-0496 : 42910B05;
-0497 : 9BBE9D3E;
-0498 : F25B16E3;
-0499 : 000A0A63;
-049A : 80800493;
-049B : 0004AA03;
-049C : FFDA7A93;
-049D : 0154A023;
-049E : 446E40FE;
-049F : 494E44DE;
-04A0 : 4A2E49BE;
-04A1 : 4B0E4A9E;
-04A2 : 5C6A5BFA;
-04A3 : 5D4A5CDA;
-04A4 : 612D5DBA;
-04A5 : 7F378082;
-04A6 : 07934000;
-04A7 : BD6973BF;
-04A8 : 4603FDB1;
-04A9 : 7813000C;
-04AA : 19E30016;
-04AB : 2883F408;
-04AC : 66898800;
-04AD : BDB68D93;
-04AE : 0048F913;
-04AF : 00091563;
-04B0 : 8D934CA2;
-04B1 : 0E1300AC;
-04B2 : 0E930300;
-04B3 : 802302F0;
-04B4 : 80A301CD;
-04B5 : 812301DD;
-04B6 : 0413000D;
-04B7 : 8CEA2A8D;
-04B8 : 03000913;
-04B9 : 044D2F03;
-04BA : 40007FB7;
-04BB : 0693874A;
-04BC : 8613008F;
-04BD : 45917BFF;
-04BE : 89B78522;
-04BF : 0D934000;
-04C0 : 5097DA84;
-04C1 : 80E74000;
-04C2 : 89933F60;
-04C3 : A6838C89;
-04C4 : 83630009;
-04C5 : 77B71206;
-04C6 : 87224000;
-04C7 : 7C778613;
-04C8 : 04000593;
-04C9 : 50971008;
-04CA : 80E74000;
-04CB : C2833D20;
-04CC : F7132AEC;
-04CD : CB050012;
-04CE : 001C4083;
-04CF : 0010F313;
-04D0 : 00031763;
-04D1 : 4097856E;
-04D2 : 80E74000;
-04D3 : C3835C60;
-04D4 : F5132AEC;
-04D5 : 8723FFE3;
-04D6 : 45832AAC;
-04D7 : 861304CD;
-04D8 : 0623FFF5;
-04D9 : C80304CD;
-04DA : 78932AFC;
-04DB : 92630048;
-04DC : 7F930E08;
-04DD : 87230FE8;
-04DE : F6932BFC;
-04DF : 4605002F;
-04E0 : 460DE291;
-04E1 : 856E100C;
-04E2 : 4097C632;
-04E3 : 80E74000;
-04E4 : 4EA9C6A0;
-04E5 : 2AECCE03;
-04E6 : 01D51A63;
-04E7 : 7F934F32;
-04E8 : 8563002F;
-04E9 : 6F93000F;
-04EA : B7F1002E;
-04EB : C1114785;
-04EC : 62B34791;
-04ED : 872300FE;
-04EE : F7132A5C;
-04EF : CB510012;
-04F0 : 400079B7;
-04F1 : 85A21010;
-04F2 : 7CC98513;
-04F3 : 40000097;
-04F4 : 31A080E7;
-04F5 : 02200313;
-04F6 : 00840393;
-04F7 : 2A6CA823;
-04F8 : 0A7CA023;
-04F9 : 567D55FD;
-04FA : 4097856E;
-04FB : 80E74000;
-04FC : C9115440;
-04FD : 40007DB7;
-04FE : 851385A2;
-04FF : 00977E0D;
-0500 : 80E74000;
-0501 : 26032E80;
-0502 : A083044D;
-0503 : A583064C;
-0504 : 5883060C;
-0505 : 95130026;
-0506 : D8130180;
-0507 : 66330085;
-0508 : F3630105;
-0509 : 864600C8;
-050A : 2ACC9623;
-050B : 04CD4683;
-050C : 00168E13;
-050D : 05CD0623;
-050E : 0E930905;
-050F : 04130380;
-0510 : 8C932E84;
-0511 : 1FE32E8C;
-0512 : 4F05E9D9;
-0513 : 05ED0723;
-0514 : 0991B375;
-0515 : F713BD6D;
-0516 : 08E30019;
-0517 : 4303DE07;
-0518 : 4603049D;
-0519 : 6505048D;
-051A : 00635393;
-051B : 79050593;
-051C : 00839093;
-051D : 00BB8833;
-051E : 010088B3;
-051F : 00167913;
-0520 : 00737C93;
-0521 : 01148433;
-0522 : 04090063;
-0523 : 2E800693;
-0524 : 02DC8DB3;
-0525 : 00FD8E33;
-0526 : 01C48EB3;
-0527 : 2AEECF03;
-0528 : 001F7F93;
-0529 : 040F9963;
-052A : F8000893;
-052B : 051D06A3;
-052C : 08000593;
-052D : 3425856A;
-052E : 040D0423;
-052F : 048D4603;
-0530 : FFE67693;
-0531 : 04DD0423;
-0532 : 048D4D83;
-0533 : 002DFE13;
-0534 : 0A0E0463;
-0535 : 010D5803;
-0536 : FFDDF593;
-0537 : 04BD0423;
-0538 : 10086893;
-0539 : 011D1823;
-053A : 06134685;
-053B : 85A21000;
-053C : 3A41856A;
-053D : 856ABB99;
-053E : 40001097;
-053F : 5C8080E7;
-0540 : 0813E901;
-0541 : 06A30210;
-0542 : 0593050D;
-0543 : B75D0210;
-0544 : 80800793;
-0545 : A283D002;
-0546 : 45950007;
-0547 : E713856A;
-0548 : C3980022;
-0549 : 831332ED;
-054A : 83B3050B;
-054B : 856A006D;
-054C : 00748933;
-054D : 40001097;
-054E : 55A080E7;
-054F : 00851593;
-0550 : 854A4601;
-0551 : 40004097;
-0552 : 3EA080E7;
-0553 : 45A1C511;
-0554 : 04BD06A3;
-0555 : BFB945A1;
-0556 : 06131014;
-0557 : 85A21000;
-0558 : 4097854A;
-0559 : 80E74000;
-055A : F175DB60;
-055B : 05135082;
-055C : 9EE31000;
-055D : B799FCA0;
-055E : 004DFE93;
-055F : 020E8563;
-0560 : 010D5083;
-0561 : FFBDF913;
-0562 : 052D0423;
-0563 : 0010E513;
-0564 : 00AD1823;
-0565 : 04100693;
-0566 : 10000613;
-0567 : 856A85A2;
-0568 : 897FF0EF;
-0569 : FF13B15D;
-056A : 0563008D;
-056B : 6789040F;
-056C : 2E800F93;
-056D : B9078293;
-056E : 03FC8CB3;
-056F : 025B0733;
-0570 : 00EC8333;
-0571 : 00648DB3;
-0572 : 2AEDC383;
-0573 : 0013F913;
-0574 : 02091E63;
-0575 : F8000293;
-0576 : 045D06A3;
-0577 : 08000593;
-0578 : 38F5856A;
-0579 : 040D0423;
-057A : 048D4703;
-057B : FF777313;
-057C : 046D0423;
-057D : 048D4D83;
-057E : F393856A;
-057F : 042300FD;
-0580 : 1097047D;
-0581 : 80E74000;
-0582 : B1814F60;
-0583 : 0023F093;
-0584 : 00008963;
-0585 : 04000793;
-0586 : 04FD06A3;
-0587 : 04000593;
-0588 : 856AB7C1;
-0589 : 40001097;
-058A : 49C080E7;
-058B : 0F93E901;
-058C : 06A30210;
-058D : 059305FD;
-058E : B75D0210;
-058F : 0513D002;
-0590 : 410C8080;
-0591 : 050B8893;
-0592 : 011C8633;
-0593 : 0025E813;
-0594 : 01052023;
-0595 : 8CB3856A;
-0596 : 109700C4;
+01BB : 40007A37;
+01BC : 710A0E13;
+01BD : 000E2E83;
+01BE : 01234F37;
+01BF : 567F0F93;
+01C0 : 710A0493;
+01C1 : 01FE9963;
+01C2 : E7B740D8;
+01C3 : 809398BA;
+01C4 : 0A63CFE7;
+01C5 : C2B71017;
+01C6 : 03B7193A;
+01C7 : 75B74000;
+01C8 : 76B74000;
+01C9 : 8313F4D5;
+01CA : 5A7D6042;
+01CB : 49014981;
+01CC : 8E134501;
+01CD : 86130003;
+01CE : 8E937185;
+01CF : AA3925F6;
+01D0 : 01F39463;
+01D1 : 99E00023;
+01D2 : 98700023;
+01D3 : 9463B795;
+01D4 : 002300D5;
+01D5 : 002399D0;
+01D6 : B7AD98B0;
+01D7 : 00A79463;
+01D8 : 98500023;
+01D9 : 98F00023;
+01DA : 0000C783;
+01DB : F7FD0085;
+01DC : 80800493;
+01DD : A0234319;
+01DE : 45950064;
+01DF : 0913C08C;
+01E0 : 46291114;
+01E1 : 43834A35;
+01E2 : 09050009;
+01E3 : 20039763;
+01E4 : C0102E73;
+01E5 : 1908B9B7;
+01E6 : 0FF98A13;
+01E7 : C0102673;
+01E8 : 41C606B3;
+01E9 : FEDA7CE3;
+01EA : 00234EB5;
+01EB : 4F2999D0;
+01EC : 99E00023;
+01ED : 12C40F93;
+01EE : 43B54E29;
+01EF : 000FC883;
+01F0 : 93630F85;
+01F1 : 18371E08;
+01F2 : 04934000;
+01F3 : 89134348;
+01F4 : 09930104;
+01F5 : 00230200;
+01F6 : 40889930;
+01F7 : 31FD0491;
+01F8 : FE991BE3;
+01F9 : 13D40713;
+01FA : 40B545A9;
+01FB : 00074503;
+01FC : 12630705;
+01FD : 10971C05;
+01FE : 80E74000;
+01FF : 0413C3E0;
+0200 : 43291534;
+0201 : 428347B5;
+0202 : 04050004;
+0203 : 1A029C63;
+0204 : 40F24462;
+0205 : 494244D2;
+0206 : 4A2249B2;
+0207 : 13176105;
+0208 : 00674000;
+0209 : 0093C3A3;
+020A : 452907A4;
+020B : BF2D42B5;
+020C : 000E2F83;
+020D : 48B30E11;
+020E : 033301F3;
+020F : 2E2303D3;
+0210 : 2803FF1E;
+0211 : 957EFFCE;
+0212 : FFFE2E23;
+0213 : 01184733;
+0214 : 00E96933;
+0215 : 01F9E9B3;
+0216 : 01FA7A33;
+0217 : FCCE6AE3;
+0218 : 09A40813;
+0219 : 4EB54F29;
+021A : 00084883;
+021B : 98630805;
+021C : 39A90A08;
+021D : 0B040513;
+021E : 463546A9;
+021F : 00054F03;
+0220 : 15630505;
+0221 : 25030A0F;
+0222 : 31890080;
+0223 : 00234735;
+0224 : 47A998E0;
+0225 : 98F00023;
+0226 : 0BB40293;
+0227 : 43B54E29;
+0228 : 0002C083;
+0229 : 9A630285;
+022A : 85520800;
+022B : 0A133105;
+022C : C5130200;
+022D : 0023FFF9;
+022E : 39099940;
+022F : 432949B5;
+0230 : 99300023;
+0231 : 98600023;
+0232 : 0D440393;
+0233 : 433545A9;
+0234 : 0003CE03;
+0235 : 19630385;
+0236 : 4088060E;
+0237 : 05933EC5;
+0238 : 00230200;
+0239 : 40C898B0;
+023A : 36CD44B5;
+023B : 00234629;
+023C : 00239890;
+023D : 1C6398C0;
+023E : 78B70609;
+023F : 35374000;
+0240 : 4A014001;
+0241 : 71888993;
+0242 : 0A050293;
+0243 : 0659E663;
+0244 : E60A00E3;
+0245 : 0F840713;
+0246 : 4FB54F29;
+0247 : 9463A895;
+0248 : 002301E8;
+0249 : 002399D0;
+024A : BF3D9910;
+024B : 00DF1463;
+024C : 98C00023;
+024D : 99E00023;
+024E : 9463B791;
+024F : 002301C0;
+0250 : 00239870;
+0251 : BFA99810;
+0252 : 00BE1463;
+0253 : 98600023;
+0254 : 99C00023;
+0255 : 1463BFB5;
+0256 : 00230128;
+0257 : 002398D0;
+0258 : C8039900;
+0259 : 0E85000E;
+025A : FE0817E3;
+025B : 0E93B779;
+025C : 49290E04;
+025D : B7F546B5;
+025E : 0009A083;
+025F : 6A330991;
+0260 : B769001A;
+0261 : 01E79463;
+0262 : 99F00023;
+0263 : 98F00023;
+0264 : 00074783;
+0265 : F7FD0705;
+0266 : 9463BBE1;
+0267 : 002300C3;
+0268 : 00239940;
+0269 : B3C59870;
+026A : 01C89463;
+026B : 98700023;
+026C : 99100023;
+026D : 1463B521;
+026E : 002300B5;
+026F : 00239810;
+0270 : B52D98A0;
+0271 : 00629463;
+0272 : 98F00023;
+0273 : 98500023;
+0274 : 4785BD1D;
+0275 : 00A79533;
+0276 : FFF54293;
+0277 : 0655050B;
+0278 : 27038082;
+0279 : 02B700C0;
+027A : 20233B00;
+027B : 8333A0A0;
+027C : 03B300E2;
+027D : 053700B3;
+027E : 22232D00;
+027F : 8E49A070;
+0280 : A0C02423;
+0281 : 20238082;
+0282 : 07B7A0A0;
+0283 : 22232000;
+0284 : 8DDDA000;
+0285 : A0B02423;
+0286 : 02938082;
+0287 : A70312C0;
+0288 : 06930002;
+0289 : A0230017;
+028A : CB1900D2;
+028B : 0E634385;
+028C : 08931277;
+028D : 08132000;
+028E : 878BDFF0;
+028F : 80820708;
+0290 : C6061141;
+0291 : C226C422;
+0292 : A0400093;
+0293 : 50000337;
+0294 : 0060A023;
+0295 : A0800393;
+0296 : 01000437;
+0297 : 0083A023;
+0298 : 20000513;
+0299 : 0805060B;
+029A : 11000637;
+029B : 00C0A023;
+029C : 020004B7;
+029D : 0093A023;
+029E : 0805060B;
+029F : 00010001;
+02A0 : 4B0005B7;
+02A1 : 00B0A023;
+02A2 : 15000837;
+02A3 : 0103A023;
+02A4 : 0805068B;
+02A5 : 140008B7;
+02A6 : 0113A023;
+02A7 : 0805068B;
+02A8 : A1000E13;
+02A9 : 000E2E83;
+02AA : 17800413;
+02AB : 01D42A23;
+02AC : 04000F37;
+02AD : 01E3A023;
+02AE : 0805078B;
+02AF : 000E2F83;
+02B0 : 400002B7;
+02B1 : 400077B7;
+02B2 : 00028713;
+02B3 : 71878693;
+02B4 : 40E68633;
+02B5 : 85134581;
+02B6 : 28230002;
+02B7 : 371101F4;
+02B8 : 01042F03;
+02B9 : 06374848;
+02BA : 0393D000;
+02BB : 06231780;
+02BC : 472D0004;
+02BD : 03900313;
+02BE : 04800E13;
+02BF : 04E00E93;
+02C0 : 05200493;
+02C1 : 00860593;
+02C2 : 709358FD;
+02C3 : 181301FF;
+02C4 : 541301B5;
+02C5 : 8793005F;
+02C6 : 6F330300;
+02C7 : 81150088;
+02C8 : 0FF0F293;
+02C9 : 02F37163;
+02CA : 03708F93;
+02CB : 5C6387FE;
+02CC : 879301FE;
+02CD : F8630382;
+02CE : 879300FE;
+02CF : F4630392;
+02D0 : 879300F4;
+02D1 : 86B303A2;
+02D2 : 161300E3;
+02D3 : 80230037;
+02D4 : 00B300F6;
+02D5 : A02300B6;
+02D6 : 177D00F0;
+02D7 : FB1717E3;
+02D8 : 442240B2;
+02D9 : 01414492;
+02DA : 73378082;
+02DB : 3EB74000;
+02DC : 0E134001;
+02DD : 85937183;
+02DE : 85B30A0E;
+02DF : 051341C5;
+02E0 : B5517183;
+02E1 : CE061101;
+02E2 : CC22CA26;
+02E3 : C64EC84A;
+02E4 : 5783C452;
+02E5 : 00938880;
+02E6 : 94931480;
+02E7 : F2930107;
+02E8 : A4030FF7;
+02E9 : 80C10000;
+02EA : 12028263;
+02EB : 89104303;
+02EC : 89004583;
+02ED : 76134695;
+02EE : F5930FF3;
+02EF : E4630FF5;
+02F0 : 4F051066;
+02F1 : 14CF6F63;
+02F2 : 10061463;
+02F3 : 14040D63;
+02F4 : 00442F83;
+02F5 : 020F8963;
+02F6 : 8713401C;
+02F7 : C0180017;
+02F8 : 00B78023;
+02F9 : 01D44083;
+02FA : 01444283;
+02FB : 0050F333;
+02FC : 00640EA3;
+02FD : 88600AA3;
+02FE : 83934054;
+02FF : 2223FFF6;
+0300 : 98630074;
+0301 : 03B30203;
+0302 : 8B2300C4;
+0303 : 5A0300B3;
+0304 : 55330104;
+0305 : 791340CA;
+0306 : 0C630015;
+0307 : 09930009;
+0308 : 98130086;
+0309 : 08B30029;
+030A : AE030104;
+030B : 85220008;
+030C : F5939E02;
+030D : C1A11004;
+030E : 0D634450;
+030F : 0E931406;
+0310 : 2623FFF6;
+0311 : 876301D4;
+0312 : 4083140E;
+0313 : 428301D4;
+0314 : F6B30154;
+0315 : 0EA30050;
+0316 : 0AA300D4;
+0317 : 238388D0;
+0318 : 8A130084;
+0319 : 24230013;
+031A : C5030144;
+031B : 0E230003;
+031C : 0A2300A4;
+031D : F91388A0;
+031E : 05632004;
+031F : 48030209;
+0320 : 498301D4;
+0321 : 0AA38950;
+0322 : 58838900;
+0323 : F5930104;
+0324 : FE130FF9;
+0325 : 07632008;
+0326 : 2E83000E;
+0327 : 460503C4;
+0328 : 9E828522;
+0329 : 5F83444C;
+032A : 40400104;
+032B : 00B03633;
+032C : 00861F13;
+032D : 01FF6733;
+032E : 008037B3;
+032F : 00E7E333;
+0330 : 08236093;
+0331 : 439DA09D;
+0332 : 06760F63;
+0333 : A8A1F03D;
+0334 : 03F5FA13;
+0335 : 002A1913;
+0336 : 19000813;
+0337 : 012808B3;
+0338 : 0008A403;
+0339 : 11400023;
+033A : 0080A023;
+033B : 08200313;
+033C : 2E03C015;
+033D : 5F8300C4;
+033E : 405C0104;
+033F : 01C03EB3;
+0340 : 008E9F13;
+0341 : 01FF6733;
+0342 : 00F030B3;
+0343 : 00E0E2B3;
+0344 : 0822E313;
+0345 : 88601523;
+0346 : C0114681;
+0347 : 2A234C54;
+0348 : 12E388D0;
+0349 : 0093EE04;
+034A : 92930820;
+034B : E4B30100;
+034C : 24230092;
+034D : 40F28890;
+034E : 44D24462;
+034F : 49B24942;
+0350 : 61054A22;
+0351 : 05138082;
+0352 : 4A030400;
+0353 : A0231000;
+0354 : 00230000;
+0355 : 061310A0;
+0356 : 15230820;
+0357 : 2A2388C0;
+0358 : 44018800;
+0359 : 19000913;
+035A : 10000993;
+035B : 00890833;
+035C : 00082503;
+035D : 5883CD01;
+035E : FE130105;
+035F : 07630808;
+0360 : 2E83000E;
+0361 : 461D0405;
+0362 : 9E8285D2;
+0363 : 1FE30411;
+0364 : BF51FD34;
+0365 : 01F44F83;
+0366 : 89404F03;
+0367 : 01F40E23;
+0368 : 89F00A23;
+0369 : 01045703;
+036A : 0FFF7593;
+036B : 10077793;
+036C : EC0783E3;
+036D : 03842303;
+036E : 85224601;
+036F : BD659302;
+0370 : 575D47A1;
+0371 : 06E7828B;
+0372 : 2383C10C;
+0373 : C1501480;
+0374 : 00D50EA3;
+0375 : 02751663;
+0376 : 5E03454C;
+0377 : 36330105;
+0378 : 36B300C0;
+0379 : 981300B0;
+037A : 68B30086;
+037B : EEB30106;
+037C : EF1301C8;
+037D : 1523082E;
+037E : 4D4889E0;
+037F : 88A02A23;
+0380 : 0082FF93;
+0381 : 878B57DD;
+0382 : 808206FF;
+0383 : 575D47A1;
+0384 : 06E7828B;
+0385 : 00158313;
+0386 : 2423C550;
+0387 : C3830065;
+0388 : 0EA30005;
+0389 : 268300D5;
+038A : 0E231480;
+038B : 17630075;
+038C : 280302D5;
+038D : 5F030045;
+038E : 36330105;
+038F : 38B300C0;
+0390 : 1E130100;
+0391 : EEB30086;
+0392 : EFB301C8;
+0393 : E79301EE;
+0394 : 1523082F;
+0395 : 4D4888F0;
+0396 : 88A02A23;
+0397 : 0082F293;
+0398 : 878B575D;
+0399 : 808206E2;
+039A : 575D47A1;
+039B : 06E7828B;
+039C : 00C52303;
+039D : 00B50FA3;
+039E : 00031A63;
+039F : 14802603;
+03A0 : 00B50E23;
+03A1 : 00C51463;
+03A2 : 88B00A23;
+03A3 : 0082F513;
+03A4 : 078B55DD;
+03A5 : 808206B5;
+03A6 : 575D47A1;
+03A7 : 06E7828B;
+03A8 : 14802383;
+03A9 : 00B50EA3;
+03AA : 00751463;
+03AB : 88B00AA3;
+03AC : 0082F513;
+03AD : 078B55DD;
+03AE : 808206B5;
+03AF : 09400793;
+03B0 : 00F51823;
+03B1 : 00050EA3;
+03B2 : 88000AA3;
+03B3 : 04F54283;
+03B4 : 040506A3;
+03B5 : 0012E313;
+03B6 : 046507A3;
+03B7 : 47838082;
+03B8 : E29304F5;
+03B9 : 07A30027;
+03BA : 80820455;
+03BB : 04F54783;
+03BC : 0047E293;
+03BD : 045507A3;
+03BE : 71158082;
+03BF : CF86C7CE;
+03C0 : C1DACDA2;
+03C1 : C9CACBA6;
+03C2 : C3D6C5D2;
+03C3 : DD62DF5E;
+03C4 : D96ADB66;
+03C5 : 0093D76E;
+03C6 : 2B030F40;
+03C7 : A2831240;
+03C8 : 24830000;
+03C9 : F4138800;
+03CA : 80630054;
+03CB : 63091762;
+03CC : A5834383;
+03CD : 0F400B93;
+03CE : 0013F513;
+03CF : 1097C171;
+03D0 : 80E74000;
+03D1 : 79131B00;
+03D2 : 05630015;
+03D3 : 4A850009;
+03D4 : A8D94A01;
+03D5 : 80800A93;
+03D6 : 000AAA03;
+03D7 : 40007CB7;
+03D8 : 40013D37;
+03D9 : 002A6C13;
+03DA : 018AA023;
+03DB : 85934605;
+03DC : 0513007C;
+03DD : 4097E60D;
+03DE : 80E74000;
+03DF : C1050320;
+03E0 : 400077B7;
+03E1 : 3E278513;
+03E2 : 40000097;
+03E3 : 758080E7;
+03E4 : 000AA983;
+03E5 : FFD9F293;
+03E6 : 005AA023;
+03E7 : 0850BF4D;
+03E8 : 8513100C;
+03E9 : 0023007C;
+03EA : CA020201;
+03EB : 40005097;
+03EC : E76080E7;
+03ED : 7DB74652;
+03EE : 100C4000;
+03EF : 3FBD8513;
+03F0 : 40000097;
+03F1 : 720080E7;
+03F2 : 082C0870;
+03F3 : 007C8513;
+03F4 : 5097CC02;
+03F5 : 80E74000;
+03F6 : 4E72CE80;
+03F7 : 7FB745E2;
+03F8 : 5E834000;
+03F9 : 2F0300AE;
+03FA : 851301CE;
+03FB : 9693429F;
+03FC : 0613009E;
+03FD : 0097FFEF;
+03FE : 80E74000;
+03FF : BF816EA0;
+0400 : 40001097;
+0401 : 0A0080E7;
+0402 : 00157593;
+0403 : 0813F1A9;
+0404 : 270314C0;
+0405 : 46FD0008;
+0406 : 40EB08B3;
+0407 : 0716F563;
+0408 : 01682023;
+0409 : 4A054A81;
+040A : 016BA023;
+040B : 0F800093;
+040C : 0000A703;
+040D : 0014FB93;
+040E : C002C25E;
+040F : 0A870E63;
+0410 : 80800313;
+0411 : 0080A023;
+0412 : 00032383;
+0413 : 0014F593;
+0414 : 00259613;
+0415 : FFB3F513;
+0416 : 00A66833;
+0417 : 400078B7;
+0418 : 01032023;
+0419 : 3AF88913;
+041A : 4C354329;
+041B : 00094683;
+041C : EE990905;
+041D : C8A98891;
+041E : 40007A37;
+041F : 3C4A0D13;
+0420 : 4CB54C29;
+0421 : 4A81A01D;
+0422 : 4A81B5E1;
+0423 : BF794A01;
+0424 : 00669463;
+0425 : 99800023;
+0426 : 98D00023;
+0427 : 9463BFC1;
+0428 : 0023018D;
+0429 : 00239990;
+042A : 4D8399B0;
+042B : 0D05000D;
+042C : FE0D97E3;
+042D : 15634E12;
+042E : 7EB7160E;
+042F : 87934000;
+0430 : 4FA93CBE;
+0431 : A82149B5;
+0432 : 40007AB7;
+0433 : 3BEA8D13;
+0434 : 9463BF45;
+0435 : 002301F2;
+0436 : 00239930;
+0437 : C2839850;
+0438 : 07850007;
+0439 : FE0297E3;
+043A : 57138C39;
+043B : 4B050024;
+043C : 00177A93;
+043D : 4A05C05A;
+043E : C0B76389;
+043F : 63094000;
+0440 : B7038513;
+0441 : 00008D13;
+0442 : 4B014B81;
+0443 : 00008493;
+0444 : A5830C13;
+0445 : 4583C42A;
+0446 : 886304ED;
+0447 : 8763100A;
+0448 : 846A1005;
+0449 : 4DA14901;
+044A : 2AE44783;
+044B : 0017F293;
+044C : 04028463;
+044D : 001C4703;
+044E : 00177313;
+044F : 00031863;
+0450 : 05040513;
+0451 : 40004097;
+0452 : 7DC080E7;
+0453 : 2AE44383;
+0454 : FFE3F093;
+0455 : 2A140723;
+0456 : 04CD4503;
+0457 : FFF50593;
+0458 : 04BD0623;
+0459 : 2AF44803;
+045A : 00487893;
+045B : 00089663;
+045C : FFE87613;
+045D : 2AC40723;
+045E : 04130905;
+045F : 15E32E84;
+0460 : 0723FBB9;
+0461 : 4682040D;
+0462 : 856AC691;
+0463 : 40002097;
+0464 : 9B2080E7;
+0465 : 49814E12;
+0466 : 020E0E63;
+0467 : 4EA15CDD;
+0468 : 079E870B;
+0469 : 0F936F09;
+046A : 07B3B90F;
+046B : 8DB303FB;
+046C : C98300F4;
+046D : 87A304FD;
+046E : F993040D;
+046F : 068B0FF9;
+0470 : F2930790;
+0471 : 8D630069;
+0472 : 856A2002;
+0473 : 40002097;
+0474 : 972080E7;
+0475 : 04ED4603;
+0476 : 46061063;
+0477 : 87936F89;
+0478 : 0B05B90F;
+0479 : 9D3E4291;
+047A : 16E39BBE;
+047B : 0A63F25B;
+047C : 0493000A;
+047D : AA038080;
+047E : 7A930004;
+047F : A023FFDA;
+0480 : 40FE0154;
+0481 : 44DE446E;
+0482 : 49BE494E;
+0483 : 4A9E4A2E;
+0484 : 5BFA4B0E;
+0485 : 5CDA5C6A;
+0486 : 5DBA5D4A;
+0487 : 8082612D;
+0488 : 40007F37;
+0489 : 3D7F0793;
+048A : FDB1BD69;
+048B : 000C4603;
+048C : 00167813;
+048D : F40819E3;
+048E : 88002883;
+048F : 8D936689;
+0490 : F913B7B6;
+0491 : 15630048;
+0492 : 4CA20009;
+0493 : 00AC8D93;
+0494 : 03000E13;
+0495 : 02F00E93;
+0496 : 01CD8023;
+0497 : 01DD80A3;
+0498 : 000D8123;
+0499 : 2A8D0413;
+049A : 09138CEA;
+049B : 2F030300;
+049C : 7FB7044D;
+049D : 874A4000;
+049E : 008F0693;
+049F : 45BF8613;
+04A0 : 85224591;
+04A1 : 400079B7;
+04A2 : DA840D93;
+04A3 : 40005097;
+04A4 : 108080E7;
+04A5 : 56498993;
+04A6 : 0009A683;
+04A7 : 12068363;
+04A8 : 400077B7;
+04A9 : 86138722;
+04AA : 05934637;
+04AB : 10080400;
+04AC : 40005097;
+04AD : 0E4080E7;
+04AE : 2AECC283;
+04AF : 0012F713;
+04B0 : 4083CB05;
+04B1 : F313001C;
+04B2 : 17630010;
+04B3 : 856E0003;
+04B4 : 40004097;
+04B5 : 650080E7;
+04B6 : 2AECC383;
+04B7 : FFE3F513;
+04B8 : 2AAC8723;
+04B9 : 04CD4583;
+04BA : FFF58613;
+04BB : 04CD0623;
+04BC : 2AFCC803;
+04BD : 00487893;
+04BE : 0E089263;
+04BF : 0FE87F93;
+04C0 : 2BFC8723;
+04C1 : 002FF693;
+04C2 : E2914605;
+04C3 : 100C460D;
+04C4 : C632856E;
+04C5 : 40004097;
+04C6 : CF4080E7;
+04C7 : CE034EA9;
+04C8 : 1A632AEC;
+04C9 : 4F3201D5;
+04CA : 002F7F93;
+04CB : 000F8563;
+04CC : 002E6F93;
+04CD : 4785B7F1;
+04CE : 4791C111;
+04CF : 00FE62B3;
+04D0 : 2A5C8723;
+04D1 : 0012F713;
+04D2 : 79B7CB51;
+04D3 : 10104000;
+04D4 : 851385A2;
+04D5 : 00974689;
+04D6 : 80E74000;
+04D7 : 031338A0;
+04D8 : 03930220;
+04D9 : A8230084;
+04DA : A0232A6C;
+04DB : 55FD0A7C;
+04DC : 856E567D;
+04DD : 40004097;
+04DE : 5CE080E7;
+04DF : 7DB7C911;
+04E0 : 85A24000;
+04E1 : 47CD8513;
+04E2 : 40000097;
+04E3 : 358080E7;
+04E4 : 044D2603;
+04E5 : 064CA083;
+04E6 : 060CA583;
+04E7 : 00265883;
+04E8 : 01809513;
+04E9 : 0085D813;
+04EA : 01056633;
+04EB : 00C8F363;
+04EC : 96238646;
+04ED : 46832ACC;
+04EE : 8E1304CD;
+04EF : 06230016;
+04F0 : 090505CD;
+04F1 : 03800E93;
+04F2 : 2E840413;
+04F3 : 2E8C8C93;
+04F4 : E9D91FE3;
+04F5 : 07234F05;
+04F6 : B37505ED;
+04F7 : BD6D0991;
+04F8 : 0019F713;
+04F9 : DE0708E3;
+04FA : 049D4303;
+04FB : 048D4603;
+04FC : 53936505;
+04FD : 05930063;
+04FE : 90937905;
+04FF : 88330083;
+0500 : 88B300BB;
+0501 : 79130100;
+0502 : 7C930016;
+0503 : 84330073;
+0504 : 00630114;
+0505 : 06930409;
+0506 : 8DB32E80;
+0507 : 8E3302DC;
+0508 : 8EB300FD;
+0509 : CF0301C4;
+050A : 7F932AEE;
+050B : 9963001F;
+050C : 0893040F;
+050D : 06A3F800;
+050E : 0593051D;
+050F : 856A0800;
+0510 : 04233425;
+0511 : 4603040D;
+0512 : 7693048D;
+0513 : 0423FFE6;
+0514 : 4D8304DD;
+0515 : FE13048D;
+0516 : 0463002D;
+0517 : 58030A0E;
+0518 : F593010D;
+0519 : 0423FFDD;
+051A : 689304BD;
+051B : 18231008;
+051C : 4685011D;
+051D : 10000613;
+051E : 856A85A2;
+051F : BB993A41;
+0520 : 1097856A;
+0521 : 80E74000;
+0522 : E9016500;
+0523 : 02100813;
+0524 : 050D06A3;
+0525 : 02100593;
+0526 : 0793B75D;
+0527 : D0028080;
+0528 : 0007A283;
+0529 : 856A4595;
+052A : 0022E713;
+052B : 32EDC398;
+052C : 050B8313;
+052D : 006D83B3;
+052E : 8933856A;
+052F : 10970074;
+0530 : 80E74000;
+0531 : 15935E20;
+0532 : 46010085;
+0533 : 4097854A;
+0534 : 80E74000;
+0535 : C5114740;
+0536 : 06A345A1;
+0537 : 45A104BD;
+0538 : 1014BFB9;
+0539 : 10000613;
+053A : 854A85A2;
+053B : 40004097;
+053C : E40080E7;
+053D : 5082F175;
+053E : 10000513;
+053F : FCA09EE3;
+0540 : FE93B799;
+0541 : 8563004D;
+0542 : 5083020E;
+0543 : F913010D;
+0544 : 0423FFBD;
+0545 : E513052D;
+0546 : 18230010;
+0547 : 069300AD;
+0548 : 06130410;
+0549 : 85A21000;
+054A : F0EF856A;
+054B : B15D897F;
+054C : 008DFF13;
+054D : 040F0563;
+054E : 0F936789;
+054F : 82932E80;
+0550 : 8CB3B907;
+0551 : 073303FC;
+0552 : 8333025B;
+0553 : 8DB300EC;
+0554 : C3830064;
+0555 : F9132AED;
+0556 : 1E630013;
+0557 : 02930209;
+0558 : 06A3F800;
+0559 : 0593045D;
+055A : 856A0800;
+055B : 042338F5;
+055C : 4703040D;
+055D : 7313048D;
+055E : 0423FF77;
+055F : 4D83046D;
+0560 : 856A048D;
+0561 : 00FDF393;
+0562 : 047D0423;
+0563 : 40001097;
+0564 : 57E080E7;
+0565 : F093B181;
+0566 : 89630023;
+0567 : 07930000;
+0568 : 06A30400;
+0569 : 059304FD;
+056A : B7C10400;
+056B : 1097856A;
+056C : 80E74000;
+056D : E9015240;
+056E : 02100F93;
+056F : 05FD06A3;
+0570 : 02100593;
+0571 : D002B75D;
+0572 : 80800513;
+0573 : 8893410C;
+0574 : 8633050B;
+0575 : E813011C;
+0576 : 20230025;
+0577 : 856A0105;
+0578 : 00C48CB3;
+0579 : 40001097;
+057A : 4BC080E7;
+057B : 00851593;
+057C : 85664601;
+057D : 40004097;
+057E : 34E080E7;
+057F : 0F13C901;
+0580 : 06A30200;
+0581 : 059305ED;
+0582 : B7850200;
+0583 : 2AEDC683;
+0584 : 10000613;
+0585 : EE1385A2;
+0586 : 87230086;
+0587 : 10142BCD;
+0588 : 40978566;
+0589 : 80E74000;
+058A : F971EF80;
+058B : 0E935402;
+058C : 16E31000;
+058D : BF35FDD4;
+058E : 000A1663;
+058F : 0049F993;
+0590 : B8098EE3;
+0591 : 4D81846A;
+0592 : 46834CA1;
+0593 : FE132AE4;
+0594 : 0E630086;
+0595 : 0513000E;
+0596 : 40970504;
 0597 : 80E74000;
-0598 : 15934340;
-0599 : 46010085;
-059A : 40978566;
-059B : 80E74000;
-059C : C9012C40;
-059D : 02000F13;
-059E : 05ED06A3;
-059F : 02000593;
-05A0 : C683B785;
-05A1 : 06132AED;
-05A2 : 85A21000;
-05A3 : 0086EE13;
-05A4 : 2BCD8723;
-05A5 : 85661014;
-05A6 : 40004097;
-05A7 : E6E080E7;
-05A8 : 5402F971;
-05A9 : 10000E93;
-05AA : FDD416E3;
-05AB : 1663BF35;
-05AC : F993000A;
-05AD : 8EE30049;
-05AE : 846AB809;
-05AF : 4CA14D81;
-05B0 : 2AE44683;
-05B1 : 0086FE13;
-05B2 : 000E0E63;
-05B3 : 05040513;
-05B4 : 40004097;
-05B5 : 084080E7;
-05B6 : 2AE44E83;
-05B7 : FF7EFF13;
-05B8 : 2BE40723;
-05B9 : 04130D85;
-05BA : 9BE32E84;
-05BB : B695FD9D;
-05BC : 01D54783;
-05BD : 0047E293;
-05BE : 00550EA3;
-05BF : 88500AA3;
-05C0 : 47838082;
-05C1 : E29301D5;
-05C2 : 0EA30027;
-05C3 : 0AA30055;
-05C4 : 80828850;
-05C5 : D4227179;
-05C6 : F793D606;
-05C7 : 842E0045;
-05C8 : 4083CFCD;
-05C9 : 031301D5;
-05CA : F29316D0;
-05CB : 0EA30FB0;
-05CC : 0AA30055;
-05CD : 43838850;
-05CE : 85B70073;
-05CF : 8893AE14;
-05D0 : 0613AE15;
-05D1 : 08331470;
-05D2 : 47030276;
-05D3 : 4F030063;
-05D4 : 45830053;
-05D5 : 50930033;
-05D6 : 7F930017;
-05D7 : 979303FF;
-05D8 : F293005F;
-05D9 : E6B301F0;
-05DA : 47830057;
-05DB : BE330023;
-05DC : 43830313;
-05DD : 43030043;
-05DE : F0930013;
-05DF : F61300F7;
-05E0 : 929301F3;
-05E1 : 073E0150;
-05E2 : CE02CC02;
-05E3 : 0EB34785;
-05E4 : 181301C8;
-05E5 : FE1300B6;
-05E6 : E8B301F5;
-05E7 : 1F130106;
-05E8 : 0EC6010E;
-05E9 : 01E8EFB3;
-05EA : 01430693;
-05EB : 011ED893;
-05EC : 005FE3B3;
-05ED : 011765B3;
-05EE : 01969613;
-05EF : 00C3E833;
-05F0 : 01059E13;
-05F1 : 1C23CA42;
-05F2 : 5F1300B1;
-05F3 : 1223010E;
-05F4 : 202391E0;
-05F5 : 01A39100;
-05F6 : 709316F0;
-05F7 : 8D630404;
-05F8 : 42830000;
-05F9 : 462101D5;
-05FA : 0402E693;
-05FB : 16D00593;
-05FC : F0EFC62A;
-05FD : 4532E44F;
-05FE : 53130462;
-05FF : 52634184;
-0600 : 46830A03;
-0601 : 071301D5;
-0602 : FE931650;
-0603 : 0EA30FD6;
-0604 : 0AA301D5;
-0605 : 288389D0;
-0606 : 26039000;
-0607 : 48519040;
-0608 : 0158DF93;
-0609 : 01070023;
-060A : F793CC32;
-060B : D09300FF;
-060C : 58130108;
-060D : 064600F6;
-060E : 00F70123;
-060F : 01F0F293;
-0610 : 00C807B7;
-0611 : 01165093;
-0612 : 005701A3;
-0613 : 0217B2B3;
-0614 : 0198DE13;
-0615 : 0F13CA46;
-0616 : D393FECE;
-0617 : D31300B8;
-0618 : F8930058;
-0619 : 00A301F8;
-061A : 9E1301E7;
-061B : 7F130018;
-061C : F4130018;
-061D : 769301F3;
-061E : 6FB303F3;
-061F : 02A301EE;
-0620 : 022300D7;
-0621 : 03230087;
-0622 : 03A301F7;
-0623 : 54220057;
-0624 : E69350B2;
-0625 : 4621080E;
-0626 : 16500593;
-0627 : F06F6145;
-0628 : 50B2DE4F;
-0629 : 61455422;
-062A : 57838082;
-062B : 46039980;
-062C : 92931750;
-062D : D3130107;
-062E : 8F1A0102;
-062F : 17500393;
-0630 : C595C211;
-0631 : 01037593;
-0632 : 0015B813;
-0633 : 01038023;
-0634 : 4703ED99;
-0635 : 78939900;
-0636 : 0E230FF7;
-0637 : 0FA30115;
-0638 : 5E030115;
-0639 : 1E939980;
-063A : DF13010E;
-063B : 1F93010E;
-063C : D793010F;
-063D : 5293010F;
-063E : 5693007F;
-063F : 1F23001F;
-0640 : 581398F0;
-0641 : F313009F;
-0642 : F6130082;
-0643 : C3830126;
-0644 : 65B30003;
-0645 : 771300C3;
-0646 : C8B30048;
-0647 : CE1300E5;
-0648 : 2F830E68;
-0649 : 4EB31480;
-064A : 0EA3007E;
-064B : 156301D5;
-064C : 4D4801F5;
-064D : 88A02A23;
-064E : 08238082;
-064F : 079398B0;
-0650 : 002303E0;
-0651 : 458198F0;
-0652 : 0793B78D;
-0653 : 002303C0;
-0654 : 458598F0;
-0655 : 0793BF99;
-0656 : 65090230;
-0657 : 98F00023;
-0658 : 05134581;
-0659 : B791B2C5;
-065A : 4F525245;
-065B : 00203A52;
-065C : 20746120;
-065D : 20007830;
-065E : 00783028;
-065F : 61420A29;
-0660 : 64612064;
-0661 : 73657264;
-0662 : 30203A73;
-0663 : 696D0078;
-0664 : 696C6173;
-0665 : 64656E67;
-0666 : 766E6900;
-0667 : 64696C61;
-0668 : 736E6920;
-0669 : 63757274;
-066A : 6E6F6974;
-066B : 2A0A0A00;
-066C : 48202A2A;
-066D : 6F6C6C65;
-066E : 6F57202C;
-066F : 21646C72;
-0670 : 2A2A2A20;
-0671 : 58414D0A;
-0672 : 66203038;
-0673 : 776D7269;
-0674 : 20657261;
-0675 : 706D6F63;
-0676 : 64656C69;
-0677 : 3A6E6F20;
-0678 : 44530020;
-0679 : 204D4152;
-067A : 61746164;
-067B : 65686320;
-067C : 75736B63;
-067D : 00203A6D;
-067E : 70786520;
-067F : 65746365;
-0680 : 42002064;
-0681 : 20737469;
-0682 : 61776C61;
-0683 : 73207379;
-0684 : 202C7465;
-0685 : 61656C63;
-0686 : 00203A72;
-0687 : 74736554;
-0688 : 74616420;
-0689 : 00203A61;
-068A : 41524453;
-068B : 6572204D;
-068C : 772F6461;
-068D : 65746972;
-068E : 72726520;
-068F : 000A726F;
-0690 : 41524453;
-0691 : 622E204D;
-0692 : 69207373;
-0693 : 6F6E2073;
-0694 : 657A2074;
-0695 : 0A216F72;
-0696 : 69615700;
-0697 : 676E6974;
-0698 : 73203520;
-0699 : 726F6620;
-069A : 73657420;
-069B : 676E6974;
-069C : 002E2E2E;
-069D : 41524453;
-069E : 756A204D;
-069F : 7420706D;
-06A0 : 3A747365;
-06A1 : 754A0A00;
-06A2 : 6E69706D;
-06A3 : 6F742067;
-06A4 : 52445320;
-06A5 : 2E2E4D41;
-06A6 : 6200202E;
-06A7 : 206B6361;
-06A8 : 53206E69;
-06A9 : 2E4D4152;
-06AA : 4F52000A;
-06AB : 6573204D;
-06AC : 6C616972;
-06AD : 0000203A;
-06AE : 00000101;
+0598 : 4E8310E0;
+0599 : FF132AE4;
+059A : 0723FF7E;
+059B : 0D852BE4;
+059C : 2E840413;
+059D : FD9D9BE3;
+059E : 4783B695;
+059F : E29301D5;
+05A0 : 0EA30047;
+05A1 : 0AA30055;
+05A2 : 80828850;
+05A3 : 01D54783;
+05A4 : 0027E293;
+05A5 : 00550EA3;
+05A6 : 88500AA3;
+05A7 : 71798082;
+05A8 : D606D422;
+05A9 : 0045F793;
+05AA : CFCD842E;
+05AB : 01D54083;
+05AC : 16D00313;
+05AD : 0FB0F293;
+05AE : 00550EA3;
+05AF : 88500AA3;
+05B0 : 00734383;
+05B1 : AE1485B7;
+05B2 : AE158893;
+05B3 : 14700613;
+05B4 : 02760833;
+05B5 : 00634703;
+05B6 : 00534F03;
+05B7 : 00334583;
+05B8 : 00175093;
+05B9 : 03FF7F93;
+05BA : 005F9793;
+05BB : 01F0F293;
+05BC : 0057E6B3;
+05BD : 00234783;
+05BE : 0313BE33;
+05BF : 00434383;
+05C0 : 00134303;
+05C1 : 00F7F093;
+05C2 : 01F3F613;
+05C3 : 01509293;
+05C4 : CC02073E;
+05C5 : 4785CE02;
+05C6 : 01C80EB3;
+05C7 : 00B61813;
+05C8 : 01F5FE13;
+05C9 : 0106E8B3;
+05CA : 010E1F13;
+05CB : EFB30EC6;
+05CC : 069301E8;
+05CD : D8930143;
+05CE : E3B3011E;
+05CF : 65B3005F;
+05D0 : 96130117;
+05D1 : E8330196;
+05D2 : 9E1300C3;
+05D3 : CA420105;
+05D4 : 00B11C23;
+05D5 : 010E5F13;
+05D6 : 91E01223;
+05D7 : 91002023;
+05D8 : 16F001A3;
+05D9 : 04047093;
+05DA : 00008D63;
+05DB : 01D54283;
+05DC : E6934621;
+05DD : 05930402;
+05DE : C62A16D0;
+05DF : E44FF0EF;
+05E0 : 04624532;
+05E1 : 41845313;
+05E2 : 0A035263;
+05E3 : 01D54683;
+05E4 : 16500713;
+05E5 : 0FD6FE93;
+05E6 : 01D50EA3;
+05E7 : 89D00AA3;
+05E8 : 90002883;
+05E9 : 90402603;
+05EA : DF934851;
+05EB : 00230158;
+05EC : CC320107;
+05ED : 00FFF793;
+05EE : 0108D093;
+05EF : 00F65813;
+05F0 : 01230646;
+05F1 : F29300F7;
+05F2 : 07B701F0;
+05F3 : 509300C8;
+05F4 : 01A30116;
+05F5 : B2B30057;
+05F6 : DE130217;
+05F7 : CA460198;
+05F8 : FECE0F13;
+05F9 : 00B8D393;
+05FA : 0058D313;
+05FB : 01F8F893;
+05FC : 01E700A3;
+05FD : 00189E13;
+05FE : 00187F13;
+05FF : 01F3F413;
+0600 : 03F37693;
+0601 : 01EE6FB3;
+0602 : 00D702A3;
+0603 : 00870223;
+0604 : 01F70323;
+0605 : 005703A3;
+0606 : 50B25422;
+0607 : 080EE693;
+0608 : 05934621;
+0609 : 61451650;
+060A : DE4FF06F;
+060B : 542250B2;
+060C : 80826145;
+060D : 99805783;
+060E : 17504603;
+060F : 01079293;
+0610 : 0102D313;
+0611 : 03938F1A;
+0612 : C2111750;
+0613 : 7593C595;
+0614 : B8130103;
+0615 : 80230015;
+0616 : ED990103;
+0617 : 99004703;
+0618 : 0FF77893;
+0619 : 01150E23;
+061A : 01150FA3;
+061B : 99805E03;
+061C : 010E1E93;
+061D : 010EDF13;
+061E : 010F1F93;
+061F : 010FD793;
+0620 : 007F5293;
+0621 : 001F5693;
+0622 : 98F01F23;
+0623 : 009F5813;
+0624 : 0082F313;
+0625 : 0126F613;
+0626 : 0003C383;
+0627 : 00C365B3;
+0628 : 00487713;
+0629 : 00E5C8B3;
+062A : 0E68CE13;
+062B : 14802F83;
+062C : 007E4EB3;
+062D : 01D50EA3;
+062E : 01F51563;
+062F : 2A234D48;
+0630 : 808288A0;
+0631 : 98B00823;
+0632 : 03E00793;
+0633 : 98F00023;
+0634 : B78D4581;
+0635 : 03C00793;
+0636 : 98F00023;
+0637 : BF994585;
+0638 : 02300793;
+0639 : 00236509;
+063A : 458198F0;
+063B : ACC50513;
+063C : 0000B791;
+063D : 4F525245;
+063E : 00203A52;
+063F : 20746120;
+0640 : 20007830;
+0641 : 00783028;
+0642 : 61420A29;
+0643 : 64612064;
+0644 : 73657264;
+0645 : 30203A73;
+0646 : 696D0078;
+0647 : 696C6173;
+0648 : 64656E67;
+0649 : 766E6900;
+064A : 64696C61;
+064B : 736E6920;
+064C : 63757274;
+064D : 6E6F6974;
+064E : 2A0A0A00;
+064F : 48202A2A;
+0650 : 6F6C6C65;
+0651 : 6F57202C;
+0652 : 21646C72;
+0653 : 2A2A2A20;
+0654 : 58414D0A;
+0655 : 66203038;
+0656 : 776D7269;
+0657 : 20657261;
+0658 : 706D6F63;
+0659 : 64656C69;
+065A : 3A6E6F20;
+065B : 44530020;
+065C : 204D4152;
+065D : 6D656573;
+065E : 6B6F2073;
+065F : 73202D20;
+0660 : 7070696B;
+0661 : 20676E69;
+0662 : 74736574;
+0663 : 4453000A;
+0664 : 204D4152;
+0665 : 61746164;
+0666 : 65686320;
+0667 : 75736B63;
+0668 : 00203A6D;
+0669 : 70786520;
+066A : 65746365;
+066B : 42002064;
+066C : 20737469;
+066D : 61776C61;
+066E : 73207379;
+066F : 202C7465;
+0670 : 61656C63;
+0671 : 00203A72;
+0672 : 74736554;
+0673 : 74616420;
+0674 : 00203A61;
+0675 : 41524453;
+0676 : 6572204D;
+0677 : 772F6461;
+0678 : 65746972;
+0679 : 72726520;
+067A : 000A726F;
+067B : 41524453;
+067C : 622E204D;
+067D : 69207373;
+067E : 6F6E2073;
+067F : 657A2074;
+0680 : 0A216F72;
+0681 : 69615700;
+0682 : 676E6974;
+0683 : 73203520;
+0684 : 726F6620;
+0685 : 73657420;
+0686 : 676E6974;
+0687 : 002E2E2E;
+0688 : 41524453;
+0689 : 756A204D;
+068A : 7420706D;
+068B : 3A747365;
+068C : 754A0A00;
+068D : 6E69706D;
+068E : 6F742067;
+068F : 52445320;
+0690 : 2E2E4D41;
+0691 : 6200202E;
+0692 : 206B6361;
+0693 : 53206E69;
+0694 : 2E4D4152;
+0695 : 0000000A;
+0696 : 00000101;
+0697 : 00000000;
+0698 : 00000000;
+0699 : 00000000;
+069A : 00000000;
+069B : 00000000;
+069C : 00000000;
+069D : 00000000;
+069E : 00000000;
+069F : 00000000;
+06A0 : 00000000;
+06A1 : 00000000;
+06A2 : 00000000;
+06A3 : 00000000;
+06A4 : 00000000;
+06A5 : 00000000;
+06A6 : 00000105;
+06A7 : 00007FBF;
+06A8 : 00000000;
+06A9 : D3030300;
+06AA : 0000167A;
+06AB : 00000000;
+06AC : 0000169E;
+06AD : 00000000;
+06AE : 00000000;
 06AF : 00000000;
-06B0 : 00000000;
+06B0 : 0000168C;
 06B1 : 00000000;
 06B2 : 00000000;
 06B3 : 00000000;
 06B4 : 00000000;
 06B5 : 00000000;
 06B6 : 00000000;
-06B7 : 00000000;
-06B8 : 00000000;
+06B7 : 00000101;
+06B8 : 0000FFFF;
 06B9 : 00000000;
-06BA : 00000000;
-06BB : 00000000;
+06BA : 0003F600;
+06BB : 000018C4;
 06BC : 00000000;
 06BD : 00000000;
-06BE : 00000105;
-06BF : 00007FBF;
+06BE : 00000000;
+06BF : 00000000;
 06C0 : 00000000;
-06C1 : D3030300;
-06C2 : 000016F0;
+06C1 : 000018D4;
+06C2 : 00000000;
 06C3 : 00000000;
-06C4 : 00001714;
+06C4 : 00000000;
 06C5 : 00000000;
 06C6 : 00000000;
 06C7 : 00000000;
-06C8 : 00001702;
+06C8 : 00000000;
 06C9 : 00000000;
 06CA : 00000000;
 06CB : 00000000;
 06CC : 00000000;
 06CD : 00000000;
 06CE : 00000000;
-06CF : 00000101;
-06D0 : 0000FFFF;
+06CF : 00000000;
+06D0 : 00000000;
 06D1 : 00000000;
-06D2 : 0003F600;
-06D3 : 0000193A;
+06D2 : 00000000;
+06D3 : 00000000;
 06D4 : 00000000;
 06D5 : 00000000;
 06D6 : 00000000;
 06D7 : 00000000;
 06D8 : 00000000;
-06D9 : 0000194A;
+06D9 : 00000000;
 06DA : 00000000;
 06DB : 00000000;
-06DC : 00000000;
-06DD : 00000000;
-06DE : 00000000;
-06DF : 00000000;
-06E0 : 00000000;
-06E1 : 00000000;
-06E2 : 00000000;
-06E3 : 00000000;
-06E4 : 00000000;
-06E5 : 00000000;
-06E6 : 00000000;
-06E7 : 00000000;
-06E8 : 00000000;
-06E9 : 00000000;
-06EA : 00000000;
-06EB : 00000000;
-06EC : 00000000;
-06ED : 00000000;
-06EE : 00000000;
-06EF : 00000000;
-06F0 : 00000000;
-06F1 : 00000000;
-06F2 : 00000000;
-06F3 : 00000000;
-06F4 : 6362612F;
-06F5 : 6B736964;
-06F6 : 3030382E;
-06F7 : 6557002F;
-06F8 : 65462064;
-06F9 : 32202062;
-06FA : 3A343020;
-06FB : 323A3833;
-06FC : 53502038;
-06FD : 30322054;
-06FE : 003232;
-[06FF..1FFF] : 00;
+06DC : 6362612F;
+06DD : 6B736964;
+06DE : 3030382E;
+06DF : 6557002F;
+06E0 : 65462064;
+06E1 : 32202062;
+06E2 : 3A353020;
+06E3 : 313A3231;
+06E4 : 53502036;
+06E5 : 30322054;
+06E6 : 003232;
+[06E7..1FFF] : 00;
 END;

BIN
fpga/output/v1.jic


BIN
fpga/output/v1.sof


BIN
fpga/output/v2.jic


BIN
fpga/output/v2.sof


+ 1 - 1
rv32/checksum.h

@@ -1,4 +1,4 @@
 #ifndef CHECKSUM_H
 #define CHECKSUM_H
-#define SDRAM_SUM 0xe3abe76a
+#define SDRAM_SUM 0xb09378de
 #endif

+ 20 - 2
rv32/fw.h

@@ -5,6 +5,23 @@
 #include "picorv32.h"
 #include "irq.h"
 
+/* Sometimes useful combination types */
+typedef union {
+    uint8_t  b[8];
+    uint16_t h[4];
+    uint32_t l[2];
+    uint64_t q;
+} qword_t;
+typedef union {
+    uint8_t  b[4];
+    uint16_t h[2];
+    uint32_t l;
+} lword_t;
+typedef union {
+    uint8_t  b[2];
+    uint16_t h;
+} hword_t;
+
 extern const size_t __rom_offset;
 extern const uint32_t __dram_checksum;
 extern const char __datestamp[];
@@ -43,10 +60,11 @@ extern void disk_cache_init(void);
 
 extern void pun80_init(void);
 
-extern uint32_t romcopy_time[2];
 extern void romcopy_download(void *, size_t, size_t);
 extern void romcopy_bzero(void *, size_t);
-extern uint64_t rom_get_serial(void);
+extern void rom_print_serial(void);
+extern qword_t rom_serial;
+extern char rom_serial_str[];
 
 extern void run_test_image(void);
 

+ 75 - 66
rv32/romcopy.c

@@ -69,7 +69,73 @@ void __hot romcopy_bzero(void *dst, size_t len)
     ROMCOPY_DATALEN = len | ROMCOPY_ZERO_BUFFER | ROMCOPY_WRITE_RAM;
 }
 
-static __hot void romcopy_config_flash(void)
+/*
+ * Read unique serial number programmed into ROM. Convert the serial
+ * number to 12 characters in base32; we lose four bits but that is never
+ * going to matter. It's more fun than plain hex... :)
+ *
+ * This is run before the 64-bit division routines are available in SDRAM,
+ * so it needs to be an encoding that can be generated with only plain
+ * 32-bit instructions.
+ *
+ * Doing this as early as possible means a much better chance to see
+ * the proper serial number during USB enumeration, so doing it
+ * immediately after SPI ROM conditioning is a great time.
+ */
+char __bss_hot rom_serial_str[16];
+qword_t __bss_hot rom_serial;
+
+static __must_inline void rom_read_serial(void)
+{
+    ROMCOPY_ROMCMD  = ROM_READ_UNIQUE_ID << 24;
+    ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(5) | ROMCOPY_SPI_MORE;
+    waitfor(ROMCOPY_IRQ);
+
+    ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(4) | ROMCOPY_SPI_MORE;
+    waitfor(ROMCOPY_IRQ);
+
+    rom_serial.l[1] = ROMCOPY_INPUT;
+    ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(4);
+    waitfor(ROMCOPY_IRQ);
+
+    rom_serial.l[0] = ROMCOPY_INPUT;
+}
+
+static __must_inline void rom_mangle_serial(void)
+{
+    rom_serial_str[12] = '\0';
+    uint64_t v = rom_serial.q;
+
+    for (int i = 11; i >= 0; i--) {
+	unsigned char c;
+	unsigned int d = v & 31;
+	v >>= 5;
+
+	c = d + '0';
+	if (c > '9')
+	    c += 'A'-'9'-1;
+	if (c >= 'I')
+	    c++;
+	if (c >= 'O')
+	    c++;
+	if (c >= 'S')
+	    c++;
+
+	/* IOSZ not used to avoid confusion with 1052 */
+
+	rom_serial_str[i] = c;
+	usbdesc_rom[2+2*i] = c;
+    }
+}
+
+void rom_print_serial(void)
+{
+    /* Print the ROM serial when we actually can */
+    con_printf("ROM serial: %08x-%08x (%s)\n",
+	       rom_serial.l[1], rom_serial.l[0], rom_serial_str);
+}
+
+static __must_inline void romcopy_config_flash(void)
 {
     /* Enable writing volatile status register bits */
     ROMCOPY_ROMCMD = ROM_VOLATILE_SR_WRITE_ENABLE << 24;
@@ -82,24 +148,6 @@ static __hot void romcopy_config_flash(void)
     waitfor(ROMCOPY_IRQ);
 
     asm volatile("nop; nop");	/* Make extra sure tSHSL2 is OK */
-
-    if ( 1 ) {
-	con_puts(hotstr("ROM serial: "));
-
-	ROMCOPY_ROMCMD  = ROM_READ_UNIQUE_ID << 24;
-	ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(5) | ROMCOPY_SPI_MORE;
-	waitfor(ROMCOPY_IRQ);
-
-	ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(4) | ROMCOPY_SPI_MORE;
-	waitfor(ROMCOPY_IRQ);
-
-	con_print_hex(ROMCOPY_INPUT);
-	ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(4);
-	waitfor(ROMCOPY_IRQ);
-
-	con_print_hex(ROMCOPY_INPUT);
-	con_putc('\n');
-    }
 }
 
 IRQHANDLER(romcopy,0)
@@ -109,11 +157,18 @@ IRQHANDLER(romcopy,0)
 
     switch (romcopy_state++) {
     case 0:
+	/* Condition flash ROM */
 	romcopy_config_flash();
 
-	/* Copy DRAM data */
+	/* Read serial number */
+	rom_read_serial();
+
+	/* Start copy DRAM data */
 	len = __dram_init_end - __dram_init_start;
 	romcopy_download(__dram_init_start, 0, len);
+
+	/* Convert serial number and export to USB */
+	rom_mangle_serial();
 	break;
     case 1:
 	/* Zero .dram.bss */
@@ -125,49 +180,3 @@ IRQHANDLER(romcopy,0)
 	break;
     }
 }
-
-/*
- * Read unique serial number programmed into ROM. Convert the serial
- * number to 12 characters in base36 (technically a wraparound that is
- * never going to matter.) It's more fun than plain hex... :)
- */
-char __bss_hot serial_str[16];
-
-uint64_t __hot rom_get_serial(void)
-{
-    union {
-	uint32_t l[2];
-	uint64_t q;
-    } o;
-
-    waitfor(ROMCOPY_IRQ);
-
-    ROMCOPY_ROMCMD  = ROM_READ_UNIQUE_ID << 24;
-    ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(5) | ROMCOPY_SPI_MORE;
-    waitfor(ROMCOPY_IRQ);
-
-    ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(4) | ROMCOPY_SPI_MORE;
-    waitfor(ROMCOPY_IRQ);
-
-    o.l[1] = ROMCOPY_INPUT;
-    ROMCOPY_DATALEN = ROMCOPY_SPI_CMDLEN(4);
-    waitfor(ROMCOPY_IRQ);
-
-    o.l[0] = ROMCOPY_INPUT;
-
-    serial_str[12] = '\0';
-    uint64_t v = o.q;
-    for (int i = 11; i >= 0; i--) {
-	unsigned char c;
-	unsigned int d = v % 36;
-	v /= 36;
-
-	c = d + '0' + ('A'-'0'-10)*(d >= 10);
-	serial_str[i] = c;
-	usbdesc_rom[2+2*i] = c;
-    }
-
-    con_printf("ROM serial: %08x-%08x (%s)\n", o.l[1], o.l[0], serial_str);
-
-    return o.q;
-}

+ 8 - 4
rv32/system.c

@@ -83,8 +83,11 @@ IRQHANDLER(sysclock,0)
 static void late_init(void);
 static void hello_sdram(void);
 
+#define TEST_DATA_0 0x01234567
+#define TEST_DATA_1 0x98badcfe
+
 static const volatile __dram_data
-uint32_t test_data[2] = { 0x01234567, 0x89abcdef };
+uint32_t test_data[2] = { TEST_DATA_0, TEST_DATA_1 };
 
 uint32_t __sbss timer_irq_start;
 void __hot init(void)
@@ -110,7 +113,9 @@ void __hot init(void)
     set_leds(7);
     wait_romcopy_done();
 
-    if ( MINITESTS ) {
+    if ( test_data[0] == TEST_DATA_0 && test_data[1] == TEST_DATA_1 ) {
+	con_puts(hotstr("SDRAM seems ok - skipping test\n"));
+    } else {
 	extern uint32_t __dram_init_start[], __dram_init_end[];
 	extern uint32_t __dram_bss_start[], __dram_bss_end[];
 	volatile uint32_t *dp;
@@ -227,6 +232,7 @@ static void __noinline late_init(void)
 	}
     }
     con_putc('\n');
+    rom_print_serial();
 
     if ( MINITESTS ) {
 	con_puts("Quick DRAM test:\n");
@@ -247,8 +253,6 @@ static void __noinline late_init(void)
 	con_puts("\n\n");
     }
 
-    rom_get_serial();
-
     set_leds(4);
 
     read_rtc();