This is an extension to the Do.py program. It adds several features.
Documentation is included in the source.
begin 644 Do2.py
M#0HC("TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
M+2TM+2T-"B,@3F%M93H@1&\R#0HC($1EV-R:7!T:6]N.B!%'!A;F0@86YD
M(&5X96-U=&4@8V]M;6%N9`T*(R,@1#(P2"TS-2!%>'!A;F0@86YD(&5X96-U
M=&4@8V]M;6%N9`T*(PT*(R!!=71H;W(Z(%!H:6QI<"!3+B!2:7-T#0HC($1A
M=&4Z(#$P+S(T+S(P,3`-"B,@0V]P>7)I9VAT(#(P,3`@8GD@4W0N(%1H;VUA
M2!B92!U6]U<@T*(R!O=VX@6]U(&9E96P@>6]U(&UU7-<7'!Y=&AO;C(U7%QP>71H
M;VYW+F5X92!C.EQ<8FEN7%QD;S(N<'D@7"(E,5PB(&,Z7%Q7:6YD;W=S7%QS
M>7-T96TS,EQ<8VUD+F5X92`O2R!C;W!Y(%PB>V%]7"(@7")[=7U<7'LR?5Q<
M>V9]7"(@("`@("`B#0HC#0HC6TA+15E?0TQ!4U-%4U]23T]47"I<4VAE;&Q<
M1&\R161I=%T-"B-`/2)%9&ET("A$;S(I(@T*(R)%9&ET1FQA9W,B/6AE>#HP
M,2PP,"PP,"PP,`T*(UM(2T597T-,05-315-?4D]/5%PJ7%-H96QL7$1O,D5D
M:71<0V]M;6%N9%T-"B-`/2)C.EQ<71H;VXR-5Q<<'ET:&]N=RYE
M>&4@8SI<7&)I;EQ<9&\R+G!Y(%PB)3%<(B!C.EQ<4V]U'!A;F1I;F<@86X@96YT:7)E(&-O;6UA;F0@;&EN92!I;B!O;F4@8V%L;`T*
M(R!I="!E>'!A;F1S(&5A8V@@87)G=6UE;G0@2X@($ET(&%D
M9',@=&AE('L\+7T@;6%CSPM?61I<F5C
M=&]R>2YI;FD@=VEL;"!S96%R8V@@9F]R(&$-"B,@9&ER96-T;W)Y+FEN:2!F
M:6QE(&EN('1H92!F;VQL;W=I;F<@9F]L9&5R2!A(&-H96-K(&]F(&,Z7'1E2!$:7)E8W1O&5C=71I;VX@;V8@;7D@0G5T=&]N0F%R('!R;V=R86T-
M"B,@&4@
M(&,Z7%QB:6Y<7$)U='1O;D)A<BYP>2`@(%PB)3%<(B`@(%PB>SPM?41I<F5C
M=&]R>2YI;FE<(B`@('1O;VQS("(-"@T*#0II;7!O&ES=',H;%!A=&@I.@T*("`@
M("`@("`@("`@<')I;G0@)T9O=6YD)PT*("`@("`@("`@("`@8G)E86L-"B`@
M("`@("`@;$-O=6YT("T](#$-"B`@("!E;'-E.@T*("`@("`@("!L4&%T:"`]
M('!$969A=6QT4&%T:"`K(&Q&:6QE4&%T:`T*("`@(')E='5R;B!L4&%T:`T*
M#0ID968@17AP86YD07)G*'!!RSPM?2!A;F0@3H-"B`@("`@("`@("`@("`@("`@("`@;%!A=&@@/2!087)E;G1396%R8V@H
M;%!A=&@L('!&:6QE4&%T:"P@<$IO:6X]<$IO:6XI#0H@("`@("`@("`@("`@
M("`@97AC97!T($5X8V5P=&EO;B!A&ES
M=',H;%!A=&@I.@T*("`@("`@("`@("`@("`@(&Q&;W5N9"`](&Q0871H#0H@
M("`@("`@("`@("`@("`@8G)E86L-"B`@("`@("`@96QS93H-"B`@("`@("`@
M("`@(&Q&;W5N9"`](&]S+G!A=&@N86)S<&%T:"AP1&5F875L=%!A=&@I#0H@
M("`@96QS93H-"B`@("`@("`@;$9O=6YD(#T@;$%R9PT*("`@(`T*(R`@("`@
M("`@("`@("`@("`@("`@268@87)G=6UE;G0@8V]N=&%I;G,@W!])RP@)V,Z
M7%QS;W5R8V5<7'!Y=&AO;EQ<;F5W7%QD;RYP>2WAX?2YB:W`G+`T*(R`@("`@("`G>VE]
M7%Q[+3%])RP@)R`@('MU?5Q<>RTR?2S)]7%QT97-T+GME?2(G+"`-"B,@("`@("`@)WLP?5Q<>S-]7%Q[;GTN
M>V5]+G1X="<@("`@72D-"@T*:68@7U]N86UE7U\@/3T@)U]?;6%I;E]?)SH-
M"B`@("`H;4]P=&EO;G,L(&U!2`]/2`G+64G.@T*("`@("`@("`@("`@'0@/2!%>'!A;F1!