[m-dev.] Contribution: Pretty Printing Library

Ralph Becket rbeck at microsoft.com
Thu Apr 13 02:04:57 AEST 2000


> Another nice feature would be a function which handles word-wrap.
> This can be programmed easily enough using the functions in
> your pretty-print module, but I think it would be useful
> enough to include in that module.
> 
> 		% Splits the string at spaces, and joins the resulting
> 		% pieces using `separated(text, space_line, Pieces)'.
> 	:- func word_wrap(string) = doc.
> 	word_wrap(String) = separated(text, space_line, Words) :-
> 		Words = split_string(String, ' ').
> 
> See the attached files for a definition of split_string.

Thanks.  I tried this out and discovered an efficiency bug which
required a one-line fix and now it just clips along.  Your defn
for word_wrap/1 doesn't quite do the trick - sticking a group
around that would result in either everything appearing on one
line or everything appearing on a line by itself.

Here's a version that works well and is efficiency friendly:

word_wrapped(String) =
    list__foldr(
        ( func(Word, Sequel) =
            group(line `<>` text(Word) `<>` space) `<>` Sequel
        ),
        split_string(String, ' '),
        nil
    ).

Here's some sample output for varying line widths:

Everyone knows the First Law of Microprocessing: `if all else fails, Read
the
Manual'. A true bluffer would never make such an irresponsible statement.
This
document is a vital element in a bluff that has kept the general public out
of
computers for years.

Everyone knows the First Law of Microprocessing: `if all else
fails, Read the Manual'. A true bluffer would never make such
an irresponsible statement. This document is a vital element in
a bluff that has kept the general public out of computers for
years.

Everyone knows the First Law of
Microprocessing: `if all else
fails, Read the Manual'. A true
bluffer would never make such
an irresponsible statement.
This document is a vital
element in a bluff that has
kept the general public out of
computers for years.

I've reattached pprint.m and example.m in case people want to
have a look at recent changes before I check it in (is the
procedure for adding to the standard library written down
anywhere?)

I think split_string/2 is sufficiently useful that it should go
into the library.  Perhaps it would be better to generalise it
to accept, e.g. split_string(String, char__is_whitespace)?

Cheers,

Ralph


begin 600 pprint.m
M)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"B4@<'!R:6YT
M+FT-"B4 at 4F%L<&@@0F5C:V5T(#QR8F5C:T!M:6-R;W-O9G0N8V]M/@T*)2!7
M960 at 36%R(#(R(#$W.C0T.C,R("`R,#`P#0HE('9I.B!T<STT('-W/30 at 970@
M='<],"!W;3TP#0HE#0HE(%1H:7, at 9FEL92!M87D@;VYL>2!B92!C;W!I960@
M=6YD97(@=&AE('1E<FUS(&]F('1H92!'3E4 at 3&EB<F%R>2!'96YE<F%L#0HE
M(%!U8FQI8R!,:6-E;G-E("T@<V5E('1H92!F:6QE($-/4%E)3D<N3$E"(&EN
M('1H92!-97)C=7)Y(&1I<W1R:6)U=&EO;BX-"B4-"B4-"B4 at 04)/550-"B4-
M"B4 at 5&AI<R!I<R!P<F5T='D@;75C:"!A(&1I<F5C="!T<F%N<VQI=&5R871I
M;VX@;V8 at 4&AI;&EP(%=A9&QE<B=S#0HE($AA<VME;&P@<')E='1Y('!R:6YT
M97(@9&5S8W)I8F5D(&EN(")!(%!R971T:65R(%!R:6YT97(B+"!A=F%I;&%B
M;&4-"B4 at 870@:'1T<#HO+V-M+F)E;&PM;&%B<RYC;VTO8VTO8W,O=VAO+W=A
M9&QE<B]T;W!I8W,O<F5C96YT+FAT;6P-"B4-"B4 at 5V%D;&5R)W, at 87!P<F]A
M8V@@:&%S('1H<F5E(&UA:6X at 861V86YT86=E<SH-"B4@,2X@=&AE(&QA>6]U
M="!A;&=E8G)A(&ES('-M86QL(&%N9"!Q=6ET92!I;G1U:71I=F4@*&UO<F4@
M<V\@=&AA;B!(=6=H97,G*3L-"B4@,BX@=&AE('!R971T>2!P<FEN=&5R(&ES
M(&]P=&EM86P@:6X@=&AE('-E;G-E('1H870@:70@=VEL;"!N979E<B!G96YE
M<F%T90T*)2`@("!O=71P=70@=&AA="!O=F5R+7)U;G,@=&AE('-P96-I9FEE
M9"!W:61T:"!U;FQE<W,@=&AA="!I<R!U;F%V;VED86)L93L at 86YD#0HE(#,N
M('1H92!P<F5T='D@<')I;G1E<B!I<R!B;W5N9&5D(&EN('1H870@:70@;F5V
M97(@;F5E9',@=&\@;&]O:R!M;W)E('1H86X-"B4@("`@:R!C:&%R86-T97)S
M(&%H96%D('1O(&UA:V4 at 82!F;W)M871T:6YG(&1E8VES:6]N("AA;'1H;W5G
M:"!S964@=&AE(%A86`T*)2`@("!C;VUM96YT(&)E;&]W*2X-"B4-"B4 at 22!H
M879E(&UA9&4@=&AR964@<VUA;&P at 8VAA;F=E<SH-"B4-"B4@*&$I(')A=&AE
M<B!T:&%N(&AA=FEN9R!G<F]U<"\Q(&%S(&$@;F]N+7!R:6UI=&EV92!F=6YC
M=&EO;B`H9F]R(&%L;&]W:6YG#0HE(&QI;F4M8G)E86MS('1O(&)E(&-O;G9E
M<G1E9"!I;G1O('-P86-E<R!A="!T:&4@<')E='1Y('!R:6YT97(G<R!D:7-C
M<F5T:6]N*0T*)2!O=F5R(&1O8W,L($D@:&%V92!E>'1E;F1E9"!T:&4 at 9&]C
M('1Y<&4@=&\@:6YC;'5D92!A(&!'4D]54"<@8V]N<W1R=6-T;W(-"B4 at 86YD
M(&%L=&5R960 at 9FQA='1E;B\Q(&%N9"!B92\S(&%P<')O<')I871E;'DN("!"
M96-A=7-E(&!53DE/3B<@;VYL>2!A<FES97,-"B4 at 87, at 82!C;VYS97%U96YC
M92!O9B!P<F]C97-S:6YG(&$@)T=23U50)R!I="!T=7)N<R!O=70@=&\@8F4@
M<VEM<&QE<B!T;R!D;PT*)2!A=V%Y('=I=&@@8%5.24].)R!A;'1O9V5T:&5R
M(&%N9"!C;VYV97)T(&-L875S97,@=&AA="!P<F]C97-S(&!53DE/3B<@=&5R
M;7,-"B4@=&\@<')O8V5S<VEN9R!@1U)/55`G<RX-"B4-"B4@*&(I(%1H92!S
M96-O;F0 at 8VAA;F=E(&ES('1H870 at 9FQA='1E;F5D(&!L:6YE)R!B<F5A:W,@
M8F5C;VUE(&5M<'1Y('-T<FEN9W,-"B4@<F%T:&5R('1H86X@<W!A8V5S+ at T*
M)0T*)2`H8RD at 5&AE('1H:7)D(&-H86YG92!I<R!T:&4@:6YT<F]D=6-T:6]N
M(&]F('1H92!@3$%"14PG(&-O;G-T<G5C=&]R+"!W:&EC:`T*)2!A8W1S(&UU
M8V@@;&EK92!@3D535"<L(&5X8V5P="!T:&%T(&EN9&5N=&%T:6]N(&ES(&1E
M9FEN960@=7-I;F<@82!S=')I;F<-"B4@<F%T:&5R('1H86X at 82!N=6UB97(@
M;V8@<W!A8V5S+B`@5&AI<R!I<R!U<V5F=6P at 9F]R+"!E+F<N+"!M=6QT:2UL
M:6YE#0HE(&-O;7!I;&5R(&5R<F]R<R!A;F0@=V%R;FEN9W,@=&AA="!S:&]U
M;&0 at 8F4@<')E9FEX960@=VET:"!T:&4@;V9F96YD:6YG#0HE('-O=7)C92!F
M:6QE(&%N9"!L:6YE(&YU;6)E<BX-"B4-"B4 at 22!H879E(&%L<V\@861D960@
M<V5V97)A;"!O8G9I;W5S(&=E;F5R86P@<'5R<&]S92!F;W)M871T:6YG(&9U
M;F-T:6]N<RX-"B4-"B4-"B4 at 55-!1T4-"B4-"B4 at 5&AE<F4 at 87)E('1W;R!S
M=&%G97,@:6X@<')E='1Y('!R:6YT:6YG(&%N(&]B:F5C="!O9B!S;VUE('1Y
M<&4 at 5#H-"B4@,2X at 8V]N=F5R="!T:&4@;V)J96-T('1O(&$@<'!R:6YT7U]D
M;V,@=7-I;F<@<V]M92!S<&5C:6%L;'D@=W)I='1E;@T*)2`@("!F=6YC=&EO
M;CL-"B4@,BX at 8V%L;"!P<')I;G1?7W=R:71E+ULT+#5=(&]R('!P<FEN=%]?
M=&]?<W1R:6YG+S(@<&%S<VEN9R!T:&4 at 9&ES<&QA>0T*)2`@("!W:61T:"!A
M;F0@=&AE(&1O8RX-"B4-"B4@<'!R:6YT('-U<'!L:65S(&$@;G5M8F5R(&]F
M('!R:6UI=&EV92!D;V, at 8V]N<W1R=6-T;W(@9G5N8W1I;VYS(&%N9"!A#0HE
M('-M86QL(&YU;6)E<B!O9B!U<V5F=6PL(&-O;6UO;B!C;VUP;W5N9"!C;VYS
M=')U8W1I;VYS+B`@2&5R92!)(&IU<W0-"B4 at 9&5S8W)I8F4@=&AE('!R:6UI
M=&EV97,Z#0HE#0HE(&YI;`T*)2`@('1H92!E;7!T>2!D;V-U;65N="P at 8V]R
M<F5S<&]N9&EN9R!T;R!T:&4@;G5L;"!S=')I;F<[#0HE#0HE('1E>'0H<W1R
M:6YG*0T*)2`@('1H92!D;V-U;65N="!C;VYS:7-T:6YG(&]F(&$@<VEN9VQE
M('-T<FEN9R`M(&YO=&4@=&AA="!T:&4-"B4@("!P<F5T='D@<')I;G1E<B!A
M<W-U;65S('1H870 at 979E<GD at 8VAA<F%C=&5R(&EN(&$@=&5X="!S=')I;F<@
M:7,-"B4@("!P<FEN=&%B;&4 at 86YD(&]C8W5P:65S(&$@<VEN9VQE(&-H87)A
M8W1E<B!C96QL(&]N('1H92!D:7-P;&%Y+`T*)2`@('-O('1A8G, at 86YD(&YE
M=VQI;F5S(&5T8RX@<VAO=6QD(&)E(&%V;VED960[#0HE#0HE('!O;'DH<W1R
M:6YG7U]P;VQY7W1Y<&4I#0HE("`@=&AE(&1O8W5M96YT(&-O;G-I<W1I;F<@
M;V8 at 82!S:6YG;&4@<W1R:6YG(&1E<FEV960 at 9G)O;2!A#0HE("`@<W1R:6YG
M7U]P;VQY7W1Y<&4[#0HE#0HE(&1O8R!@/#Y@(&1O8PT*)2`@('1H92!C;VUP
M;W-I=&EO;B!O9B!T=V\@9&]C<RP@=&AE(&9I<G-T(&9O;&QO=V5D(&)Y('1H
M92!S96-O;F0@=VET:"!N;PT*)2`@(&EN=&5R=F5N:6YG('-P86-E.PT*)0T*
M)2!L:6YE#0HE("`@82!N97<M;&EN92!W:&EC:"!M87D@*&EN(&$@9W)O=7`@
M8V]N=&5X="P@<V5E(&)E;&]W*2!B92!F;&%T=&5N960@;W5T#0HE("`@8GD@
M=&AE('!R971T>2!P<FEN=&5R(&EN=&\@86X at 96UP='D@<W1R:6YG.PT*)0T*
M)2!N97-T*&EN="P at 9&]C*0T*)2`@(&%N>2!@;&EN92<@9&]C<R!I;B!D;V,@
M=&AA="!A<F4@;F]T(&9L871T96YE9"!O=70 at 8GD@=&AE('!R971T>2!P<FEN
M=&5R#0HE("`@87)E(&9O;&QO=V5D(&)Y('1H92!G:79E;B!N=6UB97(@;V8@
M<W!A8V5S("AN97-T960 at 8&YE<W0G<R!A9&0@=7`I.PT*)0T*)2!L86)E;"AS
M=')I;F<L(&1O8RD-"B4@("!T:&ES(&ES(&QI:V4@;F5S="\R+"!E>&-E<'0@
M=&AA="!I;G-T96%D(&]F(&5X=&5N9&EN9R!I;F1E;G1A=&EO;B!B>0T*)2`@
M(&$@8V5R=&%I;B!A;6]U;G0L(&ET(&ES(&5X=&5N9&5D(&)Y(&$@<W!E8VEF
M:6,@<W1R:6YG("T@;W1H97)W:7-E('1H90T*)2`@('-A;64@<G5L97, at 87!P
M;'D[#0HE#0HE(&=R;W5P*&1O8RD-"B4@("!A;&QO=R!F;&%T=&5N:6YG(&]F
M('1H92!D;V, at 870@=&AE('!R971T>2!P<FEN=&5R)W, at 9&ES8W)E=&EO;BX@
M($$@9W)O=7`-"B4@("!D;V,@:7, at 82!D96-I<VEO;B!P;VEN="!F;W(@=&AE
M('!R971T>2!P<FEN=&5R("T@:68@:70 at 8V%N(&9L871T96X@=&AE#0HE("`@
M9&]C('=I=&AO=70@;W9E<G)U;FYI;F<@:70@=VEL;"!D;R!S;RP@;W1H97)W
M:7-E(&YO(&9L871T96YI;F<@;V-C=7)S(&%T#0HE("`@=&AI<R!L979E;"`H
M;F]T92!T:&%T('1H92!A<F=U;65N="!D;V,@;6%Y('1H96X at 8V]N=&%I;B!O
M=&AE<B!G<F]U<"!D;V-S#0HE("`@9F]R('1H92!P<F5T='D@<')I;G1E<B!T
M;R!C;VYS:61E<BDN#0HE#0HE#0HE($5804U03$53#0HE#0HE($)E;&]W(&%R
M92!S;VUE(&1O8W, at 9F]L;&]W960 at 8GD@=&AE('=A>7,@=&AE>2!M:6=H="!B
M92!D:7-P;&%Y960 at 8GD@=&AE#0HE('!R971T>2!P<FEN=&5R(&=I=F5N('9A
M<FEO=7,@;&EN92!W:61T:',N#0HE#0HE(#$N('1E>'0H(DAE;&QO("(I(&`\
M/F`@;&EN92!@/#Y@('1E>'0H(G=O<FQD(BD-"B4@#0HE("`@2&5L;&\-"B4@
M("!W;W)L9`T*)0T*)2`R+B!G<F]U<"AT97AT*")(96QL;R`B*2!@/#Y@(&QI
M;F4 at 8#P^8"!T97AT*")W;W)L9"(I*0T*)0T*)2`@($AE;&QO('=O<FQD#0HE
M#0HE("`@2&5L;&\-"B4@("!W;W)L9`T*)0T*)2`S+B!G<F]U<"AT97AT*")(
M96QL;R`B*2!@/#Y@(&YE<W0H,BP@;&EN92!@/#Y@('1E>'0H(G=O<FQD(BDI
M*0T*)0T*)2`@($AE;&QO('=O<FQD#0HE#0HE("`@2&5L;&\-"B4@("`@("!W
M;W)L9`T*)0T*)2`T+B!G<F]U<"@-"B4@("!T97AT*")';V]D8GEE("(I(&`\
M/F`-"B4@("!N97-T*#,L(&QI;F4 at 8#P^8"!T97AT*")C<G5E;"`B*2!@/#Y@
M(&QI;F4 at 8#P^8"!T97AT*")W;W)L9"(I#0HE("D-"B4-"B4@("!';V]D8GEE
M(&-R=65L('=O<FQD#0HE#0HE("`@1V]O9&)Y90T*)2`@("`@(&-R=65L#0HE
M("`@("`@=V]R;&0-"B4-"B4 at -2X@9W)O=7`H#0HE("`@=&5X="@B1V]O9&)Y
M92`B*2!@/#Y@#0HE("`@;F5S="@S+"!L:6YE(&`\/F`@9W)O=7`H=&5X="@B
M8W)U96P@(BD at 8#P^8"!L:6YE(&`\/F`@=&5X="@B=V]R;&0B*2DI#0HE("D-
M"B4-"B4@("!';V]D8GEE(&-R=65L('=O<FQD#0HE#0HE("`@1V]O9&)Y90T*
M)2`@("`@(&-R=65L('=O<FQD#0HE#0HE("`@1V]O9&)Y90T*)2`@("`@(&-R
M=65L#0HE("`@("`@=V]R;&0-"B4-"B4 at -BX@;&%B96PH(DQO;VLA("(L#0HE
M("`@;&EN92!@/#Y@#0HE("`@9W)O=7`H#0HE("`@("!T97AT*")';V]D8GEE
M("(I(&`\/F`-"B4@("`@(&YE<W0H,RP@;&EN92!@/#Y@(&=R;W5P*'1E>'0H
M(F-R=65L("(I(&`\/F`@;&EN92!@/#Y@('1E>'0H(G=O<FQD(BDI*0T*)2`@
M("D-"B4@*0T*)0T*)2`@($QO;VLA($=O;V1B>64 at 8W)U96P@=V]R;&0-"B4-
M"B4@("!,;V]K(2!';V]D8GEE#0HE("`@3&]O:R$@("`@8W)U96P@=V]R;&0-
M"B4-"B4@("!,;V]K(2!';V]D8GEE#0HE("`@3&]O:R$@("`@8W)U96P-"B4@
M("!,;V]K(2`@("!W;W)L9`T*)0T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM("4-"@T*.BT@;6]D=6QE('!P<FEN="X-"@T*.BT@:6YT97)F
M86-E+ at T*#0HZ+2!I;7!O<G1?;6]D=6QE(&EN="P@<W1R:6YG+"!L:7-T+"!I
M;RX-"@T*("`@("4 at 0VQI96YT<R!M=7-T('1R86YS;&%T92!D871A('-T<G5C
M='5R97,@:6YT;R!D;V-S(&9O<@T*("`@("4@=&AE('!R971T>2!P<FEN=&5R
M('1O(&1I<W!L87DN#0H@("`@)0T*.BT@='EP92!D;V,N#0H-"CHM(&9U;F,@
M;FEL("`@("`@("`@("`@("`@("`](&1O8RX@("4 at 16UP='D at 9&]C=6UE;G0N
M#0HZ+2!F=6YC(&1O8R!@/#Y@(&1O8R`@("`@("`@/2!D;V,N("`E($-O;7!O
M<VET:6]N(&]F('1W;R!D;V-S+ at T*.BT at 9G5N8R!N97-T*&EN="P at 9&]C*2`@
M("`@(#T at 9&]C+B`@)2!&;VQL;W<@;F5W;&EN97,@:6X at 9&]C('=I=&@@:6YD
M96YT871I;VXN#0HZ+2!F=6YC(&QA8F5L*'-T<FEN9RP at 9&]C*2`@/2!D;V,N
M("`E($9O;&QO=R!N97=L:6YE<R!I;B!D;V,@=VET:"!L86)E;"X-"CHM(&9U
M;F,@=&5X="AS=')I;F<I("`@("`@("`](&1O8RX@("4 at 0V]N=F5R="!A('-T
M<FEN9R!I;G1O(&$@9&]C+ at T*.BT at 9G5N8R!L:6YE("`@("`@("`@("`@("`@
M(#T at 9&]C+B`@)2!.97<M;&EN92`H=6YL97-S(&9L871T96YE9"!O=70I+ at T*
M.BT at 9G5N8R!P;VQY*'-T<FEN9U]?<&]L>5]T>7!E*2`](&1O8RX@)2!#;VYV
M97)T(&%N(%MS:69C72A?*2!I;G1O(&$@<W1R:6YG+ at T*.BT at 9G5N8R!G<F]U
M<"AD;V,I("`@("`@("`@(#T at 9&]C+B`@)2!!;&QO=R!A(&1O8W5M96YT('1O
M(&)E(&9L871T96YE9"X-"CHM(&9U;F, at 9&]C(&`\+SY@(&1O8R`@("`@("`]
M(&1O8RX@("4 at 4VAO<G1H86YD(&9O<B!@9&]C(&`\/F`@;&EN92!@/#Y@(&1O
M8R<N#0H-"B`@("`E(%9A<FEO=7, at 8G)A8VME=&EN9R!F=6YC=&EO;G,N#0H@
M("`@)0T*.BT at 9G5N8R!B<F%C:V5T960H<W1R:6YG+"!S=')I;F<L(&1O8RD@
M(#T at 9&]C+ at T*.BT at 9G5N8R!P87)E;G1H97-E<RAD;V,I("`@("`@("`@("`@
M("`@(#T at 9&]C+ at T*.BT at 9G5N8R!B<F%C:V5T<RAD;V,I("`@("`@("`@("`@
M("`@("`@(#T at 9&]C+ at T*.BT at 9G5N8R!B<F%C97,H9&]C*2`@("`@("`@("`@
M("`@("`@("`@(#T at 9&]C+ at T*#0H@("`@)2!S97!A<F%T960H4%`L(%-E<"P@
M6U at Q+"XN+BQ8;ETI(#T at 4%`H6#$I(&`\/F`@4V5P(&`\/F`@+BXN(%-E<"!@
M/#Y@(%!0*%AN*0T*("`@("4-"CHM(&9U;F,@<V5P87)A=&5D*&9U;F,H5"D@
M/2!D;V,L(&1O8RP@;&ES="A4*2D@/2!D;V,N#0H-"B`@("`E($AA;F1Y('!U
M;F-T=6%T:6]N(&1O8W, at 86YD('9E<G-I;VYS('=I=&@@9F]L;&]W:6YG(&QI
M;F4 at 8G)E86MS+ at T*("`@("4-"CHM(&9U;F, at 8V]M;6$@("`@("`@("`@("`@
M("`](&1O8RX-"CHM(&9U;F,@<V5M:6,@("`@("`@("`@("`@("`](&1O8RX-
M"CHM(&9U;F,@<W!A8V4@("`@("`@("`@("`@("`](&1O8RX-"CHM(&9U;F,@
M8V]M;6%?<W!A8V4@("`@("`@("`](&1O8RX-"CHM(&9U;F,@<V5M:6-?<W!A
M8V4@("`@("`@("`](&1O8RX-"CHM(&9U;F, at 8V]M;6%?;&EN92`@("`@("`@
M("`](&1O8RX-"CHM(&9U;F,@<V5M:6-?;&EN92`@("`@("`@("`](&1O8RX-
M"CHM(&9U;F,@<W!A8V5?;&EN92`@("`@("`@("`](&1O8RX-"CHM(&9U;F,@
M8V]M;6%?<W!A8V5?;&EN92`@("`](&1O8RX-"CHM(&9U;F,@<V5M:6-?<W!A
M8V5?;&EN92`@("`](&1O8RX-"@T*("`@("4 at 5&AI<R!P97)F;W)M<R!W;W)D
M('=R87!P:6YG(&%T('1H92!E;F0@;V8@;&EN92P@=&%K:6YG('=H:71E<W!A
M8V4-"B`@("`E(&%S('1H92!D96QI;6ET97(@<V5P87)A=&EN9R!W;W)D<RX-
M"B`@("`E#0HZ+2!F=6YC('=O<F1?=W)A<'!E9"AS=')I;F<I(#T at 9&]C+ at T*
M#0H@("`@)2!%+F<N($EF(&]N92!W86YT960@=&\@<')E='1Y('!R:6YT(&$@
M365R8W5R>2!L:7-T('1H96X@;VYE(&UI9VAT('=R:71E#0H@("`@)0T*("`@
M("4@("!B<F%C:V5T<RAN97-T*#(L('-E<&%R871E9"A->5!0+"!C;VUM85]S
M<&%C95]L:6YE+"!->4QI<W0I*2D-"B`@("`E#0H@("`@)2!W:&5R92!@37E0
M4"<@:7, at 82!F=6YC=&EO;B!F<F]M($UY3&ES="!M96UB97)S('1O(&1O8W,N
M#0H-"B`@("`E($-O;G9E<G0 at 87)B:71R87)Y('1E<FUS('1O(&1O8W,N("!4
M:&ES(')E<75I<F5S('-T9%]U=&EL7U]F=6YC=&]R+S,-"B`@("`E('1O('=O
M<FL@;VX at 86QL(&-O;7!O;F5N=',@;V8@=&AE(&]B:F5C="!B96EN9R!C;VYV
M97)T960N("!4:&4@<V5C;VYD#0H@("`@)2!V97)S:6]N('!L86-E<R!A(&UA
M>&EM=6T at 9&5P=&@@;VX@=&5R;7,@=VAI8V@@87)E(&]T:&5R=VES92!T<G5N
M8V%T960[#0H@("`@)2!W:&5N('1H92!D97!T:"!L:6UI="!I<R!R96%C:&5D
M+"!A;&P at 87)G=6UE;G1S(&]F(&$@9G5N8W1O<B!A<F4@#0H@("`@)2!R97!L
M86-E9"!B>2!@*"XN+BDG+ at T*("`@("4-"B`@("`E(%1H:7,@;6%Y('1H<F]W
M(&%N(&5X8V5P=&EO;B!O<B!C875S92!A(')U;G1I;64 at 86)O<G0@:68@=&AE
M('1E<FT@:6X-"B`@("`E('%U97-T:6]N(&AA<R!U<V5R+61E9FEN960 at 97%U
M86QI='DN#0H@("`@)0T*.BT at 9G5N8R!T;U]D;V,H5"D@("`@("`@("`@(#T@
M9&]C+ at T*.BT at 9G5N8R!T;U]D;V,H:6YT+"!4*2`@("`@(#T at 9&]C+ at T*#0H@
M("`@)2!#;VYV97)T(&1O8W,@=&\@<')E='1Y('!R:6YT960@<W1R:6YG<RX-
M"B`@("`E(%1H92!I;G0 at 87)G=6UE;G0@<W!E8VEF:65S(&$@;&EN92!W:61T
M:"!I;B!C:&%R86-T97)S+ at T*("`@("4-"CHM(&9U;F,@=&]?<W1R:6YG*&EN
M="P at 9&]C*2`]('-T<FEN9RX-"@T*("`@("4 at 5W)I=&4 at 9&]C<R!O=70@:6X@
M<')E='1Y('!R:6YT960 at 9F]R;6%T+ at T*("`@("4 at 5&AE(&EN="!A<F=U;65N
M="!S<&5C:69I97, at 82!P86=E('=I9'1H(&EN(&-H87)A8W1E<G,N#0H@("`@
M)0T*.BT@<')E9"!W<FET92AI;G0L(&1O8RP@:6]?7W-T871E+"!I;U]?<W1A
M=&4I+ at T*.BT@;6]D92!W<FET92AI;BP@:6XL(&1I+"!U;RD@:7, at 9&5T+ at T*
M#0HZ+2!P<F5D('=R:71E*&EO7U]O=71P=71?<W1R96%M+"!I;G0L(&1O8RP@
M:6]?7W-T871E+"!I;U]?<W1A=&4I+ at T*.BT@;6]D92!W<FET92AI;BP@:6XL
M(&EN+"!D:2P@=6\I(&ES(&1E="X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM("4-"B4 at +2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2`E#0H-"CHM(&EM<&QE;65N=&%T:6]N+ at T*#0HZ+2!I;7!O<G1?;6]D
M=6QE('-T9%]U=&EL+"!C:&%R+ at T*#0HZ+2!T>7!E(&1O8PT*("`@("TM+3X@
M("`@)TY)3"<-"B`@("`[("`@("`@("=315$G*&1O8RP at 9&]C*0T*("`@(#L@
M("`@("`@)TY%4U0G*&EN="P at 9&]C*0T*("`@(#L@("`@("`@)TQ!0D5,)RAS
M=')I;F<L(&1O8RD-"B`@("`[("`@("`@("=415A4)RAS=')I;F<I#0H@("`@
M.R`@("`@("`G3$E.12<-"B`@("`[("`@("`@("='4D]54"<H9&]C*2X-"@T*
M.BT@='EP92!S:6UP;&5?9&]C#0H@("`@+2TM/B`@("!N:6P-"B`@("`[("`@
M("`@('-T<FEN9R!@=&5X=&`@<VEM<&QE7V1O8PT*("`@(#L@("`@("`@<W1R
M:6YG(&!L:6YE8"!S:6UP;&5?9&]C+ at T*#0HE("TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2T@)0T*#0IN:6P@("`@("`@("`@("`@("`@("`@("`]
M("=.24PG+ at T*6"!@/#Y@(%D@("`@("`@("`@("`@("`@/2`G4T51)RA8+"!9
M*2X-"FYE<W0H22P at 6"D@("`@("`@("`@("`@(#T@)TY%4U0G*$DL(%@I+ at T*
M;&%B96PH3"P at 6"D@("`@("`@("`@("`@/2`G3$%"14PG*$PL(%@I+ at T*=&5X
M="A3*2`@("`@("`@("`@("`@("`@/2`G5$585"<H4RDN#0IL:6YE("`@("`@
M("`@("`@("`@("`@("`]("=,24Y%)RX-"F=R;W5P*%@I("`@("`@("`@("`@
M("`@(#T@)T=23U50)RA8*2X-"@T*<&]L>2AS*%,I*2`@("`@("`@("`@("`@
M/2!T97AT*'-T<FEN9U]?9F]R;6%T*"(E<R(L(%MS*%,I72DI+ at T*<&]L>2AC
M*$,I*2`@("`@("`@("`@("`@/2!T97AT*'-T<FEN9U]?9F]R;6%T*"(E8R(L
M(%MC*$,I72DI+ at T*<&]L>2AI*$DI*2`@("`@("`@("`@("`@/2!T97AT*'-T
M<FEN9U]?9F]R;6%T*"(E9"(L(%MI*$DI72DI+ at T*<&]L>2AF*$8I*2`@("`@
M("`@("`@("`@/2!T97AT*'-T<FEN9U]?9F]R;6%T*"(E9B(L(%MF*$8I72DI
M+ at T*#0HE("TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2T@)0T*#0IT
M;U]S=')I;F<H5RP at 6"D@/2!3(#HM#0H@("`@<')E='1Y*'!R960H2#HZ:6XL
M(%0Z.FEN+"!;2"!\(%1=.CIO=70I(&ES(&1E="P at 5RP@6"P at 6UTL(%-S*2P-
M"B`@("!3(#T@<W1R:6YG7U]A<'!E;F1?;&ES="AL:7-T7U]R979E<G-E*%-S
M*2DN#0H-"G=R:71E*%<L(%@I("`@("`@("`@("`@("TM/B!P<F5T='DH:6]?
M7W=R:71E7W-T<FEN9RP at 5RP@6"DN#0H-"G=R:71E*%-T<F5A;2P at 5RP@6"D@
M("`@("TM/B!P<F5T='DH:6]?7W=R:71E7W-T<FEN9RA3=')E86TI+"!7+"!8
M*2X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*
M.BT@<')E9"!P<F5T='DH<')E9"AS=')I;F<L(%0L(%0I+"!I;G0L(&1O8RP@
M5"P at 5"DN#0HZ+2!M;V1E('!R971T>2AP<F5D*&EN+"!I;BP@;W5T*2!I<R!D
M970L(&EN+"!I;BP@:6XL(&]U="D@:7, at 9&5T+ at T*.BT@;6]D92!P<F5T='DH
M<')E9"AI;BP at 9&DL('5O*2!I<R!D970L(&EN+"!I;BP at 9&DL('5O*2!I<R!D
M970N#0H-"G!R971T>2A0+"!7+"!8*2`@("`@("`@("TM/B!L87EO=70H4"P@
M8F5S="A7+"`P+"!8*2DN#0H-"B4 at +2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2`E#0H-"CHM('!R960@;&%Y;W5T*'!R960H<W1R:6YG+"!4+"!4
M*2P@<VEM<&QE7V1O8RP at 5"P at 5"DN#0HZ+2!M;V1E(&QA>6]U="AP<F5D*&EN
M+"!I;BP@;W5T*2!I<R!D970L(&EN+"!I;BP@;W5T*2!I<R!D970N#0HZ+2!M
M;V1E(&QA>6]U="AP<F5D*&EN+"!D:2P@=6\I(&ES(&1E="P@:6XL(&1I+"!U
M;RD@:7, at 9&5T+ at T*#0IL87EO=70H7RP@;FEL*2`@("`@("`@("`M+3X at 6UTN
M#0IL87EO=70H4"P at 4R!@=&5X=&`@6"D@("`M+3X at 4"A3*2P@;&%Y;W5T*%`L
M(%@I+ at T*;&%Y;W5T*%`L(%, at 8&QI;F5@(%@I("`@+2T^(%`H(EQN(BDL(%`H
M4RDL(&QA>6]U="A0+"!8*2X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM("4-"@T*.BT at 9G5N8R!B97-T*&EN="P@:6YT+"!D;V,I(#T@
M<VEM<&QE7V1O8RX-"@T*8F5S="A7+"!++"!8*2`@("`@("`@("`@/2!B92A7
M+"!++"!;(B(@+2!872DN#0H-"B4 at +2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2`E#0H-"B`@("`E(%A86"!792!C;W5L9"!D;R!W:71H(&$@<W!O
M="!O9B!L87II;F5S<R!T;R!A=F]I9"!E>'!O;F5N=&EA;`T*("`@("4@<G5N
M+71I;65S(&EN('1H92!W;W)S="!C87-E(&AE<F4N("!4:&4@<')O8FQE;2!I
M<R!T:&%T(&9L871T96XO,0T*("`@("4@;F5E9"!O;FQY(&)E(&5V86QU871E
M9"!T;R!T:&4@<&]I;G0@=VAE<F4@:70 at 8V%N(&)E(&1E8VED960-"B`@("`E
M("AB>2!B971T97(O-"!A;F0 at 9FET<R\R*2!W:&5T:&5R(&$@<W1R=6-T=7)E
M(&ES(&=O:6YG('1O(&9I="!O;@T*("`@("4@=&AE(')E;6%I;F1E<B!O9B!T
M:&4@;&EN92!O<B!N;W0N("!);B!P<F%C=&EC92P at 96%G97)N97-S(&1O97-N
M)W0-"B`@("`E('-E96T@=&\@8F4 at 82!P<F]B;&5M+ at T*#0HZ+2!F=6YC(&)E
M*&EN="P@:6YT+"!L:7-T*'!A:7(H<W1R:6YG+"!D;V,I*2D@/2!S:6UP;&5?
M9&]C+ at T*#0IB92A?+"!?+"!;72D@("`@("`@("`@("`@("`@("`@("`@/2!N
M:6PN#0IB92A7+"!++"!;7R`M("=.24PG("`@("`@("`@?"!:72D@/2!B92A7
M+"!++"!:*2X-"F)E*%<L($LL(%M)("T@)U-%42<H6"P at 62D@("!\(%I=*2`]
M(&)E*%<L($LL(%M)("T at 6"P at 22`M(%D@?"!:72DN#0IB92A7+"!++"!;22`M
M("=.15-4)RA*+"!8*2`@?"!:72D@/2!B92A7+"!++"!;97AT96YD*$DL($HI
M("T at 6"!\(%I=*2X-"F)E*%<L($LL(%M)("T@)TQ!0D5,)RA,+"!8*2!\(%I=
M*2`](&)E*%<L($LL(%MS=')I;F=?7V%P<&5N9"A)+"!,*2`M(%@@?"!:72DN
M#0IB92A7+"!++"!;7R`M("=415A4)RA3*2`@("`@?"!:72D@/2!3(&!T97AT
M8"!B92A7+"`H2R`K('-T<FEN9U]?;&5N9W1H*%,I*2P at 6BDN#0IB92A7+"!?
M+"!;22`M("=,24Y%)R`@("`@("`@?"!:72D@/2!)(&!L:6YE8"!B92A7+"!S
M=')I;F=?7VQE;F=T:"A)*2P at 6BDN#0IB92A7+"!++"!;22`M("='4D]54"<H
M6"D@("`@?"!:72D@/2!"97-T#0HZ+0T*("`@("@@:68-"B`@("`@("`@5R`\
M($L@("`@("`@("`@("`@("`@("`@("`@("`@("`E($QA>FEN97-S('=O=6QD
M(&UA:V4@=&AI<R!O8G-O;&5T92XN+ at T*("`@("`@=&AE;@T*("`@("`@("!"
M97-T(#T at 8F4H5RP@2RP at 6TD@+2!8('P at 6ETI#0H-"B`@("`@(&5L<V4@:68-
M"B`@("`@("`@1FQA='1E;F5D(#T at 8F4H5RP@2RP at 6TD@+2!F;&%T=&5N*%@I
M('P at 6ETI+`T*("`@("`@("!F:71S*%<@+2!++"!&;&%T=&5N960I#0H@("`@
M("!T:&5N#0H@("`@("`@($)E<W0@/2!&;&%T=&5N960-"@T*("`@("`@96QS
M90T*("`@("`@("!"97-T(#T at 8F4H5RP@2RP at 6TD@+2!8('P at 6ETI#0H@("`@
M*2X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*
M.BT at 9G5N8R!E>'1E;F0H<W1R:6YG+"!I;G0I(#T@<W1R:6YG+ at T*#0IE>'1E
M;F0H22P at 2BD@/2!S=')I;F=?7V%P<&5N9"A)+"!S=')I;F=?7V1U<&QI8V%T
M95]C:&%R*"<@)RP at 2BDI+@T*#0HE("TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2T@)0T*#0HZ+2!F=6YC(&9L871T96XH9&]C*2`](&1O8RX-"@T*
M9FQA='1E;B at G3DE,)RD@("`@("`@("`@/2`G3DE,)RX-"F9L871T96XH)U-%
M42<H6"P at 62DI("`@(#T@)U-%42<H9FQA='1E;BA8*2P at 9FQA='1E;BA9*2DN
M#0IF;&%T=&5N*"=.15-4)RA?+"!8*2D@("`](&9L871T96XH6"DN#0IF;&%T
M=&5N*"=,04)%3"<H7RP at 6"DI("`](&9L871T96XH6"DN#0IF;&%T=&5N*"=4
M15A4)RA3*2D@("`@("`]("=415A4)RA3*2X-"F9L871T96XH)TQ)3D4G*2`@
M("`@("`@(#T@)TY)3"<N#0IF;&%T=&5N*"='4D]54"<H6"DI("`@("`](&9L
M871T96XH6"DN#0H-"B4 at +2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2`E#0H-"CHM('!R960 at 9FET<RAI;G0L('-I;7!L95]D;V,I+ at T*.BT@;6]D
M92!F:71S*&EN+"!I;BD@:7,@<V5M:61E="X-"@T*9FET<RA7+"!8*2`Z+0T*
M("`@(%<@/CT@,"P-"B`@("`H#0H@("`@("`@(%@@/2!N:6P-"B`@("`[#0H@
M("`@("`@(%@@/2!3(&!T97AT8"!9+"!F:71S*%<@+2!S=')I;F=?7VQE;F=T
M:"A3*2P at 62D-"B`@("`[#0H@("`@("`@(%@@/2!?(&!L:6YE8"!?#0H@("`@
M*2X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*
M6"!@/"\^8"!9("`@("`@("`@("`](%@@8#P^8"!L:6YE(&`\/F`@62X-"@T*
M)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*8G)A8VME
M=&5D*$PL(%(L($0I("`]('1E>'0H3"D at 8#P^8"!$(&`\/F`@=&5X="A2*2X-
M"G!A<F5N=&AE<V5S*$0I("`@("`@/2!B<F%C:V5T960H(B at B+"`B*2(L($0I
M+ at T*8G)A8VME=',H1"D@("`@("`@("`](&)R86-K971E9"@B6R(L(")=(BP@
M1"DN#0IB<F%C97,H1"D@("`@("`@("`@(#T at 8G)A8VME=&5D*")[(BP@(GTB
M+"!$*2X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-
M"@T*<V5P87)A=&5D*%\L("!?+"`@(%M=*2`](&YI;"X-"@T*<V5P87)A=&5D
M*%!0+"!397`L(%M8('P at 6'-=*2`]#0H@("`@*"!I9B!8<R`](%M=('1H96X-
M"B`@("`@("`@4%`H6"D-"B`@("`@(&5L<V4-"B`@("`@("`@4%`H6"D at 8#P^
M8"!397`@8#P^8"!S97!A<F%T960H4%`L(%-E<"P at 6',I#0H@("`@*2X-"@T*
M)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*8V]M;6$@
M("`@("`@("`@("`@("`]('1E>'0H(BPB*2X-"G-E;6EC("`@("`@("`@("`@
M("`@/2!T97AT*"([(BDN#0IS<&%C92`@("`@("`@("`@("`@(#T@=&5X="@B
M("(I+ at T*8V]M;6%?<W!A8V4@("`@("`@("`]('1E>'0H(BP@(BDN#0IS96UI
M8U]S<&%C92`@("`@("`@(#T@=&5X="@B.R`B*2X-"F-O;6UA7VQI;F4@("`@
M("`@("`@/2!C;VUM82!@/#Y@(&QI;F4N#0IS96UI8U]L:6YE("`@("`@("`@
M(#T@<V5M:6, at 8#P^8"!L:6YE+ at T*<W!A8V5?;&EN92`@("`@("`@("`]('-P
M86-E(&`\/F`@;&EN92X-"F-O;6UA7W-P86-E7VQI;F4@("`@/2!T97AT*"(L
M("(I(&`\/F`@;&EN92X-"G-E;6EC7W-P86-E7VQI;F4@("`@/2!T97AT*"([
M("(I(&`\/F`@;&EN92X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM("4-"@T*=&]?9&]C*%@I(#T@=&]?9&]C*&EN=%]?;6%X7VEN="P@
M6"DN#0H-"B4 at +2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2`E#0H-
M"B`@("`E(%1H:7,@;6%Y('1H<F]W(&%N(&5X8V5P=&EO;B!O<B!C875S92!A
M(')U;G1I;64 at 86)O<G0@:68@=&AE('1E<FT-"B`@("`E(&EN('%U97-T:6]N
M(&AA<R!U<V5R+61E9FEN960 at 97%U86QI='DN#0H-"G1O7V1O8RA$97!T:"P@
M6"D@/0T*("`@("@@:68 at 07)I='D@/2`P('1H96X-"B`@("`@("`@=&5X="A.
M86UE*0T*("`@("`@96QS92!I9B!$97!T:"`]/"`P('1H96X-"B`@("`@("`@
M=&5X="A.86UE*2!@/#Y@('1E>'0H(B at N+BXI(BD-"B`@("`@(&5L<V4-"B`@
M("`@("`@=&5X="A.86UE*2!@/#Y@#0H@("`@("`@('!A<F5N=&AE<V5S*`T*
M("`@("`@("`@("`@9W)O=7`H#0H@("`@("`@("`@("`@("`@;F5S="@R+"!L
M:6YE(&`\/F`@<V5P87)A=&5D*&ED+"!C;VUM85]S<&%C95]L:6YE+"!!<F=S
M*2D at 8#P^8`T*("`@("`@("`@("`@("`@(&QI;F4-"B`@("`@("`@("`@("D-
M"B`@("`@("`@*0T*("`@("D-"CHM#0H@("`@9&5C;VYS=')U8W0H6"P at 3F%M
M92P at 07)I='DL(%5N:79!<F=S*2P-"B`@("!!<F=S(#T@;&ES=%]?;6%P*`T*
M("`@("`@("`H(&9U;F,H56YI=D%R9RD@/2!T;U]D;V,H1&5P=&@@+2`Q+"!U
M;FEV7W9A;'5E*%5N:79!<F<I*2`I+`T*("`@("`@("!5;FEV07)G<PT*("`@
M("DN#0H-"B4 at +2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2`E#0H-
M"G=O<F1?=W)A<'!E9"A3=')I;F<I(#T-"B`@("!L:7-T7U]F;VQD<B at -"B`@
M("`@("`@*"!F=6YC*%=O<F0L(%-E<75E;"D@/0T*("`@("`@("`@("`@9W)O
M=7`H;&EN92!@/#Y@('1E>'0H5V]R9"D at 8#P^8"!S<&%C92D at 8#P^8"!397%U
M96P-"B`@("`@("`@*2P-"B`@("`@("`@<W!L:71?<W1R:6YG*%-T<FEN9RP@
M)R`G*2P-"B`@("`@("`@;FEL#0H@("`@*2X-"@T*)2`M+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*.BT at 9G5N8R!S<&QI=%]S=')I;F<H
M<W1R:6YG+"!C:&%R*2`](&QI<W0H<W1R:6YG*2X-"@T*<W!L:71?<W1R:6YG
M*%-T<FEN9RP at 4V5P87)A=&]R*2`]('-P;&ET7W-T<FEN9U\P*%,L(%-T<FEN
M9RP at 22P@6UTI#0HZ+0T*("`@(%,@/2`H('!R960H0VAA<CHZ:6XI(&ES('-E
M;6ED970 at .BT@0VAA<B`](%-E<&%R871O<B`I+`T*("`@($D@/2!F:6YD7W!R
M96-E9&EN9U]B;W5N9&%R>2AI<VYT*%,I+"!3=')I;F<L('-T<FEN9U]?;&5N
M9W1H*%-T<FEN9RD at +2`Q*2X-"@T*)2`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM("4-"@T*.BT at 9G5N8R!S<&QI=%]S=')I;F=?,"AP<F5D*&-H
M87(I+"!S=')I;F<L(&EN="P@;&ES="AS=')I;F<I*2`](&QI<W0H<W1R:6YG
M*2X-"CHM(&UO9&4@<W!L:71?<W1R:6YG7S`H<')E9"AI;BD@:7,@<V5M:61E
M="P@:6XL(&EN+"!I;BD@/2!O=70@:7, at 9&5T+ at T*#0IS<&QI=%]S=')I;F=?
M,"A3+"!3=')I;F<L($DP+"!7;W)D<S`I(#T at 5V]R9',-"CHM#0H@("`@*"!I
M9B!),"`\(#`@=&AE;@T*("`@("`@("!7;W)D<R`](%=O<F1S,`T*("`@("`@
M96QS90T*("`@("`@("!),2`@("`](&9I;F1?<')E8V5D:6YG7V)O=6YD87)Y
M*%,L(%-T<FEN9RP at 23`I+`T*("`@("`@("!7;W)D("`]('-T<FEN9U]?=6YS
M869E7W-U8G-T<FEN9RA3=')I;F<L($DQ("L@,2P at 23`@+2!),2DL#0H@("`@
M("`@($D@("`@(#T at 9FEN9%]P<F5C961I;F=?8F]U;F1A<GDH:7-N="A3*2P@
M4W1R:6YG+"!),2DL#0H@("`@("`@(%=O<F1S(#T@<W!L:71?<W1R:6YG7S`H
M4RP at 4W1R:6YG+"!)+"!;5V]R9"!\(%=O<F1S,%TI#0H@("`@*2X-"@T*)2`M
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM("4-"@T*.BT at 9G5N8R!F
M:6YD7W!R96-E9&EN9U]B;W5N9&%R>2AP<F5D*&-H87(I+"!S=')I;F<L(&EN
M="D@/2!I;G0N#0HZ+2!M;V1E(&9I;F1?<')E8V5D:6YG7V)O=6YD87)Y*'!R
M960H:6XI(&ES('-E;6ED970L(&EN+"!I;BD@/2!O=70@:7, at 9&5T+ at T*#0IF
M:6YD7W!R96-E9&EN9U]B;W5N9&%R>2A3+"!3=')I;F<L($DI(#T-"B`@("`H
M(&EF($D@/"`P('1H96X-"B`@("`@("`@20T*("`@("`@96QS92!I9B!3*'-T
M<FEN9U]?=6YS869E7VEN9&5X*%-T<FEN9RP at 22DI('1H96X-"B`@("`@("`@
M20T*("`@("`@96QS90T*("`@("`@("!F:6YD7W!R96-E9&EN9U]B;W5N9&%R
M>2A3+"!3=')I;F<L($D at +2`Q*0T*("`@("DN#0H-"B4 at +2TM+2TM+2TM+2TM
M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
7+2TM+2TM+2TM+2TM+2TM+2TM+2`E#0H=
`
end

begin 600 examples.m
M.BT@;6]D=6QE(&5X86UP;&5S+ at T*.BT@:6YT97)F86-E+ at T*.BT@:6UP;W)T
M7VUO9'5L92!I;RX-"@T*.BT@<')E9"!M86EN*&EO7U]S=&%T92P@:6]?7W-T
M871E*2X-"CHM(&UO9&4@;6%I;BAD:2P@=6\I(&ES(&1E="X-"@T*.BT@:6UP
M;&5M96YT871I;VXN#0H-"CHM(&EM<&]R=%]M;V1U;&4@<'!R:6YT+"!M87`L
M(&QI<W0L('-T9%]U=&EL+ at T*#0IM86EN("TM/@T*#0H@("`@>R!%>#$@/2!T
M97AT*")(96QL;R`B*2!@/#Y@(&QI;F4 at 8#P^8"!T97AT*")W;W)L9"(I('TL
M#0H@("`@:6]?7W!R:6YT*"(]/3T at 17@Q(#T]/5QN(BDL#0H@("`@<'!R:6YT
M7U]W<FET92 at Q-BP@17 at Q*2P@:6]?7VYL+"!I;U]?;FPL#0H-"B`@("!I;U]?
M<')I;G0H(CT]/2!%>#(@/3T]7&XB*2P-"B`@("![($5X,B`](&=R;W5P*'1E
M>'0H(DAE;&QO("(I(&`\/F`@;&EN92!@/#Y@('1E>'0H(G=O<FQD(BDI('TL
M#0H@("`@<'!R:6YT7U]W<FET92 at Q-BP@17 at R*2P@:6]?7VYL+"!I;U]?;FPL
M#0H@("`@<'!R:6YT7U]W<FET92@@."P at 17@R*2P@:6]?7VYL+"!I;U]?;FPL
M#0H-"B`@("!I;U]?<')I;G0H(CT]/2!%>#,@/3T]7&XB*2P-"B`@("![($5X
M,R`](&=R;W5P*'1E>'0H(DAE;&QO("(I(&`\/F`@;F5S="@S+"!L:6YE(&`\
M/F`@=&5X="@B=V]R;&0B*2DI('TL#0H@("`@<'!R:6YT7U]W<FET92 at Q-BP@
M17 at S*2P@:6]?7VYL+"!I;U]?;FPL#0H@("`@<'!R:6YT7U]W<FET92@@."P@
M17 at S*2P@:6]?7VYL+"!I;U]?;FPL#0H-"B`@("!I;U]?<')I;G0H(CT]/2!%
M>#0@/3T]7&XB*2P-"B`@("![($5X-"`](&=R;W5P*'1E>'0H(D=O;V1B>64@
M(BD at 8#P^8`T*("`@("`@("`@("`@("`@(&YE<W0H,RP@;&EN92!@/#Y@('1E
M>'0H(F-R=65L("(I(&`\/F`@;&EN92!@/#Y@('1E>'0H(G=O<FQD(BDI*0T*
M("`@('TL#0H@("`@<'!R:6YT7U]W<FET92 at R-"P at 17@T*2P@:6]?7VYL+"!I
M;U]?;FPL#0H@("`@<'!R:6YT7U]W<FET92 at Q-BP@17 at T*2P@:6]?7VYL+"!I
M;U]?;FPL#0H-"B`@("!I;U]?<')I;G0H(CT]/2!%>#4@/3T]7&XB*2P-"B`@
M("![($5X-2`](&=R;W5P*'1E>'0H(D=O;V1B>64@(BD at 8#P^8`T*("`@("`@
M("`@("`@("`@(&YE<W0H,RP@;&EN92!@/#Y@#0H@("`@("`@("`@("`@("`@
M("`@(&=R;W5P*'1E>'0H(F-R=65L("(I(&`\/F`@;&EN92!@/#Y@('1E>'0H
M(G=O<FQD(BDI*2D-"B`@("!]+`T*("`@('!P<FEN=%]?=W)I=&4H,C0L($5X
M-2DL(&EO7U]N;"P@:6]?7VYL+`T*("`@('!P<FEN=%]?=W)I=&4H,38L($5X
M-2DL(&EO7U]N;"P@:6]?7VYL+`T*("`@('!P<FEN=%]?=W)I=&4H(#@L($5X
M-2DL(&EO7U]N;"P@:6]?7VYL+`T*#0H@("`@>R!M87!?7V9R;VU?87-S;V-?
M;&ES="A;(G1W;R(M,BP@(F]N92(M,2P@(G1H<F5E(BTS+"`B9F]U<B(M-%TL
M($TI('TL#0H@("`@:6]?7W!R:6YT*"(]/3T at 07)B:71R87)Y($]B:F5C=',@
M/3T]7&XB*2P-"B`@("![($0@/2!L86)E;"@B8F5H;VQD.B`B+"!L:6YE(&`\
M/F`@<'!R:6YT7U]T;U]D;V,H32DI('TL#0H@("`@<'!R:6YT7U]W<FET92 at Q
M,C at L($0I+"!I;U]?;FPL(&EO7U]N;"P-"B`@("!P<')I;G1?7W=R:71E*"`V
M-"P at 1"DL(&EO7U]N;"P@:6]?7VYL+`T*("`@('!P<FEN=%]?=W)I=&4H(#,R
M+"!$*2P@:6]?7VYL+"!I;U]?;FPL#0H-"B`@("![($4@/2!L86)E;"@B8F5H
M;VQD.B`B+"!L:6YE(&`\/F`@<'!R:6YT7U]T;U]D;V,H,2P at 32DI('TL#0H@
M("`@:6]?7W!R:6YT*"(]/3T at 07)B:71R87)Y($]B:F5C=',@=VET:"!$97!T
M:"!,:6UI=&EN9R`]/3U<;B(I+`T*("`@('!P<FEN=%]?=W)I=&4H,3(X+"!%
M*2P@:6]?7VYL+"!I;U]?;FPL#0H@("`@<'!R:6YT7U]W<FET92@@-C0L($4I
M+"!I;U]?;FPL(&EO7U]N;"P-"B`@("!P<')I;G1?7W=R:71E*"`S,BP at 12DL
M(&EO7U]N;"P@:6]?7VYL+`T*#0H@("`@>R!7(#T@=V]R9%]W<F%P<&5D*")%
M=F5R>6]N92!K;F]W<R!T:&4 at 1FER<W0 at 3&%W(&]F($UI8W)O<')O8V5S<VEN
M9SH at 8&EF(&%L;"!E;'-E(&9A:6QS+"!296%D('1H92!-86YU86PG+B`@02!T
M<G5E(&)L=69F97(@=V]U;&0@;F5V97(@;6%K92!S=6-H(&%N(&ER<F5S<&]N
M<VEB;&4@<W1A=&5M96YT+B`@5&AI<R!D;V-U;65N="!I<R!A('9I=&%L(&5L
M96UE;G0@:6X at 82!B;'5F9B!T:&%T(&AA<R!K97!T('1H92!G96YE<F%L('!U
M8FQI8R!O=70@;V8 at 8V]M<'5T97)S(&9O<B!Y96%R<RXB*2!]+`T*("`@(&EO
M7U]P<FEN="@B/3T](%=O<F0@=W)A<'!I;F<@/3T]7&XB*2P-"B`@("!P<')I
M;G1?7W=R:71E*"`X,"P at 5RDL(&EO7U]N;"P@:6]?7VYL+`T*("`@('!P<FEN
M=%]?=W)I=&4H(#8T+"!7*2P@:6]?7VYL+"!I;U]?;FPL#0H@("`@<'!R:6YT
D7U]W<FET92@@,S(L(%<I+"!I;U]?;FPL(&EO7U]N;"X-"@T*
`
end
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------



More information about the developers mailing list