diff options
| author | Paul Buetow <paul@buetow.org> | 2008-08-09 14:59:04 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-08-09 14:59:04 +0000 |
| commit | fcad21a6f0f95cfc1cfd57a9ad0ee110a65d0e74 (patch) | |
| tree | 7c89bcdab629745e9a5064d2b2f1f4f30c59afdf | |
| parent | 3cfb74df517d497ef9e0902863da8b19fff8eaa9 (diff) | |
written
| -rw-r--r-- | LaTeX/bib/references.bib | 2 | ||||
| -rw-r--r-- | LaTeX/chapters/appendix-a.tex | 3 | ||||
| -rw-r--r-- | LaTeX/chapters/conclusion.tex | 18 | ||||
| -rw-r--r-- | LaTeX/chapters/implementierung.tex | 6 | ||||
| -rw-r--r-- | LaTeX/diplomarbeit.pdf | 3225 |
5 files changed, 1683 insertions, 1571 deletions
diff --git a/LaTeX/bib/references.bib b/LaTeX/bib/references.bib index 197dc53..6639067 100644 --- a/LaTeX/bib/references.bib +++ b/LaTeX/bib/references.bib @@ -14,7 +14,7 @@ }
@misc{OOS,
author={Heinrich Fassbender},
- title={Vorlesung ``Objektorientierte Softwareentwicklung'' an der FH Aachen},
+ title={``Objektorientierte Softwareentwicklung'' an der FH Aachen},
year={2006},
howpublished={Vorlesung},
note={}
diff --git a/LaTeX/chapters/appendix-a.tex b/LaTeX/chapters/appendix-a.tex index 341258b..d386b3d 100644 --- a/LaTeX/chapters/appendix-a.tex +++ b/LaTeX/chapters/appendix-a.tex @@ -1,4 +1,5 @@ -\chapter{Akronyms}
+\chapter{Akronyme}
+
\begin{acronym}
\acro{API}{Application Programming Interface}
\acro{BSD}{Berkeley Software Distribution}
diff --git a/LaTeX/chapters/conclusion.tex b/LaTeX/chapters/conclusion.tex index 86656fd..6854d44 100644 --- a/LaTeX/chapters/conclusion.tex +++ b/LaTeX/chapters/conclusion.tex @@ -1,2 +1,20 @@ \chapter{Ausblick}
+Es wurde erfolgreich ein Simulator f\"{u}r die Simulation verteilter Systeme entwickelt. Der Simulatur hat bereits 10 implementierte Protokolle zur Auswahl eingebaut. Zudem steht dem Gebraucher ein sehr komfortables Protokoll-API zur Verf\"{u}gung, womit der Entwicklung neuer Protokolle quasi keine Grenzen gesetzt sind.
+
+Dar\"{u}ber hinaus verf\"{u}gt der Simulator \"{u}ber eine Vielzahl von sehr flexiblen Einstellungsm\"{o}glichkeiten. F\"{u}r jede Simulation lassen sich somit komplett andere Konfigurationen verwenden. Jeder beteiligte Prozess hat wiederum eingene lokale Einstellungen, wo sich auch jedes Protokoll f\"{u}r jeden Prozess separat einstellen l\"{a}t. Die Anzahl und Flexibilit\"{a}t der M\"{o}glichen Szenarien wird dadurch um einen sehr groen Faktor vergr\"{o}ert.
+
+Mit dem Ereigniseditor gibt es eine komfortable M\"{o}glichkeit eigene Szenarien zu programmieren und zu Simulieren. Hierbei kann entweder auf die bereits enthaltenen Protokolle- oder auf selbst implementierte Protokolle zugegriffen werden. Alle Dazugeh\"{o}rigen Einstellungen und programmierten Ereignisse lassen sich vom Gebraucher f\"{u}r eine sp\"{a}tere Wiederverwendung platformunabh\"{a}ngig abspeichern. Somit k\"{o}nnen auch abgespeicherte Szenarien beispielsweise an Komilitonen weitergegeben werden oder f\"{u}r eine sp\"{a}tere Pr\"{a}sentierung zwischengespeichert werden. Mit dem Loggfilter lassen sich mithilfe von regul\"{a}ren Ausdr\"{u}cken nur die relevanten Loggnachrichten anzeigen, was die Analyse einer Simulation erheblich vereinfacht. Weitere Funktionalit\"{a}ten wie Lamport- und Vektor-Zeitstempel sowie Anti-Aliasing ruden den Simulator ab.
+
+Durch den objektorientierten Aufbau ist der Simulator relativ einfach erweiterbar, was nicht nur f\"{u}r das Protokoll-API betrifft. H\"{a}tte f\"{u}r diese Diplomarbeit noch mehr Zeit zur Verf\"{u}gung gestanden, dann k\"{o}nnten einige der folgenden Funktionen (hier in alphanumerisch sortierten Reihenfolge aufgelistet) auch eingebaut worden sein:
+
+\begin{itemize}
+ \setlength{\itemsep}{-2mm}
+ \item Die Simulationsdauer beliebig lang machen k\"{o}nnen. Dazu m\"{u}sste \textit{VSSimulatorVisualisation} entlang der Zeitachse scrollbar gemacht werden, sodass der Benutzer f\"{u}r eine nachtr\"{a}gliche Betrachtung des Simulationsverlaufes zu jeder beliebigen Position zur\"{u}ckspringen kann.
+ \item Eine Zoomfunktion f\"{u}r die Simulationsvisualisierung.
+ \item Im Ereigniseditor selbst auch periodische Ereignisse programmierbar machen. Bisher kann nur jedes Ereignis separat programmiert werden oder auf Protokoll-Interne Wecker zur\"{u}ckgegriffen werden.
+ \item Lamport- und Vektor-Zeitstempel f\"{u}r Ereigniseintrittskriterien verwenden.
+ \item Weitere Funktionalit\"{a}ten wie zum Beispiel das Anklicken einer Nachrichtenlinie, was zu einer Nachicht alle verf\"{u}gbaren Informationen anzeigt und diese gegebenenfalls vom Benutzer editiert werden k\"{o}nnen.
+\end{itemize}
+
+Da der Simulator h\"{o}chstwahrscheinlich unter einer Open Source Lizenz freigegeben wird, und ich mich selbst sehr f\"{u}r die Entwicklung und Anwendung von Open Source Software interessiere, werden die einen oder anderen Funktionen nachtr\"{a}glich eingebaut werden. Komilitonen werden auch herzlich dazu eingeladen werden sich an diesem Software-Projekt zu beteiligen. Als Vorbild sei hier der CPU-Simulator M32, der von Prof. Ossmann an der Fachhochschule Aachen entwickelt wurde, genannt. Hier existieren bereits einige Erweiterungen Verbesserungen, die von den Studenten angefertigt wurden. F\"{u}r die Entwicklung/Erweiterung wurde keine properit\"{a}re Software verwendet, sodass jeder kostenlosen Zugriff auf die dazugeh\"{o}rigen Tools h\"{a}tte.
diff --git a/LaTeX/chapters/implementierung.tex b/LaTeX/chapters/implementierung.tex index 1350f45..dafe28b 100644 --- a/LaTeX/chapters/implementierung.tex +++ b/LaTeX/chapters/implementierung.tex @@ -190,7 +190,7 @@ Jede Ereiginsklasse hat zudem Zugriff auf folgende Attribute, die von \textit{VS \subsection{Beispielimplementierung eines Ereignisses}
-Im Folgenden wird als Beispiel die Implementierung des Prozessabsturzereignisses \textit{VSProcessCrashEvent} behandelt. Da die dazugeh\"{o}rige Klasse keine Attribute besitzt, verbleibt hier auch die \textit{initCopy}-Methode mit leerem Rumpf. Jede Ereignisklasse muss in \textit{onInit()} mit \textit{setClassname} den eigenen Klassennamen mitteilen TODO. In \textit{onStart()} wird das eigentliche Ereignis ausgef\"{u}hrt. Hier wird obligatorisch \"{u}berpr\"{u}ft, ob der Prozess bereits abgest\"{u}rzt (hier eigentlich nicht Notwendig, verbessert aber die Lesbarkeit der Logik) ist und gegebenenfalls wird der Prozess dann zum Absturz bewegt. Der Task-Manager \"{u}berpr\"{u}ft bereits, ob der Prozess abgest\"{u}rzt ist oder nicht, d.h. ein Ereignis wird bei einem abgest\"{u}rztem Prozess gar nicht erst ausgef\"{u}hrt. Die einzige Ausnahme bildet ein Wiederbelebungsereignis (\text{VSProcessRecover}), welches vom Task-Manager ausgef\"{u}hrt wird, auch wenn der Prozess abgest\"{u}rzt ist. Mit \textit{logg} wird eine Nachricht in das Loggfenster geschrieben, welche ueber das \textit{VSPrefs}-Objekt \textit{prefs} bezogen wird:
+Im Folgenden wird als Beispiel die Implementierung des Prozessabsturzereignisses \textit{VSProcessCrashEvent} behandelt. Da die dazugeh\"{o}rige Klasse keine Attribute besitzt, verbleibt hier auch die \textit{initCopy}-Methode mit leerem Rumpf. Jede Ereignisklasse muss in \textit{onInit()} mit \textit{setClassname} den eigenen Klassennamen mitteilen. In \textit{onStart()} wird das eigentliche Ereignis ausgef\"{u}hrt. Hier wird obligatorisch \"{u}berpr\"{u}ft, ob der Prozess bereits abgest\"{u}rzt (hier eigentlich nicht Notwendig, verbessert aber die Lesbarkeit der Logik) ist und gegebenenfalls wird der Prozess dann zum Absturz bewegt. Der Task-Manager \"{u}berpr\"{u}ft bereits, ob der Prozess abgest\"{u}rzt ist oder nicht, d.h. ein Ereignis wird bei einem abgest\"{u}rztem Prozess gar nicht erst ausgef\"{u}hrt. Die einzige Ausnahme bildet ein Wiederbelebungsereignis (\text{VSProcessRecover}), welches vom Task-Manager ausgef\"{u}hrt wird, auch wenn der Prozess abgest\"{u}rzt ist. Mit \textit{logg} wird eine Nachricht in das Loggfenster geschrieben, welche ueber das \textit{VSPrefs}-Objekt \textit{prefs} bezogen wird:
\begin{code}
package events.implementations;
@@ -281,7 +281,9 @@ In diesem Beispiel wurden zwei Ereignisse (Absturz- und Wiederbelebung eines geg \label{fig:PackageProtocols}
\end{figure}
-In diesem Abschnitt wird auf die Implementierung der Protokolle eingegangen. Auf Abbildung \ref{fig:PackageProtocols} sind die Pakete \textit{protocols} und \textit{protocols.implementations} dargestellt, welche f\"{u}r die Protokollimplementierungen zust\"{a}ndig sind. \textit{VSAbstractProtocol} stellt lediglich gemeinsame Methoden und Attribute zur Verf\"{u}gung, die von allen Protokollen verwendet werden k\"{o}nnen. Jedes Protokoll hat im Paket \textit{protocols.implementations} seine eigene Klasse, die von \textit{VSAbstractProtocol} erbt. Im Prinzip besitzt jedes Prozessobjekt von jedem Protokoll seine eigene Instanz. Bei \textit{10} Protokollen und \textit{3} beteiligten Prozessen werden also \textit{30} Protokollobjekte verwendet. Jedes Protokollobjekt verwaltet sowohl die Server- als auch die Clientseite eines Protokolls auf einmal. Dabei merkt sich \textit{VSAbstractProtocol} anhand eines Flags ob der aktuelle Kontext server- oder clientbezogen ist und f\"{u}hrt dementsprechen beim Eintreffen von Ereignissen die Server- beziehungsweise Clientmethoden des Protokolls auf. \textit{VSAbstractProtocol} \"{u}berpr\"{u}ft auch, ob Client oder Server \"{u}berhaupt aktiviert ist. Nur wenn der Server oder Client aktiviert ist, reagiert der Server beziehungsweise der Cleint wenn f\"{u}r sie ein Ereignis eintritt.
+In diesem Abschnitt wird auf die Implementierung der Protokolle und das Protokoll-API eingegangen. Im Protokoll-API wird in der Regel nicht direkt auf den Task-Manager und auf die explizite instanzierung von Ereignisobjekten zur\"{u}ckgegriffen. Das wird alles vom API automatisch gemacht.
+
+Auf Abbildung \ref{fig:PackageProtocols} sind die Pakete \textit{protocols} und \textit{protocols.implementations} dargestellt, welche f\"{u}r die Protokollimplementierungen zust\"{a}ndig sind. \textit{VSAbstractProtocol} stellt lediglich gemeinsame Methoden und Attribute zur Verf\"{u}gung, die von allen Protokollen verwendet werden k\"{o}nnen. Jedes Protokoll hat im Paket \textit{protocols.implementations} seine eigene Klasse, die von \textit{VSAbstractProtocol} erbt. Im Prinzip besitzt jedes Prozessobjekt von jedem Protokoll seine eigene Instanz. Bei \textit{10} Protokollen und \textit{3} beteiligten Prozessen werden also \textit{30} Protokollobjekte verwendet. Jedes Protokollobjekt verwaltet sowohl die Server- als auch die Clientseite eines Protokolls auf einmal. Dabei merkt sich \textit{VSAbstractProtocol} anhand eines Flags ob der aktuelle Kontext server- oder clientbezogen ist und f\"{u}hrt dementsprechen beim Eintreffen von Ereignissen die Server- beziehungsweise Clientmethoden des Protokolls auf. \textit{VSAbstractProtocol} \"{u}berpr\"{u}ft auch, ob Client oder Server \"{u}berhaupt aktiviert ist. Nur wenn der Server oder Client aktiviert ist, reagiert der Server beziehungsweise der Cleint wenn f\"{u}r sie ein Ereignis eintritt.
\begin{figure}[h]
\centering
diff --git a/LaTeX/diplomarbeit.pdf b/LaTeX/diplomarbeit.pdf index e8c2ee2..79d68c2 100644 --- a/LaTeX/diplomarbeit.pdf +++ b/LaTeX/diplomarbeit.pdf @@ -279,7 +279,7 @@ endobj << /S /GoTo /D (appendix.A) >> endobj 192 0 obj -(\376\377\000A\000\040\000A\000k\000r\000o\000n\000y\000m\000s) +(\376\377\000A\000\040\000A\000k\000r\000o\000n\000y\000m\000e) endobj 193 0 obj << /S /GoTo /D (appendix.B) >> @@ -748,15 +748,14 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 255 0 obj << -/Length 1958 +/Length 1955 /Filter /FlateDecode >> stream xYoF)(v1A64KflUH~Β\r%g(@&0`_;~YQ #N `>-'봫 ^'WZ,^\s¬âW7-wzբd𣺾=(N՚?))b{$NQ?O1ar٧.|,WZWU\qc϶mmYroceF%(b[AqI1ȜSfV
1)!c+A&b dp1h#;M'iS|_<n.z`7U]u?g `3^Рq*}gsiS?C/4+M9
/zf
gЧU}8
~oڋ7qO\
'3"cc?Rgrщ6]!Y3%U`?Q(SDZ=Pvy%^8mj1?c ٚ -}8NJƕu~W)"ZrYNN+n^"#OP+͉2Fͺԩ͞~ ]u٤EQZ:(UƓ~y~y}N"$]SY~J?RAH~}fϟ%#7EN:uw^85vcE~D,Shr$bV/$k_ϑdwGDNfcݩ2 YDYIWY1b=9zЃ+(MdDxcl.uwts_m֧WKp?A̱)A DFzȇ,sX"5̙y0H-XN^7<<yQm}=mMC~]NMuyUX+Tݠx͵ F89՜M܀%tzT#
'N2cD-EYu]:4IxFH"'22nsajhV,h6X緌ՋjR2qXv~[nͺ9}hPn]t%Ac֦]hߝ*Q2>?A#C#OW+P1'3mӴĹpwE}|S]m}sgi{[Ne -VDDSvƎ96rS;o'd1NwC7W dŮڽ-{!ZrI -UƝ!?Ve2f~?>ZS* 9WCJf IMHƄם*JΑ/VΥSXS<PayT4ˤ3|OtPx͜.^جkmhϞkCzc߬M/ȸzN-Ҹ}F(LN&/wv4Ekgendstream +}8NJƕu~W)"ZrYNN+n^"#OP+͉2Fͺԩ͞~ ]u٤EQZ:(UƓ~y~y}N"$]SY~J?RAH~}fϟ%#7EN:uw^85vcE~D,Shr$bV/$k_ϑdwGDNfcݩ2 YDYIWY1b=9zЃ+(MdDxcl.uwts_m֧WKp?A̱)A DFzȇ,sX"5̙y0H-XN^7<<yQm}=mMC~]NMuyUX+Tݠx͵ F89՜M܀%tzT#
'N2cD-EYu]:4IxFH"'22nsajhV,h6|6;ݨՋjR2qXv~[nͺ9}hPn]t%Ac֦]hߝ*Q2>?A#C#OW1Y9a`/i%΅+o;Nu/S"2 3v̱[,H~#8&k5hο_ȄuB%ɜ
!,voٛВKV<29rf~/7ѲRa<ʇR(]<7aMπaRR"1uʸҧs䋝l0'x: +>ө4\iIgPt:9]Y5'מ٩0#Srӟ=iE׆ƾY3^q7}Z¥q<P꙾ɝ"L*^Usli:7/=endstream endobj 254 0 obj << /Type /Page @@ -1152,15 +1151,14 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 343 0 obj << -/Length 1202 +/Length 1201 /Filter /FlateDecode >> stream xKoF<㘢z)re%!EO!Kܡ8<pH~Xa$ԩ8-_O.2auϚ8eXp%B_\/]ۇEudQoקV}8)ZrBJ
/pp~*E8-:br#nr:ި)C\tQ}:B-ӹ=Ua9Xb*`Ih"%9)jIABZ~{&"9ep{ SoJŢ^e8nCV28&{ky>ׇ}kp}Ӵ*DKK2I
1N8u2+9a^BD@'0a{d2'059 q_>yޗ.֟J
k!rX}<Sg-Fjg573Pa+&6*ꭅƢi -zkwyⱨ
N|0ě
k-]r uq<اMy 8`5=ܨcong)(EK5:gPJFR;o8]e2lVq^#7Ⱦ_[ǰF`zk?D7o{#ަ5-Fvj"1UoFFO5F[q1tppTOǔr'Q^)><ߎ{}
3r2r%IFBJ w] -vԒ(
Q`S3ͤEj$"_h#Hendstream +zkwyⱨ
N|0ě
k-]r uq<اMy 8`5=ܨcong)(EK5:gPJFR;o8]e2lVq^#7Ⱦ_[ǰF`zk_4|#9f7XyX?m[C"Nhd&s_eMOOmToT[#Om4,'M wMԼ}L)whiLB80#*G,c*'ZYd$pץ`7YJ- endobj 342 0 obj << /Type /Page @@ -1521,8 +1519,8 @@ endobj 429 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025807Z00'00') -/ModDate (D:20080809025807Z00'00') +/CreationDate (D:20080809115815Z00'00') +/ModDate (D:20080809115815Z00'00') >> endobj 430 0 obj @@ -1620,8 +1618,8 @@ endobj 438 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025807Z00'00') -/ModDate (D:20080809025807Z00'00') +/CreationDate (D:20080809115815Z00'00') +/ModDate (D:20080809115815Z00'00') >> endobj 439 0 obj @@ -6312,8 +6310,8 @@ endobj 774 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025806Z00'00') -/ModDate (D:20080809025806Z00'00') +/CreationDate (D:20080809115814Z00'00') +/ModDate (D:20080809115814Z00'00') >> endobj 775 0 obj @@ -6459,8 +6457,8 @@ endobj 787 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025806Z00'00') -/ModDate (D:20080809025806Z00'00') +/CreationDate (D:20080809115814Z00'00') +/ModDate (D:20080809115814Z00'00') >> endobj 788 0 obj @@ -6598,8 +6596,8 @@ endobj 807 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025807Z00'00') -/ModDate (D:20080809025807Z00'00') +/CreationDate (D:20080809115815Z00'00') +/ModDate (D:20080809115815Z00'00') >> endobj 808 0 obj @@ -6773,8 +6771,8 @@ endobj 831 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025807Z00'00') -/ModDate (D:20080809025807Z00'00') +/CreationDate (D:20080809115815Z00'00') +/ModDate (D:20080809115815Z00'00') >> endobj 832 0 obj @@ -6908,8 +6906,8 @@ endobj 847 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025807Z00'00') -/ModDate (D:20080809025807Z00'00') +/CreationDate (D:20080809115815Z00'00') +/ModDate (D:20080809115815Z00'00') >> endobj 848 0 obj @@ -6974,20 +6972,24 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 859 0 obj << -/Length 2023 +/Length 1968 /Filter /FlateDecode >> stream -xڝX_sOGc!@d:M:N㹇},XbL - :4)QX,緋yI0<z<|H}wS~yB4TL䂿 -;R+kZdy,j$T"9V[fOnHX>eTT,Zδγ)Igh\MT,$ɔ[$nmۺ6Oh%mhD>lA4gy3]磮kyhm6=*T483g}}w_4 *K/V^\l.tOD;O_>DZɨd.Ap -@ݛɟ[SVȔAe29z?Z~- XH pphjvfW¿3W2I|vSA8ԂW;O0eT0*=s˦")2evi1\ -N3hzpMuǐ2_겇F -(\̽g@T{L@%PMW# Ku$}4L*of=+ -@*gaA_p|l^bM`,wx uMXjɅ
rɛ0Jg@Yjgԉ)/f0Fۥ -On~'͢p:,}xEO7S&R*0bJ eu-1²5kZi\ڏu)^£P8?|~b<,rŒZ_F_H;!X(e/]j4Js]zuv0A^m?0ll?:nds{Xbںr;ޤY*Tjj6 o:HU*~08 -RAQ$Q r5'08, fVyb1 +@ p)B@)ɽHyp~k1
h iFщצX
!toۇ0AW3OuM6cHk(/,}x3
Gr% 'e`f'PNc0.F-J Lƻ0&X;Lme[cp켸+QKoZ<3li6tW[.*Lr_J7ڒޤ~[Cpi|T"#2γ<P.wPگ\/=ik}qruR$9qtr- -kuH]KH*Vmv6;Wd9O +xڝX[s۶~#ձPJuq3'/'灒`E$t.EvNf%ˇA<OrTV$/$'Ula/˞yy
O,+Qc"f +"aCTyW/"dβrpwx5rbuzj=|aЯEƬ1U0M,g{ƥ\ +5$L+87Ӏ.X"$~ܷG/c]Ŝ5Y˭6_UYfe&GA]m\ʣOWǦCc?q,oW]=2/k.,ϸՒqF/Pjn4+_DfuN_gwioWoæ1Rd4P +Іeɹ[/r)
m~u:rJ3ArdS>q4ɂq1p͌4kQľ)̔K)r iXQ3D)YϦ2&#@LtSYu]SyOvCTyzP/l67mH*L.a
$Ye7ÅGˮjn[
9&^!b"!} +dV-cx +IFPo'fFOZYƭ7euL4&g>%zs#b;R.%b}W3#Jy>uTT[R9e9VP|kq +&x$ݵuIPqz+c&пS@(2qca6LDžhۀpeBR&r$9cv-]WqlOҘ %CY|t!ve#yC{ +2i`[H0rɢoO.;@(FL4eRDK\tbÿ18<+U{X-hiLZh>XJ^?Pց=R,E1Gla\
8rjt͊\"0fFoմKeg/%=h!jxngmTe2),3g5]\1ą?B?g +_ybKÉ +L68|ro#{Q.h +pP>nO Vչ^BC4^6q4E#6 +:h
-Uo]?K
+AP$->gfP'qQBg7vB}ԕ
\Ev&"kFO&+Jq<=W%,ԤBU0nWll2isa8l&a]nds˛Qb_}?Oрs0N^@sO>& q{0"?fmc +Mc}[5I NJޘ~rm^;ǟi59AMr(~ZzÔ+-Pf1bfVK/hj~>2~>chah)^
endstream endobj 858 0 obj << /Type /Page @@ -7021,8 +7023,8 @@ endobj 862 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025806Z00'00') -/ModDate (D:20080809025806Z00'00') +/CreationDate (D:20080809115814Z00'00') +/ModDate (D:20080809115814Z00'00') >> endobj 863 0 obj @@ -7051,7 +7053,7 @@ endobj 861 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [444.1785 411.9436 458.6341 422.5258] +/Rect [134.2125 357.965 148.6681 368.5473] /Subtype /Link /A << /S /GoTo /D (figure.3.8) >> >> endobj @@ -7062,10 +7064,10 @@ endobj /D [858 0 R /XYZ 74.4095 771.7323 null] >> endobj 158 0 obj << -/D [858 0 R /XYZ 74.4095 748.8047 null] +/D [858 0 R /XYZ 74.4095 748.8303 null] >> endobj 365 0 obj << -/D [858 0 R /XYZ 256.0589 463.2247 null] +/D [858 0 R /XYZ 256.0589 466.8618 null] >> endobj 857 0 obj << /Font << /F61 259 0 R /F26 206 0 R /F28 209 0 R >> @@ -7073,15 +7075,19 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 869 0 obj << -/Length 1565 +/Length 1570 /Filter /FlateDecode >> stream -xڍXMs8WhD,%nڝٶك3Yneɯ_dv -t g -R% V/r
sҮc*l]SifZ2+Rл-|nV%Gs>]AV -@7$<~4a&azqd/^Cfhk1g P4FF'[S!<qȽvi]1 fSH -0ediH
=fO?8q57^m4QZ)t^sqm%ˠivΟDfnendstream +xڍXKo8W(1˧SiiQA,wCɒ8A8fo>R?i(6g<ZW˛we,OGR&3)vNoğGr6i+6+gizXڍZg0qWf|:p37,Iے:a$i4%I=*L\f2SAg)c>OG/Lި4ϾEC`ޱp9A"OI2ӡ2Uy
0b&xpj&ci&U4rˀz%Com3,IXli+m^x6]gr#|+9:Ѽ%OxHbqq +׃h#.`*a~ecfWWXfm h]i˱X#o*feѝO^W-M.ls^rvቀӟ, Х@U*ghc%AۭDp\5H}Q^ϔ1+GSfxE5Ottuz`qŒTi^X[$NPu*tit5;.(x3
R5D<` +"|DeYzAhYz/{sdY:E^p4~xׂl]T[LXk+EZ364FSaRTNϯzp+)gIݒ +>q^WG2nZKmvog\pmBz>#asKȱ" +:kPz&2!_%L;:`ċ6ȔIuU3fLtGX@q0Bǒo( +f +TRQ'r'JyRNNRi3QJRjbI-H7$:~^0<(i0{d9CUo.kB^ +&٢;\ +_LE*d:o|#;,12\bN)$'"|xendstream endobj 868 0 obj << /Type /Page @@ -7187,18 +7193,15 @@ endobj /ProcSet [ /PDF /Text /ImageC ] >> endobj 873 0 obj << -/Length 2749 +/Length 2829 /Filter /FlateDecode >> stream -xڥZY۸~_Gʃk0Yoƕq8SHSӍH(Rp4h#VUE -
!V7|u_h<CHo}UΊ4ի+&s)M?|zSod<$\Riʜ7"Y__~Drj2A)JU3"%˲L"d%+DL`Vj C>qMYdDp+kt3c宇˓jrn$_Վldn=懺';u:0#Po<ԥTLyFP[疿3ݻΗM(ʚח`?LAϚ7n)Jdϰz>In QYI
?M;vݱ'Y&D:Q32TxޜAIm8R>?ldB'TKdw1u
\cjZqciw4Kh7'hZpq8Na8ñrm81҃iPCA>@xdzM]A4,Z.#!Z@@v \$\qGB5;'a@6Z;^Gf^{V]O
rڦv_*NUOuu8 Wo;"VtwmZu
hPXn!{\HUywhj.J;Dסa_w.'<>D -sБz}gj=[&S>>=^ˮgsVpEg{C &OYT-1=@+`RרXu۱3\s7f/ȱy1ZUޯ@aͳ^Ϧ&a-j^/%L<E$4DNʺ=~ -gbp1f_j)͔ - -7 ]HwR-(l E®+,p` ܶmmʆfef⮞ҥ9q pXs8R8't}u
-)WQÑP+~F?Š /<6n,),G~H'OvOK\G<MSup -]B:Mrx@h͞ژ34Ds]w$|(@r&9h?]D7Ŵlc0#U7C}jBmDNHvr{D[iswE 6Aqt1cԞ{f -3r13w +xڥZ[۶~У4c! +KS<35/6OO,4c\l>=.ru:kn`gcߟZ%@;ŀ8 rqBFShÉ#'"Tk8s+T]Tul +B|AGKv K\$ O )[ohAp&:h6ZuسzuGjfMc8W=%DVv$hT@G{<Nv<! +AF`ҳv9 ڟ6fu`zbh|i C[4)zK@GfZPȏ\C>ZBWZiIwHsG,M"L{o&k1+o\TS$TQՑ\]T:UUu2oy?|p{#6syLS)\քau(;.r#¯A +-cHE.~Cp#h>NqhDžA*8FP H7 #n endobj 872 0 obj << /Type /Page @@ -7215,16 +7218,17 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 877 0 obj << -/Length 2469 +/Length 2394 /Filter /FlateDecode >> stream -xڭZ[~_GDQf/n,2-L46cc[ζ{(u#4X,Fx.?H98KiŦ|;K}= 2!e n҇ˏKQjMSdhN0^-+_TU]jMڭ~{Ǜw-~B1B\ tf 2ziJGbɂ% ϔ$9L?#&,E|7BuFcBQ_.O+bcpjvp8>凇T8h~OeoT/zo̗?O:RiLm?ű:2U ^/Gv
W餈YxqfQ^B/C^| /F$CH9[B>#d(*Z(J<^GBooH+,|:w$tfdrRX{U_2 2ؔ$a| -3r[!*ӐRxӅ@Xr9>XTRF0|z;zPά[oYUE.euF[Y6\Pe٤5z3Pgw_:x.UN^[eESMepBFs~r[Jl[MW_%;? -uh7cvEUj>ӳOW"a, [$ښ$Dm%:Bh5x8VR^%/[\~({KX0~'\q.@,)\w!8u"Nַ - ęEB2D˧Z2-MvޫmUCLrambF[w&("+aUYMa?\GdBoΐ*v،PU{NGen?ACZk'O -BNA@w{aR7_z,F+M9Gz;cfڿ<!zN5"ᩓ{V(: G~4r P:'XgQٴ{ߚ?6+'}}Hg{@{hJwwY賂wBanXZ<G}a0:.7{{h|A?TC-3:1LII{bNF1Qc8FHͺ:',H@I]mbݧ;{S'oɠ)d8RV(ӚŢL2#(Cb~!O)j5^}n;hpߝ5.y>\@Rh%YB,9(K!Ԏ!K>j/$]ZL`*Uy
A aoM&D*wl. >'* aoܔs~]_%.\ڠauuu98a4iʪD -VX0pBsfQP;
Qg4棆Ą9"%8~8\mR"'ɞqE"Rendstream +xڭZ[o~_GY&Q6EAX,{N~Dȸ(Ԉ%^%($pjz/6[kuJ㘭ZX=,6[5E-M.u鹐'Y6<o/9c2#dń̔x$!ݔ(_aRΉS`T:35'A MQ#yېh]{tQD?e]QM3yVC#|GkqS_;#Q1zh48/L4*4 XfA:|=c:\16a>>YR0!mwyŇsDY$iD$:V>YDjOuDuLbQz_TO^R쩹Ȣ0ۮ͏YWețk+U8\,ċe: +9Niۛk<@qZVٚWهگua]`;.F!'GP=$ ڱ5_1zSjU} !W6+p+e>tj75zv?N,Ks? MS9\iєf +2麭>ʃET0lZmL!bFw59OPl/4Viƫ4B=PƎg*\K{Tź
Z ])3d;(K5ȳ}A +fD@*Bƺ0H zka,17um8SО:`9e&ɸmGϐQs +}+7JS=)T&BcvyYnl|Av~!$S'3MS$:&o`ԊUţT|klU7C+v] D(<$:?u_7nMMX:LZ2 +Gq ʸV(ә2(3@h2T`;vc]ov>U/kOq*-n w_ب:C.Bu_;
6+\uJfԔ +Pendstream endobj 876 0 obj << /Type /Page @@ -7241,17 +7245,20 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 881 0 obj << -/Length 2198 +/Length 2083 /Filter /FlateDecode >> stream -xYs6_Gi&B MMٞCP,(IIg殣c]` $)n$1BL3>Y@<Rp{݇XLRfXMn',J#vc7ͣ$J6kΧsKnl䶚۟ͅ.n[:,u*3d2ő4]#G҆%IGz"3ZGx
:iHw\$C!Mjk :ڻHAD>קbi/gs%v[جc+[Ć:0#P>DiS*OCoiONnF;ԝ:_>̝L%>UػAӖoh~楗hmvaCs| Ö
8RELϿ -mj[/yP~[
/=d
$#9#âXh,5&[-Po3FP+<lWޟ3mI -NIe+tRoL*N;7шneksCM˲kqI7%Qn`m00ҲEC-A3A]&Ayh?|%EMcG-5 YC+~W>6tBEU͓sY 0MF#Dvhuư^=\O˵ѵK唹q eR\u9lBhp#nf˒@GS55f:GutH j表H"a, r#)|8:Tcd/nuC'Pj rY6>Y\B9 -h
P$] -|bHkQ)jT)Ayẖ¦=CNHT!R_ubD΅-PL&BEחG%1ӁiE൯:nDjΔ4}uzZdT (yYddEyO-̎:>R
PN-~!uH2,e3X+]j^h"9D$Tua^UoP\ծheV7AuI)ekь|m >=<;y]32[QG{p"7C(j?G@rXJ]t`zx^P%8mukĈ#LmJk|M>HP?^u =!/BY@`q$p[D=6SXw%0=vQw/pl_ѻF~V+N\8B3$\^˱@0t7G)I=:_}|v&ۣ@Wy_.`ІEƓdXqEb;84D73
kۦguFED_XS£YVlg4hsj"v.m1.9o,>/(̲AD,!D(#g8-y:[ˆA[!,k۴(Q
dw^K -ŴoHҺ -3endstream +xYKs8WHUE<>oٔ=RK\SWf뷛
P EQ<TJx4э_p+&qBI*1Yn?~l9Ow$,p2HL8:_+)3'bә<
-m_5et&tp(_p3okYE}aBœR,*SDZlDj-N`IIKWz"NN:SE +azXL%|9)5i,Tăwn+>YU<q@q%LYD㿧C~52%-}LǕnaO4_ƊܸlT٭;sBMf3T۾]wEQNѓ%0ZUFVv|(_|W6 +yPr9<@yq09
yx ۘݺHR:1jc"Ƹ1zc>WclmMUeksw=).R-A +G+}|FQ%y2vjD-%rm~uXזq +419dEJ=ـ6AΙ"I7|SRۼIRq3O +,B;h{6fi<Ŕi楕hmfaܬٝTgoqQbq "SEA카ʕ)j$#9edM[@BoS}784+:] +
=VF +TIҾ'm.Rc ;P
Y D%- +qE=o5Nm \\(jWd ZG^=Eenh:Eۯ Д-i+<&"Y7.Ŋ]zC,WhCփ.IlR
F;vBK&CXVnQRSd{%ċrd/`Aӓ7$iC +Jo۽m5IE"OӨmH Vg[u;>endstream endobj 880 0 obj << /Type /Page @@ -7264,22 +7271,26 @@ endobj /D [880 0 R /XYZ 74.4095 793.4011 null] >> endobj 162 0 obj << -/D [880 0 R /XYZ 74.4095 451.5497 null] +/D [880 0 R /XYZ 74.4095 357.4533 null] >> endobj 879 0 obj << -/Font << /F61 259 0 R /F35 221 0 R /F28 209 0 R /F26 206 0 R /F83 824 0 R >> +/Font << /F61 259 0 R /F35 221 0 R /F28 209 0 R /F26 206 0 R >> /ProcSet [ /PDF /Text ] >> endobj 886 0 obj << -/Length 1636 +/Length 1599 /Filter /FlateDecode >> stream -xڵXmo6_!
IM6 m5}[Ц(dqr&ɖa}w"(xEX4Nb0Mf4»_Od`]_I2$pR:>ޤyŤ?^:Nf٢v-iϣSb+"B*
!T|D_P'FF0% fMa%?I$ae~#eaܲlMR%Ko8b$4aNEJ`jf8q2/-9UN3tD^s7 yZU~x><Kǹ}k7I<o0Ebm-L'-?N3l_④/vDWϿG|]RHgiXm"|X+N#bT´h6TPZYGR*wZCVLjye
|gӲi"0jy -
ǣƭKyLq!nhlEܻ0n\R4W`."z/jsc&~MRFhZ[WfˋXҏ3Npɕ-kJx+zc[[imþӓcƶ%+Y$sIk3Bc*`!7>UMO2[0,+s[p&CM'Wu+n[}ZW/"wo+?O!iN,-A%[L.!]YGp -W
Ä8!L*}V& -& -osWczf(Ż'NR--lM`lendstream +xڵXYo6~ϯd1Ktmnb6JtҦH*Es|6((D,Lhڣ2/; Mg~T,JIfg1)gFgX]'<IG'1FeWF7 Gj94{ìsJRJUMxJ)J +~G8
%,xI7I +Ȯ1G9Bטʭxm0`.ANRMS8Gg"[{pmŹKmv^S9kMiV{e:JYxHK5c6 +Ro(wi#TPhqϗK{0HF]m +]i93S +.q#!iU7$H\CгIp7k-$s2b'#2aqDuBXyb +n2 Q|nb4&"UtbqQ&y
:MHrD@wvAr [D +ηݮ+]jI Cm)d;.ܸ뙏ۺyuVhB}P(J}1_31U>StiT_@QB%P}FAUr]M6檛{Dn=ˆ}_զpr7rɜW}TڳmexlcD1Nc- L-}G%PҳĶZo0a+(pt|08ԗÑd xtSuY_UK"JY2-e +(dI.@fauX <?ELaZ)/f ]`ߺXjtro!Uww endobj 885 0 obj << /Type /Page @@ -7292,7 +7303,7 @@ endobj 889 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [484.3906 485.6988 498.8462 496.2811] +/Rect [484.3906 388.0752 498.8462 398.6575] /Subtype /Link /A << /S /GoTo /D (figure.3.7) >> >> endobj @@ -7300,31 +7311,25 @@ endobj /D [885 0 R /XYZ 74.4095 793.4011 null] >> endobj 888 0 obj << -/D [885 0 R /XYZ 74.4095 568.6296 null] +/D [885 0 R /XYZ 74.4095 475.8821 null] >> endobj 884 0 obj << /Font << /F61 259 0 R /F83 824 0 R /F26 206 0 R /F28 209 0 R >> /ProcSet [ /PDF /Text ] >> endobj 892 0 obj << -/Length 1801 +/Length 1829 /Filter /FlateDecode >> stream -xڵXIs6W>dI @䐭MkOzHz%HbL*x&Pt|o`1'Fb=JL!F-E+<4Ow\}c,F)3qFW4[WwW&om1$Gl2՜6.֛®m涞Lwr˳W~-9KX؞ZXG@$t^/TRx$ʧE_X%=ZDkq4xi7(QnquM6/-HxV.lipiv"Amil=%q7UQ0:cQm -?N4(( -Λ$6~H
n:/hkfLFS0#} -|>#|{ -^eEdv0]<s2KVnl2#\'r) -/i"9.9zLE>TUa!qhYִZ_v &BܕmU>Pxk+lXU5.pz@KʒfyT -(550Bng6'Oz]OeW
(kҾ .v"b_9W5,~.maaSWLK:);N',N>(#e4~mU5CCSv%߉d*$a-[%m(
Vǩ%eH-٧<!"NA=Oo/!"m5`"aI$yp`'І%w௳w3"-|p&R1S:NNqvy[/E)
<)9˞e_Tf$R"G/&&+t~&Íf4D@m4ڝ`@A]Rʘq)$PD|ް&d{DwXTʑZ2nck@j=չRSR; -`Ttq:ܲB"Dot(--z}[^kl}gL?A;{RŖ~0x/|*SA}:WKg"XayHd 4,JT$_ GCkega`=_y$:/S !0mTr3kҽV@ຟ[t -DnIVY>9Fi!|6ug(
"&t{hcy"+GE;Sg/DPYz&GI^ -iJǏov*B]C8Y+g&CSKGHWY9Eˈ]Z-#Jp>X-PD^ǛgȺf "x/\M~h (.[0֥%hc_LIEݑ( -K#ݥh?`g=I( ;(zrM<<!w?B¿D_sy*)Eqz -Op]Wh,5 -E:e6bV6e͔ݰXS&1_b=ݗ6v ~;҄i|<8u'.aGj<&>?\Uee7zN渰j>A![4ڶ]]L(`?}Əs{|w88} 达`;Xä?0Ӕqa'e< -TDw䎰Ctf5endstream +xڵXKs6W9diI䐴iiؓh SKRL:tLx.}`EO$f[dVBd9 +8;̳}g'$g6MurL2LR씞/L~)Uәbә|}p}Lɶ^M:`H4۬)&͒:GOœp|I3aL6'PT'g':y2-ˌ"92JRa~m}<RhX($\%3˭n5~tB7VM]UB_o/?DL"Of"eІt+WQ[G؊iU!_r-[},PNlcE,K̰+٩M.YBٝܥ:r&R1!2i>)ȳRvd;8-Oz9PnxkuB'+wվU^`'pehEʋzN+G+S1&]Okdr$5U՟SbQ.#SekFSimڔj&5ΆCIj4ejC*W,^͇)iu9<ַJ\aoEG][L1Mnc +%θ0DY8q?3%mY)TٽV}9/I)([q|
Buv+S5bjewozEU2r`8o8B\^ +xѕܡWO~ +[925۞ +l.]0n֯I*8C4$ց2R72~G[P +9qFc0 +XN,6c=#Dy7,HoXBt>//Fw. ~x}2j&~.~zpֺڼ@wB080|~|y9~W%uH+YjdD._fnОendstream endobj 891 0 obj << /Type /Page @@ -7337,23 +7342,19 @@ endobj /D [891 0 R /XYZ 74.4095 793.4011 null] >> endobj 890 0 obj << -/Font << /F61 259 0 R /F28 209 0 R /F83 824 0 R >> +/Font << /F61 259 0 R /F83 824 0 R /F28 209 0 R >> /ProcSet [ /PDF /Text ] >> endobj 896 0 obj << -/Length 1602 +/Length 1369 /Filter /FlateDecode >> stream -xڵXo6_Ij[!m!-:tKk nj#T<}$@#)Ev&](Oy" -,J$Ԩ(1Ƣ͌FkXeY]̋1O4RbEą"<fM[[<IcAEi2~x-Ɩmn+g?+NI5Rj"NO 2Ef?hܯg>(ah3L1;6I㆘TÛyA -rƚ%&k"bj)Q! t[[ZϨ^i
&JOdEa͋|#8J1.Iʤrwu6M/gˬ]~xN|1A47#j]umPӑׄ,=CE$}0<JyqHbn((z6M;:tƫ/1K۵/9Ose~>4G{^ڰŋ"ʋz |AQEOu&H)T~^b"Y PU.p m/8A$Tf&NiBGf\%)I -` 1<gunW= m$ظ'=ȼ1+'a;HT7A#" -|Ř$w4$B)FQH-.n QX~8WuqXFIPT-x-xPw D2vmhiB̀ZHMp9qQyRbeO1ЫUQ4bwV;q@ \JkNWs>:.8uJʨk7oxԶ>% -uG: D M\" -{]O=M{&l5G0o+<k&9F"[o/@T*4-Aǥ`l;SX8l=/4)OsqO8'.<zA(gEތ^ mUwٗvˍ|o2W:|a{f.*,>a|la9m -gs;`ueGB1sXxFUg9bXQ[^ـ Uͫ/S7%k
tZlWbTkPڃUU - +xڵXYo6~_IfY^yH +q,[u}/pX)D&3"$<sl;=mt7ա<cHP~T֫wәԕ'>4n[p=S\eNKͥ.5_+?֗17/7ԁNҬ1xe)^,ܘAN}ZWzٗ_r>ɸd*X鶫p&i2O9aCPE+^_0egLvhV?k*mŕYL)NQn*T,
VQ]6S +x_v6I;0 +#~lx1䟾\:XWE}֕L]),=wSD0v`dlg$p 7ٴ!wL+m}ꎎT +}%ÉAdtځ9{P0A}CusC17B Pץ.%fC$>y8ѪS00==ggeAxAGUe#BQvxXendstream endobj 895 0 obj << /Type /Page @@ -7366,24 +7367,20 @@ endobj /D [895 0 R /XYZ 74.4095 793.4011 null] >> endobj 898 0 obj << -/D [895 0 R /XYZ 74.4095 453.2236 null] +/D [895 0 R /XYZ 74.4095 336.0153 null] >> endobj 894 0 obj << /Font << /F61 259 0 R /F83 824 0 R /F28 209 0 R /F26 206 0 R >> /ProcSet [ /PDF /Text ] >> endobj 901 0 obj << -/Length 1500 +/Length 1431 /Filter /FlateDecode >> stream -xڵXKoFW9I@7=$u:A$2C-%||حpI)ʉ[r|3s(|I"i/`Y3/7keNJ@k\^;\(}vF/O76LpYylEMLj*6ej^gŗ׳W);H=>R(D zF|%,zv'-g{lA<ƽƬ"cW7&b,pRG$,D@8.( h0$P -0 -fh> -˯HVa@Ё~\ߑTO{N'vt@tqFWcRx<$iSa -iW)iP+= -pnzU,Jڴɰp]W
JI`rBT7rv# #y.8zR mI-6`b~1Easp\A2١1v.4||eܾhHן'M _`͗rm7tt1I1"!<DS_*OF!{;ւ6Z\=gS(cqgĭR16^ -<#LNdfO}2NUަЄӕͦR]q]|\{6Y<3nj^myV +xڵXKs6Wprf"o`ikgI#O{s)H☢T>i:@%˩Ab-"I$MT%Ƃl5~t觟5bh-y"<s>)š ㉢4<ˍc6YM50bb_qJbӜRtLxL1J53Q"XwA KF&$ö[4M
d RP"`$4a%0%(/eLDo<-j1R`4TV}xJEsA$?GŨ}6@Qub:DDҞϱ)KbZ3YHL1Wa4yi۴WcFt٦ZEceڼtTvW뵷kXY_Mjo4ϖj,\-<Kf[-]FcE$ ,rf1@ ÓΖp+!"S.<0smJS(jǟa"qjJHHӺݰRS0þ&zw^&-_9>Ɯ7o_3XA-,H<q9!@
.V + 0sA/L H/Md\d
[}h8s]Dc0+t<SnKɿKi`5b<*ҫlD1\DX<ޓLX P! I\^ڴu>sԺ+tkO&1`V\ϝ蒅iǕyݧ$;1,n_wf`ћ w'͋RS)jIe
lY! +"5Yv8C@I|W\@0|#8+LuAuQ)ba/K0kci;q:pYP<~ ,Jw_s710N;#5gĦmVИ|_?pϗj){pȅ)#|#>"MhK%[l]> ,nOnZμ^D
Ow@ax.k'NFn<gCendstream endobj 900 0 obj << /Type /Page @@ -7396,61 +7393,140 @@ endobj /D [900 0 R /XYZ 74.4095 793.4011 null] >> endobj 166 0 obj << -/D [900 0 R /XYZ 74.4095 358.2768 null] ->> endobj -903 0 obj << -/D [900 0 R /XYZ 74.4095 266.732 null] +/D [900 0 R /XYZ 74.4095 221.4355 null] >> endobj -904 0 obj << -/D [900 0 R /XYZ 74.4095 238.7914 null] +899 0 obj << +/Font << /F61 259 0 R /F83 824 0 R /F28 209 0 R /F26 206 0 R >> +/ProcSet [ /PDF /Text ] >> endobj +906 0 obj << +/Length 2732 +/Filter /FlateDecode +>> +stream +xڭZYsF~ׯ9q>e'8:VG$lT +vfP<o9Q"{*jڕ$ +86۬ZH(Tq3LQ?WlYcZ<[ +zz`Mؗ'08FHWZX&Wi/:Y#.XH$"Yy$"/i<1Y@X;P5T(UuY͋l'SVO +zP%j״){`JhXLj$YS φ:rDOxc3r7g^5MKPrzz>1+
o8AWx`O8\5%ɯn~i8209)ErCJ +S/@^#ǡ\u +ʍ%x]S$rСJo_ j*`P!$=K J[~J!?CT4j +ؙ.aei_ޟʗ.&sFxK'"inëD<kUu*TdxӺcڼz2?dXh
pkc#ܬr?UL +=dHD8 ++v4컴('T҇~=DQXi(^|iN-h~
|sMTflSG9uU=.Ohq~T@uЕ#_4b
'`iK/=lN)Ңâ +a!wTk&b\OhZIFB71[_72Lc/ +I8^.zj2ZZz79ʟr'(xIؑi[hbqkpD"da3]?yfDHDhsb7m\r[$eQJ)O;҆Oڀ4㌌&Ew9N +Iĺ(`WJ0 ++s5Íy&" +v
Sw!B3 +endobj 905 0 obj << -/D [900 0 R /XYZ 74.4095 210.7431 null] +/Type /Page +/Contents 906 0 R +/Resources 904 0 R +/MediaBox [0 0 595.2757 841.8898] +/Parent 883 0 R +/Annots [ 915 0 R 916 0 R 917 0 R 918 0 R ] >> endobj -906 0 obj << -/D [900 0 R /XYZ 74.4095 164.7675 null] +915 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [265.8494 326.1609 280.305 336.7432] +/Subtype /Link +/A << /S /GoTo /D (figure.3.8) >> >> endobj -899 0 obj << -/Font << /F61 259 0 R /F83 824 0 R /F28 209 0 R /F26 206 0 R /F35 221 0 R >> -/ProcSet [ /PDF /Text ] +916 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [448.8126 243.1787 463.2682 253.761] +/Subtype /Link +/A << /S /GoTo /D (figure.2.1) >> +>> endobj +917 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[ |
