Blair,
I'm writing an IDE extension to fire up my code generator on a selection of instance variable names, with the goal of writing a constructor method and an instance side set method. The brain-dead obvious code is often useful, so it seems a good place to start. The next step in my coding is to find the 'classes' view - a tree view. Problem: the CHB view resource has a reference view named 'classes', and I get it instead of the tree view that appears inside it. Ok, I can use something like ( shell view viewNamed:'classes' ) viewNamed:'classes' (perhaps with a #referee send - haven't tried it yet). Is that the intent? Also, I'm starting to wonder whether extensions should be enabled by class initialization as implied by your sample. It would be very easy for one to break, and debugging something that extends the debugger would be, ummmm, interesting<g>. It's even fun when it extends the CHB. One solution might be to have all extensions started by something like #activateExtension which could be tried after making a backup of a newly built image. Comments? Have a good one, Bill -- Wilhelm K. Schwab, Ph.D. [hidden email] |
Hi Bill,
> ( shell view viewNamed:'classes' ) viewNamed:'classes' > > (perhaps with a #referee send - haven't tried it yet). Is that the intent? I have been playing around with IDE Extensions the past couple of days, and I have ended up with a few methods that look like that :) I have found it a bit cleaner to locate a view by following the presenter chain, and then asking for the view. > break, and debugging something that extends the debugger would be, ummmm, > interesting<g>. It's even fun when it extends the CHB. This was a concern for me. My solution was to add an error handler around the code that accesses the view resource, that prints a notification to the Transcript and aborts the attempt to add the extension. Attached is a package that adds a couple of menu commands for SUnitBrowser. It has helper methods to get the classes/methods and definitions presenters for the SB and CHB. (It will replace the SUnitBrowser>>publishedAspects method when installed. The original is in the package comment) Thoughts and suggestions on making this more robust welcomed! Thanks, Steve begin 666 SUnitBrowserIDEExtension.pac M?"!P86-K86=E('P-"G!A8VMA9V4@.CT@4&%C:V%G92!N86UE.B G4U5N:71" M<F]W<V5R241%17AT96YS:6]N)RX-"G!A8VMA9V4@<&%X5F5R<VEO;CH@,#L- M"@EB87-I8T-O;6UE;G0Z("=356YI=$)R;W=S97(@241%($5X=&5N<VEO;@T* M4W1E=F4@5V%R:6YG(#(P,#(-"CT]/3T]/3T]/3T-"BU!9&1S(&$@(E)U;B!4 M97-T<R(@8V]M;6%N9"!T;R!T:&4@=&]P(&]F('1H92!30B!A;F0@0TA"(&-L M87-S97,@8V]N=&5X="!M96YU+@T*+4%D9',@82 B4W1E<"!497-T(B!C;VUM M86YD('1O('1H92!30B!A;F0@0TA"(&UE=&AO9',@8V]N=&5X="!M96YU+@T* M#0H]/3T]/3T]/3T]#0H-"E1H92!E>'1E;G-I;VYS(&%R92!D:7-A8FQE9"!B M>2!D969A=6QT+@T*5&\@96YA8FQE+"!U<V4@=&AE(%-5;FET0G)O=W-E<B!0 M=6)L:7-H961!<W!E8W0@;W!T:6]N<RX-"D]N8V4@96YA8FQE9"P@=&AE($E$ M12!%>'1E;G-I;VYS('=I;&P@8F4@861D960@=&\@;F5W;'D@;W!E;F5D(%-H M96QL<RX-"@T*/3T]/3T]/3T]/0T*5&AI<R!M971H;V0@=V%S(&]V97)W<FET M=&5N.@T*#0IP=6)L:7-H961!<W!E8W1S#0H)(D%N<W=E<B!A(%-E="!O9B!T M:&4@87-P96-T<R!P=6)L:7-H960@8GD@(&EN<W1A;F-E<R!O9B!T:&4@<F5C M96EV97(B#0H-"@E\(&%S<&5C=',@? T*"6%S<&5C=',@.CT@<W5P97(@<'5B M;&ES:&5D07-P96-T<RX-"@EA<W!E8W1S#0H)"6%D9#H@*$%S<&5C="!B;V]L M96%N.B C<VAO=T%L;"D[#0H)"6%D9#H@*$%S<&5C="!B;V]L96%N.B C<VAO M=U-T871U<T)A8VMG<F]U;F1#;VQO<G,I+@T*#0H)7F%S<&5C=',-"B<N#0H- M"@T*<&%C:V%G92!C;&%S<TYA;65S#0H)861D.B C4U5N:71"<F]W<V5R241% M17AT96YS:6]N.PT*"7EO=7)S96QF+@T*#0IP86-K86=E(&UE=&AO9$YA;65S M#0H)861D.B C365T:&]D0G)O=W-E<B M/B C<W1E<%1E<W0[#0H)861D.B G M4U5N:71"<F]W<V5R(&-L87-S)R M/B C:61E17AT96YS:6]N<SL-"@EA9&0Z M("=356YI=$)R;W=S97(@8VQA<W,G("T^("-P=6)L:7-H961!<W!E8W1S.PT* M"7EO=7)S96QF+@T*#0IP86-K86=E(&)I;F%R>4=L;V)A;$YA;65S.B H4V5T M(&YE=PT*"7EO=7)S96QF*2X-"@T*<&%C:V%G92!G;&]B86Q!;&EA<V5S.B H M4V5T(&YE=PT*"7EO=7)S96QF*2X-"@T*<&%C:V%G92!A;&Q297-O=7)C94YA M;65S.B H4V5T(&YE=PT*"7EO=7)S96QF*2X-"@T*<&%C:V%G92!S9710<F5R M97%U:7-I=&5S.B H261E;G1I='E3970@;F5W#0H)861D.B G+BY<+BY<3V)J M96-T($%R='-<1&]L<&AI;EQ)1$5<0F%S95Q$979E;&]P;65N="!3>7-T96TG M.PT*"6%D9#H@)RXN7"XN7$]B:F5C="!!<G1S7$1O;'!H:6Y<0F%S95Q$;VQP M:&EN)SL-"@EA9&0Z("<N+EPN+EQ/8FIE8W0@07)T<UQ$;VQP:&EN7$U64%Q" M87-E7$1O;'!H:6X@3590($)A<V4G.PT*"6%D9#H@)RXN7"XN7$]B:F5C="!! M<G1S7$1O;'!H:6Y<241%7%-T86YD87)D($5D:71I;VY<4W1A;F1A<F0@161I M=&EO;B!4;V]L<R<[#0H)861D.B G4U5N:71"<F]W<V5R)SL-"@EY;W5R<V5L M9BDN#0H-"G!A8VMA9V4A#0H-"B)#;&%S<R!$969I;FET:6]N<R(A#0H-"D]B M:F5C="!S=6)C;&%S<SH@(U-5;FET0G)O=W-E<DE$145X=&5N<VEO;@T*"6EN M<W1A;F-E5F%R:6%B;&5.86UE<SH@)R<-"@EC;&%S<U9A<FEA8FQE3F%M97,Z M("<G#0H)<&]O;$1I8W1I;VYA<FEE<SH@)R<-"@EC;&%S<TEN<W1A;F-E5F%R M:6%B;&5.86UE<SH@)V5N86)L94-(0E)U;E1E<W1S1FER<W0@96YA8FQE4T)2 M=6Y497-T<T9I<G-T(&5N86)L94UE=&AO9%-T97 G(0T*#0HB1VQO8F%L($%L M:6%S97,B(0T*#0H-"B),;V]S92!-971H;V1S(B$-"@T*(4UE=&AO9$)R;W=S M97(@"6%D9$ET96TZ("A#;VUM86YD M365N=4ET96T@8V]M;6%N9$1E<V-R:7!T:6]N.B H0VQO<V5D0V]M;6%N9$1E M<V-R:7!T:6]N( T*"0D)"0D)"6-O;6UA;F0Z("-S=&5P5&5S= T*"0D)"0D) M"61E<V-R:7!T:6]N.B G4W1E<"!);G1O(%1E<W0G#0H)"0D)"0D)<75E<GE" M;&]C:SH@#0H)"0D)"0D)"5LZ84-O;6UA;F11=65R>2!\( T*"0D)"0D)"0E\ M(&UE=&AO9"!\#0H)"0D)"0D)"6%#;VUM86YD475E<GD@<F5C96EV97(Z(&UE M=&AO9'-0<F5S96YT97(N#0H)"0D)"0D)"6UE=&AO9" Z/2!M971H;V1S4')E M<V5N=&5R('-E;&5C=&EO;D]R3FEL+@T*"0D)"0D)"0EA0V]M;6%N9%%U97)Y M(&ES16YA8FQE9#H@*&UE=&AO9"!N;W1.:6P@#0H)"0D)"0D)"0D)"6%N9#H@ M6VUE=&AO9"!M971H;V1#;&%S<R!A;&Q3=7!E<F-L87-S97,@86YY4V%T:7-F M>3H@6SIE86-H('P@96%C:"!N86UE(#T@(U1E<W1#87-E75TI70T*"0D)"0D) M"7)E8V5I=F5R.B!M971H;V1S4')E<V5N=&5R*2DA#0H-"F5N86)L94-(0E)U M;E1E<W1S1FER<W0-"@DB06YS=V5R(&EF(&YE=R!#2$(G<R!S:&]U;&0@:&%V M92!A("=2=6X@5&5S=',G(&-O;6UA;F0@861D960@=&\@=&AE( T*"71O<"!O M9B!T:&5I<B!C;&%S<R!P86YE(&-O;G1E>'0@;65N=2(-"@T*"5YE;F%B;&5# M2$)2=6Y497-T<T9I<G-T(0T*#0IE;F%B;&5#2$)2=6Y497-T<T9I<G-T.B!A M0F]O;&5A;@T*"65N86)L94-(0E)U;E1E<W1S1FER<W0@.CT@84)O;VQE86XA M#0H-"F5N86)L94UE=&AO9%-T97 -"@DB06YS=V5R(&EF(&YE=R!"<F]W<V5R M<R!S:&]U;&0@:&%V92!A("=3=&5P($EN=&\@5&5S=',G(&-O;6UA;F0@861D M960@=&\@=&AE:7(@365T:"6%D9$ET96TZ("A#;VUM86YD M365N=4ET96T@8V]M;6%N9$1E<V-R:7!T:6]N.B H0VQO<V5D0V]M;6%N9$1E M<V-R:7!T:6]N( T*"0D)"0D)"6-O;6UA;F0Z("-S=&5P5&5S= T*"0D)"0D) M"61E<V-R:7!T:6]N.B G4W1E<"!);G1O(%1E<W0G#0H)"0D)"0D)<75E<GE" M;&]C:SH@#0H)"0D)"0D)"5LZ84-O;6UA;F11=65R>2!\( T*"0D)"0D)"0E\ M(&UE=&AO9"!\#0H)"0D)"0D)"6%#;VUM86YD475E<GD@<F5C96EV97(Z(&UE M=&AO9'-0<F5S96YT97(N#0H)"0D)"0D)"6UE=&AO9" Z/2!M971H;V1S4')E M<V5N=&5R('-E;&5C=&EO;D]R3FEL+@T*"0D)"0D)"0EA0V]M;6%N9%%U97)Y M(&ES16YA8FQE9#H@*&UE=&AO9"!N;W1.:6P@#0H)"0D)"0D)"0D)"6%N9#H@ M6VUE=&AO9"!M971H;V1#;&%S<R!A;&Q3=7!E<F-L87-S97,@86YY4V%T:7-F M>3H@6SIE86-H('P@96%C:"!N86UE(#T@(U1E<W1#87-E75TI70T*"0D)"0D) M"7)E8V5I=F5R.B!M971H;V1S4')E<V5N=&5R*2DA#0H-"F5N86)L94-(0E)U M;E1E<W1S1FER<W0-"@DB06YS=V5R(&EF(&YE=R!#2$(G<R!S:&]U;&0@:&%V M92!A("=2=6X@5&5S=',G(&-O;6UA;F0@861D960@=&\@=&AE( T*"71O<"!O M9B!T:&5I<B!C;&%S<R!P86YE(&-O;G1E>'0@;65N=2(-"@T*"5YE;F%B;&5# M2$)2=6Y497-T<T9I<G-T(0T*#0IE;F%B;&5#2$)2=6Y497-T<T9I<G-T.B!A M0F]O;&5A;@T*"65N86)L94-(0E)U;E1E<W1S1FER<W0@.CT@84)O;VQE86XA M#0H-"F5N86)L94UE=&AO9%-T97 -"@DB06YS=V5R(&EF(&YE=R!"<F]W<V5R M<R!S:&]U;&0@:&%V92!A("=3=&5P($EN=&\@5&5S=',G(&-O;6UA;F0@861D M960@=&\@=&AE:7(@365T:"6%D9$ET96TZ("A#;VUM86YD M365N=4ET96T@8V]M;6%N9$1E<V-R:7!T:6]N.B H0VQO<V5D0V]M;6%N9$1E M<V-R:7!T:6]N( T*"0D)"0D)"6-O;6UA;F0Z("-S=&5P5&5S= T*"0D)"0D) M"61E<V-R:7!T:6]N.B G4W1E<"!);G1O(%1E<W0G#0H)"0D)"0D)<75E<GE" M;&]C:SH@#0H)"0D)"0D)"5LZ84-O;6UA;F11=65R>2!\( T*"0D)"0D)"0E\ M(&UE=&AO9"!\#0H)"0D)"0D)"6%#;VUM86YD475E<GD@<F5C96EV97(Z(&UE M=&AO9'-0<F5S96YT97(N#0H)"0D)"0D)"6UE=&AO9" Z/2!M971H;V1S4')E M<V5N=&5R('-E;&5C=&EO;D]R3FEL+@T*"0D)"0D)"0EA0V]M;6%N9%%U97)Y M(&ES16YA8FQE9#H@*&UE=&AO9"!N;W1.:6P@#0H)"0D)"0D)"0D)"6%N9#H@ M6VUE=&AO9"!M971H;V1#;&%S<R!A;&Q3=7!E<F-L87-S97,@86YY4V%T:7-F M>3H@6SIE86-H('P@96%C:"!N86UE(#T@(U1E<W1#87-E75TI70T*"0D)"0D) M"7)E8V5I=F5R.B!M971H;V1S4')E<V5N=&5R*2DA#0H-"F5N86)L94-(0E)U M;E1E<W1S1FER<W0-"@DB06YS=V5R(&EF(&YE=R!#2$(G<R!S:&]U;&0@:&%V M92!A("=2=6X@5&5S=',G(&-O;6UA;F0@861D960@=&\@=&AE( T*"71O<"!O M9B!T:&5I<B!C;&%S<R!P86YE(&-O;G1E>'0@;65N=2(-"@T*"5YE;F%B;&5# M2$)2=6Y497-T<T9I<G-T(0T*#0IE;F%B;&5#2$)2=6Y497-T<T9I<G-T.B!A M0F]O;&5A;@T*"65N86)L94-(0E)U;E1E<W1S1FER<W0@.CT@84)O;VQE86XA M#0H-"F5N86)L94UE=&AO9%-T97 -"@DB06YS=V5R(&EF(&YE=R!"<F]W<V5R M<R!S:&]U;&0@:&%V92!A("=3=&5P($EN=&\@5&5S=',G(&-O;6UA;F0@861D M960@=&\@=&AE:7(@365T:"6%D9$ET96TZ("A#;VUM86YD M365N=4ET96T@8V]M;6%N9$1E<V-R:7!T:6]N.B H0VQO<V5D0V]M;6%N9$1E M<V-R:7!T:6]N( T*"0D)"0D)"6-O;6UA;F0Z("-S=&5P5&5S= T*"0D)"0D) M"61E<V-R:7!T:6]N.B G4W1E<"!);G1O(%1E<W0G#0H)"0D)"0D)<75E<GE" M;&]C:SH@#0H)"0D)"0D)"5LZ84-O;6UA;F11=65R>2!\( T*"0D)"0D)"0E\ M(&UE=&AO9"!\#0H)"0D)"0D)"6%#;VUM86YD475E<GD@<F5C96EV97(Z(&UE M=&AO9'-0<F5S96YT97(N#0H)"0D)"0D)"6UE=&AO9" Z/2!M971H;V1S4')E M<V5N=&5R('-E;&5C=&EO;D]R3FEL+@T*"0D)"0D)"0EA0V]M;6%N9%%U97)Y M(&ES16YA8FQE9#H@*&UE=&AO9"!N;W1.:6P@#0H)"0D)"0D)"0D)"6%N9#H@ M6VUE=&AO9"!M971H;V1#;&%S<R!A;&Q3=7!E<F-L87-S97,@86YY4V%T:7-F M>3H@6SIE86-H('P@96%C:"!N86UE(#T@(U1E<W1#87-E75TI70T*"0D)"0D) M"7)E8V5I=F5R.B!M971H;V1S4')E<V5N=&5R*2DA#0H-"F5N86)L94-(0E)U M;E1E<W1S1FER<W0-"@DB06YS=V5R(&EF(&YE=R!#2$(G<R!S:&]U;&0@:&%V M92!A("=2=6X@5&5S=',G(&-O;6UA;F0@861D960@=&\@=&AE( T*"71O<"!O M9B!T:&5I<B!C;&%S<R!P86YE(&-O;G1E>'0@;65N=2(-"@T*"5YE;F%B;&5# M2$)2=6Y497-T<T9I<G-T(0T*#0IE;F%B;&5#2$)2=6Y497-T<T9I<G-T.B!A M0F]O;&5A;@T*"65N86)L94-(0E)U;E1E<W1S1FER<W0@.CT@84)O;VQE86XA M#0H-"F5N86)L94UE=&AO9%-T97 -"@DB06YS=V5R(&EF(&YE=R!"<F]W<V5R M<R!S:&]U;&0@:&%V92!A("=3=&5P($EN=&\@5&5S=',G(&-O;6UA;F0@861D M960@=&\@=&AE:7(@365T: |
In reply to this post by Bill Schwab
Hi Bill,
> ( shell view viewNamed:'classes' ) viewNamed:'classes' > > (perhaps with a #referee send - haven't tried it yet). Is that the intent? I have been playing around with IDE Extensions the past couple of days, and I have ended up with a few methods that look like that :) I have found it a bit cleaner to locate a view by following the presenter chain, and then asking for the view. > break, and debugging something that extends the debugger would be, ummmm, > interesting<g>. It's even fun when it extends the CHB. This was a concern for me. My solution was to add an error handler around the code that accesses the view resource, that prints a notification to the Transcript and aborts the attempt to add the extension. Attached is a package that adds a couple of menu commands for SUnitBrowser. It has helper methods to get the classes/methods and definitions presenters for the SB and CHB. (It will replace the SUnitBrowser>>publishedAspects method when installed. The original is in the package comment) Thoughts and suggestions on making this more robust welcomed! Thanks, Steve begin 666 SUnitBrowserIDEExtension.pac M?"!P86-K86=E('P-"G!A8VMA9V4@.CT@4&%C:V%G92!N86UE.B G4U5N:71" M<F]W<V5R241%17AT96YS:6]N)RX-"G!A8VMA9V4@<&%X5F5R<VEO;CH@,#L- M"@EB87-I8T-O;6UE;G0Z("=356YI=$)R;W=S97(@241%($5X=&5N<VEO;@T* M4W1E=F4@5V%R:6YG(#(P,#(-"CT]/3T]/3T]/3T-"BU!9&1S(&$@(E)U;B!4 M97-T<R(@8V]M;6%N9"!T;R!T:&4@=&]P(&]F('1H92!30B!A;F0@0TA"(&-L M87-S97,@8V]N=&5X="!M96YU+@T*+4%D9',@82 B4W1E<"!497-T(B!C;VUM M86YD('1O('1H92!30B!A;F0@0TA"(&UE=&AO9',@8V]N=&5X="!M96YU+@T* M#0H]/3T]/3T]/3T]#0H-"E1H92!E>'1E;G-I;VYS(&%R92!D:7-A8FQE9"!B M>2!D969A=6QT+@T*5&\@96YA8FQE+"!U<V4@=&AE(%-5;FET0G)O=W-E<B!0 M=6)L:7-H961!<W!E8W0@;W!T:6]N<RX-"D]N8V4@96YA8FQE9"P@=&AE($E$ M12!%>'1E;G-I;VYS('=I;&P@8F4@861D960@=&\@;F5W;'D@;W!E;F5D(%-H M96QL<RX-"@T*/3T]/3T]/3T]/0T*5&AI<R!M971H;V0@=V%S(&]V97)W<FET M=&5N.@T*#0IP=6)L:7-H961!<W!E8W1S#0H)(D%N<W=E<B!A(%-E="!O9B!T M:&4@87-P96-T<R!P=6)L:7-H960@8GD@(&EN<W1A;F-E<R!O9B!T:&4@<F5C M96EV97(B#0H-"@E\(&%S<&5C=',@? T*"6%S<&5C=',@.CT@<W5P97(@<'5B M;&ES:&5D07-P96-T<RX-"@EA<W!E8W1S#0H)"6%D9#H@*$%S<&5C="!B;V]L M96%N.B C<VAO=T%L;"D[#0H)"6%D9#H@*$%S<&5C="!B;V]L96%N.B C<VAO M=U-T871U<T)A8VMG<F]U;F1#;VQO<G,I+@T*#0H)7F%S<&5C=',-"B<N#0H- M"@T*<&%C:V%G92!C;&%S<TYA;65S#0H)861D.B C4U5N:71"<F]W<V5R241% M17AT96YS:6]N.PT*"7EO=7)S96QF+@T*#0IP86-K86=E(&UE=&AO9$YA;65S M#0H)861D.B C365T:&]D0G)O=W-E<B M/B C<W1E<%1E<W0[#0H)861D.B G M4U5N:71"<F]W<V5R(&-L87-S)R M/B C:61E17AT96YS:6]N<SL-"@EA9&0Z M("=356YI=$)R;W=S97(@8VQA<W,G("T^("-P=6)L:7-H961!<W!E8W1S.PT* M"7EO=7)S96QF+@T*#0IP86-K86=E(&)I;F%R>4=L;V)A;$YA;65S.B H4V5T M(&YE=PT*"7EO=7)S96QF*2X-"@T*<&%C:V%G92!G;&]B86Q!;&EA<V5S.B H M4V5T(&YE=PT*"7EO=7)S96QF*2X-"@T*<&%C:V%G92!A;&Q297-O=7)C94YA M;65S.B H4V5T(&YE=PT*"7EO=7)S96QF*2X-"@T*<&%C:V%G92!S9710<F5R M97%U:7-I=&5S.B H261E;G1I='E3970@;F5W#0H)861D.B G+BY<+BY<3V)J M96-T($%R='-<1&]L<&AI;EQ)1$5<0F%S95Q$979E;&]P;65N="!3>7-T96TG M.PT*"6%D9#H@)RXN7"XN7$]B:F5C="!!<G1S7$1O;'!H:6Y<0F%S95Q$;VQP M:&EN)SL-"@EA9&0Z("<N+EPN+EQ/8FIE8W0@07)T<UQ$;VQP:&EN7$U64%Q" M87-E7$1O;'!H:6X@3590($)A<V4G.PT*"6%D9#H@)RXN7"XN7$]B:F5C="!! M<G1S7$1O;'!H:6Y<241%7%-T86YD87)D($5D:71I;VY<4W1A;F1A<F0@161I M=&EO;B!4;V]L<R<[#0H)861D.B G4U5N:71"<F]W<V5R)SL-"@EY;W5R<V5L M9BDN#0H-"G!A8VMA9V4A#0H-"B)#;&%S<R!$969I;FET:6]N<R(A#0H-"D]B M:F5C="!S=6)C;&%S<SH@(U-5;FET0G)O=W-E<DE$145X=&5N<VEO;@T*"6EN M<W1A;F-E5F%R:6%B;&5.86UE<SH@)R<-"@EC;&%S<U9A<FEA8FQE3F%M97,Z M("<G#0H)<&]O;$1I8W1I;VYA<FEE<SH@)R<-"@EC;&%S<TEN<W1A;F-E5F%R M:6%B;&5.86UE<SH@)V5N86)L94-(0E)U;E1E<W1S1FER<W0@96YA8FQE4T)2 M=6Y497-T<T9I<G-T(&5N86)L94UE=&AO9%-T97 G(0T*#0HB1VQO8F%L($%L M:6%S97,B(0T*#0H-"B),;V]S92!-971H;V1S(B$-"@T*(4UE=&AO9$)R;W=S M97(@;65T:&]D<T9O<B$-"@T*<W1E<%1E<W0-"@DB0W)E871E(&$@5&5S=$-A M<V4@86YD('-T97 @:6YT;R!I="(-"@T*"2-S=6YI=$(N#0H)*'-E;&8@<V5L M96-T:6]N(&UE=&AO9$-L87-S('-E;&5C=&]R.B!S96QF('-E;&5C=&EO;B!S M96QE8W1O<BD@<W1E<"$@(0T*(4UE=&AO9$)R;W=S97(@8V%T96=O<FEE<T9O M<CH@(W-T97!497-T(6-O;6UA;F1S(7!U8FQI8R$@(0T*#0HA4U5N:71"<F]W M<V5R(&-L87-S(&UE=&AO9'-&;W(A#0H-"FED945X=&5N<VEO;G,-"@E>4U5N M:71"<F]W<V5R241%17AT96YS:6]N(0T*#0IP=6)L:7-H961!<W!E8W1S#0H) M(D%N<W=E<B!A(%-E="!O9B!T:&4@87-P96-T<R!P=6)L:7-H960@8GD@(&EN M<W1A;F-E<R!O9B!T:&4@<F5C96EV97(B#0H-"@E\(&%S<&5C=',@? T*"6%S M<&5C=',@.CT@<W5P97(@<'5B;&ES:&5D07-P96-T<RX-"@EA<W!E8W1S#0H) M"6%D9#H@*$%S<&5C="!B;V]L96%N.B C<VAO=T%L;"D[#0H)"6%D9#H@*$%S M<&5C="!B;V]L96%N.B C<VAO=U-T871U<T)A8VMG<F]U;F1#;VQO<G,I.PT* M"0EA9&0Z("A!<W!E8W0@;F%M93H@(VED945X=&5N<VEO;G,I(&)E4F5A9$]N M;'DN#0H)7F%S<&5C=',A("$-"B%356YI=$)R;W=S97(@8VQA<W,@8V%T96=O M<FEE<T9O<CH@(VED945X=&5N<VEO;G,A86-C97-S:6YG(7!U8FQI8R$@(0T* M(5-5;FET0G)O=W-E<B!C;&%S<R!C871E9V]R:65S1F]R.B C<'5B;&ES:&5D M07-P96-T<R%D979E;&]P;65N="%P=6)L:6,A("$-"@T*(D5N9"!O9B!P86-K M86=E(&1E9FEN:71I;VXB(0T*#0HB4V]U<F-E($=L;V)A;',B(0T*#0HB0VQA M<W-E<R(A#0H-"E-5;FET0G)O=W-E<DE$145X=&5N<VEO;B!G=6ED.B H1U5) M1"!F<F]M4W1R:6YG.B G>S@P13=&,T8R+44W13(M-$1%0RTY,S<R+48V1C4P M13="-$%&-GTG*2$-"E-5;FET0G)O=W-E<DE$145X=&5N<VEO;B!C;VUM96YT M.B G)R$-"B%356YI=$)R;W=S97))1$5%>'1E;G-I;VX@8V%T96=O<FEE<T9O M<D-L87-S(4ME<FYE;"U/8FIE8W1S(2 A#0HA4U5N:71"<F]W<V5R241%17AT M96YS:6]N(&-L87-S(&UE=&AO9'-&;W(A#0H-"F%D9%)U;E1E<W1S365N=3H@ M8VQA<W-E<TUE;G4@<')E<V5N=&5R.B!C;&%S<V5S4')E<V5N=&5R#0H)(E1H M92!Q=65R>4)L;V-K(&ES(&$@8W5T(&%N9"!P87-T92!F<F]M($-L87-S4V5L M96-T;W(N#0H)270@=V%S(&YE8V5S<V%R>2!T;R!S970@=&AE(')E8V5I=F5R M(&EN=&\@=&AE(&-O;6UA;F11=65R>2 -"@D)*'=H:6-H(&AA<R!A('-I;6EL M87(@969F96-T('1O("-Q=65R>4-O;6UA;F0@86YS=V5R:6YG('1R=64I(@T* M#0H)?"!M96YU271E;2!\#0H);65N=4ET96T@.CT@0V]M;6%N9$UE;G5)=&5M M(&-O;6UA;F1$97-C<FEP=&EO;CH@*$-L;W-E9$-O;6UA;F1$97-C<FEP=&EO M;B -"@D)"0D)"6-O;6UA;F0Z("-R=6Y497-T<PT*"0D)"0D)9&5S8W)I<'1I M;VXZ("=2=6X@5&5S=',G#0H)"0D)"0EQ=65R>4)L;V-K.B -"@D)"0D)"0E; M.F%#;VUM86YD475E<GD@?" -"@D)"0D)"0EA0V]M;6%N9%%U97)Y(')E8V5I M=F5R.B!C;&%S<V5S4')E<V5N=&5R+@T*"0D)"0D)"6%#;VUM86YD475E<GD@ M#0H)"0D)"0D)"6ES16YA8FQE9#H@*&-L87-S97-0<F5S96YT97(@=&5S=$)R M;W=S97)#;&%S<R!N;W1.:[hidden email] -"@D)"0D)"0D)"0D)6WP@8VQA<W,@ M? T*"0D)"0D)"0D)"0EC;&%S<R Z/2!C;&%S<V5S4')E<V5N=&5R('-E;&5C M=&EO;D]R3FEL+@T*"0D)"0D)"0D)"0EC;&%S<R!N;W1.:[hidden email]!;8VQA M<W,@86QL4W5P97)C;&%S<V5S(&%N>5-A=&ES9GDZ(%LZ96%C:"!\(&5A8V@@ M;F%M92 ]("-497-T0V%S95U=72DN#0H)"0D)"0D)=')U95T-"@D)"0D)"7)E M8V5I=F5R.B!C;&%S<V5S4')E<V5N=&5R*2X-"@EC;&%S<V5S365N=2!I;G-E M<G1)=&5M.B!M96YU271E;2!A=#H@,2$-"@T*861D4W1E<%1E<W1-96YU.B!M M971H;V1S365N=2!P<F5S96YT97(Z(&UE=&AO9'-0<F5S96YT97(-"@EM971H M;V1S365N=0T*"0EA9&1397!A<F%T;W([#0H)"6%D9$ET96TZ("A#;VUM86YD M365N=4ET96T@8V]M;6%N9$1E<V-R:7!T:6]N.B H0VQO<V5D0V]M;6%N9$1E M<V-R:7!T:6]N( T*"0D)"0D)"6-O;6UA;F0Z("-S=&5P5&5S= T*"0D)"0D) M"61E<V-R:7!T:6]N.B G4W1E<"!);G1O(%1E<W0G#0H)"0D)"0D)<75E<GE" M;&]C:SH@#0H)"0D)"0D)"5LZ84-O;6UA;F11=65R>2!\( T*"0D)"0D)"0E\ M(&UE=&AO9"!\#0H)"0D)"0D)"6%#;VUM86YD475E<GD@<F5C96EV97(Z(&UE M=&AO9'-0<F5S96YT97(N#0H)"0D)"0D)"6UE=&AO9" Z/2!M971H;V1S4')E M<V5N=&5R('-E;&5C=&EO;D]R3FEL+@T*"0D)"0D)"0EA0V]M;6%N9%%U97)Y M(&ES16YA8FQE9#H@*&UE=&AO9"!N;W1.:6P@#0H)"0D)"0D)"0D)"6%N9#H@ M6VUE=&AO9"!M971H;V1#;&%S<R!A;&Q3=7!E<F-L87-S97,@86YY4V%T:7-F M>3H@6SIE86-H('P@96%C:"!N86UE(#T@(U1E<W1#87-E75TI70T*"0D)"0D) M"7)E8V5I=F5R.B!M971H;V1S4')E<V5N=&5R*2DA#0H-"F5N86)L94-(0E)U M;E1E<W1S1FER<W0-"@DB06YS=V5R(&EF(&YE=R!#2$(G<R!S:&]U;&0@:&%V M92!A("=2=6X@5&5S=',G(&-O;6UA;F0@861D960@=&\@=&AE( T*"71O<"!O M9B!T:&5I<B!C;&%S<R!P86YE(&-O;G1E>'0@;65N=2(-"@T*"5YE;F%B;&5# M2$)2=6Y497-T<T9I<G-T(0T*#0IE;F%B;&5#2$)2=6Y497-T<T9I<G-T.B!A M0F]O;&5A;@T*"65N86)L94-(0E)U;E1E<W1S1FER<W0@.CT@84)O;VQE86XA M#0H-"F5N86)L94UE=&AO9%-T97 -"@DB06YS=V5R(&EF(&YE=R!"<F]W<V5R M<R!S:&]U;&0@:&%V92!A("=3=&5P($EN=&\@5&5S=',G(&-O;6UA;F0@861D M960@=&\@=&AE:7(@365T:&]D($QI<W0@(@T*#0H)7F5N86)L94UE=&AO9%-T M97 A#0H-"F5N86)L94UE=&AO9%-T97 Z(&%";V]L96%N#0H)96YA8FQE365T M:&]D4W1E<" Z/2!A0F]O;&5A;B$-"@T*96YA8FQE4T)2=6Y497-T<T9I<G-T M#0H)(D%N<W=E<B!I9B!N97<@4T(G<R!S:&]U;&0@:&%V92!A("=2=6X@5&5S M=',G(&-O;6UA;F0@861D960@=&\@=&AE( T*"71O<"!O9B!T:&5I<B!C;&%S M<R!P86YE<R!C;VYT97AT(&UE;G5S(@T*#0H)7F5N86)L95-"4G5N5&5S='-& M:7)S="$-"@T*96YA8FQE4T)2=6Y497-T<T9I<G-T.B!A0F]O;&5A;@T*"65N M86)L95-"4G5N5&5S='-&:7)S=" Z/2!A0F]O;&5A;B$-"@T*97AT96YD0TA" M0VQA<W-E<SH@84-L87-S0G)O=W-E<E-H96QL#0H)(D5A<FQY(&]U="!I9B!N M;W1H:6YG('1O(&1O+B!!8F]R="!G<F%C969U;&QY(&]N(&%N(&5R<F]R(&QO M8V%T:6YG('1H92!C;VYT97AT365N=2(-"@T*"7P@;65N=4%R<F%Y('P-"@EE M;F%B;&5#2$)2=6Y497-T<T9I<G-T(&EF1F%L<V4Z(%M>;FEL72X-"@DH;65N M=4%R<F%Y(#H]('-E;&8@9V5T0TA"0VQA<W-E<TUE;G4Z(&%#;&%S<T)R;W=S M97)3:&5L;"D@:7-.:6P@:694<G5E.B!;7FYI;%TN#0H)<V5L9B!A9&12=6Y4 M97-T<TUE;G4Z(&UE;G5!<G)A>2!F:7)S="!P<F5S96YT97(Z(&UE;G5!<G)A M>2!S96-O;F0A#0H-"F5X=&5N9$-(0D1E9FEN:71I;VYS.B!A0G)O=W-E<E-H M96QL#0H)(0T*#0IE>'1E;F1#2$)-971H;V1S.B!A0G)O=W-E<E-H96QL#0H) M(D5A<FQY(&]U="!I9B!N;W1H:6YG('1O(&1O+B!!8F]R="!G<F%C969U;&QY M(&]N(&%N(&5R<F]R(&QO8V%T:6YG('1H92!C;VYT97AT365N=2(-"@T*"7P@ M;65N=4%R<F%Y('P-"@EE;F%B;&5-971H;V13=&5P(&EF1F%L<V4Z(%M>;FEL M72X-"@DH;65N=4%R<F%Y(#H]('-E;&8@9V5T0G)O=W-E<DUE=&AO9'--96YU M.B!A0G)O=W-E<E-H96QL*2!I<TYI;"!I9E1R=64Z(%M>;FEL72X-"@ES96QF M(&%D9%-T97!497-T365N=3H@;65N=4%R<F%Y(&9I<G-T('!R97-E;G1E<CH@ M;65N=4%R<F%Y('-E8V]N9"$-"@T*97AT96YD4T)#;&%S<V5S.B!A4WES=&5M M0G)O=W-E<E-H96QL#0H)(D5A<FQY(&]U="!I9B!N;W1H:6YG('1O(&1O+B!! M8F]R="!G<F%C969U;&QY(&]N(&%N(&5R<F]R(&QO8V%T:6YG('1H92!C;VYT M97AT365N=2(-"@T*"7P@;65N=4%R<F%Y('P-"@EE;F%B;&530E)U;E1E<W1S M1FER<W0@:69&86QS93H@6UYN:6Q=+@T*"2AM96YU07)R87D@.CT@<V5L9B!G M97130D-L87-S97--96YU.B!A4WES=&5M0G)O=W-E<E-H96QL*2!I<TYI;"!I M9E1R=64Z(%M>;FEL72X-"@ES96QF(&%D9%)U;E1E<W1S365N=3H@;65N=4%R M<F%Y(&9I<G-T('!R97-E;G1E<CH@;65N=4%R<F%Y('-E8V]N9"$-"@T*97AT M96YD4T)$969I;FET:6]N<SH@84)R;W=S97)3:&5L; T*"2$-"@T*97AT96YD M4T)-971H;V1S.B!A0G)O=W-E<E-H96QL#0H)(D5A<FQY(&]U="!I9B!N;W1H M:6YG('1O(&1O+B!!8F]R="!G<F%C969U;&QY(&]N(&%N(&5R<F]R(&QO8V%T M:6YG('1H92!C;VYT97AT365N=2(-"@T*"7P@;65N=4%R<F%Y('P-"@EE;F%B M;&5-971H;V13=&5P(&EF1F%L<V4Z(%M>;FEL72X-"@DH;65N=4%R<F%Y(#H] M('-E;&8@9V5T0G)O=W-E<DUE=&AO9'--96YU.B!A0G)O=W-E<E-H96QL*2!I M<TYI;"!I9E1R=64Z(%M>;FEL72X-"@ES96QF(&%D9%-T97!497-T365N=3H@ M;65N=4%R<F%Y(&9I<G-T('!R97-E;G1E<CH@;65N=4%R<F%Y('-E8V]N9"$- M"@T*9V5T0G)O=W-E<D1E9FEN:71I;VYS365N=3H@84)R;W=S97)3:&5L; T* M"2)!;G-W97(@86X@87)R87D@=VET:"!T:&4@)V1E9FEN:71I;VYS)R @;65N M=2!A;F0@<')E<V5N=&5R+@T*"5=E(&UA:V4@87-S=6UP=&EO;G,@86)O=70@ M=&AE(&QA>6]U="]N86UI;F<@;V8@=&AE('9I97<@<F5S;W5R8V4N( T*"4AA M;F1L92!E<G)O<G,@8GD@('!R:6YT:6YG(&$@;F]T:69I8V%T:6]N('1R86-E M('1O('1H92!4<F%N<V-R:7!T(&%N9"!A;G-W97)I;F<@;FEL+B(-"@T*"7P@ M9&5F:6YI=&EO;E!R97-E;G1E<B!M96YU('P-"@E><V5L9B!H86YD;&5%>&-E M<'1I;VXZ( T*"0D)6V1E9FEN:71I;VY0<F5S96YT97(@.CT@84)R;W=S97)3 M:&5L;"!P<F5S96YT97).86UE9#H@)V1E9FEN:71I;VXG+@T*"0D)*&UE;G4@ M.CT@9&5F:6YI=&EO;E!R97-E;G1E<B!V:65W(&-O;G1E>'1-96YU*2!I<TYI M;" -"@D)"0EI9E1R=64Z(%MS96QF(&5R<F]R.B G0V]U;&0@;F]T(&9I;F0@ M=&AE('=O<FMS<&%C92!C;VYT97AT365N=2==+@T*"0D)07)R87D@=VET:#H@ M;65N=2!W:71H.B!D969I;FET:6]N4')E<V5N=&5R72$-"@T*9V5T0G)O=W-E M<DUE=&AO9'--96YU.B!A0G)O=W-E<E-H96QL#0H)(D%N<W=E<B!A;B!A<G)A M>2!W:71H('1H92 G;65T:&]D<R<@;65N=2!A;F0@<')E<V5N=&5R+@T*"5=E M(&UA:V4@87-S=6UP=&EO;G,@86)O=70@=&AE(&QA>6]U="]N86UI;F<@;V8@ M=&AE('9I97<@<F5S;W5R8V4N( T*"4AA;F1L92!E<G)O<G,@8GD@('!R:6YT M:6YG(&$@;F]T:69I8V%T:6]N('1R86-E('1O('1H92!4<F%N<V-R:7!T(&%N M9"!A;G-W97)I;F<@;FEL+B(-"@T*"7P@;65N=2!M971H;V1S4')E<V5N=&5R M('P-"@E><V5L9B!H86YD;&5%>&-E<'1I;VXZ( T*"0D)6VUE=&AO9'-0<F5S M96YT97(@.CT@84)R;W=S97)3:&5L;"!P<F5S96YT97).86UE9#H@)VUE=&AO M9$)R;W=S97(G+@T*"0D)*&UE;G4@.CT@*&UE=&AO9'-0<F5S96YT97(@<')E M<V5N=&5R3F%M960Z("=M971H;V1S)RD@=FEE=R!C;VYT97AT365N=2D@:7-. M:6P@#0H)"0D):694<G5E.B!;<V5L9B!E<G)O<CH@)T-O=6QD(&YO="!F:6YD M('1H92!M971H;V1S(&-O;G1E>'1-96YU)UTN#0H)"0E!<G)A>2!W:71H.B!M M96YU('=I=&@Z(&UE=&AO9'-0<F5S96YT97)=(0T*#0IG971#2$)#;&%S<V5S M365N=3H@84-L87-S0G)O=W-E<E-H96QL#0H)(D%N<W=E<B!A;B!A<G)A>2!W M:71H('1H92 G8VQA<W-E<R<@;65N=2!A;F0@<')E<V5N=&5R+@T*"5=E(&UA M:V4@;F%S='D@87-S=6UP=&EO;G,@86)O=70@=&AE(&QA>6]U="]N86UI;F<@ M;V8@=&AE('9I97<@<F5S;W5R8V4N( T*"4AA;F1L92!E<G)O<G,@8GD@('!R M:6YT:6YG(&$@;F]T:69I8V%T:6]N('1R86-E('1O('1H92!4<F%N<V-R:7!T M(&%N9"!A;G-W97)I;F<@;FEL(@T*#0H)?"!C;&%S<V5S4')E<V5N=&5R(&-L M87-S97-6:65W(&UE;G4@? T*"5YS96QF(&AA;F1L945X8V5P=&EO;CH@#0H) M"0E;8VQA<W-E<U!R97-E;G1E<B Z/2!A0VQA<W-"<F]W<V5R4VAE;&P@<')E M<V5N=&5R3F%M960Z("=C;&%S<V5S)RX-"@D)"2AM96YU(#H]("AC;&%S<V5S M4')E<V5N=&5R('!R97-E;G1E<DYA;65D.B G8VQA<W-E<R<I('9I97<@8V]N M=&5X=$UE;G4I(&ES3FEL( T*"0D)"6EF5')U93H@6W-E;&8@97)R;W(Z("=# M;W5L9"!N;W0@9FEN9"!T:&4@8VQA<W-E<R!C;VYT97AT365N=2==+@T*"0D) M07)R87D@=VET:#H@;65N=2!W:71H.B!C;&%S<V5S4')E<V5N=&5R72$-"@T* M9V5T4T)#;&%S<V5S365N=3H@85-Y<W1E;4)R;W=S97)3:&5L; T*"2)!;G-W M97(@86X@87)R87D@=VET:"!T:&4@)V-L87-S97,G(&UE;G4@86YD('!R97-E M;G1E<BP-"@E792!M86ME(&YA<W1Y(&%S<W5M<'1I;VYS(&%B;W5T('1H92!L M87EO=70O;F%M:6YG(&]F('1H92!V:65W(')E<V]U<F-E+B -"@E(86YD;&4@ M97)R;W)S(&)Y("!P<FEN=&EN9R!A(&YO=&EF:6-A=&EO;B!T<F%C92!T;R!T M:&4@5')A;G-C<FEP="!A;F0@86YS=V5R:6YG(&YI;"X-"@E.;W1E.B!T;W5G M:&5R('1O(&QO8V%T92!I;B!T:&4@4T(L(%1H92!C;VYT97AT365N=2!B96QO M;F=S('1O(&%N('5N;F%M960@0V%R9$-O;G1A:6YE<B(-"@T*"7P@8VQA<W-E M<U!R97-E;G1E<B!C;&%S<V5S5FEE=R!M96YU('P-"@E><V5L9B!H86YD;&5% M>&-E<'1I;VXZ( T*"0D)6V-L87-S97-0<F5S96YT97(@.CT@85-Y<W1E;4)R M;W=S97)3:&5L;"!P<F5S96YT97).86UE9#H@)V-L87-S97,G+@T*"0D)8VQA M<W-E<U9I97<@.CT@8VQA<W-E;F0Z("-O;D-(0D]P96YE M9#H-"@D)=&\Z('-E;&8N#0H)4WES=&5M0G)O=W-E<E-H96QL( T*"0EW:&5N M.B C=FEE=T]P96YE9#H-"@D)<V5N9#H@(V]N4T)/<&5N960Z#0H)"71O.B!S M96QF+@T*"65N86)L94-(0E)U;E1E<W1S1FER<W0@.CT@9F%L<V4N#0H)96YA M8FQE4T)2=6Y497-T<T9I<G-T(#H](&9A;'-E+@T*"65N86)L94UE=&AO9%-T M97 @.CT@9F%L<V4A#0H-"F]N0TA"3W!E;F5D.B!A0VQA<W-"<F]W<V5R4VAE M;&P-"@ES96QF#0H)"65X=&5N9$-(0D-L87-S97,Z(&%#;&%S<T)R;W=S97)3 M:&5L;#L-"@D)97AT96YD0TA"365T:&]D<SH@84-L87-S0G)O=W-E<E-H96QL M.PT*"0EE>'1E;F1#2$)$969I;FET:6]N<SH@84-L87-S0G)O=W-E<E-H96QL M(0T*#0IO;E-"3W!E;F5D.B!A4WES=&5M0G)O=W-E<E-H96QL#0H)<V5L9@T* M"0EE>'1E;F130D-L87-S97,Z(&%3>7-T96U"<F]W<V5R4VAE;&P[#0H)"65X M=&5N9%-"365T:&]D<SH@85-Y<W1E;4)R;W=S97)3:&5L;#L-"@D)97AT96YD M4T)$969I;FET:6]N<SH@85-Y<W1E;4)R;W=S97)3:&5L;"$-"@T*<'5B;&ES M:&5D07-P96-T<PT*"2)!;G-W97(@82 \3&]O:W5P5&%B;&4^(&]F('1H92 \ M07-P96-T/G,@<'5B;&ES:&5D(&)Y('1H92!R96-E:79E<BXB#0H-"@E>*'-U M<&5R('!U8FQI<VAE9$%S<&5C=',I#0H)"6%D9#H@*$%S<&5C="!B;V]L96%N M.B C96YA8FQE0TA"4G5N5&5S='-&:7)S="D[#0H)"6%D9#H@*$%S<&5C="!B M;V]L96%N.B C96YA8FQE4T)2=6Y497-T<T9I<G-T*3L-"@D)861D.B H07-P M96-T(&)O;VQE86XZ("-E;F%B;&5-971H;V13=&5P*3L-"@D)>6]U<G-E;&8A M#0H-"G5N:6YI=&EA;&EZ90T@<VEG;F%L.B!S96QF(&YA;64@87-3=')I;F<@+" G(&9A:6QE9#H@ M)R L(&4@9&5S8W)I<'1I;VXN#0H)"0EN:6Q=(0T*#0II;FET:6%L:7IE#0H) M(@T*"0ES96QF(&EN:71I86QI>F4-"@DB#0H-"@E#;&%S<T)R;W=S97)3:&5L M;" -"@D)=VAE;CH@(W9I97=/<&5N960Z#0H)"7-E;F0Z("-O;D-(0D]P96YE M9#H-"@D)=&\Z('-E;&8N#0H)4WES=&5M0G)O=W-E<E-H96QL( T*"0EW:&5N M.B C=FEE=T]P96YE9#H-"@D)<V5N9#H@(V]N4T)/<&5N960Z#0H)"71O.B!S M96QF+@T*"65N86)L94-(0E)U;E1E<W1S1FER<W0@.CT@9F%L<V4N#0H)96YA M8FQE4T)2=6Y497-T<T9I<G-T(#H](&9A;'-E+@T*"65N86)L94UE=&AO9%-T M97 @.CT@9F%L<V4A#0H-"F]N0TA"3W!E;F5D.B!A0VQA<W-"<F]W<V5R4VAE M;&P-"@ES96QF#0H)"65X=&5N9$-(0D-L87-S97,Z(&%#;&%S<T)R;W=S97)3 M:&5L;#L-"@D)97AT96YD0TA"365T:&]D<SH@84-L87-S0G)O=W-E<E-H96QL M.PT*"0EE>'1E;F1#2$)$969I;FET:6]N<SH@84-L87-S0G)O=W-E<E-H96QL M(0T*#0IO;E-"3W!E;F5D.B!A4WES=&5M0G)O=W-E<E-H96QL#0H)<V5L9@T* M"0EE>'1E;F130D-L87-S97,Z(&%3>7-T96U"<F]W<V5R4VAE;&P[#0H)"65X M=&5N9%-"365T:&]D<SH@85-Y<W1E;4)R;W=S97)3:&5L;#L-"@D)97AT96YD M4T)$969I;FET:6]N<SH@85-Y<W1E;4)R;W=S97)3:&5L;"$-"@T*<'5B;&ES M:&5D07-P96-T<PT*"2)!;G-W97(@82 \3&]O:W5P5&%B;&4^(&]F('1H92 \ M07-P96-T/G,@<'5B;&ES:&5D(&)Y('1H92!R96-E:79E<BXB#0H-"@E>*'-U M<&5R('!U8FQI<VAE9$%S<&5C=',I#0H)"6%D9#H@*$%S<&5C="!B;V]L96%N M.B C96YA8FQE0TA"4G5N5&5S='-&:7)S="D[#0H)"6%D9#H@*$%S<&5C="!B M;V]L96%N.B C96YA8FQE4T)2=6Y497-T<T9I<G-T*3L-"@D)861D.B H07-P M96-T(&)O;VQE86XZ("-E;F%B;&5-971H;V13=&5P*3L-"@D)>6]U<G-E;&8A M#0H-"G5N:6YI=&EA;&EZ90T*"2(-"@D)<V5L9B!U;FEN:71I86QI>F4-"@DB M#0H-"@DH07)R87D@=VET:#H@0VQA<W-"<F]W<V5R4VAE;&P@=VET:#H@4WES M=&5M0G)O=W-E<E-H96QL*2 -"@D)9&\Z(%LZ96%C:"!\(&5A8V@@<F5M;W9E M179E;G1S5')I9V=E<F5D1F]R.B!S96QF72$@(0T*(5-5;FET0G)O=W-E<DE$ M145X=&5N<VEO;B!C;&%S<R!C871E9V]R:65S1F]R.B C861D4G5N5&5S='-- M96YU.G!R97-E;G1E<CHA;65N=7,A<')I=F%T92$@(0T*(5-5;FET0G)O=W-E M<DE$145X=&5N<VEO;B!C;&%S<R!C871E9V]R:65S1F]R.B C861D4W1E<%1E M<W1-96YU.G!R97-E;G1E<CHA;65N=7,A<')I=F%T92$@(0T*(5-5;FET0G)O M=W-E<DE$145X=&5N<VEO;B!C;&%S<R!C871E9V]R:65S1F]R.B C96YA8FQE M0TA"4G5N5&5S='-&:7)S="%A8V-E<W-I;F<A<'5B;&EC(2 A#0HA4U5N:71" M<F]W<V5R241%17AT96YS:6]N(&-L87-S(&-A=&5G;W)I97-&;W(Z("-E;F%B M;&5#2$)2=6Y497-T<T9I<G-T.B%A8V-E<W-I;F<A<'5B;&EC(2 A#0HA4U5N M:71"<F]W<V5R241%17AT96YS:6]N(&-L87-S(&-A=&5G;W)I97-&;W(Z("-E M;F%B;&5-971H;V13=&5P(6%C8V5S<VEN9R%P=6)L:6,A("$-"B%356YI=$)R M;W=S97))1$5%>'1E;G-I;VX@8VQA<W,@8V%T96=O<FEE<T9O<CH@(V5N86)L M94UE=&AO9%-T97 Z(6%C8V5S<VEN9R%P=6)L:6,A("$-"B%356YI=$)R;W=S M97))1$5%>'1E;G-I;VX@8VQA<W,@8V%T96=O<FEE<T9O<CH@(V5N86)L95-" M4G5N5&5S='-&:7)S="%A8V-E<W-I;F<A<'5B;&EC(2 A#0HA4U5N:71"<F]W M<V5R241%17AT96YS:6]N(&-L87-S(&-A=&5G;W)I97-&;W(Z("-E;F%B;&53 M0E)U;E1E<W1S1FER<W0Z(6%C8V5S<VEN9R%P=6)L:6,A("$-"B%356YI=$)R M;W=S97))1$5%>'1E;G-I;VX@8VQA<W,@8V%T96=O<FEE<T9O<CH@(V5X=&5N M9$-(0D-L87-S97,Z(6UE;G5S(7!R:79A=&4A("$-"B%356YI=$)R;W=S97)) M1$5%>'1E;G-I;VX@8VQA<W,@8V%T96=O<FEE<T9O<CH@(V5X=&5N9$-(0D1E M9FEN:71I;VYS.B%M96YU<R%P<FEV871E(2 A#0HA4U5N:71"<F]W<V5R241% M17AT96YS:6]N(&-L87-S(&-A=&5G;W)I97-&;W(Z("-E>'1E;F1#2$)-971H M;V1S.B%M96YU<R%P<FEV871E(2 A#0HA4U5N:71"<F]W<V5R241%17AT96YS M:6]N(&-L87-S(&-A=&5G;W)I97-&;W(Z("-E>'1E;F130D-L87-S97,Z(6UE M;G5S(7!R:79A=&4A("$-"B%356YI=$)R;W=S97))1$5%>'1E;G-I;VX@8VQA M<W,@8V%T96=O<FEE<T9O<CH@(V5X=&5N9%-"1&5F:6YI=&EO;G,Z(6UE;G5S M(7!R:79A=&4A("$-"B%356YI=$)R;W=S97))1$5%>'1E;G-I;VX@8VQA<W,@ M8V%T96=O<FEE<T9O<CH@(V5X=&5N9%-"365T:&]D<SHA;65N=7,A<')I=F%T M92$@(0T*(5-5;FET0G)O=W-E<DE$145X=&5N<VEO;B!C;&%S<R!C871E9V]R M:65S1F]R.B C9V5T0G)O=W-E<D1E9FEN:71I;VYS365N=3HA:&5L<&5R<R%P M<FEV871E(2 A#0HA4U5N:71"<F]W<V5R241%17AT96YS:6]N(&-L87-S(&-A M=&5G;W)I97-&;W(Z("-G971"<F]W<V5R365T:&]D<TUE;G4Z(6AE;'!E<G,A M<')I=F%T92$@(0T*(5-5;FET0G)O=W-E<DE$145X=&5N<VEO;B!C;&%S<R!C M871E9V]R:65S1F]R.B C9V5T0TA"0VQA<W-E<TUE;G4Z(6AE;'!E<G,A<')I M=F%T92$@(0T*(5-5;FET0G)O=W-E<DE$145X=&5N<VEO;B!C;&%S<R!C871E M9V]R:65S1F]R.B C9V5T4T)#;&%S<V5S365N=3HA:&5L<&5R<R%P<FEV871E M(2 A#0HA4U5N:71"<F]W<V5R241%17AT96YS:6]N(&-L87-S(&-A=&5G;W)I M97-&;W(Z("-G9717;W)K<W!A8V5-96YU.B%H96QP97)S(7!R:79A=&4A("$- M"B%356YI=$)R;W=S97))1$5%>'1E;G-I;VX@8VQA<W,@8V%T96=O<FEE<T9O M<CH@(VAA;F1L945X8V5P=&EO;CHA:&5L<&5R<R%P<FEV871E(2 A#0HA4U5N M:71"<F]W<V5R241%17AT96YS:6]N(&-L87-S(&-A=&5G;W)I97-&;W(Z("-I M;FET:6%L:7IE(6EN:71I86QI>FEN9R%P=6)L:6,A("$-"B%356YI=$)R;W=S M97))1$5%>'1E;G-I;VX@8VQA<W,@8V%T96=O<FEE<T9O<CH@(V]N0TA"3W!E M;F5D.B%E=F5N="!H86YD;&EN9R%P=6)L:6,A("$-"B%356YI=$)R;W=S97)) M1$5%>'1E;G-I;VX@8VQA<W,@8V%T96=O<FEE<T9O<CH@(V]N4T)/<&5N960Z M(65V96YT(&AA;F1L:6YG(7!U8FQI8R$@(0T*(5-5;FET0G)O=W-E<DE$145X M=&5N<VEO;B!C;&%S<R!C871E9V]R:65S1F]R.B C<'5B;&ES:&5D07-P96-T M<R%D979E;&]P;65N="%P=6)L:6,A("$-"B%356YI=$)R;W=S97))1$5%>'1E M;G-I;VX@8VQA<W,@8V%T96=O<FEE<T9O<CH@(W5N:6YI=&EA;&EZ92%I;FET M:6%L:7II;F<A<'5B;&EC(2 A#0H-"B)":6YA<GD@1VQO8F%L<R(A#0H-"B)2 .97-O=7)C97,B(0T*#0H` ` end |
In reply to this post by Steve Alan Waring
Apologies for the double post.
The package attached to the message I am replying to, was corrupted on upload and truncated to 5kb. The valid package is an attachment of 13.2kb. Thanks, Steve |
In reply to this post by Steve Alan Waring
Steve,
FYI That package seems to be corrupted as well. It looks like a couple of areas within the file have got transposed somehow. We have seen this sort of thing affecting pac files in the past (not recently though I must admit) and found that zipping them first is the best way. Note: I'm making the unwarranted assumption that it's not something wrong my end and that others get the same.... Ian |
In reply to this post by Bill Schwab
Bill,
> Also, I'm starting to wonder whether extensions should be enabled by class > initialization as implied by your sample. It would be very easy for one to > break, and debugging something that extends the debugger would be, ummmm, > interesting<g>. It's even fun when it extends the CHB. Whatever you do you are going to open yourself to nasty problems when testing an extension to the browser that is used to write the extension IYSWIM. Other than foresight, saving your edited additions whenever you can - just in case, I can't see a way of getting round it. FWIW, I tend, while I'm writing/integrating extensions, to manually do the initialization rather than letting the package load do it. If you always know the package will load, rather than bombing out on installation, then you are half way there. > One solution might be to have all extensions started by something like > #activateExtension which could be tried after making a backup of a newly > built image. Comments? I'm not sure a generic on/off switch for extensions is needed. I've always tried to work on the basis that if an extension is not needed then the package it comes in should be uninstalled. As it stands it's easy enough to add a switch, in the extension method that is evoked when the Shell shows, and is controlled by an aspect in the main class (as, I think, Steve's example shows). It would just seem to add a bit of unneeded complexity to me. Ian |
In reply to this post by Ian Bartholomew-3
Hi Ian,
> FYI That package seems to be corrupted as well. It looks like a couple of > areas within the file have got transposed somehow. Thanks, I did not have a very healthy connection yesterday! Fingers crossed it makes it through this time. Steve begin 666 SUnitBrowserIDEExtension.zip M4$L#!!0````(`"9DF"SSO?#-H0H``($R```<````4U5N:71"<F]W<V5R241% M17AT96YS:6]N+G!A8^U:;6\;N1'^; /^#Y3S82T@5M/<]=+*EP"V+-\9C6,W MZTL^) Y :2F)]6JI(W>MJ'7_>V?XLLM]LW2)?"]H#<->D3/#X<PSP^&L[LF" MCF_IE)'[O5WWV'])KNQC0N>L3X+PIX2G)U(L%9/GI\/AYY0EBHLDZ!5<"_KY M'9,XVB?/CO9V=T94\?% S.<L22LR" @AN92]W3!E=XR\IY(G4_+\V;/G>[LO M\Y^]W</C*%*$DOVW64*NF4K5/AF#8)I$)!4DG3'XMR!BHA_#$X(3@Q]/R#BF M2C$%Q$G*/J<$5,EZGCQ8=Z$%UN1Y0N8LG8FH)J2LXM[N-7 QMR60+AF)N**C MF$5DM"(1F] L3H'Q6A"6X/A3DBEF5O-M<Y6-8JYF+#I6"S9.B5BD*!$X+Y,Q ML[S14\U8LJ,B2Q['9,0(C2*FMY*P9;P""2R!S^&,Q;&JJ7X]X\INDBRI(N*. MR:7D*4CM(^VBK(\"U^X?)VH)JE(2LM39G9IIDM/CM@E/5$I!;^7()!LS#DOL MH^R=^YP-`+CCG@&!*EO `M6U>P41/.W /OODP-II)$3,**#OB9J)Y7$<=X_6 MT(0I33-U`@">2I$ET4#$0JJNMM#.IWR=0 \42->H>@.1@3IH\4_:`@0U6(E, M*A9/>KX,8^^RD L]YF!P^ J4!'PB/(\<33F*M"*!IN01*W"PGKQJUU8]1SRA M<O5#+$8TUMJ"+='G`"R/I5OBF6KJXYA3M1$]C>.W3,'4F&VZA&+IE622_9QQ MQ5/-<AY!GN'IJF U)NCU/L+OY>B?Z/]CF:J/IR)>S'CR$1SU\01T_'@*V2<6 M"TQ4)%R!T>?!T0;\AM=\V(CAXMU5B8G `,&!C;A174!L$E$9D6'$,2O4!L@U M(%P%S0@(CMH,VL'G_0$"A)RR"4^T,+6OQZTR*AMI!#T`=Q#OXOT=)'-,5-:C M00!SFKUI8@%*G_(QK@FS9?KS%H$F#T*"AD-!GPEG7*K4IL>P<=0$&";]P&S8 MX)I8J)K=PO!K(2 Q&VH[VBD'IST3SH34LRY.,34.)*,I@%J?*P.0JP\2I(!< M""F9IR;S/5$9&A$SV@'Z`S =,VT"*]UXPXP*V2<5(C?1U;([I%-3<@QZ3 7: M\PSY\VS2L6>=ZN@T,-:\P%U/%M5]EK(,YL@V('3^)P^..INIG\K9N0LG]%M& MH\LD7O6\@\:XL,$)53^6I'7H&&RDH'#RO;F)F*J).E&1!LO(V!\"@L$++OM& M>88PP;$?ZN1-3#C9B#'9Q$55&U#(-.-HKQ]^.C\E$RGF88I%(,3WO__Z;/CB M[)NSYX?#%\/GA]^>#@>'?_OFQ?/#L^_._@)3)]\>GWWWGZ#;>4#X.*\^@ZI1 MRG2^:;3>G;\SF;#XT.2^!M^4^9N"!8#@DM %E(Q]5XWB![*03(%F3.;#5VX$ MPP2+R9\S)E<GL1C?$H[5ZCA+=2I94 AD;2NB50UM(D LG:>ZA$L88@(.;JP! MX:PLQ8])0SAB\\ _<"&"V#U8SOAX1F84UU-\SF,J"9M,$,K \T2K-+"5,M6A MC!5[*C/6=6&)Y?$Y'*$Z+O,/$)B6[\(-V=5/F1I+KFM<P,$@AM0;#6I36CW\ ML5R 7VF-ZV8B7U"07Q4"-U_8LY]+V_G0IP/?"O?%5'G"6:_NKUX+1SZ\P]70 M%.VPP2HW@>K%8<ID_$2D;WA,]"8+&:CKO07:?6G8C(&!:Z+SP^)2@L1>`Y>_ MU@<S!-58B"G4W9UHL@IIRM5D!21]1@$?]T3_P^1&7I(G[J"[N;GI%HL@*&[< MIW;K:0X_,B#O,YDB0OH%EBC$\)]=5(7V'#-19:.N&E5VV(\JC](FZI MJ*00 M.RYSFV4/M@-5#ZM>@6!^RF#5]]!S#$LDRA';#-F',*OC3]_D/(RT`;EJ(@\@ M5@B JDK4#JKR,C[FK30+MA(,#?(L@5_W? T,NSGN=MIWV^UJ/#67D7M%J<(G M>)W 3D `U=A,9'$$"?(.*SPOR>3]@_SJC0D6Q!2-">X.X@5-6*F;8%+GIV95 M'M"R3^B)J4N O:4>!A<Z(D]240G7=VJ346VS99"V;!DV:623UQQ6+^VL6+11 MDX;=%),M^PC7N2W<JM?*32!5VEW8ZK9PK=>JUY7:9K'2B,"WMJ8"$?K)NDHW M=G#O0RJQW0.%`FY?I#-].@L2B1XY'@F9DJFD8S;)8B1+(*@(DU)(`BD&@@N) M9SDT+W)DFD/]6$JZTGFE!6I\<@;5']2['SXE/+[1-YN"$4MSO,%,65ILQ*3P M^F:ZD#\P5_#)-1PCOD0MHU9:%<M,M"JE@\!-*08[B\H&]2Z[Z)>R/<ND]CY8 M)_MUS>[%Q,8&MPI?% =@91?K[5T]=+_$WJ&'7]-G^4TM68VZC<T95N!;W\NO M@]]P8_B&_T?O5Z"WT,&S=X,>WO$#1J):S)*G,VV@H+@UP\&C%S+7.;_\>L_( MG-YB2T1E<]/W)W2$OD$1,5W!XY^@X$&KV[;('8=C3MK^:0\/KQ]!;,R,DY3N MI2S@FJ8]1='!?,+1<>#*%!WKCKUK"3<Z7922\O4.C-ES/BTV452$>BOHXD_: MW#.]_/#SF-GR=@^+L0]-G/J<\PQ8& .[?-B^++@"4VIJB"!CDSQM"P^)#AB: M<R>'AU93FP=6&.C:`,P"8,#W/V")I9"W:H&F\60%-T:!X]RM!BWVL4&=FPIX MV@'\,'!LY1K\43&CU:[=(]8"IL:Q'BUSO_]9!<Q!36 +OPJZVT*2%?@+<%15 M,@?1^J+I8139B]0Z%"54I:O?'98<E&HM#COP#I78+ _51""L:K:L8\/9KXJJ MFKQ6SJVARMV)-T=55<D<5>M+F2]&U=/?/:K09&]$"B9/13:=83-.F*J&$9YH M]O#D*;DNES=DQ&*13!42@T6R!!L0$1E0&0V BO*D>$?Q6'BMNVD=8/V%FWJ% MVN#X9PW>?3EC?-6%)QZ5(.3=UX/;`;MDRVW _+T[T2W,\\\;0#RO!OZX5=O2 M<_1FJ%M6`%<V6!ULA9$J>%E6,?;;E&?+*BAJ^Z:ZSXIV,4\$!X>H!<J-A+-, MG[F&ZQO?*8I/$QK;M[2Z)4F5>9=%GI* 3"C7O= `/N$+M+S[:[3&^XIYPXHU M)(WYOQB"$N>TP.HP_*T?64B]G#%\28F6OM3?^ND;&;H++1(H(KSA5!A]48>& MC+*!O+!-7'LW<H*7OH*DH?55H2@W`?6D-I6_F^9J")5!Q39IGQV5"(O;\AK" M\@6\1FP5#0L]&P_8LJ(/MTF.?,)"SS6$93WKQ%K1!U_8?_]:B-ML<8TN>>72 MV/>&\E7EY3U.N<Z[34*?#II?S'=1RY97[<T@>O#M?".H-N H0&:(W;=DM%VR MI"4LZQ/P]\!/0?4H->--+:,]FV?*KS<DFXL[-KR#W*6N)9].F631F?M"R,U& M;Z:KK_ZK_:<\G?<[F#-5!XZ>.^#Y4N&E=LM6A;>\(UG_)8@OEMW?IG#O%<BC M2-VJLM4W&H\G>EMJ5_/\-@#7E.FW*=>E\*W)#+>__?!Q=A]N<_/M3=H.I%<X M>K8EWF_C;4MTI;FS+;'AHT@M7Z:V(K5:C6]%:'$V=_+'K\PP?LW987@FFPO4 M5XL-'T'JIE_P^Z5R_:JGU;)[N_LG^KOCE6\%OK5W7OOYOU!+`0(4`!0````( M`"9DF"SSO?#-H0H``($R```<``````````$`( "V@0````!356YI=$)R;W=S H97))1$5%>'1E;G-I;VXN<&%C4$L%!@`````!``$`2@```-L*```````` ` end |
In reply to this post by Ian Bartholomew-3
Hi Ian and Bill,
> > One solution might be to have all extensions started by something like > > #activateExtension which could be tried after making a backup of a newly > > built image. Comments? > > I'm not sure a generic on/off switch for extensions is needed. I've always > tried to work on the basis that if an extension is not needed then the > package it comes in should be uninstalled. As it stands it's easy enough to > add a switch, in the extension method that is evoked when the Shell shows, > and is controlled by an aspect in the main class (as, I think, Steve's > example shows). > Yes, in the SUnitBrowser example I used aspect switches to control whether the extensions were made, but in my personal extension classes, I am planning to use Ian's technique of installing/uninstalling as needed. As I see it, the danger time is not when the class is initialized, but the first time a browser is opened after the events have been registered. One extension could interfere with another, or the image could be configured to use a non-default resource. The approach I took was to expect problems during the handling of #viewOpened: events, and to handle a problem by aborting the extension. Thanks, Steve |
Free forum by Nabble | Edit this page |