Add GSC Wild encounter tables

Fishing is a different format -- todo.
This commit is contained in:
Kurt
2017-02-26 18:23:29 -08:00
parent c46875ffe7
commit 113706d1e6
10 changed files with 616 additions and 17 deletions

View File

@@ -167,7 +167,10 @@ private static void MarkG7SMSlots(ref EncounterArea[] Areas)
{
Evolves2 = new EvolutionTree(new[] { Resources.evos_gsc }, GameVersion.GSC, PersonalTable.C, MaxSpeciesID_2);
SlotsGSC = new EncounterArea[0]; // todo
var g = EncounterArea.getArray2_GW(Resources.encounter_gold);
var s = EncounterArea.getArray2_GW(Resources.encounter_silver);
var c = EncounterArea.getArray2_GW(Resources.encounter_crystal);
SlotsGSC = addExtraTableSlots(addExtraTableSlots(g, s), c);
StaticGSC = getStaticEncounters(GameVersion.GSC);
}
@@ -1206,7 +1209,11 @@ private static IEnumerable<EncounterSlot> getValidEncounterSlots(PKM pkm, Encoun
// Pressure Slot
EncounterSlot slotMax = encounterSlots.OrderByDescending(slot => slot.LevelMax).FirstOrDefault();
if (slotMax != null)
slotMax = new EncounterSlot(slotMax) { Pressure = true, Form = pkm.AltForm };
{
slotMax = slotMax.Clone();
slotMax.Pressure = true;
slotMax.Form = pkm.AltForm;
};
if (gen >= 6 && !DexNav)
{
@@ -1230,7 +1237,8 @@ private static IEnumerable<EncounterSlot> getValidEncounterSlots(PKM pkm, Encoun
foreach (EncounterSlot s in eslots)
{
bool nav = s.AllowDexNav && (pkm.RelearnMove1 != 0 || pkm.AbilityNumber == 4);
EncounterSlot slot = new EncounterSlot(s) { DexNav = nav };
EncounterSlot slot = s.Clone();
slot.DexNav = nav;
if (slot.LevelMin > lvl)
slot.WhiteFlute = true;

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace PKHeX.Core
@@ -36,6 +37,40 @@ private static EncounterSlot1[] getSlots1_F(byte[] data, ref int ofs)
int count = data[ofs++];
return readSlots(data, ref ofs, count, SlotType.Super_Rod, -1);
}
private static EncounterSlot1[] getSlots2_GW(byte[] data, ref int ofs, SlotType t, int slotSets, int slotCount)
{
byte[] rates = new byte[slotSets];
for (int i = 0; i < rates.Length; i++)
rates[i] = data[ofs++];
var slots = readSlots(data, ref ofs, slotSets * slotCount, t, rates[0]);
for (int r = 1; r < slotSets; r++)
{
for (int i = 0; i < slotCount; i++)
{
int index = i + r*slotCount;
slots[index].Rate = rates[r];
slots[index].SlotNumber = i;
}
}
return slots;
}
private static IEnumerable<EncounterArea> getAreas2(byte[] data, ref int ofs, SlotType t, int slotSets, int slotCount)
{
var areas = new List<EncounterArea>();
while (data[ofs] != 0xFF) // end
{
areas.Add(new EncounterArea
{
Location = data[ofs++] << 8 | data[ofs++],
Slots = getSlots2_GW(data, ref ofs, t, slotSets, slotCount),
});
}
return areas;
}
/// <summary>
/// RBY Format Slot Getter from data.
@@ -61,10 +96,17 @@ private static EncounterSlot1[] readSlots(byte[] data, ref int ofs, int count, S
Species = spec,
Type = t,
Rate = rate,
SlotNumber = i,
};
}
return slots;
}
/// <summary>
/// Gets the encounter areas with <see cref="EncounterSlot"/> information from Generation 1 Grass/Water data.
/// </summary>
/// <param name="data">Input raw data.</param>
/// <returns>Array of encounter areas.</returns>
public static EncounterArea[] getArray1_GW(byte[] data)
{
// RBY Format
@@ -93,6 +135,11 @@ public static EncounterArea[] getArray1_GW(byte[] data)
}
return areas.Where(area => area.Slots.Any()).ToArray();
}
/// <summary>
/// Gets the encounter areas with <see cref="EncounterSlot"/> information from Pokémon Yellow (Generation 1) Fishing data.
/// </summary>
/// <param name="data">Input raw data.</param>
/// <returns>Array of encounter areas.</returns>
public static EncounterArea[] getArray1_FY(byte[] data)
{
const int size = 9;
@@ -109,6 +156,11 @@ public static EncounterArea[] getArray1_FY(byte[] data)
}
return areas;
}
/// <summary>
/// Gets the encounter areas with <see cref="EncounterSlot"/> information from Generation 1 Fishing data.
/// </summary>
/// <param name="data">Input raw data.</param>
/// <returns>Array of encounter areas.</returns>
public static EncounterArea[] getArray1_F(byte[] data)
{
var ptr = new int[255];
@@ -136,6 +188,25 @@ public static EncounterArea[] getArray1_F(byte[] data)
}
return areas;
}
/// <summary>
/// Gets the encounter areas with <see cref="EncounterSlot"/> information from Generation 2 Grass/Water data.
/// </summary>
/// <param name="data">Input raw data.</param>
/// <returns>Array of encounter areas.</returns>
public static EncounterArea[] getArray2_GW(byte[] data)
{
int ofs = 0;
var areas = new List<EncounterArea>();
areas.AddRange(getAreas2(data, ref ofs, SlotType.Grass, 3, 7)); // Johto Grass
areas.AddRange(getAreas2(data, ref ofs, SlotType.Surf, 1, 3)); // Johto Water
areas.AddRange(getAreas2(data, ref ofs, SlotType.Grass, 3, 7)); // Kanto Grass
areas.AddRange(getAreas2(data, ref ofs, SlotType.Surf, 1, 3)); // Kanto Water
areas.AddRange(getAreas2(data, ref ofs, SlotType.Swarm, 3, 7)); // Swarm
areas.AddRange(getAreas2(data, ref ofs, SlotType.Special, 1, 3)); // Union Cave
return areas.ToArray();
}
public static EncounterArea[] getArray(byte[][] entries)
{
if (entries == null)

View File

@@ -13,16 +13,20 @@ public class EncounterSlot : IEncounterable
public bool WhiteFlute;
public bool BlackFlute;
public bool Normal => !(WhiteFlute || BlackFlute || DexNav);
public int SlotNumber;
public EncounterSlot() { }
public EncounterSlot(EncounterSlot template)
public virtual EncounterSlot Clone()
{
Species = template.Species;
AllowDexNav = template.AllowDexNav;
LevelMax = template.LevelMax;
LevelMin = template.LevelMin;
Type = template.Type;
Pressure = template.Pressure;
return new EncounterSlot
{
Species = Species,
AllowDexNav = AllowDexNav,
LevelMax = LevelMax,
LevelMin = LevelMin,
Type = Type,
Pressure = Pressure,
SlotNumber = SlotNumber,
};
}
public string Name
@@ -40,13 +44,17 @@ public class EncounterSlot1 : EncounterSlot
{
public int Rate;
public EncounterSlot1() { }
public EncounterSlot1(EncounterSlot1 template)
public override EncounterSlot Clone()
{
Species = template.Species;
LevelMax = template.LevelMax;
LevelMin = template.LevelMin;
Type = template.Type;
Rate = template.Rate;
return new EncounterSlot1
{
Species = Species,
LevelMax = LevelMax,
LevelMin = LevelMin,
Type = Type,
Rate = Rate,
SlotNumber = SlotNumber,
};
}
}
}

View File

@@ -17,5 +17,6 @@ public enum SlotType
FriendSafari,
Special,
SOS,
Swarm,
}
}

View File

@@ -262,10 +262,13 @@
</Compile>
<None Include="Resources\byte\eggmove_sm.pkl" />
<None Include="Resources\byte\encounter_blue.pkl" />
<None Include="Resources\byte\encounter_crystal.pkl" />
<None Include="Resources\byte\encounter_gold.pkl" />
<None Include="Resources\byte\encounter_mn.pkl" />
<None Include="Resources\byte\encounter_mn_sos.pkl" />
<None Include="Resources\byte\encounter_rb_f.pkl" />
<None Include="Resources\byte\encounter_red.pkl" />
<None Include="Resources\byte\encounter_silver.pkl" />
<None Include="Resources\byte\encounter_sn.pkl" />
<None Include="Resources\byte\encounter_sn_sos.pkl" />
<None Include="Resources\byte\encounter_yellow.pkl" />

View File

@@ -12472,6 +12472,26 @@ public class Resources {
}
}
/// <summary>
/// Looks up a localized resource of type System.Byte[].
/// </summary>
public static byte[] encounter_crystal {
get {
object obj = ResourceManager.GetObject("encounter_crystal", resourceCulture);
return ((byte[])(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Byte[].
/// </summary>
public static byte[] encounter_gold {
get {
object obj = ResourceManager.GetObject("encounter_gold", resourceCulture);
return ((byte[])(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Byte[].
/// </summary>
@@ -12522,6 +12542,16 @@ public class Resources {
}
}
/// <summary>
/// Looks up a localized resource of type System.Byte[].
/// </summary>
public static byte[] encounter_silver {
get {
object obj = ResourceManager.GetObject("encounter_silver", resourceCulture);
return ((byte[])(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Byte[].
/// </summary>

View File

@@ -7420,4 +7420,13 @@
<data name="lvlmove_gs" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\byte\lvlmove_gs.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="encounter_crystal" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\byte\encounter_crystal.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="encounter_gold" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\byte\encounter_gold.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="encounter_silver" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\byte\encounter_silver.pkl;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@@ -0,0 +1,165 @@
\\\\\\\\\\\\\\\\\\\\ \\\
\\\ \\\ \\\
m)
m)
m)mm) mmnmm) mmnmm) mmn <0E>

 <0E>

6
<EFBFBD><0E><0F>
0 0 0
<14><16><12><18><14><16><16><14><16><12><18><14><16><16><14><16><12><18><16><16><16><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05>%J))__J))__J<05>)__&J))_J))_J)<08>_'
)*)J__)*)J__)*<16>J__()))O)OO)))O)OO)))O)OO))))O*OO)))O*OO)))O*OO4


 ..

 ..+0+6<07>..9
)B
*J
)B
*J
)<0E>
*J:
JB)**
JB)**
J)<0F>**;K CJB**K CJB**KJ*<1C> * *<))*BJ))*BJ))*<10>J=<15>)*<17>***<15>)*<17>***<15>)*<17>***><16>)*<18>**|<16>)*<18>**|<16>)*<18>**<16>?<17>)*<19>*||<17>)*<19>*||<17>)*<19>*<16><18>@<17>)*<19>*||<17>)*<19>*||<17>)*<19>*<16><18>A<18>)*<1A>|||<18>)*<1A>|||<18>)*<1A><16><18><1A>Bb)Vb*VVb)Vb*VVb)bb***Cb)Vb*VVb)Vb*VVb)bb***Db)Vb*VVb)Vb*VVb)bb***Eb)Vb*VVb)Vb*VVb)bb***Fb)Vb*VVb)Vb*VVb)bb***Gb)Vb*VVb)Vb*VVb)bb***Hb)Vb*VVb)Vb*VVb)bb***Ib)Vb*VVb)Vb*VVb)bb***J+K,<2C>*_-~-*<14><0F>+K,<2C>*_-~-*<14><0F>+K,**_**-7.*.*K0*0C/<2F>./0/<0F><14>0*0C/<2F>./0/<0F><14>0*07.*./0/-<2D>-<2D>L3*0_0K2<4B><14><0F><14>3*0_0K2<4B><14><0F><14>3*0_0K1*-75*5*M0*.*2*./0/2/4/0*.*2*./0/2/4/-<2D>0*2*./0/2/4/N
J)JJ<02>)<04>J)JJ))<04>J)JJ))<04>O
J)K<19><14>**J)K<19><1E>**J)K<14><19>**<02><03><03><03><02><03><03><03><02><03><03><03><03>


<04><04>


<04><04><03><03><<04>)<04><04><04>
E
<05><05>
E
<05><05><04><E<05>)\\
E<06><07><07>E<06><07><07><04>E)<07>\\J<06><07><07>J<06><07><07>)J) 
<EFBFBD>  
? '
<EFBFBD>
<EFBFBD>
<EFBFBD>  
? '
<EFBFBD>
<EFBFBD> `  <0C>
? '
<EFBFBD>
<EFBFBD>
 <0C>
:
? '
<EFBFBD> <0C> <0C>
:
? '
<EFBFBD> <0C> `<0E>
6
? '
<EFBFBD> <0C>
<04>E:E:<04><04>E<05><05>\\

<EFBFBD>::<0F><0F>
::
<EFBFBD><0E><0F><10><0F><0F><0F> Q
<EFBFBD>
<EFBFBD>
<EFBFBD>Q
<EFBFBD>
<EFBFBD>
<EFBFBD>4Q<10>444
Q<0F><0F><0F>Q<0F><0F><0F>4Q<10>444


)*<0F>** <0F>S<0F><11><11><0F>S<0F><11><11>0<10>011rlEFlllrlEFlllr<EF===JK<18><19><14><1B><1B>JK<18><19><1E><1B><1B>JK<18>KKKK JJ<02>JJJJ)r*M*,N)T+U+U)r*M*,N)T+U+U)r*=**,=(*,*,*<2A><0F><14><0F>%<0F><14><0F>&<0F><14><0F>'
H<14>I(OO
O)OOP46
679
v<14>w;v<19>w<v<14>wD
HtIH
ttII
tIuK#w#7#vN<0F>
<EFBFBD><05>O<0F>
<EFBFBD><05>Q
<0F>
<EFBFBD>
<EFBFBD>HHI<<=<<=
H<14>I HHI

667HHIHI<14>
vvw <14><0F>
<EFBFBD><<=<14><0F><05>HHIHHI
<<=HHIHHI <<= <0F>
<EFBFBD><0F>
<0F>
<EFBFBD><05>#=(=#<<3C>T
22 223332222333222 2 3 3 3U)J .
J##)J .
J##)J# .
J # #W
h J B )C i i
h J B )C i i ) J J])))X hJ_ )iss hJ_ )iss )J_)]**["K o!_"*##p#p"K o!_"*##p#p"*"K _$K&K(K(KS)*OOO)*OOO)*OOO
<03><06><03><06><02><03><04><04>
<03> <07>
 <03><03><05><07><07><04><04>









)## 









)##

<EFBFBD> ?'??

<EFBFBD> ?'??
<EFBFBD>
4<0F> ?'?? 

<EFBFBD>Q '<0F><0F>

<EFBFBD>Q '<0F><0F>
4
`Q6 '<12>'??<12>'??4<11><12>5'??<11>?:'@@<11>?:'@@4<14>?]'@@
iiii01)di}}di}}0d1)}} <0E>
Q<10><10><0E>
Q<10><10>`
4Q<10>aa!<19><1B><1B>q!<19><1B><1B>q0<17><19>1<19><19>q!<1C><1E><1E>q!<1C><1E><1E>q0<1A><1C>1<1C><1C>q!<19><1B><1B>q!<19><1B><1B>q0<17><19>1<19><19>qXXYYXX<1D>YYXXX<1D><1D>YYXX !X!Y!Y<1D>X  <20>!Y!YXXX X!X!Y!YXXYYXX<1D>YYXXXXXYYr#rzzzr#rzzzr#rrrrTMTM<<

View File

@@ -0,0 +1,163 @@
\\\\\\\\\\\\\\\\\\\\ \\\
\\\ \\\ \\\
m)m
m)m
m)mmm)~~mm~)mm)~~


<0B> 
<EFBFBD>
<EFBFBD>
<EFBFBD> <0C> <0C>
<EFBFBD><0E><0E>
<14><16><12><18><14><16><16><14><16><12><18><14><16><16><14><16><12><18><14><16><16><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05>J))__J))__J))__J)_ )J)_ )J)_ )
)*J__)*J__)*J__ )))O)OO)))O)OO)))O)OO!)))O*OO)))O*OO)))O*OO,

 
.)..

  )..++).)..1
))BJ<0F>
))BJ<0F>
))BJ<0F>2
J
BJB))
J
BJB))
J
BJB))3K CJB**K CJB**K CJB**4))BJ))BJ))BJ5<15>*)<17>)||<15>*)<17>|||<15>*)<17>)||6<15>*)<17>)||<15>*)<17>|||<15>*)<17>)||7<16>*)<18>)||<16>*)<18>|||<16>*)<18>)||8<16>*)<18>)||<16>*)<18>|||<16>*)<18>)||9<17>*)<19>)||<17>*)<19>|||<17>*)<19>)||:b)bV*VVb)bV*VVb)bV*VV;b)bV*VVb)bV*VVb)bV*VV<b)bV*VVb)bV*VVb)bV*VV=b)bV*VVb)bV*VVb)bV*VV>b)bV*VVb)bV*VVb)bV*VV?b)bV*VVb)bV*VVb)bV*VV@b)bV*VVb)bV*VVb)bV*VVAb)bV*VVb)bV*VVb)bV*VVB*_,<2C>+K+K-*<14><0F>*_,<2C>+K+K-*<14><0F>*_,<2C>+K+K-*<14><0F>C-<2D>07/<2F>-<2D>0*<14><0F>-<2D>07/<2F>-<2D>0*<14><0F>-<2D>07/<2F>-<2D>0*<14><0F>D3*0_0*2<>37<14><0F>3*0_0*2<>37<14><0F>3*0_0*2<>37<14><0F>E-<2D>07/<2F>-<2D>0*<14><0F>-<2D>07/<2F>-<2D>0*<14><0F>-<2D>07/<2F>-<2D>0*<14><0F>F
J)JJ))<04>J)JJ))<04>J)JJ))<04>G
J)K<14><19>**J)K<14><19>**J)K<14><19>**<03><02><03><02><02><03><03><04><04>

 
 
  <03><04><04><04><04>
E 
  
E 
  <04>E<05><05><05>
E<06><06><04>)E<06><06><06>E<06><08>))<06><08>))<06><08>)))) 
`  `
?

<EFBFBD>
<EFBFBD>
`  `
?

<EFBFBD>
<EFBFBD>
`  `
?

<EFBFBD>
<EFBFBD>
 `
?
<EFBFBD> <0C> `
?
<EFBFBD> <0C> `
?<0E>
<EFBFBD> <0C>
 

:
<EFBFBD> 
:
<EFBFBD>:: 
<EFBFBD>
:
<EFBFBD><0F><0F>

<0F>:
<0F>:::
<EFBFBD><0F><0F>:<0F><0F><0F> QS
<EFBFBD>
<EFBFBD>
<EFBFBD>QS
<EFBFBD>
<EFBFBD>
<EFBFBD>Q
<EFBFBD>
<EFBFBD>
<EFBFBD>
QS<0F><0F><0F>QS<0F><0F><0F>Q<0F><0F><0F>8
<EFBFBD><0F><11><11>8
<EFBFBD><0F><11><11>8
<EFBFBD>))<0F><11><11> <0F><0F><0F>0<0F><0F><0F><11><11><11><0F><0F><11>0<0F>00rFElFllrFElFllrFElFllJK<18><14>KKKJK<18><14>KKKJK<18><14>KKK JJ''JJ''JJJ'')r*M*<2A>,N)T+U+U)r*M*<2A>,N)T+U+U)r*M*<2A>,N&<26>*<2A>*<2A><><0F><14><0F><0F><14><0F><0F><14><0F>
H<14>I OO
O!
OOP,6
671
vvw3vvw4vvw<
HtI@
ttIA
tIuC#w(w#vF<0F>
<EFBFBD><05>G<0F>
<EFBFBD><05>I
<0F>
<EFBFBD>
<EFBFBD><<=<<=
H<14>I HHI

667HHIHI<14>
vvw <14><0F>
<EFBFBD><<=<14><0F><05>HHIHHI
<<=HHIHHI <<= 
<0F>
<EFBFBD><0F>
<0F>
<EFBFBD><05>#=(=#<HHI<>K
222
2333222
2333222
2333L)J .
##)J .
##)J .
##N
h
J B)C
h
h
h
J B)C
h
h
h
J B)C
h
hO h J_
)iss h J_
)iss h J_
)issR K *!<21>"_$_#o#o K *!<21>"_$_#o#o K *!<21>"_$_#o#oJ
)*OOO)*OOO)*OOO
<03><06><03><06><02><03><04><04>
  
 <03><03><05><07><07>'
'
)'
 '
'
)'


View File

@@ -0,0 +1,141 @@
\\\\\\\\\\\\\\\\\\\\ \\\
\\\ \\\ \\\
m)m
m)m
m)mmm)~~mm~)mm)~~



 <0B> 
<EFBFBD>
<EFBFBD>
<EFBFBD> <0C> <0C>
<EFBFBD><0E><0E>
<14><16><12><18><14><16><16><14><16><12><18><14><16><16><14><16><12><18><14><16><16><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05><05>J))__J))__J))__J)_ )J)_ )J)_ )
)*J__)*J__)*J__ )))O)OO)))O)OO)))O)OO!)))O*OO)))O*OO)))O*OO,


.)..

)..++).)..1
))BJ<0F>
))BJ<0F>
))BJ<0F>2
J
BJB))
J
BJB))
J
BJB))3K CJB**K CJB**K CJB**4))BJ))BJ))BJ5<15>*<16><17>)||<15>*<16><17>|||<15>*<16><17>)||6<15>*<16><17>)||<15>*<16><17>|||<15>*<16><17>)||7<16>*<17><18>)||<16>*<17><18>|||<16>*<17><18>)||8<16>*<17><18>)||<16>*<17><18>|||<16>*<17><18>)||9<17>*<18><19>)||<17>*<18><19>|||<17>*<18><19>)||:b)bV*VVb)bV*VVb)bV*VV;b)bV*VVb)bV*VVb)bV*VV<b)bV*VVb)bV*VVb)bV*VV=b)bV*VVb)bV*VVb)bV*VV>b)bV*VVb)bV*VVb)bV*VV?b)bV*VVb)bV*VVb)bV*VV@b)bV*VVb)bV*VVb)bV*VVAb)bV*VVb)bV*VVb)bV*VVB*_,<2C>+K+K-*<14><0F>*_,<2C>+K+K-*<14><0F>*_,<2C>+K+K-*<14><0F>C-<2D>07/<2F>-<2D>0*<14><0F>-<2D>07/<2F>-<2D>0*<14><0F>-<2D>07/<2F>-<2D>0*<14><0F>D3*0_0*2<>37<14><0F>3*0_0*2<>37<14><0F>3*0_0*2<>37<14><0F>E-<2D>07/<2F>-<2D>0*<14><0F>-<2D>07/<2F>-<2D>0*<14><0F>-<2D>07/<2F>-<2D>0*<14><0F>F
J)JJ))<04>J)JJ))<04>J)JJ))<04>G
J)K<14><19>**J)K<14><19>**J)K<14><19>**<03><02><03><02><02><03><03><04><04><03>



<02><04><04><04><04><04>
E
E
<03>E<05><05><05>
E<06><06><04>)E<06><06><06>E<06><08>))<06><08>))<06><08>)))) 
`  `
?

<EFBFBD>
<EFBFBD>
`  `
?

<EFBFBD>
<EFBFBD>
`  `
?

<EFBFBD>
<EFBFBD>
  `
?
<EFBFBD> <0C>  `
?
<EFBFBD> <0C>  `
?<0E>
<EFBFBD> <0C>
 

%
<EFBFBD>  
%
<EFBFBD>%% 
<EFBFBD>
%
<EFBFBD><0F><0F>

<EFBFBD><0F>%<0F><0F><0F>
<0F>%%%
<EFBFBD><0F><0F>%<0F><0F><0F> 4QS
<EFBFBD>
<EFBFBD>
<EFBFBD>4QS
<EFBFBD>
<EFBFBD>
<EFBFBD>4Q4
<EFBFBD>
<EFBFBD>
<EFBFBD>
4QS<0F><0F><0F>4QS<0F><0F><0F>4Q4<0F><0F><0F>
<EFBFBD><0F><0F><11><11>
<EFBFBD><0F><0F><11><11>
<EFBFBD>)<0F>)<0F><11><11> <0F><0F><0F>0<0F><0F><0F><11><11><11><0F><0F><11>0<0F>00rFElFllrFElFllrFElFllJKK<14>K<1B><1B>JKK<14>K<1B><1B>JKK<14>K<1B><1B> JJ''JJ''JJJ'')r*M*<2A>,N)T+U+U)r*M*<2A>,N)T+U+U)r*M*<2A>,N&<26>*<2A>*<2A><><0F><14><0F><0F><14><0F><0F><14><0F>
H<14>I OO
O!OOP,6
671
vvw3vvw4vvw<
HtI@
ttIA
tIuC#w(w#vF<0F>
<EFBFBD><05>G<0F>
<EFBFBD><05>I
<0F>
<EFBFBD>
<EFBFBD><<=<<=
H<14>I HHI

667HHIHIH
vvw <14><0F>
<EFBFBD><<=<14><0F><05>HHIHHI
<<=HHIHHI <<= <0F>
<EFBFBD><0F>
<0F>
<EFBFBD><05>#=(=#<HHI<>K
222
2333222
2333222
2333L)J) .
J##)J) .
J##)J) .
J##N
h
J B)C
h
h
h
J B)C
h
h
h
J B)C