501 lines
15 KiB
C#
501 lines
15 KiB
C#
using System;
|
|
using Cpp2IlInjected;
|
|
using DigitalOpus.MB.Core;
|
|
using UnityEngine;
|
|
|
|
// Token: 0x02000087 RID: 135
|
|
[Token(Token = "0x2000087")]
|
|
public class AI_SealGhost : AI_NPC
|
|
{
|
|
// Token: 0x060005AE RID: 1454 RVA: 0x0000DF4C File Offset: 0x0000C14C
|
|
[Token(Token = "0x60005AE")]
|
|
[Address(RVA = "0x17816E0", Offset = "0x177FEE0", VA = "0x1817816E0", Slot = "4")]
|
|
public override void Start(GameObject This, NPCManage NPCM)
|
|
{
|
|
base.Start(This, NPCM);
|
|
SealGhostEffectPlay component = This.GetComponent<SealGhostEffectPlay>();
|
|
this.g_Effect = component;
|
|
SealGhostEffectPlay sealGhostEffectPlay = this.g_Effect;
|
|
MoveController g_Move = this.g_Move;
|
|
sealGhostEffectPlay.InitData(g_Move);
|
|
MoveController g_Move2 = this.g_Move;
|
|
this.g_fDragRotation = 0.6f;
|
|
g_Move2.SetDragRotation(0.6f);
|
|
this.g_Move.SetDragMove(9f);
|
|
MoveController g_Move3 = this.g_Move;
|
|
this.g_fGravity = 0f;
|
|
g_Move3.gravity = 0f;
|
|
this.g_fVisionDistance = 200f;
|
|
this.g_fVisionAngle = 60f;
|
|
this.g_fWalkSpeed = 7.5f;
|
|
this.g_fRunSpeed = 12f;
|
|
this.g_fDashSpeed = 18f;
|
|
Shake shake = new Shake();
|
|
this.g_ShakeHead = shake;
|
|
GameObject g_This = this.g_This;
|
|
Shake shake2 = this.g_ShakeHead;
|
|
Transform transform = Common.FindChild(g_This.transform, "Bip001 Head");
|
|
int num = 0;
|
|
shake2.Start(transform, num != 0);
|
|
Shake shake3 = new Shake();
|
|
this.g_ShakeSpine = shake3;
|
|
GameObject g_This2 = this.g_This;
|
|
Shake shake4 = this.g_ShakeSpine;
|
|
Transform transform2 = Common.FindChild(g_This2.transform, "Bip001 Spine1");
|
|
int num2 = 0;
|
|
shake4.Start(transform2, num2 != 0);
|
|
Shake shake5 = new Shake();
|
|
this.g_ShakeUpperArmL = shake5;
|
|
GameObject g_This3 = this.g_This;
|
|
Shake shake6 = this.g_ShakeUpperArmL;
|
|
Transform transform3 = Common.FindChild(g_This3.transform, "Bip001 L UpperArm");
|
|
int num3 = 0;
|
|
shake6.Start(transform3, num3 != 0);
|
|
Shake shake7 = new Shake();
|
|
this.g_ShakeUpperArmR = shake7;
|
|
GameObject g_This4 = this.g_This;
|
|
Shake shake8 = this.g_ShakeUpperArmR;
|
|
Transform transform4 = Common.FindChild(g_This4.transform, "Bip001 R UpperArm");
|
|
int num4 = 0;
|
|
shake8.Start(transform4, num4 != 0);
|
|
Shake shake9 = new Shake();
|
|
this.g_ShakeThighL = shake9;
|
|
GameObject g_This5 = this.g_This;
|
|
Shake shake10 = this.g_ShakeThighL;
|
|
Transform transform5 = Common.FindChild(g_This5.transform, "Bip001 L Thigh");
|
|
int num5 = 0;
|
|
shake10.Start(transform5, num5 != 0);
|
|
Shake shake11 = new Shake();
|
|
this.g_ShakeThighR = shake11;
|
|
GameObject g_This6 = this.g_This;
|
|
Shake shake12 = this.g_ShakeThighR;
|
|
Transform transform6 = Common.FindChild(g_This6.transform, "Bip001 R Thigh");
|
|
int num6 = 0;
|
|
shake12.Start(transform6, num6 != 0);
|
|
Shake shake13 = new Shake();
|
|
this.g_ShakeAll = shake13;
|
|
GameObject g_This7 = this.g_This;
|
|
Shake shake14 = this.g_ShakeAll;
|
|
Transform transform7 = Common.FindChild(g_This7.transform, "Bip_GhostE");
|
|
int num7 = 0;
|
|
shake14.Start(transform7, num7 != 0);
|
|
Animator g_Anim = this.g_Anim;
|
|
this.g_fAniSkirtWeights = 0.3f;
|
|
g_Anim.SetLayerWeight(1, 0.3f);
|
|
Animator g_Anim2 = this.g_Anim;
|
|
this.g_fAniDamageHead = 0f;
|
|
int num8 = 0;
|
|
g_Anim2.SetLayerWeight(2, (float)num8);
|
|
this.g_Status = (AI_NPC.AIStatus)((ulong)17L);
|
|
}
|
|
|
|
// Token: 0x060005AF RID: 1455 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005AF")]
|
|
[Address(RVA = "0x1781C20", Offset = "0x1780420", VA = "0x181781C20", Slot = "5")]
|
|
public override void Update(float fDeltaTime)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005B0 RID: 1456 RVA: 0x0000E218 File Offset: 0x0000C418
|
|
[Token(Token = "0x60005B0")]
|
|
[Address(RVA = "0x1780EA0", Offset = "0x177F6A0", VA = "0x181780EA0", Slot = "6")]
|
|
public override void LateUpdate()
|
|
{
|
|
this.g_ShakeHead.Update();
|
|
this.g_ShakeSpine.Update();
|
|
this.g_ShakeUpperArmL.Update();
|
|
this.g_ShakeUpperArmR.Update();
|
|
this.g_ShakeThighL.Update();
|
|
this.g_ShakeThighR.Update();
|
|
this.g_ShakeAll.Update();
|
|
}
|
|
|
|
// Token: 0x060005B1 RID: 1457 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005B1")]
|
|
[Address(RVA = "0x177F550", Offset = "0x177DD50", VA = "0x18177F550", Slot = "22")]
|
|
public override void Fighting()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005B2 RID: 1458 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005B2")]
|
|
[Address(RVA = "0x1780270", Offset = "0x177EA70", VA = "0x181780270")]
|
|
private void InitFightStatus(AI_SealGhost.AIFighting Status)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005B3 RID: 1459 RVA: 0x0000E278 File Offset: 0x0000C478
|
|
[Token(Token = "0x60005B3")]
|
|
[Address(RVA = "0x177DFA0", Offset = "0x177C7A0", VA = "0x18177DFA0")]
|
|
private void AttackSelect()
|
|
{
|
|
int num = UnityEngine.Random.Range(0, 6);
|
|
if (num == 0)
|
|
{
|
|
this.g_NextFighting = (AI_SealGhost.AIFighting)((ulong)4L);
|
|
this.g_fPlayerDistanceFar = 12f;
|
|
this.g_fPlayerDistanceNear = 9f;
|
|
return;
|
|
}
|
|
if (num == 0)
|
|
{
|
|
this.g_NextFighting = (AI_SealGhost.AIFighting)((ulong)7L);
|
|
this.g_fPlayerDistanceNear = 4.5f;
|
|
this.g_fPlayerDistanceFar = 6f;
|
|
return;
|
|
}
|
|
if (num == 0)
|
|
{
|
|
this.g_NextFighting = (AI_SealGhost.AIFighting)((ulong)8L);
|
|
this.g_fPlayerDistanceFar = 15f;
|
|
this.g_fPlayerDistanceNear = 9f;
|
|
return;
|
|
}
|
|
if (num != 0)
|
|
{
|
|
if (num != 1)
|
|
{
|
|
this.g_NextFighting = (AI_SealGhost.AIFighting)((ulong)11L);
|
|
}
|
|
this.g_NextFighting = (AI_SealGhost.AIFighting)((ulong)10L);
|
|
this.g_fPlayerDistanceNear = 6f;
|
|
this.g_fPlayerDistanceFar = 7.5f;
|
|
return;
|
|
}
|
|
this.g_NextFighting = (AI_SealGhost.AIFighting)((ulong)9L);
|
|
this.g_fPlayerDistanceNear = 12f;
|
|
this.g_fPlayerDistanceFar = 18f;
|
|
}
|
|
|
|
// Token: 0x060005B4 RID: 1460 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005B4")]
|
|
[Address(RVA = "0x29E8B0", Offset = "0x29D0B0", VA = "0x18029E8B0")]
|
|
private void FDebut()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005B5 RID: 1461 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005B5")]
|
|
[Address(RVA = "0x177F170", Offset = "0x177D970", VA = "0x18177F170")]
|
|
private void FWatch()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005B6 RID: 1462 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005B6")]
|
|
[Address(RVA = "0x177E490", Offset = "0x177CC90", VA = "0x18177E490")]
|
|
private void FAttackMove()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005B7 RID: 1463 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005B7")]
|
|
[Address(RVA = "0x177EE50", Offset = "0x177D650", VA = "0x18177EE50")]
|
|
private void FDodge()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005B8 RID: 1464 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005B8")]
|
|
[Address(RVA = "0x177E850", Offset = "0x177D050", VA = "0x18177E850")]
|
|
private void FAttack()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005B9 RID: 1465 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005B9")]
|
|
[Address(RVA = "0x177E220", Offset = "0x177CA20", VA = "0x18177E220")]
|
|
private void FAttack01()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005BA RID: 1466 RVA: 0x0000E354 File Offset: 0x0000C554
|
|
[Token(Token = "0x60005BA")]
|
|
[Address(RVA = "0x177ECD0", Offset = "0x177D4D0", VA = "0x18177ECD0")]
|
|
private void FDamage()
|
|
{
|
|
float g_fWaitTime = this.g_fWaitTime;
|
|
int num = 0;
|
|
if (g_fWaitTime <= (float)num)
|
|
{
|
|
this.InitFightStatus(AI_SealGhost.AIFighting.WatchFast);
|
|
return;
|
|
}
|
|
this.g_fWaitTime = g_fWaitTime;
|
|
}
|
|
|
|
// Token: 0x060005BB RID: 1467 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005BB")]
|
|
[Address(RVA = "0x177ED00", Offset = "0x177D500", VA = "0x18177ED00")]
|
|
private void FDeath()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005BC RID: 1468 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005BC")]
|
|
[Address(RVA = "0x177F7F0", Offset = "0x177DFF0", VA = "0x18177F7F0", Slot = "33")]
|
|
public override void Hit(AttackData Data)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005BD RID: 1469 RVA: 0x0000E380 File Offset: 0x0000C580
|
|
[Token(Token = "0x60005BD")]
|
|
[Address(RVA = "0x17796F0", Offset = "0x1777EF0", VA = "0x1817796F0", Slot = "30")]
|
|
public override void Resurrection()
|
|
{
|
|
this.g_bDeath = false;
|
|
bool doUV = ((MB_IMeshBakerSettings)this).doUV7;
|
|
}
|
|
|
|
// Token: 0x060005BE RID: 1470 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005BE")]
|
|
[Address(RVA = "0x177E0A0", Offset = "0x177C8A0", VA = "0x18177E0A0", Slot = "31")]
|
|
public override void Create()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005BF RID: 1471 RVA: 0x0000E39C File Offset: 0x0000C59C
|
|
[Token(Token = "0x60005BF")]
|
|
[Address(RVA = "0x1780F40", Offset = "0x177F740", VA = "0x181780F40", Slot = "32")]
|
|
public override void Remove()
|
|
{
|
|
NPCManage g_NPCM = this.g_NPCM;
|
|
int num = 0;
|
|
g_NPCM.SetLockPoint(num != 0);
|
|
this.g_Effect.RemoveEnemy();
|
|
GameObject g_This = this.g_This;
|
|
int num2 = 0;
|
|
g_This.SetActive(num2 != 0);
|
|
}
|
|
|
|
// Token: 0x060005C0 RID: 1472 RVA: 0x0000E3DC File Offset: 0x0000C5DC
|
|
[Token(Token = "0x60005C0")]
|
|
[Address(RVA = "0x1781690", Offset = "0x177FE90", VA = "0x181781690", Slot = "35")]
|
|
public override void SetTimeScale(float fTimeScale)
|
|
{
|
|
this.g_Anim.speed = fTimeScale;
|
|
this.g_Effect.SetTimeScale(fTimeScale);
|
|
}
|
|
|
|
// Token: 0x060005C1 RID: 1473 RVA: 0x000020D3 File Offset: 0x000002D3
|
|
[Token(Token = "0x60005C1")]
|
|
[Address(RVA = "0x1780F90", Offset = "0x177F790", VA = "0x181780F90", Slot = "36")]
|
|
public override void SetAiStatus(AI_NPC.AIStatus Status)
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x060005C2 RID: 1474 RVA: 0x0000E408 File Offset: 0x0000C608
|
|
[Token(Token = "0x60005C2")]
|
|
[Address(RVA = "0x15FC240", Offset = "0x15FAA40", VA = "0x1815FC240")]
|
|
public AI_SealGhost()
|
|
{
|
|
}
|
|
|
|
// Token: 0x040006AE RID: 1710
|
|
[FieldOffset(Offset = "0x170")]
|
|
[Token(Token = "0x40006AE")]
|
|
private SealGhostEffectPlay g_Effect;
|
|
|
|
// Token: 0x040006AF RID: 1711
|
|
[FieldOffset(Offset = "0x178")]
|
|
[Token(Token = "0x40006AF")]
|
|
private Vector3 g_v3PrePosition;
|
|
|
|
// Token: 0x040006B0 RID: 1712
|
|
[FieldOffset(Offset = "0x184")]
|
|
[Token(Token = "0x40006B0")]
|
|
private Vector3 g_v3PreForward;
|
|
|
|
// Token: 0x040006B1 RID: 1713
|
|
[FieldOffset(Offset = "0x190")]
|
|
[Token(Token = "0x40006B1")]
|
|
private float g_fAnifMoveHorizontal;
|
|
|
|
// Token: 0x040006B2 RID: 1714
|
|
[FieldOffset(Offset = "0x194")]
|
|
[Token(Token = "0x40006B2")]
|
|
private float g_fAnifMoveVertical;
|
|
|
|
// Token: 0x040006B3 RID: 1715
|
|
[FieldOffset(Offset = "0x198")]
|
|
[Token(Token = "0x40006B3")]
|
|
private float g_fAniTrunAngle;
|
|
|
|
// Token: 0x040006B4 RID: 1716
|
|
[FieldOffset(Offset = "0x19C")]
|
|
[Token(Token = "0x40006B4")]
|
|
private float g_fAniSkirtWeights;
|
|
|
|
// Token: 0x040006B5 RID: 1717
|
|
[FieldOffset(Offset = "0x1A0")]
|
|
[Token(Token = "0x40006B5")]
|
|
private float g_fAniDamageHead;
|
|
|
|
// Token: 0x040006B6 RID: 1718
|
|
[FieldOffset(Offset = "0x1A8")]
|
|
[Token(Token = "0x40006B6")]
|
|
private Shake g_ShakeHead;
|
|
|
|
// Token: 0x040006B7 RID: 1719
|
|
[FieldOffset(Offset = "0x1B0")]
|
|
[Token(Token = "0x40006B7")]
|
|
private Shake g_ShakeSpine;
|
|
|
|
// Token: 0x040006B8 RID: 1720
|
|
[FieldOffset(Offset = "0x1B8")]
|
|
[Token(Token = "0x40006B8")]
|
|
private Shake g_ShakeUpperArmL;
|
|
|
|
// Token: 0x040006B9 RID: 1721
|
|
[FieldOffset(Offset = "0x1C0")]
|
|
[Token(Token = "0x40006B9")]
|
|
private Shake g_ShakeUpperArmR;
|
|
|
|
// Token: 0x040006BA RID: 1722
|
|
[FieldOffset(Offset = "0x1C8")]
|
|
[Token(Token = "0x40006BA")]
|
|
private Shake g_ShakeThighL;
|
|
|
|
// Token: 0x040006BB RID: 1723
|
|
[FieldOffset(Offset = "0x1D0")]
|
|
[Token(Token = "0x40006BB")]
|
|
private Shake g_ShakeThighR;
|
|
|
|
// Token: 0x040006BC RID: 1724
|
|
[FieldOffset(Offset = "0x1D8")]
|
|
[Token(Token = "0x40006BC")]
|
|
private Shake g_ShakeAll;
|
|
|
|
// Token: 0x040006BD RID: 1725
|
|
[FieldOffset(Offset = "0x1E0")]
|
|
[Token(Token = "0x40006BD")]
|
|
private AI_SealGhost.AIFighting g_Fighting = (AI_SealGhost.AIFighting)((ulong)1L);
|
|
|
|
// Token: 0x040006BE RID: 1726
|
|
[FieldOffset(Offset = "0x1E4")]
|
|
[Token(Token = "0x40006BE")]
|
|
private AI_SealGhost.AIFighting g_NextFighting;
|
|
|
|
// Token: 0x040006BF RID: 1727
|
|
[FieldOffset(Offset = "0x1E8")]
|
|
[Token(Token = "0x40006BF")]
|
|
private int g_iAWatchMoveDir;
|
|
|
|
// Token: 0x040006C0 RID: 1728
|
|
[FieldOffset(Offset = "0x1EC")]
|
|
[Token(Token = "0x40006C0")]
|
|
private float g_fPlayerDistanceNear;
|
|
|
|
// Token: 0x040006C1 RID: 1729
|
|
[FieldOffset(Offset = "0x1F0")]
|
|
[Token(Token = "0x40006C1")]
|
|
private float g_fPlayerDistanceFar;
|
|
|
|
// Token: 0x040006C2 RID: 1730
|
|
[FieldOffset(Offset = "0x1F4")]
|
|
[Token(Token = "0x40006C2")]
|
|
private float g_fAttackMove;
|
|
|
|
// Token: 0x040006C3 RID: 1731
|
|
[FieldOffset(Offset = "0x1F8")]
|
|
[Token(Token = "0x40006C3")]
|
|
private float g_fAttackRotate;
|
|
|
|
// Token: 0x040006C4 RID: 1732
|
|
[FieldOffset(Offset = "0x1FC")]
|
|
[Token(Token = "0x40006C4")]
|
|
private float g_fAttackNext;
|
|
|
|
// Token: 0x040006C5 RID: 1733
|
|
[Token(Token = "0x40006C5")]
|
|
private const float g_fAttack01Number = 6f;
|
|
|
|
// Token: 0x040006C6 RID: 1734
|
|
[FieldOffset(Offset = "0x200")]
|
|
[Token(Token = "0x40006C6")]
|
|
private float g_fAttack01NumberVal;
|
|
|
|
// Token: 0x040006C7 RID: 1735
|
|
[FieldOffset(Offset = "0x204")]
|
|
[Token(Token = "0x40006C7")]
|
|
private bool g_bDodge;
|
|
|
|
// Token: 0x040006C8 RID: 1736
|
|
[FieldOffset(Offset = "0x208")]
|
|
[Token(Token = "0x40006C8")]
|
|
private int g_iScript;
|
|
|
|
// Token: 0x02000088 RID: 136
|
|
[Token(Token = "0x2000088")]
|
|
private enum AIFighting
|
|
{
|
|
// Token: 0x040006CA RID: 1738
|
|
[Token(Token = "0x40006CA")]
|
|
Null,
|
|
// Token: 0x040006CB RID: 1739
|
|
[Token(Token = "0x40006CB")]
|
|
Watch,
|
|
// Token: 0x040006CC RID: 1740
|
|
[Token(Token = "0x40006CC")]
|
|
WatchFast,
|
|
// Token: 0x040006CD RID: 1741
|
|
[Token(Token = "0x40006CD")]
|
|
AttackMove,
|
|
// Token: 0x040006CE RID: 1742
|
|
[Token(Token = "0x40006CE")]
|
|
Attack0101,
|
|
// Token: 0x040006CF RID: 1743
|
|
[Token(Token = "0x40006CF")]
|
|
Attack0102,
|
|
// Token: 0x040006D0 RID: 1744
|
|
[Token(Token = "0x40006D0")]
|
|
Attack0103,
|
|
// Token: 0x040006D1 RID: 1745
|
|
[Token(Token = "0x40006D1")]
|
|
Attack02,
|
|
// Token: 0x040006D2 RID: 1746
|
|
[Token(Token = "0x40006D2")]
|
|
Attack03,
|
|
// Token: 0x040006D3 RID: 1747
|
|
[Token(Token = "0x40006D3")]
|
|
Attack04,
|
|
// Token: 0x040006D4 RID: 1748
|
|
[Token(Token = "0x40006D4")]
|
|
Attack05,
|
|
// Token: 0x040006D5 RID: 1749
|
|
[Token(Token = "0x40006D5")]
|
|
Attack06,
|
|
// Token: 0x040006D6 RID: 1750
|
|
[Token(Token = "0x40006D6")]
|
|
DodgeL,
|
|
// Token: 0x040006D7 RID: 1751
|
|
[Token(Token = "0x40006D7")]
|
|
DodgeR,
|
|
// Token: 0x040006D8 RID: 1752
|
|
[Token(Token = "0x40006D8")]
|
|
Damage,
|
|
// Token: 0x040006D9 RID: 1753
|
|
[Token(Token = "0x40006D9")]
|
|
Death,
|
|
// Token: 0x040006DA RID: 1754
|
|
[Token(Token = "0x40006DA")]
|
|
End,
|
|
// Token: 0x040006DB RID: 1755
|
|
[Token(Token = "0x40006DB")]
|
|
Debut
|
|
}
|
|
}
|