0
play

!"#$%&'&()*+,-&./)&0*./& - PowerPoint PPT Presentation

!"#$%&'&()*+,-&./)&0*./& !"#$#%&'()*+,#-.'/0123%#&'4565' 1/2.&23+4.&5)&6& & ! 7+"28+%'4-*93&#*&'3%'&9#':+;2"/-'/%;':+<3"#'!!' ! 4=/*9#'7+>?/-#'@+2%;/8+%' A


  1. 0+-492:$.*& 1/2.6& ! 7#=/-/8+%'+I'*+%*#-%)' ! 7&-2*&2-#' ! (%*/=)2"/8+%' ! @+*2)#)'+%' A !+9#)3+%'X"+?'3)'</;.'93L9'3)'L++;Y' A !+2="3%L'X"+?'3)'L++;.'93L9'3)'</;Y' 1/*6& ! V%;#=#%;#%&';#J#"+=$#%&' ! V%;#=#%;#%&'$/3%&#%/%*#'/%;'#J+"28+%' ! V$=-+J#'-#2)/<3"3&Q' D763'P'O#Q+%;'&9#':Q&9' HZ'

  2. !"#$&(4,-9)& D&34,-9)&$<&2&5+-49)&$,&!"#$&.):5$,+9+A*& D&34,-9)&$<&2&UDd&_9)&?+,.2$,$,A& ! !+;#' ! \#)+2-*#)' ! :#&/;/&/' E'(11#Z'&1# Module )&1.,)E&#Z'&1# +=0!# 7P-N# A+7# ;&$(J($(# D763'P'O#Q+%;'&9#':Q&9' H]'

  3. =+-)&W$<$3$9$.*&0).2-2.2& D&34,-9)&$<&2&UDd&_9)&?+,.2$,$,A&?+-)& ! G9/&'*+;#'3%'&9#'E4\'`"#'3)'J3)3<"#'&+'+&9#-'*+;#'3%'&9#'E4\'`"#j' ! G9/&'*+;#'3%'&9#'E4\'`"#'3)'J3)3<"#'&+'*+;#'+2&)3;#'&9#'E4\'`"#j' ! G9/&'*+;#'+2&)3;#'&9#'E4\'`"#'3)'J3)3<"#'&+'*+;#'3%)3;#'&9#'E4\'`"#j' e,9$7)&<.2,-2:-&UDd&_9)<E&!"#$&5).2-2.2&)\>9$?$.9*&2,<S):<&299&+@&./)<)& 84)<;+,<& D763'P'O#Q+%;'&9#':Q&9' H^'

  4. O,.):,29&=+-)&W$<$3$9$.*& O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' D763'P'O#Q+%;'&9#':Q&9' Hb'

  5. O,.):,29&=+-)&W$<$3$9$.*& O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&(4,-9)c=92<<F2./& ! !+$$/K;#"3$3&#;'"3)&'3%;3*/8%L'?9#-#'&+')#/-*9'3%'&9#'E4\'`"#'?9#%'"++03%L' I+-'*"/))#)' D763'P'O#Q+%;'&9#':Q&9' Hd'

  6. O,.):,29&=+-)&W$<$3$9$.*& O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&(4,-9)c=92<<F2./& ! !+$$/K;#"3$3&#;'"3)&'3%;3*/8%L'?9#-#'&+')#/-*9'3%'&9#'E4\'`"#'?9#%'"++03%L' I+-'*"/))#)' B+&A).&<.2,-2:-&UDd&3)/2Q$+:& ! O2%;"#K!"/))B/&9P'5' D763'P'O#Q+%;'&9#':Q&9' He'

  7. O,.):,29&=+-)&W$<$3$9$.*& O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&(4,-9)c=92<<F2./& ! !+$$/K;#"3$3&#;'"3)&'3%;3*/8%L'?9#-#'&+')#/-*9'3%'&9#'E4\'`"#'?9#%'"++03%L' I+-'*"/))#)' B+&A).&<.2,-2:-&UDd&3)/2Q$+:& ! O2%;"#K!"/))B/&9P'5' 02*&29<+&$,?94-)&)53)--)-&UDd<&2,-&-$:)?.+:$)<& P\25>9)<& ! O2%;"#K!"/))B/&9P'"3<[I++5F/-.*"/))#)[' ! O2%;"#K!"/))B/&9P'"3<[I++5F/-.5' D763'P'O#Q+%;'&9#':Q&9' Rh'

  8. P\>+<$,A&O,.):,29&=+-)&`KaIb& ".2,-2:-&UDd&_9)<&)\>+<)&299&$,.):,29&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' D763'P'O#Q+%;'&9#':Q&9' Rg'

  9. P\>+<$,A&O,.):,29&=+-)&`KaIb& ".2,-2:-&UDd&_9)<&)\>+<)&299&$,.):,29&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&P\>+:.cF2?72A)& ! T3)&'+I'=/*0/L#)'I-+$'&9#'<2%;"#'*"/))'=/&9'&+'#C=+)#' ! N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-' 1/*&-+&./$<6& D763'P'O#Q+%;'&9#':Q&9' RH'

  10. P\>+<$,A&O,.):,29&=+-)&`KaIb& ".2,-2:-&UDd&_9)<&)\>+<)&299&$,.):,29&:++.c:)92;Q)&>2?72A)<& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&P\>+:.cF2?72A)& ! T3)&'+I'=/*0/L#)'I-+$'&9#'<2%;"#'*"/))'=/&9'&+'#C=+)#' ! N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-' 1/*&-+&./$<6& ! V&')#=/-/&#)'3%&#-%/"'J3)3<3"3&Q'I-+$'#C&#-%/"'J3)3<3"3&Q' ! V%'+&9#-'?+-;).'3&'/""+?)'<2%;"#)'&+'9/J#'=-3J/&#'*+%&#%&' D763'P'O#Q+%;'&9#':Q&9' RR'

  11. D??)<<$,A&P\.):,29&=+-)&`KaIb& ".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./& ! _+&'&9#'*/)#'?3&9'<2%;"#)' D763'P'O#Q+%;'&9#':Q&9' RZ'

  12. D??)<<$,A&P\.):,29&=+-)&`KaIb& ".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&O5>+:.cF2?72A)& ! T3)&'+I'=/*0/L#)'%##;#;'I-+$'+&9#-'<2%;"#)' ! N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-' D763'P'O#Q+%;'&9#':Q&9' R]'

  13. D??)<<$,A&P\.):,29&=+-)&`KaIb& ".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&O5>+:.cF2?72A)& ! T3)&'+I'=/*0/L#)'%##;#;'I-+$'+&9#-'<2%;"#)' ! N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-' (4,-9)<&54<.&$5>+:.&)Q):*&,))-)-&>2?72A)&,+.&?+,.2$,)-&$,&./)&34,-9)&$.<)9@E& )\?)>.&G2Q2fg& 1/*&-+&./$<6& D763'P'O#Q+%;'&9#':Q&9' R^'

  14. D??)<<$,A&P\.):,29&=+-)&`KaIb& ".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./& ! _+&'&9#'*/)#'?3&9'<2%;"#)' (4,-9)<&54<.&<>)?$@*&O5>+:.cF2?72A)& ! T3)&'+I'=/*0/L#)'%##;#;'I-+$'+&9#-'<2%;"#)' ! N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-' (4,-9)<&54<.&$5>+:.&)Q):*&,))-)-&>2?72A)&,+.&?+,.2$,)-&$,&./)&34,-9)&$.<)9@E& )\?)>.&G2Q2fg& 1/*&-+&./$<6& ! :/0#';#=#%;#%*3#)' )\>9$?$.& ! :/0#';#=#%;#%*3#)' 52,2A)239)& D763'P'O#Q+%;'&9#':Q&9' Rb'

  15. O5>+:;,A&h&P\>+:;,A&2&F2?72A)&`Kaib& O52A$,)&34,-9)&D&<+5)/+S&A).<&<):Q9).&$,<.2,?)<&@:+5&34,-9)&(& B 5;4.)$# K(8(MA1&)8'&$[# &M4.)$# A K(8(MA1&)8'&$[# H"&#E.4F#.D# K(8(MA1&)8'&$A-&)8'&$# D763'P'O#Q+%;'&9#':Q&9' Rd'

  16. O5>+:;,A&h&P\>+:;,A&2&F2?72A)&`Kaib& 1/2.&$@&34,-9)&D&29<+&S2,.)-&.+&A).&<):Q9).&$,<.2,?)<&<+5)/+S&@:+5&34,-9)&=6& B 5;4.)$# K(8(MA1&)8'&$[# &M4.)$# A K(8(MA1&)8'&$[# H"&#E.4F#.D# K(8(MA1&)8'&$A-&)8'&$# D763'P'O#Q+%;'&9#':Q&9' Re'

  17. O5>+:;,A&h&P\>+:;,A&2&F2?72A)&`Iaib& (4,-9)&=&?+49-&$5>+:.&@:+5&34,-9)&(E&34.&./),&$.&$<&-)>),-),.&+,&$.& &M4.)$# B K(8(MA1&)8'&$[# 5;4.)$# K(8(MA1&)8'&$[# A H"&#E.4F#.D# K(8(MA1&)8'&$A-&)8'&$# C 5;4.)$# K(8(MA1&)8'&$[# D763'P'O#Q+%;'&9#':Q&9' Zh'

  18. O5>+:;,A&h&P\>+:;,A&2&F2?72A)&`jaib& (4,-9)&=&?+49-&)\>+:.&$.<&+S,&<):Q9).&>2?72A)E&34.&34,-9)&D&?+49-&+,9*&<))& )$./):&=&+:&(& &M4.)$# C K(8(MA1&)8'&$[# 5;4.)$# K(8(MA1&)8'&$[# :' A &M4.)$# N2.#E.45&1#.D# B K(8(MA1&)8'&$[# K(8(MA1&)8'&$A-&)8'&$# D763'P'O#Q+%;'&9#':Q&9' Zg'

  19. O5>+:;,A&h&P\>+:;,A&2&F2?72A)&`iaib& (4,-9)&=&?+49-&$5>+:.E&?+,.2$,&2,-&)\>+:.&<):Q9).&.+&<+9Q)&./)&-$9)552& PM4.)$#("J#5;4.)$# K(8(MA1&)8'&$[# C PM4.)$#("J#5;4.)$# K(8(MA1&)8'&$[# B 5;4.)$# K(8(MA1&)8'&$[# A D763'P'O#Q+%;'&9#':Q&9' ZH'

  20. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", org.foo.service; version="1.1" Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' ZR'

  21. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Indicates R4 Import-Package: semantics and syntax osgi.service.log; version="[1.0.0,1.1.0)", org.foo.service; version="1.1" Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' ZZ'

  22. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", Indicates R4 org.foo.service; version="1.1" Globally unique ID semantics and syntax Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' Z]'

  23. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", org.foo.service; version="1.1" Internal bundle class path Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' Z^'

  24. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Import of a Bundle-Version: 1.0.0 package version range Bundle-ClassPath: .,org/foo/embedded.jar Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", org.foo.service; version="1.1" Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' Zb'

  25. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Importing an exported Bundle-ClassPath: .,org/foo/embedded.jar package Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", org.foo.service; version="1.1" Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' Zd'

  26. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Exported package with Import-Package: version and arbitrary osgi.service.log; version="[1.0.0,1.1.0)", attribute org.foo.service; version="1.1" Export-Package: org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' Ze'

  27. (4,-9)&02,$@)<.&P\25>9)& Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.foo.simplebundle Bundle-Version: 1.0.0 Bundle-ClassPath: .,org/foo/embedded.jar Import-Package: osgi.service.log; version="[1.0.0,1.1.0)", Provided package with org.foo.service; version="1.1" dependency on exported Export-Package: package org.foo.service; version="1.1"; vendor="org.foo", org.foo.service.bar; version="1.1"; uses:="org.foo.service" D763'P'O#Q+%;'&9#':Q&9' ]h'

  28. !"#$&V)>),-),?*&0+-)9& F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<& ! G9+'J)'?9/&' D763'P'O#Q+%;'&9#':Q&9' ]g'

  29. !"#$&V)>),-),?*&0+-)9& F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<& ! G9+'J)'?9/&' 0+-49)c9)Q)9&-)>),-),?$)<& ! !+/-)#'L-/3%#;' ! 4-#'<-3n"#' ! M3;#'&9#'&-2#';#=#%;#%*3#)' D763'P'O#Q+%;'&9#':Q&9' ]H'

  30. !"#$&V)>),-),?*&0+-)9& F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<& ! G9+'J)'?9/&' 0+-49)c9)Q)9&-)>),-),?$)<& ! !+/-)#'L-/3%#;' ! 4-#'<-3n"#' ! M3;#'&9#'&-2#';#=#%;#%*3#)' F2?72A)c9)Q)9&-)>),-),?$)<& ! @3%#'L-/3%#;' ! @"#C3<"#.'#%/<"#'-#I/*&+-3%L' ! 4-#'&9#'&-2#';#=#%;#%*3#)'X35#5.'&9#Qo-#'3%'&9#'*+;#Y' D763'P'O#Q+%;'&9#':Q&9' ]R'

  31. !"#$&V)>),-),?*&0+-)9& F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<& ! G9+'J)'?9/&' 0+-49)c9)Q)9&-)>),-),?$)<& ! !+/-)#'L-/3%#;' ! 4-#'<-3n"#' ! M3;#'&9#'&-2#';#=#%;#%*3#)' F2?72A)c9)Q)9&-)>),-),?$)<& ! @3%#'L-/3%#;' ! @"#C3<"#.'#%/<"#'-#I/*&+-3%L' ! 4-#'&9#'&-2#';#=#%;#%*3#)'X35#5.'&9#Qo-#'3%'&9#'*+;#Y' F2?72A)c9)Q)9&-)>),-),?$)<&:)84$:)&>2?72A)<&.+&3)&2.+5$?&`$f)fE&$,&2&<$,A9)& 34,-9)b& D763'P'O#Q+%;'&9#':Q&9' ]Z'

  32. V)>),-),?*&d)<+94;+,&`KaIb& D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7& ! (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;' D763'P'O#Q+%;'&9#':Q&9' ]]'

  33. V)>),-),?*&d)<+94;+,&`KaIb& D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7& ! (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;' O,&<$5>9)&.):5<E&:)<+9Q$,A&2&34,-9)&52.?/)<&$.<&$5>+:.)-&>2?72A)<&.+&34,-9)<& >:+Q$-$,A&./)5& & 5;4.)$# & 5;4.)$# K(8(MA1&)8'&$# K(8(MA1&)8'&$A%\4# C A B & &M4.)$# &M4.)$# K(8(MA1&)8'&$A%\4# K(8(MA1&)8'&$# D763'P'O#Q+%;'&9#':Q&9' ]^'

  34. V)>),-),?*&d)<+94;+,&`KaIb& D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7& ! (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;' O,&<$5>9)&.):5<E&:)<+9Q$,A&2&34,-9)&52.?/)<&$.<&$5>+:.)-&>2?72A)<&.+&34,-9)<& >:+Q$-$,A&./)5& & 5;4.)$# & 5;4.)$# K(8(MA1&)8'&$# K(8(MA1&)8'&$A%\4# C A B & &M4.)$# &M4.)$# & K(8(MA1&)8'&$A%\4# K(8(MA1&)8'&$# & ! aQ=3*/""Q.'-#)+"J3%L'/'<2%;"#'?3""'-#)2"&'3%'+&9#-'<2%;"#)'<#3%L'&-/%)38J#"Q' -#)+"J#;' D763'P'O#Q+%;'&9#':Q&9' ]b'

  35. V)>),-),?*&d)<+94;+,&`KaIb& D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7& ! (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;' O,&<$5>9)&.):5<E&:)<+9Q$,A&2&34,-9)&52.?/)<&$.<&$5>+:.)-&>2?72A)<&.+&34,-9)<& >:+Q$-$,A&./)5& & 5;4.)$# 5;4.)$# K(8(MA1&)8'&$# & K(8(MA1&)8'&$A%\4# C A B & &M4.)$# &M4.)$# K(8(MA1&)8'&$A%\4# K(8(MA1&)8'&$# & ! aQ=3*/""Q.'-#)+"J3%L'/'<2%;"#'?3""'-#)2"&'3%'+&9#-'<2%;"#)'<#3%L'&-/%)38J#"Q' -#)+"J#;' ! VI'/'J#-)3+%'+-'/-<3&-/-Q'/n-3<2&#)'/-#')=#*3`#;'+%'3$=+-&).'&9#%'#C=+-&)'$2)&' $/&*9' A :2"8="#'/n-3<2&#)'+%'/%'3$=+-&'/-#'"+L3*/""Q' DMV)-& D763'P'O#Q+%;'&9#':Q&9' ]d'

  36. V)>),-),?*&d)<+94;+,&`IaIb& 049;>9)&52.?/$,A&>:+Q$-):<& & B & &M4.)$# 5;4.)$# & K(8(MA1&)8'&$[# K(8(MA1&)8'&$[# 8&)15."]^GA_A`^# 8&)15."]^GA_A`^# :' A & C & &M4.)$# & K(8(MA1&)8'&$[# 8&)15."]^GAaA`^# & D763'P'O#Q+%;'&9#':Q&9' ]e'

  37. V)>),-),?*&d)<+94;+,&`IaIb& 049;>9)&52.?/$,A&>:+Q$-):<& & B & & &M4.)$# 5;4.)$# K(8(MA1&)8'&$[# K(8(MA1&)8'&$[# & 8&)15."]^GA_A`^# 8&)15."]^GA_A`^# :' A & C & &M4.)$# K(8(MA1&)8'&$[# & 8&)15."]^GAaA`^# ! \#)+"28+%'/"L+-3&9$'+-;#-)'$/&*93%L'=-+J3;#-)' A 4"-#/;Q'-#)+"J#;'=-+J3;#-)'+-;#-#;'<Q';#*-#/)3%L'J#-)3+%' A N%-#)+"J#;'=-+J3;#-)'+-;#-#;'<Q';#*-#/)3%L'J#-)3+%' A VI'J#-)3+%)'/-#'#12/".'$/&*93%L'=-+J3;#-)'/-#'+-;#-#;'</)#;'+%'3%)&/""/8+%'+-;#-' D763'P'O#Q+%;'&9#':Q&9' ^h'

  38. M+,c0+-492:&F2$,.&F:+A:25&`Kajb& 1)&/2Q)&2&<$5>9)&>2$,.&>:+A:25& 7).;#$%&#H-65#5"#=EX."# :..C# D763'P'O#Q+%;'&9#':Q&9' ^g'

  39. M+,c0+-492:&F2$,.&F:+A:25&`Iajb& O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'& META-INF/ META-INF/MANIFEST.MF org/ org/foo/ org/foo/paint/ org/foo/paint/PaintFrame$1$1.class org/foo/paint/PaintFrame$1.class org/foo/paint/PaintFrame$ShapeActionListener.class org/foo/paint/PaintFrame.class org/foo/paint/SimpleShape.class org/foo/paint/ShapeComponent.class org/foo/shape/ org/foo/shape/Circle.class org/foo/shape/circle.png org/foo/shape/Square.class org/foo/shape/square.png org/foo/shape/Triangle.class org/foo/shape/triangle.png D763'P'O#Q+%;'&9#':Q&9' ^H'

  40. M+,c0+-492:&F2$,.&F:+A:25&`Iajb& O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'& Main implementation META-INF/ package is META-INF/MANIFEST.MF org.foo.paint org/ org/foo/ org/foo/paint/ org/foo/paint/PaintFrame$1$1.class org/foo/paint/PaintFrame$1.class org/foo/paint/PaintFrame$ShapeActionListener.class org/foo/paint/PaintFrame.class org/foo/paint/SimpleShape.class org/foo/paint/ShapeComponent.class org/foo/shape/ org/foo/shape/Circle.class org/foo/shape/circle.png org/foo/shape/Square.class org/foo/shape/square.png org/foo/shape/Triangle.class org/foo/shape/triangle.png D763'P'O#Q+%;'&9#':Q&9' ^R'

  41. M+,c0+-492:&F2$,.&F:+A:25&`Iajb& O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'& META-INF/ META-INF/MANIFEST.MF org/ org/foo/ org/foo/paint/ Static main method in org/foo/paint/PaintFrame$1$1.class PaintFrame org/foo/paint/PaintFrame$1.class org/foo/paint/PaintFrame$ShapeActionListener.class org/foo/paint/PaintFrame.class org/foo/paint/SimpleShape.class org/foo/paint/ShapeComponent.class org/foo/shape/ org/foo/shape/Circle.class org/foo/shape/circle.png org/foo/shape/Square.class org/foo/shape/square.png org/foo/shape/Triangle.class org/foo/shape/triangle.png D763'P'O#Q+%;'&9#':Q&9' ^Z'

  42. M+,c0+-492:&F2$,.&F:+A:25&`Iajb& O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'& META-INF/ META-INF/MANIFEST.MF org/ org/foo/ org/foo/paint/ Interface SimpleShape org/foo/paint/PaintFrame$1$1.class supports multiple shape org/foo/paint/PaintFrame$1.class org/foo/paint/PaintFrame$ShapeActionListener.class implementations org/foo/paint/PaintFrame.class org/foo/paint/SimpleShape.class org/foo/paint/ShapeComponent.class org/foo/shape/ org/foo/shape/Circle.class org/foo/shape/circle.png org/foo/shape/Square.class org/foo/shape/square.png org/foo/shape/Triangle.class org/foo/shape/triangle.png D763'P'O#Q+%;'&9#':Q&9' ^]'

  43. M+,c0+-492:&F2$,.&F:+A:25&`Iajb& O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'& META-INF/ META-INF/MANIFEST.MF org/ org/foo/ org/foo/paint/ org/foo/paint/PaintFrame$1$1.class org/foo/paint/PaintFrame$1.class org/foo/paint/PaintFrame$ShapeActionListener.class org/foo/paint/PaintFrame.class org/foo/paint/SimpleShape.class org/foo/paint/ShapeComponent.class org/foo/shape/ Shape implementations org/foo/shape/Circle.class defined in org.foo.shape org/foo/shape/circle.png org/foo/shape/Square.class org/foo/shape/square.png org/foo/shape/Triangle.class org/foo/shape/triangle.png D763'P'O#Q+%;'&9#':Q&9' ^^'

  44. M+,c0+-492:&F2$,.&F:+A:25&`jajb& d)92;+,</$>&25+,A&?92<<)<& c# b# Simple Paint Shape Frame b# c# Shape Triangle Circle Square Component D763'P'O#Q+%;'&9#':Q&9' ^b'

  45. M+,c0+-492:&F2$,.&F:+A:25&`jajb& d)92;+,</$>&25+,A&?92<<)<& c# b# Simple Paint Shape Frame b# c# Shape Triangle Circle Square Component How to decompose into bundles? D763'P'O#Q+%;'&9#':Q&9' ^d'

  46. 0+-492:&F2$,.&F:+A:25&V)<$A,& &M4.)$# Shape .)*AD..A1%(4&# Paint Circle &M4.)$# .)*AD..A1%(4&AE5)E'&# Square &M4.)$# .)*AD..A1%(4&A1d,()&# Triangle &M4.)$# .)*AD..A1%(4&A$)5("*'&# D763'P'O#Q+%;'&9#':Q&9' ^e'

  47. (),)_.<&+@&0+-492:$H)-&F2$,.&F:+A:25& P,@+:?)-&9+A$?29&3+4,-2:$)<& & D4.+52;?&-)>),-),?*&:)<+94;+,& ! (%)2-#)'=-+=#-'*+%`L2-/8+%' ' O5>:+Q)<&:)4<23$9$.*&+@&?+-)& & O5>:+Q)<&23$9$.*&.+&?:)2.)&-$C):),.&?+,_A4:2;+,<& D763'P'O#Q+%;'&9#':Q&9' bh'

  48. D763'P'O#Q+%;'&9#':Q&9' bg'

  49. 1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):& !,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6& ! G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&' D763'P'O#Q+%;'&9#':Q&9' bH'

  50. 1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):& !,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6& ! G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&' 1/2.&$@&+4:&34,-9)&,))-<&.+&3)&$,$;29$H)-&<+5)/+S6& ! G#'%##;')+$#')+-&'+I'9++0'3%'&9#'I-/$#?+-0' D763'P'O#Q+%;'&9#':Q&9' bR'

  51. 1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):& !,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6& ! G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&' 1/2.&$@&+4:&34,-9)&,))-<&.+&3)&$,$;29$H)-&<+5)/+S6& ! G#'%##;')+$#')+-&'+I'9++0'3%'&9#'I-/$#?+-0' 1/2.&$@&S)&S2,.&.+&2--&2,-&:)5+Q)&34,-9)<&2.&:4,&;5)6& ! G#'%##;')+$#?/Q'&+'/**#))'&9#'2%;#-"Q3%L'I-/$#?+-0' D763'P'O#Q+%;'&9#':Q&9' bZ'

  52. 1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):& !,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6& ! G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&' 1/2.&$@&+4:&34,-9)&,))-<&.+&3)&$,$;29$H)-&<+5)/+S6& ! G#'%##;')+$#')+-&'+I'9++0'3%'&9#'I-/$#?+-0' 1/2.&$@&S)&S2,.&.+&2--&2,-&:)5+Q)&34,-9)<&2.&:4,&;5)6& ! G#'%##;')+$#?/Q'&+'/**#))'&9#'2%;#-"Q3%L'I-/$#?+-0' 1)&?2,&-+&299&+@&./)<)&./$,A<&S$./&2&S)99c-)_,)-&9$@)?*?9)&@+:&34,-9)<& ! 4'"3I#*Q*"#';#`%#)'&9#')&/L#)'+I'/'<2%;"#o)'"3I#8$#' A a9#'I-/$#?+-0'/))+*3/&#)'/'"3I#*Q*"#')&/&#'?3&9'#/*9'<2%;"#' D763'P'O#Q+%;'&9#':Q&9' b]'

  53. (4,-9)&Z$@)&=*?9)& 5"1$(''# INSTALLED ,4J($&# ,"5"1$(''# )&1.'8&# ,"5"1$(''# UNINSTALLED RESOLVED 1$()$# STARTING STOPPING 1$.4# &M4'5E5$# (,$.;(XE# ACTIVE D763'P'O#Q+%;'&9#':Q&9' b^'

  54. (4,-9)&Z$@)&=*?9)& 5"1$(''# INSTALLED ,4J($&# ,"5"1$(''# )&1.'8&# ,"5"1$(''# UNINSTALLED RESOLVED 1$()$# ;&2<9*)./'"'=8.$9&>'#&2<9*&2')32' ?<$&'$&,&.$&.?)&2' STARTING STOPPING 1$.4# &M4'5E5$# (,$.;(XE# ACTIVE D763'P'O#Q+%;'&9#':Q&9' bb'

  55. (4,-9)&Z$@)&=*?9)& @?-*"-./'"'=8.$9&>',#<*)$&2'".' 5"1$(''# <,,<#38.)31'3<').)-"9)A&'".$' "??&22'3B&'C#"4&%<#D' INSTALLED ,4J($&# ,"5"1$(''# )&1.'8&# ,"5"1$(''# UNINSTALLED RESOLVED 1$()$# STARTING STOPPING 1$.4# &M4'5E5$# (,$.;(XE# ACTIVE D763'P'O#Q+%;'&9#':Q&9' bd'

  56. (4,-9)&D?;Q2.+:& B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-& </4.-+S,& D763'P'O#Q+%;'&9#':Q&9' be'

  57. (4,-9)&D?;Q2.+:& B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-& </4.-+S,& ! a9#'9++0'3)'3%J+0#;'3%'&9#'7a4\aV_6[7aDBBV_6')&/&#)' D763'P'O#Q+%;'&9#':Q&9' dh'

  58. (4,-9)&D?;Q2.+:& B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-& </4.-+S,& ! a9#'9++0'3)'3%J+0#;'3%'&9#'7a4\aV_6[7aDBBV_6')&/&#)' ! 4%'/*8J/&+-'3$="#$#%&)'/')3$="#'3%&#-I/*#'/%;'3)'3%*"2;#;'3%'&9#'<2%;"#'E4\' `"#' public interface BundleActivator { & void start(BundleContext context) throws Exception; void stop(BundleContext context) throws Exception; } D763'P'O#Q+%;'&9#':Q&9' dg'

  59. (4,-9)&D?;Q2.+:& B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-& </4.-+S,& ! a9#'9++0'3)'3%J+0#;'3%'&9#'7a4\aV_6[7aDBBV_6')&/&#)' ! 4%'/*8J/&+-'3$="#$#%&)'/')3$="#'3%&#-I/*#'/%;'3)'3%*"2;#;'3%'&9#'<2%;"#'E4\' `"#' public interface BundleActivator { & void start(BundleContext context) throws Exception; & void stop(BundleContext context) throws Exception; } & ! 4;;38+%/"'$/%3I#)&'$#&/;/&/'3)'%##;#;'&+';#*"/-#'&9#'/*8J/&+-' Bundle-Activator: <fully-qualified-class-name> &A*A># Bundle-Activator: org.foo.MyActivator D763'P'O#Q+%;'&9#':Q&9' dH'

  60. (4,-9)&D?;Q2.+:& B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-& </4.-+S,& ! a9#'9++0'3)'3%J+0#;'3%'&9#'7a4\aV_6[7aDBBV_6')&/&#)' ! 4%'/*8J/&+-'3$="#$#%&)'/')3$="#'3%&#-I/*#'/%;'3)'3%*"2;#;'3%'&9#'<2%;"#'E4\' `"#' & public interface BundleActivator { void start( BundleContext context ) throws Exception; & void stop( BundleContext context ) throws Exception; } & ! 4;;38+%/"'$/%3I#)&'$#&/;/&/'3)'%##;#;'&+';#*"/-#'&9#'/*8J/&+-' Bundle-Activator: <fully-qualified-class-name> What are these? &A*A># Bundle-Activator: org.foo.MyActivator D763'P'O#Q+%;'&9#':Q&9' dR'

  61. (4,-9)&=+,.)\.& d)>:)<),.<&./)&34,-9)k<&)\)?4;+,&?+,.)\.& public interface BundleContext { String getProperty(String key); Bundle getBundle(); Bundle installBundle(String location) throws BundleException; Bundle installBundle(String location, InputStream input) throws BundleException; Bundle getBundle(long id); Bundle[] getBundles(); ... void addBundleListener(BundleListener listener); void removeBundleListener(BundleListener listener); void addFrameworkListener(FrameworkListener listener); void removeFrameworkListener(FrameworkListener listener); ... File getDataFile(String filename); ... } D763'P'O#Q+%;'&9#':Q&9' dZ'

  62. (4,-9)&=+,.)\.& d)>:)<),.<&./)&34,-9)k<&)\)?4;+,&?+,.)\.& Lifecycle method public interface BundleContext { to install other bundles String getProperty(String key); Bundle getBundle(); Bundle installBundle(String location) throws BundleException; Bundle installBundle(String location, InputStream input) throws BundleException; Bundle getBundle(long id); Bundle[] getBundles(); ... void addBundleListener(BundleListener listener); void removeBundleListener(BundleListener listener); void addFrameworkListener(FrameworkListener listener); void removeFrameworkListener(FrameworkListener listener); ... File getDataFile(String filename); ... } D763'P'O#Q+%;'&9#':Q&9' d]'

  63. (4,-9)&=+,.)\.& d)>:)<),.<&./)&34,-9)k<&)\)?4;+,&?+,.)\.& public interface BundleContext { String getProperty(String key); Bundle getBundle(); Bundle installBundle(String location) throws BundleException; Bundle installBundle(String location, InputStream input) throws BundleException; Access to other Bundle getBundle(long id); installed bundles Bundle[] getBundles(); ... void addBundleListener(BundleListener listener); void removeBundleListener(BundleListener listener); void addFrameworkListener(FrameworkListener listener); void removeFrameworkListener(FrameworkListener listener); ... File getDataFile(String filename); ... } D763'P'O#Q+%;'&9#':Q&9' d^'

  64. (4,-9)&=+,.)\.& d)>:)<),.<&./)&34,-9)k<&)\)?4;+,&?+,.)\.& public interface BundleContext { String getProperty(String key); Access to our own bundle... Bundle getBundle(); what's that? Bundle installBundle(String location) throws BundleException; Bundle installBundle(String location, InputStream input) throws BundleException; Bundle getBundle(long id); Bundle[] getBundles(); ... void addBundleListener(BundleListener listener); void removeBundleListener(BundleListener listener); void addFrameworkListener(FrameworkListener listener); void removeFrameworkListener(FrameworkListener listener); ... File getDataFile(String filename); ... } D763'P'O#Q+%;'&9#':Q&9' db'

  65. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& public interface Bundle { ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); long getBundleId(); String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' dd'

  66. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& Lifecycle method to public interface Bundle { start bundle ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); long getBundleId(); String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' de'

  67. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& Lifecycle method to public interface Bundle { ... stop bundle int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); long getBundleId(); String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' eh'

  68. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& public interface Bundle { ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); Lifecycle method to long getBundleId(); update bundle String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' eg'

  69. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& public interface Bundle { ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); Lifecycle method to long getBundleId(); uninstall bundle String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' eH'

  70. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& public interface Bundle { ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); Access to long getBundleId(); bundle resources String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' eR'

  71. (4,-9)& d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)& public interface Bundle { ... int getState(); void start(int options) throws BundleException; void start() throws BundleException; void stop(int options) throws BundleException; void stop() throws BundleException; void update() throws BundleException; void update(InputStream in) throws BundleException; void uninstall() throws BundleException; Dictionary getHeaders(); String getSymbolicName(); Access to long getBundleId(); accessible classes String getLocation(); ... URL getResource(String name); Enumeration getResources(String name) throws IOException; Class loadClass(String name) throws ClassNotFoundException; ... BundleContext getBundleContext(); } D763'P'O#Q+%;'&9#':Q&9' eZ'

  72. (4,-9)&V*,25$<5& (4,-9)<&?2,&3)&$,<.299)-E&<.2:.)-E&<.+>>)-E&4>-2.)-E&2,-&4,$,<.299)-&2.&:4,&;5)& ! O2%;"#'#J#%&)')3L%/"'"3I#*Q*"#'*9/%L#)' N.#'51$&"#D.)#&8&"$1# BundleContext.addBundleListener() D763'P'O#Q+%;'&9#':Q&9' e]'

  73. (4,-9)&V*,25$<5& (4,-9)<&?2,&3)&$,<.299)-E&<.2:.)-E&<.+>>)-E&4>-2.)-E&2,-&4,$,<.299)-&2.&:4,&;5)& ! O2%;"#'#J#%&)')3L%/"'"3I#*Q*"#'*9/%L#)' !;4'&;&"$#'51$&"&)#5"$&)D(E&# public interface BundleListener extends EventListener { public void bundleChanged(BundleEvent event); } D763'P'O#Q+%;'&9#':Q&9' e^'

  74. (4,-9)&V*,25$<5& (4,-9)<&?2,&3)&$,<.299)-E&<.2:.)-E&<.+>>)-E&4>-2.)-E&2,-&4,$,<.299)-&2.&:4,&;5)& ! O2%;"#'#J#%&)')3L%/"'"3I#*Q*"#'*9/%L#)' e&E&58&J#&8&"$# public class BundleEvent extends EventObject { public final static int INSTALLED = 0x00000001; public final static int STARTED = 0x00000002; public final static int STOPPED = 0x00000004; public final static int UPDATED = 0x00000008; public final static int UNINSTALLED = 0x00000010; public final static int RESOLVED = 0x00000020; public final static int UNRESOLVED = 0x00000040; public final static int STARTING = 0x00000080; public final static int STOPPING = 0x00000100; … public Bundle getBundle() { … } public int getType() { … } } D763'P'O#Q+%;'&9#':Q&9' eb'

  75. (4,-9)c(2<)-&V*,25$?&P\.),<$3$9$.*& (4,-9)&9$@)?*?9)&)Q),.<&>:+Q$-)&2&5)?/2,$<5&@+:&-*,25$?&)\.),<$3$9$.*& B/)&)\.),-):&>2X):,& ! 4%'/=="3*/8+%'*+$=+%#%&.'*/""#;'&9#'#C&#%;#-.'"3)&#%)'I+-'<2%;"#)'&+'<#' 3%)&/""#;.')&/-&#;.'/%;')&+==#;' ! D%'3%)&/"".'&9#'#C&#%;#-'=-+<#)'<2%;"#)'&+')##'3I'&9#Q'/-#'#C&#%)3+%)' A aQ=3*/""Q.'#C&#%)3+%'*+%&/3%')=#*3/"'$#&/;/&/'+-'-#)+2-*#)'&+'3%;3*/&#'&9#Q' =-+J3;#'/%'#C&#%)3+%' ! G9#%')&/-&#;.'&9#'#C&#%;#-'=#-I+-$)')+$#'/*8+%'&+'3%&#L-/&#'&9#'#C&#%)3+%' 3%&+'&9#'/=="3*/8+%' ! G9#%')&+==#;.'&9#'#C&#%;#-'=#-I+-$)')+$#'/*8+%'&+'-#$+J#'&9#'#C&#%)3+%' I-+$'&9#'/=="3*/8+%' D763'P'O#Q+%;'&9#':Q&9' ed'

  76. P\.),-):&F2X):,& Installed bundles Tracker Frame W.)&# D763'P'O#Q+%;'&9#':Q&9' ee'

  77. P\.),-):&F2X):,& Installed bundles e&*51$&)# :,"J'&#'51$&"&)# Tracker Frame W.)&# D763'P'O#Q+%;'&9#':Q&9' ghh'

Recommend


More recommend