Decompiled source of CoreWoodExtras v2.4.5

plugins/CoreWoodExtras.dll

Decompiled 2 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using CoreWoodExtras;
using CoreWoodExtras.Containers;
using CoreWoodExtras.TextureUtils;
using CoreWoodExtras.Updates;
using HarmonyLib;
using Jotunn;
using Jotunn.Configs;
using Jotunn.Entities;
using Jotunn.Extensions;
using Jotunn.Managers;
using Jotunn.Utils;
using MagicMike.ModSettings;
using Microsoft.CodeAnalysis;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("CoreWoodExtras")]
[assembly: AssemblyDescription("https://discord.gg/mnr36G6J4x")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("MagicMike")]
[assembly: AssemblyProduct("CoreWoodExtras")]
[assembly: AssemblyCopyright("Copyright © MagicMike 2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")]
[assembly: AssemblyFileVersion("2.4.5")]
[assembly: TargetFramework(".NETFramework,Version=v4.8.1", FrameworkDisplayName = ".NET Framework 4.8.1")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("2.4.5.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
public class Elevator : MonoBehaviour
{
	public bool m_canMove = true;

	public float m_speed = 2f;

	public int m_startPoint;

	public Transform[] m_points;

	public static readonly int m_elevatorPosition = StringExtensionMethods.GetStableHashCode("elevatorPosition");

	private static readonly int s_target = StringExtensionMethods.GetStableHashCode("elevatorTarget");

	private static readonly int s_startTime = StringExtensionMethods.GetStableHashCode("elevatorStart");

	private static readonly int s_speed = StringExtensionMethods.GetStableHashCode("elevatorSpeed");

	private static readonly int s_reverse = StringExtensionMethods.GetStableHashCode("elevatorReverse");

	private static readonly int s_sound = StringExtensionMethods.GetStableHashCode("elevatorSound");

	private const float RemoteSoundWindow = 1.5f;

	private ZNetView m_nview;

	private ElevatorSwitch m_soundSwitch;

	private long m_lastSeenStart;

	private bool IsNetworked
	{
		get
		{
			if ((Object)(object)m_nview != (Object)null)
			{
				return m_nview.IsValid();
			}
			return false;
		}
	}

	public bool IsOwner()
	{
		if (IsNetworked)
		{
			return m_nview.IsOwner();
		}
		return false;
	}

	public void RegisterSwitch(ElevatorSwitch elevatorSwitch)
	{
		if (!Object.op_Implicit((Object)(object)m_soundSwitch))
		{
			m_soundSwitch = elevatorSwitch;
		}
	}

	public void Start()
	{
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		m_nview = ((Component)this).gameObject.GetComponentInParent<ZNetView>();
		if (m_points != null && m_points.Length != 0)
		{
			int num;
			if (IsNetworked)
			{
				ZDO zDO = m_nview.GetZDO();
				num = Mathf.Clamp(zDO.GetInt(m_elevatorPosition, 0), 0, m_points.Length - 1);
				m_lastSeenStart = zDO.GetLong(s_startTime, 0L);
			}
			else
			{
				num = Mathf.Clamp(m_startPoint, 0, m_points.Length - 1);
			}
			((Component)this).transform.position = m_points[num].position;
		}
	}

	public void Update()
	{
		//IL_005b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00da: Unknown result type (might be due to invalid IL or missing references)
		//IL_0080: Unknown result type (might be due to invalid IL or missing references)
		if (m_points == null || m_points.Length == 0 || !IsNetworked || (Object)(object)ZNet.instance == (Object)null)
		{
			return;
		}
		ZDO zDO = m_nview.GetZDO();
		ReadState(zDO, out var rest, out var target, out var traveled, out var distance);
		PlayRemoteSound(zDO);
		if (target < 0)
		{
			((Component)this).transform.position = m_points[rest].position;
			m_canMove = false;
		}
		else if (traveled >= distance)
		{
			((Component)this).transform.position = m_points[target].position;
			m_canMove = false;
			if (m_nview.IsOwner())
			{
				zDO.Set(m_elevatorPosition, target, false);
				zDO.Set(s_target, -1, false);
			}
		}
		else
		{
			((Component)this).transform.position = Vector3.MoveTowards(m_points[rest].position, m_points[target].position, traveled);
			m_canMove = true;
		}
	}

	public bool Activate(float speed = 2f, bool playSound = false)
	{
		if (!MainConfig.enableElevators.Value || m_points == null || m_points.Length < 2 || !IsNetworked || (Object)(object)ZNet.instance == (Object)null)
		{
			return false;
		}
		ZDO zDO = m_nview.GetZDO();
		ReadState(zDO, out var rest, out var target, out var traveled, out var distance);
		if (target >= 0)
		{
			if (traveled < distance)
			{
				return false;
			}
			rest = target;
		}
		bool flag = zDO.GetBool(s_reverse, false);
		if (rest >= m_points.Length - 1)
		{
			flag = true;
		}
		else if (rest <= 0)
		{
			flag = false;
		}
		int num = (flag ? (rest - 1) : (rest + 1));
		long ticks = ZNet.instance.GetTime().Ticks;
		m_nview.ClaimOwnership();
		zDO.Set(m_elevatorPosition, rest, false);
		zDO.Set(s_reverse, flag);
		zDO.Set(s_speed, speed);
		zDO.Set(s_sound, playSound);
		zDO.Set(s_target, num, false);
		zDO.Set(s_startTime, ticks);
		m_lastSeenStart = ticks;
		m_canMove = true;
		return true;
	}

	private void ReadState(ZDO zdo, out int rest, out int target, out float traveled, out float distance)
	{
		//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
		rest = Mathf.Clamp(zdo.GetInt(m_elevatorPosition, 0), 0, m_points.Length - 1);
		target = zdo.GetInt(s_target, -1);
		traveled = 0f;
		distance = 0f;
		if (target < 0 || target >= m_points.Length)
		{
			target = -1;
			return;
		}
		double val = (double)(ZNet.instance.GetTime().Ticks - zdo.GetLong(s_startTime, 0L)) / 10000000.0;
		traveled = (float)Math.Max(0.0, val) * zdo.GetFloat(s_speed, 2f);
		distance = Vector3.Distance(m_points[rest].position, m_points[target].position);
	}

	private void PlayRemoteSound(ZDO zdo)
	{
		long num = zdo.GetLong(s_startTime, 0L);
		if (num != m_lastSeenStart)
		{
			m_lastSeenStart = num;
			if (zdo.GetBool(s_sound, false) && Object.op_Implicit((Object)(object)m_soundSwitch) && (double)(ZNet.instance.GetTime().Ticks - num) / 10000000.0 < 1.5)
			{
				m_soundSwitch.PlayStartSound();
			}
		}
	}
}
public class ElevatorSwitch : MonoBehaviour, Hoverable, Interactable
{
	public Elevator m_elevator;

	public EffectList m_elevatorSFX;

	public float m_hoverOffset;

	private string m_name;

	private Piece m_piece;

	private void Start()
	{
		m_piece = ((Component)this).gameObject.GetComponentInParent<Piece>();
		m_name = m_piece.m_name;
		if ((Object)(object)m_elevator != (Object)null)
		{
			m_elevator.RegisterSwitch(this);
		}
	}

	public string GetHoverText()
	{
		return Localization.instance.Localize(m_name + "\n[<color=yellow><b>$KEY_Use</b></color>] $text_use_elevator");
	}

	public string GetHoverName()
	{
		return m_name;
	}

	public bool Interact(Humanoid human, bool hold, bool alt)
	{
		if (hold || (Object)(object)m_elevator == (Object)null)
		{
			return false;
		}
		if (m_elevator.Activate(2f, playSound: true))
		{
			PlayStartSound();
		}
		return true;
	}

	public void PlayStartSound()
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		EffectList elevatorSFX = m_elevatorSFX;
		if (elevatorSFX != null)
		{
			elevatorSFX.Create(((Component)this).transform.position, ((Component)this).transform.rotation, (Transform)null, 1f, -1, default(ZDOID));
		}
	}

	public bool UseItem(Humanoid user, ItemData item)
	{
		return false;
	}

	public float GetHoverOffset()
	{
		return m_hoverOffset;
	}
}
public class KeyUtils
{
	public static bool IgnoreKeyPresses(bool extra = false)
	{
		if (!extra)
		{
			if (!((Object)(object)ZNetScene.instance == (Object)null) && !((Object)(object)Player.m_localPlayer == (Object)null) && !Minimap.IsOpen() && !Console.IsVisible() && !TextInput.IsVisible() && !ZNet.instance.InPasswordDialog())
			{
				Chat instance = Chat.instance;
				if (instance == null)
				{
					return false;
				}
				return instance.HasFocus();
			}
			return true;
		}
		if (!((Object)(object)ZNetScene.instance == (Object)null) && !((Object)(object)Player.m_localPlayer == (Object)null) && !Minimap.IsOpen() && !Console.IsVisible() && !TextInput.IsVisible() && !ZNet.instance.InPasswordDialog())
		{
			Chat instance2 = Chat.instance;
			if ((instance2 == null || !instance2.HasFocus()) && !StoreGui.IsVisible() && !InventoryGui.IsVisible() && !Menu.IsVisible())
			{
				TextViewer instance3 = TextViewer.instance;
				if (instance3 == null)
				{
					return false;
				}
				return instance3.IsVisible();
			}
		}
		return true;
	}

	public static bool CheckKeyDown(string value)
	{
		try
		{
			string[] array = value.Split(new char[1] { ',' });
			for (int i = 0; i < array.Length; i++)
			{
				if (Input.GetKeyDown(array[i].ToLower()))
				{
					return true;
				}
			}
		}
		catch
		{
		}
		return false;
	}

	public static bool CheckKeyUp(string value)
	{
		try
		{
			string[] array = value.Split(new char[1] { ',' });
			for (int i = 0; i < array.Length; i++)
			{
				if (Input.GetKeyUp(array[i].ToLower()))
				{
					return true;
				}
			}
		}
		catch
		{
		}
		return false;
	}

	public static bool CheckKeyHeld(string value, bool req = true)
	{
		try
		{
			string[] array = value.Split(new char[1] { ',' });
			for (int i = 0; i < array.Length; i++)
			{
				if (Input.GetKey(array[i].ToLower()))
				{
					return true;
				}
			}
		}
		catch
		{
		}
		return !req;
	}
}
public class ParentPlatform : MonoBehaviour
{
	private class Rider
	{
		public int Touching;

		public Transform OriginalParent;
	}

	[HarmonyPatch(typeof(ZNetView), "ResetZDO")]
	private static class ZNetView_ResetZDO_Patch
	{
		private static void Prefix(ZNetView __instance)
		{
			if (s_platforms.Count == 0 || !Object.op_Implicit((Object)(object)__instance))
			{
				return;
			}
			Transform transform = ((Component)__instance).transform;
			foreach (ParentPlatform s_platform in s_platforms)
			{
				if (Object.op_Implicit((Object)(object)s_platform) && s_platform.m_riders.Count > 0 && ((Component)s_platform).transform.IsChildOf(transform))
				{
					s_platform.DetachAll();
				}
			}
		}
	}

	private Piece m_piece;

	[NonSerialized]
	private readonly Dictionary<Transform, Rider> m_riders = new Dictionary<Transform, Rider>();

	private readonly List<Transform> m_gone = new List<Transform>();

	private static readonly HashSet<ParentPlatform> s_platforms = new HashSet<ParentPlatform>();

	private void Start()
	{
		m_piece = ((Component)this).gameObject.GetComponentInParent<Piece>();
	}

	private void OnEnable()
	{
		s_platforms.Add(this);
	}

	private void OnDisable()
	{
		s_platforms.Remove(this);
	}

	private void OnCollisionEnter(Collision other)
	{
		Transform transform = other.transform;
		if (!m_riders.TryGetValue(transform, out var value))
		{
			value = new Rider
			{
				OriginalParent = transform.parent
			};
			m_riders[transform] = value;
			transform.SetParent(((Component)this).transform);
			if ((Object)(object)other.rigidbody != (Object)null)
			{
				other.rigidbody.interpolation = (RigidbodyInterpolation)0;
			}
		}
		value.Touching++;
		UpdateRemovable();
	}

	private void OnCollisionExit(Collision other)
	{
		Transform transform = other.transform;
		if (m_riders.TryGetValue(transform, out var value))
		{
			value.Touching--;
			if (value.Touching <= 0)
			{
				m_riders.Remove(transform);
				Release(transform, value);
			}
			UpdateRemovable();
		}
	}

	private void FixedUpdate()
	{
		if (m_riders.Count == 0)
		{
			return;
		}
		m_gone.Clear();
		foreach (Transform key in m_riders.Keys)
		{
			if ((Object)(object)key == (Object)null || !((Component)key).gameObject.activeInHierarchy)
			{
				m_gone.Add(key);
			}
		}
		if (m_gone.Count == 0)
		{
			return;
		}
		foreach (Transform item in m_gone)
		{
			if (m_riders.TryGetValue(item, out var value))
			{
				m_riders.Remove(item);
				Release(item, value);
			}
		}
		UpdateRemovable();
	}

	public void DetachAll()
	{
		foreach (KeyValuePair<Transform, Rider> rider in m_riders)
		{
			Release(rider.Key, rider.Value);
		}
		m_riders.Clear();
		UpdateRemovable();
	}

	private void Release(Transform rider, Rider state)
	{
		if (!((Object)(object)rider == (Object)null) && !((Object)(object)rider.parent != (Object)(object)((Component)this).transform))
		{
			rider.SetParent(((Object)(object)state.OriginalParent != (Object)null) ? state.OriginalParent : null);
			Rigidbody component = ((Component)rider).GetComponent<Rigidbody>();
			if ((Object)(object)component != (Object)null)
			{
				component.interpolation = (RigidbodyInterpolation)1;
			}
		}
	}

	private void UpdateRemovable()
	{
		if ((Object)(object)m_piece != (Object)null)
		{
			m_piece.m_canBeRemoved = m_riders.Count == 0;
		}
	}
}
public class SchoolBubbles : MonoBehaviour
{
	public ParticleSystem _bubbleParticles;

	public float _emitEverySecond = 0.01f;

	public float _speedEmitMultiplier = 0.25f;

	public int _minBubbles;

	public int _maxBubbles = 5;

	public void Start()
	{
		if ((Object)(object)_bubbleParticles == (Object)null)
		{
			_bubbleParticles = ((Component)((Component)this).transform).GetComponent<ParticleSystem>();
		}
	}

	public void EmitBubbles(Vector3 pos, float amount)
	{
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		if (!(amount * _speedEmitMultiplier < 1f))
		{
			((Component)_bubbleParticles).transform.position = pos;
			_bubbleParticles.Emit(Mathf.Clamp((int)(amount * _speedEmitMultiplier), _minBubbles, _maxBubbles));
		}
	}
}
public class SchoolChild : MonoBehaviour
{
	public SchoolController _spawner;

	private Vector3 _wayPoint;

	[HideInInspector]
	public float _speed = 10f;

	private float _stuckCounter;

	private float _damping;

	private Transform _model;

	private float _targetSpeed;

	private float tParam;

	private float _rotateCounterR;

	private float _rotateCounterL;

	public Transform _scanner;

	private bool _scan = true;

	private bool _instantiated;

	private static int _updateNextSeed;

	private int _updateSeed = -1;

	public Transform _cacheTransform;

	private Animation _legacyAnim;

	private Animator anim;

	public void Start()
	{
		_cacheTransform = ((Component)this).transform;
		LocateRequiredChildren();
		if (_spawner._useLegacyAnimations)
		{
			_legacyAnim = ((Component)_model).GetComponent<Animation>();
		}
		else
		{
			anim = ((Component)_model).GetComponent<Animator>();
		}
		SetRandomScale();
		RandomizeStartAnimationFrame();
		_speed = Random.Range(_spawner._minSpeed, _spawner._maxSpeed);
		Wander(0f);
		SetRandomWaypoint();
		CheckForBubblesThenInvoke();
		_instantiated = true;
		GetStartPos();
		FrameSkipSeedInit();
		_spawner._activeChildren++;
	}

	public bool ShouldUpdate(int updateCounter)
	{
		if (_instantiated)
		{
			if (_spawner._updateDivisor > 1)
			{
				return _updateSeed == updateCounter;
			}
			return true;
		}
		return false;
	}

	public void childUpdate()
	{
		CheckForDistanceToWaypoint();
		RotationBasedOnWaypointOrAvoidance();
		ForwardMovement();
		RayCastToPushAwayFromObstacles();
		SetAnimationSpeed();
	}

	public void FrameSkipSeedInit()
	{
		if (_spawner._updateDivisor > 1)
		{
			_updateSeed = _updateNextSeed % _spawner._updateDivisor;
			_updateNextSeed = (_updateNextSeed + 1) % _spawner._updateDivisor;
		}
	}

	public void CheckForBubblesThenInvoke()
	{
		if ((Object)(object)_spawner._bubbles != (Object)null)
		{
			((MonoBehaviour)this).InvokeRepeating("EmitBubbles", _spawner._bubbles._emitEverySecond * Random.value + 1f, _spawner._bubbles._emitEverySecond);
		}
	}

	public void EmitBubbles()
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		_spawner._bubbles.EmitBubbles(_cacheTransform.position, _speed);
	}

	public void OnDisable()
	{
		((MonoBehaviour)this).CancelInvoke();
		if (_instantiated)
		{
			_spawner._activeChildren--;
		}
	}

	public void OnEnable()
	{
		if (_instantiated)
		{
			CheckForBubblesThenInvoke();
			_spawner._activeChildren++;
		}
	}

	public void LocateRequiredChildren()
	{
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0059: Unknown result type (might be due to invalid IL or missing references)
		//IL_0069: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)_model == (Object)null)
		{
			_model = _cacheTransform.Find("Model");
		}
		if ((Object)(object)_scanner == (Object)null)
		{
			_scanner = new GameObject().transform;
			_scanner.parent = ((Component)this).transform;
			_scanner.localRotation = Quaternion.identity;
			_scanner.localPosition = Vector3.zero;
		}
	}

	public void SkewModelForLessUniformedMovement()
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		Quaternion identity = Quaternion.identity;
		((Quaternion)(ref identity)).eulerAngles = new Vector3(0f, 0f, (float)Random.Range(-25, 25));
		_model.rotation = identity;
	}

	public void SetRandomScale()
	{
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		float num = Random.Range(_spawner._minScale, _spawner._maxScale);
		_cacheTransform.localScale = Vector3.one * num;
	}

	public void RandomizeStartAnimationFrame()
	{
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Expected O, but got Unknown
		if (!_spawner._useLegacyAnimations)
		{
			return;
		}
		foreach (AnimationState item in _legacyAnim)
		{
			AnimationState val = item;
			val.time = Random.value * val.length;
		}
	}

	public void SetAnimationSpeed()
	{
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		if (_spawner._useLegacyAnimations)
		{
			foreach (AnimationState item in _legacyAnim)
			{
				item.speed = Random.Range(_spawner._minAnimationSpeed, _spawner._maxAnimationSpeed) * _spawner._schoolSpeed * _speed + 0.1f;
			}
			return;
		}
		anim.speed = Random.Range(_spawner._minAnimationSpeed, _spawner._maxAnimationSpeed) * _spawner._schoolSpeed * _speed + 0.1f;
	}

	public void GetStartPos()
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		_cacheTransform.position = _wayPoint - new Vector3(0.1f, 0.1f, 0.1f);
	}

	public Vector3 findWaypoint()
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
		Vector3 zero = Vector3.zero;
		zero.x = Random.Range(0f - _spawner._spawnSphere, _spawner._spawnSphere) + _spawner._posBuffer.x;
		zero.z = Random.Range(0f - _spawner._spawnSphereDepth, _spawner._spawnSphereDepth) + _spawner._posBuffer.z;
		zero.y = Random.Range(0f - _spawner._spawnSphereHeight, _spawner._spawnSphereHeight) + _spawner._posBuffer.y;
		return zero;
	}

	public void RayCastToPushAwayFromObstacles()
	{
		if (_spawner._push)
		{
			RotateScanner();
			RayCastToPushAwayFromObstaclesCheckForCollision();
		}
	}

	public void RayCastToPushAwayFromObstaclesCheckForCollision()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0025: Unknown result type (might be due to invalid IL or missing references)
		//IL_0039: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_008d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_009f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00af: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0101: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0113: Unknown result type (might be due to invalid IL or missing references)
		//IL_0123: Unknown result type (might be due to invalid IL or missing references)
		//IL_012d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0132: Unknown result type (might be due to invalid IL or missing references)
		RaycastHit val = default(RaycastHit);
		float num = 0f;
		Vector3 forward = _scanner.forward;
		if (Physics.Raycast(_cacheTransform.position, forward, ref val, _spawner._pushDistance, LayerMask.op_Implicit(_spawner._avoidanceMask)))
		{
			SchoolChild component = ((Component)((RaycastHit)(ref val)).transform).GetComponent<SchoolChild>();
			num = (_spawner._pushDistance - ((RaycastHit)(ref val)).distance) / _spawner._pushDistance;
			if ((Object)(object)component != (Object)null)
			{
				Transform cacheTransform = _cacheTransform;
				cacheTransform.position -= forward * _spawner._newDelta * num * _spawner._pushForce;
				return;
			}
			_speed -= 0.01f * _spawner._newDelta;
			if (_speed < 0.1f)
			{
				_speed = 0.1f;
			}
			Transform cacheTransform2 = _cacheTransform;
			cacheTransform2.position -= forward * _spawner._newDelta * num * _spawner._pushForce * 2f;
			_scan = false;
		}
		else
		{
			_scan = true;
		}
	}

	public void RotateScanner()
	{
		//IL_003a: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		if (_scan)
		{
			_scanner.rotation = Random.rotation;
		}
		else
		{
			_scanner.Rotate(new Vector3(150f * _spawner._newDelta, 0f, 0f));
		}
	}

	public bool Avoidance()
	{
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0044: Unknown result type (might be due to invalid IL or missing references)
		//IL_0049: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_0079: Unknown result type (might be due to invalid IL or missing references)
		//IL_0091: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0112: Unknown result type (might be due to invalid IL or missing references)
		//IL_0117: Unknown result type (might be due to invalid IL or missing references)
		//IL_011e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0123: Unknown result type (might be due to invalid IL or missing references)
		//IL_013b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0101: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01be: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_019f: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_0253: Unknown result type (might be due to invalid IL or missing references)
		//IL_025f: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_036a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0376: Unknown result type (might be due to invalid IL or missing references)
		//IL_041b: Unknown result type (might be due to invalid IL or missing references)
		//IL_042b: Unknown result type (might be due to invalid IL or missing references)
		//IL_04e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_04f3: Unknown result type (might be due to invalid IL or missing references)
		if (!_spawner._avoidance)
		{
			return false;
		}
		RaycastHit val = default(RaycastHit);
		float num = 0f;
		Quaternion rotation = _cacheTransform.rotation;
		Quaternion rotation2 = _cacheTransform.rotation;
		Vector3 eulerAngles = ((Quaternion)(ref rotation2)).eulerAngles;
		Vector3 forward = _cacheTransform.forward;
		Vector3 right = _cacheTransform.right;
		if (Physics.Raycast(_cacheTransform.position, -Vector3.up + forward * 0.1f, ref val, _spawner._avoidDistance, LayerMask.op_Implicit(_spawner._avoidanceMask)))
		{
			num = (_spawner._avoidDistance - ((RaycastHit)(ref val)).distance) / _spawner._avoidDistance;
			eulerAngles.x -= _spawner._avoidSpeed * num * _spawner._newDelta * (_speed + 1f);
			((Quaternion)(ref rotation)).eulerAngles = eulerAngles;
			_cacheTransform.rotation = rotation;
		}
		if (Physics.Raycast(_cacheTransform.position, Vector3.up + forward * 0.1f, ref val, _spawner._avoidDistance, LayerMask.op_Implicit(_spawner._avoidanceMask)))
		{
			num = (_spawner._avoidDistance - ((RaycastHit)(ref val)).distance) / _spawner._avoidDistance;
			eulerAngles.x += _spawner._avoidSpeed * num * _spawner._newDelta * (_speed + 1f);
			((Quaternion)(ref rotation)).eulerAngles = eulerAngles;
			_cacheTransform.rotation = rotation;
		}
		if (Physics.Raycast(_cacheTransform.position, forward + right * Random.Range(-0.1f, 0.1f), ref val, _spawner._stopDistance, LayerMask.op_Implicit(_spawner._avoidanceMask)))
		{
			num = (_spawner._stopDistance - ((RaycastHit)(ref val)).distance) / _spawner._stopDistance;
			eulerAngles.y -= _spawner._avoidSpeed * num * _spawner._newDelta * (_targetSpeed + 3f);
			((Quaternion)(ref rotation)).eulerAngles = eulerAngles;
			_cacheTransform.rotation = rotation;
			_speed -= num * _spawner._newDelta * _spawner._stopSpeedMultiplier * _speed;
			if (_speed < 0.01f)
			{
				_speed = 0.01f;
			}
			return true;
		}
		if (Physics.Raycast(_cacheTransform.position, forward + right * (_spawner._avoidAngle + _rotateCounterL), ref val, _spawner._avoidDistance, LayerMask.op_Implicit(_spawner._avoidanceMask)))
		{
			num = (_spawner._avoidDistance - ((RaycastHit)(ref val)).distance) / _spawner._avoidDistance;
			_rotateCounterL += 0.1f;
			eulerAngles.y -= _spawner._avoidSpeed * num * _spawner._newDelta * _rotateCounterL * (_speed + 1f);
			((Quaternion)(ref rotation)).eulerAngles = eulerAngles;
			_cacheTransform.rotation = rotation;
			if (_rotateCounterL > 1.5f)
			{
				_rotateCounterL = 1.5f;
			}
			_rotateCounterR = 0f;
			return true;
		}
		if (Physics.Raycast(_cacheTransform.position, forward + right * (0f - (_spawner._avoidAngle + _rotateCounterR)), ref val, _spawner._avoidDistance, LayerMask.op_Implicit(_spawner._avoidanceMask)))
		{
			num = (_spawner._avoidDistance - ((RaycastHit)(ref val)).distance) / _spawner._avoidDistance;
			if (((RaycastHit)(ref val)).point.y < _cacheTransform.position.y)
			{
				eulerAngles.y -= _spawner._avoidSpeed * num * _spawner._newDelta * (_speed + 1f);
			}
			else
			{
				eulerAngles.x += _spawner._avoidSpeed * num * _spawner._newDelta * (_speed + 1f);
			}
			_rotateCounterR += 0.1f;
			eulerAngles.y += _spawner._avoidSpeed * num * _spawner._newDelta * _rotateCounterR * (_speed + 1f);
			((Quaternion)(ref rotation)).eulerAngles = eulerAngles;
			_cacheTransform.rotation = rotation;
			if (_rotateCounterR > 1.5f)
			{
				_rotateCounterR = 1.5f;
			}
			_rotateCounterL = 0f;
			return true;
		}
		_rotateCounterL = 0f;
		_rotateCounterR = 0f;
		return false;
	}

	public void ForwardMovement()
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		Transform cacheTransform = _cacheTransform;
		cacheTransform.position += _cacheTransform.TransformDirection(Vector3.forward) * _speed * _spawner._newDelta;
		if (tParam < 1f)
		{
			if (_speed > _targetSpeed)
			{
				tParam += _spawner._newDelta * _spawner._acceleration;
			}
			else
			{
				tParam += _spawner._newDelta * _spawner._brake;
			}
			_speed = Mathf.Lerp(_speed, _targetSpeed, tParam);
		}
	}

	public void RotationBasedOnWaypointOrAvoidance()
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_008a: Unknown result type (might be due to invalid IL or missing references)
		//IL_008f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
		Quaternion identity = Quaternion.identity;
		identity = Quaternion.LookRotation(_wayPoint - _cacheTransform.position);
		if (!Avoidance())
		{
			_cacheTransform.rotation = Quaternion.Slerp(_cacheTransform.rotation, identity, _spawner._newDelta * _damping);
		}
		float x = _cacheTransform.localEulerAngles.x;
		x = ((x > 180f) ? (x - 360f) : x);
		Quaternion rotation = _cacheTransform.rotation;
		Vector3 eulerAngles = ((Quaternion)(ref rotation)).eulerAngles;
		eulerAngles.x = ClampAngle(x, -50f, 50f);
		((Quaternion)(ref rotation)).eulerAngles = eulerAngles;
		_cacheTransform.rotation = rotation;
	}

	public void CheckForDistanceToWaypoint()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Unknown result type (might be due to invalid IL or missing references)
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		Vector3 val = _cacheTransform.position - _wayPoint;
		if (((Vector3)(ref val)).magnitude < _spawner._waypointDistance + _stuckCounter)
		{
			Wander(0f);
			_stuckCounter = 0f;
			CheckIfThisShouldTriggerNewFlockWaypoint();
		}
		else
		{
			_stuckCounter += _spawner._newDelta * (_spawner._waypointDistance * 0.25f);
		}
	}

	public void CheckIfThisShouldTriggerNewFlockWaypoint()
	{
		if (_spawner._childTriggerPos)
		{
			_spawner.SetRandomWaypointPosition();
		}
	}

	public static float ClampAngle(float angle, float min, float max)
	{
		if (angle < -360f)
		{
			angle += 360f;
		}
		if (angle > 360f)
		{
			angle -= 360f;
		}
		return Mathf.Clamp(angle, min, max);
	}

	public void Wander(float delay)
	{
		_damping = Random.Range(_spawner._minDamping, _spawner._maxDamping);
		_targetSpeed = Random.Range(_spawner._minSpeed, _spawner._maxSpeed) * _spawner._speedCurveMultiplier.Evaluate(Random.value) * _spawner._schoolSpeed;
		((MonoBehaviour)this).Invoke("SetRandomWaypoint", delay);
	}

	public void SetRandomWaypoint()
	{
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		tParam = 0f;
		_wayPoint = findWaypoint();
	}
}
public class SchoolController : MonoBehaviour
{
	public SchoolChild[] _childPrefab;

	public bool _groupChildToNewTransform;

	public Transform _groupTransform;

	public string _groupName = "";

	public bool _groupChildToSchool;

	public int _childAmount = 250;

	public float _spawnSphere = 3f;

	public float _spawnSphereDepth = 3f;

	public float _spawnSphereHeight = 1.5f;

	public float _childSpeedMultipler = 2f;

	public float _minSpeed = 6f;

	public float _maxSpeed = 10f;

	public AnimationCurve _speedCurveMultiplier = new AnimationCurve((Keyframe[])(object)new Keyframe[2]
	{
		new Keyframe(0f, 1f),
		new Keyframe(1f, 1f)
	});

	public float _minScale = 0.7f;

	public float _maxScale = 1f;

	public float _minDamping = 1f;

	public float _maxDamping = 2f;

	public float _waypointDistance = 1f;

	public float _minAnimationSpeed = 2f;

	public float _maxAnimationSpeed = 4f;

	public float _randomPositionTimerMax = 10f;

	public float _randomPositionTimerMin = 4f;

	public float _acceleration = 0.025f;

	public float _brake = 0.01f;

	public float _positionSphere = 25f;

	public float _positionSphereDepth = 5f;

	public float _positionSphereHeight = 5f;

	public bool _childTriggerPos;

	public bool _forceChildWaypoints;

	public bool _autoRandomPosition;

	public float _forcedRandomDelay = 1.5f;

	public float _schoolSpeed;

	public List<SchoolChild> _roamers;

	public Vector3 _posBuffer;

	public Vector3 _posOffset;

	public bool _avoidance;

	public float _avoidAngle = 0.35f;

	public float _avoidDistance = 1f;

	public float _avoidSpeed = 75f;

	public float _stopDistance = 0.5f;

	public float _stopSpeedMultiplier = 2f;

	public LayerMask _avoidanceMask = LayerMask.op_Implicit(-1);

	public bool _push;

	public float _pushDistance;

	public float _pushForce = 5f;

	public SchoolBubbles _bubbles;

	public int _updateDivisor = 1;

	public float _newDelta;

	public int _updateCounter;

	public int _activeChildren;

	public bool _useLegacyAnimations = true;

	private bool _ownsGroupTransform;

	public void Start()
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		_posBuffer = ((Component)this).transform.position + _posOffset;
		_schoolSpeed = Random.Range(1f, _childSpeedMultipler);
		AddFish(_childAmount);
		((MonoBehaviour)this).Invoke("AutoRandomWaypointPosition", RandomWaypointTime());
	}

	public void Update()
	{
		if (_activeChildren <= 0)
		{
			return;
		}
		if (_updateDivisor > 1)
		{
			_updateCounter++;
			_updateCounter %= _updateDivisor;
			_newDelta = Time.deltaTime * (float)_updateDivisor;
		}
		else
		{
			_newDelta = Time.deltaTime;
		}
		UpdateFishAmount();
		for (int i = 0; i < _roamers.Count; i++)
		{
			if ((Object)(object)_roamers[i] != (Object)null && _roamers[i].ShouldUpdate(_updateCounter))
			{
				_roamers[i].childUpdate();
			}
		}
	}

	public void OnDestroy()
	{
		if (_roamers != null)
		{
			foreach (SchoolChild roamer in _roamers)
			{
				if ((Object)(object)roamer != (Object)null)
				{
					Object.Destroy((Object)(object)((Component)roamer).gameObject);
				}
			}
			_roamers.Clear();
		}
		if (_ownsGroupTransform && (Object)(object)_groupTransform != (Object)null)
		{
			Object.Destroy((Object)(object)((Component)_groupTransform).gameObject);
		}
	}

	public void InstantiateGroup()
	{
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Expected O, but got Unknown
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		if (!((Object)(object)_groupTransform != (Object)null))
		{
			GameObject val = new GameObject();
			_ownsGroupTransform = true;
			_groupTransform = val.transform;
			_groupTransform.position = ((Component)this).transform.position;
			if (_groupName != "")
			{
				((Object)val).name = _groupName;
			}
			else
			{
				((Object)val).name = ((Object)((Component)this).transform).name + " Fish Container";
			}
		}
	}

	public void AddFish(int amount)
	{
		if (_groupChildToNewTransform)
		{
			InstantiateGroup();
		}
		for (int i = 0; i < amount; i++)
		{
			int num = Random.Range(0, _childPrefab.Length);
			SchoolChild schoolChild = Object.Instantiate<SchoolChild>(_childPrefab[num]);
			schoolChild._spawner = this;
			_roamers.Add(schoolChild);
			AddChildToParent(((Component)schoolChild).transform);
		}
	}

	public void AddChildToParent(Transform obj)
	{
		if (_groupChildToSchool)
		{
			obj.parent = ((Component)this).transform;
		}
		else if (_groupChildToNewTransform)
		{
			obj.parent = _groupTransform;
		}
	}

	public void RemoveFish(int amount)
	{
		for (int i = 0; i < amount; i++)
		{
			if (_roamers.Count <= 0)
			{
				break;
			}
			SchoolChild schoolChild = _roamers[_roamers.Count - 1];
			_roamers.RemoveAt(_roamers.Count - 1);
			if ((Object)(object)schoolChild != (Object)null)
			{
				Object.Destroy((Object)(object)((Component)schoolChild).gameObject);
			}
		}
	}

	public void UpdateFishAmount()
	{
		if (_childAmount >= 0 && _childAmount < _roamers.Count)
		{
			RemoveFish(1);
		}
		else if (_childAmount > _roamers.Count)
		{
			AddFish(1);
		}
	}

	public void SetRandomWaypointPosition()
	{
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
		_schoolSpeed = Random.Range(1f, _childSpeedMultipler);
		Vector3 zero = Vector3.zero;
		zero.x = Random.Range(0f - _positionSphere, _positionSphere) + ((Component)this).transform.position.x;
		zero.z = Random.Range(0f - _positionSphereDepth, _positionSphereDepth) + ((Component)this).transform.position.z;
		zero.y = Random.Range(0f - _positionSphereHeight, _positionSphereHeight) + ((Component)this).transform.position.y;
		_posBuffer = zero;
		if (_forceChildWaypoints)
		{
			for (int i = 0; i < _roamers.Count; i++)
			{
				_roamers[i].Wander(Random.value * _forcedRandomDelay);
			}
		}
	}

	public void AutoRandomWaypointPosition()
	{
		if (_autoRandomPosition && _activeChildren > 0)
		{
			SetRandomWaypointPosition();
		}
		((MonoBehaviour)this).CancelInvoke("AutoRandomWaypointPosition");
		((MonoBehaviour)this).Invoke("AutoRandomWaypointPosition", RandomWaypointTime());
	}

	public float RandomWaypointTime()
	{
		return Random.Range(_randomPositionTimerMin, _randomPositionTimerMax);
	}

	public void OnDrawGizmos()
	{
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		//IL_007a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		//IL_0094: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: Unknown result type (might be due to invalid IL or missing references)
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0041: Unknown result type (might be due to invalid IL or missing references)
		if (!Application.isPlaying && _posBuffer != ((Component)this).transform.position + _posOffset)
		{
			_posBuffer = ((Component)this).transform.position + _posOffset;
		}
		Gizmos.color = Color.blue;
		Gizmos.DrawWireCube(_posBuffer, new Vector3(_spawnSphere * 2f, _spawnSphereHeight * 2f, _spawnSphereDepth * 2f));
		Gizmos.color = Color.cyan;
		Gizmos.DrawWireCube(((Component)this).transform.position, new Vector3(_positionSphere * 2f + _spawnSphere * 2f, _positionSphereHeight * 2f + _spawnSphereHeight * 2f, _positionSphereDepth * 2f + _spawnSphereDepth * 2f));
	}
}
public class TriggerPlatform : MonoBehaviour
{
	public Elevator m_platform;

	private void OnTriggerEnter(Collider other)
	{
		if (!MainConfig.autoTriggers.Value || (Object)(object)m_platform == (Object)null)
		{
			return;
		}
		Player componentInParent = ((Component)other).GetComponentInParent<Player>();
		if ((Object)(object)componentInParent != (Object)null)
		{
			if ((Object)(object)componentInParent != (Object)(object)Player.m_localPlayer)
			{
				return;
			}
		}
		else if (!m_platform.IsOwner())
		{
			return;
		}
		m_platform.Activate();
	}
}
public class WaypointMover : MonoBehaviour
{
	[SerializeField]
	private Waypoints waypoints;

	[Range(0f, 10f)]
	[SerializeField]
	private float moveSpeed = 5f;

	[Range(0f, 20f)]
	[SerializeField]
	private float rotateSpeed = 0.5f;

	[SerializeField]
	private float distanceThreshold = 0.1f;

	private Transform currentWaypoint;

	private Quaternion rotationGoal;

	private Vector3 directionToWaypoint;

	private void Start()
	{
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		currentWaypoint = waypoints.GetNextWaypoint(currentWaypoint);
		((Component)this).transform.position = currentWaypoint.position;
		currentWaypoint = waypoints.GetNextWaypoint(currentWaypoint);
		((Component)this).transform.LookAt(currentWaypoint);
	}

	private void Update()
	{
		//IL_000c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		((Component)this).transform.position = Vector3.MoveTowards(((Component)this).transform.position, currentWaypoint.position, moveSpeed * Time.deltaTime);
		if (Vector3.Distance(((Component)this).transform.position, currentWaypoint.position) < distanceThreshold)
		{
			currentWaypoint = waypoints.GetNextWaypoint(currentWaypoint);
		}
		RotateTowardsWaypoint();
	}

	private void RotateTowardsWaypoint()
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_001f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0035: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Unknown result type (might be due to invalid IL or missing references)
		//IL_004c: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		Vector3 val = currentWaypoint.position - ((Component)this).transform.position;
		directionToWaypoint = ((Vector3)(ref val)).normalized;
		rotationGoal = Quaternion.LookRotation(directionToWaypoint);
		((Component)this).transform.rotation = Quaternion.Slerp(((Component)this).transform.rotation, rotationGoal, rotateSpeed * Time.deltaTime);
	}
}
public class Waypoints : MonoBehaviour
{
	[Range(0f, 2f)]
	[SerializeField]
	private float gizmoSize = 1f;

	[SerializeField]
	private bool canLoop = true;

	private void OnDrawGizmos()
	{
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		foreach (Transform item in ((Component)this).transform)
		{
			Gizmos.color = Color.blue;
			Gizmos.DrawWireSphere(item.position, gizmoSize);
		}
		Gizmos.color = Color.red;
		for (int i = 0; i < ((Component)this).transform.childCount - 1; i++)
		{
			Gizmos.DrawLine(((Component)this).transform.GetChild(i).position, ((Component)this).transform.GetChild(i + 1).position);
		}
		if (canLoop)
		{
			Gizmos.DrawLine(((Component)this).transform.GetChild(((Component)this).transform.childCount - 1).position, ((Component)this).transform.GetChild(0).position);
		}
	}

	public Transform GetNextWaypoint(Transform currentWaypoint)
	{
		if ((Object)(object)currentWaypoint == (Object)null)
		{
			return ((Component)this).transform.GetChild(0);
		}
		if (currentWaypoint.GetSiblingIndex() < ((Component)this).transform.childCount - 1)
		{
			return ((Component)this).transform.GetChild(currentWaypoint.GetSiblingIndex() + 1);
		}
		if (canLoop)
		{
			return ((Component)this).transform.GetChild(0);
		}
		return ((Component)this).transform.GetChild(currentWaypoint.GetSiblingIndex());
	}
}
namespace MagicMike.ModSettings
{
	internal sealed class ResetIcon : MaskableGraphic
	{
		private const int Segments = 28;

		protected override void OnPopulateMesh(VertexHelper vh)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			vh.Clear();
			Rect pixelAdjustedRect = ((Graphic)this).GetPixelAdjustedRect();
			Vector2 center = ((Rect)(ref pixelAdjustedRect)).center;
			float num = Mathf.Min(((Rect)(ref pixelAdjustedRect)).width, ((Rect)(ref pixelAdjustedRect)).height) * 0.36f;
			float num2 = num * 0.3f;
			for (int i = 0; i < 28; i++)
			{
				float angle = Mathf.Lerp(60f, 330f, (float)i / 28f) * ((float)Math.PI / 180f);
				float angle2 = Mathf.Lerp(60f, 330f, (float)(i + 1) / 28f) * ((float)Math.PI / 180f);
				Quad(vh, Polar(center, num + num2 * 0.5f, angle), Polar(center, num + num2 * 0.5f, angle2), Polar(center, num - num2 * 0.5f, angle2), Polar(center, num - num2 * 0.5f, angle));
			}
			float num3 = 5.7595863f;
			Vector2 val = Polar(center, num, num3);
			Vector2 val2 = default(Vector2);
			((Vector2)(ref val2))..ctor(0f - Mathf.Sin(num3), Mathf.Cos(num3));
			Vector2 val3 = default(Vector2);
			((Vector2)(ref val3))..ctor(Mathf.Cos(num3), Mathf.Sin(num3));
			float num4 = num2 * 2.2f;
			Triangle(vh, val + val2 * num4, val + val3 * num4 * 0.9f, val - val3 * num4 * 0.9f);
		}

		private static Vector2 Polar(Vector2 centre, float radius, float angle)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			return centre + new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)) * radius;
		}

		private void Quad(VertexHelper vh, Vector2 a, Vector2 b, Vector2 c, Vector2 d)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			int currentVertCount = vh.currentVertCount;
			Vertex(vh, a);
			Vertex(vh, b);
			Vertex(vh, c);
			Vertex(vh, d);
			vh.AddTriangle(currentVertCount, currentVertCount + 1, currentVertCount + 2);
			vh.AddTriangle(currentVertCount, currentVertCount + 2, currentVertCount + 3);
		}

		private void Triangle(VertexHelper vh, Vector2 a, Vector2 b, Vector2 c)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			int currentVertCount = vh.currentVertCount;
			Vertex(vh, a);
			Vertex(vh, b);
			Vertex(vh, c);
			vh.AddTriangle(currentVertCount, currentVertCount + 1, currentVertCount + 2);
		}

		private void Vertex(VertexHelper vh, Vector2 position)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			UIVertex simpleVert = UIVertex.simpleVert;
			simpleVert.position = Vector2.op_Implicit(position);
			simpleVert.color = Color32.op_Implicit(((Graphic)this).color);
			vh.AddVert(simpleVert);
		}
	}
	internal sealed class DownArrowIcon : MaskableGraphic
	{
		protected override void OnPopulateMesh(VertexHelper vh)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			vh.Clear();
			Rect pixelAdjustedRect = ((Graphic)this).GetPixelAdjustedRect();
			UIVertex simpleVert = UIVertex.simpleVert;
			simpleVert.color = Color32.op_Implicit(((Graphic)this).color);
			simpleVert.position = Vector2.op_Implicit(new Vector2(((Rect)(ref pixelAdjustedRect)).xMin, ((Rect)(ref pixelAdjustedRect)).yMax));
			vh.AddVert(simpleVert);
			simpleVert.position = Vector2.op_Implicit(new Vector2(((Rect)(ref pixelAdjustedRect)).xMax, ((Rect)(ref pixelAdjustedRect)).yMax));
			vh.AddVert(simpleVert);
			simpleVert.position = Vector2.op_Implicit(new Vector2(((Rect)(ref pixelAdjustedRect)).center.x, ((Rect)(ref pixelAdjustedRect)).yMin));
			vh.AddVert(simpleVert);
			vh.AddTriangle(0, 1, 2);
		}
	}
	internal sealed class CloseIcon : MaskableGraphic
	{
		protected override void OnPopulateMesh(VertexHelper vh)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			vh.Clear();
			Rect pixelAdjustedRect = ((Graphic)this).GetPixelAdjustedRect();
			Vector2 center = ((Rect)(ref pixelAdjustedRect)).center;
			float num = Mathf.Min(((Rect)(ref pixelAdjustedRect)).width, ((Rect)(ref pixelAdjustedRect)).height) * 0.5f;
			float thickness = Mathf.Max(2f, num * 0.28f);
			Bar(vh, center + new Vector2(0f - num, 0f - num), center + new Vector2(num, num), thickness);
			Bar(vh, center + new Vector2(0f - num, num), center + new Vector2(num, 0f - num), thickness);
		}

		private void Bar(VertexHelper vh, Vector2 from, Vector2 to, float thickness)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			Vector2 val = to - from;
			float num = 0f - ((Vector2)(ref val)).normalized.y;
			val = to - from;
			Vector2 val2 = new Vector2(num, ((Vector2)(ref val)).normalized.x) * (thickness * 0.5f);
			int currentVertCount = vh.currentVertCount;
			UIVertex simpleVert = UIVertex.simpleVert;
			simpleVert.color = Color32.op_Implicit(((Graphic)this).color);
			simpleVert.position = Vector2.op_Implicit(from + val2);
			vh.AddVert(simpleVert);
			simpleVert.position = Vector2.op_Implicit(to + val2);
			vh.AddVert(simpleVert);
			simpleVert.position = Vector2.op_Implicit(to - val2);
			vh.AddVert(simpleVert);
			simpleVert.position = Vector2.op_Implicit(from - val2);
			vh.AddVert(simpleVert);
			vh.AddTriangle(currentVertCount, currentVertCount + 1, currentVertCount + 2);
			vh.AddTriangle(currentVertCount, currentVertCount + 2, currentVertCount + 3);
		}
	}
	internal static class LinkIcons
	{
		private static Sprite s_discord;

		private static Sprite s_payPal;

		private const int Size = 30;

		private const string DiscordPixels = "NSMc/zUjHP81Ixz/XE5V/7Ots//X1uT/2Nv5/8rO+/+6v/n/srf4/6yy9/+rsPj/qq/4/6mv+P+pr/j/qa/4/6mv+P+qr/j/qrD4/6yx9/+wtvf/ub75/8fL+//Y2vr/3t3u/7+3wf9xYXH/OCYh/zUjHP81Ixz/NSMc/zgmIv+Xjpf/4OL6/5Wc+v9rdPf/WWT3/1Ne9/9TXff/UVz3/1Fb9/9RW/f/UVv4/1Fc+P9RXPj/UVz4/1Fc+P9RXPj/UVz4/1Fb9/9RXPf/Ulz3/1Re9/9YY/f/ZG33/42V+P/V2vr/wLi//z0rK/81Ixz/NSMc/5CIlP/P0/v/XWj2/1Jc+P9XYfj/WmT4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/WWP4/1Ne+P9VXvf/srj4/7uyu/86JyX/SzxB//Dx/v9gavb/WWP4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9aZPj/U173/9LW+/9mVmT/qqOr/6Ko9v9SXPj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/4WN+P/Qy9n/4NzX/1xm9f9aZPj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/WGL4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9XYfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/2Js9v/z9f//397l/0xX9/9bZfj/W2X4/1tl+P9bZfj/WmT4/1Re+P9TXvf/Zm/2/1dh+P9cZvj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1Vf+P9rdPX/VF/3/1Ne+P9aZPj/W2X4/1tl+P9bZfj/W2X4/1Jc9v/m6v3/0dLs/1Fc+P9bZfj/W2X4/1tl+P9WYPj/Vl/3/4CI9v/Bxfn/9/j8/5GY9f9VX/j/WGL4/1Vf+P9TXvj/U174/1Rf+P9XYvj/WGL4/32G9f/4+fz/y875/5CW9v9YYvb/VF74/1tl+P9bZfj/W2X4/1Fb+P/N0vr/ycz0/1Nd+P9bZfj/W2X4/1Zg+P9ze/X/zND4//z8/f///////////9/h+P9MWPX/Zm/2/3yE9/+Ij/f/iI/3/36H9v9rdPb/WGP2/7m+9////////////////v/X2vr/hIz2/1Nd9/9bZfj/W2X4/1Nd+P+8wvn/wsb4/1Ne+P9bZfj/W2X4/4yU9v/29vz/////////////////zND2/6mu9f/U1/r/8PL9//7//f/////////+/////v/19vz/2dz6/66z9v+2u/X////////////////////9/6yx9v9TXvf/W2X4/1Ne+P+yuPn/vsL3/1Re+P9bZfj/W2X4/7S4+P//////////////////////+vr9//7+///////////////////////////////////////////////////29/3//////////////////////+rr/P9QW/X/W2X4/1Re+P+ts/n/vMD3/1Rf+P9bZfj/W2X4/7e8+P///////////////////////////////v/2+Pz//v7+//////////////////////////7/9/f8//39/v///////////////////////////+zt/f9TXfb/W2X4/1Re+P+qsfn/u7/2/1Rf+P9bZfj/W2X4/7O3+P/////////////////////////9/56j9v9ocfb/kpj1/////v///////////////v+qr/b/aXP2/4mQ9v/9/f3//////////////////////+nq/f9QW/b/W2X4/1Ve9/+psPr/ur/2/1Rf+P9bZfj/W2X4/6ar9///////////////////////zND5/1Zg+P9XYfj/SVX3/8nL9////////////9rd+/9bZff/V2L4/0pV9/+4vfb//////////////////////9fZ+v9QWvf/W2X4/1Ve+P+or/r/u7/3/1Rf+P9bZfj/W2X4/5KZ9//+/v7/////////////////vsP5/1hi+P9bZfj/T1r4/7K39f///////////9DS+v9bZff/W2T4/1Fb+P+gpvT//////////////////////7a69v9SXfj/W2X4/1Ve+P+pr/r/u7/3/1Rf+P9bZfj/W2X4/3mB9//29v7/////////////////9Pb8/3Z+9P9SXPb/Z3H0//b3+/////////////n5/f+Civb/Ul32/2Bq9P/u7/v//////////////////////4WM9f9WYfj/W2X4/1Ve+P+pr/r/ur/2/1Rf+P9bZfj/W2X4/1lk9v/q6/v///////////////////////T1+//O0fn/8PH7///////////////////////4+f3/z9L5/+vt+//////////////////////////9/1Re9v9bZfj/W2X4/1Ve+P+pr/r/u7/3/1Rf+P9bZfj/W2X4/1Fc+P+zuPb/////////////////////////////////////////////////////////////////////////////////////////////////ycz3/1Re+P9bZfj/W2X4/1Re9/+psPn/vMD3/1Rf+P9bZfj/W2X4/1lj+P9hbPT////+//////////////////////////////////////////////////////////////////////////////////////////7/g4v2/1pk+P9bZfj/W2X4/1Re9/+qsfr/vsL4/1Re+P9bZfj/W2X4/1tl+P9TXfj/u8D2///////////////////////////////////////////////////////////////////////////////////////Z2/r/YGj3/1tl+P9bZfj/W2X4/1Re+P+ts/n/w8f3/1Ne+P9bZfj/W2X4/1tl+P9bZfj/bnb1//Hy/P////////////////////////////////////////////////////////////////////////////////+FjfX/V2H4/1tl+P9bZfj/W2X4/1Ne+P+zuPn/ycz0/1Jd+P9bZfj/W2X4/1tl+P9bZfj/WGL3/6Gn9f/39/z/////////////////9fb9//P0/P/5+f3/+fr9//P0/f/z9fz//////////////////P39/7/D9/9PWff/W2X4/1tl+P9bZfj/W2X4/1Nd+P+9wvn/0tPu/1Fb+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1Rg9/9vd/b/n6X3/83R+f/x8vv/kZj1/2dw9v9wefb/cHn2/2Zw9v94gfT/+fn8/9fZ+v+mrPj/dX72/1Zg9/9bZvj/W2X4/1tl+P9bZfj/W2X4/1Fb+P/P0/r/4eDk/0xX9/9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9XYvj/UVz4/1Vf9v9ibPf/WmT4/1hi+P9WYfj/VmH4/1hi+P9VX/j/Zm/3/1hi9/9RXPf/VmD4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1Jc9v/n6v3/4N3X/15o9P9aZPj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9YY/j/WmX4/1tl+P9bZfj/W2X4/1tl+P9bZfj/WGL4/1pk+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/2Vv9v/z9f//pZ6k/6mu9v9SXPj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/4mR9//Gwc//Rjc4//Lz/f9lbvX/WGL4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9ZY/j/VF/3/9nc+v9fUFz/NSMc/4J7g//W2vr/Y232/1Fb+P9WYPj/WWP4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9aZPj/WGL4/1Jc+P9ZY/b/v8T6/62lrf84JyL/NSMc/zcmIP+If4b/5Ob3/6Cm+P9zfPf/XWj3/1Zh9/9UXvf/Ul33/1Jd9/9SXff/Ulz3/1Jc9/9SXPf/Ulz3/1Jc9/9SXPf/Ulz3/1Jd+P9TXff/U173/1Zg9/9dZ/f/bHb3/5mg+f/d4fr/q6Kr/zooJf81Ixz/NSMc/zUjHP81Ixz/U0VH/6afpP/NzNT/29zz/9TX+v/Hy/n/v8T6/7q/+f+4vfn/trv3/7a79/+2u/f/trr3/7a89/+4vPj/uLz4/7q++v+/w/r/x8r5/9LW+//d3/b/1tTh/6ylrf9fUFn/NiQe/zUjHP81Ixz/";

		private const string PayPalPixels = "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t7v4/4mR9/9UXvj/WWP4/1tl+P9bZfj/Xmj//1Vh6/8zRp7/JDp+/yU7f/8lO4D/Jjl+/yY3fP8mN3z/Jjd8/yY3fP8mNXv/JzJ4/yY4ff8fZ6f/Fp/b/xOg1v8xhuT/Yl/8/1xk+P9bZvj/UVz4/3R79/+cn/b/trv4/4mR9/9UXvj/WWP4/1tl+P9bZfj/XGb9/1lk9v82SaX/JDp+/yU7f/8lO4D/JTuA/yU8gf8lPIH/JTyB/yU8gf8lPIH/JTuA/yY2e/8lP4P/GX+6/xSn4v9Aeun/Y1/7/1tl+P9cZvj/UVz4/3N79/+bn/X/t7v5/4qR+P9UXvj/WWP3/1tl+P9bZfj/W2X5/2Bp/v85S6z/JTp+/yU7f/8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7gP8lO4D/JTuA/yU6f/8lNnv/IFyd/yyX7/9YaPf/XmL5/1tl+P9cZvj/UVz4/3N79/+bn/X/ub35/4qS+P9UXvj/WWT3/1tm+P9bZfj/WmT3/2Vt//89TbD/JTp+/yU7f/8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7f/8jN3r/LEiZ/1Fv9P9iY///WmX3/1tl+P9cZvj/UVz4/3N79/+boPb/ub34/4uS9/9UX/j/WWT4/1tl+P9bZfj/WmT2/2Zt//9BUbv/JjyC/yQ7fv8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7gP8lO4D/JTuA/yQ7f/8hOHj/MkOc/2Bj/P9fZ/7/W2X4/1tl+P9cZvj/UVz5/3N89/+bofb/ur/5/46U9/9UX/j/WGL4/1tl+P9bZfj/WmT2/2Ns//9KWM7/KT6J/yM6ff8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7gP8lO4D/JTuA/yQ6f/8iOHr/N0em/2Rr//9bZvj/W2X4/1tl+P9bZvj/UFz5/3R89/+eo/T/u7/1/5GX9v9XYfn/V2H4/1tl+P9bZfj/W2X3/2Fq//9SXuL/LEGP/yI6ff8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7gP8lO4D/JjuC/yM5ff8lO4H/SFbM/2Fq//9bZff/W2X4/1tl+P9bZfj/T1r4/3R89/+gpPT/tbjk/5OZ7/9bZPr/VmD4/1tl+P9bZfj/W2X4/15n/f9bZPj/LkOW/yI6e/8lO3//JTuA/yU7gP8lO4D/JTuA/yU7gP8kOn//IDd1/x82df87TbL/XGb5/1xm+/9bZfj/W2X4/1tl+P9bZfj/UFz5/3Z88/+hpO3/qKfF/5aZ4v9hbP3/VV/4/1xl+P9bZfj/W2X4/1tl+P9ja///LkOT/xo0av8eNW//HjVw/x41cP8eNXD/HjVw/x41cP8fNXP/Jz2F/z9PuP9YZPP/XWf+/1tl+P9bZfj/W2X4/1tl+P9YY/j/VV/6/4CF6/+npt7/nJel/52d1P9oc///U134/1xm+P9bZfj/W2X4/1tl+P9faf//SFbO/z1Ntv8/Trf/P063/z9Ot/8/Trf/P063/z9Ot/9EUsP/T13g/1pk9/9dZ/z/W2X4/1tl+P9bZfj/W2X4/11n+P9SXPf/V2L9/5eZ4f+yq8b/g3l9/6SgvP97g///TVj4/1tl+P9cZvj/W2X4/1tl+P9bZfn/XGb3/1pk9v9aZPb/WmT2/1pk9v9aZPb/WmT2/1pk9v9cZfn/XWb8/11m/P9bZfj/W2X4/1tl+P9bZfj/W2X4/1xm+P9NV/f/cHr//7Cv1f+lmqT/Sjs7/46Fgf+3u/L/Xmr8/0tW9/9cZfj/XWb4/1tl+P9bZfj/XWf6/11n+v9dZ/r/XWf6/11n+v9dZ/r/XWf6/11n+v9dZvr/XGX5/1tl+P9bZfj/W2X4/1tl+P9cZvj/XGb4/05Z9/9XY/v/rrX8/56Vm/9dTlT/NiUf/0ExLf+moaP/xcn7/3V+/P9LWPf/S1f4/1Fa+P9SXfj/U134/1Rf+P9VX/j/VWD4/1Zg+P9WYPj/VWD4/1Zg+P9VX/j/VF/4/1Re+P9TXvj/U134/1Ba+P9NV/j/Slb2/2Vy+P+6wP//v7fB/1FBQf85JyL/NSMc/zMhGv8/Lir/g3l8/9PR4//Jzv7/oaj7/4yT+v9+hvj/eID4/3R89/9xevf/b3j2/2549v9uePb/b3j2/2949v9wevb/cXr3/3R8+P94gPn/fYb4/4qR+/+epPr/xcr//9nb7/+VjJb/RDM0/zMiGv81Ixz/NSMc/zUjHP81Ixz/NyUd/0c3Nf9pXWD/jIaM/6qnsP/BvMf/yMXQ/8vK1P/PzNn/0c7b/9PQ3P/Tz9z/08/c/9DO2//Mydf/y8rX/8vK1v/Jx9P/wLvH/62psv+Uipb/bmFr/0o5O/84JiD/NSMc/zUjHP81Ixz/";

		public static Sprite Discord
		{
			get
			{
				if (!((Object)(object)s_discord != (Object)null))
				{
					return s_discord = Load("Discord", "NSMc/zUjHP81Ixz/XE5V/7Ots//X1uT/2Nv5/8rO+/+6v/n/srf4/6yy9/+rsPj/qq/4/6mv+P+pr/j/qa/4/6mv+P+qr/j/qrD4/6yx9/+wtvf/ub75/8fL+//Y2vr/3t3u/7+3wf9xYXH/OCYh/zUjHP81Ixz/NSMc/zgmIv+Xjpf/4OL6/5Wc+v9rdPf/WWT3/1Ne9/9TXff/UVz3/1Fb9/9RW/f/UVv4/1Fc+P9RXPj/UVz4/1Fc+P9RXPj/UVz4/1Fb9/9RXPf/Ulz3/1Re9/9YY/f/ZG33/42V+P/V2vr/wLi//z0rK/81Ixz/NSMc/5CIlP/P0/v/XWj2/1Jc+P9XYfj/WmT4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/WWP4/1Ne+P9VXvf/srj4/7uyu/86JyX/SzxB//Dx/v9gavb/WWP4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9aZPj/U173/9LW+/9mVmT/qqOr/6Ko9v9SXPj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/4WN+P/Qy9n/4NzX/1xm9f9aZPj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/WGL4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9XYfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/2Js9v/z9f//397l/0xX9/9bZfj/W2X4/1tl+P9bZfj/WmT4/1Re+P9TXvf/Zm/2/1dh+P9cZvj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1Vf+P9rdPX/VF/3/1Ne+P9aZPj/W2X4/1tl+P9bZfj/W2X4/1Jc9v/m6v3/0dLs/1Fc+P9bZfj/W2X4/1tl+P9WYPj/Vl/3/4CI9v/Bxfn/9/j8/5GY9f9VX/j/WGL4/1Vf+P9TXvj/U174/1Rf+P9XYvj/WGL4/32G9f/4+fz/y875/5CW9v9YYvb/VF74/1tl+P9bZfj/W2X4/1Fb+P/N0vr/ycz0/1Nd+P9bZfj/W2X4/1Zg+P9ze/X/zND4//z8/f///////////9/h+P9MWPX/Zm/2/3yE9/+Ij/f/iI/3/36H9v9rdPb/WGP2/7m+9////////////////v/X2vr/hIz2/1Nd9/9bZfj/W2X4/1Nd+P+8wvn/wsb4/1Ne+P9bZfj/W2X4/4yU9v/29vz/////////////////zND2/6mu9f/U1/r/8PL9//7//f/////////+/////v/19vz/2dz6/66z9v+2u/X////////////////////9/6yx9v9TXvf/W2X4/1Ne+P+yuPn/vsL3/1Re+P9bZfj/W2X4/7S4+P//////////////////////+vr9//7+///////////////////////////////////////////////////29/3//////////////////////+rr/P9QW/X/W2X4/1Re+P+ts/n/vMD3/1Rf+P9bZfj/W2X4/7e8+P///////////////////////////////v/2+Pz//v7+//////////////////////////7/9/f8//39/v///////////////////////////+zt/f9TXfb/W2X4/1Re+P+qsfn/u7/2/1Rf+P9bZfj/W2X4/7O3+P/////////////////////////9/56j9v9ocfb/kpj1/////v///////////////v+qr/b/aXP2/4mQ9v/9/f3//////////////////////+nq/f9QW/b/W2X4/1Ve9/+psPr/ur/2/1Rf+P9bZfj/W2X4/6ar9///////////////////////zND5/1Zg+P9XYfj/SVX3/8nL9////////////9rd+/9bZff/V2L4/0pV9/+4vfb//////////////////////9fZ+v9QWvf/W2X4/1Ve+P+or/r/u7/3/1Rf+P9bZfj/W2X4/5KZ9//+/v7/////////////////vsP5/1hi+P9bZfj/T1r4/7K39f///////////9DS+v9bZff/W2T4/1Fb+P+gpvT//////////////////////7a69v9SXfj/W2X4/1Ve+P+pr/r/u7/3/1Rf+P9bZfj/W2X4/3mB9//29v7/////////////////9Pb8/3Z+9P9SXPb/Z3H0//b3+/////////////n5/f+Civb/Ul32/2Bq9P/u7/v//////////////////////4WM9f9WYfj/W2X4/1Ve+P+pr/r/ur/2/1Rf+P9bZfj/W2X4/1lk9v/q6/v///////////////////////T1+//O0fn/8PH7///////////////////////4+f3/z9L5/+vt+//////////////////////////9/1Re9v9bZfj/W2X4/1Ve+P+pr/r/u7/3/1Rf+P9bZfj/W2X4/1Fc+P+zuPb/////////////////////////////////////////////////////////////////////////////////////////////////ycz3/1Re+P9bZfj/W2X4/1Re9/+psPn/vMD3/1Rf+P9bZfj/W2X4/1lj+P9hbPT////+//////////////////////////////////////////////////////////////////////////////////////////7/g4v2/1pk+P9bZfj/W2X4/1Re9/+qsfr/vsL4/1Re+P9bZfj/W2X4/1tl+P9TXfj/u8D2///////////////////////////////////////////////////////////////////////////////////////Z2/r/YGj3/1tl+P9bZfj/W2X4/1Re+P+ts/n/w8f3/1Ne+P9bZfj/W2X4/1tl+P9bZfj/bnb1//Hy/P////////////////////////////////////////////////////////////////////////////////+FjfX/V2H4/1tl+P9bZfj/W2X4/1Ne+P+zuPn/ycz0/1Jd+P9bZfj/W2X4/1tl+P9bZfj/WGL3/6Gn9f/39/z/////////////////9fb9//P0/P/5+f3/+fr9//P0/f/z9fz//////////////////P39/7/D9/9PWff/W2X4/1tl+P9bZfj/W2X4/1Nd+P+9wvn/0tPu/1Fb+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1Rg9/9vd/b/n6X3/83R+f/x8vv/kZj1/2dw9v9wefb/cHn2/2Zw9v94gfT/+fn8/9fZ+v+mrPj/dX72/1Zg9/9bZvj/W2X4/1tl+P9bZfj/W2X4/1Fb+P/P0/r/4eDk/0xX9/9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9XYvj/UVz4/1Vf9v9ibPf/WmT4/1hi+P9WYfj/VmH4/1hi+P9VX/j/Zm/3/1hi9/9RXPf/VmD4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1Jc9v/n6v3/4N3X/15o9P9aZPj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9YY/j/WmX4/1tl+P9bZfj/W2X4/1tl+P9bZfj/WGL4/1pk+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/2Vv9v/z9f//pZ6k/6mu9v9SXPj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/4mR9//Gwc//Rjc4//Lz/f9lbvX/WGL4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9ZY/j/VF/3/9nc+v9fUFz/NSMc/4J7g//W2vr/Y232/1Fb+P9WYPj/WWP4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9bZfj/W2X4/1tl+P9aZPj/WGL4/1Jc+P9ZY/b/v8T6/62lrf84JyL/NSMc/zcmIP+If4b/5Ob3/6Cm+P9zfPf/XWj3/1Zh9/9UXvf/Ul33/1Jd9/9SXff/Ulz3/1Jc9/9SXPf/Ulz3/1Jc9/9SXPf/Ulz3/1Jd+P9TXff/U173/1Zg9/9dZ/f/bHb3/5mg+f/d4fr/q6Kr/zooJf81Ixz/NSMc/zUjHP81Ixz/U0VH/6afpP/NzNT/29zz/9TX+v/Hy/n/v8T6/7q/+f+4vfn/trv3/7a79/+2u/f/trr3/7a89/+4vPj/uLz4/7q++v+/w/r/x8r5/9LW+//d3/b/1tTh/6ylrf9fUFn/NiQe/zUjHP81Ixz/");
				}
				return s_discord;
			}
		}

		public static Sprite PayPal
		{
			get
			{
				if (!((Object)(object)s_payPal != (Object)null))
				{
					return s_payPal = Load("PayPal", "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t7v4/4mR9/9UXvj/WWP4/1tl+P9bZfj/Xmj//1Vh6/8zRp7/JDp+/yU7f/8lO4D/Jjl+/yY3fP8mN3z/Jjd8/yY3fP8mNXv/JzJ4/yY4ff8fZ6f/Fp/b/xOg1v8xhuT/Yl/8/1xk+P9bZvj/UVz4/3R79/+cn/b/trv4/4mR9/9UXvj/WWP4/1tl+P9bZfj/XGb9/1lk9v82SaX/JDp+/yU7f/8lO4D/JTuA/yU8gf8lPIH/JTyB/yU8gf8lPIH/JTuA/yY2e/8lP4P/GX+6/xSn4v9Aeun/Y1/7/1tl+P9cZvj/UVz4/3N79/+bn/X/t7v5/4qR+P9UXvj/WWP3/1tl+P9bZfj/W2X5/2Bp/v85S6z/JTp+/yU7f/8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7gP8lO4D/JTuA/yU6f/8lNnv/IFyd/yyX7/9YaPf/XmL5/1tl+P9cZvj/UVz4/3N79/+bn/X/ub35/4qS+P9UXvj/WWT3/1tm+P9bZfj/WmT3/2Vt//89TbD/JTp+/yU7f/8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7f/8jN3r/LEiZ/1Fv9P9iY///WmX3/1tl+P9cZvj/UVz4/3N79/+boPb/ub34/4uS9/9UX/j/WWT4/1tl+P9bZfj/WmT2/2Zt//9BUbv/JjyC/yQ7fv8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7gP8lO4D/JTuA/yQ7f/8hOHj/MkOc/2Bj/P9fZ/7/W2X4/1tl+P9cZvj/UVz5/3N89/+bofb/ur/5/46U9/9UX/j/WGL4/1tl+P9bZfj/WmT2/2Ns//9KWM7/KT6J/yM6ff8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7gP8lO4D/JTuA/yQ6f/8iOHr/N0em/2Rr//9bZvj/W2X4/1tl+P9bZvj/UFz5/3R89/+eo/T/u7/1/5GX9v9XYfn/V2H4/1tl+P9bZfj/W2X3/2Fq//9SXuL/LEGP/yI6ff8lO4D/JTuA/yU7gP8lO4D/JTuA/yU7gP8lO4D/JjuC/yM5ff8lO4H/SFbM/2Fq//9bZff/W2X4/1tl+P9bZfj/T1r4/3R89/+gpPT/tbjk/5OZ7/9bZPr/VmD4/1tl+P9bZfj/W2X4/15n/f9bZPj/LkOW/yI6e/8lO3//JTuA/yU7gP8lO4D/JTuA/yU7gP8kOn//IDd1/x82df87TbL/XGb5/1xm+/9bZfj/W2X4/1tl+P9bZfj/UFz5/3Z88/+hpO3/qKfF/5aZ4v9hbP3/VV/4/1xl+P9bZfj/W2X4/1tl+P9ja///LkOT/xo0av8eNW//HjVw/x41cP8eNXD/HjVw/x41cP8fNXP/Jz2F/z9PuP9YZPP/XWf+/1tl+P9bZfj/W2X4/1tl+P9YY/j/VV/6/4CF6/+npt7/nJel/52d1P9oc///U134/1xm+P9bZfj/W2X4/1tl+P9faf//SFbO/z1Ntv8/Trf/P063/z9Ot/8/Trf/P063/z9Ot/9EUsP/T13g/1pk9/9dZ/z/W2X4/1tl+P9bZfj/W2X4/11n+P9SXPf/V2L9/5eZ4f+yq8b/g3l9/6SgvP97g///TVj4/1tl+P9cZvj/W2X4/1tl+P9bZfn/XGb3/1pk9v9aZPb/WmT2/1pk9v9aZPb/WmT2/1pk9v9cZfn/XWb8/11m/P9bZfj/W2X4/1tl+P9bZfj/W2X4/1xm+P9NV/f/cHr//7Cv1f+lmqT/Sjs7/46Fgf+3u/L/Xmr8/0tW9/9cZfj/XWb4/1tl+P9bZfj/XWf6/11n+v9dZ/r/XWf6/11n+v9dZ/r/XWf6/11n+v9dZvr/XGX5/1tl+P9bZfj/W2X4/1tl+P9cZvj/XGb4/05Z9/9XY/v/rrX8/56Vm/9dTlT/NiUf/0ExLf+moaP/xcn7/3V+/P9LWPf/S1f4/1Fa+P9SXfj/U134/1Rf+P9VX/j/VWD4/1Zg+P9WYPj/VWD4/1Zg+P9VX/j/VF/4/1Re+P9TXvj/U134/1Ba+P9NV/j/Slb2/2Vy+P+6wP//v7fB/1FBQf85JyL/NSMc/zMhGv8/Lir/g3l8/9PR4//Jzv7/oaj7/4yT+v9+hvj/eID4/3R89/9xevf/b3j2/2549v9uePb/b3j2/2949v9wevb/cXr3/3R8+P94gPn/fYb4/4qR+/+epPr/xcr//9nb7/+VjJb/RDM0/zMiGv81Ixz/NSMc/zUjHP81Ixz/NyUd/0c3Nf9pXWD/jIaM/6qnsP/BvMf/yMXQ/8vK1P/PzNn/0c7b/9PQ3P/Tz9z/08/c/9DO2//Mydf/y8rX/8vK1v/Jx9P/wLvH/62psv+Uipb/bmFr/0o5O/84JiD/NSMc/zUjHP81Ixz/");
				}
				return s_payPal;
			}
		}

		private static Sprite Load(string name, string pixels)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Expected O, but got Unknown
			Texture2D val = new Texture2D(30, 30, (TextureFormat)4, false)
			{
				name = "MagicMike " + name
			};
			val.LoadRawTextureData(Convert.FromBase64String(pixels));
			val.Apply();
			return Sprite.Create(val, new Rect(0f, 0f, 30f, 30f), new Vector2(0.5f, 0.5f));
		}
	}
	internal static class ModSettings
	{
		internal const int Version = 34;

		internal const string GuidPrefix = "MagicMike.";

		private const string HostKey = "MagicMike.ModSettings.Host";

		private const string VersionKey = "MagicMike.ModSettings.Version";

		private static readonly string s_id = typeof(ModSettings).Assembly.GetName().Name;

		private static bool s_initialised;

		private static ConfigEntry<float> s_panelX;

		private static ConfigEntry<float> s_panelY;

		internal static ConfigFile Config { get; private set; }

		internal static ConfigEntry<KeyboardShortcut> ToggleKey { get; private set; }

		internal static ConfigEntry<float> ScrollSpeed { get; private set; }

		internal static Vector2 PanelPosition
		{
			get
			{
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				if (s_panelX == null)
				{
					return Vector2.zero;
				}
				return new Vector2(s_panelX.Value, s_panelY.Value);
			}
			set
			{
				//IL_000c: Unknown result type (might be due to invalid IL or missing references)
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				if (s_panelX != null)
				{
					s_panelX.Value = value.x;
					s_panelY.Value = value.y;
				}
			}
		}

		internal static bool IsHost => AppDomain.CurrentDomain.GetData("MagicMike.ModSettings.Host") as string == s_id;

		public static void Init(BaseUnityPlugin plugin)
		{
			if (!s_initialised)
			{
				s_initialised = true;
				AppDomain currentDomain = AppDomain.CurrentDomain;
				if (!(currentDomain.GetData("MagicMike.ModSettings.Version") is int num) || 34 > num)
				{
					currentDomain.SetData("MagicMike.ModSettings.Version", 34);
					currentDomain.SetData("MagicMike.ModSettings.Host", s_id);
				}
				((Component)plugin).gameObject.AddComponent<ModSettingsDriver>();
			}
		}

		internal static void StartHost()
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Expected O, but got Unknown
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Expected O, but got Unknown
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Expected O, but got Unknown
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Expected O, but got Unknown
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Expected O, but got Unknown
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_013a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Expected O, but got Unknown
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_017d: Expected O, but got Unknown
			Config = new ConfigFile(Path.Combine(Paths.ConfigPath, "MagicMike.ModSettings.cfg"), true);
			ToggleKey = Config.Bind<KeyboardShortcut>("General", "Toggle Key", new KeyboardShortcut((KeyCode)288, Array.Empty<KeyCode>()), "The key that opens and closes the Mod Settings panel.");
			ScrollSpeed = Config.Bind<float>("General", "Scroll Speed", 3f, new ConfigDescription("How many setting rows the list moves for each notch of the mouse wheel.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(1f, 10f), Array.Empty<object>()));
			s_panelX = Config.Bind<float>("General", "Panel Position X", 0f, new ConfigDescription("Where the panel was last dragged to, across from the centre of the screen.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
			{
				Browsable = false
			} }));
			s_panelY = Config.Bind<float>("General", "Panel Position Y", 0f, new ConfigDescription("Where the panel was last dragged to, up from the centre of the screen.", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
			{
				Browsable = false
			} }));
			Harmony val = new Harmony("MagicMike.ModSettings");
			val.Patch((MethodBase)AccessTools.Method(typeof(Menu), "Update", (Type[])null, (Type[])null), new HarmonyMethod(typeof(ModSettings), "MenuUpdatePrefix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
			val.Patch((MethodBase)AccessTools.Method(typeof(ZInput), "GetMouseScrollWheel", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(typeof(ModSettings), "MouseScrollPostfix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
		}

		private static bool MenuUpdatePrefix()
		{
			return !SettingsPanel.IsOpen;
		}

		private static void MouseScrollPostfix(ref float __result)
		{
			if (SettingsPanel.IsOpen)
			{
				__result = 0f;
			}
		}
	}
	internal sealed class ModSettingsDriver : MonoBehaviour
	{
		private SettingsPanel m_panel;

		private void Start()
		{
			if (!ModSettings.IsHost)
			{
				Object.Destroy((Object)(object)this);
			}
			else
			{
				ModSettings.StartHost();
			}
		}

		private void Update()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			if (ModSettings.ToggleKey == null)
			{
				return;
			}
			KeyboardShortcut value = ModSettings.ToggleKey.Value;
			if (!((KeyboardShortcut)(ref value)).IsDown() || IsTyping() || ((Object)(object)m_panel != (Object)null && m_panel.IsCapturingKey))
			{
				return;
			}
			if ((Object)(object)m_panel == (Object)null)
			{
				if (GUIManager.IsHeadless() || (Object)(object)GUIManager.CustomGUIFront == (Object)null)
				{
					return;
				}
				m_panel = SettingsPanel.Create();
			}
			m_panel.Toggle();
		}

		private static bool IsTyping()
		{
			if (SettingsPanel.IsOpen)
			{
				return false;
			}
			if (!Console.IsVisible() && !TextInput.IsVisible() && (!((Object)(object)Chat.instance != (Object)null) || !Chat.instance.HasFocus()))
			{
				return TextBoxFocused();
			}
			return true;
		}

		private static bool TextBoxFocused()
		{
			GameObject val = (((Object)(object)EventSystem.current != (Object)null) ? EventSystem.current.currentSelectedGameObject : null);
			if ((Object)(object)val == (Object)null)
			{
				return false;
			}
			TMP_InputField component = val.GetComponent<TMP_InputField>();
			if ((Object)(object)component != (Object)null && component.isFocused)
			{
				return true;
			}
			InputField component2 = val.GetComponent<InputField>();
			if ((Object)(object)component2 != (Object)null)
			{
				return component2.isFocused;
			}
			return false;
		}
	}
	internal sealed class SettingRow
	{
		public const float RowHeight = 40f;

		private const float ResetSize = 28f;

		private const float NumberWidth = 76f;

		public readonly SettingInfo Setting;

		public readonly GameObject Root;

		private readonly SettingsPanel m_panel;

		private readonly Image m_background;

		private readonly TMP_Text m_label;

		private readonly Button m_reset;

		private Toggle m_toggle;

		private Slider m_slider;

		private TMP_InputField m_input;

		private TMP_Dropdown m_dropdown;

		private Button m_keyButton;

		private TMP_Text m_keyLabel;

		private object[] m_choices;

		private Color m_stripe = Theme.RowEven;

		private bool m_hovered;

		private bool m_refreshing;

		private ConfigEntryBase Entry => Setting.Entry;

		public bool IsDefault => object.Equals(Entry.BoxedValue, Entry.DefaultValue);

		public SettingRow(SettingsPanel panel, Transform parent, SettingInfo setting)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0203: Unknown result type (might be due to invalid IL or missing references)
			//IL_020d: Expected O, but got Unknown
			m_panel = panel;
			Setting = setting;
			Root = Widgets.Row(parent, 40f);
			m_background = Root.AddComponent<Image>();
			((Graphic)m_background).color = m_stripe;
			HoverRelay hoverRelay = Root.AddComponent<HoverRelay>();
			hoverRelay.OnEnter = delegate
			{
				SetHovered(hovered: true);
			};
			hoverRelay.OnExit = delegate
			{
				SetHovered(hovered: false);
			};
			m_label = Widgets.Label(Root.transform, "", 20f, Theme.Text, (TextAlignmentOptions)4097);
			m_label.enableAutoSizing = true;
			m_label.fontSizeMin = 14f;
			m_label.fontSizeMax = 20f;
			Widgets.Place(((Component)m_label).gameObject, new Vector2(0f, 0f), new Vector2(0.42f, 1f), new Vector2(12f, 2f), new Vector2(-8f, -2f));
			GameObject val = Widgets.Child(Root.transform, "Control");
			Widgets.Place(val, new Vector2(0.42f, 0f), new Vector2(1f, 1f), new Vector2(0f, 6f), new Vector2(-46f, -6f));
			BuildControl(val.transform);
			m_reset = Widgets.IconButton<ResetIcon>(Root.transform, 3f);
			Widgets.Place(((Component)m_reset).gameObject, new Vector2(1f, 0.5f), new Vector2(1f, 0.5f), new Vector2(-36f, -14f), new Vector2(-8f, 14f));
			((UnityEvent)m_reset.onClick).AddListener((UnityAction)delegate
			{
				SetValue(Entry.DefaultValue);
			});
			Refresh();
		}

		public bool Matches(string search)
		{
			if (!string.IsNullOrEmpty(search) && !Contains(Setting.Name, search) && !Contains(Setting.Section, search))
			{
				return Contains(Setting.Description, search);
			}
			return true;
		}

		public void SetStripe(bool odd)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0004: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			m_stripe = (odd ? Theme.RowOdd : Theme.RowEven);
			((Graphic)m_background).color = (m_hovered ? Theme.RowHover : m_stripe);
		}

		private void SetHovered(bool hovered)
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			m_hovered = hovered;
			((Graphic)m_background).color = (hovered ? Theme.RowHover : m_stripe);
			m_panel.ShowDescription(hovered ? this : null);
		}

		public void Refresh()
		{
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_0222: Unknown result type (might be due to invalid IL or missing references)
			bool isReadOnly = Setting.IsReadOnly;
			string text = (Setting.Synced ? ("  <size=70%><color=" + Theme.Tag(Theme.Muted) + ">" + (isReadOnly ? "server, locked" : "server") + "</color></size>") : "");
			m_label.text = Setting.Name + text;
			((Graphic)m_label).color = (isReadOnly ? Theme.Muted : Theme.Text);
			((Selectable)m_reset).interactable = !isReadOnly && !IsDefault;
			((Component)m_reset).gameObject.SetActive(!IsDefault);
			m_refreshing = true;
			try
			{
				object value = Entry.BoxedValue;
				if ((Object)(object)m_toggle != (Object)null)
				{
					Toggle toggle = m_toggle;
					bool flag = default(bool);
					int num;
					if (value is bool)
					{
						flag = (bool)value;
						num = 1;
					}
					else
					{
						num = 0;
					}
					toggle.SetIsOnWithoutNotify((byte)((uint)num & (flag ? 1u : 0u)) != 0);
					((Selectable)m_toggle).interactable = !isReadOnly;
				}
				if ((Object)(object)m_slider != (Object)null)
				{
					m_slider.SetValueWithoutNotify(Convert.ToSingle(value, CultureInfo.InvariantCulture));
					((Selectable)m_slider).interactable = !isReadOnly;
				}
				if ((Object)(object)m_dropdown != (Object)null)
				{
					m_dropdown.SetValueWithoutNotify(Math.Max(0, Array.FindIndex(m_choices, (object c) => object.Equals(c, value))));
					((Selectable)m_dropdown).interactable = !isReadOnly;
				}
				if ((Object)(object)m_input != (Object)null && !m_input.isFocused)
				{
					m_input.SetTextWithoutNotify(Format(value));
					((Selectable)m_input).interactable = !isReadOnly;
				}
				if ((Object)(object)m_keyButton != (Object)null)
				{
					m_keyLabel.text = (m_panel.IsCapturing(this) ? ("<color=" + Theme.Tag(Theme.AccentBright) + ">Press a key...</color>") : Format(value));
					((Selectable)m_keyButton).interactable = !isReadOnly;
				}
			}
			finally
			{
				m_refreshing = false;
			}
		}

		private void BuildControl(Transform parent)
		{
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unkno