diff --git a/distrib/amiga/stand/loadbsd.uue b/distrib/amiga/stand/loadbsd.uue index 986a2230d37e..fd45b67c6117 100644 --- a/distrib/amiga/stand/loadbsd.uue +++ b/distrib/amiga/stand/loadbsd.uue @@ -1,611 +1,614 @@ begin 755 loadbsd -M```#\P`````````#``````````(``!22````ZP```&P```/I```4DB/(```` +M```#\P`````````#``````````(``!0```&!.KO\N(GD````$(`EG"BQY```` -M8$ZN_F(B>0````@@"6<*+'D```!@3J[^8BQ?3G5G0!E>'!A;G-I;VXN;&EB0!C86XG="!O<&5N(&5X<&%NF4])3`X;'@@871TF4Z("5L9`H`9F%I;&5D(&%L;&]C("5D`'5N86)L92!T -M;R!L;V%D(&ME2!N -M97=E`H` -M2V5R;F5L(&%T("4P.&QX+"!&87-T;65M('5S960@870@)3`X;'@*`$-A;B=T -M(&-O<'D@=7!W87)D6]U2!A9V%I;B!/4B!T2!T:&4@+5H@;W!T:6]N -M"!T;R!&87-T;65M("4P.&QX("HJ -M*@H`2V5R;F5L('-I>F4@)6QD(&5X8V5E9',@0VAI<"!-96UO``43KH39BQY````8$*`0_K[Q4ZN_=@CP`````1T -M`DJ`9@``D$AZ^\%@U#!\_[_1P'`UL(AEJ#`[B@9.^P`"`;;_H`'T`9;_H/^@ -M_Z#_H`(`_Z#_H/^@_Z#_H/^@_Z#_H/^@`8K_H/^@`6K_H/^@_Z`"'/^@_Z#_ -MH/^@_Z#_H`$2`1H!GO^@_Z#_H/^@`BC_H/^@`&S_H`$Z`<+_H`$B`5K_H`%6 -M`2[_H`%B<`$CP````6Q(>OMT+PHO`TZY```GYD_O``QZ_[J`9@#_8"(Y```` -M="`!Y8G5P9:`<`&P@V8`_OXJ$D*#+@,L>0````1R_R`!($-.KO^X)@!F``%N -M3KH(N$AM_^!(;?_<2&W_Y$ZZ!8).N@I"*T/_Z$_O``Q*N0```6AF``%*(#P` -M``\`+P!'[?_H+PLO!4ZY```9ND_O``Q2@&8``31(>OKV8`#^L'#]Q(!@`/]< -M<`&$@&``_U1P`2/`````E&``_TAP`2/`````F&``_SPO.0```8!.N0``,3CA -MB.6((\````!X6(]@`/\@<`)@P@C"`!!@`/\4",(`$6``_PQ(>OF<2'KZ5B\P -M`?(```"H``Q.N0``,``00JB`\```_`&``_K8B+?_\5H%P_$GY````H,*`*!0@!-B$V(#E -MC-*$*`?IC-B'Y8S8@2P$4(9*N0```)AG&$7L``2=SKW494@O!DAZ^>).N0`` -M-ZQ0CR`\```!`-"Y````;-"&(\````"0(CP`!``$+'D```!@3J[_.B/````` -M?&8X+P9(>OFZ2'@`%$ZZ$&XP:@`*4HXO"$*`,"H`""\`+RH`!"\:+PY(>OE% -M3KD``#>L4(I/[P`88(HK0/_H<#]*N0```6AF!!`\``\O`"\++P5.N0``&;I/ -M[P`,4H!F"$AZ^6Y@`/RJ("W__%:`OE$3KD``#>L6(\B -M+?_@OEA -M3KD``#@46(]*N0```)AF#G)I1@$L>0```YA.KO\Z2KD```"89@QR9"QY```# -MF$ZN_SHF;?_\("W_^"(M_^A"K?_8LH!G#@Q%``%C>B!+D<$K2/_8)L='ZP`@ -M1>O_X"QY````!'+_(`$@0TZN_[@F`&98(\H```"$))0V?``$MI1E``"P#$4` -M`F,``2!*N0```(AF``$6('D```!\("W_Y+"(8P``IB\`+PA(>OH.3KD``#>L -M2'KZ+$AX`!1.N@[>0D5@`/]:)D!@BB!#<`,DV"38)-@DV%'(__8DV$*`$#D` -M``"`OF.3KD``#>L4(\@$P:` -M`P```":`2KD```"89PXO`$AZ^9!.N0``-ZQ0CT?K`$1@`/\J0?*X`$/TN``@ -MV2#9(-E2@T?K``Q@`/\V1?!)(`$(+SD```!L2'H&;B\*3KD``#6`+'D```!@ -M3J[]A"\M_^0O.0```'Q(>OG,3KD``#>L3^\`&$JY````F&8,0```YA. -MKO\Z2KD```"89P``BD*G3KD```!D("W_X+"&8A8O`"\&2'KYN4ZY```WK$AZ -M^=M@`/[R<`$CP````(@O.0```'Q(>OGI3KD``#>L4(]%^@7B8+!Z"NJH,'P` -M2R\!+PDO""\`2'KW'4ZY```WK#HU`6+_[/_^3^\`%`Q%3G-G`/ZL#$4`"6,` -M_=H_!4)G2'KW'V``_0"3R2QY````"$ZN_R)*N0```(A7P$G`1(`O`"\Y```` -MG"\Y```!9"\Y````C"\Y````@"\M_]@O`B\M_^`O+?_<+RW_Y"`M_^R0K?_H -M+P`O!B\Y````?$Z20H!,[5S\_[!.74YU5')A;G-L871E9"`E,#AX('-Z("4P -M.'@@=&\@)3`X>"!S>B`E,#AX"@!Z:VEC:R!M96UO0```&!.KO]V3-]\_$_O``Q.=29J`!@F*@`4 -M0^\`.)?#(PLL>0```&!"@"!#3J[]!DOO`#@B92X`E\G6B2`)9@8D;P`P8+!* -MN0```)AG("\)+P=('VX@&8``,93B2`)`(``#___*@!2A2]%`#0H`9B%#(1`````9UHB -M`E*!(`'0@="!,:H`#@VP````H"`"T(+0@N6(0?0(`!`J``E(@#%```XA10`( -M(40`!"H"5(4O2P`T+'D```!@($-P`B)-3J[]!B)O`#0N`)?)UHDD!6``_T0R -M?``!T\)!\9@`T``43KH)B'+_1D'"@&=H(@!T&.2I%#P` -M?;2!9R9"0$A`#(````2P9QIB'@R````"6&<0#(````/H9P@,@````?1F'B0? -M+%].=0R````+N&?R#(````^@9^H,@```!]!GXB\`2'K^^$ZY```WK$AX``%. -MN0```&1#^O\)3J[_H$J`9R@`N0^@``````"`(CD```"`(`%"04A!2H%FI@"` -M!]```"/`````@&"80_K^X2QY````8$ZN_Z!*@&;&0_K^VRQY````8$ZN_Z!* -M@&:T0_K^U2QY````8$ZN_Z!*@&<,`+D+N```````@&"@0_K^PRQY````8$ZN -M_Z!*@&;B0_K^O2QY````8$ZN_@Y*@&0```&`, -M:``D`!1C"B/H`C@```",3G4(,``"`?(````(`,]F#B`\``KLA2/`````C$YU -M(#P`"M,#8/!.=29/+'@`!$OZ``9.[O_B1OPG`$_Z_^PB:P`$)"L`""QK``P@ -M:P`0("L`%"(K`!@N*P`<*&L`("HK`"0H*P`H)BL`+"1K`#`L*P`TF\T,*P!] -M`"1G``!<,_P"``#?\)8(!0`#9P``))?+3GNP`TY[N`9.>[@'3GNP!$Y[L`5. -M>[`&3GNP!V```"I'^@"8\!-``$?Z`(SP$TP`\!-(``@%``)G```.1_H`?/`3 -M"`#P$PP`2H9G```&*DC=R"K968)D`/_Z0_H`(B\-)#P```!`*ME9@F0`__H( -M!0`#9P+T^'0`3GL@`DYU)`7AF@P"`'UF'I?+3GNP`TY[N`9.>[@'3GNP!$Y[ -ML`5.>[`&3GNP!W0`?``B1B9&*D8N3BQ&3M=__P`!`````'5S86=E.B`E``!3KD```!D"DY!344*"25S("T@;&]A9',@3F5T0E-$ -M(&9R;VT@86UI9V$@9&]S+@I364Y/4%-)4PH))7,@6RUA8FAK<'-T04135EI= -M(%LM8R!M86-H:6YE72!;+6T@;65M72!;+6X@9FQA9W-=(%LM22!S>6YC+6EN -M:&EB:71=(&ME2!R97%U:7)E9"!T;R!R=6XN(%-E=',@9F%S=&UE;2!S:7IE('1O('-P96-I -M9FEE9`H)("`@('-I>F4@:6X@2V)Y=&5S+@H)+6X@($5N86)L92!M=6QT:7!L -M92!N;VXM8V]N=&EG=6]UOG\+S`!\@```*@`#$ZY -M```QP$AX``%.N0```&1.50``2&T`#"\M``A.N@`J4(].74YU3E4``$AM`!`O -M+0`,3KH`%$AX`!1.N0```&0E1/[P`4+S`!\0```*A.N0``0\`O,`'R````J``, -M+P!.N0``,>0O,`'R````J``,2'@`"DZY```QW$_O`!0D'TYU```\9&5F875L -M=#X`;W!E;B`E\`$"88*!@O4``80J0```*A@1DAX`#1%[P`4+PHO`DZY```X8$_O -M``QR_[*`9@Y(>O^*3KD``!C<6(]@SG(TLH!G&DAZ_XE.N0``&-QP3R!Y```` -MJ""`6(\@$&!*2'@`!$AZ_WTO"DZY```U3$_O``Q*@&8\#"\``0`49C1P`2/` -M```!0```*@@@&``_VQL'0`6UB;VQS`')E860@OX9 -M8`#^W+"K``AG+'`%(8`!\0```*A@YDAX``$O*P`(+P1.N0``,J!/[P`,4H!F -M"$AZ_?%@`/ZJ(#P```0$P(-G!-7K``A$PVH4+RL`#$*G2'+(`$ZY```UI$_O -M``P@/```"`C`@V<$U>L`#'H0RH-G"D'RR`!#ZP`0(-D"@P``$!!"ATJ#9P0N -M"EB*("L`$&<``29*A6V`` -M_BJPJP`09RIP!2&``?$```"H8.9(>``!+P`O!$ZY```RH$_O``Q2@&8(2'K] -M6&``_?I*@V<$U>L`$$AX``1T+-2/+P(O!$ZY```X8$_O``QR_[*`9@A(>OTY -M8`#]SG($LH!G''`%(8`!\0```*A(>OTA3KD``!C<6(]T`6``_A)*A6<(0_+( -M`"!"(MA*@V<"6(H@+P`H68`O0``H;@A(>OT#8`#]ADJ%9S(O`$ARR``O!$ZY -M```X8$_O``QR_[*`9@A(>OSV8`#]8K"O`"AG*G`%(8`!\0```*A@YDAX``$O -M`"\$3KD``#*@3^\`#%*`9@A(>OS38`#],DJ#9P35[P`H*LSO^\3KD``!C<6(]P_TS?#!Q.=2\#2'.H`"\$3KD``#A@(@!/[P`, -M\`<"]8`'`D6"A8*!`F!`*$``!``&<``D@,:@`! -M`!!G$'`6(8`!\0```*AX`6```-@F5"]L`!0`-$*`,"H`,"@`Y8S8@.>,+P1. -MN0``,^`J`"\$+P`O*@`@+R\`@$ZZ_I!/[P`44H!G``%>*F\`-)O+0JH`''`T -M)4``($)J`"I":@`L(DH@;P`T<`(@V2#9(-D@V5'(__8@V4'U22`0,R`(`D#P -M`"(%6($O00`\(D%"AD*"-"H`,+2&;E@F/``?___6@`*#_^```"QO`#Q"AK2& -M;@``^@:#```/_R\$+P5(<]@T3KD``#6`+P5.N0``,A0I;P!$`!`"0_``UHLI -M0P`43^\`$$*$(`1,WWS\3^\`0$YU""D``0`'9W`@:0`0L/P0`&-P=B!(0RQ# -M3?8(_R].`#@B#DQ#$`%,`Q@`+$$N$7(!LH=G5E&'9D`O"$*G2'/H`"](`#PO -M20`X3KD``#6D3^\`#"!O`#`B;P`L(`Z0C2-```Q!\#C_(`C0CDQ#``!,`P@` -M0H(T*@`P4H9#Z0`H8`#_)"8\```0`&",+P@O#B\I``PO"R\O`(`O2`!$+TD` -M0$ZZ_*D4L!"0$)D0O00!(0H$R*@`L<`3` -M@R]``#P@/```"`C`@R]``$!P","#+T``1"`\```$!,"#+T``3"`\```!`<"# -M?@$L0,Z#LH9N``#B+P5.N0``,A16@G+\PH(O00`\(#P``"`@P(-8CT*'2H!G -M""X!<#31KP`X(#P``!`0P(-G``)>+U0`0$*!,BH`,"`!Y8C0@>>(+T``/"\` -M3KD``#/@+$`O+P!`+P`O*@`@+R\`@$ZZ^Y!/[P`44H!G``&@*B\`/-JO`#A" -M@3(J`#)G``)N(`'EB-"!YXA!]@@`+"@`$"0H`!0(`P`$9@`!5B\"3KD``#/@ -M*D`O`B\`+P8O+P"`3KK[0$_O`!12@&8``58O#DZY```R%%B/(`UG`/QB+PU. -MN0``,A18CV``_%1P`;"59@``VB`M`!CHP`=#9P``SG(!PH!G-DJ'9CAR`<"! -M9G9*KP!,9W1*K``(9P``NB`M``BPKP!(9`0O0`!((&T`$$?P"`"WPF-6)`M@ -M4DJO`#QGR$JL``AG*B`M``@O+0`0+P`O+0`$+R\`0"\O`(!.NOLH3^\`%%*` -M9P#]<"`M`!A@F"`M``A*@6;2(&\`--'`*4@`"&#&(@YFC"!M`!`@+0`4L(AC -M+$JO`$1G)B)(D(C3[0`(+P!"IR`O`#Q(<0@`3KD``#6D3^\`#"!M`!`@+0`4 -ML(AB*$*!,BH`+%*&2^T`(&``_C)*@&8`_T0@;P`T("T`"-'`*4@`"&``_S9* -MKP!`9]*0B-?`M\)CRB0+8,8O`B\%+P8O+P!,+R\`@$ZZ^GA/[P`44H!F`/Z2 -MF\U@`/ZN0H$R*@`R(`'EB-"!(@62ARV!#A!6@G#\Q(#:@D?N`"A\`4*"-"H` -M,'`0P(,O0`!,<$#`@R]``%"TAF(``*0(`P`$9QPO+P`\+PX@+P!`(&\`2$AP -M"`!.N0``-8!/[P`,+PY.N0``,A18CR`-9PHO#4ZY```R%%B/+T4`.`@#``5G -M*D*J`!QP-"5``"!":@`J0FH`+"!O`#0B2M''<`(@V2#9(-D@V5'(__8@V2`O -M`$C0KP`T*,`@;P`TT>H`&"C(<`%8C"C`WJ\`-"C'(&\`--'O`#@HB&``^R"; -MS6``_SY"@#`J`#*\@&<``-X@*P`$<@*R@&<``+AE#E.`9P``CD*K`!!@``#" -M<@.R@&<``,1?@&;L2J\`4&<``*YP%["K`!1DW$AX`!A(;P!8+RL`$"\O`'Q. -MNOBJ3^\`$%*`9P#];'`'L*\`5&8X<@2RKP!89C`0/``!L*\`7&8F2'@`"$AZ -M^7Q(;P!H3KD``#5,3^\`#$J`9@Q#^0```71![P!H(MA"JP`0-"H`,&`\(`UG -M`/]P2'@`"DAZ^3Q(<]D53KD``$0\3^\`#$J`9@#_5$JO`$QF3"`%D(X`+%6`<@*R@F,"0H!R`K*89@:\ -MJ``09\!!Z``D4!`89@``RD*Y```!?"(Y````="!S'`"V -M@6X4(_P``">D````>'3_(`),WPP,3G5#Z``!(\D```!X#!``+6;<0^@``B/) -M````>!`H``%)P"/````!A'0MM(!F$$HH``)F-%*!(\$```!T8+!*@&8F(_P` -M`">D````>$AX`"TO"DZY```Y7%"/=/]*@&>:<"TCP````80D.0```81P.K"" -M9Q`O`B\*3KD``#E<4(]*@&902C`!\0```'AF!E*Y````=$JY````<&80=#]@ -M`/]:(\@```!X2$H09Q(CR````8`C_```)Z0```!X8-H@0`PH`#H``F8(0KD```&` -M8.(@.0```'12@"/`````=+"#;`HC\PP````!@&#&(_P``">D````>`P2`#IG -M&DJY````<&<`_T`O`B\Y````=$AZ_BE@`/]2=#I@`/Z(```O#B\*)&\`#!5\ -M``$``R(J``0L>0```YA.KO\H2H!G$!5\``,``D*J`!0D7RQ?3G45?``!``)@ -M[B\O``1.N@`\6(]*@&<0($`2*``"`@$``G``$`%.=1(`8/8O+P`$3KH`&EB/ -M($!*@&<.("\`"("H``@A0``(3G5.=2`O``2PN0```8QD%B!Y```!B.6((#`( -M`&<*($!**``#9@)P`$YU2.<@/BAO`"`D+P`<(`QG``"J2'@`.$OY```SX$Z5 -M)$!8CTJ`9P``E$?J``A(>`0`3I4E0``86(]G=BQY````8")*0?D```"`3J[_ -M$"!+0IA"F$*8,+P`@"\"3KK_/%B/2H!G!C5\`($`%`P4`&%G/'``+P`O`DZZ -M_T)0CP@```!G!@!J@```%#5"`!8E?```!```'$*J`"!%Z@`H0II"FD*:0I(@ -M"TS??`1.=7`(8,(O"DZY```R%%B/<`PCP````9"7RV#>2.``83KD``#/@)$!8CTJ`9SHB.0```8P@`2!Y```!B.6)(8H8`"(`4H$CP0`` -M`8PT@"5O``@`!'`!)4``""\*3KK]Q@`J``0``EB/(`HD7TYU*@!R`'<`2.<@ -M,DAX`!!.N0``,^`CP````8A8CV<``08L>0```YA.KO_*+P!%^O]^3I)8CTJ` -M9P``["!`0J@`""QY```#F$ZN_\0O`$Z26(]*@&<``-`@>0```&`@:`$4("@` -MX&882KD```!49P``DB!Y```!B"!H``0@*``$+P!.DEB/2H!G``"<('D```&( -M0J@`#"9Y````?$AZ_V9"IT7Z_;1.DB;`4(]G>$AZ_U9(>``!3I(F@%"/9VA( -M>O]&2'@``DZ2)$`G0``$4(]G5"\J`!!.N0``,A0P*@`,`D#_?@!```(U0``, -M0>H`'"5(`!!P`R5``!18CTS?3`1.=2QY```#F"(\```K[B0\```#[4ZN_^(C -MP`````QG`/]28`#_7$AX`!1.N0```&0O#B\O``A.NOSZ6(\@0$J`9@9P`"Q? -M3G4B:``4(@EG#"]```@B:0`(+%].T1`H``-3`!%```-FV@@H``(``F;2(B@` -M!"QY```#F$ZN_]Q*@&;`3KD``#DP0```YA.KO_<(BH` -M*"QY```#F$ZN_]Q1BB)*+'D```!@3J[_!"\*3I18CR`+3-]<`$YU+RH`$$GY -M```R%$Z40JH`$%B/8*PV?/__8-Y(YS`R1?D```"`1_K_(A`L>0```YA.KO^@(@`L>0```YA.KO^"(\`````40KD```!P -M(\L```!83-],'$YU)'D```!H(#D```!<)``L>0```&!2@"(+3J[]5"/````` -M$&>"2H)F``#8=@$CPP```'`@`U*`+'D```!@Y8AR`4A!3J[]5"1`(\````!8 -M9P#_5B!Y````$'`!L(-M``#D)CP```$`+'D```!@(`-R`$ZN_50D@&<``.0L -M>0```Y@B`"0#3J[]P"QY```#F$ZN_WQR>+*`9@``Q")2+'D```!@3J[]3@:# -M```!`&"X4HI3@DJ"9P#_=A`2#```(&?N$@`&`0#W#`$``6/B#```(F)$E@[D/J``15@R+($!A6R__Z9OA"0U.#:O!@`/\& -M2I)F`/Z:8`#^0DCG("(D>0```%0@"F0```YA.KO_<2JH` -M)&<<(CD````4+'D```.83J[_@B(`+'D```.83J[_IDS?1`1.=20Y````$&?R -M)'D```!8(`IG'")2(`EG"BQY````8$ZN_4XB2BQY````8$ZN_4XB0BQY```` -M8$ZN_4Y@O@``2'@`"$ZY```SX%B/2H!F#'`,(\````&00```:`L>0```&!.KOW,)'D```&D(!)G7+?J`!1E7+?J`!AD5BQY```` -M8"!*("O__$/K__Q.KO]`("H`&)"J`!2PJ@`<9AXB2BQY````8$ZN_P0L>0`` -M`&`@*@`8D(HB2DZN_RX@>0```:`L>0```&!.KOW&3-],`$YU)$!@EDCG/R)! -M[P`D(!@H&"P0+P!.N0``*AXD0%B/2H!G4"HJ``1*AF=,<`)V`+"&5\-$`RQY -M```#F"(%)`1.KO^^4H!F``#D2JH`"&<``-QP`;"&9B0L>0```Y@B!78`)`-. -MKO^^/]@6';_8+I5AF9:+'D```.8(@5T`'8!3J[_OB(% -M+'D```.83J[_OB0`!``3KD``#/@(\`` -M```@6(\L!)R"-'P0`$J&9C(@!$S?1/Q.==B`+'D```.8(@5T`'8!3J[_OB(% -M+'D```.83J[_OB0`0```:`L>0```&!.KOW,*'D```&D1^H`!$J49DA% -MZ@`H)#D```"LM<)C`B0*!H(```__`D+P`"QY````8"`"<@!.KO\Z)$!*@&8\ -ME0```:`L>0```&!.KOW&(`I,WUP$3G4L>0```&`@"R!,3J[_1DJ`9PPT -M?``$($#5P""+8,HH5&"20>H`("5(`!`E2``40JH`(#!\_^#1PB5(`"0E2``< -MU(`E0@`8+'D```!@(D!!^0```:1.KO\0+'D```!@(`L@2DZN_T9*@&:H8`#_ -M>G``8(@O#B(\```!I"!!(`A8@2"!0KD```&H(\````&L+'D```!@<"XB/``! -M``%.KO\Z(\````&@($`L>0```&!.KOW2+%].=2\.+P(D/````:0@0BQY```` -M8$ZN_OXL>0```&!*@&82<"XB>0```:!.KO\N)!\L7TYU(D`@*0`8D(E.KO\N -M8,H``"\*+P)![P`,(E@D6"`04<@`#$)`4X!D!'``8!(2&10:M`%GZG``$`%R -M`!("D($D'R1?3G5(YR`B1>\`$"0:(%HL>0```&`@$B)"3J[]D"`"3-]$!$YU -M``!(YS\`*"A8(!@D$'('LH)E2$J"9SP8@'(!LH)G-!E```%R`K*"9RH9 -M0``"<@.R@F<@&4```W($LH)G%AE```1R!;*"9PP90``%78)G!!E```8@#$S? -M7.Q.=7(`1@'`@2(`X8F`@2(`2$%"08"!0?0H`"(")`@(`@``9P@10/__4X%3 -MB"0("`(``6<(,4#__E6!58@D`28!ZHIG'"Q`*@`L`"X`(D`D0"9`40```8@B.0```8QO/B!* -M=@`D`5."(D@@&&<``(HB0$HI``-G=E*#4\`&"`8)!@F$"\` -M3KD``"H>)$!8CTJ`9TY.N0``3O@@:@`4(`AG%B]#`"`O0@`<+TH`&")03-]$ -M#%B/3M$B*@`$+'D```.83J[_UG+_LH!F#B]``!!.N0``.3`@+P`03-]$#%B/ -M3G5P_V#T``!(YS`B)&\`%"0O`!AG1B\"3KD``#/@)@!8CR(*9P9*@&8*=@`@ -M`TS?1`Q.=2(J__Q9@2`"LH)D`B`!+'D```!@(D,@2DZN_9`O"DZY```R%%B/ -M8-`@"F?*)@)@["\.+'D```.83J[_?$'Y````L"(09@PCZ``$```!D"Q?3G6R -M@&?P4(A@Z```(&\`!"`($ABR+P`+9@).=4H!9O!P`$YU(F\`!"!O``@2&6<2 -MLAAG^'``$`%R`!(H__^0@4YU4HA@[@``56YD969I;F5D(&5R0!097)M -M:7-S:6]N(&1E;FEE9`!"860@861D&ES=',`0W)O2!O<&5N(&9I;&5S`$YO="!A('1Y<&5W2!F:6QE('-Y2!L:6YK2!R969E2!U2!L979E;',@;V8@7-T96T@8V%L;"!S:&]U;&0@8F4@ -M2!P7!E(&9I;&4`3F\@6$5.25@@7!E(&9I;&4`4F5M;W1E($DO3R!E&-E961E9`!.;R!M961I=6T@9F]U;F0`5W)O;F<@;65D:75M('1Y<&4` -M3W!E2!N;W0@879A:6QA8FQE -M`$ME>2!H87,@97AP:7)E9`!+97D@:&%S(&)E96X@0``4"@@3"1($!@8`$B`$#8``0(```AF[@P$`"UG"`P$`"MF``"\4HI*@V8` -M`+H,$@`P9@``[A`J``%(@#!`$#8``0(```,,```!9@1!Z``@<'BPB&8``-(0 -M*@`"2(`0-@`!`@``1&<``,!4BG80*DIT`"P\``!10")-$!U(@!(V``$P0!`! -M`@$`!V<``*IZT-J(<@FRA602`@```PP```%F!$'H`"!ZJ=J(NH-L``"(+@5& -MAR\#+P<@1DZ04(^P@F40+P,O`DZY``!1)%"/L(=C7'`B(\````&00@1T_V"8 -M&`!@`/]$)HE@`/Z8)`M@`/Z2``!(YSP@)&\` -M'"@O`!@P*@`,-``"0`)$9S(P`@)``D!G$D*J``AP`2/````!D'C_8```C#`" -M`D``!&<00JH`!$*J`"`"0O_[-4(`##`"`D```6=R*BH`%$2%,`("0``"9F@F -M*@`44X/6A3`"`D``"&82)*H`$%.#)4,`"`!"``@U0@`,(A(@`5*!)($@0!"$ -M("H`"&P@L(5M!@P$``IF%B\*3KD``#%06(]*@&:`)*H`$#5"``PE10`8)4,` -M""`$3-\$/$YU>@!@D'8`8)HO"D'O``@D6"`8+Q`O`"\*3KD``$>D3^\`#`@J -M``8`#6<"&J-@N&0C9#*DE@SG``8.YP`6#J<`)@ -MYG`#8.(,```J9@`&#"!)0^H`!"H2;`HT"P!"``0V0D1%)$D,$``N9@`!"#0+ -M`$(`(#9"0^@``0PH`"H``6="0D(@21`92(`Z0$OM_]!V";:-93S%_``*!D+_ -MT-1`8.++_``*!D7_T-I`4HD@31`02(`\0"I)3>[_T'()LHYDX&"B5(A#Z@`$ -M)!(D26T``*00$!(``@``_0P``&AG&A`!`@``WPP``$QG#@P!`'IG"`P!`'1F -M``"*$"@``0(``/L,``!H9W12B")($!DO20!`#```;F<`!')N``">#```8V<` -M!"AN7@P``"5G``1R#```6&8``.H,`0!L9P``F`P!`&UG"`P!`&IF``&L(%(B -M:@`$+T@`1B])`$I0B@P!`&AF``&B0J\`1@*O``#__P!*8&PT/'__8`#_6%2( -M4@%@B$(!8(0,``!D9P@,``!I9@``C@P!`&QF``"T0>H`!"]2`#Q;P4B!2,$O -M00`X2J\`.&L``,A@``$.#```"]2 -M`$I"KP!&6(HR"P)!``%G``%P#```;V8``2Y*0F<,("\`1H"O`$IG``1@'WP` -M,`!$=@%^"&```5@,``!U9P#_(@P``'AG`/\:2@!G!"!O`$`J2)O,+T@`0'8` -M-`,Z`V```A`,``!D9P#_5`P``&EF`/[P8`#_2`P!`&UG!@P!`&IF1$'J``@L -M$BXJ``0,`0!H9D)"KP`X<@!&0<*'+T$`/$I';$H??``M`$0L+P`X+B\`/$2' -M0(8O1@!&+T<`2G8!)$A@``"J0>H`!"X26\9(ADC&8+@,`0!I9@`#M$*O`#AR -M`$8!PH+U(`2D*O`$98BF``_EH,`0!I9@#^U$*O`$8" -MKP```/\`2F``_L02``(!`-\,`0!89C(B+P!&@J\`2F&0```Y@B*@`$)`0F!4ZN_]!R -M_[*`9@A.N0``.3!P_TS?1#Q.=0@J``$``F;2+'D```.8(BH`!'8!3J[_OE*` -M9KY@U```+PXL>0```&!P`"(\```0`$ZN_LX(```,9PQ(>``"3KD``%!J6(\L -M7TYU````("`@("`@("`@*"@H*"@@("`@("`@("`@("`@("`@(""($!`0$!`0 -M$!`0$!`0$!`0!`0$!`0$!`0$!!`0$!`0$!!!04%!04$!`0$!`0$!`0$!`0$! -M`0$!`0$!`1`0$!`0$$)"0D)"0@("`@("`@("`@("`@("`@("`@("$!`0$"`@ -M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(`@0$!`0$!`0$!`0$!`0 -M$!`0$!`0$!`0$!`0$!`0$!`0`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$0`0$! -M`0$!`0("`@("`@("`@("`@("`@("`@("`@("`A`"`@("`@("`@``````3R0@ -M/```3R1.=3!\_]#1[P`$<`FPB&0:<-\P?/^_P*\`!-'`<`6PB%3!1`%P`!`! -M3G5R`6#V*BHJ0G)E86L*`$CG/R`F+P`@*`-3@W`%L(-E``"8=`'GJH6Y```` -M/"X"1H=%^0```"3EBRHY````0"P"S(4@.0```#Q"`4J&9UAP`$S?!/Q.=<"' -M('(X`'(!?`&\B&="(\`````\(`*`A2/`````0"`(9B!P`K"$9B!(>``)2'K_ -M@"\$3KD``$YH2'@`%$ZY````9"\$3I!8CR/%````0&"2+`+,@&:J2@%GGB/` -M````/&"60```Z1.Z/]D(&9A:6QE9"!T;R!L;V%D"@``3^__Q$CG -M,#I"0D?Y````!"1;(`IF)$I"9W1'^0````1%[P`82?D``%(D(%L@"&8@2'@` -M%$ZY````9")J``0L>0```&!.KOYH)(!FQ'0!8,!*D&;6(DH@:``$$MAF_$AZ -M_XXO"DZ4+'D```.83J[_Q%"/($H2&&;\)@J6B"QY```#F"(`)`I&@TZN_]!@ -MG$S?7`Q/[P`\3G4O#B\*1?D````$(%H@"&8&)%\L7TYU(E`@"6?N+'D```!@ -M3J[^8F#B``!,[P$!``0B0$H99OQ3B1+89OQ.=75T:6QI='DN;&EB0`` -M``/L````HP````````!<```'U```"2(```A&```*!@``"EH```BD```*>@`` -M"M(```L2```+,@``"U0```S(```/S@``"K0```54```&1```"5@```;"```( -MR@``!P@```=L```'D```#DH```_8```*_```$K@``!C8```9"```&,X``!*N -M```'1```&3```!E.```98@``&88``!ET```9F@``&>```!GL```:G@``&K(` -M`!J*```:%```&F@``!K2```;`@``&SH``!G0```<+@``'-0``!V"```>,@`` -M'OH``!TD```=M```'(H``!U.```>````'EP``![(```>B```')X``!Q````? -M=```'_P``!^<```@)@``(`X``!^&```@N```(O8``".V```D"@``(5(``"74 -M```A6@``)"P``"0\```C:@``)>```"7N```E#```(8``"L6```M&```+7```"M@```NK```,/(``#%$```Q -MA```,=(``#'>```Q[@``,K(``#,*```S4@``-M(``#;J```W6@``-X8``#?$ -M```X$```.!X``#AT```X@@``.+X``#CF```Y(```0]H``$22``!$M```1;P` -M`$5(``!&7@``1E(``$80``!'2@``1X8``$MX``!+F```2[(``$S^``!+P@`` -M2]P``$N*``!-#```3)```$V6``!-P```3=8``$WR``!."```3B(``$YZ``!. -MB```3LP``$\8``!0*```4"X``%#F``!0\```49@``%&(````90````$```!F -M````0```"%0```JH```);```"8````KF```2I@``&,8``!DH```91@``&58` -M``<\```9;@``&7P``!F.```&5@``&AP``!IV```:N@``&TX``!R^```=<``` -M'B(``!Y^```>Z@``'\```"!*```@E```(N(``"@B```H-@``*$8``"AF```H -M=@``*+8``"B^```HT@``*18``"D@```I/@``*6```"EX```G_@``*!```"C$ -M```I*@``*5@``"F$```H\```*H@``"R$```N````*;@``"M"```K4@``*W@` -M`"N$```L$```+#```"SP```M8@``+:X``"V\```N9```+H(``"Z4```NM``` -M+L```"[4```NX```+WP``"^*```P?@``,)0``#"@```RT@``,O0``#,<```S -M+@``,W8``#.(```SJ@``,\@``#02```VN```-[H``#@F```XJ@``.3X``#DT -M``!#[```3K0``$[B``!1+```44@``%%N``!1?@``4@```%'@``!1R@```.(` -M```"````E@````(````(````#@```(X````Z````=@```$H```!0````5@`` -M`'`````8```%?```!:```!#\```!!@```1H```9R```)M@``"X0```5:```2 -MF@``&+8``!D<```&[```#HH```<2```)!@``!U0```:H```(N```!ZH```>^ -M```'H```!X````NB```(<@```.P```GN```*R```"R@```O2```-P@``"`P` -M``T6```-<@``#%@``!"0```0G@``$-8```=V```/5@``"C8```_N```+K@`` -M$`H``!!,```,W```#T8```_T```0S@``"0```LB```+C@``$/```!$,```+J``` -M!P(```=F```'B@``!\X```CN```&-@``"YP```?:```:Z@``&O0``";T```H -M"@``)_8``"A2```HD@``*)@``"D.```I-```*5```"EL```HY```*9```"T& -M```N'```*B0``"O(```KL```+A```"Q6```K`@``*BP``"NX```L8```+'H` -M`"P$```N/```+```O$```+S@``##(```P -MU```,.```"\"```N=@``,&P``"\(```Q%@``,0P``#$B```Q````,6@``#(B -M```RB```,C(``#)(```R;```,G8``#(H```RC@``,T8``#-8```SL@``-,H` -M`#38```TW@``-1```#0````TI```,_8``#0H```T1```-%8``#2<```TK@`` -M-.0``#3^```U&```-2(``#3V```T/@``,_```#4N```UC@``-SH``#=J```V -M_```-W@``#<"```Y$```.4H``$/F``!#U```0^```$34``!$Y```10```$4P -M``!&'@``1M```$[\``!0A```4,(``%$.``!0H```4,P``%"6``!0_```4(X` -M`%&B``!2&`````````/P`````E]?97AI=```````9`````)?9G)E90`````` -M,A0````"7W-T'0```!22`````-?97AI=%]F=6YC``````#H -M`````E]P=71C```````WS`````-?:7-W>&1I9VET`````%`T````!%]?;'A? -M9FAF`````E]P=71S```````X%`````1?7U]E>&ET871E -M>&ET```````Q'@````-?%]A9&1F;&%G&ETL`````E]?8W1Y<&5?``!0*`````)?9V5T -M;W!T````)^8````"7U]?8W1Y<&4``$\D````!5]?7V5X:71C;VUM86YD;&EN -M90`````P9@````-?7U]M=6QS:3,``````%$D`````U]?7V-H:V%B;W)T```` -M3O@````"7VUA:6X```````4^`````U]V9G!R:6YT9@``````1W0````"7V-L -M;W-E`````"T<`````````_(```/J````ZP````(```.8```#I``````````* -M```M^@```&(``#!F````6```,1X```"````U"@```$X``%'Z````,0`````` -M```(```K]````&(``"YP````6```-,8```!.``!18@```#$````````N<``` -M`28````!`````0``)Z0```&4````A`````````"`0T]..B\O+R\O05543R]# -M3$]312]704E4`````````9```$``````9P````P```!I````0P```'8````' -M````>`````<```#*````&@```,L````1````S`````(```#-`````@```,X` -M```_````SP```!L```#1````$P```-4````0````U@```!X```#7````$@`` -M`-@```!"````V0```#\```#:````!@```-L````=````W0```!P```#>```` -M#0```-\````-````X`````T```#A````3P```.(````&````ZP````@```$Q -M````#0`````````!```YF```.:@``#G````YV@``.>H``#H"```Z#```.B8` -M`#H]```Z3P``.E\``#IR```Z?```.HH``#J<```ZJ```.KX``#K6```ZX@`` -M.O0``#L#```[$P``.R(``#LS```[1P``.UL``#ML```[>P``.XH``#NB```[ -MKP``.\4``#O4```[X```/`0``#PB```\0P``/%T``#Q[```\F@``/+<``#S( -M```\YP``//X``#T5```]+P``/4<``#UE```]E0``/:P``#W+```]VP``/?(` -M`#X6```^-P``/E```#YJ```^A@``/IX``#Z_```^X0``/O4``#\(```_*@`` -M/ST``#]*```_6P``/V\``#^"```_D0``/Z4``#^[```_W0``/^\``$`!``!` -M%0``0"L``$!%``!`6```0'$``$"3``!`K```0+X``$#,``!`UP``0.T``$$9 -M```_@@``/'L``#R:```\MP``/,@``#SG```\_@``/14``$$L```]1P``05H` -M`#V5``!!@P``/````8@```&,```!D``` -M`90```&8```!G````:````&D```!J````:P```&P```!M````;@```&\```! -MP````<0```'(```!S````=````'4```!V````=P```'@```!Y````>@```'L -M```!\````?0```'X```!_````@````($```""````@P```(0```"%````A@` -M``(<```"(````B0```(H```"+````C````(T```".````CP```)````"1``` -M`D@```),```"4````E0```)8```"7````F````)D```":````FP```)P```" -M=````G@```)\```"@````H0```*(```"C````I````*4```"F````IP```*@ -M```"I````J@```*L```"L````K0```*X```"O````L````+$```"R````LP` -M``+0```"U````M@```+<```"X````N0```+H```"[````O````+T```"^``` -M`OP```,````#!````P@```,,```#$````Q0```,8```#'````R````,D```# -M*````RP```,P```#-````S@```,\```#0````T0```-(```#3````U````-4 -M```#6````UP```-@```#9````V@```-L```#<````W0```-X```#?````X`` -M``.$```#B````XP```.0```#E````YP```.@```#J`````0````!````!``` -M``@```"`````B`````(````"````?````*@````````#\`````-?7U]F:6QE -M;&ES=`````"`````!%]?7TQ)0E],25-47U\``````````````E]O<'1E4)A6QI@```````'@````"7U]?87)G=@````!8`````U]O -M<'1R97-E=````````7P````!7VMP`````'P````"7V]P=&%R9P````&````` -M`E]C<'5I9```````@`````5?;F5T8G-D7V5L9E]C;&%S$)A0```&!.KO\N(GD` +M```$(`EG"BQY````8$ZN_F(B>0````@@"6<*+'D```!@3J[^8BQ?3G5G0!E>'!A +M;G-I;VXN;&EB0!C86XG="!O<&5N(&5X<&%NF4Z("5L=0H`9F%I;&5D(&%L;&]C +M("5D`'5N86)L92!T;R!L;V%D(&ME2!N97=E`H`2V5R;F5L('-I>F4@)6QU(&5X8V5E9',@8F5S="!&87-T +M($UE;6]R>2!S96=M96YT(&]F("5L=0H`26YS=69F:6-I96YT($9A6]U2!A9V%I;B!/4B!T2!T:&4@+5H@;W!T:6]N"!T;R!& +M87-T;65M("4P.&QX("HJ*@H`2V5R;F5L('-I>F4@)6QU(&5X8V5E9',@0VAI +M<"!-96UO0```&!"@$/Z^UY.KOW8(\`````(9@Q(>OM?2'@`%$ZZ$IPL>0```&!" +M@$/Z^V=.KOW8(\`````$=`)*@&8``)!(>OMC8-0P?/^_T@$Z_Z`!BGP!(\8```%H2'K[%B\*+P-.N0``,8)/ +M[P`,OJ98`#^KG#]Q(!@`/]:<`&$@&``_U)\`2/&````'&``_T9"N0```!Q@ +M`/\\<`$CP````)1@`/\P+SD````@3KD``#!TX8CEB"/`````>%B/8`#_%"\Y +M````($ZY```P='(4XZ@CP````!A@XGP"A(9@`/[T",(`$&``_NP(P@`18`#^ +MY$AZ^19(>OG0+S`!\@```%@`#$ZY```Q`$_O``Q@`/[$<`$CP````61@`/ZX +M<$!@`/]<+SD````@3KD``#!T2$!"0"/`````@&"`?`&-N0```6!@`/Z.+SD` +M```@3KD``#!T6(]R`[*`919R^<*Y```!8-"`@H`CP0```6!@`/YD2'KY6&`` +M_:A\"&#`2'@`$$*G+SD````@3KD``$X8(\````"88`#_OE:2'@`%$ZZ#Z(P:@`*4HXO"$*` +M,"H`""\`+RH`!"\:+PY(>OCH3KD``$!D4(I/[P`8O=1EU"\%2'KY#DZY``!` +M9%"/8(HK0/_H<#]*N0```61F!!`\``\O`"\++P9.N0``&I9/[P`,4H!F"$AZ +M^/Q@`/R6("W__%:`OC23KD``$!D6(\@+?_@0````1.KO\Z)FW__"`M__@B+?_H0JW_V+*`9PX,1@`!8W0@2Y'!*TC_V";' +M1^L`($7K_^`L>0````1P_R(`($-.KO^X)@!F4B/*````A"24-GP`!+:490`` +MJ`Q&``)C``$\2KD```"(9@`!,B`M_]RPA6(``*0O`"\%2'KY:$ZY``!`9$AZ +M^9=(>``43KH-S$)&8`#_8"9`8)`N$R!#<`,DV"38)-@DV%'(__8DV$*`$#D` +M``"`0```'P@+?_DL(AC%B\`+PA(>OD53KD``$!D2'KY,V`` +M_TY%\$D@`0@O.0```"!(>0``&5PO"DZY```^-"QY````8$ZN_80O+?_D+SD` +M``!\2'KY7TZY``!`9$_O`!A*N0```)1F#')D+'D````$3J[_.DJY````E&=6 +M0J=.N0```&0@+?_@L(5B%B\`+P5(>OE.3KD``$!D2'KY<&``_M!P`2/````` +MB"\Y````?$AZ^7Y.N0``0&10CT7Y```97&"P+`!P%."N,'P`36``_:R3R2QY +M````"$ZN_R)*N0```(A7P$G`1(`O`"\Y````F"\Y```!8"\Y````C"\Y```` +M@"\M_]@O`B\M_^`O+?_<+RW_Y"`M_^R0K?_H+P`O!2\Y````?$Z20H!,[5S\ +M_[!.74YU5')A;G-L871E9"`E,#AX('-Z("4P.'@@=&\@)3`X>"!S>B`E,#AX +M"@!Z:VEC:R!M96UO0`` +M`&!.KO]\)'`!\@```&`!0GB`0H))^0```)PO4@`T9A8H@BQY````8$ZN_W9, +MWWS\3^\`$$YU)BH`%"9J`!A#[P`\E\,C"RQY````8$*`($-.KOT&2^\`/")E +M+@"7R=:)(`EF!B1O`#1@L$JY````E&<@+PDO!TASF``@`Y")+P!(>O\J3KD` +M`$!D3^\`%")O`#@@!]")0H$2.0```(!Z?;J!9@``Q%.)(@D`@0`/__\L`5*& +M+T8`."H`FH8,A4````!G6B("4H$@`="!T($QJ@`.#;````"<(`+0@M""Y8A! +M]`@`$"H`"4B`,4``#B%&``@A10`$+`)4AB]+`#@L>0```&`@0W`"(DU.KOT& +M(F\`."X`E\G6B20&8`#_1")"4HE!\9@`T``43KH(@'+_1D'"@&=H(@!T&.2I%#P`?;2!9R9"0$A`#(`` +M``2P9QIB'@R````"6&<0#(````/H9P@,@````?1F'B0?+%].=0R````+N&?R +M#(````^@9^H,@```!]!GXB\`2'K^^$ZY``!`9$AX``%.N0```&1#^O\)3J[_ +MH$J`9R@`N0^@``````"`(#D```"`(@!"04A!2H%FI@"`!]```"/`````@&"8 +M0_K^X2QY````8$ZN_Z!*@&;&0_K^VRQY````8$ZN_Z!*@&:T0_K^U2QY```` +M8$ZN_Z!*@&<,`+D+N```````@&"@0_K^PRQY````8$ZN_Z!*@&;B0_K^O2QY +M````8$ZN_@Y*@&0```&`,:``D`!1C"B/H`C@` +M``",3G4@/``*TP,(,``"`?(````(`,]F!#`\[(4CP````(Q.=4YU=7-A9V4Z +M("5S(%LM86)H:VQPF5=(%LM;B!M;V1E72!;+4D@O^6+S`!\@```%@`#$ZY```Q`$AX``%.N0```&0*3D%-10H) +M)7,@+2!L;V%DF5=(%LM +M32!S:7IE72!;+6X@;6]D95T@6RU)('-Y;F,M:6YH:6)I=%T@:V5R;F5L"D]0 +M5$E/3E,*"2UA("!";V]T('5P('1O(&UU;'1I=7-E2!M;V1E+"!I9B!A=F%I;&%B;&4N"@DM8B`@07-K(&9O +M2P@9F]R(&9I;F1I;F<@;6EN:6UU;2!A;6]U;G0*"2`@("!O9B!M96UO +M71E71E0H) +M("`@('-E9VUE;G0N($1E9F%U;'1S('1O(#)-+@H)+6X@($5N86)L92!M=6QT +M:7!L92!N;VXM8V]N=&EG=6]U6UB;VP@=&%B;&4N"@DM="`@ +M5&AI``!3KD```!D3E4``$AM`!`O+0`,3KH` +M*B\M``A.N0```&1.50``2&T`#"\M``A.N@`04(].74YU)7,Z(``Z(``O`B0O +M``@O.0```'1(>O_J+S`!\@```%@`#$ZY```Q`$_O``Q*@FO^S3KD``#$D3^\`%"\P`?$```!8 +M3KD``$RD+S`!\@```%@`#"\`3KD``#$D+S`!\@```%@`#$AX``I.N0``,1Q/ +M[P`4)!].=29/+'@`!$OZ``9.[O_B1OPG`$_Z_^PB:P`$)"L`""QK``P@:P`0 +M("L`%"(K`!@N*P`<*&L`("HK`"0H*P`H)BL`+"1K`#`L*P`TF\T,*P!]`"1G +M``!<,_P"``#?\)8(!0`#9P``))?+3GNP`TY[N`9.>[@'3GNP!$Y[L`5.>[`& +M3GNP!V```"I'^@"8\!-``$?Z`(SP$TP`\!-(``@%``)G```.1_H`?/`3"`#P +M$PP`2H9G```&*DC=R"K968)D`/_Z0_H`(B\-)#P```!`*ME9@F0`__H(!0`# +M9P+T^'0`3GL@`DYU)`7AF@P"`'UF'I?+3GNP`TY[N`9.>[@'3GNP!$Y[L`5. +M>[`&3GNP!W0`?``B1B9&*D8N3BQ&3M=__P`!````````/&1E9F%U;'0^`&]P +M96X@)7,`+P,O`B8O``Q"IR\#3KD``#]$)`!0CVPB2H-F!B8\```:A"\#2'K_ +MTDZY```8K%"/=/\@`B0?)A].=2\O`!0O+P`4+P!.N@!()@!/[P`,9^(O`DZY +M```L4"&#`?$```!86(]@S')E860@:&5A9&5R(&9A:6QE9`!R96%D(&AE861E +M0```%A@1DAX`#1%[P`8+PHO`DZY``!!&$_O``QR_[*`9@Y( +M>O^(3KD``!BL6(]@SG(TLH!G&DAZ_X=.N0``&*QP3R!Y````6""`6(\@$&!* +M2'@`!$AZ_WLO"DZY```^`$_O``Q*@&8\#"\``0`89C1P`2/````!;!`O`!DC +MP````70O!"\#+PHO`DZY```A<$_O`!!*@&8`_V9,WP0\3^\`-$YU(B\`%'K_ +M1D7*@0R!```!!U?`1`!*A6<(#$$!!U?`1`!*`&<0+P0O`R\*+P).N0``',1@ +MN'!/('D```!8((!@`/]H;'-E96L@=&5X=`!R96%D('1E>'0`6UB;VQS`'-E96L@6UB;VP@=&%B;&4@=&]O('-H;W)T`')E +M860@\`,"H8)E@L6"00*FL` +M%"A6+!-P_T9`P(9G!@*&``#__R8\___^^=:&<`*P@U/$2<1$A.N,0J=(>``@ +M+P5.N0``.L1/[P`,4H!F$$AZ_QQ.N0``&*Q8CW8!8&)P`;"#968B`NJ)$#P` +M'["-5<#``21-"````&<6(DM!]``!("L`!)"$+P`O!4ZY```Z +MQ$_O``Q2@&8(2'K^5V``_R0@/````0'`@F<(("L`!)"$U<`,A@```0M7P$0` +M#(8```$(5\%$`8`!9RXF"D2#`H,``!__"`(``6<2+P-"ITARR`!.N0``/EA/ +M[P`,(#P```("P()G`M7#1,)F.D'RR``M2``(+RL`""\(+P5.N0``01A/[P`, +M``!+RL`""\%3KD` +M`#K$3^\`#%*`9@A(>OVU8`#^;B`\```$!,""9P35ZP`(1,)J%"\K``Q"ITAR +MR`!.N0``/EA/[P`,(#P```@(P()G!-7K``QX$,B"9PI!\L@`0^L`$"#9`H(` +M`!`00H9*@F<$+`I8BB`K`!!G``$42H1G,B\`2'+(`"\%3KD``$$83^\`#'+_ +MLH!F"$AZ_3]@`/WNL*L`$&``$=BS6CR\#+P5.N0``01A/[P`, +M``!+P`O!4ZY```Z +MQ$_O``Q2@&8(2'K\J6``_0A*@F<$U>\`*-O,+,TLS2UK`!``!-R,+48`"-7, +M+4H`#$*#8`#]4```;'-E96L@\`%"@8(!@J&"800JO^N3KD``!BL6(]P_TS?`#Q.=2\#+P4O!$ZY``!!&"(`3^\`#'#_L(%F +M!DAZ_YA@TD*`MH%GUA`\``4A@`'Q````6&#F;'-E96L@`%@``#8)E0O;``4`#1"@#`J`#`H`.6,V(#GC"\$3KD` +M`#P(*@`O!"\`+RH`("\O`(!.NOZ03^\`%%*`9P`!6BIO`#2;RT*J`!QP-"5` +M`"!":@`J0FH`+")*(&\`-'`"(-D@V2#9(-E1R/_V(-E!]4D@$#,@"`)`\``B +M!5B!+T$`/")!0H9"@C0J`#"TAFY8)CP`'___UH`"@__@```L;P`\0H:TAFX` +M`/8&@P``#_\O!"\%2'/8-$ZY```^-"\%3KD``#SP*6\`1``0`D/P`-:+*4,` +M%$_O`!!"A"`$3-]\_$_O`$!.=0@I``$`!V=T(&D`$"8\```0`+:(9`1V($A# +M+$--]@C_+TX`."(.3$,0`4P#&``L02X1<@&RAV=.48=F0"\(0J=(<^@`+T@` +M/"])`#A.N0``/EA/[P`,(&\`,")O`"P@#I"-(T``#$'P./\@"-".3$,``$P# +M"`!"@C0J`#!2AD/I`"A@`/\@+P@O#B\I``PO"R\O`(`O2`!$+TD`0$ZZ_<1/ +M[P`4(&\`,")O`"Q2@&:N+P5@``("(!9R`[*`9U)E.E6`9D(D+@`0+P(O`R\N +M``PO"R\O`(!.NOV*3^\`%%*`9\X@`Y"-+4``#%:")D4L!"0$*D0O00!(0H$R*@`L<`3`@R]``#P@ +M/```"`C`@R]``$!P","#+T``1"`\```$!,"#+T``3"`\```!`<"#?@$L0,Z# +MLH9N``#B+P5.N0``//!6@G+\PH(O00`\(#P``"`@P(-8CT*'2H!G""X!<#31 +MKP`X(#P``!`0P(-G``)N+U0`0$*!,BH`,"`!Y8C0@>>(+T``/"\`3KD``#P( +M+$`O+P!`+P`O*@`@+R\`@$ZZ^Y1/[P`44H!G``&P*B\`/-JO`#A"@3(J`#)G +M``*"(`'EB-"!YXA!]@@`+"@`$"0H`!0(`P`$9@`!9B\"3KD``#P(*D`O`B\` +M+P8O+P"`3KK[1$_O`!12@&8``68O#DZY```\\%B/(`UG`/QF+PU.N0``//!8 +MCV``_%AP`;"39@``\"`K`!CHP`=#9P``Y`@```!G1$J'9D8(````9@``BDJO +M`$QG``"(2JP`"%?!1H#``0@```!F``#"("L`"+"O`$AD!"]``$@@:P`02_`( +M`+O"8UXD#6!:2J\`/&>Z2JP`"%?!1H#``0@```!F*B`K``@O*P`0+P`O*P`$ +M+R\`0"\O`(!.NOL43^\`%%*`9P#]6"`K`!A@@"!O`#0@*P`(T<`I2``(8,HB +M#F8`_WP@:P`0("L`%+"(8RQ*KP!$9R8B2)"(T^L`""\`0J<@+P`\2'$(`$ZY +M```^6$_O``P@:P`0("L`%+"(8B)"@3(J`"Q2AD?K`"!@`/X<(&\`-"`K``C1 +MP"E(``A@`/\T2J\`0&?8D(C;P+O"8]`D#6#,+P(O!2\&+R\`3"\O`(!.NOIL +M3^\`%%*`9@#^@IO-8`#^GD*!,BH`,B`!Y8C0@2(%DHPKP!49C9R!+*O`%AF+A`\ +M``&PKP!<9B1(>``(2'KY;$AO`&A.N0``/@!/[P`,2H!F"D'Y```!<""O`&A" +MJP`00H(T*@`P8#P@#6<`_W!(>``*2'KY+$ASV15.N0``32!/[P`,2H!F`/]4 +M2J\`3&9.(`60AR=``!`@*P`45H!R_,"!VH!2AD?K`"A@`/YD(@)![@`L58%P +M`;""5^0>@`)%')_^Y"05.!9.9@`/\`+RL`%"\% +M+RL`$"\O`$PO+P"`3KKX0$_O`!12@&<`_'A"@C0J`#!@B@``+PXO"B1O``P5 +M?``!``,B*@`$+'D````$3J[_*$J`9Q`5?``#``)"J@`4)%\L7TYU%7P``0`" +M8.XO+P`$3KH`.EB/$@!*@&<*($`2*``"`@$``G``$`%.=2\O``1.N@`:6(\@ +M0'``(@AG#"`O``B`J``((4``"$YU(B\`!'``LKD```%\9!P@>0```7CEB2`P +M&`!G#B!`2B@``U;!2(%(P<"!3G5(YR`^)"\`'"AO`"`@#&<``+I(>``X2_D` +M`#P(3I4D0%B/2H!G``"D1^H`""\\``$``$Z5)4``&%B/9P``A"QY````8")* +M0?D````H3J[_$$*J``A"J@`,0JH`$#5\`(``%"\"3KK_+EB/2H!G!C5\`($` +M%`P4`&%7P$B`2,!$@.>(+P`O`DZZ_RQ0CP@```!G!@!J@```%#5"`!8E?``! +M````'$*J`"!"J@`H0JH`+$*J`#!"J@`T(`M,WWP$3G4O"DZY```\\%B/<`PC +MP````8"7RV#B2.``83KD``#P()$!8CTJ`9SH@.0```7PB +M`"!Y```!>.6)(8H8`"(`4H$CP0```7PT@"5O``@`!'`!)4``""\*3KK]L@`J +M``0``EB/(`HD7TYU*@!R`'<`2.<@,DAX`!!.N0``/`@CP````7A8CV<``08L +M>0````1.KO_*+P!%^O]^3I)8CTJ`9P``["!`0J@`""QY````!$ZN_\0O`$Z2 +M6(]*@&<``-`@>0```&`@:`$4("@`X&882KD```!49P``DB!Y```!>"!H``0@ +M*``$+P!.DEB/2H!G``"<('D```%X0J@`#"9Y````)$AZ_V9"IT7Z_:1.DB;` +M4(]G>$AZ_U9(>``!3I(F@%"/9VA(>O]&2'@``DZ2)$`G0``$4(]G5"\J`!!. +MN0``//`P*@`,`D#_?@!```(U0``,0>H`'"5(`!!P`R5``!18CTS?3`1.=2QY +M````!"(\```K(B0\```#[4ZN_^(CP`````QG`/]28`#_7$AX`!1.N0```&0O +M#B\O``A.NOSD6(\@0$J`9@9P`"Q?3G4B:``4(@EG#"]```@B:0`(+%].T1`H +M``-3`!%```-FV@@H``(``F;2(B@`!"QY````!$ZN_]Q*@&;`3KD``$'X0````1. +MKO_<48HB2BQY````8$ZN_P0O"DZ46(\@"TS?7`!.=4CG,#)%^0```"A'^O]\ +M(%)*D&8>)CD```%\=`!%^O\.2H-N&"(Y````#&8\3-],#$YU2&@`"$Z36(]@ +MTB`"Y8@@>0```7@@<`@`(`AG$DHH``-G#!%\``$``R\"3I)8CU*"M(-FUF"\ +M+'D````$3J[_W&"X2.<\,B9Y````5"`+9P``@B(\````-"!!2A!G/"0\```# +M[2QY````!$ZN_^(D`"/`````&&8*2'@`%$ZY````9"(`+'D````$3J[^VB(" +M+'D````$3J[^U"!K`"0@"&<>(A`L>0````1.KO^@(@`L>0````1.KO^"(\`` +M```40KD```!P(\L```!83-],/$YU)'D```!H)#D```!<(`(L>0```&!2@"(+ +M3J[]5"/`````$&>"=@%*@F=4($!V`1(2$`$&``#W#````5/`1``,`0`@5\1$ +M!(`$9BPJ`B)*4X4,`0`B9@``Y%**4X)G$B)*$!$,```B9@``G$7I``%3@D(8 +M4H-@!%**4X)*@F:P(\,```!P(`-2@"QY````8.6(<@%(04ZN_50D0"/````` +M6&<`_P0@>0```!!#Z@`$<`&P@VT``*@F/````0`L>0```&`@`W(`3J[]5"2` +M9P``I"QY````!"(`)`-.KOW`+'D````$3J[_?')XLH!F``"$(E(L>0```&!. +MKOU.!H,```$`8+@D20P``"IF"%**4X)G`/]>0^H``1#24X)F`/]")$E@`/], +M)$D0P5."40```&!.KOU.(DHL>0```&!.KOU.(D(L>0```&!.KOU.8+Y(>``(3KD` +M`#P(6(]*@&8,<`PCP````8!P_TYU($`@^0```!P@KP`$(\`````<<`!.=2\* +M)'D````<(`IF!"1?3G4@:@`$3I`D4F#N2'@`"D*G+R\`#$ZY``!-A$_O``Q. +M=0``2.6((F\`!$'Q"``@`6P" +M<`!1R``*0D!3@&0"3G4B$2+H__PA`6#J3E7_[$'M_^P@^0```"`@^0```"0@ +M^0```%`@^0```%0@N0```"A(;?_L0J="IR\M`!`O+0`,+RT`"$ZZ`4XC[?_L +M````("/M__`````D(^W_]````%`C[?_X````5"/M__P````H3EU.=4Y5_^PO +M`D'M``@@&"(8(E@D&"M0`!A![?_L(/D````@(/D````D(/D```!0(/D```!4 +M(+D````H2&W_["\M`!@O`B\)+P$O`$ZZ`-8C[?_L````("/M__`````D(^W_ +M]````%`C[?_X````5"/M__P````H)"W_Z$Y=3G5![P`$(!@B&")8+Q!"IT*G +M+PDO`2\`3KH`C$_O`!A.=2TM`%!/4TE83%E?0T]24D5#5``Z(&]P=&EO;B!@ +M`"<@:7,@86UB:6=U;W5S("AC;W5L9"!B92!@+2T`)R!O\`2"]8`$@H6"I8+%@O6`!8)%!*KP!( +M5\!$`"(,5\%$`8`!9PQP_TS??/Q/[P`83G4@#5?`1``B#E?!1`'``6;D("H` +M!+"O`$ALVN6((#0(`&?22'K_'B\`)CP``$)<($-.D%"/2H!F!E*J``1@MDJJ +M``1F"G`!)4``$"5```0@#6<``>H2%1`!!@``U0(``/UF``':#`$`+5?%2(5( +MQ52%4HU"KP`X(`UG#@P5`#IF"'`!4HTO0``X("H`$)?+<@$L"[*`9D"RA6<` +M`?1P`B(J``2PA6<``@@D`2P!E\L@`>6(('0(`"`(9P`!G@P0`"UF``5.2'K^ +M?"\(($-.D%"/2H!G``&,(BH`!"`!Y8@B=`@`(`EG`/\.=/\H`B`.9P`#!)'( +M#!$`+69R#"D`+0`!9FIP`;"J`!!F8G`")4``$$AX`#U(:0`"3KD``$)$($`B +M*@`$(`%0C^6()`AF``&6('0(`")(%!EF_"`(D(E&@-'`D*H`$"]``#0O3@`P +M=/]^`"`!Y8@O0`!`(F\`,"819@`!='C_N()F``)\(`U6PT0#(`30@)&`1(#` +M`W8`2@!G``*PY8D@*@`0('08`!`P"`!(@#!`+P@O#4ZY``!"1"8`4(]F``)4 +M2JH`"&=@('D````D+R@`""\41_D``#$D3I,@>0```"0O*``(2'K]O$Z3('D` +M```D+R@`""`J``3EB"!T"``@*@`0$#`(`$B`,D`O"4ZY``!`A"!Y````)"\H +M``A(>OV;3I-/[P`@(BH`$%*!)4$`$"`J``0D`.6*('0H`$HP&`!F``&(4H`E +M0``$<`$E0``08``!>$AZ_0=.N0``62!8CTJ`5L5(A4C%1(7:A6``_APE0@`$ +M8`#]EB`"Y8C9P"\++PQ+^ONB3I5(:P`!+PQ.E4AX``$O#$Z54H(E0@`$3^\` +M&&``_6@B*@`$)`'EBB9T*``D"V<*#!,`+68``WR7RRP+8`#^+B`!Y8@F=`@` +M(`MG[@P3`"UF`/TT8.(B2)/T"`"3Z@`0+TD`-&``_G8O0P`\("\`0")T"`#3 +MZ@`0+TD`+"@O`#11S`#,0D13A&0``,0B0Q`99OR6B4:#MJ\`-&<``-IP_["" +M9P``SDJJ``AG``"8('D````D+R@`""\41_D``#$D3I,@>0```"0O*``(2'K\ +M&4Z3('D````D+R@`""`J``3EB"\T"`!.DR!Y````)"\H``A(>OO^3I,@>0`` +M`"1/[P`<+J@`".F*+S8H`$Z3('D````D+R@`"$AZ^_5.DR!Y````)"\H``@@ +M;P!$+Q!.DR!Y````)"\H``A(>OO<3I-/[P`@<#\E0``,8`#\/")O`"P0&2]) +M`"PB;P`\4J\`/+`99P#_'%*'4H&RKP!(;0``N$JJ``AG>"!Y````)"\H``@O%$?Y```Q)$Z3('D` +M```D+R@`"$AZ^O9.DT_O`!!P_R!Y````)+"$9U@O*``(2'@`+4ZY``!`A"!Y +M````)"\H``CIC"\V2`!.DT_O`!!P/TJO`#AG`G`Z)4``#"!Y````)"\H``A( +M>OJA3I-0CU*J``1P/TJO`#AG`/KD<#I@`/K>+R@`""!#$!!(@#)`+PE.N0`` +M0(0@0Q`02(`P0"5(``Q0CV"VY8DDM!@`)4(`$&``_Q1P_["$9A8@*@`04H`E +M0``0Y8D@=!@`2C`(`&8&<`$E0``00I)T`$J%9G1P`;"J`!!7P$0`(@M6P40! +MP`%G8"I"(`;EB%*-V<`O"R\,)CP``#%4($-.D$ASV``O#")#3I$O#2\,($-. +MD"!&0?`H`25(``1/[P`8``43KD```!D2'K_7"\23I-0CRQY```` +M8")22H!G$DZN_@XE0/_\9@)T`5"*8`#_:DZN_FA@[$S?3`Q/[P`\3G5(YP`R +M1?D````$1_D``$U42I)F!DS?3`!.=4AZ_PHO*@`$3I-0CTJ`9@PB4BQY```` +M8$ZN_F)0BF#62.<_(B@O`"@L+P`L+R\`)$ZY```I/"1`6(]*@&<``+0J*@`$ +M=O]*AF<*<`)V`+"&5\-$`RQY````!"(%)`1.KO^^4H!F``#F2JH`"&<``-YP +M`2QY````!"(%=``F`K"&9QYT`'`"L(9F'BQY````!"(%=@%.KO^^+'D````$ +M(@5.KO^^)`#8@'#_L()6P$0`<@*RAE;!1`'``6<>+'D````$(@5T`'8!3J[_ +MOB(%+'D````$3J[_OB0`/]@)DJY +M````+&822'@0`$ZY```\""/`````+%B/+`2<@C1\$`!*AF8((`1,WT3\3G4N +M!@R&```0`&,"+@HL>0````0B!20Y````+"8'3J[_T+"'9J2H`("5( +M`!`E2``40JH`(#!\_^#1PB5(`"0E2``0```90@$F=0```&!.KO[^+'D```!@2H!F$G`N(GD` +M``&03J[_+B0?+%].=2)`("D`&)")3J[_+F#*+P(B;P`,(&\`""`O`!!1R``, +M0D!3@&0$<`!@$A(8%!FT`6?J<``0`7(`$@*0@20?3G4``"\.+P(D+P`,+'D` +M``!@(&\`$"`O`!0B0DZN_9`@`B0?+%].=4CG-SHH;P`H("\`+"0O`#!R![*" +M94A*@F<\&(!R`;*"9S090``!<@*R@FJ*9QPL0"H`+``N`")`)$`F0%'*`#1"0E."9"QR'\*#)@$D`>2*9Q)3@B$` +M40```7@B.0```7QO/B!*=@`D`5."(D@@&&<``(HB0$HI +M``-G=E*#4"!`1?`H_$*2 +M4KD```%\(!)FP$AX`!A.N0``/`@D@%B/9]0@0#"#8*H,@P``?_]FHF"6)$D, +M@P``?_]GC+E4``$AM``PO+0`(('D````D+R@`!$ZY``!09$Y=3G4O`B(O +M``@@;P`,("@`"%.`(4``"&P,L*@`&&T:#`$`"F<4(!`D`%*"(((@0!"!<``0 +M`20?3G4O2``,+T$`""0?3OD``$^H```O"R\*)F\`#$7Y``!`A!`;('D````D +M9A@O*``$2'@`"DZ24(]R_[*`5\!(@$C`8!0O*``$2(`P0"\(3I)0CW+_LH!F +MRB1?)E].=0``68](YS`B)"\`'"8O`"`O+P`83KD``"D\)$!8CTJ`9TY.N0`` +M5\P@:@`4(`AG%B]#`"`O0@`<+TH`&")03-]$#%B/3M$B*@`$+'D````$3J[_ +MUG+_LH!F#B]``!!.N0``0?@@+P`03-]$#%B/3G5P_V#T``!(YS`B)&\`%"8O +M`!AG5B\#3KD``#P()`!8CR(*9SI*@&<<(BK__%F!(`.R@V0"(`$L>0```&`B +M0B!*3J[]D$J#5\!$`$J"5L%$`8`!9Q(O"DZY```\\%B/(`),WT0,3G5T`&#T +M)`,@"F;48.PO#B\"+'D````$3J[_?$'Y````8")8L\!6P40!)`E6PD0"P@)F +M#"/0```!@"0?+%].=5B(8-X``$SO`0$`!")`2AEF_%.)$MAF_$YU(&\`!"`( +M$ABR+P`+9@).=4H!9O!P`$YU(F\`!"!O``@2&6<2LAAG^'``$`%R`!(H__^0 +M@4YU4HA@[@``56YD969I;F5D(&5R0!097)M:7-S:6]N(&1E;FEE9`!" +M860@861D&ES=',`0W)O2!O +M<&5N(&9I;&5S`$YO="!A('1Y<&5W2!F:6QE('-Y2!L:6YK2!U;F%V86EL86)L90!/<&5R871I;VX@;F]W(&EN('!R;V=R97-S`$]P +M97)A=&EO;B!A;')E861Y(&EN('!R;V=R97-S`%-O8VME="!O<&5R871I;VX@ +M;VX@;F]N+7-O8VME=`!$97-T:6YA=&EO;B!A9&1R97-S(')E<75I2!I;B!U2!R969E7!E(&]R(&9O&5C(&5R7-T96T@8V%L;"!S:&]U;&0@8F4@2!P2!R969E2!N;W0@879A:6QA8FQE`$ME>2!H87,@97AP:7)E +M9`!+97D@:&%S(&)E96X@0```T@@2TH39A1P%B/````!@'``3.T<`/_P3EU. +M=21($!)2B$B`"#$``P`!9O`O+0`02&W__"\*3KD``$X8(@QG"B(M__RRBF8< +M*(L,$@`M9AA*@&^^<"(CP````8`@/(````!@KBB!8.)*@&RF<"(CP````8`@ +M/'____]@EDCG/SXH;P`P)F\`-"0O`#AP`;""5\!$`'(DLH)5P40!@`%G&"`+ +M9P(FC'`6(\````&`=@`@`TS??/Q.=2`,9^I*%&?F+'D```-(($PD2!@8$`1( +M@!(V``$"`0`(9NX0!`8``-4"``#]9@``O"1(2H)F``"Z=`H,$@`P9C80*@`! +M2(`P0!`V``$"```##````68$0>@`('0(<'BPB&84$"H``DB`$#8``0(``$1G +M!%2*=!`J2G8`+#P``%PX(DT0'4B`,$`0-@`!$@`"`0`'9P``F'K0VHAR";*% +M9!("```##````68$0>@`('JIVHBZ@FQV+@5&AR\"+P<@1DZ04(^P@V44+P(O +M`TZY``!``!9@#_@`(`@``9P8J*@`41(5V``@" +M``%F!B8J`!13@]:%1,)K$B2J`!!3@R5#``@`0@`(-4(`#"`2(@!2@22!($`0 +MA"`J``AL(+"%;08,!``*9A8O"DZY```PC%B/2H!FB"2J`!`U0@`,)44`&"5# +M``@@!$S?!#Q.=2\*)&\`""\O`!`O+P`0+PI.N0``4)1/[P`,""H`!@`-9P)P +M_R1?3G4C,"T@*R4``$_O_\A(YS\^)F\`;"AO`'!\`!`39@P@!DS??/Q/[P`X +M3G4,```E9@`&.D7K``%"0W(!(DH0&0P``"-G)`P``#!G(@P``"UG(`P``"!G +M'@P``"MF''`$)`'AJH9")$E@TG``8/)P`6#N<`)@ZG`#8.9"1PP``"IF6B!) +M1>P`!"`4/@!*@&P&`$,`!$1'-#Q__PP0`"YF7`!#`"!#Z``!#"@`*@`!9T1" +M0B!)$!E(@#A`2>S_T'@)N(QE.,7\``H&0O_0U$!@XL_\``H&1__0WD!2B2!* +M$!!(@#I`)$E+[?_0=`FTC63@)$Q@HE2((!IM`C0`$A`,`0!Z5\`8`$0$#`$` +M=%?`1`"`!!@!`@0`_0P$`&A7Q$0$@`08`0($`-\,!`!,5\1$!(`$9WP0*``! +M`@``^PP``&AG:%*((D@0&2])`$`,``!N9P`$:&X``(0,``!C9P`$)&Y2#``` +M)6<`!&@,``!89E`,``!D5\1$!`P``&E7Q40%B`5G``%`#`$`;&9^0>H`!"]2 +M`#Q;P4B!2,$O00`X2J\`.&L``)Q@``#P5(A2`6"4$@!@D`P``&1GM@P``&EG +ML$H`9P0@;P!`*`B8BR](`$!Z`#0%/@5@``(@#```H` +M!"H26\1(A$C$8*H,`0!I9@`$`D*O`#AR`$8!PH4O00`\2@5MJ`@#``1G&!]\ +M`"L`1'H!+V\`.`!&+V\`/`!*)$A@J'H`1,-JZA]\`"``1&#@#`$`;&8``?HO +M4@!*0J\`1EB*"`,``&<``G0,``!O9@`"/B(O`$:"KP!*5L$8`40$2D)7P40! +M@@1Z`$H!9P@??``P`$1Z`3A\``A+^@."#```;V<2.'P`"DOZ`X0,``!89P1+ +M^@-J-GP`%4'WN$XO2``T(F\`1B`)9P`"&'@`."\`2G``,"\`3"\,+PDO0``X +M+TD`-$ZY``!<+$A`0D`L0%"/W<0O#"\.3KD``%PX4(\H`"\,+PY.N0``7"Q0 +MCTA`0D`B+P`PTH`O#"\!+T$`.$ZY``!<+%"/+$`O#"\O`#1.N0``7#@B!$A! +M0D'0@5"/+T``2B\,+R\`,$ZY``!<.$)$2$30A%"/+T``1A^UZ`"X3G@6F(M3 +MBR`O`$:`KP!*9@#_2`Q"?_]G``&.`D/__29O`#0(`P`%9QQP`;"$5\!$`$I" +M5\%$`<`!9PIX``P3`#!6Q$0$<``P`KB`8P(@!-!%<@`R`#!'F8 +MP#X#`D<``BI&9PYP`#(-DD8P`;"%90`!C@)#``1F,C`,9RX\?``@2D=G!#Q\ +M`#!"1B\O`&@O#DZY``!`A#`&4D!0C[!,9@`!>G``,`9+]0@!+$U*1V8.<``R +M#I)-,`&PA64``60Z!+I"90`!>"P.<``R!I).,`&PA&4``8!"0DI#9@`!IBA* +M)F\`0&``^UH,`0!M5\1$!`P!`&I7Q40%B`5G)B!2(FH`!"](`$8O20!*4(H, +M`0!H9AQ"KP!&`J\``/__`$I@`/W:+U(`2D*O`$98BF#>#`$`:68`_<9"KP!& +M`J\```#_`$I@`/VV$@`"`0#?>@`,`0!89@#]-"(O`$:"KP!*9PP??``P`$0? +M0`!%>@(X?``08`#]SGH`8`#]"B@O`$HO#"\$3KD``%PL4(\L0"\,+P1.N0`` +M7#A0CR]``$I@`/Y60D)@`/YT'VH``P!.6(IX`7H`1^\`3C0%8`#^8D'J``0F +M4B)+$!EF_"@+F(EP`#`"1H2PA&0"*``D2'H`8-@@4B"&>`!8BBH$1^\`3C0$ +M/@1@`/XJ>`%Z`$?Z^C%@N"\O`&@0-PA(2(`P0"\(3KD``$"$4HU0CV``_DP\ +M`&``_FPO+P!H$#<(2$B`,$`O"$ZY``!`A%*.4(]@`/YV+R\`:$AX`#!.N0`` +M0(12CE)%4(]@`/YN+R\`:!`S"`!(@#!`+PA.N0``0(12AE"/8`#^6B\O`&A( +M>``@3KD``$"$4D)0C[1,9NIP`#`"W(!@`/Y04HLO+P!H2(`R0"\)3KD``$"$ +M4H90CV``^9@O1``X+T4`/&``^PXP,3(S-#4V-S@Y86)C9&5F,#$R,S0U-C0```TQ+^0``32`D5"`*9A@O"TAZ_[1.N0``7!10CTJ`9LA%^O^.8,(O`R\+ +M+PI.E4_O``Q*@&8.)%0,,@`].`!F!)7"8*18C&#`(&\`!$/H_]!P";")5,%$ +M`4/H_Y]P!;")5,!$`((`9@Q!Z/^_<`6PB%3!1`%P`!`!3G4``"HJ*D)R96%K +M"@!(YS\@*"\`("8$4X-P!;"#90``F'0!YZJ%N0```$@N`D:'1?D````PY8LJ +M.0```$PL`LR%(#D```!(0@%*AF=8<`!,WP3\3G7`AR!R.`!R`7P!O(AG0B/` +M````2"`"@(4CP````$P@"&8@<`*PA&8@2'@`"4AZ_X`O!$ZY``!7/$AX`!1. +MN0```&0O!$Z06(\CQ0```$Q@DBP"S(!FJDH!9YXCP````$A@EG#_8)1D;W,N +M;&EB0!(YS\^('D```!@)F@!%"!K`-`T?``!)!AF,B`*Y8@O`$OY```\ +M"$Z5(\````-,6(]F*"/\````4````TQP#"/````!@'#_3-]\_$YU2B@`!%?` +M2("4P"!"8+PF:P#03?D``#XT2I-F!B@"Y8Q@1$HK``AF?"8K``H@0Q`89OR6 +MB"H#1H4@1='K`!0L"%*&*`+EC"XY```#3-Z$2&@``DZ5($0```&`@:`$4(&@`T"809@Q.NO^J(`-,WT`,3G5**``(9A`L>0`` +M``0B*``*=`!.KOQP($-@UDSO``,`!"!Y````#$[H_W8O#BQY````#"!O``@B +M;P`,3J[_7BQ?3G5,[P`#``1A"B`!3G5,[P`#``0@>0````Q.Z/]D=71I;&ET +M>2YL:6)R87)Y````````````````````+20```!B```OI````%@``#!:```` +M@```.9H```![```ZB@```#$``#W`````3@```````"LH````8@``+9@```!8 +M```Y=````'L``#G,````,0``/7P```!.``!:E````'X````````#[````+\` +M````````0````&8```#,````T````%P```#(```%O@``!JX```D0```))@`` +M":````G:```*N```"PP```LJ```+:```"Z@```OF```,!@``#6```!!V```+ +MB@``"A````P.```+@@``"4@```F@``'TH``"`````>/```'LP``!UN```> +M9@``'Q@``!]T```?S@``'8(``!T<```@@```(0@``""H```A,@``(1H``""2 +M```AQ```(_X``"2^```E$@``(EX``";L```B9@``)30``"5$```D<@``)O@` +M`"<&```F*@``(MH``"@"```H.```+"H``"K6```K,@``*8```"HL```K^``` +M+,X``"J@```LI```*I0``"Q,```J2@``+=0``#`N```P@```,,0``#$2```Q +M'@``,2X``#C@```S<```-&```#3B```WX@``-0(``#9P```X$@``-3P``#AP +M```UB```.7H``#F>```Z'@``.DX``#J6```YW@``.M8``#N2```[J```/Y`` +M`#^B``!`$@``0#X``$!\``!`Q@``0-8``$$L``!!.@``078``$&>``!!W@`` +M3+X``$W4``!.T```3V@``$\B``!00@``4'8``%/D``!4!@``5"```%7J``!4 +M,```5$H``%/X``!5^```5/@``%9T``!6E@``5JP``%;*``!6X```5P0``%=. +M``!77```5Z```%?L``!8_@``65@``%EJ``!:5@``6F```%KT``!;E@``6K8` +M`%QD``!<;```7'0``%Q\``!```8_```&0P``!DD```+?```",````N\```*.```"B0``!KR +M```;3@``&Y(``!PJ```=S@``'H@``!\Z```?E```'_```"#,```A5@``(:`` +M`"/J```IL```*[@``"TJ```HV```*G8``"J&```JK```*K@``"M$```K9``` +M+"0``"R6```L\@``+0```"V.```MJ@``+;P``"W<```MZ```+?P``"X(```N +M^@``+P@``"^\```OT@``+]X``#'4```QW```,DP``#)4```QF```,9X``#(4 +M```R&@``-/8``#4*```U&@``-4(``#9D```V>```-H@``#:>```VK@``-L0` +M`#;4```VY@``-]8``#?J```X````.!@``#@\```Y_```.=8``#GT```ZD``` +M.B0``#HZ```Z^@``.Q@``#LP```[/@``.V(``#MT```[U@``._(``#Q"```_ +M=@``0'(``$#>``!!8@``0@@``$'^``!,T```39H``$Y>``!/<```5X@``%>V +M``!94@``6KX``%K,``!;P```6R@``%M(``!;D```6[0``%OR``!<#```7!@` +M`%Q`````Z@````(```"6`````@````@````.````C@```#H```!V````2@`` +M`%````!6````<````!@```7F```&"@``$:H```$2```!)@``!MP```IN```, +M)@``!<0``!(D```8;```&-(```=N```(L@``"A@```HN```*_@``"QP```NR +M```+Q@``#48```AN```+]@``"IP```PP```(R````0(```VN```."```#E0` +M``B*```,\```$+(``!#T```1.```$48``!%^```/_@``"NH```@&```,4``` +M$)8```UT```/[@``$)P``!%V```%U@``!?H```C4```+D```#.0```S8```! +M"```#/X```TB```-V@```1P```_T```0O@``$-```!#B```1````$1(``!%4 +M```!,```$8@```>(```)A```"-X```M2```+G@``"_P```QT````^```"38` +M``?F```'&```!L````@0```(.@``#$0```@P```);```!J````J"```,/@`` +M"&(```Q*```1N```$9@```=X```'E```!_8```@:```(5@``&\(``!O,```H +M$```+#H``"U*```I1```*OP``"KD```M.@``*XH``"HV```KK@``*4P``"KL +M```KE```*S@``"UF```K>@``+0X``"FH```MR```+A(``"Y&```NS@``+[0` +M`"_,```O[@``+A@``"ZH```N'@``+L0``"_V```NY@``+QP``"XX```NL@`` +M,`8``#`2```P'@``+BH``"V>```OJ@``+C```#!2```P2```,%X``#`\```P +MH@``,<0``#',```QY```,CP``#)$```R7```,8P``#&2```QI```,@@``#(. +M```R(```.EX``#JX```[G```.ZX``#O>```]@```/8X``#V4```]Q@``/#(` +M`#S2```]#@``/:P``#QN```\(```//X``#UD```]Y```/,H``#Q8```\W``` +M/00``#PF```])```/4@``#U2```\=```/6H``#V:```]M```/`````<```#*````&@```,L````1````S`````(```#-`````@`` +M`,X````_````SP```!L```#1````$P```-4````0````U@```!X```#7```` +M$@```-@```!"````V0```#\```#:````!@```-L````=````W0```!P```#> +M````#0```-\````-````X`````T```#A````3P```.(````&````ZP````@` +M``$Q````#0`````````!``!"@```0I```$*H``!"P@``0M(``$+J``!"]``` +M0PX``$,E``!#-P``0T<``$-:``!#9```0W(``$.$``!#D```0Z8``$.^``!# +MR@``0]P``$/K``!#^P``1`H``$0;``!$+P``1$,``$14``!$8P``1'(``$2* +M``!$EP``1*T``$2\``!$R```1.P``$4*``!%*P``144``$5C``!%@@``19\` +M`$6P``!%SP``1>8``$7]``!&%P``1B\``$9-``!&?0``1I0``$:S``!&PP`` +M1MH``$;^``!''P``1S@``$=2``!';@``1X8``$>G``!'R0``1]T``$?P``!( +M$@``2"4``$@R``!(0P``2%<``$AJ``!(>0``2(T``$BC``!(Q0``2-<``$CI +M``!(_0``21,``$DM``!)0```25D``$E[``!)E```2:8``$FT``!)OP``2=4` +M`$H!``!(:@``16,``$6"``!%GP``1;```$7/``!%Y@``1?T``$H4``!&+P`` +M2D(``$9]``!*:P``1K,``$;#``!*BP``1OX``$ +M``!+O```2]$``$OB``!+\0``3`$``$P3``!,)@``3$$``$Q1``!,9@``3((` +M`$R-``!7^````%````/L````AP`````````(````$````3@```$\```!0``` +M`40```%(```!3````5````%4```!6````5P```%@```!9````6@```%L```! +M<````70```%X```!?````8````&$```!B````8P```&0```!E````9@```&< +M```!H````:0```&H```!K````;````&T```!N````;P```'````!Q````<@` +M``',```!T````=0```'8```!W````>````'D```!Z````>P```'P```!]``` +M`?@```'\```"`````@0```((```"#````A````(4```"&````AP```(@```" +M)````B@```(L```",````C0```(X```"/````D````)$```"2````DP```)0 +M```"5````E@```)<```"8````F0```)H```";````G````)T```">````GP` +M``*````"A````H@```*,```"D````I0```*8```"G````J````*D```"J``` +M`JP```*P```"M````K@```*\```"P````L0```+(```"S````M````+4```" +MV````MP```+@```"Y````N@```+L```"\````O0```+X```"_````P````,$ +M```#"````PP```,0```#%````Q@```,<```#(````R0```,H```#+````S`` +M``,T```#.````SP```-````#1````T@````"`````0```"@````P`````P`` +B``(````D````6````TP````````#\@```^L```!H```#\B@` ` end diff --git a/sys/arch/amiga/stand/loadbsd/Makefile b/sys/arch/amiga/stand/loadbsd/Makefile index 0f6c295a7c7a..5a98ac7dfacb 100644 --- a/sys/arch/amiga/stand/loadbsd/Makefile +++ b/sys/arch/amiga/stand/loadbsd/Makefile @@ -1,14 +1,17 @@ -# $NetBSD: Makefile,v 1.3.10.1 2023/02/24 13:57:19 martin Exp $ -# +# $NetBSD: Makefile,v 1.3.10.2 2023/06/03 15:09:01 martin Exp $ +# Set sdkprefix to your gcc-amiga toolchain as needed. TARGET = loadbsd -sdkprefix = +sdkprefix = CC = $(sdkprefix)gcc CFLAGS = -D_STANDALONE -DNO_MID_CHECK -I./include -Os -fomit-frame-pointer -msmall-code -m68020 -LDFLAGS = -noixemul +AS = $(sdkprefix)as +ASFLAGS = +#LDFLAGS = -noixemul +LDFLAGS = -mcrt=nix20 LDLIBS = -OBJS = loadbsd.o loadfile.o loadfile_aout.o loadfile_elf32.o getopt.o +OBJS = loadbsd.o startit.o loadfile.o loadfile_aout.o loadfile_elf32.o $(TARGET): $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS) diff --git a/sys/arch/amiga/stand/loadbsd/README b/sys/arch/amiga/stand/loadbsd/README index dcbaaae9ebb6..df3dc6772e13 100644 --- a/sys/arch/amiga/stand/loadbsd/README +++ b/sys/arch/amiga/stand/loadbsd/README @@ -1,13 +1,14 @@ -# $NetBSD: README,v 1.3.10.1 2023/02/24 13:57:19 martin Exp $ +# $NetBSD: README,v 1.3.10.2 2023/06/03 15:09:01 martin Exp $ BUILD INSTRUCTIONS Building LoadBSD isn't easy since several sources from the NetBSD repository are required. Compiling these sources under AmigaOS without clashes with the native GCC headers requires some knowledge. This document tries to describe -the steps necessary to rebuild LoadBSD with an AmigaOS gcc. These instructions -do only apply for LoadBSD versions using the loadfile() interface. Previous -version do only require getopt.c and reboot.h. +the steps necessary to rebuild LoadBSD with a modern AmigaOS gcc, or vbcc +with PosixLib. +These instructions do only apply for LoadBSD versions using the loadfile() +interface. Previous version do only require getopt.c and reboot.h. Note: It is not possible to build LoadBSD with the native NetBSD compiler! LoadBSD is an *AmigaOS* program and must be built with an AmigaOS @@ -16,7 +17,6 @@ Note: It is not possible to build LoadBSD with the native NetBSD compiler! Required sources from NetBSD (either HEAD or from a release branch) From src/sys/lib/libsa: loadfile.h,loadfile.c,loadfile_elf32.c,loadfile_aout.c - From src/lib/libc/stdlib: getopt.c place these files in the directory where you have loadbsd.c @@ -28,7 +28,7 @@ Required sources from NetBSD (either HEAD or from a release branch) place these files in: /include/machine - From src/sys/sys: exec.h,exec_elf.h,exec_aout.h,reboot.h + From src/sys/sys: exec.h,exec_elf.h,exec_aout.h,aout_mids.h,reboot.h place these files in: /include/sys @@ -46,13 +46,32 @@ Note: This patch is required to be able to suppress loaded symbols when affected and LoadBSD could handle it differently but then it could probably break in other unpredictable ways... -Then it should be possible to recompile LoadBSD by typing "make". If make -fails, fix the problem and try again :-P +The headers inttypes.h, namespace.h, include/lib/libsa/stand.h and +lib/libkern/libkern.h are listed completely below. + +Then it should be possible to recompile LoadBSD with gcc6 or newer by +typing "make" (or "make -f vmakefile" with vbcc). If make fails, fix the +problem and try again :-P Good luck! --- Missing files/patches --- + include/machine/loadfile_machdep.h modification: +--cut-- +--- include/machine/loadfile_machdep.h~ Sun Mar 26 15:46:55 2023 ++++ include/machine/loadfile_machdep.h Sun Mar 26 15:47:17 2023 +@@ -38,7 +38,7 @@ + #define LOAD_KERNEL LOAD_ALL + #define COUNT_KERNEL COUNT_ALL + +-#ifdef _STANDALONE ++#if 0 + + #define LOADADDR(a) ((a) + offset) + #define ALIGNENTRY(a) 0 +--cut-- + loadfile_aout.c modification: --cut-- --- loadfile_aout.c~ Mon Feb 11 21:25:56 2002 @@ -69,57 +88,22 @@ Good luck! if (x->a_syms > 0) { --cut-- - loadfile_machdep.h modification: ---cut-- ---- loadfile_machdep.h~ Wed Oct 31 18:20:45 2001 -+++ loadfile_machdep.h Thu Jan 16 14:02:39 2003 -@@ -42,6 +42,21 @@ - #define BOOT_AOUT - #define BOOT_ELF32 - -+#if 1 -+ -+#define LOADADDR(a) (((u_long)(a)) + offset) -+#define ALIGNENTRY(a) 0 -+#define READ(f, b, c) read((f), (void *)LOADADDR(b), (c)) -+#define BCOPY(s, d, c) memcpy((void *)LOADADDR(d), (void *)(s), (c)) -+#define BZERO(d, c) memset((void *)LOADADDR(d), 0, (c)) -+#define WARN(a) warn a -+#define PROGRESS(a) /* nothing */ -+#define ALLOC(a) malloc(a) -+#define FREE(a, b) free(a) -+#define OKMAGIC(a) ((a) == NMAGIC) -+ -+#else /* ! true, false */ -+ - #define LOAD_KERNEL LOAD_ALL - #define COUNT_KERNEL COUNT_ALL - -@@ -83,4 +98,7 @@ void vcopy __P((u_long, u_long, u_long * - void vzero __P((u_long, u_long *, size_t)); - - #endif -+ -+#endif /* ! false */ -+ - #endif /* ! _AMIGA_LOADFILE_MACHDEP_H_ */ ---cut-- - include/inttypes.h: --cut-- #ifndef _INTTYPES_H #define _INTTYPES_H #include +#include + +#ifndef be32toh +#define be32toh(x) (x) +#endif + +#ifndef roundup +#define roundup(x,y) ((((x)+((y)-1))/(y))*(y)) +#endif -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -typedef unsigned long long uint64_t; -/* -typedef int int32_t; -typedef long long int64_t; -*/ typedef unsigned long vaddr_t; typedef unsigned long paddr_t; @@ -132,6 +116,10 @@ typedef unsigned long paddr_t; extern char *program_name; #define getprogname() program_name + +#ifndef __UNCONST +#define __UNCONST(a) ((void *)(unsigned long)(const void *)(a)) +#endif --cut-- include/lib/libsa/stand.h @@ -142,7 +130,6 @@ extern char *program_name; #include #include #include -#include #include "inttypes.h" --cut-- diff --git a/sys/arch/amiga/stand/loadbsd/loadbsd.c b/sys/arch/amiga/stand/loadbsd/loadbsd.c index d888e861d3c4..74d475113251 100644 --- a/sys/arch/amiga/stand/loadbsd/loadbsd.c +++ b/sys/arch/amiga/stand/loadbsd/loadbsd.c @@ -1,4 +1,4 @@ -/* $NetBSD: loadbsd.c,v 1.35.46.1 2023/02/24 13:57:19 martin Exp $ */ +/* $NetBSD: loadbsd.c,v 1.35.46.2 2023/06/03 15:09:01 martin Exp $ */ /* * Copyright (c) 1994 Michael L. Hitch @@ -104,8 +104,12 @@ * 11/18/15 - (gnikl) Added detection of A600. * Fix handling of multiple -n options. * 3.2 09/02/22 - Make it compile with modern AmigaOS gcc ports. + * 3.3 01/04/22 - Loading the kernel to the highest priority memory + * segment is the default now. New option -l to revert to the + * previous behaviour of largest segment. + * New option -M to define a minimum size for the memory segment. */ -static const char _version[] = "$VER: LoadBSD 3.2 (02.09.2022)"; +static const char _version[] = "$VER: LoadBSD 3.3 (01.04.2023)"; /* * Kernel startup interface version @@ -133,6 +137,7 @@ struct boot_memlist { struct boot_memlist memlist; struct boot_memlist *kmemlist; +void err(int eval, const char *, ...); int getopt(int, char * const [], const char *); void get_mem_config (void **, u_long *, u_long *); void get_cpuid (void); @@ -140,7 +145,7 @@ void get_eclock (void); void get_AGA (void); void usage (void); void verbose_usage (void); -void startit (void *, u_long, u_long, void *, u_long, u_long, int, void *, +extern void startit (void *, u_long, u_long, void *, u_long, u_long, int, void *, int, int, u_long, u_long, int); extern u_long startit_sz; @@ -150,8 +155,9 @@ extern int optind; struct ExpansionBase *ExpansionBase = NULL; struct GfxBase *GfxBase = NULL; +u_int minmemsz = 2 * 1024 * 1024; +int p_flag = 1; int k_flag; -int p_flag; int t_flag; int reqmemsz; int S_flag; @@ -164,8 +170,6 @@ char *program_name; u_char *kp; u_long kpsz; -static void err(int, const char *fmt, ...); - void exit_func(void) @@ -186,7 +190,7 @@ main(int argc, char **argv) int boothowto, ncd, i, mem_ix, ch; u_short kvers; int *nkcd; - void *fmem; + u_char *fmem; char *esym; void (*start_it) (void *, u_long, u_long, void *, u_long, u_long, int, void *, int, int, u_long, u_long, int) = startit; @@ -205,7 +209,7 @@ main(int argc, char **argv) if ((ExpansionBase=(void *)OpenLibrary(EXPANSIONNAME, 0)) == NULL) err(20, "can't open expansion library"); - while ((ch = getopt(argc, argv, "aAbCc:DhI:km:n:qptsSvVZ")) != -1) { + while ((ch = getopt(argc, argv, "aAbCc:DhI:klm:M:n:qptsSvVZ")) != -1) { switch (ch) { case 'k': k_flag = 1; @@ -220,12 +224,18 @@ main(int argc, char **argv) case 'p': p_flag = 1; break; + case 'l': + p_flag = 0; + break; case 't': t_flag = 1; break; case 'm': reqmemsz = atoi(optarg) * 1024; break; + case 'M': + minmemsz = atoi(optarg) * 1024 * 1024; + break; case 's': boothowto &= ~(RB_AUTOBOOT); boothowto |= RB_SINGLE; @@ -286,7 +296,7 @@ main(int argc, char **argv) for (cd = 0, ncd = 0; cd = FindConfigDev(cd, -1, -1); ncd++) ; get_cpuid(); - get_mem_config(&fmem, &fmemsz, &cmemsz); + get_mem_config((void **)&fmem, &fmemsz, &cmemsz); get_eclock(); get_AGA(); @@ -307,15 +317,15 @@ main(int argc, char **argv) if (t_flag) { for (i = 0; i < memlist.m_nseg; ++i) { - printf("mem segment %d: start=%08lx size=%08lx" - " attribute=%04lx pri=%d\n", + printf("mem segment %d: start=%08x size=%08x" + " attribute=%04x pri=%d\n", i + 1, memlist.m_seg[i].ms_start, memlist.m_seg[i].ms_size, memlist.m_seg[i].ms_attrib, memlist.m_seg[i].ms_pri); } - printf("kernel size: %ld\n", ksize); + printf("kernel size: %lu\n", ksize); } kpsz = ksize + 256 + startit_sz; @@ -343,7 +353,7 @@ main(int argc, char **argv) if (boothowto & RB_ASKNAME) printf("Askboot..."); - printf("Using %ld%c FASTMEM at 0x%lx, %ldM CHIPMEM\n", + printf("Using %lu%c FASTMEM at 0x%lx, %luM CHIPMEM\n", (fmemsz & 0xfffff) ? fmemsz >> 10 : fmemsz >> 20, (fmemsz & 0xfffff) ? 'K' : 'M', (u_long)fmem, cmemsz >> 20); @@ -386,14 +396,16 @@ main(int argc, char **argv) *nkcd = ncd; kcd = (struct ConfigDev *)(nkcd + 1); while((cd = FindConfigDev(cd, -1, -1))) { + u_char *ba = kcd->cd_BoardAddr; + memcpy(kcd, cd, sizeof(*kcd)); - if (((cpuid >> 24) == 0x7d) && - ((u_long)kcd->cd_BoardAddr < 0x1000000)) { + if (((cpuid >> 24) == 0x7d) && ((u_long)ba < 0x1000000)) { if (t_flag) - printf("Transformed Z2 device from %08lx ", (u_long)kcd->cd_BoardAddr); - kcd->cd_BoardAddr += 0x3000000; + printf("Transformed Z2 device from %08lx ", (u_long)ba); + ba += 0x3000000; + kcd->cd_BoardAddr = ba; if (t_flag) - printf("to %08lx\n", (u_long)kcd->cd_BoardAddr); + printf("to %08lx\n", (u_long)ba); } ++kcd; } @@ -409,13 +421,18 @@ main(int argc, char **argv) * option was not specified. Copy startup code to end * of kernel image and set start_it. */ - if ((void *)kp < fmem) { + if (ksize >= fmemsz) { + printf("Kernel size %lu exceeds best Fast Memory segment of %lu\n", + ksize, fmemsz); + err(20, "Insufficient Fast Memory for kernel"); + } + if (kp < fmem) { printf("Kernel at %08lx, Fastmem used at %08lx\n", (u_long)kp, (u_long)fmem); err(20, "Can't copy upwards yet.\nDefragment your memory and try again OR try the -p OR try the -Z options."); } - start_it = (void (*)())kp + ksize + 256; - memcpy(start_it, startit, startit_sz); + start_it = (void (*)())(kp + ksize + 256); + memcpy((void *)start_it, (void *)startit, startit_sz); CacheClearU(); printf("*** Loading from %08lx to Fastmem %08lx ***\n", (u_long)kp, (u_long)fmem); @@ -427,7 +444,7 @@ main(int argc, char **argv) * fits into chipmem. */ if (ksize >= cmemsz) { - printf("Kernel size %ld exceeds Chip Memory of %ld\n", + printf("Kernel size %lu exceeds Chip Memory of %lu\n", ksize, cmemsz); err(20, "Insufficient Chip Memory for kernel"); } @@ -462,9 +479,10 @@ get_mem_config(void **fmem, u_long *fmemsz, u_long *cmemsz) mempri = -128; *fmemsz = 0; *cmemsz = 0; + *fmem = NULL; /* - * walk thru the exec memory list + * walk through the exec memory list */ Forbid(); for (mh = (void *) SysBase->MemList.lh_Head; @@ -573,10 +591,10 @@ get_mem_config(void **fmem, u_long *fmemsz, u_long *cmemsz) memlist.m_seg[nmem].ms_start = seg; memlist.m_seg[nmem].ms_size = segsz; /* - * If this segment is smaller than 2M, + * If this segment is smaller than minmemsz (default: 2M), * don't use it to load the kernel */ - if (segsz < 2 * 1024 * 1024) + if (segsz < minmemsz) continue; /* * if p_flag is set, select memory by priority @@ -619,7 +637,7 @@ get_cpuid(void) case 4000: return; default: - printf("machine Amiga %ld is not recognized\n", + printf("machine Amiga %lu is not recognized\n", cpuid >> 16); exit(1); } @@ -664,193 +682,10 @@ get_AGA(void) */ } -__asm(" - .text - -_startit: - movel sp,a3 - movel 4:w,a6 - lea pc@(start_super),a5 - jmp a6@(-0x1e) | supervisor-call - -start_super: - movew #0x2700,sr - - | the BSD kernel wants values into the following registers: - | a0: fastmem-start - | d0: fastmem-size - | d1: chipmem-size - | d3: Amiga specific flags - | d4: E clock frequency - | d5: AttnFlags (cpuid) - | d7: boothowto - | a4: esym location - | a2: Inhibit sync flags - | All other registers zeroed for possible future requirements. - - lea pc@(_startit),sp | make sure we have a good stack *** - - movel a3@(4),a1 | loaded kernel - movel a3@(8),d2 | length of loaded kernel -| movel a3@(12),sp | entry point in stack pointer - movel a3@(12),a6 | push entry point *** - movel a3@(16),a0 | fastmem-start - movel a3@(20),d0 | fastmem-size - movel a3@(24),d1 | chipmem-size - movel a3@(28),d7 | boothowto - movel a3@(32),a4 | esym - movel a3@(36),d5 | cpuid - movel a3@(40),d4 | E clock frequency - movel a3@(44),d3 | Amiga flags - movel a3@(48),a2 | Inhibit sync flags - movel a3@(52),d6 | Load to fastmem flag - subl a5,a5 | target, load to 0 - - cmpb #0x7D,a3@(36) | is it DraCo? - beq nott | yes, switch off MMU later - - | no, it is an Amiga: - -| movew #0xf00,0xdff180 |red -| moveb #0,0x200003c8 -| moveb #63,0x200003c9 -| moveb #0,0x200003c9 -| moveb #0,0x200003c9 - - movew #(1<<9),0xdff096 | disable DMA on Amigas. - -| ------ mmu off start ----- - - btst #3,d5 | AFB_68040,SysBase->AttnFlags - beq not040 - -| Turn off 68040/060 MMU - - subl a3,a3 - .word 0x4e7b,0xb003 | movec a3,tc - .word 0x4e7b,0xb806 | movec a3,urp - .word 0x4e7b,0xb807 | movec a3,srp - .word 0x4e7b,0xb004 | movec a3,itt0 - .word 0x4e7b,0xb005 | movec a3,itt1 - .word 0x4e7b,0xb006 | movec a3,dtt0 - .word 0x4e7b,0xb007 | movec a3,dtt1 - bra nott - -not040: - lea pc@(zero),a3 - pmove a3@,tc | Turn off MMU - lea pc@(nullrp),a3 - pmove a3@,crp | Turn off MMU some more - pmove a3@,srp | Really, really, turn off MMU - -| Turn off 68030 TT registers - - btst #2,d5 | AFB_68030,SysBase->AttnFlags - beq nott | Skip TT registers if not 68030 - lea pc@(zero),a3 - .word 0xf013,0x0800 | pmove a3@,tt0 (gas only knows about 68851 ops..) - .word 0xf013,0x0c00 | pmove a3@,tt1 (gas only knows about 68851 ops..) - -nott: -| ---- mmu off end ---- -| movew #0xf60,0xdff180 | orange -| moveb #0,0x200003c8 -| moveb #63,0x200003c9 -| moveb #24,0x200003c9 -| moveb #0,0x200003c9 - -| ---- copy kernel start ---- - - tstl d6 | Can we load to fastmem? - beq L0 | No, leave destination at 0 - movl a0,a5 | Move to start of fastmem chunk - addl a0,a6 | relocate kernel entry point -L0: - movl a1@+,a5@+ - subl #4,d2 - bcc L0 - - lea pc@(ckend),a1 - movl a5,sp@- - movl #_startit_end - ckend,d2 -L2: - movl a1@+,a5@+ - subl #4,d2 - bcc L2 - - btst #3,d5 - jeq L1 - .word 0xf4f8 -L1: - movql #0,d2 | switch off cache to ensure we use - movec d2,cacr | valid kernel data - -| movew #0xFF0,0xdff180 | yellow -| moveb #0,0x200003c8 -| moveb #63,0x200003c9 -| moveb #0,0x200003c9 -| moveb #0,0x200003c9 - rts - -| ---- copy kernel end ---- - -ckend: -| movew #0x0ff,0xdff180 | petrol -| moveb #0,0x200003c8 -| moveb #0,0x200003c9 -| moveb #63,0x200003c9 -| moveb #63,0x200003c9 - - movl d5,d2 - roll #8,d2 - cmpb #0x7D,d2 - jne noDraCo - -| DraCo: switch off MMU now: - - subl a3,a3 - .word 0x4e7b,0xb003 | movec a3,tc - .word 0x4e7b,0xb806 | movec a3,urp - .word 0x4e7b,0xb807 | movec a3,srp - .word 0x4e7b,0xb004 | movec a3,itt0 - .word 0x4e7b,0xb005 | movec a3,itt1 - .word 0x4e7b,0xb006 | movec a3,dtt0 - .word 0x4e7b,0xb007 | movec a3,dtt1 - -noDraCo: - moveq #0,d2 | zero out unused registers - moveq #0,d6 | (might make future compatibility - movel d6,a1 | would have known contents) - movel d6,a3 - movel d6,a5 - movel a6,sp | entry point into stack pointer - movel d6,a6 - -| movew #0x0F0,0xdff180 | green -| moveb #0,0x200003c8 -| moveb #0,0x200003c9 -| moveb #63,0x200003c9 -| moveb #0,0x200003c9 - - jmp sp@ | jump to kernel entry point - -| A do-nothing MMU root pointer (includes the following long as well) - -nullrp: .long 0x7fff0001 -zero: .long 0 - -_startit_end: - - .data -_startit_sz: .long _startit_end-_startit - - .text -"); - void usage(void) { - fprintf(stderr, "usage: %s [-abhkpstACDSVZ] [-c machine] [-m mem] [-n mode] [-I sync-inhibit] kernel\n", + fprintf(stderr, "usage: %s [-abhklpstACDSVZ] [-c machine] [-m size] [-M size] [-n mode] [-I sync-inhibit] kernel\n", program_name); exit(1); } @@ -862,12 +697,12 @@ verbose_usage(void) NAME\n\ \t%s - loads NetBSD from amiga dos.\n\ SYNOPSIS\n\ -\t%s [-abhkpstADSVZ] [-c machine] [-m mem] [-n flags] [-I sync-inhibit] kernel\n\ +\t%s [-abhklpstACDSVZ] [-c machine] [-m size] [-M size] [-n mode] [-I sync-inhibit] kernel\n\ OPTIONS\n\ \t-a Boot up to multiuser mode.\n\ \t-A Use AGA display mode, if available.\n\ \t-b Ask for which root device.\n\ -\t Its possible to have multiple roots and choose between them.\n\ +\t It is possible to have multiple roots and choose between them.\n\ \t-c Set machine type. [e.g 3000; use 32000+N for DraCo rev. N]\n\ \t-C Use Serial Console.\n\ \t-D Enter debugger\n\ @@ -875,15 +710,16 @@ OPTIONS\n\ \t-I Inhibit sync negotiation. Option value is bit-encoded targets.\n\ \t-k Reserve the first 4M of fast mem [Some one else\n\ \t is going to have to answer what that it is used for].\n\ +\t-l Use the largest memory segment for loading the kernel.\n\ \t-m Tweak amount of available memory, for finding minimum amount\n\ \t of memory required to run. Sets fastmem size to specified\n\ \t size in Kbytes.\n\ +\t-M Request a minimum size in Mbytes for the kernel's memory\n\ +\t segment. Defaults to 2M.\n\ \t-n Enable multiple non-contiguous memory: value = 0 (disabled),\n\ \t 1 (two segments), 2 (all avail segments), 3 (same as 2?).\n\ -\t-p Use highest priority fastmem segement instead of the largest\n\ -\t segment. The higher priority segment is usually faster\n\ -\t (i.e. 32 bit memory), but some people have smaller amounts\n\ -\t of 32 bit memory.\n\ +\t-p Use highest priority fastmem segment for loading the kernel.\n\ +\t This is the default.\n\ \t-q Boot up in quiet mode.\n\ \t-s Boot up in singleuser mode (default).\n\ \t-S Include kernel symbol table.\n\ @@ -923,18 +759,6 @@ err(int eval, const char *fmt, ...) exit(eval); } -#if 0 -void -errx(int eval, const char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - _Vdomessage(0, fmt, ap); - va_end(ap); - exit(eval); -} -#endif - void warn(const char *fmt, ...) { @@ -943,14 +767,3 @@ warn(const char *fmt, ...) _Vdomessage(1, fmt, ap); va_end(ap); } - -#if 0 -void -warnx(const char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - _Vdomessage(0, fmt, ap); - va_end(ap); -} -#endif diff --git a/sys/arch/amiga/stand/loadbsd/startit.s b/sys/arch/amiga/stand/loadbsd/startit.s new file mode 100644 index 000000000000..ea686896603b --- /dev/null +++ b/sys/arch/amiga/stand/loadbsd/startit.s @@ -0,0 +1,180 @@ + .text + + .globl _startit +_startit: + move.l sp,a3 + move.l 4,a6 + lea (start_super,pc),a5 + jmp (-0x1e,a6) | supervisor-call + +start_super: + move.w #0x2700,sr + + | the BSD kernel wants values into the following registers: + | a0: fastmem-start + | d0: fastmem-size + | d1: chipmem-size + | d3: Amiga specific flags + | d4: E clock frequency + | d5: AttnFlags (cpuid) + | d7: boothowto + | a4: esym location + | a2: Inhibit sync flags + | All other registers zeroed for possible future requirements. + + lea (_startit,pc),sp | make sure we have a good stack *** + + move.l (4,a3),a1 | loaded kernel + move.l (8,a3),d2 | length of loaded kernel +| move.l (12,a3),sp | entry point in stack pointer + move.l (12,a3),a6 | push entry point *** + move.l (16,a3),a0 | fastmem-start + move.l (20,a3),d0 | fastmem-size + move.l (24,a3),d1 | chipmem-size + move.l (28,a3),d7 | boothowto + move.l (32,a3),a4 | esym + move.l (36,a3),d5 | cpuid + move.l (40,a3),d4 | E clock frequency + move.l (44,a3),d3 | Amiga flags + move.l (48,a3),a2 | Inhibit sync flags + move.l (52,a3),d6 | Load to fastmem flag + sub.l a5,a5 | target, load to 0 + + cmp.b #0x7D,(36,a3) | is it DraCo? + beq nott | yes, switch off MMU later + + | no, it is an Amiga: + +| move.w #0xf00,0xdff180 |red +| move.b #0,0x200003c8 +| move.b #63,0x200003c9 +| move.b #0,0x200003c9 +| move.b #0,0x200003c9 + + move.w #(1<<9),0xdff096 | disable DMA on Amigas. + +| ------ mmu off start ----- + + btst #3,d5 | AFB_68040,SysBase->AttnFlags + beq not040 + +| Turn off 68040/060 MMU + + sub.l a3,a3 + .word 0x4e7b,0xb003 | movec a3,tc + .word 0x4e7b,0xb806 | movec a3,urp + .word 0x4e7b,0xb807 | movec a3,srp + .word 0x4e7b,0xb004 | movec a3,itt0 + .word 0x4e7b,0xb005 | movec a3,itt1 + .word 0x4e7b,0xb006 | movec a3,dtt0 + .word 0x4e7b,0xb007 | movec a3,dtt1 + bra nott + +not040: + lea (zero,pc),a3 + pmove (a3),tc | Turn off MMU + lea (nullrp,pc),a3 + pmove (a3),crp | Turn off MMU some more + pmove (a3),srp | Really, really, turn off MMU + +| Turn off 68030 TT registers + + btst #2,d5 | AFB_68030,SysBase->AttnFlags + beq nott | Skip TT registers if not 68030 + lea (zero,pc),a3 + .word 0xf013,0x0800 | pmove a3@,tt0 (gas only knows about 68851 ops..) + .word 0xf013,0x0c00 | pmove a3@,tt1 (gas only knows about 68851 ops..) + +nott: +| ---- mmu off end ---- +| move.w #0xf60,0xdff180 | orange +| move.b #0,0x200003c8 +| move.b #63,0x200003c9 +| move.b #24,0x200003c9 +| move.b #0,0x200003c9 + +| ---- copy kernel start ---- + + tst.l d6 | Can we load to fastmem? + beq L0 | No, leave destination at 0 + move.l a0,a5 | Move to start of fastmem chunk + add.l a0,a6 | relocate kernel entry point +L0: + move.l (a1)+,(a5)+ + sub.l #4,d2 + bcc L0 + + lea (ckend,pc),a1 + move.l a5,-(sp) + move.l #_startit_end-ckend,d2 +L2: + move.l (a1)+,(a5)+ + sub.l #4,d2 + bcc L2 + + btst #3,d5 + jeq L1 + .word 0xf4f8 +L1: + moveq.l #0,d2 | switch off cache to ensure we use + movec d2,cacr | valid kernel data + +| move.w #0xFF0,0xdff180 | yellow +| move.b #0,0x200003c8 +| move.b #63,0x200003c9 +| move.b #0,0x200003c9 +| move.b #0,0x200003c9 + rts + +| ---- copy kernel end ---- + +ckend: +| move.w #0x0ff,0xdff180 | petrol +| move.b #0,0x200003c8 +| move.b #0,0x200003c9 +| move.b #63,0x200003c9 +| move.b #63,0x200003c9 + + move.l d5,d2 + rol.l #8,d2 + cmp.b #0x7D,d2 + jne noDraCo + +| DraCo: switch off MMU now: + + sub.l a3,a3 + .word 0x4e7b,0xb003 | movec a3,tc + .word 0x4e7b,0xb806 | movec a3,urp + .word 0x4e7b,0xb807 | movec a3,srp + .word 0x4e7b,0xb004 | movec a3,itt0 + .word 0x4e7b,0xb005 | movec a3,itt1 + .word 0x4e7b,0xb006 | movec a3,dtt0 + .word 0x4e7b,0xb007 | movec a3,dtt1 + +noDraCo: + moveq #0,d2 | zero out unused registers + moveq #0,d6 | (might make future compatibility + move.l d6,a1 | would have known contents) + move.l d6,a3 + move.l d6,a5 + move.l a6,sp | entry point into stack pointer + move.l d6,a6 + +| move.w #0x0F0,0xdff180 | green +| move.b #0,0x200003c8 +| move.b #0,0x200003c9 +| move.b #63,0x200003c9 +| move.b #0,0x200003c9 + + jmp (sp) | jump to kernel entry point + +| A do-nothing MMU root pointer (includes the following long as well) + +nullrp: .long 0x7fff0001 +zero: .long 0 + +_startit_end: + + .data + .globl _startit_sz +_startit_sz: .long _startit_end-_startit diff --git a/sys/arch/amiga/stand/loadbsd/vmakefile b/sys/arch/amiga/stand/loadbsd/vmakefile new file mode 100644 index 000000000000..7e995d062424 --- /dev/null +++ b/sys/arch/amiga/stand/loadbsd/vmakefile @@ -0,0 +1,17 @@ +# vbcc Makefile for loadbsd +# Requires PosixLib! Adapt the path to PosixLib in CFLAGS and LDFLAGS! +TARGET = loadbsd + +CC = vc +aos68k +CFLAGS = -D_STANDALONE -DNO_MID_CHECK -D_POSIX_C_SOURCE -Iinclude \ + -I/path/to/PosixLib/include \ + -size -sc -O2 -cpu=68020 -dontwarn=153 +AS = vasmm68k_std +ASFLAGS = -quiet -Fhunk -gas -m68020 -m68851 +LDFLAGS = -L/path/to/PosixLib/AmigaOS3 +LDLIBS = -lposix + +OBJS = loadbsd.o startit.o loadfile.o loadfile_aout.o loadfile_elf32.o + +$(TARGET): $(OBJS) + $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)