Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of ValheimPerformanceOptimizations v1.2.3
BepInEx/plugins/ValheimPerformanceOptimizations.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using JetBrains.Annotations; using Microsoft.CodeAnalysis; using Unity.Burst; using Unity.Collections; using Unity.Jobs; using Unity.Mathematics; using Unity.Profiling; using UnityEngine; using UnityEngine.Rendering; using VPOBurst; using ValheimPerformanceOptimizations.Extensions; using ValheimPerformanceOptimizations.RuntimeDebugDraw.Internal; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("ValheimPerformanceOptimizations")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ValheimPerformanceOptimizations")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("AD2F8A00-7A5E-460D-80ED-F48DF0221D8C")] [assembly: AssemblyFileVersion("1.2.3")] [assembly: IgnoresAccessChecksTo("assembly_guiutils")] [assembly: IgnoresAccessChecksTo("assembly_utils")] [assembly: IgnoresAccessChecksTo("assembly_valheim")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.2.3.0")] [module: UnverifiableCode] [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; } } } namespace ValheimPerformanceOptimizations { [HarmonyPatch] internal static class ModCompatibility { internal static bool IsHDTerrainPresent => Chainloader.PluginInfos.ContainsKey("Badgers.ValheimHDTerrain"); internal static void Initialize() { } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static void InitTerrainCompat() { } } public static class ThreadedWorldLoadingPatch { } public static class AssetBundleHelper { public static AssetBundle GetAssetBundleFromResources(string fileName) { Assembly executingAssembly = Assembly.GetExecutingAssembly(); string name = executingAssembly.GetManifestResourceNames().Single((string str) => str.EndsWith(fileName)); using Stream stream = executingAssembly.GetManifestResourceStream(name); return AssetBundle.LoadFromStream(stream); } } public static class BurstLoader { public const string WindowsBurstLibraryFileName = "VPOBurst_win_x86_64.dll"; public const string LinuxBurstLibraryFileName = "VPOBurst_linux_x86_64.so"; public static bool LibraryLoaded { get; private set; } public static bool JobsAreBursted { get; private set; } public static void Initialize() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Invalid comparison between Unknown and I4 //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Invalid comparison between Unknown and I4 //IL_0060: Unknown result type (might be due to invalid IL or missing references) string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); if (string.IsNullOrEmpty(directoryName)) { ValheimPerformanceOptimizations.Logger.LogWarning((object)"VPO Burst: could not resolve plugin directory"); return; } string text = (((int)Application.platform != 2) ? (((int)Application.platform == 13 || (int)Application.platform == 43) ? "VPOBurst_linux_x86_64.so" : null) : "VPOBurst_win_x86_64.dll"); if (text == null) { ValheimPerformanceOptimizations.Logger.LogWarning((object)$"VPO Burst: unsupported Unity platform '{Application.platform}'"); return; } string text2 = Path.Combine(directoryName, text); if (!File.Exists(text2)) { ValheimPerformanceOptimizations.Logger.LogWarning((object)("VPO Burst: missing '" + text + "' next to the plugin.")); return; } LibraryLoaded = BurstRuntime.LoadAdditionalLibrary(text2); if (!LibraryLoaded) { ValheimPerformanceOptimizations.Logger.LogWarning((object)("VPO Burst: BurstRuntime.LoadAdditionalLibrary failed for '" + text2 + "'")); } JobsAreBursted = ProbeIsBursted(); if (JobsAreBursted) { ValheimPerformanceOptimizations.Logger.LogInfo((object)"VPO Burst: Burst jobs are enabled"); } else { ValheimPerformanceOptimizations.Logger.LogWarning((object)"VPO Burst: Burst jobs are disabled"); } } private static string GetBurstLibraryFileName() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Invalid comparison between Unknown and I4 //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 if ((int)Application.platform == 2) { return "VPOBurst_win_x86_64.dll"; } if ((int)Application.platform == 13) { return "VPOBurst_linux_x86_64.so"; } return null; } public static bool ProbeIsBursted() { //IL_000c: 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_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) NativeArray<int> flag = default(NativeArray<int>); flag..ctor(1, (Allocator)3, (NativeArrayOptions)0); try { IJobExtensions.Run<CheckBurstedJob>(new CheckBurstedJob { Flag = flag }); return flag[0] == 1; } finally { flag.Dispose(); } } } public class BoundsOctree<T> { private BoundsOctreeNode<T> rootNode; private readonly float looseness; private readonly float initialSize; private readonly float minSize; public int Count { get; private set; } public BoundsOctree(float initialWorldSize, Vector3 initialWorldPos, float minNodeSize, float loosenessVal, IEqualityComparer<T> comparer = null) { //IL_006e: Unknown result type (might be due to invalid IL or missing references) if (minNodeSize > initialWorldSize) { Debug.LogWarning((object)("Minimum node size must be at least as big as the initial world size. Was: " + minNodeSize + " Adjusted to: " + initialWorldSize)); minNodeSize = initialWorldSize; } Count = 0; initialSize = initialWorldSize; minSize = minNodeSize; looseness = Mathf.Clamp(loosenessVal, 1f, 2f); rootNode = new BoundsOctreeNode<T>(initialSize, minSize, looseness, initialWorldPos, comparer); } public void Add(T obj, Bounds objBounds) { //IL_0051: 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) int num = 0; while (!rootNode.Add(obj, objBounds)) { Grow(((Bounds)(ref objBounds)).center - rootNode.Center); if (++num > 20) { Debug.LogError((object)("Aborted Add operation as it seemed to be going on forever (" + (num - 1) + ") attempts at growing the octree.")); return; } } Count++; } public bool Remove(T obj) { bool num = rootNode.Remove(obj); if (num) { Count--; Shrink(); } return num; } public bool Remove(T obj, Bounds objBounds) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) bool num = rootNode.Remove(obj, objBounds); if (num) { Count--; Shrink(); } return num; } public bool IsColliding(Bounds checkBounds) { return rootNode.IsColliding(ref checkBounds); } public bool IsColliding(Ray checkRay, float maxDistance) { return rootNode.IsColliding(ref checkRay, maxDistance); } public void GetOverlapping(List<T> collidingWith, Bounds checkBounds) { rootNode.GetOverlapping(ref checkBounds, collidingWith); } public void GetOverlapping(List<T> collidingWith, Vector3 center, float radius) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) rootNode.GetOverlapping(center, radius, collidingWith); } public void GetOverlappingXZ(List<T> collidingWith, Bounds checkBounds) { rootNode.GetOverlappingXZ(ref checkBounds, collidingWith); } public void GetOverlapping(List<T> collidingWith, Ray checkRay, float maxDistance = float.PositiveInfinity) { rootNode.GetColliding(ref checkRay, collidingWith, maxDistance); } public List<T> GetWithinFrustum(Camera cam) { Plane[] planes = GeometryUtility.CalculateFrustumPlanes(cam); List<T> result = new List<T>(); rootNode.GetWithinFrustum(planes, result); return result; } public Bounds GetMaxBounds() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) return rootNode.GetBounds(); } public void DrawAllBounds() { rootNode.DrawAllBounds(); } public void DrawAllObjects() { rootNode.DrawAllObjects(); } private void Grow(Vector3 direction) { //IL_0000: 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_0024: 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_007d: 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_0098: 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_011d: 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) int num = ((direction.x >= 0f) ? 1 : (-1)); int num2 = ((direction.y >= 0f) ? 1 : (-1)); int num3 = ((direction.z >= 0f) ? 1 : (-1)); BoundsOctreeNode<T> boundsOctreeNode = rootNode; float num4 = rootNode.BaseLength / 2f; float baseLengthVal = rootNode.BaseLength * 2f; Vector3 val = rootNode.Center + new Vector3((float)num * num4, (float)num2 * num4, (float)num3 * num4); rootNode = new BoundsOctreeNode<T>(baseLengthVal, minSize, looseness, val); if (!boundsOctreeNode.HasAnyObjects()) { return; } int num5 = rootNode.BestFitChild(boundsOctreeNode.Center); BoundsOctreeNode<T>[] array = new BoundsOctreeNode<T>[8]; for (int i = 0; i < 8; i++) { if (i == num5) { array[i] = boundsOctreeNode; continue; } num = ((i % 2 != 0) ? 1 : (-1)); num2 = ((i <= 3) ? 1 : (-1)); num3 = ((i >= 2 && (i <= 3 || i >= 6)) ? 1 : (-1)); array[i] = new BoundsOctreeNode<T>(boundsOctreeNode.BaseLength, minSize, looseness, val + new Vector3((float)num * num4, (float)num2 * num4, (float)num3 * num4)); } rootNode.SetChildren(array); } private void Shrink() { rootNode = rootNode.ShrinkIfPossible(initialSize); } } public class BoundsOctreeNode<T> { private struct OctreeObject { public T Obj; public Bounds Bounds; } private float looseness; private float minSize; private float adjLength; private Bounds bounds; private readonly List<OctreeObject> objects = new List<OctreeObject>(); private BoundsOctreeNode<T>[] children; private Bounds[] childBounds; private IEqualityComparer<T> comparator; private const int NUM_OBJECTS_ALLOWED = 8; public Vector3 Center { get; private set; } public float BaseLength { get; private set; } private bool HasChildren => children != null; public BoundsOctreeNode(float baseLengthVal, float minSizeVal, float loosenessVal, Vector3 centerVal, IEqualityComparer<T> comparer = null) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) SetValues(baseLengthVal, minSizeVal, loosenessVal, centerVal, comparer); } public bool Add(T obj, Bounds objBounds) { //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_0012: Unknown result type (might be due to invalid IL or missing references) if (!Encapsulates(bounds, objBounds)) { return false; } SubAdd(obj, objBounds); return true; } public bool Remove(T obj) { bool flag = false; for (int i = 0; i < objects.Count; i++) { if (comparator.Equals(objects[i].Obj, obj)) { objects.RemoveAtSwapBack(i); flag = true; break; } } if (!flag && children != null) { for (int j = 0; j < 8; j++) { flag = children[j].Remove(obj); if (flag) { break; } } } if (flag && children != null && ShouldMerge()) { Merge(); } return flag; } public bool Remove(T obj, Bounds objBounds) { //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_0012: Unknown result type (might be due to invalid IL or missing references) if (!Encapsulates(bounds, objBounds)) { return false; } return SubRemove(obj, objBounds, parentContained: false); } public int RemoveAll(Bounds objBounds) { //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_0011: Unknown result type (might be due to invalid IL or missing references) if (!Encapsulates(bounds, objBounds)) { return 0; } return SubRemoveAll(objBounds); } public bool IsColliding(ref Bounds checkBounds) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) if (!((Bounds)(ref bounds)).Intersects(checkBounds)) { return false; } for (int i = 0; i < objects.Count; i++) { OctreeObject octreeObject = objects[i]; if (((Bounds)(ref octreeObject.Bounds)).Intersects(checkBounds)) { return true; } } if (children != null) { for (int j = 0; j < 8; j++) { if (children[j].IsColliding(ref checkBounds)) { return true; } } } return false; } public bool IsColliding(ref Ray checkRay, float maxDistance = float.PositiveInfinity) { //IL_0007: 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) float num = default(float); if (!((Bounds)(ref bounds)).IntersectRay(checkRay, ref num) || num > maxDistance) { return false; } for (int i = 0; i < objects.Count; i++) { OctreeObject octreeObject = objects[i]; if (((Bounds)(ref octreeObject.Bounds)).IntersectRay(checkRay, ref num) && num <= maxDistance) { return true; } } if (children != null) { for (int j = 0; j < 8; j++) { if (children[j].IsColliding(ref checkRay, maxDistance)) { return true; } } } return false; } public void GetOverlapping(ref Bounds checkBounds, List<T> result) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) if (!((Bounds)(ref bounds)).Intersects(checkBounds)) { return; } for (int i = 0; i < objects.Count; i++) { OctreeObject octreeObject = objects[i]; if (((Bounds)(ref octreeObject.Bounds)).Intersects(checkBounds)) { result.Add(objects[i].Obj); } } if (children != null) { for (int j = 0; j < 8; j++) { children[j].GetOverlapping(ref checkBounds, result); } } } public void GetOverlapping(Vector3 center, float radius, List<T> collidingWith) { //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_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_006b: Unknown result type (might be due to invalid IL or missing references) if (!bounds.IntersectsSphere(center, radius)) { return; } for (int i = 0; i < objects.Count; i++) { if (objects[i].Bounds.IntersectsSphere(center, radius)) { collidingWith.Add(objects[i].Obj); } } if (children != null) { for (int j = 0; j < 8; j++) { children[j].GetOverlapping(center, radius, collidingWith); } } } public void GetOverlappingXZ(ref Bounds checkBounds, List<T> result) { //IL_0001: 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_0024: 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) if (!bounds.IntersectsXZ(checkBounds)) { return; } for (int i = 0; i < objects.Count; i++) { if (objects[i].Bounds.IntersectsXZ(checkBounds)) { result.Add(objects[i].Obj); } } if (children != null) { for (int j = 0; j < 8; j++) { children[j].GetOverlappingXZ(ref checkBounds, result); } } } public void GetColliding(ref Ray checkRay, List<T> result, float maxDistance = float.PositiveInfinity) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) float num = default(float); if (!((Bounds)(ref bounds)).IntersectRay(checkRay, ref num) || num > maxDistance) { return; } for (int i = 0; i < objects.Count; i++) { OctreeObject octreeObject = objects[i]; if (((Bounds)(ref octreeObject.Bounds)).IntersectRay(checkRay, ref num) && num <= maxDistance) { result.Add(objects[i].Obj); } } if (children != null) { for (int j = 0; j < 8; j++) { children[j].GetColliding(ref checkRay, result, maxDistance); } } } public void GetWithinFrustum(Plane[] planes, List<T> result) { //IL_0002: 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) if (!GeometryUtility.TestPlanesAABB(planes, bounds)) { return; } for (int i = 0; i < objects.Count; i++) { if (GeometryUtility.TestPlanesAABB(planes, objects[i].Bounds)) { result.Add(objects[i].Obj); } } if (children != null) { for (int j = 0; j < 8; j++) { children[j].GetWithinFrustum(planes, result); } } } public void SetChildren(BoundsOctreeNode<T>[] childOctrees) { if (childOctrees.Length != 8) { Debug.LogError((object)("Child octree array must be length 8. Was length: " + childOctrees.Length)); } else { children = childOctrees; } } public Bounds GetBounds() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return bounds; } public void DrawAllBounds(float depth = 0f) { //IL_0015: 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_0033: 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_0069: Unknown result type (might be due to invalid IL or missing references) float num = depth / 7f; new Color(num, 0f, 1f - num); new Bounds(Center, new Vector3(adjLength, adjLength, adjLength)); if (children != null) { depth += 1f; for (int i = 0; i < 8; i++) { children[i].DrawAllBounds(depth); } } Gizmos.color = Color.white; } public void DrawAllObjects() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0040: 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_0048: 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_0053: 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_009f: Unknown result type (might be due to invalid IL or missing references) float num = BaseLength / 20f; Gizmos.color = new Color(0f, 1f - num, num, 0.25f); foreach (OctreeObject @object in objects) { Bounds val = @object.Bounds; Vector3 center = ((Bounds)(ref val)).center; val = @object.Bounds; Gizmos.DrawCube(center, ((Bounds)(ref val)).size); } if (children != null) { for (int i = 0; i < 8; i++) { children[i].DrawAllObjects(); } } Gizmos.color = Color.white; } public BoundsOctreeNode<T> ShrinkIfPossible(float minLength) { //IL_004c: 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_010b: Unknown result type (might be due to invalid IL or missing references) if (BaseLength < 2f * minLength) { return this; } if (objects.Count == 0 && (children == null || children.Length == 0)) { return this; } int num = -1; for (int i = 0; i < objects.Count; i++) { OctreeObject octreeObject = objects[i]; int num2 = BestFitChild(((Bounds)(ref octreeObject.Bounds)).center); if (i == 0 || num2 == num) { if (Encapsulates(childBounds[num2], octreeObject.Bounds)) { if (num < 0) { num = num2; } continue; } return this; } return this; } if (children != null) { bool flag = false; for (int j = 0; j < children.Length; j++) { if (children[j].HasAnyObjects()) { if (flag) { return this; } if (num >= 0 && num != j) { return this; } flag = true; num = j; } } } if (children == null) { SetValues(BaseLength / 2f, minSize, looseness, ((Bounds)(ref childBounds[num])).center); return this; } if (num == -1) { return this; } return children[num]; } public int BestFitChild(Vector3 objBoundsCenter) { //IL_0000: 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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: 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_0032: Unknown result type (might be due to invalid IL or missing references) return ((!(objBoundsCenter.x <= Center.x)) ? 1 : 0) + ((!(objBoundsCenter.y >= Center.y)) ? 4 : 0) + ((!(objBoundsCenter.z <= Center.z)) ? 2 : 0); } public bool HasAnyObjects() { if (objects.Count > 0) { return true; } if (children != null) { for (int i = 0; i < 8; i++) { if (children[i].HasAnyObjects()) { return true; } } } return false; } private void SetValues(float baseLengthVal, float minSizeVal, float loosenessVal, Vector3 centerVal, IEqualityComparer<T> comparer = null) { //IL_0016: 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_004b: 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_0095: 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_00a4: 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_00aa: 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_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: 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) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: 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_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: 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_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_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: 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_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: 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_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: 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) BaseLength = baseLengthVal; minSize = minSizeVal; looseness = loosenessVal; Center = centerVal; adjLength = looseness * baseLengthVal; Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(adjLength, adjLength, adjLength); bounds = new Bounds(Center, val); float num = BaseLength / 4f; float num2 = BaseLength / 2f * looseness; Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(num2, num2, num2); childBounds = (Bounds[])(object)new Bounds[8]; childBounds[0] = new Bounds(Center + new Vector3(0f - num, num, 0f - num), val2); childBounds[1] = new Bounds(Center + new Vector3(num, num, 0f - num), val2); childBounds[2] = new Bounds(Center + new Vector3(0f - num, num, num), val2); childBounds[3] = new Bounds(Center + new Vector3(num, num, num), val2); childBounds[4] = new Bounds(Center + new Vector3(0f - num, 0f - num, 0f - num), val2); childBounds[5] = new Bounds(Center + new Vector3(num, 0f - num, 0f - num), val2); childBounds[6] = new Bounds(Center + new Vector3(0f - num, 0f - num, num), val2); childBounds[7] = new Bounds(Center + new Vector3(num, 0f - num, num), val2); comparator = comparer ?? EqualityComparer<T>.Default; } private void SubAdd(T obj, Bounds objBounds) { //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0126: 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_0040: 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_00b3: 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) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) if (!HasChildren) { if (objects.Count < 8 || BaseLength / 2f < minSize) { OctreeObject item = new OctreeObject { Obj = obj, Bounds = objBounds }; objects.Add(item); return; } if (children == null) { Split(); if (children == null) { Debug.LogError((object)"Child creation failed for an unknown reason. Early exit."); return; } for (int num = objects.Count - 1; num >= 0; num--) { OctreeObject item2 = objects[num]; int num2 = BestFitChild(((Bounds)(ref item2.Bounds)).center); if (Encapsulates(children[num2].bounds, item2.Bounds)) { children[num2].SubAdd(item2.Obj, item2.Bounds); objects.Remove(item2); } } } } int num3 = BestFitChild(((Bounds)(ref objBounds)).center); if (Encapsulates(children[num3].bounds, objBounds)) { children[num3].SubAdd(obj, objBounds); return; } OctreeObject item3 = new OctreeObject { Obj = obj, Bounds = objBounds }; objects.Add(item3); } private bool SubRemove(T obj, Bounds objBounds, bool parentContained) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0085: 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_00ac: 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_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) bool flag = false; for (int i = 0; i < objects.Count; i++) { OctreeObject octreeObject = objects[i]; if (comparator.Equals(octreeObject.Obj, obj)) { objects.RemoveAtSwapBack(i); flag = true; break; } } if (!flag && children != null) { int num = BestFitChild(((Bounds)(ref objBounds)).center); BoundsOctreeNode<T> boundsOctreeNode = children[num]; if (((Bounds)(ref objBounds)).Intersects(boundsOctreeNode.bounds)) { flag = boundsOctreeNode.SubRemove(obj, objBounds, parentContained); } if (!flag) { for (int j = 0; j < children.Length; j++) { if (num == j) { continue; } boundsOctreeNode = children[j]; bool flag2 = parentContained; if (!flag2) { if (Encapsulates(objBounds, boundsOctreeNode.bounds)) { flag2 = true; } else if (!((Bounds)(ref objBounds)).Intersects(boundsOctreeNode.bounds)) { continue; } } if (((Bounds)(ref objBounds)).Intersects(boundsOctreeNode.bounds)) { flag = boundsOctreeNode.SubRemove(obj, objBounds, flag2); if (flag) { break; } } } } } if (flag && children != null && ShouldMerge()) { Merge(); } return flag; } private int SubRemoveAll(Bounds objBounds) { //IL_0007: 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_0038: 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) int num = objects.RemoveAll((OctreeObject obj) => ((Bounds)(ref obj.Bounds)).Intersects(objBounds)); if (num < 1 && children != null) { int num2 = BestFitChild(((Bounds)(ref objBounds)).center); num = children[num2].SubRemoveAll(objBounds); } if (num > 0 && children != null && ShouldMerge()) { Merge(); } return num; } private void Split() { //IL_003b: 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_004a: 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_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_009a: 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_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0128: 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) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0158: 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) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) float num = BaseLength / 4f; float baseLengthVal = BaseLength / 2f; children = new BoundsOctreeNode<T>[8]; children[0] = new BoundsOctreeNode<T>(baseLengthVal, minSize, looseness, Center + new Vector3(0f - num, num, 0f - num)); children[1] = new BoundsOctreeNode<T>(baseLengthVal, minSize, looseness, Center + new Vector3(num, num, 0f - num)); children[2] = new BoundsOctreeNode<T>(baseLengthVal, minSize, looseness, Center + new Vector3(0f - num, num, num)); children[3] = new BoundsOctreeNode<T>(baseLengthVal, minSize, looseness, Center + new Vector3(num, num, num)); children[4] = new BoundsOctreeNode<T>(baseLengthVal, minSize, looseness, Center + new Vector3(0f - num, 0f - num, 0f - num)); children[5] = new BoundsOctreeNode<T>(baseLengthVal, minSize, looseness, Center + new Vector3(num, 0f - num, 0f - num)); children[6] = new BoundsOctreeNode<T>(baseLengthVal, minSize, looseness, Center + new Vector3(0f - num, 0f - num, num)); children[7] = new BoundsOctreeNode<T>(baseLengthVal, minSize, looseness, Center + new Vector3(num, 0f - num, num)); } private void Merge() { for (int i = 0; i < 8; i++) { BoundsOctreeNode<T> boundsOctreeNode = children[i]; for (int num = boundsOctreeNode.objects.Count - 1; num >= 0; num--) { OctreeObject item = boundsOctreeNode.objects[num]; objects.Add(item); } } children = null; } private static bool Encapsulates(Bounds outerBounds, Bounds innerBounds) { //IL_0004: 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) if (((Bounds)(ref outerBounds)).Contains(((Bounds)(ref innerBounds)).min)) { return ((Bounds)(ref outerBounds)).Contains(((Bounds)(ref innerBounds)).max); } return false; } private bool ShouldMerge() { int num = objects.Count; if (children != null) { BoundsOctreeNode<T>[] array = children; foreach (BoundsOctreeNode<T> boundsOctreeNode in array) { if (boundsOctreeNode.children != null) { return false; } num += boundsOctreeNode.objects.Count; } } return num <= 8; } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("dev.ontrigger.vpo", "Valheim Performance Optimizations", "1.2.3")] public class ValheimPerformanceOptimizations : BaseUnityPlugin { public const string PluginId = "dev.ontrigger.vpo"; public const string PluginVersion = "1.2.3"; internal const string ValheimRaftId = "BepIn.Sarcen.ValheimRAFT"; internal const string JotunnId = "com.jotunn.jotunn"; internal const string HDTerrain = "Badgers.ValheimHDTerrain"; private static ValheimPerformanceOptimizations _instance; private Harmony _harmony; internal static ManualLogSource Logger { get; private set; } public static event Action<ConfigFile, Harmony> OnInitialized; private ValheimPerformanceOptimizations() { Logger = ((BaseUnityPlugin)this).Logger; } private void Awake() { _instance = this; BurstLoader.Initialize(); _harmony = Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "dev.ontrigger.vpo"); CollectionExtensions.Do<Type>((IEnumerable<Type>)AccessTools.GetTypesFromAssembly(Assembly.GetExecutingAssembly()), (Action<Type>)delegate(Type type) { if (type.IsAbstract && type.IsSealed && type.GetConstructor(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, null, Type.EmptyTypes, Array.Empty<ParameterModifier>()) != null) { RuntimeHelpers.RunClassConstructor(type.TypeHandle); } }); ModCompatibility.Initialize(); ValheimPerformanceOptimizations.OnInitialized?.Invoke(((BaseUnityPlugin)this).Config, _harmony); } private void OnDestroy() { Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } } public static class PluginInfo { public const string PLUGIN_GUID = "ValheimPerformanceOptimizations"; public const string PLUGIN_NAME = "ValheimPerformanceOptimizations"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace ValheimPerformanceOptimizations.Storage { public class ObjectPool<T> where T : new() { private readonly Stack<T> pool = new Stack<T>(); private readonly Action<T> onRetrieve; private readonly Action<T> onReturn; public ObjectPool(Action<T> onRetrieve = null, Action<T> onReturn = null) { this.onRetrieve = onRetrieve; this.onReturn = onReturn; } public T Get() { T val = ((pool.Count == 0) ? new T() : pool.Pop()); onRetrieve?.Invoke(val); return val; } public void Return(T toReturn) { onReturn?.Invoke(toReturn); pool.Push(toReturn); } } public static class SetPool<T> { private static readonly ObjectPool<HashSet<T>> Pool = new ObjectPool<HashSet<T>>(null, Clear); public static HashSet<T> Get() { return Pool.Get(); } public static void Return(HashSet<T> toReturn) { Pool.Return(toReturn); } private static void Clear(HashSet<T> set) { set.Clear(); } } } namespace ValheimPerformanceOptimizations.RuntimeDebugDraw { public static class Draw { public const int DrawLineLayer = 4; public const int DrawTextDefaultSize = 12; public static Color DrawDefaultColor = Color.white; private static global::ValheimPerformanceOptimizations.RuntimeDebugDraw.Internal.RuntimeDebugDraw _rtDraw; private static string HIDDEN_GO_NAME = "________HIDDEN_C4F6A87F298241078E21C0D7C1D87A76_"; public static Camera GetDebugDrawCamera() { return Camera.main; } [Conditional("_DEBUG")] public static void DrawLine(Vector3 start, Vector3 end, Color color, float duration, bool depthTest) { //IL_000a: 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_000c: Unknown result type (might be due to invalid IL or missing references) CheckAndBuildHiddenRTDrawObject(); _rtDraw.RegisterLine(start, end, color, duration, !depthTest); } [Conditional("_DEBUG")] public static void DrawRay(Vector3 start, Vector3 dir, Color color, float duration, bool depthTest) { //IL_000a: 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_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) CheckAndBuildHiddenRTDrawObject(); _rtDraw.RegisterLine(start, start + dir, color, duration, !depthTest); } [Conditional("_DEBUG")] public static void DrawText(Vector3 pos, string text, Color color, int size, float duration, bool popUp) { //IL_000a: 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) CheckAndBuildHiddenRTDrawObject(); _rtDraw.RegisterDrawText(pos, text, color, size, duration, popUp); } [Conditional("_DEBUG")] public static void AttachText(Transform transform, Func<string> strFunc, Vector3 offset, Color color, int size) { //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) CheckAndBuildHiddenRTDrawObject(); _rtDraw.RegisterAttachText(transform, strFunc, offset, color, size); } [Conditional("_DEBUG")] public static void DrawLine(Vector3 start, Vector3 end) { } [Conditional("_DEBUG")] public static void DrawLine(Vector3 start, Vector3 end, Color color) { } [Conditional("_DEBUG")] public static void DrawLine(Vector3 start, Vector3 end, Color color, float duration) { } [Conditional("_DEBUG")] public static void DrawBounds(Bounds b, Color color, float duration) { //IL_0002: 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_001a: 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_002c: 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_0044: 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_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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_00a2: 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_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_00cc: 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_00e0: 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_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: 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_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) new Vector3(((Bounds)(ref b)).min.x, ((Bounds)(ref b)).min.y, ((Bounds)(ref b)).min.z); new Vector3(((Bounds)(ref b)).max.x, ((Bounds)(ref b)).min.y, ((Bounds)(ref b)).min.z); new Vector3(((Bounds)(ref b)).max.x, ((Bounds)(ref b)).min.y, ((Bounds)(ref b)).max.z); new Vector3(((Bounds)(ref b)).min.x, ((Bounds)(ref b)).min.y, ((Bounds)(ref b)).max.z); new Vector3(((Bounds)(ref b)).min.x, ((Bounds)(ref b)).max.y, ((Bounds)(ref b)).min.z); new Vector3(((Bounds)(ref b)).max.x, ((Bounds)(ref b)).max.y, ((Bounds)(ref b)).min.z); new Vector3(((Bounds)(ref b)).max.x, ((Bounds)(ref b)).max.y, ((Bounds)(ref b)).max.z); new Vector3(((Bounds)(ref b)).min.x, ((Bounds)(ref b)).max.y, ((Bounds)(ref b)).max.z); } [Conditional("_DEBUG")] public static void DrawRay(Vector3 start, Vector3 dir) { } [Conditional("_DEBUG")] public static void DrawRay(Vector3 start, Vector3 dir, Color color) { } [Conditional("_DEBUG")] public static void DrawRay(Vector3 start, Vector3 dir, Color color, float duration) { } [Conditional("_DEBUG")] public static void DrawText(Vector3 pos, string text) { } [Conditional("_DEBUG")] public static void DrawText(Vector3 pos, string text, Color color) { } [Conditional("_DEBUG")] public static void DrawText(Vector3 pos, string text, Color color, int size) { } [Conditional("_DEBUG")] public static void DrawText(Vector3 pos, string text, Color color, int size, float duration) { } [Conditional("_DEBUG")] public static void AttachText(Transform transform, Func<string> strFunc) { } [Conditional("_DEBUG")] public static void AttachText(Transform transform, Func<string> strFunc, Vector3 offset) { } [Conditional("_DEBUG")] public static void AttachText(Transform transform, Func<string> strFunc, Vector3 offset, Color color) { } private static void CheckAndBuildHiddenRTDrawObject() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown //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) if ((Object)(object)_rtDraw != (Object)null) { return; } _rtDraw = Object.FindObjectOfType<global::ValheimPerformanceOptimizations.RuntimeDebugDraw.Internal.RuntimeDebugDraw>(); if (!((Object)(object)_rtDraw != (Object)null)) { GameObject val = new GameObject(HIDDEN_GO_NAME); GameObject val2 = new GameObject(HIDDEN_GO_NAME); val2.transform.parent = val.transform; _rtDraw = val2.AddComponent<global::ValheimPerformanceOptimizations.RuntimeDebugDraw.Internal.RuntimeDebugDraw>(); ((Object)val).hideFlags = (HideFlags)61; if (Application.isPlaying) { Object.DontDestroyOnLoad((Object)(object)val); } } } } } namespace ValheimPerformanceOptimizations.RuntimeDebugDraw.Internal { internal class RuntimeDebugDraw : MonoBehaviour { private class DrawLineEntry { public bool occupied; public Vector3 start; public Vector3 end; public Color color; public float timer; public bool noZTest; } private class BatchedLineDraw : IDisposable { public Mesh mesh; public Material mat; private List<Vector3> _vertices; private List<Color> _colors; private List<int> _indices; public BatchedLineDraw(bool depthTest) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown mesh = new Mesh(); mesh.MarkDynamic(); mat = new Material(Shader.Find("Hidden/Internal-Colored")); mat.SetInt("_ZTest", depthTest ? 4 : 0); _vertices = new List<Vector3>(); _colors = new List<Color>(); _indices = new List<int>(); } public void AddLine(Vector3 from, Vector3 to, Color color) { //IL_0006: 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_001e: 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) _vertices.Add(from); _vertices.Add(to); _colors.Add(color); _colors.Add(color); int count = _vertices.Count; _indices.Add(count - 2); _indices.Add(count - 1); } public void Clear() { mesh.Clear(); _vertices.Clear(); _colors.Clear(); _indices.Clear(); } public void BuildBatch() { mesh.SetVertices(_vertices); mesh.SetColors(_colors); mesh.SetIndices(_indices.ToArray(), (MeshTopology)3, 0); } public void Dispose() { Object.DestroyImmediate((Object)(object)mesh); Object.DestroyImmediate((Object)(object)mat); } } [Flags] public enum DrawFlag : byte { None = 0, DrawnGizmo = 1, DrawnGUI = 2, DrawnAll = 3 } private class DrawTextEntry { public bool occupied; public GUIContent content; public Vector3 anchor; public int size; public Color color; public float timer; public bool popUp; public float duration; public DrawFlag flag; public DrawTextEntry() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown content = new GUIContent(); } } private class AttachTextEntry { public bool occupied; public GUIContent content; public Vector3 offset; public int size; public Color color; public Transform transform; public Func<string> strFunc; public DrawFlag flag; public AttachTextEntry() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown content = new GUIContent(); } } private List<DrawLineEntry> _lineEntries; private BatchedLineDraw _ZTestBatch; private BatchedLineDraw _AlwaysBatch; private bool _linesNeedRebuild; private List<DrawTextEntry> _drawTextEntries; private List<AttachTextEntry> _attachTextEntries; private GUIStyle _textStyle; private void CheckInitialized() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown if (_drawTextEntries == null) { _ZTestBatch = new BatchedLineDraw(depthTest: true); _AlwaysBatch = new BatchedLineDraw(depthTest: false); _lineEntries = new List<DrawLineEntry>(16); _textStyle = new GUIStyle(); _textStyle.alignment = (TextAnchor)0; _drawTextEntries = new List<DrawTextEntry>(16); _attachTextEntries = new List<AttachTextEntry>(16); } } private void Awake() { CheckInitialized(); } private void OnGUI() { DrawTextOnGUI(); } private void LateUpdate() { TickAndDrawLines(); TickTexts(); } private void OnDestroy() { _AlwaysBatch.Dispose(); _ZTestBatch.Dispose(); } private void Clear() { _drawTextEntries.Clear(); _lineEntries.Clear(); _linesNeedRebuild = true; } public void RegisterLine(Vector3 start, Vector3 end, Color color, float timer, bool noZTest) { //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_0064: 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_006c: Unknown result type (might be due to invalid IL or missing references) CheckInitialized(); DrawLineEntry drawLineEntry = null; for (int i = 0; i < _lineEntries.Count; i++) { if (!_lineEntries[i].occupied) { drawLineEntry = _lineEntries[i]; break; } } if (drawLineEntry == null) { drawLineEntry = new DrawLineEntry(); _lineEntries.Add(drawLineEntry); } drawLineEntry.occupied = true; drawLineEntry.start = start; drawLineEntry.end = end; drawLineEntry.color = color; drawLineEntry.timer = timer; drawLineEntry.noZTest = noZTest; _linesNeedRebuild = true; } private void RebuildDrawLineBatchMesh() { //IL_005d: 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_0069: Unknown result type (might be due to invalid IL or missing references) //IL_003e: 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_004a: Unknown result type (might be due to invalid IL or missing references) _ZTestBatch.Clear(); _AlwaysBatch.Clear(); for (int i = 0; i < _lineEntries.Count; i++) { DrawLineEntry drawLineEntry = _lineEntries[i]; if (drawLineEntry.occupied) { if (drawLineEntry.noZTest) { _AlwaysBatch.AddLine(drawLineEntry.start, drawLineEntry.end, drawLineEntry.color); } else { _ZTestBatch.AddLine(drawLineEntry.start, drawLineEntry.end, drawLineEntry.color); } } } _ZTestBatch.BuildBatch(); _AlwaysBatch.BuildBatch(); } private void TickAndDrawLines() { //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_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) if (_linesNeedRebuild) { RebuildDrawLineBatchMesh(); _linesNeedRebuild = false; } Graphics.DrawMesh(_AlwaysBatch.mesh, Vector3.zero, Quaternion.identity, _AlwaysBatch.mat, 4, (Camera)null, 0, (MaterialPropertyBlock)null, false, false); Graphics.DrawMesh(_ZTestBatch.mesh, Vector3.zero, Quaternion.identity, _ZTestBatch.mat, 4, (Camera)null, 0, (MaterialPropertyBlock)null, false, false); for (int i = 0; i < _lineEntries.Count; i++) { DrawLineEntry drawLineEntry = _lineEntries[i]; if (drawLineEntry.occupied) { drawLineEntry.timer -= Time.deltaTime; if (drawLineEntry.timer < 0f) { drawLineEntry.occupied = false; _linesNeedRebuild = true; } } } } public void RegisterDrawText(Vector3 anchor, string text, Color color, int size, float timer, bool popUp) { //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_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) CheckInitialized(); DrawTextEntry drawTextEntry = null; for (int i = 0; i < _drawTextEntries.Count; i++) { if (!_drawTextEntries[i].occupied) { drawTextEntry = _drawTextEntries[i]; break; } } if (drawTextEntry == null) { drawTextEntry = new DrawTextEntry(); _drawTextEntries.Add(drawTextEntry); } drawTextEntry.occupied = true; drawTextEntry.anchor = anchor; drawTextEntry.content.text = text; drawTextEntry.size = size; drawTextEntry.color = color; drawTextEntry.duration = (drawTextEntry.timer = timer); drawTextEntry.popUp = popUp; drawTextEntry.flag = DrawFlag.DrawnGizmo; } public void RegisterAttachText(Transform target, Func<string> strFunc, Vector3 offset, Color color, int size) { //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_0072: 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) CheckInitialized(); AttachTextEntry attachTextEntry = null; for (int i = 0; i < _attachTextEntries.Count; i++) { if (!_attachTextEntries[i].occupied) { attachTextEntry = _attachTextEntries[i]; break; } } if (attachTextEntry == null) { attachTextEntry = new AttachTextEntry(); _attachTextEntries.Add(attachTextEntry); } attachTextEntry.occupied = true; attachTextEntry.offset = offset; attachTextEntry.transform = target; attachTextEntry.strFunc = strFunc; attachTextEntry.color = color; attachTextEntry.size = size; attachTextEntry.content.text = strFunc(); attachTextEntry.flag = DrawFlag.DrawnGizmo; } private void TickTexts() { for (int i = 0; i < _drawTextEntries.Count; i++) { DrawTextEntry drawTextEntry = _drawTextEntries[i]; if (drawTextEntry.occupied) { drawTextEntry.timer -= Time.deltaTime; if (drawTextEntry.flag == DrawFlag.DrawnAll && drawTextEntry.timer < 0f) { drawTextEntry.occupied = false; } } } for (int j = 0; j < _attachTextEntries.Count; j++) { AttachTextEntry attachTextEntry = _attachTextEntries[j]; if (attachTextEntry.occupied) { if ((Object)(object)attachTextEntry.transform == (Object)null) { attachTextEntry.occupied = false; attachTextEntry.strFunc = null; } else if (attachTextEntry.flag == DrawFlag.DrawnAll) { attachTextEntry.content.text = attachTextEntry.strFunc(); attachTextEntry.flag = DrawFlag.DrawnGizmo; } } } } private void DrawTextOnGUI() { Camera debugDrawCamera = Draw.GetDebugDrawCamera(); if ((Object)(object)debugDrawCamera == (Object)null) { return; } for (int i = 0; i < _drawTextEntries.Count; i++) { DrawTextEntry drawTextEntry = _drawTextEntries[i]; if (drawTextEntry.occupied) { GUIDrawTextEntry(debugDrawCamera, drawTextEntry); drawTextEntry.flag |= DrawFlag.DrawnGUI; } } for (int j = 0; j < _attachTextEntries.Count; j++) { AttachTextEntry attachTextEntry = _attachTextEntries[j]; if (attachTextEntry.occupied) { GUIAttachTextEntry(debugDrawCamera, attachTextEntry); attachTextEntry.flag |= DrawFlag.DrawnGUI; } } } private void GUIDrawTextEntry(Camera camera, DrawTextEntry entry) { //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_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_0017: 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_0082: 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_0094: 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) Vector3 anchor = entry.anchor; Vector3 val = camera.WorldToScreenPoint(anchor); val.y = (float)Screen.height - val.y; if (entry.popUp) { float num = entry.timer / entry.duration; val.y -= (1f - num * num) * (float)entry.size * 1.5f; } _textStyle.normal.textColor = entry.color; _textStyle.fontSize = entry.size; GUI.Label(new Rect(Vector2.op_Implicit(val), _textStyle.CalcSize(entry.content)), entry.content, _textStyle); } private void GUIAttachTextEntry(Camera camera, AttachTextEntry entry) { //IL_0015: 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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_002d: 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_004e: 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_006a: 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_0080: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)entry.transform == (Object)null)) { Vector3 val = entry.transform.position + entry.offset; Vector3 val2 = camera.WorldToScreenPoint(val); val2.y = (float)Screen.height - val2.y; _textStyle.normal.textColor = entry.color; _textStyle.fontSize = entry.size; GUI.Label(new Rect(Vector2.op_Implicit(val2), _textStyle.CalcSize(entry.content)), entry.content, _textStyle); } } } } namespace ValheimPerformanceOptimizations.Extensions { public static class BoundsX { public static bool IntersectsXZ(this Bounds b1, Bounds b2) { //IL_0002: 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_001e: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0047: 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_0063: Unknown result type (might be due to invalid IL or missing references) if ((double)((Bounds)(ref b1)).min.x <= (double)((Bounds)(ref b2)).max.x && (double)((Bounds)(ref b1)).max.x >= (double)((Bounds)(ref b2)).min.x && (double)((Bounds)(ref b1)).min.z <= (double)((Bounds)(ref b2)).max.z) { return (double)((Bounds)(ref b1)).max.z >= (double)((Bounds)(ref b2)).min.z; } return false; } public static bool IntersectsSphere(this Bounds bounds, Vector3 center, float radius) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001a: 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_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002d: 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) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_004f: 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_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_0080: 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_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_000a: Unknown result type (might be due to invalid IL or missing references) if (radius == 0f) { return ((Bounds)(ref bounds)).Contains(center); } Vector3 val = ((Bounds)(ref bounds)).center - ((Bounds)(ref bounds)).extents; Vector3 val2 = ((Bounds)(ref bounds)).center + ((Bounds)(ref bounds)).extents; double num = Math.Max(val.x - center.x, 0f) + Math.Max(center.x - val2.x, 0f); double num2 = Math.Max(val.y - center.y, 0f) + Math.Max(center.y - val2.y, 0f); double num3 = Math.Max(val.z - center.z, 0f) + Math.Max(center.z - val2.z, 0f); if (num < (double)radius && num2 < (double)radius && num3 < (double)radius) { return num * num + num2 * num2 + num3 * num3 < (double)(radius * radius); } return false; } } public static class CollectionX { } public static class ListX { public static void RemoveAtSwapBack<T>(this List<T> list, int index) { int index2 = list.Count - 1; list[index] = list[index2]; list.RemoveAt(index2); } public static void RemoveAtSwapBack<T, TKey>(this List<T> list, int index, Dictionary<TKey, int> indices, Func<T, TKey> keySelector) { int num = list.Count - 1; T arg = list[index]; indices.Remove(keySelector(arg)); if (index != num) { T arg2 = (list[index] = list[num]); indices[keySelector(arg2)] = index; } list.RemoveAt(num); } public static bool RemoveSwapBack<T>(this List<T> list, T item) { int num = list.IndexOf(item); if (num < 0) { return false; } list.RemoveAtSwapBack(num); return true; } } public static class NumberX { public static bool IsNearlyEqual(this float x, float y) { return Mathf.Approximately(x, y); } } } namespace ValheimPerformanceOptimizations.Patches { internal static class BinarySearchDictionarySetValuePatch { private static readonly MethodInfo SetValuePrefixMethod; static BinarySearchDictionarySetValuePatch() { SetValuePrefixMethod = AccessTools.Method(typeof(BinarySearchDictionarySetValuePatch), "SetValuePrefix", (Type[])null, (Type[])null); ValheimPerformanceOptimizations.OnInitialized += Initialize; } private static void Initialize(ConfigFile _, Harmony harmony) { PatchSetValue<float>(harmony); PatchSetValue<Vector3>(harmony); PatchSetValue<Quaternion>(harmony); PatchSetValue<int>(harmony); PatchSetValue<long>(harmony); PatchSetValue<string>(harmony); PatchSetValue<byte[]>(harmony); } private static void PatchSetValue<TValue>(Harmony harmony) { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown MethodInfo methodInfo = AccessTools.Method(typeof(BinarySearchDictionary<int, TValue>), "SetValue", new Type[2] { typeof(int), typeof(TValue) }, (Type[])null); MethodInfo methodInfo2 = SetValuePrefixMethod.MakeGenericMethod(typeof(TValue)); harmony.Patch((MethodBase)methodInfo, new HarmonyMethod(methodInfo2), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null); } private static bool SetValuePrefix<TValue>(BinarySearchDictionary<int, TValue> __instance, int key, TValue value, ref bool __result) { bool flag = default(bool); int num = __instance.BinaryFindKeyIndex(key, ref flag); if (flag) { if (EqualityComparer<TValue>.Default.Equals(__instance.m_values[num], value)) { __result = false; return false; } __instance.m_values[num] = value; __result = true; return false; } __instance.GuaranteeCapacity(); if (__instance.m_length - num > 0) { Array.Copy(__instance.m_keys, num, __instance.m_keys, num + 1, __instance.m_length - num); Array.Copy(__instance.m_values, num, __instance.m_values, num + 1, __instance.m_length - num); } __instance.m_keys[num] = key; __instance.m_values[num] = value; __instance.m_length++; __result = true; return false; } } internal static class CharacterTransformCachePatch { private static Character _cachedCharacter; private static Transform _cachedTransform; private static bool _cacheActive; private static IEnumerable<MethodBase> TargetMethods() { foreach (Type characterType in GetCharacterTypes()) { if (!characterType.ContainsGenericParameters) { MethodInfo method = characterType.GetMethod("CustomFixedUpdate", BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[1] { typeof(float) }, null); if (method != null && !method.ContainsGenericParameters) { yield return method; } } } } [HarmonyPrefix] private static void Prefix(Character __instance, out bool __state) { __state = !_cacheActive; if (__state) { _cachedCharacter = __instance; _cachedTransform = ((Component)__instance).transform; _cacheActive = true; } } [HarmonyFinalizer] private static Exception Finalizer(Exception __exception, bool __state) { if (__state) { _cachedCharacter = null; _cachedTransform = null; _cacheActive = false; } return __exception; } internal static Transform GetCachedTransform(Character character) { if (!_cacheActive || _cachedCharacter != character) { return ((Component)character).transform; } return _cachedTransform; } private static IEnumerable<Type> GetCharacterTypes() { Assembly assembly = typeof(Character).Assembly; Type[] typesFromAssembly = AccessTools.GetTypesFromAssembly(assembly); foreach (Type type in typesFromAssembly) { if (type == typeof(Character) || type.IsSubclassOf(typeof(Character))) { yield return type; } } } } internal static class CharacterTransformCacheTranspiler { private static readonly MethodInfo TransformGetter = AccessTools.PropertyGetter(typeof(Component), "transform"); private static readonly MethodInfo GetCachedTransformMethod = AccessTools.Method(typeof(CharacterTransformCachePatch), "GetCachedTransform", new Type[1] { typeof(Character) }, (Type[])null); private static IEnumerable<MethodBase> TargetMethods() { Assembly assembly = typeof(Character).Assembly; Type[] typesFromAssembly = AccessTools.GetTypesFromAssembly(assembly); foreach (Type type in typesFromAssembly) { if ((type != typeof(Character) && !type.IsSubclassOf(typeof(Character))) || type.ContainsGenericParameters) { continue; } foreach (MethodInfo declaredMethod in AccessTools.GetDeclaredMethods(type)) { if (IsSupportedMethod(declaredMethod)) { yield return declaredMethod; } } } } private static bool IsSupportedMethod(MethodBase method) { if (!method.IsStatic && !method.IsAbstract && !method.ContainsGenericParameters) { return method.GetMethodBody() != null; } return false; } [HarmonyTranspiler] private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions) { List<CodeInstruction> list = new List<CodeInstruction>(instructions); for (int i = 1; i < list.Count; i++) { if (CodeInstructionExtensions.Calls(list[i], TransformGetter) && !(list[i - 1].opcode != OpCodes.Ldarg_0)) { list[i].opcode = OpCodes.Call; list[i].operand = GetCachedTransformMethod; } } return list; } } [HarmonyPatch] public class ClutterSystemRenderQueuePatch { [HarmonyPatch(typeof(ClutterSystem), "Awake")] private static void Postfix(ClutterSystem __instance) { foreach (Clutter item in __instance.m_clutter) { InstanceRenderer component = item.m_prefab.GetComponent<InstanceRenderer>(); if (Object.op_Implicit((Object)(object)component)) { component.m_material.renderQueue = 2450; } } } } [HarmonyPatch] public static class EffectCulling { private const float EffectCullDistance = 288f; [HarmonyPatch(typeof(GameCamera), "Awake")] [HarmonyPostfix] private static void GameCamera_Awake_Postfix(GameCamera __instance) { Camera camera = __instance.m_camera; if (Object.op_Implicit((Object)(object)camera)) { float[] layerCullDistances = camera.layerCullDistances; layerCullDistances[LayerMask.NameToLayer("TransparentFX")] = 288f; layerCullDistances[LayerMask.NameToLayer("effect")] = 288f; camera.layerCullDistances = layerCullDistances; camera.layerCullSpherical = true; } } } [HarmonyPatch] internal static class LocationZoneCachePatch { private static readonly Dictionary<Vector2s, Location> LocationByZone = new Dictionary<Vector2s, Location>(); [HarmonyPatch(typeof(Location), "Awake")] [HarmonyPostfix] private static void Location_Awake_Postfix(Location __instance) { //IL_000b: 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) LocationByZone[ZoneSystem.GetZone(((Component)__instance).transform.position)] = __instance; } [HarmonyPatch(typeof(Location), "OnDestroy")] [HarmonyPrefix] private static void Location_OnDestroy_Prefix(Location __instance) { //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_0010: 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) Vector2s zone = ZoneSystem.GetZone(((Component)__instance).transform.position); LocationByZone.Remove(zone); } [HarmonyPatch(typeof(Location), "GetZoneLocation", new Type[] { typeof(Vector2s) })] [HarmonyPrefix] private static bool Location_GetZoneLocation_Prefix(Vector2s zone, ref Location __result) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) LocationByZone.TryGetValue(zone, out __result); return false; } [HarmonyPatch(typeof(Location), "GetZoneLocation", new Type[] { typeof(Vector3) })] [HarmonyPrefix] private static bool Location_GetZoneLocationByPosition_Prefix(Vector3 point, ref Location __result) { //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_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) Vector2s zone = ZoneSystem.GetZone(point); LocationByZone.TryGetValue(zone, out __result); return false; } } public static class MaxPhysicsTimeStepPatch { private static ConfigEntry<int> _maxUpdatesPerFrame; static MaxPhysicsTimeStepPatch() { ValheimPerformanceOptimizations.OnInitialized += Initialize; } private static void Initialize(ConfigFile configFile, Harmony harmony) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown ConfigDescription val = new ConfigDescription("The engine updates physics multiple times per frame. \nCoincidentally, physics calculation is the most expensive part of Valheim and it can be done up to 15 times per frame. \nIf can't get more than 20 fps, reducing this value can significantly boost fps in bases at the cost of less accurate physics. \nThe lowest you can go is 5", (AcceptableValueBase)(object)new AcceptableValueRange<int>(5, 15), Array.Empty<object>()); _maxUpdatesPerFrame = configFile.Bind<int>("General", "Max physics updates per frame", 8, val); harmony.PatchAll(typeof(MaxPhysicsTimeStepPatch)); } [HarmonyPatch(typeof(FejdStartup), "Awake")] [HarmonyPostfix] private static void Postfix() { Time.maximumDeltaTime = (float)_maxUpdatesPerFrame.Value * Time.fixedDeltaTime; } } public static class PrefabMaterialCombiner { private const string AlphaTestOn = "_ALPHATEST_ON"; public static void CombinePrefabMaterials(GameObject prefab) { WearNTear component = prefab.GetComponent<WearNTear>(); LODGroup component2 = ((Component)component).GetComponent<LODGroup>(); if ((Object)(object)component2 != (Object)null) { CombineTexturesForObject(CollectValidRenderers(component2)); return; } List<Renderer> list = new List<Renderer>(); GameObject worn = component.m_worn; if ((Object)(object)worn != (Object)null) { list.AddRange(CollectValidRenderers(worn.GetComponent<LODGroup>())); } GameObject val = component.m_new; if ((Object)(object)val != (Object)null) { list.AddRange(CollectValidRenderers(val.GetComponent<LODGroup>())); } GameObject wet = component.m_wet; if ((Object)(object)wet != (Object)null) { list.AddRange(CollectValidRenderers(wet.GetComponent<LODGroup>())); } GameObject val2 = component.m_new; if ((Object)(object)val2 != (Object)null) { list.AddRange(CollectValidRenderers(val2.GetComponent<LODGroup>())); } CombineTexturesForObject(list); } private static IEnumerable<Renderer> CollectValidRenderers(LODGroup inlineLodGroup) { return inlineLodGroup.GetLODs().SelectMany((LOD lod) => lod.renderers).Where(delegate(Renderer r) { Material[] sharedMaterials = r.sharedMaterials; return sharedMaterials.Length > 1 && (from mat in sharedMaterials group mat by mat.IsKeywordEnabled("_ALPHATEST_ON")).Any((IGrouping<bool, Material> group) => group.Count() > 1); }); } private static void CombineTexturesForObject(IEnumerable<Renderer> renderers) { //IL_0085: 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_0093: Expected O, but got Unknown //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Expected O, but got Unknown //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Expected O, but got Unknown //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) foreach (Renderer renderer in renderers) { MeshFilter component = ((Component)renderer).gameObject.GetComponent<MeshFilter>(); Mesh sharedMesh = component.sharedMesh; List<Material> list = new List<Material>(); List<Mesh> list2 = new List<Mesh>(); IEnumerable<IGrouping<bool, Material>> enumerable = from mat in renderer.sharedMaterials group mat by mat.IsKeywordEnabled("_ALPHATEST_ON"); int num = 0; foreach (IGrouping<bool, Material> item in enumerable) { List<Material> list3 = item.ToList(); Texture2D val = new Texture2D(1024, 1024) { filterMode = (FilterMode)0 }; Texture2D[] array = list3.Select((Material m) => ConvertToReadableTexture(m.mainTexture)).ToArray(); Rect[] array2 = val.PackTextures(array, 2, 1024); Texture2D val2 = new Texture2D(1024, 1024) { filterMode = (FilterMode)0 }; Texture2D[] array3 = list3.Select((Material m) => ConvertToReadableTexture(m.GetTexture("_BumpMap"))).ToArray(); val2.PackTextures(array3, 2, 1024); Material val3 = list3[0]; Material val4 = new Material(val3.shader); val4.CopyPropertiesFromMaterial(val3); val4.SetTexture("_MainTex", (Texture)(object)val); val4.SetTexture("_BumpMap", (Texture)(object)val2); val4.mainTextureScale = Vector2.one; if (val3.IsKeywordEnabled("_ALPHATEST_ON")) { val4.renderQueue = 2450; val4.EnableKeyword("_ALPHATEST_ON"); } else { val4.SetOverrideTag("RenderType", ""); val4.DisableKeyword("_ALPHATEST_ON"); } list.Add(val4); Mesh[] array4 = (Mesh[])(object)new Mesh[list3.Count]; for (int num2 = 0; num2 < list3.Count; num2++) { array4[num2] = ExtractMesh(sharedMesh, num2 + num); Vector2[] uv = array4[num2].uv; Rect bounds = array2[num2]; for (int num3 = 0; num3 < uv.Length; num3++) { uv[num3] = RemapUVToBounds(uv[num3], bounds); } array4[num2].uv = uv; } num += list3.Count; list2.Add((array4.Length > 1) ? CombineMeshes(array4, mergeSubMeshes: true) : array4[0]); } Mesh mesh = CombineMeshes(list2.ToArray(), mergeSubMeshes: false); component.mesh = mesh; renderer.materials = list.ToArray(); } } private static Texture2D ConvertToReadableTexture(Texture source) { //IL_0034: 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_0052: 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_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown RenderTexture temporary = RenderTexture.GetTemporary(source.width, source.height, 0, (RenderTextureFormat)7, (RenderTextureReadWrite)2); Graphics.Blit(source, temporary); RenderTexture active = RenderTexture.active; RenderTexture.active = temporary; Texture2D val = new Texture2D(source.width, source.height); val.ReadPixels(new Rect(0f, 0f, (float)((Texture)temporary).width, (float)((Texture)temporary).height), 0, 0); ((Texture)val).filterMode = (FilterMode)0; val.Apply(); RenderTexture.active = active; RenderTexture.ReleaseTemporary(temporary); return val; } private static Mesh ExtractMesh(Mesh masterMesh, int subMeshIndex) { //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: 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_0106: 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_011e: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Expected O, but got Unknown Dictionary<int, int> dictionary = new Dictionary<int, int>(); int[] indices = masterMesh.GetIndices(subMeshIndex); int num = 0; int[] array = indices; foreach (int key in array) { if (!dictionary.ContainsKey(key)) { dictionary.Add(key, num); num++; } } List<Vector3> list = new List<Vector3>(); List<Vector2> list2 = new List<Vector2>(); List<Vector3> list3 = new List<Vector3>(); foreach (KeyValuePair<int, int> item in dictionary) { list.Add(masterMesh.vertices[item.Key]); list2.Add(masterMesh.uv[item.Key]); list3.Add(masterMesh.normals[item.Key]); } int[] triangles = masterMesh.GetTriangles(subMeshIndex); int[] array2 = new int[triangles.Length]; for (int j = 0; j < triangles.Length; j++) { array2[j] = dictionary[triangles[j]]; } return new Mesh { vertices = list.ToArray(), uv = list2.ToArray(), normals = list3.ToArray(), triangles = array2 }; } private static Vector2 RemapUVToBounds(Vector2 oldUV, Rect bounds) { //IL_0010: 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_0040: Unknown result type (might be due to invalid IL or missing references) oldUV.x = Mathf.Lerp(((Rect)(ref bounds)).xMin, ((Rect)(ref bounds)).xMax, oldUV.x); oldUV.y = Mathf.Lerp(((Rect)(ref bounds)).yMin, ((Rect)(ref bounds)).yMax, oldUV.y); return oldUV; } private static Mesh CombineMeshes(Mesh[] meshes, bool mergeSubMeshes) { //IL_0026: 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_0035: Expected O, but got Unknown CombineInstance[] array = (CombineInstance[])(object)new CombineInstance[meshes.Length]; for (int i = 0; i < array.Length; i++) { ((CombineInstance)(ref array[i])).mesh = meshes[i]; } Mesh val = new Mesh(); val.CombineMeshes(array, mergeSubMeshes, false); return val; } } [HarmonyPatch] public static class PrefabPatches { private const float LeafParticleCullHeight = 0.79f; private static readonly List<string> PrefabsWithLeafParticles = new List<string>(); private static readonly List<string> MaterialsWithDisabledInstancing = new List<string> { "Grill_mat", "meadbase", "poison", "poisonres_potion", "stamina_potion", "portal_small" }.Select((string material) => material + " (Instance)").ToList(); private static readonly List<string> PrefabsWithDisabledInstancing = new List<string> { "piece_cookingstation", "MeadBaseFrostResist", "MeadBaseHealthMedium", "MeadBaseHealthMinor", "MeadBasePoisonResist", "MeadBaseStaminaMedium", "MeadBaseStaminaMinor", "MeadBaseTasty", "MeadPoisonResist", "MeadStaminaMedium", "MeadStaminaMinor", "portal_wood" }; private static readonly List<string> PrefabsWithWastedMaterials = new List<string>(); private static bool _isPatched; private static void PatchPrefabWithLeaves(GameObject prefab) { //IL_0041: 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_0047: 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_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: 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_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) ParticleSystemRenderer component = ((Component)((Component)Utils.FindChild(prefab.transform, "leaf_particles", (IterativeSearchType)0)).GetComponent<ParticleSystem>()).GetComponent<ParticleSystemRenderer>(); component.renderMode = (ParticleSystemRenderMode)4; component.enableGPUInstancing = true; LODGroup component2 = prefab.GetComponent<LODGroup>(); if (Object.op_Implicit((Object)(object)component2)) { LOD[] lODs = component2.GetLODs(); LOD val = lODs[0]; float screenRelativeTransitionHeight = val.screenRelativeTransitionHeight; val.screenRelativeTransitionHeight = 0.79f; Renderer[] array = val.renderers.Where((Renderer r) => ((Object)r).name != "leaf_particles").ToArray(); LOD[] array2 = (LOD[])(object)new LOD[lODs.Length + 1]; array2[0] = val; array2[1] = new LOD(screenRelativeTransitionHeight, array); for (int num = 1; num < lODs.Length; num++) { array2[num + 1] = lODs[num]; } component2.SetLODs(array2); } } private static void PatchPrefabWithUninstancedMaterials(GameObject prefab) { if ((Object)(object)prefab == (Object)null) { return; } Renderer[] componentsInChildren = prefab.GetComponentsInChildren<Renderer>(true); for (int i = 0; i < componentsInChildren.Length; i++) { Material[] sharedMaterials = componentsInChildren[i].sharedMaterials; foreach (Material val in sharedMaterials) { if ((Object)(object)val != (Object)null) { val.enableInstancing = true; } } } } private static void PatchPrefabWithWastedMaterials(GameObject prefab) { PrefabMaterialCombiner.CombinePrefabMaterials(prefab); } private static int PatchLocalParticleSystemCulling(GameObject prefab) { //IL_0027: 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) //IL_0185: Unknown result type (might be due to invalid IL or missing references) int num = LayerMask.NameToLayer("effect"); int num2 = 0; ParticleSystem[] componentsInChildren = prefab.GetComponentsInChildren<ParticleSystem>(true); foreach (ParticleSystem obj in componentsInChildren) { GameObject gameObject = ((Component)obj).gameObject; MainModule main = obj.main; ParticleSystemCullingMode? val = ((Object)gameObject).name switch { "flare" => (ParticleSystemCullingMode)2, "flames" => (ParticleSystemCullingMode)1, "flames (1)" => (ParticleSystemCullingMode)1, "embers" => (ParticleSystemCullingMode)1, "low_flames" => (ParticleSystemCullingMode)1, "sparcs (1)" => (ParticleSystemCullingMode)1, "smoke (1)" => (ParticleSystemCullingMode)1, _ => null, }; if (val.HasValue) { ((MainModule)(ref main)).cullingMode = val.Value; } if (val.HasValue || (!Object.op_Implicit((Object)(object)gameObject.GetComponent<Collider>()) && !Object.op_Implicit((Object)(object)gameObject.GetComponent<Rigidbody>()))) { if (gameObject.layer != num) { gameObject.layer = LayerMask.NameToLayer("TransparentFX"); } num2++; } } return num2; } private static string GetPrefabParticlePath(Transform particleTransform) { string text = ((Object)particleTransform).name; Transform val = particleTransform; while ((Object)(object)val.parent != (Object)null) { val = val.parent; text = ((Object)val).name + "/" + text; } return text; } private static void PatchSnowStormParticle() { //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_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0073: 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_007f: 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_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) GameObject obj = GameObject.Find("_GameMain/_Environment"); Shader.Find("Lux Lit Particles/ Bumped"); GameObject gameObject = ((Component)Utils.FindChild(obj.transform, "SnowStorm", (IterativeSearchType)0).GetChild(1)).gameObject; ParticleSystem component = gameObject.GetComponent<ParticleSystem>(); MainModule main = component.main; ((MainModule)(ref main)).maxParticles = 9000; MinMaxCurve startSize = ((MainModule)(ref main)).startSize; ((MinMaxCurve)(ref startSize)).mode = (ParticleSystemCurveMode)3; ((MinMaxCurve)(ref startSize)).constantMin = 0.03f; ((MinMaxCurve)(ref startSize)).constantMax = 0.07f; ((MainModule)(ref main)).startSize = startSize; EmissionModule emission = component.emission; MinMaxCurve rateOverTime = ((EmissionModule)(ref emission)).rateOverTime; ((MinMaxCurve)(ref rateOverTime)).constant = 3000f; ((EmissionModule)(ref emission)).rateOverTime = rateOverTime; ShapeModule shape = component.shape; ((ShapeModule)(ref shape)).radiusThickness = 1f; Material material = ((Renderer)gameObject.GetComponent<ParticleSystemRenderer>()).material; material.mainTexture = null; material.DisableKeyword("GEOM_TYPE_FROND"); } private static int PatchPrefabs(this IReadOnlyDictionary<int, GameObject> allPrefabs, IEnumerable<string> prefabNames, Action<GameObject> patcher) { int num = 0; foreach (string prefabName in prefabNames) { if (allPrefabs.TryGetValue(StringExtensionMethods.GetStableHashCode(prefabName), out var value)) { patcher(value); num++; } } return num; } [HarmonyPatch(typeof(ZNetScene), "Awake")] private static void Postfix(ZNetScene __instance, Dictionary<int, GameObject> ___m_namedPrefabs) { //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Invalid comparison between Unknown and I4 if (_isPatched) { return; } Dictionary<int, GameObject> namedPrefabs = __instance.m_namedPrefabs; int num = 0; int num2 = 0; num += namedPrefabs.PatchPrefabs(PrefabsWithLeafParticles, PatchPrefabWithLeaves); foreach (GameObject value in namedPrefabs.Values) { PatchPrefabWithUninstancedMaterials(value); num2 += PatchLocalParticleSystemCulling(value); num++; } if ((int)SystemInfo.graphicsDeviceType != 4) { DateTime now = DateTime.Now; num += namedPrefabs.PatchPrefabs(PrefabsWithWastedMaterials, PatchPrefabWithWastedMaterials); ValheimPerformanceOptimizations.Logger.LogInfo((object)("Combined prefab mats in " + (DateTime.Now - now).TotalMilliseconds + " ms")); } num++; ValheimPerformanceOptimizations.Logger.LogInfo((object)$"Updated culling for {num2} local-space flare or flame particle systems"); ValheimPerformanceOptimizations.Logger.LogInfo((object)$"Patched {num} prefabs"); _isPatched = true; } } public static class ReuseCollisionCallbacksPatch { private static ConfigEntry<bool> _reuseCollisionCallbacks; static ReuseCollisionCallbacksPatch() { ValheimPerformanceOptimizations.OnInitialized += Initialize; } private static void Initialize(ConfigFile configFile, Harmony harmony) { _reuseCollisionCallbacks = configFile.Bind<bool>("General", "Reuse collision callbacks", true, "Significantly reduces GC in physics-heavy scenes. Disable if there are collision issues in mod-heavy scenarios."); _reuseCollisionCallbacks.SettingChanged += delegate { Apply(); }; Apply(); } private static void Apply() { Physics.reuseCollisionCallbacks = _reuseCollisionCallbacks.Value; } } public class VPOTerrainLodShadowRenderer : MonoBehaviour { public const int TerrainLodLayer = 30; public static VPOTerrainLodShadowRenderer Instance; private Light directionalLight; private Heightmap heightmap; private int shadowCascadeCount = -1; private int shadowCasterPass = -1; private CommandBuffer shadowPassCommandBuffer; private Matrix4x4 terrainTransform; private void Awake() { //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_001c: Expected O, but got Unknown Instance = this; shadowPassCommandBuffer = new CommandBuffer { name = "Last cascade terrain pass" }; directionalLight = ((Component)this).GetComponent<Light>(); Transform val = GameObject.Find("_GameMain").transform.Find("Terrain_lod"); ((Component)val).gameObject.layer = 30; heightmap = ((Component)val).GetComponent<Heightmap>(); } public void HeightmapChanged() { ValheimPerformanceOptimizations.Logger.LogInfo((object)"HEIGHTMAP CHANGED"); UpdateCommandBuffer(); SetShadowCascadeCount(QualitySettings.shadowCascades); } public void SetShadowCascadeCount(int cascadeCount) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) if (shadowCascadeCount != cascadeCount) { shadowCascadeCount = QualitySettings.shadowCascades; directionalLight.RemoveCommandBuffer((LightEvent)4, shadowPassCommandBuffer); directionalLight.AddCommandBuffer((LightEvent)4, shadowPassCommandBuffer, GetShadowMapPass(shadowCascadeCount)); } } private void UpdateCommandBuffer() { //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 (m
BepInEx/plugins/VPOBurst_Managed.dll
Decompiled a month agousing System; using System.CodeDom.Compiler; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using AOT; using Unity.Burst; using Unity.Collections; using Unity.Jobs; using Unity.Mathematics; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] [CompilerGenerated] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)] internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1 { private struct MonoScriptData { public byte[] FilePathsData; public byte[] TypesData; public int TotalTypes; public int TotalFiles; public bool IsEditorOnly; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static MonoScriptData Get() { return new MonoScriptData { FilePathsData = new byte[198] { 0, 0, 0, 3, 0, 0, 0, 37, 92, 65, 115, 115, 101, 116, 115, 92, 86, 80, 79, 66, 117, 114, 115, 116, 92, 67, 97, 108, 99, 117, 108, 97, 116, 101, 87, 97, 118, 101, 115, 74, 111, 98, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 48, 92, 65, 115, 115, 101, 116, 115, 92, 86, 80, 79, 66, 117, 114, 115, 116, 92, 71, 101, 110, 101, 114, 97, 116, 101, 67, 111, 108, 108, 105, 115, 105, 111, 110, 86, 101, 114, 116, 105, 99, 101, 115, 74, 111, 98, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 37, 92, 65, 115, 115, 101, 116, 115, 92, 86, 80, 79, 66, 117, 114, 115, 116, 92, 71, 101, 110, 101, 114, 97, 116, 101, 67, 111, 108, 111, 114, 115, 74, 111, 98, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 44, 92, 65, 115, 115, 101, 116, 115, 92, 86, 80, 79, 66, 117, 114, 115, 116, 92, 71, 101, 110, 101, 114, 97, 116, 101, 68, 105, 115, 116, 97, 110, 116, 67, 111, 108, 111, 114, 115, 74, 111, 98, 46, 99, 115 }, TypesData = new byte[265] { 0, 0, 0, 0, 24, 86, 80, 79, 66, 117, 114, 115, 116, 124, 87, 97, 118, 101, 82, 101, 113, 117, 101, 115, 116, 68, 97, 116, 97, 0, 0, 0, 0, 19, 86, 80, 79, 66, 117, 114, 115, 116, 124, 87, 97, 116, 101, 114, 87, 97, 118, 101, 115, 0, 0, 0, 0, 26, 86, 80, 79, 66, 117, 114, 115, 116, 124, 67, 97, 108, 99, 117, 108, 97, 116, 101, 87, 97, 118, 101, 115, 74, 111, 98, 0, 0, 0, 0, 37, 86, 80, 79, 66, 117, 114, 115, 116, 124, 71, 101, 110, 101, 114, 97, 116, 101, 67, 111, 108, 108, 105, 115, 105, 111, 110, 86, 101, 114, 116, 105, 99, 101, 115, 74, 111, 98, 0, 0, 0, 0, 36, 86, 80, 79, 66, 117, 114, 115, 116, 124, 71, 101, 110, 101, 114, 97, 116, 101, 67, 111, 108, 108, 105, 115, 105, 111, 110, 73, 110, 100, 105, 99, 101, 115, 74, 111, 98, 0, 0, 0, 0, 26, 86, 80, 79, 66, 117, 114, 115, 116, 124, 71, 101, 110, 101, 114, 97, 116, 101, 67, 111, 108, 111, 114, 115, 74, 111, 98, 0, 0, 0, 0, 24, 86, 80, 79, 66, 117, 114, 115, 116, 124, 67, 104, 101, 99, 107, 66, 117, 114, 115, 116, 101, 100, 74, 111, 98, 0, 0, 0, 0, 33, 86, 80, 79, 66, 117, 114, 115, 116, 124, 71, 101, 110, 101, 114, 97, 116, 101, 68, 105, 115, 116, 97, 110, 116, 67, 111, 108, 111, 114, 115, 74, 111, 98 }, TotalFiles = 4, TotalTypes = 8, IsEditorOnly = false }; } } namespace VPOBurst; public struct WaveRequestData { public Vector3 Position; public float Depth; public float HeightOffset; public float WaveFactorBig; public Vector4 Wind; public Vector4 Wind2; public float WindBlend; public bool UseGlobalWind; } [BurstCompile] public static class WaterWaves { [UnmanagedFunctionPointer(CallingConvention.Cdecl)] internal delegate float CalcWave_00000003$PostfixBurstDelegate(in float3 worldPos, float depth, in float4 wind, float waterTime, float waveFactor, float waveFactorBig); internal static class CalcWave_00000003$BurstDirectCall { private static IntPtr Pointer; [BurstDiscard] private static void GetFunctionPointerDiscard(ref IntPtr P_0) { //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) if (Pointer == (IntPtr)0) { Pointer = BurstCompiler.CompileFunctionPointer<CalcWave_00000003$PostfixBurstDelegate>((CalcWave_00000003$PostfixBurstDelegate)CalcWave).Value; } P_0 = Pointer; } private static IntPtr GetFunctionPointer() { nint result = 0; GetFunctionPointerDiscard(ref result); return result; } public unsafe static float Invoke(in float3 worldPos, float depth, in float4 wind, float waterTime, float waveFactor, float waveFactorBig) { if (BurstCompiler.IsEnabled) { IntPtr functionPointer = GetFunctionPointer(); if (functionPointer != (IntPtr)0) { return ((delegate* unmanaged[Cdecl]<ref float3, float, ref float4, float, float, float, float>)functionPointer)(ref worldPos, depth, ref wind, waterTime, waveFactor, waveFactorBig); } } return CalcWave$BurstManaged(in worldPos, depth, in wind, waterTime, waveFactor, waveFactorBig); } } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] internal delegate float CalcWaveBlended_00000004$PostfixBurstDelegate(in float3 worldPos, float depth, in float4 wind1, in float4 wind2, float windBlend, float waterTime, float waveFactor, float waveFactorBig); internal static class CalcWaveBlended_00000004$BurstDirectCall { private static IntPtr Pointer; [BurstDiscard] private static void GetFunctionPointerDiscard(ref IntPtr P_0) { //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) if (Pointer == (IntPtr)0) { Pointer = BurstCompiler.CompileFunctionPointer<CalcWaveBlended_00000004$PostfixBurstDelegate>((CalcWaveBlended_00000004$PostfixBurstDelegate)CalcWaveBlended).Value; } P_0 = Pointer; } private static IntPtr GetFunctionPointer() { nint result = 0; GetFunctionPointerDiscard(ref result); return result; } public unsafe static float Invoke(in float3 worldPos, float depth, in float4 wind1, in float4 wind2, float windBlend, float waterTime, float waveFactor, float waveFactorBig) { if (BurstCompiler.IsEnabled) { IntPtr functionPointer = GetFunctionPointer(); if (functionPointer != (IntPtr)0) { return ((delegate* unmanaged[Cdecl]<ref float3, float, ref float4, ref float4, float, float, float, float, float>)functionPointer)(ref worldPos, depth, ref wind1, ref wind2, windBlend, waterTime, waveFactor, waveFactorBig); } } return CalcWaveBlended$BurstManaged(in worldPos, depth, in wind1, in wind2, windBlend, waterTime, waveFactor, waveFactorBig); } } private static readonly float2 Dir1 = math.normalize(new float2(1.0312f, 0.312f)); private static readonly float2 Tan1 = new float2(0f - Dir1.y, Dir1.x); private static readonly float2 Dir2 = math.normalize(new float2(-0.123f, 1.12f)); private static readonly float2 Tan2 = new float2(0f - Dir2.y, Dir2.x); private static readonly float2 Dir3 = math.normalize(new float2(0.423f, 0.124f)); private static readonly float2 Tan3 = new float2(0f - Dir3.y, Dir3.x); private static readonly float2 Dir4 = math.normalize(new float2(0.123f, -0.64f)); private static readonly float2 Tan4 = new float2(0f - Dir4.y, Dir4.x); private static readonly float2 Dir5 = math.normalize(new float2(-0.523f, -0.64f)); private static readonly float2 Tan5 = new float2(0f - Dir5.y, Dir5.x); private static readonly float2 Dir6 = math.normalize(new float2(0.223f, 0.74f)); private static readonly float2 Tan6 = new float2(0f - Dir6.y, Dir6.x); private static readonly float2 Dir7 = math.normalize(new float2(0.923f, -0.24f)); private static readonly float2 Tan7 = new float2(0f - Dir7.y, Dir7.x); private static readonly float2 Dir8 = math.normalize(new float2(-0.323f, 0.44f)); private static readonly float2 Tan8 = new float2(0f - Dir8.y, Dir8.x); private static readonly float2 Dir9 = math.normalize(new float2(0.5312f, -0.812f)); private static readonly float2 Tan9 = new float2(0f - Dir9.y, Dir9.x); [BurstCompile] [MonoPInvokeCallback(typeof(VPOBurst.CalcWave_00000003$PostfixBurstDelegate))] public static float CalcWave(in float3 worldPos, float depth, in float4 wind, float waterTime, float waveFactor, float waveFactorBig) { return CalcWave_00000003$BurstDirectCall.Invoke(in worldPos, depth, in wind, waterTime, waveFactor, waveFactorBig); } [BurstCompile] [MonoPInvokeCallback(typeof(VPOBurst.CalcWaveBlended_00000004$PostfixBurstDelegate))] public static float CalcWaveBlended(in float3 worldPos, float depth, in float4 wind1, in float4 wind2, float windBlend, float waterTime, float waveFactor, float waveFactorBig) { return CalcWaveBlended_00000004$BurstDirectCall.Invoke(in worldPos, depth, in wind1, in wind2, windBlend, waterTime, waveFactor, waveFactorBig); } private static float CreateWave(in float3 worldPos, float time, float waveSpeed, float waveLength, float waveHeight, float2 dir, float2 tangent, float sharpness) { //IL_0007: 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_0014: 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_0025: 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_0042: Unknown result type (might be due to invalid IL or missing references) float2 val = -(worldPos.z * dir + worldPos.x * tangent); float num = time * waveSpeed; return (TrochSin(num + val.y * waveLength, sharpness) * TrochSin(num * 0.123f + val.x * 0.13123f * waveLength, sharpness) - 0.2f) * waveHeight; } private static float TrochSin(float x, float k) { return math.sin(x - math.cos(x) * k) * 0.5f + 0.5f; } [MethodImpl(MethodImplOptions.AggressiveInlining)] [BurstCompile] internal static float CalcWave$BurstManaged(in float3 worldPos, float depth, in float4 wind, float waterTime, float waveFactor, float waveFactorBig) { //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) //IL_001a: 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_005f: 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_007f: 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_00a8: 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_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: 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_0128: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) float2 val = math.normalize(new float2(wind.x, wind.z)); float2 tangent = default(float2); ((float2)(ref tangent))..ctor(0f - val.y, val.x); float num = math.lerp(0f, wind.w, math.saturate(depth)); float time = waterTime / 20f; float num2 = CreateWave(in worldPos, time, 10f, 0.04f, 8f * waveFactorBig, val, tangent, 0.5f) + CreateWave(in worldPos, time, 14.123f, 0.08f, 6f * waveFactorBig, Dir1, Tan1, 0.5f) + CreateWave(in worldPos, time, 22.312f, 0.1f, 4f * waveFactorBig, Dir2, Tan2, 0.5f) + CreateWave(in worldPos, time, 31.42f, 0.2f, 2f * waveFactorBig, Dir3, Tan3, 0.5f) + CreateWave(in worldPos, time, 35.42f, 0.4f, 1f * waveFactorBig, Dir4, Tan4, 0.5f) + CreateWave(in worldPos, time, 38.1223f, 1f, 0.8f * waveFactorBig, Dir5, Tan5, 0.7f) + CreateWave(in worldPos, time, 41.1223f, 1.2f, 0.6f * waveFactor, Dir6, Tan6, 0.8f) + CreateWave(in worldPos, time, 51.5123f, 1.3f, 0.4f * waveFactor, Dir7, Tan7, 0.9f) + CreateWave(in worldPos, time, 54.2f, 1.3f, 0.3f * waveFactor, Dir8, Tan8, 0.9f) + CreateWave(in worldPos, time, 56.123f, 1.5f, 0.2f * waveFactor, Dir9, Tan9, 0.9f); return num2 * num; } [MethodImpl(MethodImplOptions.AggressiveInlining)] [BurstCompile] internal static float CalcWaveBlended$BurstManaged(in float3 worldPos, float depth, in float4 wind1, in float4 wind2, float windBlend, float waterTime, float waveFactor, float waveFactorBig) { if (depth == 0f) { return 0f; } if (windBlend == 0f) { return CalcWave(in worldPos, depth, in wind1, waterTime, waveFactor, waveFactorBig); } float num = CalcWave(in worldPos, depth, in wind1, waterTime, waveFactor, waveFactorBig); float num2 = CalcWave(in worldPos, depth, in wind2, waterTime, waveFactor, waveFactorBig); return math.lerp(num, num2, windBlend); } } [BurstCompile] public struct CalculateWavesJob : IJobParallelFor { [ReadOnly] public NativeArray<WaveRequestData> WaveRequests; [ReadOnly] public float Time; [WriteOnly] public NativeArray<float> Results; public void Execute(int index) { //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_0041: 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_004b: 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_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) WaveRequestData waveRequestData = WaveRequests[index]; float num = 0f; if (waveRequestData.UseGlobalWind && waveRequestData.Depth != 0f) { float3 worldPos = float3.op_Implicit(waveRequestData.Position); float4 wind = float4.op_Implicit(waveRequestData.Wind); float4 wind2 = float4.op_Implicit(waveRequestData.Wind2); num = WaterWaves.CalcWaveBlended(in worldPos, waveRequestData.Depth, in wind, in wind2, waveRequestData.WindBlend, Time, 1f, waveRequestData.WaveFactorBig); } Results[index] = waveRequestData.HeightOffset + num; } } [BurstCompile] public struct GenerateCollisionVerticesJob : IJob { [ReadOnly] public int Width; [ReadOnly] public float Scale; [ReadOnly] public NativeArray<float> Heights; [WriteOnly] public NativeArray<Vector3> Verts; [WriteOnly] public NativeArray<float> MinMax; public void Execute() { //IL_0073: Unknown result type (might be due to invalid IL or missing references) int num = Width + 1; float num2 = (float)Width * Scale * -0.5f; float num3 = float.MaxValue; float num4 = float.MinValue; for (int i = 0; i < Verts.Length; i++) { int num5 = i / num; int num6 = i % num; float num7 = Heights[num5 * num + num6]; Verts[i] = new Vector3(num2 + (float)num6 * Scale, num7, num2 + (float)num5 * Scale); num3 = math.min(num3, num7); num4 = math.max(num4, num7); } MinMax[0] = num3; MinMax[1] = num4; } } [BurstCompile] public struct GenerateCollisionIndicesJob : IJobParallelFor { [ReadOnly] public int Width; [WriteOnly] public NativeArray<int> Indices; public void Execute(int quadIndex) { int num = quadIndex / Width; int num2 = quadIndex % Width; int num3 = Width + 1; int num4 = num * num3 + num2; int num5 = num4 + 1; int num6 = num4 + num3 + 1; int num7 = num4 + num3; int num8 = quadIndex * 6; Indices[num8] = num4; Indices[num8 + 1] = num7; Indices[num8 + 2] = num5; Indices[num8 + 3] = num5; Indices[num8 + 4] = num7; Indices[num8 + 5] = num6; } } [BurstCompile] public struct GenerateColorsJob : IJobParallelFor { [ReadOnly] public int Width; [ReadOnly] [DeallocateOnJobCompletion] public NativeArray<Color32> CornerColors; [WriteOnly] public NativeArray<Color32> Colors; public void Execute(int index) { //IL_0058: Unknown result type (might be due to invalid IL or missing references) int num = Width + 1; float num2 = math.floor((float)index / (float)num); int num3 = index % num; float iy = math.smoothstep(0f, 1f, num2 / (float)Width); float ix = math.smoothstep(0f, 1f, (float)num3 / (float)Width); Colors[index] = GetBiomeColor(ix, iy); } private Color32 GetBiomeColor(float ix, float iy) { //IL_0008: 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_001a: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_003e: 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_0040: 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_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) Color32 val = Color32.Lerp(CornerColors[0], CornerColors[1], ix); Color32 val2 = Color32.Lerp(CornerColors[2], CornerColors[3], ix); return Color32.Lerp(val, val2, iy); } } [BurstCompile] public struct CheckBurstedJob : IJob { public NativeArray<int> Flag; [BurstDiscard] private void MarkNotBursted() { Flag[0] = 0; } public void Execute() { Flag[0] = 1; MarkNotBursted(); } } [BurstCompile] public struct GenerateDistantColorsJob : IJobParallelFor { [ReadOnly] public int Width; [ReadOnly] public float Scale; [ReadOnly] public float StartX; [ReadOnly] public float StartZ; [ReadOnly] public int MapSize; [ReadOnly] public NativeArray<byte> BiomeMap; [WriteOnly] public NativeArray<Color32> Colors; public void Execute(int index) { //IL_00e2: Unknown result type (might be due to invalid IL or missing references) int num = Width + 1; int num2 = index / num; int num3 = index % num; float num4 = StartX + (float)num3 * Scale; float num5 = StartZ + (float)num2 * Scale; int num6 = (int)((num4 - 6f) / 12f + 1024f); int num7 = (int)((num5 - 6f) / 12f + 1024f); if (num6 < 0) { num6 = 0; } else if (num6 >= MapSize) { num6 = MapSize - 1; } if (num7 < 0) { num7 = 0; } else if (num7 >= MapSize) { num7 = MapSize - 1; } Colors[index] = GetBiomeColor(BiomeMap[num7 * MapSize + num6]); } private static Color32 GetBiomeColor(byte biome) { //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_0047: 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_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_006c: 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_0080: 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_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_00a4: 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_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) if (1 == 0) { } Color32 result = (Color32)(biome switch { 2 => new Color32(byte.MaxValue, (byte)0, (byte)0, (byte)0), 3 => new Color32((byte)0, byte.MaxValue, (byte)0, (byte)0), 4 => new Color32((byte)0, (byte)0, byte.MaxValue, (byte)0), 5 => new Color32((byte)0, (byte)0, (byte)0, byte.MaxValue), 6 => new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue), 7 => new Color32((byte)0, byte.MaxValue, (byte)0, (byte)0), 9 => new Color32((byte)0, (byte)0, byte.MaxValue, byte.MaxValue), _ => new Color32((byte)0, (byte)0, (byte)0, (byte)0), }); if (1 == 0) { } return result; } } internal static class $BurstDirectCallInitializer { [RuntimeInitializeOnLoadMethod(/*Could not decode attribute arguments.*/)] private static void Initialize() { BurstCompilerOptions options = BurstCompiler.Options; } }
valheim_Data/Managed/Unity.Burst.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using System.Text; using AOT; using Microsoft.CodeAnalysis; using Unity.Burst; using Unity.Burst.LowLevel; using Unity.Collections.LowLevel.Unsafe; using Unity.Jobs.LowLevel.Unsafe; using UnityEngine; using UnityEngine.Scripting; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: InternalsVisibleTo("Unity.Burst.CodeGen")] [assembly: InternalsVisibleTo("Unity.Burst.Editor")] [assembly: InternalsVisibleTo("Unity.Burst.Tests.UnitTests")] [assembly: InternalsVisibleTo("Unity.Burst.Editor.Tests")] [assembly: InternalsVisibleTo("Unity.Burst.Benchmarks")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] internal sealed class IsUnmanagedAttribute : Attribute { } } [CompilerGenerated] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)] internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1 { private struct MonoScriptData { public byte[] FilePathsData; public byte[] TypesData; public int TotalTypes; public int TotalFiles; public bool IsEditorOnly; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static MonoScriptData Get() { return new MonoScriptData { FilePathsData = new byte[3832] { 0, 0, 0, 1, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 75, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 114, 79, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 74, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 117, 114, 115, 116, 82, 117, 110, 116, 105, 109, 101, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 79, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 117, 114, 115, 116, 83, 116, 114, 105, 110, 103, 46, 70, 108, 111, 97, 116, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 73, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 117, 114, 115, 116, 83, 116, 114, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 92, 65, 108, 105, 97, 115, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 92, 65, 115, 115, 117, 109, 101, 82, 97, 110, 103, 101, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 92, 67, 111, 110, 115, 116, 97, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 92, 72, 105, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 92, 73, 103, 110, 111, 114, 101, 87, 97, 114, 110, 105, 110, 103, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 92, 83, 107, 105, 112, 76, 111, 99, 97, 108, 115, 73, 110, 105, 116, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 77, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 117, 110, 99, 116, 105, 111, 110, 80, 111, 105, 110, 116, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 65, 114, 109, 92, 78, 69, 79, 78, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 65, 114, 109, 92, 78, 69, 79, 78, 95, 65, 65, 114, 99, 104, 54, 52, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 65, 114, 109, 92, 78, 69, 79, 78, 95, 65, 65, 114, 99, 104, 54, 52, 95, 99, 114, 121, 112, 116, 111, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 65, 114, 109, 92, 78, 69, 79, 78, 95, 65, 65, 114, 99, 104, 54, 52, 95, 100, 111, 116, 112, 114, 111, 100, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 65, 114, 109, 92, 78, 69, 79, 78, 95, 65, 65, 114, 99, 104, 54, 52, 95, 114, 100, 109, 97, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 65, 114, 109, 92, 78, 69, 79, 78, 95, 99, 116, 111, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 79, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 67, 111, 109, 109, 111, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 83, 105, 109, 100, 68, 101, 98, 117, 103, 86, 105, 101, 119, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 77, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 118, 49, 50, 56, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 77, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 118, 50, 53, 54, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 118, 54, 52, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 65, 118, 120, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 65, 118, 120, 50, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 66, 109, 105, 49, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 66, 109, 105, 50, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 67, 111, 109, 109, 111, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 67, 115, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 70, 49, 54, 67, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 70, 109, 97, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 80, 111, 112, 99, 110, 116, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 80, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 83, 115, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 83, 115, 101, 50, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 83, 115, 101, 51, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 83, 115, 101, 52, 95, 49, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 83, 115, 101, 52, 95, 50, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 82, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 92, 120, 56, 54, 92, 83, 115, 115, 101, 51, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 78, 111, 65, 108, 105, 97, 115, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 97, 102, 101, 83, 116, 114, 105, 110, 103, 65, 114, 114, 97, 121, 72, 101, 108, 112, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 74, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 98, 117, 114, 115, 116, 64, 54, 98, 98, 57, 97, 99, 97, 51, 101, 102, 51, 56, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 104, 97, 114, 101, 100, 83, 116, 97, 116, 105, 99, 46, 99, 115 }, TypesData = new byte[3068] { 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 114, 0, 0, 0, 0, 40, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 114, 124, 67, 111, 109, 109, 97, 110, 100, 66, 117, 105, 108, 100, 101, 114, 0, 0, 0, 0, 51, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 114, 124, 83, 116, 97, 116, 105, 99, 84, 121, 112, 101, 82, 101, 105, 110, 105, 116, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 45, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 114, 124, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 114, 72, 101, 108, 112, 101, 114, 0, 0, 0, 0, 38, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 114, 124, 70, 97, 107, 101, 68, 101, 108, 101, 103, 97, 116, 101, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 66, 117, 114, 115, 116, 67, 111, 109, 112, 105, 108, 101, 114, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 66, 117, 114, 115, 116, 82, 117, 110, 116, 105, 109, 101, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 82, 117, 110, 116, 105, 109, 101, 124, 72, 97, 115, 104, 67, 111, 100, 101, 51, 50, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 82, 117, 110, 116, 105, 109, 101, 124, 72, 97, 115, 104, 67, 111, 100, 101, 54, 52, 0, 0, 0, 0, 42, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 82, 117, 110, 116, 105, 109, 101, 124, 80, 114, 101, 115, 101, 114, 118, 101, 65, 116, 116, 114, 105, 98, 117, 116, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 66, 117, 114, 115, 116, 83, 116, 114, 105, 110, 103, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 83, 116, 114, 105, 110, 103, 124, 116, 66, 105, 103, 73, 110, 116, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 83, 116, 114, 105, 110, 103, 124, 116, 70, 108, 111, 97, 116, 85, 110, 105, 111, 110, 51, 50, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 83, 116, 114, 105, 110, 103, 124, 116, 70, 108, 111, 97, 116, 85, 110, 105, 111, 110, 54, 52, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 66, 117, 114, 115, 116, 83, 116, 114, 105, 110, 103, 0, 0, 0, 0, 41, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 83, 116, 114, 105, 110, 103, 124, 80, 114, 101, 115, 101, 114, 118, 101, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 83, 116, 114, 105, 110, 103, 124, 78, 117, 109, 98, 101, 114, 66, 117, 102, 102, 101, 114, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 66, 117, 114, 115, 116, 83, 116, 114, 105, 110, 103, 124, 70, 111, 114, 109, 97, 116, 79, 112, 116, 105, 111, 110, 115, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 124, 65, 108, 105, 97, 115, 105, 110, 103, 0, 0, 0, 0, 49, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 124, 65, 115, 115, 117, 109, 101, 82, 97, 110, 103, 101, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 124, 67, 111, 110, 115, 116, 97, 110, 116, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 124, 72, 105, 110, 116, 0, 0, 0, 0, 51, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 124, 73, 103, 110, 111, 114, 101, 87, 97, 114, 110, 105, 110, 103, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 52, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 124, 83, 107, 105, 112, 76, 111, 99, 97, 108, 115, 73, 110, 105, 116, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 73, 70, 117, 110, 99, 116, 105, 111, 110, 80, 111, 105, 110, 116, 101, 114, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 70, 117, 110, 99, 116, 105, 111, 110, 80, 111, 105, 110, 116, 101, 114, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 65, 114, 109, 1, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 65, 114, 109, 124, 78, 101, 111, 110, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 65, 114, 109, 1, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 65, 114, 109, 124, 78, 101, 111, 110, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 65, 114, 109, 1, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 65, 114, 109, 124, 78, 101, 111, 110, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 65, 114, 109, 1, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 65, 114, 109, 124, 78, 101, 111, 110, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 65, 114, 109, 1, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 65, 114, 109, 124, 78, 101, 111, 110, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 65, 114, 109, 1, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 65, 114, 109, 124, 78, 101, 111, 110, 0, 0, 0, 0, 29, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 67, 111, 109, 109, 111, 110, 0, 0, 0, 0, 46, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 66, 117, 114, 115, 116, 84, 97, 114, 103, 101, 116, 67, 112, 117, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 35, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 86, 54, 52, 68, 101, 98, 117, 103, 86, 105, 101, 119, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 86, 49, 50, 56, 68, 101, 98, 117, 103, 86, 105, 101, 119, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 86, 50, 53, 54, 68, 101, 98, 117, 103, 86, 105, 101, 119, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 118, 49, 50, 56, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 118, 50, 53, 54, 0, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 118, 54, 52, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 65, 118, 120, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 65, 118, 120, 50, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 66, 109, 105, 49, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 66, 109, 105, 50, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 40, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 82, 111, 117, 110, 100, 105, 110, 103, 83, 99, 111, 112, 101, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 70, 49, 54, 67, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 70, 109, 97, 0, 0, 0, 0, 36, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 43, 70, 109, 97, 124, 85, 110, 105, 111, 110, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 80, 111, 112, 99, 110, 116, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 30, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 83, 115, 101, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 83, 115, 101, 50, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 83, 115, 101, 51, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 83, 115, 101, 52, 95, 49, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 83, 115, 101, 52, 95, 50, 0, 0, 0, 0, 46, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 43, 83, 115, 101, 52, 95, 50, 124, 83, 116, 114, 66, 111, 111, 108, 65, 114, 114, 97, 121, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 124, 88, 56, 54, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 73, 110, 116, 114, 105, 110, 115, 105, 99, 115, 46, 88, 56, 54, 124, 83, 115, 115, 101, 51, 0, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 78, 111, 65, 108, 105, 97, 115, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 83, 97, 102, 101, 83, 116, 114, 105, 110, 103, 65, 114, 114, 97, 121, 72, 101, 108, 112, 101, 114, 1, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 83, 104, 97, 114, 101, 100, 83, 116, 97, 116, 105, 99, 1, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 124, 83, 104, 97, 114, 101, 100, 83, 116, 97, 116, 105, 99, 0, 0, 0, 0, 42, 85, 110, 105, 116, 121, 46, 66, 117, 114, 115, 116, 46, 83, 104, 97, 114, 101, 100, 83, 116, 97, 116, 105, 99, 124, 80, 114, 101, 115, 101, 114, 118, 101, 65, 116, 116, 114, 105, 98, 117, 116, 101 }, TotalFiles = 42, TotalTypes = 83, IsEditorOnly = false }; } } namespace Unity.Burst { public enum OptimizeFor { Default, Performance, Size, FastCompilation, Balanced } public enum FloatMode { Default, Strict, Deterministic, Fast } public enum FloatPrecision { Standard, High, Medium, Low } [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method)] [RequireAttributeUsages] public class BurstCompileAttribute : Attribute { internal bool? _compileSynchronously; internal bool? _debug; internal bool? _disableSafetyChecks; internal bool? _disableDirectCall; public FloatMode FloatMode { get; set; } public FloatPrecision FloatPrecision { get; set; } public bool CompileSynchronously { get { if (!_compileSynchronously.HasValue) { return false; } return _compileSynchronously.Value; } set { _compileSynchronously = value; } } public bool Debug { get { if (!_debug.HasValue) { return false; } return _debug.Value; } set { _debug = value; } } public bool DisableSafetyChecks { get { if (!_disableSafetyChecks.HasValue) { return false; } return _disableSafetyChecks.Value; } set { _disableSafetyChecks = value; } } public bool DisableDirectCall { get { if (!_disableDirectCall.HasValue) { return false; } return _disableDirectCall.Value; } set { _disableDirectCall = value; } } public OptimizeFor OptimizeFor { get; set; } internal string[] Options { get; set; } public BurstCompileAttribute() { } public BurstCompileAttribute(FloatPrecision floatPrecision, FloatMode floatMode) { FloatMode = floatMode; FloatPrecision = floatPrecision; } internal BurstCompileAttribute(string[] options) { Options = options; } } public static class BurstCompiler { private class CommandBuilder { private StringBuilder _builder; private bool _hasArgs; public CommandBuilder() { _builder = new StringBuilder(); _hasArgs = false; } public CommandBuilder Begin(string cmd) { _builder.Clear(); _hasArgs = false; _builder.Append(cmd); return this; } public CommandBuilder With(string arg) { if (!_hasArgs) { _builder.Append(' '); } _hasArgs = true; _builder.Append(arg); return this; } public CommandBuilder With(IntPtr arg) { if (!_hasArgs) { _builder.Append(' '); } _hasArgs = true; _builder.AppendFormat("0x{0:X16}", arg.ToInt64()); return this; } public CommandBuilder And(char sep = '|') { _builder.Append(sep); return this; } public string SendToCompiler() { return SendRawCommandToCompiler(_builder.ToString()); } } [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal class StaticTypeReinitAttribute : Attribute { public readonly Type reinitType; public StaticTypeReinitAttribute(Type toReinit) { reinitType = toReinit; } } [BurstCompile] internal static class BurstCompilerHelper { [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate bool IsBurstEnabledDelegate(); [UnmanagedFunctionPointer(CallingConvention.Cdecl)] internal delegate bool IsBurstEnabled_00000145$PostfixBurstDelegate(); internal static class IsBurstEnabled_00000145$BurstDirectCall { private static IntPtr Pointer; [BurstDiscard] private static void GetFunctionPointerDiscard(ref IntPtr P_0) { if (Pointer == (IntPtr)0) { Pointer = CompileFunctionPointer<IsBurstEnabled_00000145$PostfixBurstDelegate>(IsBurstEnabled).Value; } P_0 = Pointer; } private static IntPtr GetFunctionPointer() { nint result = 0; GetFunctionPointerDiscard(ref result); return result; } public unsafe static bool Invoke() { if (IsEnabled) { IntPtr functionPointer = GetFunctionPointer(); if (functionPointer != (IntPtr)0) { return ((delegate* unmanaged[Cdecl]<bool>)functionPointer)(); } } return IsBurstEnabled$BurstManaged(); } } private static readonly IsBurstEnabledDelegate IsBurstEnabledImpl = IsBurstEnabled; public static readonly bool IsBurstGenerated = IsCompiledByBurst(IsBurstEnabledImpl); [BurstCompile] [MonoPInvokeCallback(typeof(IsBurstEnabledDelegate))] private static bool IsBurstEnabled() { return IsBurstEnabled_00000145$BurstDirectCall.Invoke(); } [BurstDiscard] private static void DiscardedMethod(ref bool value) { value = false; } private unsafe static bool IsCompiledByBurst(Delegate del) { return BurstCompilerService.GetAsyncCompiledAsyncDelegateMethod(BurstCompilerService.CompileAsyncDelegateMethod((object)del, string.Empty)) != null; } [MethodImpl(MethodImplOptions.AggressiveInlining)] [BurstCompile] [MonoPInvokeCallback(typeof(IsBurstEnabledDelegate))] internal static bool IsBurstEnabled$BurstManaged() { bool value = true; DiscardedMethod(ref value); return value; } } private class FakeDelegate { [Preserve] public MethodInfo Method { get; } public FakeDelegate(MethodInfo method) { Method = method; } } [ThreadStatic] private static CommandBuilder _cmdBuilder; internal static bool _IsEnabled; public static readonly BurstCompilerOptions Options = new BurstCompilerOptions(isGlobal: true); internal static Action OnCompileILPPMethod2; private static readonly MethodInfo DummyMethodInfo = typeof(BurstCompiler).GetMethod("DummyMethod", BindingFlags.Static | BindingFlags.NonPublic); public static bool IsEnabled { get { if (_IsEnabled) { return BurstCompilerHelper.IsBurstGenerated; } return false; } } public static bool IsLoadAdditionalLibrarySupported() { return IsApiAvailable("LoadBurstLibrary"); } private static CommandBuilder BeginCompilerCommand(string cmd) { if (_cmdBuilder == null) { _cmdBuilder = new CommandBuilder(); } return _cmdBuilder.Begin(cmd); } public static void SetExecutionMode(BurstExecutionEnvironment mode) { BurstCompilerService.SetCurrentExecutionMode((uint)mode); } public static BurstExecutionEnvironment GetExecutionMode() { return (BurstExecutionEnvironment)BurstCompilerService.GetCurrentExecutionMode(); } internal unsafe static T CompileDelegate<T>(T delegateMethod, bool deterministicCompilation = false) where T : class { return (T)(object)Marshal.GetDelegateForFunctionPointer((IntPtr)Compile(delegateMethod, isFunctionPointer: false, deterministicCompilation), delegateMethod.GetType()); } [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] private static void VerifyDelegateIsNotMulticast<T>(T delegateMethod) where T : class { if ((delegateMethod as Delegate).GetInvocationList().Length > 1) { throw new InvalidOperationException($"Burst does not support multicast delegates, please use a regular delegate for `{delegateMethod}'"); } } [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] private static void VerifyDelegateHasCorrectUnmanagedFunctionPointerAttribute<T>(T delegateMethod) where T : class { UnmanagedFunctionPointerAttribute customAttribute = delegateMethod.GetType().GetCustomAttribute<UnmanagedFunctionPointerAttribute>(); if (customAttribute == null || customAttribute.CallingConvention != CallingConvention.Cdecl) { Debug.LogWarning((object)("The delegate type " + delegateMethod.GetType().FullName + " should be decorated with [UnmanagedFunctionPointer(CallingConvention.Cdecl)] to ensure runtime interoperabilty between managed code and Burst-compiled code.")); } } [Obsolete("This method will be removed in a future version of Burst")] public static IntPtr CompileILPPMethod(RuntimeMethodHandle burstMethodHandle, RuntimeMethodHandle managedMethodHandle, RuntimeTypeHandle delegateTypeHandle) { throw new NotImplementedException(); } public unsafe static IntPtr CompileILPPMethod2(RuntimeMethodHandle burstMethodHandle) { if (burstMethodHandle.Value == IntPtr.Zero) { throw new ArgumentNullException("burstMethodHandle"); } OnCompileILPPMethod2?.Invoke(); MethodInfo methodInfo = (MethodInfo)MethodBase.GetMethodFromHandle(burstMethodHandle); return (IntPtr)Compile(new FakeDelegate(methodInfo), methodInfo, isFunctionPointer: true, isILPostProcessing: true); } [Obsolete("This method will be removed in a future version of Burst")] public unsafe static void* GetILPPMethodFunctionPointer(IntPtr ilppMethod) { throw new NotImplementedException(); } public unsafe static void* GetILPPMethodFunctionPointer2(IntPtr ilppMethod, RuntimeMethodHandle managedMethodHandle, RuntimeTypeHandle delegateTypeHandle) { if (managedMethodHandle.Value == IntPtr.Zero) { throw new ArgumentNullException("managedMethodHandle"); } if (delegateTypeHandle.Value == IntPtr.Zero) { throw new ArgumentNullException("delegateTypeHandle"); } if (ilppMethod == IntPtr.Zero) { GetManagedFallbackDelegate(out var managedFallbackDelegate, out var _); return (void*)Marshal.GetFunctionPointerForDelegate(managedFallbackDelegate); } return ilppMethod.ToPointer(); void GetManagedFallbackDelegate(out Delegate reference, out GCHandle reference2) { MethodInfo method = (MethodInfo)MethodBase.GetMethodFromHandle(managedMethodHandle); Type typeFromHandle = Type.GetTypeFromHandle(delegateTypeHandle); reference = Delegate.CreateDelegate(typeFromHandle, method); reference2 = GCHandle.Alloc(reference); } } [Obsolete("This method will be removed in a future version of Burst")] public unsafe static void* CompileUnsafeStaticMethod(RuntimeMethodHandle handle) { throw new NotImplementedException(); } public unsafe static FunctionPointer<T> CompileFunctionPointer<T>(T delegateMethod) where T : class { return new FunctionPointer<T>(new IntPtr(Compile(delegateMethod, isFunctionPointer: true))); } private unsafe static void* Compile(object delegateObj, bool isFunctionPointer, bool deterministicCompilation = false) { if (!(delegateObj is Delegate)) { throw new ArgumentException("object instance must be a System.Delegate", "delegateObj"); } Delegate obj = (Delegate)delegateObj; return Compile(obj, obj.Method, isFunctionPointer, isILPostProcessing: false, deterministicCompilation); } private unsafe static void* Compile(object delegateObj, MethodInfo methodInfo, bool isFunctionPointer, bool isILPostProcessing, bool deterministicCompilation = false) { if (delegateObj == null) { throw new ArgumentNullException("delegateObj"); } if (delegateObj.GetType().IsGenericType) { throw new InvalidOperationException($"The delegate type `{delegateObj.GetType()}` must be a non-generic type"); } if (!methodInfo.IsStatic) { throw new InvalidOperationException($"The method `{methodInfo}` must be static. Instance methods are not supported"); } if (methodInfo.IsGenericMethod) { throw new InvalidOperationException($"The method `{methodInfo}` must be a non-generic method"); } Delegate obj = null; if (!isILPostProcessing) { obj = delegateObj as Delegate; } Delegate obj2 = delegateObj as Delegate; if (BurstCompilerOptions.HasBurstCompileAttribute(methodInfo)) { void* ptr = null; if (Options.EnableBurstCompilation && BurstCompilerHelper.IsBurstGenerated) { if (isFunctionPointer && methodInfo.Name.EndsWith("$BurstManaged")) { delegateObj = methodInfo.DeclaringType.GetMethod(methodInfo.Name.Replace("$BurstManaged", ""), BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic).CreateDelegate(obj2.GetType()); } ptr = BurstCompilerService.GetAsyncCompiledAsyncDelegateMethod(BurstCompilerService.CompileAsyncDelegateMethod(delegateObj, string.Empty)); } if (ptr == null) { if (isILPostProcessing) { return null; } GCHandle.Alloc(obj); ptr = (void*)Marshal.GetFunctionPointerForDelegate(obj); } if (ptr == null) { throw new InvalidOperationException($"Burst failed to compile the function pointer `{methodInfo}`"); } return ptr; } throw new InvalidOperationException($"Burst cannot compile the function pointer `{methodInfo}` because the `[BurstCompile]` attribute is missing"); } internal static void Shutdown() { } internal static void Cancel() { } internal static bool IsCurrentCompilationDone() { return true; } internal static void Enable() { } internal static void Disable() { } internal static bool IsHostEditorArm() { return false; } internal static void TriggerUnsafeStaticMethodRecompilation() { Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); for (int i = 0; i < assemblies.Length; i++) { foreach (Attribute item in from x in assemblies[i].GetCustomAttributes() where x.GetType().FullName == "Unity.Burst.BurstCompiler+StaticTypeReinitAttribute" select x) { (item as StaticTypeReinitAttribute).reinitType.GetMethod("Constructor", BindingFlags.Static | BindingFlags.Public).Invoke(null, new object[0]); } } } internal static void TriggerRecompilation() { } internal static void UnloadAdditionalLibraries() { SendCommandToCompiler("$unload_burst_natives"); } internal static bool IsApiAvailable(string apiName) { return SendCommandToCompiler("$is_native_api_available", apiName) == "True"; } internal static int RequestSetProtocolVersion(int version) { string text = SendCommandToCompiler("$request_set_protocol_version_editor", $"{version}"); if (string.IsNullOrEmpty(text) || !int.TryParse(text, out var result)) { result = 0; } SendCommandToCompiler("$set_protocol_version_burst", $"{result}"); return result; } internal static void Initialize(string[] assemblyFolders, string[] ignoreAssemblies) { } internal static void NotifyCompilationStarted(string[] assemblyFolders, string[] ignoreAssemblies) { } internal static void NotifyAssemblyCompilationNotRequired(string assemblyName) { } internal static void NotifyAssemblyCompilationFinished(string assemblyName, string[] defines) { } internal static void NotifyCompilationFinished() { } internal static string AotCompilation(string[] assemblyFolders, string[] assemblyRoots, string options) { return "failed"; } internal static void SetProfilerCallbacks() { } private static string SendRawCommandToCompiler(string command) { string disassembly = BurstCompilerService.GetDisassembly(DummyMethodInfo, command); if (!string.IsNullOrEmpty(disassembly)) { return disassembly.TrimStart('\n'); } return ""; } private static string SendCommandToCompiler(string commandName, string commandArgs = null) { if (commandName == null) { throw new ArgumentNullException("commandName"); } if (commandArgs == null) { return SendRawCommandToCompiler(commandName); } return BeginCompilerCommand(commandName).With(commandArgs).SendToCompiler(); } private static void DummyMethod() { } } internal enum GlobalSafetyChecksSettingKind { Off, On, ForceOn } public sealed class BurstCompilerOptions { private const string DisableCompilationArg = "--burst-disable-compilation"; private const string ForceSynchronousCompilationArg = "--burst-force-sync-compilation"; internal const string DefaultLibraryName = "lib_burst_generated"; internal const string BurstInitializeName = "burst.initialize"; internal const string BurstInitializeExternalsName = "burst.initialize.externals"; internal const string BurstInitializeStaticsName = "burst.initialize.statics"; internal const string OptionBurstcSwitch = "+burstc"; internal const string OptionGroup = "group"; internal const string OptionPlatform = "platform="; internal const string OptionMinimumOSVersion = "minimum-os-version="; internal const string OptionBackend = "backend="; internal const string OptionGlobalSafetyChecksSetting = "global-safety-checks-setting="; internal const string OptionDisableSafetyChecks = "disable-safety-checks"; internal const string OptionDisableOpt = "disable-opt"; internal const string OptionFastMath = "fastmath"; internal const string OptionTarget = "target="; internal const string OptionOptLevel = "opt-level="; internal const string OptionLogTimings = "log-timings"; internal const string OptionOptForSize = "opt-for-size"; internal const string OptionFloatPrecision = "float-precision="; internal const string OptionFloatMode = "float-mode="; internal const string OptionBranchProtection = "branch-protection="; internal const string OptionDisableWarnings = "disable-warnings="; internal const string OptionAssemblyDefines = "assembly-defines="; internal const string OptionDump = "dump="; internal const string OptionFormat = "format="; internal const string OptionDebugTrap = "debugtrap"; internal const string OptionDisableVectors = "disable-vectors"; internal const string OptionDebug = "debug="; internal const string OptionDebugMode = "debugMode"; internal const string OptionStaticLinkage = "generate-static-linkage-methods"; internal const string OptionJobMarshalling = "generate-job-marshalling-methods"; internal const string OptionTempDirectory = "temp-folder="; internal const string OptionEnableDirectExternalLinking = "enable-direct-external-linking"; internal const string OptionLinkerOptions = "linker-options="; internal const string OptionEnableAutoLayoutFallbackCheck = "enable-autolayout-fallback-check"; internal const string OptionEnableFrameInfoRegistration = "enable-frame-info-registration"; internal const string OptionGenerateLinkXml = "generate-link-xml="; internal const string OptionMetaDataGeneration = "meta-data-generation="; internal const string OptionDisableStringInterpolationInExceptionMessages = "disable-string-interpolation-in-exception-messages"; internal const string OptionPlatformConfiguration = "platform-configuration="; internal const string OptionStackProtector = "stack-protector="; internal const string OptionStackProtectorBufferSize = "stack-protector-buffer-size="; internal const string OptionForceDisableFrameInfoRegistration = "force-disable-frame-info-registration"; internal const string OptionCacheDirectory = "cache-directory="; internal const string OptionJitDisableFunctionCaching = "disable-function-caching"; internal const string OptionJitDisableAssemblyCaching = "disable-assembly-caching"; internal const string OptionJitEnableAssemblyCachingLogs = "enable-assembly-caching-logs"; internal const string OptionJitEnableSynchronousCompilation = "enable-synchronous-compilation"; internal const string OptionJitCompilationPriority = "compilation-priority="; internal const string OptionJitIsForFunctionPointer = "is-for-function-pointer"; internal const string OptionJitManagedFunctionPointer = "managed-function-pointer="; internal const string OptionJitManagedDelegateHandle = "managed-delegate-handle="; internal const string OptionEnableInterpreter = "enable-interpreter"; internal const string OptionAotAssemblyFolder = "assembly-folder="; internal const string OptionRootAssembly = "root-assembly="; internal const string OptionIncludeRootAssemblyReferences = "include-root-assembly-references="; internal const string OptionAotMethod = "method="; internal const string OptionAotType = "type="; internal const string OptionAotAssembly = "assembly="; internal const string OptionAotOutputPath = "output="; internal const string OptionAotKeepIntermediateFiles = "keep-intermediate-files"; internal const string OptionAotNoLink = "nolink"; internal const string OptionAotOnlyStaticMethods = "only-static-methods"; internal const string OptionMethodPrefix = "method-prefix="; internal const string OptionAotNoNativeToolchain = "no-native-toolchain"; internal const string OptionAotEmitLlvmObjects = "emit-llvm-objects"; internal const string OptionAotKeyFolder = "key-folder="; internal const string OptionAotDecodeFolder = "decode-folder="; internal const string OptionVerbose = "verbose"; internal const string OptionValidateExternalToolChain = "validate-external-tool-chain"; internal const string OptionCompilerThreads = "threads="; internal const string OptionChunkSize = "chunk-size="; internal const string OptionPrintLogOnMissingPInvokeCallbackAttribute = "print-monopinvokecallbackmissing-message"; internal const string OptionOutputMode = "output-mode="; internal const string OptionAlwaysCreateOutput = "always-create-output="; internal const string OptionAotPdbSearchPaths = "pdb-search-paths="; internal const string OptionSafetyChecks = "safety-checks"; internal const string OptionLibraryOutputMode = "library-output-mode="; internal const string OptionCompilationId = "compilation-id="; internal const string OptionTargetFramework = "target-framework="; internal const string OptionDiscardAssemblies = "discard-assemblies="; internal const string OptionSaveExtraContext = "save-extra-context"; internal const string CompilerCommandShutdown = "$shutdown"; internal const string CompilerCommandCancel = "$cancel"; internal const string CompilerCommandEnableCompiler = "$enable_compiler"; internal const string CompilerCommandDisableCompiler = "$disable_compiler"; internal const string CompilerCommandSetDefaultOptions = "$set_default_options"; internal const string CompilerCommandTriggerSetupRecompilation = "$trigger_setup_recompilation"; internal const string CompilerCommandIsCurrentCompilationDone = "$is_current_compilation_done"; internal const string CompilerCommandTriggerRecompilation = "$trigger_recompilation"; internal const string CompilerCommandInitialize = "$initialize"; internal const string CompilerCommandDomainReload = "$domain_reload"; internal const string CompilerCommandVersionNotification = "$version"; internal const string CompilerCommandGetTargetCpuFromHost = "$get_target_cpu_from_host"; internal const string CompilerCommandSetProfileCallbacks = "$set_profile_callbacks"; internal const string CompilerCommandUnloadBurstNatives = "$unload_burst_natives"; internal const string CompilerCommandIsNativeApiAvailable = "$is_native_api_available"; internal const string CompilerCommandILPPCompilation = "$ilpp_compilation"; internal const string CompilerCommandIsArmTestEnv = "$is_arm_test_env"; internal const string CompilerCommandNotifyAssemblyCompilationNotRequired = "$notify_assembly_compilation_not_required"; internal const string CompilerCommandNotifyAssemblyCompilationFinished = "$notify_assembly_compilation_finished"; internal const string CompilerCommandNotifyCompilationStarted = "$notify_compilation_started"; internal const string CompilerCommandNotifyCompilationFinished = "$notify_compilation_finished"; internal const string CompilerCommandDirtyAllAssemblies = "$dirty_all_assemblies"; internal const string CompilerCommandAotCompilation = "$aot_compilation"; internal const string CompilerCommandRequestInitialiseDebuggerCommmand = "$request_debug_command"; internal const string CompilerCommandInitialiseDebuggerCommmand = "$load_debugger_interface"; internal const string CompilerCommandRequestSetProtocolVersionEditor = "$request_set_protocol_version_editor"; internal const string CompilerCommandSetProtocolVersionBurst = "$set_protocol_version_burst"; internal static readonly bool ForceDisableBurstCompilation; private static readonly bool ForceBurstCompilationSynchronously; internal static readonly bool IsSecondaryUnityProcess; private bool _enableBurstCompilation; private bool _enableBurstCompileSynchronously; private bool _enableBurstSafetyChecks; private bool _enableBurstTimings; private bool _enableBurstDebug; private bool _forceEnableBurstSafetyChecks; private bool IsGlobal { get; } public bool IsEnabled { get { if (EnableBurstCompilation) { return !ForceDisableBurstCompilation; } return false; } } public bool EnableBurstCompilation { get { return _enableBurstCompilation; } set { if (IsGlobal && ForceDisableBurstCompilation) { value = false; } bool num = _enableBurstCompilation != value; _enableBurstCompilation = value; if (IsGlobal) { JobsUtility.JobCompilerEnabled = value; BurstCompiler._IsEnabled = value; } if (num) { OnOptionsChanged(); } } } public bool EnableBurstCompileSynchronously { get { return _enableBurstCompileSynchronously; } set { bool num = _enableBurstCompileSynchronously != value; _enableBurstCompileSynchronously = value; if (num) { OnOptionsChanged(); } } } public bool EnableBurstSafetyChecks { get { return _enableBurstSafetyChecks; } set { bool num = _enableBurstSafetyChecks != value; _enableBurstSafetyChecks = value; if (num) { OnOptionsChanged(); MaybeTriggerRecompilation(); } } } public bool ForceEnableBurstSafetyChecks { get { return _forceEnableBurstSafetyChecks; } set { bool num = _forceEnableBurstSafetyChecks != value; _forceEnableBurstSafetyChecks = value; if (num) { OnOptionsChanged(); MaybeTriggerRecompilation(); } } } public bool EnableBurstDebug { get { return _enableBurstDebug; } set { bool num = _enableBurstDebug != value; _enableBurstDebug = value; if (num) { OnOptionsChanged(); MaybeTriggerRecompilation(); } } } [Obsolete("This property is no longer used and will be removed in a future major release")] public bool DisableOptimizations { get { return false; } set { } } [Obsolete("This property is no longer used and will be removed in a future major release. Use the [BurstCompile(FloatMode = FloatMode.Fast)] on the method directly to enable this feature")] public bool EnableFastMath { get { return true; } set { } } internal bool EnableBurstTimings { get { return _enableBurstTimings; } set { bool num = _enableBurstTimings != value; _enableBurstTimings = value; if (num) { OnOptionsChanged(); } } } internal bool RequiresSynchronousCompilation { get { if (!EnableBurstCompileSynchronously) { return ForceBurstCompilationSynchronously; } return true; } } internal Action OptionsChanged { get; set; } internal static string SerialiseCompilationOptionsSafe(string[] roots, string[] folders, string options) { return SafeStringArrayHelper.SerialiseStringArraySafe(new string[3] { SafeStringArrayHelper.SerialiseStringArraySafe(roots), SafeStringArrayHelper.SerialiseStringArraySafe(folders), options }); } internal static (string[] roots, string[] folders, string options) DeserialiseCompilationOptionsSafe(string from) { string[] array = SafeStringArrayHelper.DeserialiseStringArraySafe(from); return (roots: SafeStringArrayHelper.DeserialiseStringArraySafe(array[0]), folders: SafeStringArrayHelper.DeserialiseStringArraySafe(array[1]), options: array[2]); } private BurstCompilerOptions() : this(isGlobal: false) { } internal BurstCompilerOptions(bool isGlobal) { IsGlobal = isGlobal; EnableBurstCompilation = true; EnableBurstSafetyChecks = true; } internal BurstCompilerOptions Clone() { return new BurstCompilerOptions { EnableBurstCompilation = EnableBurstCompilation, EnableBurstCompileSynchronously = EnableBurstCompileSynchronously, EnableBurstSafetyChecks = EnableBurstSafetyChecks, EnableBurstTimings = EnableBurstTimings, EnableBurstDebug = EnableBurstDebug, ForceEnableBurstSafetyChecks = ForceEnableBurstSafetyChecks }; } private static bool TryGetAttribute(MemberInfo member, out BurstCompileAttribute attribute) { attribute = null; if (member == null) { return false; } attribute = GetBurstCompileAttribute(member); if (attribute == null) { return false; } return true; } private static bool TryGetAttribute(Assembly assembly, out BurstCompileAttribute attribute) { if (assembly == null) { attribute = null; return false; } attribute = assembly.GetCustomAttribute<BurstCompileAttribute>(); return attribute != null; } private static BurstCompileAttribute GetBurstCompileAttribute(MemberInfo memberInfo) { BurstCompileAttribute customAttribute = memberInfo.GetCustomAttribute<BurstCompileAttribute>(); if (customAttribute != null) { return customAttribute; } foreach (Attribute customAttribute2 in memberInfo.GetCustomAttributes()) { if (customAttribute2.GetType().FullName == "Burst.Compiler.IL.Tests.TestCompilerAttribute") { List<string> list = new List<string>(); return new BurstCompileAttribute(FloatPrecision.Standard, FloatMode.Default) { CompileSynchronously = true, Options = list.ToArray() }; } } return null; } internal static bool HasBurstCompileAttribute(MemberInfo member) { if (member == null) { throw new ArgumentNullException("member"); } BurstCompileAttribute attribute; return TryGetAttribute(member, out attribute); } internal static void MergeAttributes(ref BurstCompileAttribute memberAttribute, in BurstCompileAttribute assemblyAttribute) { if (memberAttribute.FloatMode == FloatMode.Default) { memberAttribute.FloatMode = assemblyAttribute.FloatMode; } if (memberAttribute.FloatPrecision == FloatPrecision.Standard) { memberAttribute.FloatPrecision = assemblyAttribute.FloatPrecision; } if (memberAttribute.OptimizeFor == OptimizeFor.Default) { memberAttribute.OptimizeFor = assemblyAttribute.OptimizeFor; } if (!memberAttribute._compileSynchronously.HasValue && assemblyAttribute._compileSynchronously.HasValue) { memberAttribute._compileSynchronously = assemblyAttribute._compileSynchronously; } if (!memberAttribute._debug.HasValue && assemblyAttribute._debug.HasValue) { memberAttribute._debug = assemblyAttribute._debug; } if (!memberAttribute._disableDirectCall.HasValue && assemblyAttribute._disableDirectCall.HasValue) { memberAttribute._disableDirectCall = assemblyAttribute._disableDirectCall; } if (!memberAttribute._disableSafetyChecks.HasValue && assemblyAttribute._disableSafetyChecks.HasValue) { memberAttribute._disableSafetyChecks = assemblyAttribute._disableSafetyChecks; } } internal bool TryGetOptions(MemberInfo member, out string flagsOut, bool isForILPostProcessing = false, bool isForCompilerClient = false, bool deterministicCompilation = false) { flagsOut = null; if (!TryGetAttribute(member, out var attribute)) { return false; } if (TryGetAttribute(member.Module.Assembly, out var attribute2)) { MergeAttributes(ref attribute, in attribute2); } flagsOut = GetOptions(attribute, isForILPostProcessing, isForCompilerClient, deterministicCompilation); return true; } internal string GetOptions(BurstCompileAttribute attr = null, bool isForILPostProcessing = false, bool isForCompilerClient = false, bool deterministicCompilation = false) { StringBuilder stringBuilder = new StringBuilder(); if (!isForCompilerClient && ((attr != null && attr.CompileSynchronously) || RequiresSynchronousCompilation)) { AddOption(stringBuilder, GetOption("enable-synchronous-compilation")); } if (!BurstCompiler.IsApiAvailable("RegisterFrameInfo")) { AddOption(stringBuilder, GetOption("force-disable-frame-info-registration")); } AddOption(stringBuilder, GetOption("debug=", "LineOnly")); if (isForILPostProcessing) { AddOption(stringBuilder, GetOption("compilation-priority=", CompilationPriority.ILPP)); } FloatMode floatMode = FloatMode.Default; if (deterministicCompilation) { floatMode = FloatMode.Deterministic; } if (attr != null) { if (attr.FloatMode != FloatMode.Default) { floatMode = attr.FloatMode; } if (attr.FloatPrecision != FloatPrecision.Standard) { AddOption(stringBuilder, GetOption("float-precision=", attr.FloatPrecision)); } if (attr.DisableSafetyChecks) { AddOption(stringBuilder, GetOption("disable-safety-checks")); } if (attr.Options != null) { string[] options = attr.Options; foreach (string text in options) { if (!string.IsNullOrEmpty(text)) { AddOption(stringBuilder, text); } } } switch (attr.OptimizeFor) { case OptimizeFor.Default: case OptimizeFor.Balanced: AddOption(stringBuilder, GetOption("opt-level=", 2)); break; case OptimizeFor.Performance: AddOption(stringBuilder, GetOption("opt-level=", 3)); break; case OptimizeFor.Size: AddOption(stringBuilder, GetOption("opt-for-size")); AddOption(stringBuilder, GetOption("opt-level=", 3)); break; case OptimizeFor.FastCompilation: AddOption(stringBuilder, GetOption("opt-level=", 1)); break; } } if (floatMode != FloatMode.Default) { AddOption(stringBuilder, GetOption("float-mode=", floatMode)); } if (ForceEnableBurstSafetyChecks) { AddOption(stringBuilder, GetOption("global-safety-checks-setting=", GlobalSafetyChecksSettingKind.ForceOn)); } else if (EnableBurstSafetyChecks) { AddOption(stringBuilder, GetOption("global-safety-checks-setting=", GlobalSafetyChecksSettingKind.On)); } else { AddOption(stringBuilder, GetOption("global-safety-checks-setting=", GlobalSafetyChecksSettingKind.Off)); } if (EnableBurstTimings) { AddOption(stringBuilder, GetOption("log-timings")); } if (EnableBurstDebug || (attr != null && attr.Debug)) { AddOption(stringBuilder, GetOption("debugMode")); } AddOption(stringBuilder, GetOption("temp-folder=", Path.Combine(Environment.CurrentDirectory, "Temp", "Burst"))); return stringBuilder.ToString(); } private static void AddOption(StringBuilder builder, string option) { if (builder.Length != 0) { builder.Append('\n'); } builder.Append(option); } internal static string GetOption(string optionName, object value = null) { if (optionName == null) { throw new ArgumentNullException("optionName"); } return "--" + optionName + (value ?? string.Empty); } private void OnOptionsChanged() { OptionsChanged?.Invoke(); } private void MaybeTriggerRecompilation() { } static BurstCompilerOptions() { string[] commandLineArgs = Environment.GetCommandLineArgs(); foreach (string text in commandLineArgs) { if (!(text == "--burst-disable-compilation")) { if (text == "--burst-force-sync-compilation") { ForceBurstCompilationSynchronously = true; } } else { ForceDisableBurstCompilation = true; } } if (CheckIsSecondaryUnityProcess()) { ForceDisableBurstCompilation = true; IsSecondaryUnityProcess = true; } string environmentVariable = Environment.GetEnvironmentVariable("UNITY_BURST_DISABLE_COMPILATION"); if (!string.IsNullOrEmpty(environmentVariable) && environmentVariable != "0") { ForceDisableBurstCompilation = true; } } private static bool CheckIsSecondaryUnityProcess() { return false; } } internal enum BurstTargetCpu { Auto, X86_SSE2, X86_SSE4, X64_SSE2, X64_SSE4, AVX, AVX2, WASM32, ARMV7A_NEON32, ARMV8A_AARCH64, THUMB2_NEON32, ARMV8A_AARCH64_HALFFP, ARMV9A } [Flags] internal enum NativeDumpFlags { None = 0, IL = 1, Unused = 2, IR = 4, IROptimized = 8, Asm = 0x10, Function = 0x20, Analysis = 0x40, IRPassAnalysis = 0x80, ILPre = 0x100, IRPerEntryPoint = 0x200, All = 0x3FD } internal enum CompilationPriority { EagerCompilationSynchronous, Asynchronous, ILPP, EagerCompilationAsynchronous } public enum BurstExecutionEnvironment { Default = 0, NonDeterministic = 0, Deterministic = 1 } public static class BurstRuntime { [StructLayout(LayoutKind.Sequential, Size = 1)] private struct HashCode32<T> { public static readonly int Value = HashStringWithFNV1A32(typeof(T).AssemblyQualifiedName); } [StructLayout(LayoutKind.Sequential, Size = 1)] private struct HashCode64<T> { public static readonly long Value = HashStringWithFNV1A64(typeof(T).AssemblyQualifiedName); } internal class PreserveAttribute : Attribute { } public static int GetHashCode32<T>() { return HashCode32<T>.Value; } public static int GetHashCode32(Type type) { return HashStringWithFNV1A32(type.AssemblyQualifiedName); } public static long GetHashCode64<T>() { return HashCode64<T>.Value; } public static long GetHashCode64(Type type) { return HashStringWithFNV1A64(type.AssemblyQualifiedName); } internal static int HashStringWithFNV1A32(string text) { uint num = 2166136261u; foreach (char c in text) { num = 16777619 * (num ^ (byte)(c & 0xFF)); num = 16777619 * (num ^ (byte)((int)c >> 8)); } return (int)num; } internal static long HashStringWithFNV1A64(string text) { ulong num = 14695981039346656037uL; foreach (char c in text) { num = 1099511628211L * (num ^ (byte)(c & 0xFF)); num = 1099511628211L * (num ^ (byte)((int)c >> 8)); } return (long)num; } public static bool LoadAdditionalLibrary(string pathToLibBurstGenerated) { if (BurstCompiler.IsLoadAdditionalLibrarySupported()) { return LoadAdditionalLibraryInternal(pathToLibBurstGenerated); } return false; } internal static bool LoadAdditionalLibraryInternal(string pathToLibBurstGenerated) { return (bool)typeof(BurstCompilerService).GetMethod("LoadBurstLibrary").Invoke(null, new object[1] { pathToLibBurstGenerated }); } [Preserve] internal unsafe static void RuntimeLog(byte* message, int logType, byte* fileName, int lineNumber) { BurstCompilerService.RuntimeLog((void*)null, (BurstLogType)logType, message, fileName, lineNumber); } internal static void Initialize() { } [Preserve] internal static void PreventRequiredAttributeStrip() { //IL_0000: 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) new BurstDiscardAttribute(); new ConditionalAttribute("HEJSA"); new JobProducerTypeAttribute(typeof(BurstRuntime)); } [Preserve] internal unsafe static void Log(byte* message, int logType, byte* fileName, int lineNumber) { BurstCompilerService.Log((void*)null, (BurstLogType)logType, message, (byte*)null, lineNumber); } public unsafe static byte* GetUTF8LiteralPointer(string str, out int byteCount) { throw new NotImplementedException("This function only works from Burst"); } } internal static class BurstString { public struct tBigInt { private const int c_BigInt_MaxBlocks = 35; public int m_length; public unsafe fixed uint m_blocks[35]; public int GetLength() { return m_length; } public unsafe uint GetBlock(int idx) { return m_blocks[idx]; } public void SetZero() { m_length = 0; } public bool IsZero() { return m_length == 0; } public unsafe void SetU64(ulong val) { if (val > uint.MaxValue) { m_blocks[0] = (uint)(val & 0xFFFFFFFFu); m_blocks[1] = (uint)((val >> 32) & 0xFFFFFFFFu); m_length = 2; } else if (val != 0L) { m_blocks[0] = (uint)(val & 0xFFFFFFFFu); m_length = 1; } else { m_length = 0; } } public unsafe void SetU32(uint val) { if (val != 0) { m_blocks[0] = val; m_length = ((val != 0) ? 1 : 0); } else { m_length = 0; } } public unsafe uint GetU32() { if (m_length != 0) { return m_blocks[0]; } return 0u; } } public enum CutoffMode { Unique, TotalLength, FractionLength } public enum PrintFloatFormat { Positional, Scientific } [StructLayout(LayoutKind.Explicit)] public struct tFloatUnion32 { [FieldOffset(0)] public float m_floatingPoint; [FieldOffset(0)] public uint m_integer; public bool IsNegative() { return m_integer >> 31 != 0; } public uint GetExponent() { return (m_integer >> 23) & 0xFF; } public uint GetMantissa() { return m_integer & 0x7FFFFF; } } [StructLayout(LayoutKind.Explicit)] public struct tFloatUnion64 { [FieldOffset(0)] public double m_floatingPoint; [FieldOffset(0)] public ulong m_integer; public bool IsNegative() { return m_integer >> 63 != 0; } public uint GetExponent() { return (uint)((m_integer >> 52) & 0x7FF); } public ulong GetMantissa() { return m_integer & 0xFFFFFFFFFFFFFL; } } internal class PreserveAttribute : Attribute { } private enum NumberBufferKind { Integer, Float } private struct NumberBuffer { private unsafe readonly byte* _buffer; public NumberBufferKind Kind; public int DigitsCount; public int Scale; public readonly bool IsNegative; public unsafe NumberBuffer(NumberBufferKind kind, byte* buffer, int digitsCount, int scale, bool isNegative) { Kind = kind; _buffer = buffer; DigitsCount = digitsCount; Scale = scale; IsNegative = isNegative; } public unsafe byte* GetDigitsPointer() { return _buffer; } } public enum NumberFormatKind : byte { General, Decimal, DecimalForceSigned, Hexadecimal } public struct FormatOptions { public NumberFormatKind Kind; public sbyte AlignAndSize; public byte Specifier; public bool Lowercase; public bool Uppercase => !Lowercase; public FormatOptions(NumberFormatKind kind, sbyte alignAndSize, byte specifier, bool lowercase) { this = default(FormatOptions); Kind = kind; AlignAndSize = alignAndSize; Specifier = specifier; Lowercase = lowercase; } public unsafe int EncodeToRaw() { FormatOptions formatOptions = this; return *(int*)(&formatOptions); } public int GetBase() { if (Kind == NumberFormatKind.Hexadecimal) { return 16; } return 10; } public override string ToString() { return string.Format("{0}: {1}, {2}: {3}, {4}: {5}, {6}: {7}", "Kind", Kind, "AlignAndSize", AlignAndSize, "Specifier", Specifier, "Uppercase", Uppercase); } } private static readonly byte[] logTable = new byte[256] { 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; private static readonly uint[] g_PowerOf10_U32 = new uint[8] { 1u, 10u, 100u, 1000u, 10000u, 100000u, 1000000u, 10000000u }; private static readonly byte[] InfinityString = new byte[8] { 73, 110, 102, 105, 110, 105, 116, 121 }; private static readonly byte[] NanString = new byte[3] { 78, 97, 78 }; private const int SinglePrecision = 9; private const int DoublePrecision = 17; internal const int SingleNumberBufferLength = 10; internal const int DoubleNumberBufferLength = 18; private const int SinglePrecisionCustomFormat = 7; private const int DoublePrecisionCustomFormat = 15; private static readonly char[] SplitByColon = new char[1] { ':' }; private static uint LogBase2(uint val) { uint num = val >> 24; if (num != 0) { return (uint)(24 + logTable[num]); } num = val >> 16; if (num != 0) { return (uint)(16 + logTable[num]); } num = val >> 8; if (num != 0) { return (uint)(8 + logTable[num]); } return logTable[val]; } private unsafe static int BigInt_Compare(in tBigInt lhs, in tBigInt rhs) { int num = lhs.m_length - rhs.m_length; if (num != 0) { return num; } for (int num2 = lhs.m_length - 1; num2 >= 0; num2--) { if (lhs.m_blocks[num2] != rhs.m_blocks[num2]) { if (lhs.m_blocks[num2] > rhs.m_blocks[num2]) { return 1; } return -1; } } return 0; } private static void BigInt_Add(out tBigInt pResult, in tBigInt lhs, in tBigInt rhs) { if (lhs.m_length < rhs.m_length) { BigInt_Add_internal(out pResult, in rhs, in lhs); } else { BigInt_Add_internal(out pResult, in lhs, in rhs); } } private unsafe static void BigInt_Add_internal(out tBigInt pResult, in tBigInt pLarge, in tBigInt pSmall) { int length = pLarge.m_length; int length2 = pSmall.m_length; pResult.m_length = length; ulong num = 0uL; fixed (uint* blocks = pLarge.m_blocks) { fixed (uint* blocks2 = pSmall.m_blocks) { fixed (uint* blocks3 = pResult.m_blocks) { uint* ptr = blocks; uint* ptr2 = blocks2; uint* ptr3 = blocks3; uint* ptr4 = ptr + length; uint* ptr5 = ptr2 + length2; while (ptr2 != ptr5) { ulong num2 = num + *ptr + *ptr2; num = num2 >> 32; *ptr3 = (uint)(num2 & 0xFFFFFFFFu); ptr++; ptr2++; ptr3++; } while (ptr != ptr4) { ulong num3 = num + *ptr; num = num3 >> 32; *ptr3 = (uint)(num3 & 0xFFFFFFFFu); ptr++; ptr3++; } if (num != 0L) { *ptr3 = 1u; pResult.m_length = length + 1; } else { pResult.m_length = length; } } } } } private static void BigInt_Multiply(out tBigInt pResult, in tBigInt lhs, in tBigInt rhs) { if (lhs.m_length < rhs.m_length) { BigInt_Multiply_internal(out pResult, in rhs, in lhs); } else { BigInt_Multiply_internal(out pResult, in lhs, in rhs); } } private unsafe static void BigInt_Multiply_internal(out tBigInt pResult, in tBigInt pLarge, in tBigInt pSmall) { int num = pLarge.m_length + pSmall.m_length; for (int i = 0; i < num; i++) { pResult.m_blocks[i] = 0u; } fixed (uint* blocks = pLarge.m_blocks) { uint* ptr = blocks + pLarge.m_length; fixed (uint* blocks2 = pResult.m_blocks) { fixed (uint* blocks3 = pSmall.m_blocks) { uint* ptr2 = blocks3; uint* ptr3 = ptr2 + pSmall.m_length; uint* ptr4 = blocks2; while (ptr2 != ptr3) { uint num2 = *ptr2; if (num2 != 0) { uint* ptr5 = blocks; uint* ptr6 = ptr4; ulong num3 = 0uL; do { ulong num4 = (ulong)(*ptr6 + (long)(*ptr5) * (long)num2) + num3; num3 = num4 >> 32; *ptr6 = (uint)(num4 & 0xFFFFFFFFu); ptr5++; ptr6++; } while (ptr5 != ptr); *ptr6 = (uint)(num3 & 0xFFFFFFFFu); } ptr2++; ptr4++; } if (num > 0 && pResult.m_blocks[num - 1] == 0) { pResult.m_length = num - 1; } else { pResult.m_length = num; } } } } } private unsafe static void BigInt_Multiply(out tBigInt pResult, in tBigInt lhs, uint rhs) { uint num = 0u; fixed (uint* blocks = pResult.m_blocks) { fixed (uint* blocks2 = lhs.m_blocks) { uint* ptr = blocks; uint* ptr2 = blocks2; uint* ptr3 = ptr2 + lhs.m_length; while (ptr2 != ptr3) { ulong num2 = (ulong)((long)(*ptr2) * (long)rhs + num); *ptr = (uint)(num2 & 0xFFFFFFFFu); num = (uint)(num2 >> 32); ptr2++; ptr++; } if (num != 0) { *ptr = num; pResult.m_length = lhs.m_length + 1; } else { pResult.m_length = lhs.m_length; } } } } private unsafe static void BigInt_Multiply2(out tBigInt pResult, in tBigInt input) { uint num = 0u; fixed (uint* blocks = pResult.m_blocks) { fixed (uint* blocks2 = input.m_blocks) { uint* ptr = blocks; uint* ptr2 = blocks2; uint* ptr3 = ptr2 + input.m_length; while (ptr2 != ptr3) { uint num2 = *ptr2; *ptr = (num2 << 1) | num; num = num2 >> 31; ptr2++; ptr++; } if (num != 0) { *ptr = num; pResult.m_length = input.m_length + 1; } else { pResult.m_length = input.m_length; } } } } private unsafe static void BigInt_Multiply2(ref tBigInt pResult) { uint num = 0u; fixed (uint* blocks = pResult.m_blocks) { uint* ptr = blocks; for (uint* ptr2 = ptr + pResult.m_length; ptr != ptr2; ptr++) { uint num2 = *ptr; *ptr = (num2 << 1) | num; num = num2 >> 31; } if (num != 0) { *ptr = num; pResult.m_length++; } } } private unsafe static void BigInt_Multiply10(ref tBigInt pResult) { ulong num = 0uL; fixed (uint* blocks = pResult.m_blocks) { uint* ptr = blocks; for (uint* ptr2 = ptr + pResult.m_length; ptr != ptr2; ptr++) { ulong num2 = (ulong)((long)(*ptr) * 10L) + num; *ptr = (uint)(num2 & 0xFFFFFFFFu); num = num2 >> 32; } if (num != 0L) { *ptr = (uint)num; pResult.m_length++; } } } private unsafe static tBigInt g_PowerOf10_Big(int i) { tBigInt result = default(tBigInt); switch (i) { case 0: result.m_length = 1; result.m_blocks[0] = 100000000u; break; case 1: result.m_length = 2; result.m_blocks[0] = 1874919424u; result.m_blocks[1] = 2328306u; break; case 2: result.m_length = 4; result.m_blocks[0] = 0u; result.m_blocks[1] = 2242703233u; result.m_blocks[2] = 762134875u; result.m_blocks[3] = 1262u; break; case 3: result.m_length = 7; result.m_blocks[0] = 0u; result.m_blocks[1] = 0u; result.m_blocks[2] = 3211403009u; result.m_blocks[3] = 1849224548u; result.m_blocks[4] = 3668416493u; result.m_blocks[5] = 3913284084u; result.m_blocks[6] = 1593091u; break; case 4: result.m_length = 14; result.m_blocks[0] = 0u; result.m_blocks[1] = 0u; result.m_blocks[2] = 0u; result.m_blocks[3] = 0u; result.m_blocks[4] = 781532673u; result.m_blocks[5] = 64985353u; result.m_blocks[6] = 253049085u; result.m_blocks[7] = 594863151u; result.m_blocks[8] = 3553621484u; result.m_blocks[9] = 3288652808u; result.m_blocks[10] = 3167596762u; result.m_blocks[11] = 2788392729u; result.m_blocks[12] = 3911132675u; result.m_blocks[13] = 590u; break; default: result.m_length = 27; result.m_blocks[0] = 0u; result.m_blocks[1] = 0u; result.m_blocks[2] = 0u; result.m_blocks[3] = 0u; result.m_blocks[4] = 0u; result.m_blocks[5] = 0u; result.m_blocks[6] = 0u; result.m_blocks[7] = 0u; result.m_blocks[8] = 2553183233u; result.m_blocks[9] = 3201533787u; result.m_blocks[10] = 3638140786u; result.m_blocks[11] = 303378311u; result.m_blocks[12] = 1809731782u; result.m_blocks[13] = 3477761648u; result.m_blocks[14] = 3583367183u; result.m_blocks[15] = 649228654u; result.m_blocks[16] = 2915460784u; result.m_blocks[17] = 487929380u; result.m_blocks[18] = 1011012442u; result.m_blocks[19] = 1677677582u; result.m_blocks[20] = 3428152256u; result.m_blocks[21] = 1710878487u; result.m_blocks[22] = 1438394610u; result.m_blocks[23] = 2161952759u; result.m_blocks[24] = 4100910556u; result.m_blocks[25] = 1608314830u; result.m_blocks[26] = 349175u; break; } return result; } private static void BigInt_Pow10(out tBigInt pResult, uint exponent) { tBigInt lhs = default(tBigInt); tBigInt pResult2 = default(tBigInt); uint num = exponent & 7; lhs.SetU32(g_PowerOf10_U32[num]); exponent >>= 3; int num2 = 0; while (exponent != 0) { if ((exponent & 1) != 0) { BigInt_Multiply(out pResult2, in lhs, g_PowerOf10_Big(num2)); lhs = pResult2; pResult2 = lhs; } num2++; exponent >>= 1; } pResult = lhs; } private static void BigInt_MultiplyPow10(out tBigInt pResult, in tBigInt input, uint exponent) { tBigInt pResult2 = default(tBigInt); tBigInt pResult3 = default(tBigInt); uint num = exponent & 7; if (num != 0) { BigInt_Multiply(out pResult2, in input, g_PowerOf10_U32[num]); } else { pResult2 = input; } exponent >>= 3; int num2 = 0; while (exponent != 0) { if ((exponent & 1) != 0) { BigInt_Multiply(out pResult3, in pResult2, g_PowerOf10_Big(num2)); pResult2 = pResult3; pResult3 = pResult2; } num2++; exponent >>= 1; } pResult = pResult2; } private unsafe static void BigInt_Pow2(out tBigInt pResult, uint exponent) { int num = (int)exponent / 32; for (uint num2 = 0u; num2 <= num; num2++) { pResult.m_blocks[num2] = 0u; } pResult.m_length = num + 1; int num3 = (int)exponent % 32; ref uint reference = ref pResult.m_blocks[num]; reference |= (uint)(1 << num3); } private unsafe static uint BigInt_DivideWithRemainder_MaxQuotient9(ref tBigInt pDividend, in tBigInt divisor) { int num = divisor.m_length; if (pDividend.m_length < divisor.m_length) { return 0u; } fixed (uint* blocks = divisor.m_blocks) { fixed (uint* blocks2 = pDividend.m_blocks) { uint* ptr = blocks; uint* ptr2 = blocks2; uint* ptr3 = ptr + num - 1; uint num2 = *(ptr2 + num - 1) / (*ptr3 + 1); if (num2 != 0) { ulong num3 = 0uL; ulong num4 = 0uL; do { ulong num5 = (ulong)((long)(*ptr) * (long)num2) + num4; num4 = num5 >> 32; ulong num6 = *ptr2 - (num5 & 0xFFFFFFFFu) - num3; num3 = (num6 >> 32) & 1; *ptr2 = (uint)(num6 & 0xFFFFFFFFu); ptr++; ptr2++; } while (ptr <= ptr3); while (num > 0 && pDividend.m_blocks[num - 1] == 0) { num--; } pDividend.m_length = num; } if (BigInt_Compare(in pDividend, in divisor) >= 0) { num2++; ptr = blocks; ptr2 = blocks2; ulong num7 = 0uL; do { ulong num8 = (ulong)((long)(*ptr2) - (long)(*ptr)) - num7; num7 = (num8 >> 32) & 1; *ptr2 = (uint)(num8 & 0xFFFFFFFFu); ptr++; ptr2++; } while (ptr <= ptr3); while (num > 0 && pDividend.m_blocks[num - 1] == 0) { num--; } pDividend.m_length = num; } return num2; } } } private unsafe static void BigInt_ShiftLeft(ref tBigInt pResult, uint shift) { int num = (int)shift / 32; int num2 = (int)shift % 32; int length = pResult.m_length; if (num2 == 0) { fixed (uint* blocks = pResult.m_blocks) { uint* ptr = blocks + length - 1; uint* ptr2 = ptr + num; while (ptr >= blocks) { *ptr2 = *ptr; ptr--; ptr2--; } } for (uint num3 = 0u; num3 < num; num3++) { pResult.m_blocks[num3] = 0u; } pResult.m_length += num; return; } int num4 = length - 1; int num5 = length + num; pResult.m_length = num5 + 1; int num6 = 32 - num2; uint num7 = 0u; uint num8 = pResult.m_blocks[num4]; uint num9 = num8 >> num6; while (num4 > 0) { pResult.m_blocks[num5] = num7 | num9; num7 = num8 << num2; num4--; num5--; num8 = pResult.m_blocks[num4]; num9 = num8 >> num6; } pResult.m_blocks[num5] = num7 | num9; pResult.m_blocks[num5 - 1] = num8 << num2; for (uint num10 = 0u; num10 < num; num10++) { pResult.m_blocks[num10] = 0u; } if (pResult.m_blocks[pResult.m_length - 1] == 0) { pResult.m_length--; } } private unsafe static uint Dragon4(ulong mantissa, int exponent, uint mantissaHighBitIdx, bool hasUnequalMargins, CutoffMode cutoffMode, uint cutoffNumber, byte* pOutBuffer, uint bufferSize, out int pOutExponent) { byte* ptr = pOutBuffer; if (mantissa == 0L) { *ptr = 48; pOutExponent = 0; return 1u; } tBigInt pResult = default(tBigInt); tBigInt pResult2 = default(tBigInt); tBigInt input = default(tBigInt); tBigInt pResult3 = default(tBigInt); tBigInt* ptr2; if (hasUnequalMargins) { if (exponent > 0) { pResult2.SetU64(4 * mantissa); BigInt_ShiftLeft(ref pResult2, (uint)exponent); pResult.SetU32(4u); BigInt_Pow2(out input, (uint)exponent); BigInt_Pow2(out pResult3, (uint)(exponent + 1)); } else { pResult2.SetU64(4 * mantissa); BigInt_Pow2(out pResult, (uint)(-exponent + 2)); input.SetU32(1u); pResult3.SetU32(2u); } ptr2 = &pResult3; } else { if (exponent > 0) { pResult2.SetU64(2 * mantissa); BigInt_ShiftLeft(ref pResult2, (uint)exponent); pResult.SetU32(2u); BigInt_Pow2(out input, (uint)exponent); } else { pResult2.SetU64(2 * mantissa); BigInt_Pow2(out pResult, (uint)(-exponent + 1)); input.SetU32(1u); } ptr2 = &input; } int num = (int)Math.Ceiling((double)((int)mantissaHighBitIdx + exponent) * 0.3010299956639812 - 0.69); if (cutoffMode == CutoffMode.FractionLength && num <= (int)(0 - cutoffNumber)) { num = (int)(0 - cutoffNumber + 1); } if (num > 0) { BigInt_MultiplyPow10(out var pResult4, in pResult, (uint)num); pResult = pResult4; } else if (num < 0) { BigInt_Pow10(out var pResult5, (uint)(-num)); BigInt_Multiply(out var pResult6, in pResult2, in pResult5); pResult2 = pResult6; BigInt_Multiply(out pResult6, in input, in pResult5); input = pResult6; if (ptr2 != &input) { BigInt_Multiply2(out *ptr2, in input); } } if (BigInt_Compare(in pResult2, in pResult) >= 0) { num++; } else { BigInt_Multiply10(ref pResult2); BigInt_Multiply10(ref input); if (ptr2 != &input) { BigInt_Multiply2(out *ptr2, in input); } } int num2 = num - (int)bufferSize; switch (cutoffMode) { case CutoffMode.TotalLength: { int num4 = num - (int)cutoffNumber; if (num4 > num2) { num2 = num4; } break; } case CutoffMode.FractionLength: { int num3 = (int)(0 - cutoffNumber); if (num3 > num2) { num2 = num3; } break; } } pOutExponent = num - 1; uint block = pResult.GetBlock(pResult.GetLength() - 1); if (block < 8 || block > 429496729) { uint num5 = LogBase2(block); uint shift = (59 - num5) % 32; BigInt_ShiftLeft(ref pResult, shift); BigInt_ShiftLeft(ref pResult2, shift); BigInt_ShiftLeft(ref input, shift); if (ptr2 != &input) { BigInt_Multiply2(out *ptr2, in input); } } uint num6; bool flag; bool flag2; if (cutoffMode == CutoffMode.Unique) { while (true) { num--; num6 = BigInt_DivideWithRemainder_MaxQuotient9(ref pResult2, in pResult); BigInt_Add(out var pResult7, in pResult2, in *ptr2); flag = BigInt_Compare(in pResult2, in input) < 0; flag2 = BigInt_Compare(in pResult7, in pResult) > 0; if (flag || flag2 || num == num2) { break; } *ptr = (byte)(48 + num6); ptr++; BigInt_Multiply10(ref pResult2); BigInt_Multiply10(ref input); if (ptr2 != &input) { BigInt_Multiply2(out *ptr2, in input); } } } else { flag = false; flag2 = false; while (true) { num--; num6 = BigInt_DivideWithRemainder_MaxQuotient9(ref pResult2, in pResult); if (pResult2.IsZero() || num == num2) { break; } *ptr = (byte)(48 + num6); ptr++; BigInt_Multiply10(ref pResult2); } } bool flag3 = flag; if (flag == flag2) { BigInt_Multiply2(ref pResult2); int num7 = BigInt_Compare(in pResult2, in pResult); flag3 = num7 < 0; if (num7 == 0) { flag3 = (num6 & 1) == 0; } } if (flag3) { *ptr = (byte)(48 + num6); ptr++; } else if (num6 == 9) { while (true) { if (ptr == pOutBuffer) { *ptr = 49; ptr++; pOutExponent++; break; } ptr--; if (*ptr != 57) { byte* intPtr = ptr; (*intPtr)++; ptr++; break; } } } else { *ptr = (byte)(48 + num6 + 1); ptr++; } return (uint)(ptr - pOutBuffer); } private unsafe static int FormatPositional(byte* pOutBuffer, uint bufferSize, ulong mantissa, int exponent, uint mantissaHighBitIdx, bool hasUnequalMargins, int precision) { uint num = bufferSize - 1; int pOutExponent; uint num2 = ((precision >= 0) ? Dragon4(mantissa, exponent, mantissaHighBitIdx, hasUnequalMargins, CutoffMode.FractionLength, (uint)precision, pOutBuffer, num, out pOutExponent) : Dragon4(mantissa, exponent, mantissaHighBitIdx, hasUnequalMargins, CutoffMode.Unique, 0u, pOutBuffer, num, out pOutExponent)); uint num3 = 0u; if (pOutExponent >= 0) { uint num4 = (uint)(pOutExponent + 1); if (num2 < num4) { if (num4 > num) { num4 = num; } for (; num2 < num4; num2++) { pOutBuffer[num2] = 48; } } else if (num2 > num4) { num3 = num2 - num4; uint num5 = num - num4 - 1; if (num3 > num5) { num3 = num5; } Unsafe.CopyBlock((void*)(pOutBuffer + num4 + 1), (void*)(pOutBuffer + num4), num3); pOutBuffer[num4] = 46; num2 = num4 + 1 + num3; } } else { if (num > 2) { uint num6 = (uint)(-pOutExponent - 1); uint num7 = num - 2; if (num6 > num7) { num6 = num7; } uint num8 = 2 + num6; num3 = num2; uint num9 = num - num8; if (num3 > num9) { num3 = num9; } Unsafe.CopyBlock((void*)(pOutBuffer + num8), (void*)pOutBuffer, num3); for (uint num10 = 2u; num10 < num8; num10++) { pOutBuffer[num10] = 48; } num3 += num6; num2 = num3; } if (num > 1) { pOutBuffer[1] = 46; num2++; } if (num != 0) { *pOutBuffer = 48; num2++; } } if (precision > (int)num3 && num2 < num) { if (num3 == 0) { pOutBuffer[num2++] = 46; } uint num11 = (uint)(num2 + (precision - (int)num3)); if (num11 > num) { num11 = num; } for (; num2 < num11; num2++) { pOutBuffer[num2] = 48; } } return (int)num2; } private unsafe static int FormatScientific(byte* pOutBuffer, uint bufferSize, ulong mantissa, int exponent, uint mantissaHighBitIdx, bool hasUnequalMargins, int precision) { int pOutExponent; uint num = ((precision >= 0) ? Dragon4(mantissa, exponent, mantissaHighBitIdx, hasUnequalMargins, CutoffMode.TotalLength, (uint)(precision + 1), pOutBuffer, bufferSize, out pOutExponent) : Dragon4(mantissa, exponent, mantissaHighBitIdx, hasUnequalMargins, CutoffMode.Unique, 0u, pOutBuffer, bufferSize, out pOutExponent)); byte* ptr = pOutBuffer; if (bufferSize > 1) { ptr++; bufferSize--; } uint num2 = num - 1; if (num2 != 0 && bufferSize > 1) { uint num3 = bufferSize - 2; if (num2 > num3) { num2 = num3; } Unsafe.CopyBlock((void*)(ptr + 1), (void*)ptr, num2); *ptr = 46; ptr += 1 + num2; bufferSize -= 1 + num2; } if (precision > (int)num2 && bufferSize > 1) { if (num2 == 0) { *ptr = 46; ptr++; bufferSize--; } uint num4 = (uint)(precision - num2); if (num4 > bufferSize - 1) { num4 = bufferSize - 1; } for (byte* ptr2 = ptr + num4; ptr < ptr2; ptr++) { *ptr = 48; } } if (bufferSize > 1) { byte* ptr3 = stackalloc byte[5]; *ptr3 = 101; if (pOutExponent >= 0) { ptr3[1] = 43; } else { ptr3[1] = 45; pOutExponent = -pOutExponent; } uint num5 = (uint)(pOutExponent / 100); uint num6 = (uint)((pOutExponent - num5 * 100) / 10); uint num7 = (uint)(pOutExponent - num5 * 100 - num6 * 10); ptr3[2] = (byte)(48 + num5); ptr3[3] = (byte)(48 + num6); ptr3[4] = (byte)(48 + num7); uint num8 = bufferSize - 1; uint num9 = ((5 < num8) ? 5u : num8); Unsafe.CopyBlock((void*)ptr, (void*)ptr3, num9); ptr += num9; bufferSize -= num9; } return (int)(ptr - pOutBuffer); } private unsafe static void FormatInfinityNaN(byte* dest, ref int destIndex, int destLength, ulong mantissa, bool isNegative, FormatOptions formatOptions) { int length = ((mantissa == 0L) ? (8 + (isNegative ? 1 : 0)) : 3); int alignAndSize = formatOptions.AlignAndSize; if (AlignLeft(dest, ref destIndex, destLength, alignAndSize, length)) { return; } if (mantissa == 0L) { if (isNegative) { if (destIndex >= destLength) { return; } dest[destIndex++] = 45; } for (int i = 0; i < 8; i++) { if (destIndex >= destLength) { return; } dest[destIndex++] = InfinityString[i]; } } else { for (int j = 0; j < 3; j++) { if (destIndex >= destLength) { return; } dest[destIndex++] = NanString[j]; } } AlignRight(dest, ref destIndex, destLength, alignAndSize, length); } [MethodImpl(MethodImplOptions.NoInlining)] priva
valheim_Data/Managed/Unity.Burst.Unsafe.dll
Decompiled a month agousing System; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; [assembly: AssemblyCompany("Microsoft Corporation")] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: InternalsVisibleTo("Unity.Burst")] [assembly: AssemblyFileVersion("4.0.0.0")] [assembly: AssemblyInformationalVersion("4.0.0.0")] [assembly: AssemblyTitle("Unity.Burst.Unsafe")] [assembly: AssemblyDescription("System.Runtime.CompilerServices.Unsafe")] [assembly: AssemblyMetadata(".NETFrameworkAssembly", "")] [assembly: AssemblyMetadata("Serviceable", "True")] [assembly: AssemblyCopyright("© Microsoft Corporation. All rights reserved.")] [assembly: AssemblyProduct("Microsoft® .NET Framework")] [assembly: CLSCompliant(false)] [assembly: CompilationRelaxations(8)] [assembly: AssemblyVersion("4.0.5.0")] namespace Unity.Burst { internal static class Unsafe : Object { [MethodImpl(256)] [NonVersionable] public unsafe static T Read<T>(void* source) { return System.Runtime.CompilerServices.Unsafe.Read<T>(source); } [MethodImpl(256)] [NonVersionable] public unsafe static T ReadUnaligned<T>(void* source) { return System.Runtime.CompilerServices.Unsafe.ReadUnaligned<T>(source); } [MethodImpl(256)] [NonVersionable] public static T ReadUnaligned<T>(ref byte source) { return System.Runtime.CompilerServices.Unsafe.ReadUnaligned<T>(ref source); } [MethodImpl(256)] [NonVersionable] public unsafe static void Write<T>(void* destination, T value) { System.Runtime.CompilerServices.Unsafe.Write(destination, value); } [MethodImpl(256)] [NonVersionable] public unsafe static void WriteUnaligned<T>(void* destination, T value) { System.Runtime.CompilerServices.Unsafe.WriteUnaligned(destination, value); } [MethodImpl(256)] [NonVersionable] public static void WriteUnaligned<T>(ref byte destination, T value) { System.Runtime.CompilerServices.Unsafe.WriteUnaligned(ref destination, value); } [MethodImpl(256)] [NonVersionable] public unsafe static void Copy<T>(void* destination, ref T source) { System.Runtime.CompilerServices.Unsafe.Write(destination, source); } [MethodImpl(256)] [NonVersionable] public unsafe static void Copy<T>(ref T destination, void* source) { destination = System.Runtime.CompilerServices.Unsafe.Read<T>(source); } [MethodImpl(256)] [NonVersionable] public unsafe static void* AsPointer<T>(ref T value) { return System.Runtime.CompilerServices.Unsafe.AsPointer(ref value); } [MethodImpl(256)] [NonVersionable] public static int SizeOf<T>() { return System.Runtime.CompilerServices.Unsafe.SizeOf<T>(); } [MethodImpl(256)] [NonVersionable] public unsafe static void CopyBlock(void* destination, void* source, uint byteCount) { // IL cpblk instruction System.Runtime.CompilerServices.Unsafe.CopyBlock(destination, source, byteCount); } [MethodImpl(256)] [NonVersionable] public static void CopyBlock(ref byte destination, ref byte source, uint byteCount) { // IL cpblk instruction System.Runtime.CompilerServices.Unsafe.CopyBlock(ref destination, ref source, byteCount); } [MethodImpl(256)] [NonVersionable] public unsafe static void CopyBlockUnaligned(void* destination, void* source, uint byteCount) { // IL cpblk instruction System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(destination, source, byteCount); } [MethodImpl(256)] [NonVersionable] public static void CopyBlockUnaligned(ref byte destination, ref byte source, uint byteCount) { // IL cpblk instruction System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(ref destination, ref source, byteCount); } [MethodImpl(256)] [NonVersionable] public unsafe static void InitBlock(void* startAddress, byte value, uint byteCount) { // IL initblk instruction System.Runtime.CompilerServices.Unsafe.InitBlock(startAddress, value, byteCount); } [MethodImpl(256)] [NonVersionable] public static void InitBlock(ref byte startAddress, byte value, uint byteCount) { // IL initblk instruction System.Runtime.CompilerServices.Unsafe.InitBlock(ref startAddress, value, byteCount); } [MethodImpl(256)] [NonVersionable] public unsafe static void InitBlockUnaligned(void* startAddress, byte value, uint byteCount) { // IL initblk instruction System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(startAddress, value, byteCount); } [MethodImpl(256)] [NonVersionable] public static void InitBlockUnaligned(ref byte startAddress, byte value, uint byteCount) { // IL initblk instruction System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(ref startAddress, value, byteCount); } [MethodImpl(256)] [NonVersionable] public static T As<T>(object o) where T : class { return (T)o; } [MethodImpl(256)] [NonVersionable] public unsafe static ref T AsRef<T>(void* source) { return ref *(T*)source; } [MethodImpl(256)] [NonVersionable] public static ref T AsRef<T>(in T source) { return ref source; } [MethodImpl(256)] [NonVersionable] public static ref TTo As<TFrom, TTo>(ref TFrom source) { return ref System.Runtime.CompilerServices.Unsafe.As<TFrom, TTo>(ref source); } [MethodImpl(256)] [NonVersionable] public static ref T Unbox<T>(object box) where T : struct, ValueType { return ref (T)box; } [MethodImpl(256)] [NonVersionable] public static ref T Add<T>(ref T source, int elementOffset) { return ref System.Runtime.CompilerServices.Unsafe.Add(ref source, elementOffset); } [MethodImpl(256)] [NonVersionable] public unsafe static void* Add<T>(void* source, int elementOffset) { return (byte*)source + (nint)elementOffset * (nint)System.Runtime.CompilerServices.Unsafe.SizeOf<T>(); } [MethodImpl(256)] [NonVersionable] public static ref T Add<T>(ref T source, System.IntPtr elementOffset) { return ref System.Runtime.CompilerServices.Unsafe.Add(ref source, elementOffset); } [MethodImpl(256)] [NonVersionable] public static ref T AddByteOffset<T>(ref T source, System.IntPtr byteOffset) { return ref System.Runtime.CompilerServices.Unsafe.AddByteOffset(ref source, byteOffset); } [MethodImpl(256)] [NonVersionable] public static ref T Subtract<T>(ref T source, int elementOffset) { return ref System.Runtime.CompilerServices.Unsafe.Subtract(ref source, elementOffset); } [MethodImpl(256)] [NonVersionable] public unsafe static void* Subtract<T>(void* source, int elementOffset) { return (byte*)source - (nint)elementOffset * (nint)System.Runtime.CompilerServices.Unsafe.SizeOf<T>(); } [MethodImpl(256)] [NonVersionable] public static ref T Subtract<T>(ref T source, System.IntPtr elementOffset) { return ref System.Runtime.CompilerServices.Unsafe.Subtract(ref source, elementOffset); } [MethodImpl(256)] [NonVersionable] public static ref T SubtractByteOffset<T>(ref T source, System.IntPtr byteOffset) { return ref System.Runtime.CompilerServices.Unsafe.SubtractByteOffset(ref source, byteOffset); } [MethodImpl(256)] [NonVersionable] public static System.IntPtr ByteOffset<T>(ref T origin, ref T target) { return System.Runtime.CompilerServices.Unsafe.ByteOffset(target: ref target, origin: ref origin); } [MethodImpl(256)] [NonVersionable] public static bool AreSame<T>(ref T left, ref T right) { return System.Runtime.CompilerServices.Unsafe.AreSame(ref left, ref right); } [MethodImpl(256)] [NonVersionable] public static bool IsAddressGreaterThan<T>(ref T left, ref T right) { return System.Runtime.CompilerServices.Unsafe.IsAddressGreaterThan(ref left, ref right); } [MethodImpl(256)] [NonVersionable] public static bool IsAddressLessThan<T>(ref T left, ref T right) { return System.Runtime.CompilerServices.Unsafe.IsAddressLessThan(ref left, ref right); } } } namespace System.Runtime.Versioning { [AttributeUsage(/*Could not decode attribute arguments.*/)] internal sealed class NonVersionableAttribute : Attribute { } } namespace System.Runtime.CompilerServices { internal sealed class IsReadOnlyAttribute : Attribute { } }
valheim_Data/Managed/Unity.Mathematics.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using Unity.IL2CPP.CompilerServices; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: InternalsVisibleTo("Unity.Mathematics.Tests")] [assembly: InternalsVisibleTo("Unity.Mathematics.PerformanceTests")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] [CompilerGenerated] [EditorBrowsable(EditorBrowsableState.Never)] [GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)] internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1 { private struct MonoScriptData { public byte[] FilePathsData; public byte[] TypesData; public int TotalTypes; public int TotalFiles; public bool IsEditorOnly; } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static MonoScriptData Get() { return new MonoScriptData { FilePathsData = new byte[8823] { 0, 0, 0, 2, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 71, 101, 111, 109, 101, 116, 114, 121, 92, 77, 105, 110, 77, 97, 120, 65, 65, 66, 66, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 71, 101, 111, 109, 101, 116, 114, 121, 92, 80, 108, 97, 110, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 121, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 73, 108, 50, 67, 112, 112, 69, 97, 103, 101, 114, 83, 116, 97, 116, 105, 99, 67, 108, 97, 115, 115, 67, 111, 110, 115, 116, 114, 117, 99, 116, 105, 111, 110, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 99, 101, 108, 108, 117, 108, 97, 114, 50, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 99, 101, 108, 108, 117, 108, 97, 114, 50, 120, 50, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 99, 101, 108, 108, 117, 108, 97, 114, 50, 120, 50, 120, 50, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 99, 101, 108, 108, 117, 108, 97, 114, 51, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 99, 108, 97, 115, 115, 105, 99, 110, 111, 105, 115, 101, 50, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 99, 108, 97, 115, 115, 105, 99, 110, 111, 105, 115, 101, 51, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 99, 108, 97, 115, 115, 105, 99, 110, 111, 105, 115, 101, 52, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 99, 111, 109, 109, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 110, 111, 105, 115, 101, 50, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 110, 111, 105, 115, 101, 51, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 110, 111, 105, 115, 101, 51, 68, 103, 114, 97, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 110, 111, 105, 115, 101, 52, 68, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 78, 111, 105, 115, 101, 92, 112, 115, 114, 100, 110, 111, 105, 115, 101, 50, 68, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 96, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 80, 114, 111, 112, 101, 114, 116, 121, 65, 116, 116, 114, 105, 98, 117, 116, 101, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 94, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 97, 102, 102, 105, 110, 101, 95, 116, 114, 97, 110, 115, 102, 111, 114, 109, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 50, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 50, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 50, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 51, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 51, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 51, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 52, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 52, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 98, 111, 111, 108, 52, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 50, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 50, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 50, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 51, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 51, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 51, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 52, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 52, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 91, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 100, 111, 117, 98, 108, 101, 52, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 50, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 50, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 50, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 51, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 51, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 51, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 52, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 52, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 90, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 102, 108, 111, 97, 116, 52, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 82, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 104, 97, 108, 102, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 104, 97, 108, 102, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 104, 97, 108, 102, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 104, 97, 108, 102, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 50, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 50, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 50, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 51, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 51, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 51, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 86, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 52, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 52, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 105, 110, 116, 52, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 82, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 109, 97, 116, 104, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 99, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 109, 97, 116, 104, 95, 117, 110, 105, 116, 121, 95, 99, 111, 110, 118, 101, 114, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 84, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 109, 97, 116, 114, 105, 120, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 109, 97, 116, 114, 105, 120, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 88, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 113, 117, 97, 116, 101, 114, 110, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 114, 97, 110, 100, 111, 109, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 93, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 114, 105, 103, 105, 100, 95, 116, 114, 97, 110, 115, 102, 111, 114, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 115, 118, 100, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 50, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 50, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 50, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 51, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 51, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 51, 120, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 87, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 52, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 52, 120, 50, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 52, 120, 51, 46, 103, 101, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 89, 92, 76, 105, 98, 114, 97, 114, 121, 92, 80, 97, 99, 107, 97, 103, 101, 67, 97, 99, 104, 101, 92, 99, 111, 109, 46, 117, 110, 105, 116, 121, 46, 109, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 64, 56, 48, 49, 55, 98, 53, 48, 55, 99, 99, 55, 52, 92, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 92, 117, 105, 110, 116, 52, 120, 52, 46, 103, 101, 110, 46, 99, 115 }, TypesData = new byte[5559] { 0, 0, 0, 0, 37, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 71, 101, 111, 109, 101, 116, 114, 121, 124, 77, 105, 110, 77, 97, 120, 65, 65, 66, 66, 0, 0, 0, 0, 31, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 71, 101, 111, 109, 101, 116, 114, 121, 124, 77, 97, 116, 104, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 71, 101, 111, 109, 101, 116, 114, 121, 124, 80, 108, 97, 110, 101, 0, 0, 0, 0, 73, 85, 110, 105, 116, 121, 46, 73, 76, 50, 67, 80, 80, 46, 67, 111, 109, 112, 105, 108, 101, 114, 83, 101, 114, 118, 105, 99, 101, 115, 124, 73, 108, 50, 67, 112, 112, 69, 97, 103, 101, 114, 83, 116, 97, 116, 105, 99, 67, 108, 97, 115, 115, 67, 111, 110, 115, 116, 114, 117, 99, 116, 105, 111, 110, 65, 116, 116, 114, 105, 98, 117, 116, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 1, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 110, 111, 105, 115, 101, 0, 0, 0, 0, 40, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 80, 111, 115, 116, 78, 111, 114, 109, 97, 108, 105, 122, 101, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 41, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 68, 111, 78, 111, 116, 78, 111, 114, 109, 97, 108, 105, 122, 101, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 33, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 65, 102, 102, 105, 110, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 50, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 50, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 50, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 50, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 51, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 51, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 51, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 51, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 52, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 52, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 52, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 98, 111, 111, 108, 52, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 50, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 50, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 50, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 50, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 51, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 51, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 51, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 51, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 52, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 52, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 52, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 27, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 100, 111, 117, 98, 108, 101, 52, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 1, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 50, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 50, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 50, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 50, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 1, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 51, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 51, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 51, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 51, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 1, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 52, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 52, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 52, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 52, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 104, 97, 108, 102, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 104, 97, 108, 102, 50, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 104, 97, 108, 102, 51, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 104, 97, 108, 102, 52, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 50, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 50, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 50, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 50, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 51, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 51, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 51, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 51, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 52, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 52, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 52, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 105, 110, 116, 52, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 38, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 109, 97, 116, 104, 124, 76, 111, 110, 103, 68, 111, 117, 98, 108, 101, 85, 110, 105, 111, 110, 1, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 50, 1, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 51, 1, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 52, 1, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 113, 117, 97, 116, 101, 114, 110, 105, 111, 110, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 52, 120, 52, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 50, 120, 50, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 51, 120, 51, 1, 0, 0, 0, 26, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 102, 108, 111, 97, 116, 52, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 1, 0, 0, 0, 28, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 113, 117, 97, 116, 101, 114, 110, 105, 111, 110, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 24, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 82, 97, 110, 100, 111, 109, 0, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 82, 105, 103, 105, 100, 84, 114, 97, 110, 115, 102, 111, 114, 109, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 21, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 115, 118, 100, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 50, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 50, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 50, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 50, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 51, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 51, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 51, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 51, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 23, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 52, 1, 0, 0, 0, 32, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 46, 124, 68, 101, 98, 117, 103, 103, 101, 114, 80, 114, 111, 120, 121, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 52, 120, 50, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 52, 120, 51, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104, 0, 0, 0, 0, 25, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 117, 105, 110, 116, 52, 120, 52, 1, 0, 0, 0, 22, 85, 110, 105, 116, 121, 46, 77, 97, 116, 104, 101, 109, 97, 116, 105, 99, 115, 124, 109, 97, 116, 104 }, TotalFiles = 90, TotalTypes = 185, IsEditorOnly = false }; } } namespace Unity.IL2CPP.CompilerServices { [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = false, AllowMultiple = false)] internal class Il2CppEagerStaticClassConstructionAttribute : Attribute { } } namespace Unity.Mathematics { [Il2CppEagerStaticClassConstruction] public static class noise { public static float2 cellular(float2 P) { float2 float5 = mod289(math.floor(P)); float2 obj = math.frac(P); float3 float6 = math.float3(-1f, 0f, 1f); float3 float7 = math.float3(-0.5f, 0.5f, 1.5f); float3 float8 = permute(float5.x + float6); float3 obj2 = permute(float8.x + float5.y + float6); float3 float9 = math.frac(obj2 * (1f / 7f)) - 0.42857143f; float3 float10 = mod7(math.floor(obj2 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float3 float11 = obj.x + 0.5f + 1f * float9; float3 float12 = obj.y - float7 + 1f * float10; float3 x = float11 * float11 + float12 * float12; float3 obj3 = permute(float8.y + float5.y + float6); float9 = math.frac(obj3 * (1f / 7f)) - 0.42857143f; float10 = mod7(math.floor(obj3 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float11 = obj.x - 0.5f + 1f * float9; float12 = obj.y - float7 + 1f * float10; float3 y = float11 * float11 + float12 * float12; float3 obj4 = permute(float8.z + float5.y + float6); float9 = math.frac(obj4 * (1f / 7f)) - 0.42857143f; float10 = mod7(math.floor(obj4 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float11 = obj.x - 1.5f + 1f * float9; float12 = obj.y - float7 + 1f * float10; float3 y2 = float11 * float11 + float12 * float12; float3 x2 = math.min(x, y); y = math.max(x, y); y = math.min(y, y2); x = math.min(x2, y); y = math.max(x2, y); x.xy = ((x.x < x.y) ? x.xy : x.yx); x.xz = ((x.x < x.z) ? x.xz : x.zx); x.yz = math.min(x.yz, y.yz); x.y = math.min(x.y, x.z); x.y = math.min(x.y, y.x); return math.sqrt(x.xy); } public static float2 cellular2x2(float2 P) { float2 float5 = mod289(math.floor(P)); float2 obj = math.frac(P); float4 float6 = obj.x + math.float4(-0.5f, -1.5f, -0.5f, -1.5f); float4 float7 = obj.y + math.float4(-0.5f, -0.5f, -1.5f, -1.5f); float4 obj2 = permute(permute(float5.x + math.float4(0f, 1f, 0f, 1f)) + float5.y + math.float4(0f, 0f, 1f, 1f)); float4 float8 = mod7(obj2) * (1f / 7f) + 1f / 14f; float4 float9 = mod7(math.floor(obj2 * (1f / 7f))) * (1f / 7f) + 1f / 14f; float4 obj3 = float6 + 0.8f * float8; float4 float10 = float7 + 0.8f * float9; float4 float11 = obj3 * obj3 + float10 * float10; float11.xy = ((float11.x < float11.y) ? float11.xy : float11.yx); float11.xz = ((float11.x < float11.z) ? float11.xz : float11.zx); float11.xw = ((float11.x < float11.w) ? float11.xw : float11.wx); float11.y = math.min(float11.y, float11.z); float11.y = math.min(float11.y, float11.w); return math.sqrt(float11.xy); } public static float2 cellular2x2x2(float3 P) { float3 float5 = mod289(math.floor(P)); float3 float6 = math.frac(P); float4 float7 = float6.x + math.float4(0f, -1f, 0f, -1f); float4 float8 = float6.y + math.float4(0f, 0f, -1f, -1f); float4 obj = permute(permute(float5.x + math.float4(0f, 1f, 0f, 1f)) + float5.y + math.float4(0f, 0f, 1f, 1f)); float4 float9 = permute(obj + float5.z); float4 obj2 = permute(obj + float5.z + math.float4(1f, 1f, 1f, 1f)); float4 float10 = math.frac(float9 * (1f / 7f)) - 0.42857143f; float4 float11 = mod7(math.floor(float9 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float4 float12 = math.floor(float9 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float4 float13 = math.frac(obj2 * (1f / 7f)) - 0.42857143f; float4 float14 = mod7(math.floor(obj2 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float4 float15 = math.floor(obj2 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float4 float16 = float7 + 0.8f * float10; float4 float17 = float8 + 0.8f * float11; float4 float18 = float6.z + 0.8f * float12; float4 float19 = float7 + 0.8f * float13; float4 float20 = float8 + 0.8f * float14; float4 float21 = float6.z - 1f + 0.8f * float15; float4 x = float16 * float16 + float17 * float17 + float18 * float18; float4 y = float19 * float19 + float20 * float20 + float21 * float21; float4 float22 = math.min(x, y); y = math.max(x, y); float22.xy = ((float22.x < float22.y) ? float22.xy : float22.yx); float22.xz = ((float22.x < float22.z) ? float22.xz : float22.zx); float22.xw = ((float22.x < float22.w) ? float22.xw : float22.wx); float22.yzw = math.min(float22.yzw, y.yzw); float22.y = math.min(float22.y, float22.z); float22.y = math.min(float22.y, float22.w); float22.y = math.min(float22.y, y.x); return math.sqrt(float22.xy); } public static float2 cellular(float3 P) { float3 float5 = mod289(math.floor(P)); float3 obj = math.frac(P) - 0.5f; float3 float6 = obj.x + math.float3(1f, 0f, -1f); float3 float7 = obj.y + math.float3(1f, 0f, -1f); float3 float8 = obj.z + math.float3(1f, 0f, -1f); float3 obj2 = permute(float5.x + math.float3(-1f, 0f, 1f)); float3 float9 = permute(obj2 + float5.y - 1f); float3 float10 = permute(obj2 + float5.y); float3 obj3 = permute(obj2 + float5.y + 1f); float3 float11 = permute(float9 + float5.z - 1f); float3 float12 = permute(float9 + float5.z); float3 float13 = permute(float9 + float5.z + 1f); float3 float14 = permute(float10 + float5.z - 1f); float3 float15 = permute(float10 + float5.z); float3 float16 = permute(float10 + float5.z + 1f); float3 float17 = permute(obj3 + float5.z - 1f); float3 float18 = permute(obj3 + float5.z); float3 obj4 = permute(obj3 + float5.z + 1f); float3 float19 = math.frac(float11 * (1f / 7f)) - 0.42857143f; float3 float20 = mod7(math.floor(float11 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float3 float21 = math.floor(float11 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float3 float22 = math.frac(float12 * (1f / 7f)) - 0.42857143f; float3 float23 = mod7(math.floor(float12 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float3 float24 = math.floor(float12 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float3 float25 = math.frac(float13 * (1f / 7f)) - 0.42857143f; float3 float26 = mod7(math.floor(float13 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float3 float27 = math.floor(float13 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float3 float28 = math.frac(float14 * (1f / 7f)) - 0.42857143f; float3 float29 = mod7(math.floor(float14 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float3 float30 = math.floor(float14 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float3 float31 = math.frac(float15 * (1f / 7f)) - 0.42857143f; float3 float32 = mod7(math.floor(float15 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float3 float33 = math.floor(float15 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float3 float34 = math.frac(float16 * (1f / 7f)) - 0.42857143f; float3 float35 = mod7(math.floor(float16 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float3 float36 = math.floor(float16 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float3 float37 = math.frac(float17 * (1f / 7f)) - 0.42857143f; float3 float38 = mod7(math.floor(float17 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float3 float39 = math.floor(float17 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float3 float40 = math.frac(float18 * (1f / 7f)) - 0.42857143f; float3 float41 = mod7(math.floor(float18 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float3 float42 = math.floor(float18 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float3 float43 = math.frac(obj4 * (1f / 7f)) - 0.42857143f; float3 float44 = mod7(math.floor(obj4 * (1f / 7f))) * (1f / 7f) - 0.42857143f; float3 float45 = math.floor(obj4 * (1f / 49f)) * (1f / 6f) - 5f / 12f; float3 float46 = float6 + 1f * float19; float3 float47 = float7.x + 1f * float20; float3 float48 = float8.x + 1f * float21; float3 float49 = float6 + 1f * float22; float3 float50 = float7.x + 1f * float23; float3 float51 = float8.y + 1f * float24; float3 float52 = float6 + 1f * float25; float3 float53 = float7.x + 1f * float26; float3 float54 = float8.z + 1f * float27; float3 float55 = float6 + 1f * float28; float3 float56 = float7.y + 1f * float29; float3 float57 = float8.x + 1f * float30; float3 float58 = float6 + 1f * float31; float3 float59 = float7.y + 1f * float32; float3 float60 = float8.y + 1f * float33; float3 float61 = float6 + 1f * float34; float3 float62 = float7.y + 1f * float35; float3 float63 = float8.z + 1f * float36; float3 float64 = float6 + 1f * float37; float3 float65 = float7.z + 1f * float38; float3 float66 = float8.x + 1f * float39; float3 float67 = float6 + 1f * float40; float3 float68 = float7.z + 1f * float41; float3 float69 = float8.y + 1f * float42; float3 obj5 = float6 + 1f * float43; float3 float70 = float7.z + 1f * float44; float3 float71 = float8.z + 1f * float45; float3 x = float46 * float46 + float47 * float47 + float48 * float48; float3 y = float49 * float49 + float50 * float50 + float51 * float51; float3 y2 = float52 * float52 + float53 * float53 + float54 * float54; float3 x2 = float55 * float55 + float56 * float56 + float57 * float57; float3 y3 = float58 * float58 + float59 * float59 + float60 * float60; float3 y4 = float61 * float61 + float62 * float62 + float63 * float63; float3 x3 = float64 * float64 + float65 * float65 + float66 * float66; float3 y5 = float67 * float67 + float68 * float68 + float69 * float69; float3 y6 = obj5 * obj5 + float70 * float70 + float71 * float71; float3 x4 = math.min(x, y); y = math.max(x, y); x = math.min(x4, y2); y2 = math.max(x4, y2); y = math.min(y, y2); float3 x5 = math.min(x2, y3); y3 = math.max(x2, y3); x2 = math.min(x5, y4); y4 = math.max(x5, y4); y3 = math.min(y3, y4); float3 x6 = math.min(x3, y5); y5 = math.max(x3, y5); x3 = math.min(x6, y6); y6 = math.max(x6, y6); y5 = math.min(y5, y6); float3 x7 = math.min(x, x2); x2 = math.max(x, x2); x = math.min(x7, x3); x3 = math.max(x7, x3); x.xy = ((x.x < x.y) ? x.xy : x.yx); x.xz = ((x.x < x.z) ? x.xz : x.zx); y = math.min(y, x2); y = math.min(y, y3); y = math.min(y, x3); y = math.min(y, y5); x.yz = math.min(x.yz, y.xy); x.y = math.min(x.y, y.z); x.y = math.min(x.y, x.z); return math.sqrt(x.xy); } public static float cnoise(float2 P) { float4 x = math.floor(P.xyxy) + math.float4(0f, 0f, 1f, 1f); float4 float5 = math.frac(P.xyxy) - math.float4(0f, 0f, 1f, 1f); x = mod289(x); float4 xzxz = x.xzxz; float4 yyww = x.yyww; float4 xzxz2 = float5.xzxz; float4 yyww2 = float5.yyww; float4 obj = math.frac(permute(permute(xzxz) + yyww) * (1f / 41f)) * 2f - 1f; float4 float6 = math.abs(obj) - 0.5f; float4 float7 = math.floor(obj + 0.5f); float4 obj2 = obj - float7; float2 float8 = math.float2(obj2.x, float6.x); float2 float9 = math.float2(obj2.y, float6.y); float2 float10 = math.float2(obj2.z, float6.z); float2 float11 = math.float2(obj2.w, float6.w); float4 float12 = taylorInvSqrt(math.float4(math.dot(float8, float8), math.dot(float10, float10), math.dot(float9, float9), math.dot(float11, float11))); float8 *= float12.x; float10 *= float12.y; float9 *= float12.z; float11 *= float12.w; float x2 = math.dot(float8, math.float2(xzxz2.x, yyww2.x)); float x3 = math.dot(float9, math.float2(xzxz2.y, yyww2.y)); float y = math.dot(float10, math.float2(xzxz2.z, yyww2.z)); float y2 = math.dot(float11, math.float2(xzxz2.w, yyww2.w)); float2 float13 = fade(float5.xy); float2 float14 = math.lerp(math.float2(x2, y), math.float2(x3, y2), float13.x); float num = math.lerp(float14.x, float14.y, float13.y); return 2.3f * num; } public static float pnoise(float2 P, float2 rep) { float4 x = math.floor(P.xyxy) + math.float4(0f, 0f, 1f, 1f); float4 float5 = math.frac(P.xyxy) - math.float4(0f, 0f, 1f, 1f); x = math.fmod(x, rep.xyxy); x = mod289(x); float4 xzxz = x.xzxz; float4 yyww = x.yyww; float4 xzxz2 = float5.xzxz; float4 yyww2 = float5.yyww; float4 obj = math.frac(permute(permute(xzxz) + yyww) * (1f / 41f)) * 2f - 1f; float4 float6 = math.abs(obj) - 0.5f; float4 float7 = math.floor(obj + 0.5f); float4 obj2 = obj - float7; float2 float8 = math.float2(obj2.x, float6.x); float2 float9 = math.float2(obj2.y, float6.y); float2 float10 = math.float2(obj2.z, float6.z); float2 float11 = math.float2(obj2.w, float6.w); float4 float12 = taylorInvSqrt(math.float4(math.dot(float8, float8), math.dot(float10, float10), math.dot(float9, float9), math.dot(float11, float11))); float8 *= float12.x; float10 *= float12.y; float9 *= float12.z; float11 *= float12.w; float x2 = math.dot(float8, math.float2(xzxz2.x, yyww2.x)); float x3 = math.dot(float9, math.float2(xzxz2.y, yyww2.y)); float y = math.dot(float10, math.float2(xzxz2.z, yyww2.z)); float y2 = math.dot(float11, math.float2(xzxz2.w, yyww2.w)); float2 float13 = fade(float5.xy); float2 float14 = math.lerp(math.float2(x2, y), math.float2(x3, y2), float13.x); float num = math.lerp(float14.x, float14.y, float13.y); return 2.3f * num; } public static float cnoise(float3 P) { float3 float5 = math.floor(P); float3 x = float5 + math.float3(1f); float5 = mod289(float5); x = mod289(x); float3 float6 = math.frac(P); float3 y = float6 - math.float3(1f); float4 x2 = math.float4(float5.x, x.x, float5.x, x.x); float4 float7 = math.float4(float5.yy, x.yy); float4 zzzz = float5.zzzz; float4 zzzz2 = x.zzzz; float4 obj = permute(permute(x2) + float7); float4 float8 = permute(obj + zzzz); float4 obj2 = permute(obj + zzzz2); float4 x3 = float8 * (1f / 7f); float4 x4 = math.frac(math.floor(x3) * (1f / 7f)) - 0.5f; x3 = math.frac(x3); float4 threshold = math.float4(0.5f) - math.abs(x3) - math.abs(x4); float4 float9 = math.step(threshold, math.float4(0f)); x3 -= float9 * (math.step(0f, x3) - 0.5f); x4 -= float9 * (math.step(0f, x4) - 0.5f); float4 x5 = obj2 * (1f / 7f); float4 x6 = math.frac(math.floor(x5) * (1f / 7f)) - 0.5f; x5 = math.frac(x5); float4 threshold2 = math.float4(0.5f) - math.abs(x5) - math.abs(x6); float4 float10 = math.step(threshold2, math.float4(0f)); x5 -= float10 * (math.step(0f, x5) - 0.5f); x6 -= float10 * (math.step(0f, x6) - 0.5f); float3 float11 = math.float3(x3.x, x4.x, threshold.x); float3 float12 = math.float3(x3.y, x4.y, threshold.y); float3 float13 = math.float3(x3.z, x4.z, threshold.z); float3 float14 = math.float3(x3.w, x4.w, threshold.w); float3 float15 = math.float3(x5.x, x6.x, threshold2.x); float3 float16 = math.float3(x5.y, x6.y, threshold2.y); float3 float17 = math.float3(x5.z, x6.z, threshold2.z); float3 float18 = math.float3(x5.w, x6.w, threshold2.w); float4 float19 = taylorInvSqrt(math.float4(math.dot(float11, float11), math.dot(float13, float13), math.dot(float12, float12), math.dot(float14, float14))); float11 *= float19.x; float13 *= float19.y; float12 *= float19.z; float14 *= float19.w; float4 float20 = taylorInvSqrt(math.float4(math.dot(float15, float15), math.dot(float17, float17), math.dot(float16, float16), math.dot(float18, float18))); float15 *= float20.x; float17 *= float20.y; float16 *= float20.z; float18 *= float20.w; float x7 = math.dot(float11, float6); float y2 = math.dot(float12, math.float3(y.x, float6.yz)); float z = math.dot(float13, math.float3(float6.x, y.y, float6.z)); float w = math.dot(float14, math.float3(y.xy, float6.z)); float x8 = math.dot(float15, math.float3(float6.xy, y.z)); float y3 = math.dot(float16, math.float3(y.x, float6.y, y.z)); float z2 = math.dot(float17, math.float3(float6.x, y.yz)); float w2 = math.dot(float18, y); float3 float21 = fade(float6); float4 float22 = math.lerp(math.float4(x7, y2, z, w), math.float4(x8, y3, z2, w2), float21.z); float2 float23 = math.lerp(float22.xy, float22.zw, float21.y); float num = math.lerp(float23.x, float23.y, float21.x); return 2.2f * num; } public static float pnoise(float3 P, float3 rep) { float3 float5 = math.fmod(math.floor(P), rep); float3 x = math.fmod(float5 + math.float3(1f), rep); float5 = mod289(float5); x = mod289(x); float3 float6 = math.frac(P); float3 y = float6 - math.float3(1f); float4 x2 = math.float4(float5.x, x.x, float5.x, x.x); float4 float7 = math.float4(float5.yy, x.yy); float4 zzzz = float5.zzzz; float4 zzzz2 = x.zzzz; float4 obj = permute(permute(x2) + float7); float4 float8 = permute(obj + zzzz); float4 obj2 = permute(obj + zzzz2); float4 x3 = float8 * (1f / 7f); float4 x4 = math.frac(math.floor(x3) * (1f / 7f)) - 0.5f; x3 = math.frac(x3); float4 threshold = math.float4(0.5f) - math.abs(x3) - math.abs(x4); float4 float9 = math.step(threshold, math.float4(0f)); x3 -= float9 * (math.step(0f, x3) - 0.5f); x4 -= float9 * (math.step(0f, x4) - 0.5f); float4 x5 = obj2 * (1f / 7f); float4 x6 = math.frac(math.floor(x5) * (1f / 7f)) - 0.5f; x5 = math.frac(x5); float4 threshold2 = math.float4(0.5f) - math.abs(x5) - math.abs(x6); float4 float10 = math.step(threshold2, math.float4(0f)); x5 -= float10 * (math.step(0f, x5) - 0.5f); x6 -= float10 * (math.step(0f, x6) - 0.5f); float3 float11 = math.float3(x3.x, x4.x, threshold.x); float3 float12 = math.float3(x3.y, x4.y, threshold.y); float3 float13 = math.float3(x3.z, x4.z, threshold.z); float3 float14 = math.float3(x3.w, x4.w, threshold.w); float3 float15 = math.float3(x5.x, x6.x, threshold2.x); float3 float16 = math.float3(x5.y, x6.y, threshold2.y); float3 float17 = math.float3(x5.z, x6.z, threshold2.z); float3 float18 = math.float3(x5.w, x6.w, threshold2.w); float4 float19 = taylorInvSqrt(math.float4(math.dot(float11, float11), math.dot(float13, float13), math.dot(float12, float12), math.dot(float14, float14))); float11 *= float19.x; float13 *= float19.y; float12 *= float19.z; float14 *= float19.w; float4 float20 = taylorInvSqrt(math.float4(math.dot(float15, float15), math.dot(float17, float17), math.dot(float16, float16), math.dot(float18, float18))); float15 *= float20.x; float17 *= float20.y; float16 *= float20.z; float18 *= float20.w; float x7 = math.dot(float11, float6); float y2 = math.dot(float12, math.float3(y.x, float6.yz)); float z = math.dot(float13, math.float3(float6.x, y.y, float6.z)); float w = math.dot(float14, math.float3(y.xy, float6.z)); float x8 = math.dot(float15, math.float3(float6.xy, y.z)); float y3 = math.dot(float16, math.float3(y.x, float6.y, y.z)); float z2 = math.dot(float17, math.float3(float6.x, y.yz)); float w2 = math.dot(float18, y); float3 float21 = fade(float6); float4 float22 = math.lerp(math.float4(x7, y2, z, w), math.float4(x8, y3, z2, w2), float21.z); float2 float23 = math.lerp(float22.xy, float22.zw, float21.y); float num = math.lerp(float23.x, float23.y, float21.x); return 2.2f * num; } public static float cnoise(float4 P) { float4 float5 = math.floor(P); float4 x = float5 + 1f; float5 = mod289(float5); x = mod289(x); float4 float6 = math.frac(P); float4 y = float6 - 1f; float4 x2 = math.float4(float5.x, x.x, float5.x, x.x); float4 float7 = math.float4(float5.yy, x.yy); float4 float8 = math.float4(float5.zzzz); float4 float9 = math.float4(x.zzzz); float4 float10 = math.float4(float5.wwww); float4 float11 = math.float4(x.wwww); float4 obj = permute(permute(x2) + float7); float4 float12 = permute(obj + float8); float4 obj2 = permute(obj + float9); float4 float13 = permute(float12 + float10); float4 float14 = permute(float12 + float11); float4 float15 = permute(obj2 + float10); float4 obj3 = permute(obj2 + float11); float4 x3 = float13 * (1f / 7f); float4 x4 = math.floor(x3) * (1f / 7f); float4 x5 = math.floor(x4) * (1f / 6f); x3 = math.frac(x3) - 0.5f; x4 = math.frac(x4) - 0.5f; x5 = math.frac(x5) - 0.5f; float4 threshold = math.float4(0.75f) - math.abs(x3) - math.abs(x4) - math.abs(x5); float4 float16 = math.step(threshold, math.float4(0f)); x3 -= float16 * (math.step(0f, x3) - 0.5f); x4 -= float16 * (math.step(0f, x4) - 0.5f); float4 x6 = float14 * (1f / 7f); float4 x7 = math.floor(x6) * (1f / 7f); float4 x8 = math.floor(x7) * (1f / 6f); x6 = math.frac(x6) - 0.5f; x7 = math.frac(x7) - 0.5f; x8 = math.frac(x8) - 0.5f; float4 threshold2 = math.float4(0.75f) - math.abs(x6) - math.abs(x7) - math.abs(x8); float4 float17 = math.step(threshold2, math.float4(0f)); x6 -= float17 * (math.step(0f, x6) - 0.5f); x7 -= float17 * (math.step(0f, x7) - 0.5f); float4 x9 = float15 * (1f / 7f); float4 x10 = math.floor(x9) * (1f / 7f); float4 x11 = math.floor(x10) * (1f / 6f); x9 = math.frac(x9) - 0.5f; x10 = math.frac(x10) - 0.5f; x11 = math.frac(x11) - 0.5f; float4 threshold3 = math.float4(0.75f) - math.abs(x9) - math.abs(x10) - math.abs(x11); float4 float18 = math.step(threshold3, math.float4(0f)); x9 -= float18 * (math.step(0f, x9) - 0.5f); x10 -= float18 * (math.step(0f, x10) - 0.5f); float4 x12 = obj3 * (1f / 7f); float4 x13 = math.floor(x12) * (1f / 7f); float4 x14 = math.floor(x13) * (1f / 6f); x12 = math.frac(x12) - 0.5f; x13 = math.frac(x13) - 0.5f; x14 = math.frac(x14) - 0.5f; float4 threshold4 = math.float4(0.75f) - math.abs(x12) - math.abs(x13) - math.abs(x14); float4 float19 = math.step(threshold4, math.float4(0f)); x12 -= float19 * (math.step(0f, x12) - 0.5f); x13 -= float19 * (math.step(0f, x13) - 0.5f); float4 float20 = math.float4(x3.x, x4.x, x5.x, threshold.x); float4 float21 = math.float4(x3.y, x4.y, x5.y, threshold.y); float4 float22 = math.float4(x3.z, x4.z, x5.z, threshold.z); float4 float23 = math.float4(x3.w, x4.w, x5.w, threshold.w); float4 float24 = math.float4(x9.x, x10.x, x11.x, threshold3.x); float4 float25 = math.float4(x9.y, x10.y, x11.y, threshold3.y); float4 float26 = math.float4(x9.z, x10.z, x11.z, threshold3.z); float4 float27 = math.float4(x9.w, x10.w, x11.w, threshold3.w); float4 obj4 = math.float4(x6.x, x7.x, x8.x, threshold2.x); float4 float28 = math.float4(x6.y, x7.y, x8.y, threshold2.y); float4 float29 = math.float4(x6.z, x7.z, x8.z, threshold2.z); float4 float30 = math.float4(x6.w, x7.w, x8.w, threshold2.w); float4 float31 = math.float4(x12.x, x13.x, x14.x, threshold4.x); float4 float32 = math.float4(x12.y, x13.y, x14.y, threshold4.y); float4 float33 = math.float4(x12.z, x13.z, x14.z, threshold4.z); float4 float34 = math.float4(x12.w, x13.w, x14.w, threshold4.w); float4 float35 = taylorInvSqrt(math.float4(math.dot(float20, float20), math.dot(float22, float22), math.dot(float21, float21), math.dot(float23, float23))); float20 *= float35.x; float22 *= float35.y; float21 *= float35.z; float23 *= float35.w; float4 float36 = taylorInvSqrt(math.float4(math.dot(obj4, obj4), math.dot(float29, float29), math.dot(float28, float28), math.dot(float30, float30))); float4 x15 = obj4 * float36.x; float29 *= float36.y; float28 *= float36.z; float30 *= float36.w; float4 float37 = taylorInvSqrt(math.float4(math.dot(float24, float24), math.dot(float26, float26), math.dot(float25, float25), math.dot(float27, float27))); float24 *= float37.x; float26 *= float37.y; float25 *= float37.z; float27 *= float37.w; float4 float38 = taylorInvSqrt(math.float4(math.dot(float31, float31), math.dot(float33, float33), math.dot(float32, float32), math.dot(float34, float34))); float31 *= float38.x; float33 *= float38.y; float32 *= float38.z; float34 *= float38.w; float x16 = math.dot(float20, float6); float y2 = math.dot(float21, math.float4(y.x, float6.yzw)); float z = math.dot(float22, math.float4(float6.x, y.y, float6.zw)); float w = math.dot(float23, math.float4(y.xy, float6.zw)); float x17 = math.dot(float24, math.float4(float6.xy, y.z, float6.w)); float y3 = math.dot(float25, math.float4(y.x, float6.y, y.z, float6.w)); float z2 = math.dot(float26, math.float4(float6.x, y.yz, float6.w)); float w2 = math.dot(float27, math.float4(y.xyz, float6.w)); float x18 = math.dot(x15, math.float4(float6.xyz, y.w)); float y4 = math.dot(float28, math.float4(y.x, float6.yz, y.w)); float z3 = math.dot(float29, math.float4(float6.x, y.y, float6.z, y.w)); float w3 = math.dot(float30, math.float4(y.xy, float6.z, y.w)); float x19 = math.dot(float31, math.float4(float6.xy, y.zw)); float y5 = math.dot(float32, math.float4(y.x, float6.y, y.zw)); float z4 = math.dot(float33, math.float4(float6.x, y.yzw)); float w4 = math.dot(float34, y); float4 float39 = fade(float6); float4 start = math.lerp(math.float4(x16, y2, z, w), math.float4(x18, y4, z3, w3), float39.w); float4 end = math.lerp(math.float4(x17, y3, z2, w2), math.float4(x19, y5, z4, w4), float39.w); float4 float40 = math.lerp(start, end, float39.z); float2 float41 = math.lerp(float40.xy, float40.zw, float39.y); float num = math.lerp(float41.x, float41.y, float39.x); return 2.2f * num; } public static float pnoise(float4 P, float4 rep) { float4 float5 = math.fmod(math.floor(P), rep); float4 x = math.fmod(float5 + 1f, rep); float5 = mod289(float5); x = mod289(x); float4 float6 = math.frac(P); float4 y = float6 - 1f; float4 x2 = math.float4(float5.x, x.x, float5.x, x.x); float4 float7 = math.float4(float5.yy, x.yy); float4 float8 = math.float4(float5.zzzz); float4 float9 = math.float4(x.zzzz); float4 float10 = math.float4(float5.wwww); float4 float11 = math.float4(x.wwww); float4 obj = permute(permute(x2) + float7); float4 float12 = permute(obj + float8); float4 obj2 = permute(obj + float9); float4 float13 = permute(float12 + float10); float4 float14 = permute(float12 + float11); float4 float15 = permute(obj2 + float10); float4 obj3 = permute(obj2 + float11); float4 x3 = float13 * (1f / 7f); float4 x4 = math.floor(x3) * (1f / 7f); float4 x5 = math.floor(x4) * (1f / 6f); x3 = math.frac(x3) - 0.5f; x4 = math.frac(x4) - 0.5f; x5 = math.frac(x5) - 0.5f; float4 threshold = math.float4(0.75f) - math.abs(x3) - math.abs(x4) - math.abs(x5); float4 float16 = math.step(threshold, math.float4(0f)); x3 -= float16 * (math.step(0f, x3) - 0.5f); x4 -= float16 * (math.step(0f, x4) - 0.5f); float4 x6 = float14 * (1f / 7f); float4 x7 = math.floor(x6) * (1f / 7f); float4 x8 = math.floor(x7) * (1f / 6f); x6 = math.frac(x6) - 0.5f; x7 = math.frac(x7) - 0.5f; x8 = math.frac(x8) - 0.5f; float4 threshold2 = math.float4(0.75f) - math.abs(x6) - math.abs(x7) - math.abs(x8); float4 float17 = math.step(threshold2, math.float4(0f)); x6 -= float17 * (math.step(0f, x6) - 0.5f); x7 -= float17 * (math.step(0f, x7) - 0.5f); float4 x9 = float15 * (1f / 7f); float4 x10 = math.floor(x9) * (1f / 7f); float4 x11 = math.floor(x10) * (1f / 6f); x9 = math.frac(x9) - 0.5f; x10 = math.frac(x10) - 0.5f; x11 = math.frac(x11) - 0.5f; float4 threshold3 = math.float4(0.75f) - math.abs(x9) - math.abs(x10) - math.abs(x11); float4 float18 = math.step(threshold3, math.float4(0f)); x9 -= float18 * (math.step(0f, x9) - 0.5f); x10 -= float18 * (math.step(0f, x10) - 0.5f); float4 x12 = obj3 * (1f / 7f); float4 x13 = math.floor(x12) * (1f / 7f); float4 x14 = math.floor(x13) * (1f / 6f); x12 = math.frac(x12) - 0.5f; x13 = math.frac(x13) - 0.5f; x14 = math.frac(x14) - 0.5f; float4 threshold4 = math.float4(0.75f) - math.abs(x12) - math.abs(x13) - math.abs(x14); float4 float19 = math.step(threshold4, math.float4(0f)); x12 -= float19 * (math.step(0f, x12) - 0.5f); x13 -= float19 * (math.step(0f, x13) - 0.5f); float4 float20 = math.float4(x3.x, x4.x, x5.x, threshold.x); float4 float21 = math.float4(x3.y, x4.y, x5.y, threshold.y); float4 float22 = math.float4(x3.z, x4.z, x5.z, threshold.z); float4 float23 = math.float4(x3.w, x4.w, x5.w, threshold.w); float4 float24 = math.float4(x9.x, x10.x, x11.x, threshold3.x); float4 float25 = math.float4(x9.y, x10.y, x11.y, threshold3.y); float4 float26 = math.float4(x9.z, x10.z, x11.z, threshold3.z); float4 float27 = math.float4(x9.w, x10.w, x11.w, threshold3.w); float4 obj4 = math.float4(x6.x, x7.x, x8.x, threshold2.x); float4 float28 = math.float4(x6.y, x7.y, x8.y, threshold2.y); float4 float29 = math.float4(x6.z, x7.z, x8.z, threshold2.z); float4 float30 = math.float4(x6.w, x7.w, x8.w, threshold2.w); float4 float31 = math.float4(x12.x, x13.x, x14.x, threshold4.x); float4 float32 = math.float4(x12.y, x13.y, x14.y, threshold4.y); float4 float33 = math.float4(x12.z, x13.z, x14.z, threshold4.z); float4 float34 = math.float4(x12.w, x13.w, x14.w, threshold4.w); float4 float35 = taylorInvSqrt(math.float4(math.dot(float20, float20), math.dot(float22, float22), math.dot(float21, float21), math.dot(float23, float23))); float20 *= float35.x; float22 *= float35.y; float21 *= float35.z; float23 *= float35.w; float4 float36 = taylorInvSqrt(math.float4(math.dot(obj4, obj4), math.dot(float29, float29), math.dot(float28, float28), math.dot(float30, float30))); float4 x15 = obj4 * float36.x; float29 *= float36.y; float28 *= float36.z; float30 *= float36.w; float4 float37 = taylorInvSqrt(math.float4(math.dot(float24, float24), math.dot(float26, float26), math.dot(float25, float25), math.dot(float27, float27))); float24 *= float37.x; float26 *= float37.y; float25 *= float37.z; float27 *= float37.w; float4 float38 = taylorInvSqrt(math.float4(math.dot(float31, float31), math.dot(float33, float33), math.dot(float32, float32), math.dot(float34, float34))); float31 *= float38.x; float33 *= float38.y; float32 *= float38.z; float34 *= float38.w; float x16 = math.dot(float20, float6); float y2 = math.dot(float21, math.float4(y.x, float6.yzw)); float z = math.dot(float22, math.float4(float6.x, y.y, float6.zw)); float w = math.dot(float23, math.float4(y.xy, float6.zw)); float x17 = math.dot(float24, math.float4(float6.xy, y.z, float6.w)); float y3 = math.dot(float25, math.float4(y.x, float6.y, y.z, float6.w)); float z2 = math.dot(float26, math.float4(float6.x, y.yz, float6.w)); float w2 = math.dot(float27, math.float4(y.xyz, float6.w)); float x18 = math.dot(x15, math.float4(float6.xyz, y.w)); float y4 = math.dot(float28, math.float4(y.x, float6.yz, y.w)); float z3 = math.dot(float29, math.float4(float6.x, y.y, float6.z, y.w)); float w3 = math.dot(float30, math.float4(y.xy, float6.z, y.w)); float x19 = math.dot(float31, math.float4(float6.xy, y.zw)); float y5 = math.dot(float32, math.float4(y.x, float6.y, y.zw)); float z4 = math.dot(float33, math.float4(float6.x, y.yzw)); float w4 = math.dot(float34, y); float4 float39 = fade(float6); float4 start = math.lerp(math.float4(x16, y2, z, w), math.float4(x18, y4, z3, w3), float39.w); float4 end = math.lerp(math.float4(x17, y3, z2, w2), math.float4(x19, y5, z4, w4), float39.w); float4 float40 = math.lerp(start, end, float39.z); float2 float41 = math.lerp(float40.xy, float40.zw, float39.y); float num = math.lerp(float41.x, float41.y, float39.x); return 2.2f * num; } private static float mod289(float x) { return x - math.floor(x * 0.0034602077f) * 289f; } private static float2 mod289(float2 x) { return x - math.floor(x * 0.0034602077f) * 289f; } private static float3 mod289(float3 x) { return x - m