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 EnhancedValheimVRM v1.4.1
BepInEx/plugins/EnhancedValheimVRM.dll
Decompiled 20 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Sockets; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security.Cryptography; using System.Text; using System.Threading; using System.Threading.Tasks; using BepInEx; using BepInEx.Configuration; using EnhancedValheimVRM.Sharing; using HarmonyLib; using UniGLTF; using UniGLTF.Extensions.VRMC_vrm; using UniGLTF.SpringBoneJobs; using UniGLTF.SpringBoneJobs.Blittables; using UniGLTF.Utils; using UniVRM10; using Unity.Mathematics; using UnityEngine; using UnityEngine.LowLevel; using UnityEngine.PlayerLoop; using UnityEngine.SceneManagement; using VRM; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("EnhancedValheimVRM")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("EnhancedValheimVRM")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("56266ABF-B3F1-44F5-8790-D269FE536067")] [assembly: AssemblyFileVersion("1.4.1")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = "")] [assembly: AssemblyVersion("1.4.1.0")] namespace EnhancedValheimVRM { public sealed class OutfitDefinition { public string Name; public bool IsDefault; public readonly Dictionary<string, bool> Meshes = new Dictionary<string, bool>(StringComparer.Ordinal); public readonly Dictionary<string, float> Blendshapes = new Dictionary<string, float>(StringComparer.Ordinal); } public sealed class OutfitConfig { public readonly List<OutfitDefinition> Outfits = new List<OutfitDefinition>(); public readonly HashSet<string> KeepBlendshapes = new HashSet<string>(StringComparer.Ordinal); public const string KeepSection = "Blendshapes"; public OutfitDefinition Default => Outfits.Find((OutfitDefinition outfit) => outfit.IsDefault); public OutfitDefinition Find(string name) { return Outfits.Find((OutfitDefinition outfit) => string.Equals(outfit.Name, name, StringComparison.OrdinalIgnoreCase)); } public static OutfitConfig Parse(string text) { if (Encoding.UTF8.GetByteCount(text) > 131072) { throw new InvalidDataException("Outfit file exceeds 128 KiB."); } OutfitConfig outfitConfig = new OutfitConfig(); OutfitDefinition outfitDefinition = null; bool flag = false; HashSet<string> hashSet = new HashSet<string>(StringComparer.Ordinal); int num = 0; using (StringReader stringReader = new StringReader(text)) { string text2; while ((text2 = stringReader.ReadLine()) != null) { num++; string text3 = text2.Trim(); if (text3.Length == 0 || text3.StartsWith("#") || text3.StartsWith("//") || text3.StartsWith(";")) { continue; } if (text3.StartsWith("[") && text3.EndsWith("]")) { string text4 = text3.Substring(1, text3.Length - 2).Trim(); if (text4.Equals("Blendshapes", StringComparison.OrdinalIgnoreCase)) { outfitDefinition = null; flag = true; continue; } flag = false; SharingWire.ValidateOutfitName(text4); if (outfitConfig.Find(text4) != null || outfitConfig.Outfits.Count >= 64) { throw new InvalidDataException("Duplicate outfit name or too many outfits."); } outfitDefinition = new OutfitDefinition { Name = text4 }; outfitConfig.Outfits.Add(outfitDefinition); hashSet.Clear(); continue; } int num2 = text3.IndexOf('='); if (flag) { if (num2 >= 0 || outfitConfig.KeepBlendshapes.Count >= 1024) { throw new InvalidDataException("Invalid blendshape entry at line " + num); } outfitConfig.KeepBlendshapes.Add(text3); continue; } if (outfitDefinition == null || num2 < 1) { throw new InvalidDataException("Invalid outfit entry at line " + num); } string text5 = text3.Substring(0, num2).Trim(); string text6 = text3.Substring(num2 + 1).Trim(); if (!hashSet.Add(text5.Equals("Default", StringComparison.OrdinalIgnoreCase) ? "Default" : text5)) { throw new InvalidDataException("Duplicate outfit entry at line " + num); } if (text5.Equals("Default", StringComparison.OrdinalIgnoreCase) && bool.TryParse(text6, out var result)) { outfitDefinition.IsDefault = result; continue; } if (text5.StartsWith("mesh:") && text5.Length > 5 && bool.TryParse(text6, out var result2)) { outfitDefinition.Meshes.Add(text5.Substring(5), result2); continue; } if (text5.StartsWith("blendshape:") && text5.Substring(11).IndexOf(':') > 0 && !text5.EndsWith(":") && float.TryParse(text6, NumberStyles.Float, CultureInfo.InvariantCulture, out var result3) && !float.IsNaN(result3) && result3 >= 0f && result3 <= 100f) { outfitDefinition.Blendshapes.Add(text5.Substring(11), result3); continue; } throw new InvalidDataException("Invalid outfit entry at line " + num + ": " + text5); } } if (outfitConfig.Outfits.Count > 0 && outfitConfig.Outfits.Count((OutfitDefinition outfit) => outfit.IsDefault) != 1) { throw new InvalidDataException("Set Default=True in exactly one outfit section."); } if (outfitConfig.Outfits.Count == 0 && outfitConfig.KeepBlendshapes.Count == 0) { throw new InvalidDataException("Set Default=True in exactly one outfit section."); } return outfitConfig; } } [DefaultExecutionOrder(10000)] public sealed class OutfitController : MonoBehaviour { private Player _player; private string _path; private OutfitConfig _config; private bool _staging; private readonly Dictionary<Renderer, bool> _originalVisibility = new Dictionary<Renderer, bool>(); private readonly Dictionary<Renderer, bool> _originalEnabled = new Dictionary<Renderer, bool>(); private readonly HashSet<GameObject> _activatedNodes = new HashSet<GameObject>(); private readonly Dictionary<SkinnedMeshRenderer, float[]> _originalWeights = new Dictionary<SkinnedMeshRenderer, float[]>(); private readonly Dictionary<Renderer, bool> _visibility = new Dictionary<Renderer, bool>(); private readonly Dictionary<SkinnedMeshRenderer, Dictionary<int, float>> _weights = new Dictionary<SkinnedMeshRenderer, Dictionary<int, float>>(); private bool _reloading; public string CurrentName { get; private set; } = ""; public string SourceText { get; private set; } = ""; public IEnumerable<string> Names => _config?.Outfits.Select((OutfitDefinition outfit) => outfit.Name) ?? Enumerable.Empty<string>(); internal void SetStaging(bool staging) { _staging = staging; foreach (KeyValuePair<Renderer, bool> item in _originalVisibility) { if (!((Object)(object)item.Key != (Object)null)) { continue; } item.Key.forceRenderingOff = item.Value; if (item.Value) { continue; } item.Key.enabled = true; Transform val = ((Component)item.Key).transform; while ((Object)(object)val != (Object)null && (Object)(object)val != (Object)(object)((Component)this).transform) { if (!((Component)val).gameObject.activeSelf) { _activatedNodes.Add(((Component)val).gameObject); ((Component)val).gameObject.SetActive(true); } val = val.parent; } } ApplyValues(); } internal void SetupPrepared(Player player, string path, string text, bool isShared, OutfitConfig prepared) { _player = player; _path = (isShared ? null : path); Renderer[] componentsInChildren = ((Component)this).GetComponentsInChildren<Renderer>(true); foreach (Renderer val in componentsInChildren) { _originalVisibility[val] = val.forceRenderingOff; _originalEnabled[val] = val.enabled; SkinnedMeshRenderer val2 = (SkinnedMeshRenderer)(object)((val is SkinnedMeshRenderer) ? val : null); if (val2 != null && (Object)(object)val2.sharedMesh != (Object)null) { float[] array = new float[val2.sharedMesh.blendShapeCount]; for (int j = 0; j < array.Length; j++) { array[j] = val2.GetBlendShapeWeight(j); } _originalWeights[val2] = array; } } if (string.IsNullOrWhiteSpace(text)) { text = DefaultTemplate(); prepared = null; } if (prepared == null) { LoadText(text); } else { ApplyConfig(text, prepared); } } private bool LoadText(string text) { try { OutfitConfig config = OutfitConfig.Parse(text); ApplyConfig(text, config); return true; } catch (Exception ex) when (ex is InvalidDataException || ex is ArgumentException) { Logger.LogWarning("Outfit file: " + ex.Message); return false; } } private void ApplyConfig(string text, OutfitConfig config) { Restore(); _config = config; SourceText = text; OutfitDefinition outfitDefinition = config.Find(CurrentName) ?? config.Default; if (outfitDefinition != null) { Apply(outfitDefinition.Name); } } public string Reload() { if (_path == null) { return "Shared outfit definitions come from the avatar owner."; } if (_reloading) { return "Outfit reload is already in progress."; } ((MonoBehaviour)this).StartCoroutine(ReloadAsync()); return "Reading outfit file in the background."; } private IEnumerator ReloadAsync() { _reloading = true; string path = _path; Task<Tuple<string, OutfitConfig>> read = Task.Run(delegate { if (new FileInfo(path).Length > 131072) { throw new InvalidDataException("Outfit file exceeds 128 KiB."); } string text = File.ReadAllText(path); return Tuple.Create(text, OutfitConfig.Parse(text)); }); try { while (!read.IsCompleted) { yield return null; } if (read.IsFaulted) { Logger.LogWarning("Outfit reload failed; previous outfits retained: " + read.Exception.GetBaseException().Message); yield break; } Tuple<string, OutfitConfig> result = read.GetAwaiter().GetResult(); ApplyConfig(result.Item1, result.Item2); FileTransferController.RefreshUpload(); Logger.Log("Reloaded outfits from " + path); } finally { _reloading = false; } } public bool Apply(string name) { OutfitDefinition outfitDefinition = _config?.Find(name); if (outfitDefinition == null) { return false; } Restore(); foreach (KeyValuePair<string, bool> entry in outfitDefinition.Meshes) { Renderer[] array = _originalVisibility.Keys.Where((Renderer renderer) => (Object)(object)renderer != (Object)null && ((Object)renderer).name == entry.Key).ToArray(); if (array.Length == 0) { Logger.LogOnce("outfit-mesh:" + entry.Key, "Outfit mesh not found: " + entry.Key); } Renderer[] array2 = array; foreach (Renderer key in array2) { _visibility[key] = !entry.Value; } } foreach (KeyValuePair<string, float> blendshape in outfitDefinition.Blendshapes) { int num2 = blendshape.Key.IndexOf(':'); string meshName = blendshape.Key.Substring(0, num2); string text = blendshape.Key.Substring(num2 + 1); bool flag = false; foreach (SkinnedMeshRenderer item in _originalWeights.Keys.Where((SkinnedMeshRenderer skin) => (Object)(object)skin != (Object)null && ((Object)skin).name == meshName)) { int blendShapeIndex = item.sharedMesh.GetBlendShapeIndex(text); if (blendShapeIndex >= 0) { flag = true; if (!_weights.TryGetValue(item, out var value)) { _weights.Add(item, value = new Dictionary<int, float>()); } value[blendShapeIndex] = blendshape.Value; } } if (!flag) { Logger.LogOnce("outfit-shape:" + blendshape.Key, "Outfit blendshape not found: " + blendshape.Key); } } CurrentName = outfitDefinition.Name; ApplyValues(); OutfitRpc.LocalChanged(_player, this); return true; } private void ApplyValues() { foreach (KeyValuePair<Renderer, bool> item in _visibility) { if (!((Object)(object)item.Key != (Object)null)) { continue; } item.Key.forceRenderingOff = item.Value; if (item.Value) { continue; } item.Key.enabled = true; Transform val = ((Component)item.Key).transform; while ((Object)(object)val != (Object)null && (Object)(object)val != (Object)(object)((Component)this).transform) { if (!((Component)val).gameObject.activeSelf) { _activatedNodes.Add(((Component)val).gameObject); ((Component)val).gameObject.SetActive(true); } val = val.parent; } } foreach (KeyValuePair<SkinnedMeshRenderer, Dictionary<int, float>> weight in _weights) { if (!((Object)(object)weight.Key != (Object)null)) { continue; } foreach (KeyValuePair<int, float> item2 in weight.Value) { weight.Key.SetBlendShapeWeight(item2.Key, item2.Value); } } if (!_staging) { return; } foreach (Renderer key in _originalVisibility.Keys) { if ((Object)(object)key != (Object)null) { key.forceRenderingOff = true; } } } private void Restore() { foreach (KeyValuePair<Renderer, bool> item in _visibility) { if ((Object)(object)item.Key != (Object)null) { item.Key.forceRenderingOff = _originalVisibility[item.Key]; item.Key.enabled = _originalEnabled[item.Key]; } } foreach (KeyValuePair<SkinnedMeshRenderer, Dictionary<int, float>> weight in _weights) { if (!((Object)(object)weight.Key != (Object)null)) { continue; } foreach (KeyValuePair<int, float> item2 in weight.Value) { weight.Key.SetBlendShapeWeight(item2.Key, _originalWeights[weight.Key][item2.Key]); } } foreach (GameObject activatedNode in _activatedNodes) { if ((Object)(object)activatedNode != (Object)null) { activatedNode.SetActive(false); } } _activatedNodes.Clear(); _visibility.Clear(); _weights.Clear(); } private string DefaultTemplate() { StringBuilder stringBuilder = new StringBuilder("# Named outfits; exactly one section has Default=True.\n[default]\nDefault=True\n"); foreach (string item in (from r in _originalVisibility.Keys where (Object)(object)r != (Object)null select ((Object)r).name).Distinct()) { stringBuilder.Append("mesh:").Append(item).Append("=True\n"); } return stringBuilder.ToString(); } public string Generate() { if (_path == null) { return "Generate outfits on the avatar owner's client."; } string path = _path; string text = DefaultTemplate(); Task.Run(delegate { try { using (FileStream stream = new FileStream(path, FileMode.CreateNew, FileAccess.Write, FileShare.Read)) { using StreamWriter streamWriter = new StreamWriter(stream); streamWriter.Write(text); } Logger.Log("Created default outfit: " + path + ". Use /vrm outfit reload to load it."); } catch (IOException ex) { Logger.LogWarning(File.Exists(path) ? "Outfit file already exists; left unchanged." : ("Cannot generate outfit: " + ex.Message)); } }); return "Creating default outfit file if none exists."; } public string GenerateBlendShapeList() { if (_path == null) { return "Generate the blendshape list on the avatar owner's client."; } List<string> list = new List<string>(); foreach (SkinnedMeshRenderer key in _originalWeights.Keys) { if ((Object)(object)key == (Object)null || (Object)(object)key.sharedMesh == (Object)null) { continue; } for (int i = 0; i < key.sharedMesh.blendShapeCount; i++) { string blendShapeName = key.sharedMesh.GetBlendShapeName(i); if (!list.Contains(blendShapeName)) { list.Add(blendShapeName); } } } if (list.Count == 0) { return "This avatar has no blendshapes."; } StringBuilder stringBuilder = new StringBuilder("\n[Blendshapes]\n"); stringBuilder.Append("# every blendshape this avatar has. only the ones the vrm expressions or this file use get loaded,\n"); stringBuilder.Append("# remove the # in front of a name to keep it loaded\n"); foreach (string item in list) { stringBuilder.Append('#').Append(item).Append('\n'); } string path = _path; string section = stringBuilder.ToString(); Task.Run(delegate { try { if (File.Exists(path) && File.ReadAllText(path).IndexOf("[Blendshapes]", StringComparison.OrdinalIgnoreCase) >= 0) { Logger.LogWarning("The outfit file already has a [Blendshapes] section; left unchanged."); } else { File.AppendAllText(path, section); Logger.Log("Blendshape list written to " + path + ". Use /vrm outfit reload after editing it."); } } catch (IOException ex) { Logger.LogWarning("Cannot write the blendshape list: " + ex.Message); } }); return "Writing " + list.Count + " blendshape names to the outfit file."; } internal float OriginalWeight(SkinnedMeshRenderer skin, int index) { if (!_originalWeights.TryGetValue(skin, out var value) || index < 0 || index >= value.Length) { return 0f; } return value[index]; } public bool Toggle(string name) { Renderer val = ((IEnumerable<Renderer>)_originalVisibility.Keys).FirstOrDefault((Func<Renderer, bool>)((Renderer r) => (Object)(object)r != (Object)null && ((Object)r).name == name)); if ((Object)(object)val == (Object)null) { return false; } bool value; bool flag = (_visibility.TryGetValue(val, out value) ? value : (val.forceRenderingOff || !val.enabled || !((Component)val).gameObject.activeInHierarchy)); return Override(name, blend: false, flag ? 1 : 0, publish: true); } public bool Override(string name, bool blend, float value, bool publish = false) { if (!SharingWire.IsValidOverride(name, blend, value)) { return false; } bool flag = false; if (!blend) { foreach (Renderer item in _originalVisibility.Keys.Where((Renderer r) => (Object)(object)r != (Object)null && ((Object)r).name == name)) { _visibility[item] = value == 0f; flag = true; } } else { foreach (SkinnedMeshRenderer item2 in _originalWeights.Keys.Where((SkinnedMeshRenderer r) => (Object)(object)r != (Object)null)) { int blendShapeIndex = item2.sharedMesh.GetBlendShapeIndex(name); if (blendShapeIndex >= 0) { if (!_weights.TryGetValue(item2, out var value2)) { value2 = (_weights[item2] = new Dictionary<int, float>()); } value2[blendShapeIndex] = value; flag = true; } } } if (!flag) { return false; } ApplyValues(); if (publish && (Object)(object)_player == (Object)(object)Player.m_localPlayer) { SharingRpc.SetOverride(_player.GetPlayerID(), name, blend, value); } return true; } private void LateUpdate() { foreach (KeyValuePair<SkinnedMeshRenderer, Dictionary<int, float>> weight in _weights) { if (!((Object)(object)weight.Key != (Object)null)) { continue; } foreach (KeyValuePair<int, float> item in weight.Value) { weight.Key.SetBlendShapeWeight(item.Key, item.Value); } } } private void OnDestroy() { Restore(); } } internal static class OutfitRpc { internal static void ClientReady() { Player localPlayer = Player.m_localPlayer; VrmInstance vrmInstance = (((Object)(object)localPlayer != (Object)null) ? localPlayer.GetVrmInstance() : null); object obj; if (vrmInstance == null) { obj = null; } else { GameObject gameObject = vrmInstance.GetGameObject(); obj = ((gameObject != null) ? gameObject.GetComponent<OutfitController>() : null); } OutfitController outfitController = (OutfitController)obj; if (vrmInstance != null && vrmInstance.IsDisplayed && !vrmInstance.IsCorpse && !((Object)(object)outfitController == (Object)null) && !string.IsNullOrEmpty(outfitController.CurrentName)) { SharingRpc.SetOutfit(localPlayer.GetPlayerID(), outfitController.CurrentName); } } internal static void LocalChanged(Player player, OutfitController outfits) { if ((Object)(object)player != (Object)null && (Object)(object)player == (Object)(object)Player.m_localPlayer) { VrmInstance vrmInstance = player.GetVrmInstance(); object obj; if (vrmInstance == null) { obj = null; } else { GameObject gameObject = vrmInstance.GetGameObject(); obj = ((gameObject != null) ? gameObject.GetComponent<OutfitController>() : null); } if ((Object)obj == (Object)(object)outfits) { SharingRpc.SelectOutfit(player.GetPlayerID(), outfits.CurrentName); } } } internal static void AvatarReady(Player player) { if ((Object)(object)player == (Object)(object)Player.m_localPlayer) { ClientReady(); } else { ApplyPending(player); } } internal static void SelectionReceived(long id) { foreach (Player allPlayer in Player.GetAllPlayers()) { if ((Object)(object)allPlayer != (Object)null && (Object)(object)allPlayer != (Object)(object)Player.m_localPlayer && allPlayer.GetPlayerID() == id) { ApplyPending(allPlayer); } } } private static void ApplyPending(Player player) { if ((Object)(object)player == (Object)null || ((Character)player).IsDead()) { return; } string outfit = SharingRpc.GetOutfit(player.GetPlayerID()); VrmInstance vrmInstance = player.GetVrmInstance(); if (vrmInstance == null || !vrmInstance.IsDisplayed || vrmInstance.IsCorpse) { return; } GameObject gameObject = vrmInstance.GetGameObject(); OutfitController outfits = ((gameObject != null) ? gameObject.GetComponent<OutfitController>() : null); if (!((Object)(object)outfits == (Object)null)) { outfits.Apply(outfit ?? outfits.CurrentName); SharingRpc.ApplyOverrides(player.GetPlayerID(), delegate(string part, bool blend, float value) { outfits.Override(part, blend, value); }); } } } public class BoneGizmos : MonoBehaviour { private sealed class SocketGizmo { public Transform Bone; public string Label; public readonly List<LineRenderer> Axes = new List<LineRenderer>(); } private readonly List<SocketGizmo> _gizmos = new List<SocketGizmo>(); private readonly HashSet<Transform> _equipmentSockets = new HashSet<Transform>(); private GUIStyle _labelStyle; public void Setup(Player player, VrmInstance vrmInstance, bool playerGizmoEnabled = false, bool vrmGizmoEnabled = false) { ClearGizmos(); _equipmentSockets.Clear(); if (player.TryGetField<Player, VisEquipment>("m_visEquipment", out var result) && (Object)(object)result != (Object)null) { Transform[] array = (Transform[])(object)new Transform[9] { result.m_leftHand, result.m_rightHand, result.m_helmet, result.m_backShield, result.m_backMelee, result.m_backTwohandedMelee, result.m_backBow, result.m_backTool, result.m_backAtgeir }; foreach (Transform val in array) { if ((Object)(object)val != (Object)null) { _equipmentSockets.Add(val); } } } Shader val2 = Shader.Find("Unlit/Color"); if (!((Object)(object)val2 == (Object)null)) { if (playerGizmoEnabled) { AddSockets(player.GetField<Player, Animator>("m_animator"), "Player", val2); } if (vrmGizmoEnabled) { AddSockets(vrmInstance.GetVrmGoAnimator(), "VRM", val2); } UpdateAxes(); } } private void AddSockets(Animator animator, string source, Shader shader) { //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: 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_0128: 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_0134: 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_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015b: 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_0194: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Expected O, but got Unknown if ((Object)(object)animator == (Object)null) { return; } Transform val = BoneLookup.Get(animator, (HumanBodyBones)15); Transform val2 = BoneLookup.Get(animator, (HumanBodyBones)16); Transform[] componentsInChildren = ((Component)animator).GetComponentsInChildren<Transform>(true); foreach (Transform bone in componentsInChildren) { bool flag = (Object)(object)bone == (Object)(object)val || (Object)(object)bone == (Object)(object)val2; if ((flag || _equipmentSockets.Contains(bone) || ((Object)bone).name.IndexOf("_attach", StringComparison.OrdinalIgnoreCase) >= 0) && !_gizmos.Exists((SocketGizmo existing) => (Object)(object)existing.Bone == (Object)(object)bone)) { SocketGizmo socketGizmo = new SocketGizmo { Bone = bone, Label = source + " / " + ((Object)bone).name + (flag ? " (forearm bone)" : "") }; Color[] array = (Color[])(object)new Color[3] { Color.red, Color.green, Color.blue }; foreach (Color val3 in array) { LineRenderer val4 = new GameObject("BoneGizmoLine").AddComponent<LineRenderer>(); ((Component)val4).transform.SetParent(bone, false); Color startColor = (val4.endColor = val3); val4.startColor = startColor; float startWidth = (val4.endWidth = 0.005f); val4.startWidth = startWidth; val4.positionCount = 2; val4.useWorldSpace = false; ((Renderer)val4).sharedMaterial = new Material(shader) { color = val3 }; socketGizmo.Axes.Add(val4); } _gizmos.Add(socketGizmo); } } } internal void SetVisible(bool visible) { ((Behaviour)this).enabled = visible; foreach (SocketGizmo gizmo in _gizmos) { foreach (LineRenderer axis in gizmo.Axes) { if ((Object)(object)axis != (Object)null) { ((Renderer)axis).enabled = visible; } } } } private void LateUpdate() { UpdateAxes(); } private void UpdateAxes() { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_005e: 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) foreach (SocketGizmo gizmo in _gizmos) { if ((Object)(object)gizmo.Bone == (Object)null) { continue; } for (int i = 0; i < gizmo.Axes.Count; i++) { LineRenderer val = gizmo.Axes[i]; if (!((Object)(object)val == (Object)null)) { Vector3 val2 = (Vector3)(i switch { 1 => gizmo.Bone.up, 0 => gizmo.Bone.right, _ => gizmo.Bone.forward, }); val.SetPosition(0, Vector3.zero); val.SetPosition(1, gizmo.Bone.InverseTransformVector(val2 * 0.12f)); } } } } private void OnGUI() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Invalid comparison between Unknown and I4 //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003c: 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_0050: Expected O, but got Unknown //IL_0096: 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_00a0: 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) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: 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_00f5: 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_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0181: 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) Camera main = Camera.main; if ((Object)(object)main == (Object)null || (int)Event.current.type != 7) { return; } if (_labelStyle == null) { _labelStyle = new GUIStyle(GUI.skin.label) { alignment = (TextAnchor)7, fontSize = 14, fontStyle = (FontStyle)1 }; } Rect val2 = default(Rect); foreach (SocketGizmo gizmo in _gizmos) { if (!((Object)(object)gizmo.Bone == (Object)null) && ((Component)gizmo.Bone).gameObject.activeInHierarchy) { Vector3 val = main.WorldToScreenPoint(gizmo.Bone.position); if (!(val.z <= 0f) && !(val.x < 0f) && !(val.x > (float)Screen.width) && !(val.y < 0f) && !(val.y > (float)Screen.height)) { ((Rect)(ref val2))..ctor(val.x - 160f, (float)Screen.height - val.y - 32f, 320f, 24f); _labelStyle.normal.textColor = Color.black; GUI.Label(new Rect(((Rect)(ref val2)).x + 1f, ((Rect)(ref val2)).y + 1f, ((Rect)(ref val2)).width, ((Rect)(ref val2)).height), gizmo.Label, _labelStyle); _labelStyle.normal.textColor = Color.white; GUI.Label(val2, gizmo.Label, _labelStyle); } } } } private void ClearGizmos() { foreach (SocketGizmo gizmo in _gizmos) { foreach (LineRenderer axis in gizmo.Axes) { if (!((Object)(object)axis == (Object)null)) { Object.Destroy((Object)(object)((Renderer)axis).sharedMaterial); Object.Destroy((Object)(object)((Component)axis).gameObject); } } } _gizmos.Clear(); } private void OnDestroy() { ClearGizmos(); } } [DisallowMultipleComponent] public sealed class AttachmentReference : MonoBehaviour { private bool _captured; private float3 _offsetInSocketAxes; private Vector3 _worldScale; public void Capture() { //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_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) if (!_captured && !((Object)(object)((Component)this).transform.parent == (Object)null)) { _offsetInSocketAxes = AttachmentMath.ToSocketOffset(AttachmentTransforms.Vector(((Component)this).transform.parent.position), AttachmentTransforms.Vector(((Component)this).transform.position), AttachmentTransforms.Rotation(((Component)this).transform.rotation)); _worldScale = ((Component)this).transform.lossyScale; _captured = true; } } public bool Reparent(Transform parent, Quaternion rotation, float ratio, Vector3? scaleOverride) { //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_0024: 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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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_0049: 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_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_0097: 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) Capture(); if (!_captured || (Object)(object)parent == (Object)null) { return false; } float4x4 parentToWorld = AttachmentTransforms.Matrix(parent.localToWorldMatrix); if (!AttachmentMath.TryMapSocket(parentToWorld, AttachmentTransforms.Rotation(parent.rotation), AttachmentTransforms.Rotation(rotation), _offsetInSocketAxes, ratio, out var localPosition)) { return false; } if (!AttachmentMath.TryLocalScale(parentToWorld, AttachmentTransforms.Rotation(rotation), AttachmentTransforms.Vector(_worldScale), out var localScale)) { return false; } ((Component)this).transform.SetParent(parent, false); ((Component)this).transform.SetLocalPositionAndRotation(AttachmentTransforms.Vector(localPosition), rotation); ((Component)this).transform.localScale = (Vector3)(((??)scaleOverride) ?? AttachmentTransforms.Vector(localScale)); return true; } } internal static class AttachmentTransforms { public static float3 Vector(Vector3 value) { //IL_0000: 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) //IL_0012: Unknown result type (might be due to invalid IL or missing references) return new float3(value.x, value.y, value.z); } public static Vector3 Vector(float3 value) { //IL_0000: 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) //IL_0012: Unknown result type (might be due to invalid IL or missing references) return new Vector3(value.x, value.y, value.z); } public static quaternion Rotation(Quaternion value) { //IL_0000: 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) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) return new quaternion(value.x, value.y, value.z, value.w); } public static float4x4 Matrix(Matrix4x4 value) { //IL_0000: 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) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_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_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_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_006f: 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) return new float4x4(new float4(value.m00, value.m10, value.m20, value.m30), new float4(value.m01, value.m11, value.m21, value.m31), new float4(value.m02, value.m12, value.m22, value.m32), new float4(value.m03, value.m13, value.m23, value.m33)); } } [DisallowMultipleComponent] public sealed class EquipmentTransformReference : MonoBehaviour { private bool _captured; private Vector3 _worldScale; private Quaternion _localRotation; private Vector3 _baseOffsetInMeters; public static EquipmentTransformReference Get(Transform item) { //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_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_0059: 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_006f: 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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) EquipmentTransformReference equipmentTransformReference = ((Component)item).GetComponent<EquipmentTransformReference>(); if ((Object)(object)equipmentTransformReference == (Object)null) { equipmentTransformReference = ((Component)item).gameObject.AddComponent<EquipmentTransformReference>(); } if (!equipmentTransformReference._captured) { equipmentTransformReference._worldScale = item.lossyScale; equipmentTransformReference._localRotation = item.localRotation; equipmentTransformReference._baseOffsetInMeters = (((Object)(object)item.parent != (Object)null) ? (Quaternion.Inverse(item.parent.rotation) * (item.position - item.parent.position)) : item.position); equipmentTransformReference._captured = true; } return equipmentTransformReference; } public void SetScale(float ratio) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) SetScale(ratio, Vector3.one); } public void SetScale(float ratio, Vector3 multiplier) { //IL_003e: 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_0043: 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_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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_007e: 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) if (!(ratio <= 0f) && !float.IsNaN(ratio) && !float.IsInfinity(ratio) && AttachmentMath.TryLocalScale(AttachmentTransforms.Matrix(((Object)(object)((Component)this).transform.parent != (Object)null) ? ((Component)this).transform.parent.localToWorldMatrix : Matrix4x4.identity), AttachmentTransforms.Rotation(((Component)this).transform.localRotation), AttachmentTransforms.Vector(Vector3.Scale(_worldScale * ratio, multiplier)), out var localScale)) { ((Component)this).transform.localScale = AttachmentTransforms.Vector(localScale); } } public void SetRotationOffset(Vector3 offset) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) ((Component)this).transform.localRotation = _localRotation * Quaternion.Euler(offset); } public void SetPositionOffset(Vector3 offsetInMeters, float ratio) { //IL_001d: 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_0033: 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_0038: 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_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_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_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) Transform parent = ((Component)this).transform.parent; Matrix4x4 value = (((Object)(object)parent != (Object)null) ? parent.localToWorldMatrix : Matrix4x4.identity); if (AttachmentMath.TryMapItemOffset(socketRotation: AttachmentTransforms.Rotation(((Object)(object)parent != (Object)null) ? parent.rotation : Quaternion.identity), socketToWorld: AttachmentTransforms.Matrix(value), offsetInMeters: AttachmentTransforms.Vector(_baseOffsetInMeters + offsetInMeters), ratio: ratio, localPosition: out var localPosition)) { ((Component)this).transform.localPosition = AttachmentTransforms.Vector(localPosition); } } } public sealed class BindPoseSpace : MonoBehaviour { public bool UseRoot; public static void Detect(GameObject root) { //IL_0076: 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_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_0089: 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_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_00ba: 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_00c1: 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) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) SkinnedMeshRenderer[] componentsInChildren = root.GetComponentsInChildren<SkinnedMeshRenderer>(true); foreach (SkinnedMeshRenderer val in componentsInChildren) { Mesh sharedMesh = val.sharedMesh; if ((Object)(object)sharedMesh == (Object)null || !sharedMesh.isReadable || (Object)(object)((Component)val).GetComponent<BindPoseSpace>() != (Object)null) { continue; } Transform[] bones = val.bones; Matrix4x4[] bindposes = sharedMesh.bindposes; int num = 0; int num2 = 0; for (int j = 0; j < bones.Length && j < bindposes.Length; j++) { if (!((Object)(object)bones[j] == (Object)null)) { Matrix4x4 inverse = ((Matrix4x4)(ref bindposes[j])).inverse; Vector3 val2 = ((Matrix4x4)(ref inverse)).MultiplyPoint3x4(Vector3.zero); Vector3 position = bones[j].position; Vector3 val3 = root.transform.TransformPoint(val2) - position; float sqrMagnitude = ((Vector3)(ref val3)).sqrMagnitude; val3 = ((Component)val).transform.TransformPoint(val2) - position; float sqrMagnitude2 = ((Vector3)(ref val3)).sqrMagnitude; if (sqrMagnitude < sqrMagnitude2) { num++; } else { num2++; } } } ((Component)val).gameObject.AddComponent<BindPoseSpace>().UseRoot = num > num2; } } } public sealed class WallSensor : MonoBehaviour { private const float Radius = 0.49f; private const float Thickness = 0.04f; private const int Sides = 24; private static Mesh _mesh; private static readonly Dictionary<Player, WallSensor> Sensors = new Dictionary<Player, WallSensor>(); private readonly HashSet<Collider> _touching = new HashSet<Collider>(); internal static void Attach(Player player) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)player == (Object)null) && !Sensors.ContainsKey(player)) { GameObject val = new GameObject("wall sensor") { layer = ((Component)player).gameObject.layer }; val.transform.SetParent(((Component)player).transform, false); val.transform.localPosition = new Vector3(0f, 0.49f, 0f); MeshCollider obj = val.AddComponent<MeshCollider>(); obj.sharedMesh = _mesh ?? (_mesh = BuildDisk()); obj.convex = true; ((Collider)obj).isTrigger = true; Sensors[player] = val.AddComponent<WallSensor>(); } } internal static void Detach(Player player) { if (!((Object)(object)player == (Object)null) && Sensors.TryGetValue(player, out var value)) { Sensors.Remove(player); if ((Object)(object)value != (Object)null) { Object.Destroy((Object)(object)((Component)value).gameObject); } } } internal static bool Touching(Player player, Collider collider) { if (Sensors.TryGetValue(player, out var value) && (Object)(object)value != (Object)null) { return value._touching.Contains(collider); } return false; } private void OnTriggerEnter(Collider other) { _touching.Add(other); } private void OnTriggerExit(Collider other) { _touching.Remove(other); } private static Mesh BuildDisk() { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011c: 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_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Expected O, but got Unknown Vector3[] array = (Vector3[])(object)new Vector3[48]; for (int i = 0; i < 24; i++) { float num = (float)i * (float)Math.PI * 2f / 24f; float num2 = Mathf.Cos(num) * 0.49f; float num3 = Mathf.Sin(num) * 0.49f; array[i] = new Vector3(num2, -0.02f, num3); array[i + 24] = new Vector3(num2, 0.02f, num3); } List<int> list = new List<int>(); for (int j = 0; j < 24; j++) { int num4 = (j + 1) % 24; list.AddRange(new int[6] { j, num4, j + 24, num4, num4 + 24, j + 24 }); if (j < 22) { list.AddRange(new int[3] { 0, j + 2, j + 1 }); list.AddRange(new int[3] { 24, 24 + j + 1, 24 + j + 2 }); } } Mesh val = new Mesh { name = "wall sensor", vertices = array, triangles = list.ToArray() }; val.RecalculateNormals(); val.RecalculateBounds(); return val; } } public sealed class RiggedItemPieces : MonoBehaviour { internal Animator Avatar; internal readonly List<Transform> Moved = new List<Transform>(); private void OnDestroy() { foreach (Transform item in Moved) { if ((Object)(object)item != (Object)null) { Object.Destroy((Object)(object)((Component)item).gameObject); } } } } public sealed class CapsuleGizmo : MonoBehaviour { private sealed class Shape { internal GameObject Middle; internal GameObject Top; internal GameObject Bottom; internal void Fit(Vector3 center, float radius, float height) { //IL_001f: 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_0054: 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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: 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) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) float num = Mathf.Max(0f, height / 2f - radius); Middle.transform.position = center; Middle.transform.localScale = new Vector3(radius * 2f, num, radius * 2f); Top.transform.position = center + Vector3.up * num; Bottom.transform.position = center - Vector3.up * num; Transform transform = Top.transform; Vector3 localScale = (Bottom.transform.localScale = Vector3.one * (radius * 2f)); transform.localScale = localScale; } internal void Destroy() { Object.Destroy((Object)(object)Middle); Object.Destroy((Object)(object)Top); Object.Destroy((Object)(object)Bottom); } } private static Material _red; private static Material _blue; private static Material _green; private Shape _live; private Shape _vanilla; private GameObject _sensor; private CapsuleCollider _capsule; internal static string Set(Player player, bool show) { if ((Object)(object)player == (Object)null) { return "Enter a world first."; } CapsuleGizmo component = ((Component)player).GetComponent<CapsuleGizmo>(); if (!show) { if ((Object)(object)component != (Object)null) { Object.Destroy((Object)(object)component); } return "Capsules hidden."; } if ((Object)(object)component == (Object)null) { ((Component)player).gameObject.AddComponent<CapsuleGizmo>(); } return "Capsules shown: red is the live one, blue the vanilla one, green the wall sensor."; } private void Awake() { //IL_002a: 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_009b: Unknown result type (might be due to invalid IL or missing references) _capsule = ((Component)this).GetComponent<CapsuleCollider>(); _live = Capsule(_red ?? (_red = Translucent(new Color(1f, 0f, 0f, 0.3f)))); _vanilla = Capsule(_blue ?? (_blue = Translucent(new Color(0f, 0.4f, 1f, 0.2f)))); _sensor = Primitive((PrimitiveType)2, _green ?? (_green = Translucent(new Color(0f, 1f, 0f, 0.35f)))); } private void LateUpdate() { //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_0054: 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_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0083: 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_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: 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_002b: 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) Vector3 position = ((Component)this).transform.position; if ((Object)(object)_capsule != (Object)null) { Shape live = _live; Bounds bounds = ((Collider)_capsule).bounds; live.Fit(((Bounds)(ref bounds)).center, _capsule.radius, _capsule.height); } _vanilla.Fit(position + Vector3.up * 0.925f, 0.49f, 1.85f); _sensor.transform.position = position + Vector3.up * 0.49f; _sensor.transform.localScale = new Vector3(0.98f, 0.02f, 0.98f); } private static Shape Capsule(Material material) { return new Shape { Middle = Primitive((PrimitiveType)2, material), Top = Primitive((PrimitiveType)0, material), Bottom = Primitive((PrimitiveType)0, material) }; } private static GameObject Primitive(PrimitiveType type, Material material) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) GameObject obj = GameObject.CreatePrimitive(type); ((Object)obj).name = "CapsuleGizmo"; ((Renderer)obj.GetComponent<MeshRenderer>()).sharedMaterial = material; Object.Destroy((Object)(object)obj.GetComponent<Collider>()); return obj; } private static Material Translucent(Color color) { //IL_000a: 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_001f: 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_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_004f: 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_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown Material val = new Material(Shader.Find("Standard")); val.SetFloat("_Mode", 2f); val.SetInt("_SrcBlend", 5); val.SetInt("_DstBlend", 10); val.SetInt("_ZWrite", 0); val.DisableKeyword("_ALPHATEST_ON"); val.EnableKeyword("_ALPHABLEND_ON"); val.DisableKeyword("_ALPHAPREMULTIPLY_ON"); val.SetFloat("_GlossMapScale", 0f); val.renderQueue = 3000; val.color = color; return val; } private void OnDestroy() { _live?.Destroy(); _vanilla?.Destroy(); Object.Destroy((Object)(object)_sensor); } } public static class AttachmentMath { public static float3 ToSocketOffset(float3 parentPosition, float3 socketPosition, quaternion socketRotation) { //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_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_000d: Unknown result type (might be due to invalid IL or missing references) return math.rotate(math.inverse(socketRotation), socketPosition - parentPosition); } public static bool TryMapSocket(float4x4 parentToWorld, quaternion parentRotation, quaternion socketLocalRotation, float3 originalOffset, float ratio, out float3 localPosition) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_006e: 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_0076: 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_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) localPosition = float3.zero; if (!math.isfinite(ratio) || ratio <= 0f || !Finite(parentToWorld)) { return false; } float num = math.determinant(parentToWorld); if (!math.isfinite(num) || math.abs(num) < 1E-12f) { return false; } float3 val = math.rotate(math.mul(parentRotation, socketLocalRotation), originalOffset * ratio); float4 val2 = math.mul(math.inverse(parentToWorld), new float4(val, 0f)); localPosition = ((float4)(ref val2)).xyz; return math.all(math.isfinite(localPosition)); } public static bool TryLocalScale(float4x4 parentToWorld, quaternion localRotation, float3 worldScale, out float3 localScale) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_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_0023: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: 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_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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0081: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) localScale = new float3(1); if (!Finite(parentToWorld) || !math.all(math.isfinite(worldScale))) { return false; } float3x3 val = math.mul(new float3x3(parentToWorld), new float3x3(localRotation)); float3 val2 = default(float3); ((float3)(ref val2))..ctor(math.length(val.c0), math.length(val.c1), math.length(val.c2)); if (!math.all(math.isfinite(val2)) || math.any(val2 < 1E-06f)) { return false; } localScale = worldScale / val2; return math.all(math.isfinite(localScale)); } public static bool TryMapItemOffset(float4x4 socketToWorld, quaternion socketRotation, float3 offsetInMeters, float ratio, out float3 localPosition) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return TryMapSocket(socketToWorld, socketRotation, quaternion.identity, offsetInMeters, ratio, out localPosition); } public static float3 ToBoneOffset(quaternion boneRotation, float3 worldOffset, float3 adjustment) { //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_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) return math.rotate(math.inverse(boneRotation), worldOffset) + adjustment; } public static float3 PlaceBone(float3 handPosition, quaternion boneRotation, float3 offset) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: 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) return handPosition + math.rotate(boneRotation, offset); } public static float3 SeatedHipCorrection(float3 vanillaHips, float3 avatarHips, quaternion seatRotation) { //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_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_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_001f: 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_0021: Unknown result type (might be due to invalid IL or missing references) float3 val = math.rotate(math.inverse(seatRotation), vanillaHips - avatarHips); val.x = 0f; return math.rotate(seatRotation, val); } public static float3 GetSeatProportions(float3 vanilla, float3 avatar) { //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_003e: 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_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_0020: 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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004f: 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_005c: 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 (!math.all(math.isfinite(vanilla)) || !math.all(math.isfinite(avatar)) || math.any(vanilla <= 0f) || math.any(avatar <= 0f)) { return float3.zero; } return new float3(1f, avatar.y - vanilla.y, avatar.z - vanilla.z); } public static float3 SeatedProportionCorrection(float3 vanillaHips, float3 avatarHips, float3 vanillaKnees, float3 avatarKnees, float3 seatOrigin, quaternion seatRotation, float3 proportions, bool forwardOnly) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //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_0020: 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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: 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) //IL_002f: 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_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_003c: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: 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_0077: 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_0084: 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_000f: 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_0012: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) if (proportions.x <= 0f) { return SeatedHipCorrection(vanillaHips, avatarHips, seatRotation); } quaternion val = math.inverse(seatRotation); float3 val2 = math.rotate(val, vanillaHips - seatOrigin); float3 val3 = math.rotate(val, avatarHips - seatOrigin); float3 val4 = math.rotate(val, vanillaKnees - seatOrigin); float3 val5 = math.rotate(val, avatarKnees - seatOrigin); float3 val6 = val2 - val3; val6.y += proportions.y; val6.z = val4.z - val5.z + proportions.z; if (forwardOnly) { val6.z = math.max(0f, val6.z); } val6.x = 0f; return math.rotate(seatRotation, val6); } private static bool Finite(float4x4 matrix) { //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_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0024: 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_002a: 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_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) if (math.all(math.isfinite(matrix.c0)) && math.all(math.isfinite(matrix.c1)) && math.all(math.isfinite(matrix.c2))) { return math.all(math.isfinite(matrix.c3)); } return false; } } internal sealed class SeatSupportMeasurement { internal const int Hips = 1; internal const int LeftThigh = 2; internal const int RightThigh = 3; internal const int Foot = 4; internal const int LeftShin = 5; internal const int RightShin = 6; private readonly float3 _hips; private readonly float3 _leftThigh; private readonly float3 _rightThigh; private readonly float3 _leftKnee; private readonly float3 _rightKnee; private readonly quaternion _leftBend; private readonly quaternion _rightBend; private readonly quaternion _leftShinBend; private readonly quaternion _rightShinBend; private readonly float _leftShinLength; private readonly float _rightShinLength; private readonly List<float> _leftThickness = new List<float>(); private readonly List<float> _rightThickness = new List<float>(); private readonly List<float> _leftCalf = new List<float>(); private readonly List<float> _rightCalf = new List<float>(); private readonly List<float> _ground = new List<float>(); internal SeatSupportMeasurement(float3 hips, float3 leftThigh, float3 rightThigh, quaternion leftBend, quaternion rightBend, float3 leftKnee, float3 rightKnee, quaternion leftShinBend, quaternion rightShinBend, float leftShinLength, float rightShinLength) { //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_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004d: 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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_006d: 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_0075: 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_007d: Unknown result type (might be due to invalid IL or missing references) _hips = hips; _leftThigh = leftThigh; _rightThigh = rightThigh; _leftBend = leftBend; _rightBend = rightBend; _leftKnee = leftKnee; _rightKnee = rightKnee; _leftShinBend = leftShinBend; _rightShinBend = rightShinBend; _leftShinLength = leftShinLength; _rightShinLength = rightShinLength; } internal void Add(float3 vertex, int4 groups, float4 weights) { //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_000d: 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_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0081: 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_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: 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_00b5: 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_00bf: Unknown result type (might be due to invalid IL or missing references) //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_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: 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_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) if (!math.all(math.isfinite(vertex)) || !math.all(math.isfinite(weights))) { return; } int num = 0; for (int i = 1; i < 4; i++) { if (((float4)(ref weights))[i] > ((float4)(ref weights))[num]) { num = i; } } if (!(((float4)(ref weights))[num] < 0.5f) && ((int4)(ref groups))[num] != 0) { switch (((int4)(ref groups))[num]) { case 4: _ground.Add(vertex.y); break; case 2: _leftThickness.Add(0f - math.rotate(_leftBend, vertex - _leftThigh).y); break; case 3: _rightThickness.Add(0f - math.rotate(_rightBend, vertex - _rightThigh).y); break; case 5: AddCalf(_leftCalf, math.rotate(_leftShinBend, vertex - _leftKnee), _leftShinLength); break; case 6: AddCalf(_rightCalf, math.rotate(_rightShinBend, vertex - _rightKnee), _rightShinLength); break; } } } private static void AddCalf(List<float> calf, float3 bent, float length) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) if (bent.z >= 0f && bent.z <= length * 0.5f) { calf.Add(0f - bent.y); } } internal bool TryMeasure(out float3 support) { //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_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) support = float3.zero; if (_leftThickness.Count < 8 || _rightThickness.Count < 8 || _ground.Count < 8 || _leftCalf.Count < 8 || _rightCalf.Count < 8) { return false; } _leftThickness.Sort(); _rightThickness.Sort(); _leftCalf.Sort(); _rightCalf.Sort(); _ground.Sort(); float num = math.max(0f, _leftThickness[(int)((float)_leftThickness.Count * 0.98f)]); float num2 = math.max(0f, _rightThickness[(int)((float)_rightThickness.Count * 0.98f)]); float num3 = math.max(0f, _leftCalf[(int)((float)_leftCalf.Count * 0.98f)]); float num4 = math.max(0f, _rightCalf[(int)((float)_rightCalf.Count * 0.98f)]); float num5 = _hips.y - _ground[(int)((float)_ground.Count * 0.02f)]; float num6 = _hips.y - (_leftThigh.y + _rightThigh.y) * 0.5f; support = new float3(num5, num6 + (num + num2) * 0.5f, (num3 + num4) * 0.5f); if (math.all(math.isfinite(support)) && num5 > 0f && support.y > 0f) { return support.z > 0f; } return false; } } public sealed class FixedRotationSmoother { private bool _ready; private float _sampleTime; private float3 _samplePosition; private quaternion _previous; private quaternion _current; public void Reset() { _ready = false; } public quaternion Sample(quaternion rotation, float3 position, float fixedTime, float renderTime, float fixedDelta) { //IL_007c: 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_007e: 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_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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_00b1: 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_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_0051: 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) if (!_ready || fixedDelta <= 0f || !math.isfinite(fixedDelta) || fixedTime < _sampleTime || fixedTime - _sampleTime > fixedDelta * 2.5f || math.distancesq(position, _samplePosition) > 25f || (_ready && math.abs(math.dot(rotation.value, _current.value)) < 0.7071067f)) { _previous = (_current = rotation); _sampleTime = fixedTime; _samplePosition = position; _ready = true; return rotation; } if (fixedTime > _sampleTime) { _previous = _current; _current = rotation; _sampleTime = fixedTime; _samplePosition = position; } float num = math.saturate((renderTime - fixedTime) / fixedDelta); return math.slerp(_previous, _current, num); } } internal static class FrameClock { private static bool _installed; private static int _startFrame = -1; private static double _start; private static double _updateEnd; private static double _tailMs; private static double _deadlineMs; private static double _overshootMs; private static readonly List<string> _notes = new List<string>(); private static double _importMs; internal static double ReportAboveMs; internal static bool Installed => _installed; internal static double WorstFrameMs { get; private set; } internal static string Label { set { if (_notes.Count == 6) { _notes.RemoveAt(0); } _notes.Add("+" + ((Time.realtimeSinceStartupAsDouble - _start) * 1000.0).ToString("F0") + "ms " + value); } } internal static bool Reporting => ReportAboveMs > 0.0; internal static void Charge(double ms) { _importMs += ms; } internal static void ResetWorst() { WorstFrameMs = 0.0; } internal static void Install() { //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_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Expected O, but got Unknown //IL_0084: Unknown result type (might be due to invalid IL or missing references) if (_installed) { return; } try { PlayerLoopSystem loop = PlayerLoop.GetCurrentPlayerLoop(); if (!AddFirst(ref loop, typeof(EarlyUpdate), new UpdateFunction(MarkStart)) || !AddFirst(ref loop, typeof(PreLateUpdate), new UpdateFunction(MarkUpdateEnd)) || !AddBefore(ref loop, typeof(PostLateUpdate), typeof(PresentAfterDraw), new UpdateFunction(MarkEnd))) { Logger.LogWarning("Could not hook the player loop, avatar loads use the fixed slice."); return; } PlayerLoop.SetPlayerLoop(loop); _installed = true; if (Settings.LogLoadTiming) { Logger.Log("Frame clock hooked into the player loop."); } } catch (Exception ex) { Logger.LogWarning("Could not hook the player loop, avatar loads use the fixed slice: " + ex.Message); } } internal static float SpareMs(double frameMs) { if (!_installed || _startFrame != Time.frameCount) { return -1f; } _deadlineMs = frameMs; double num = (Time.realtimeSinceStartupAsDouble - _start) * 1000.0; return Mathf.Max(2f, (float)(frameMs - num - _tailMs - _overshootMs - 1.0)); } private static void MarkStart() { double realtimeSinceStartupAsDouble = Time.realtimeSinceStartupAsDouble; if (_startFrame == Time.frameCount - 1) { double num = (realtimeSinceStartupAsDouble - _start) * 1000.0; WorstFrameMs = Math.Max(WorstFrameMs, num); if (ReportAboveMs > 0.0 && num > ReportAboveMs) { Logger.Log("Long frame " + num.ToString("F0") + "ms: update part " + ((_updateEnd - _start) * 1000.0).ToString("F0") + "ms, render part " + ((realtimeSinceStartupAsDouble - _updateEnd) * 1000.0).ToString("F0") + "ms, import used " + _importMs.ToString("F1") + "ms; " + string.Join(", ", _notes)); } } _notes.Clear(); _importMs = 0.0; if (_startFrame == Time.frameCount - 1 && _deadlineMs > 0.0) { double num2 = (realtimeSinceStartupAsDouble - _start) * 1000.0 - _deadlineMs; _overshootMs = ((num2 > 0.0) ? Math.Max(num2, _overshootMs) : (_overshootMs * 0.5)); } _startFrame = Time.frameCount; _start = realtimeSinceStartupAsDouble; } private static void MarkUpdateEnd() { _updateEnd = Time.realtimeSinceStartupAsDouble; } private static void MarkEnd() { _tailMs = Math.Max((Time.realtimeSinceStartupAsDouble - _updateEnd) * 1000.0, _tailMs * 0.9); } private static bool AddFirst(ref PlayerLoopSystem loop, Type phase, UpdateFunction fn) { return Edit(ref loop, phase, delegate(List<PlayerLoopSystem> list) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) list.Insert(0, Stamp(fn)); }); } internal static bool AddBefore(ref PlayerLoopSystem loop, Type phase, Type before, UpdateFunction fn, Type owner = null) { return Edit(ref loop, phase, delegate(List<PlayerLoopSystem> list) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) int num = list.FindIndex((PlayerLoopSystem s) => s.type == before); list.Insert((num < 0) ? list.Count : num, Stamp(fn, owner)); }); } private static PlayerLoopSystem Stamp(UpdateFunction fn, Type owner = null) { //IL_0002: 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) return new PlayerLoopSystem { type = (owner ?? typeof(FrameClock)), updateDelegate = fn }; } private static bool Edit(ref PlayerLoopSystem loop, Type phase, Action<List<PlayerLoopSystem>> edit) { if (loop.subSystemList == null) { return false; } for (int i = 0; i < loop.subSystemList.Length; i++) { if (!(loop.subSystemList[i].type != phase)) { List<PlayerLoopSystem> list = new List<PlayerLoopSystem>(loop.subSystemList[i].subSystemList ?? Array.Empty<PlayerLoopSystem>()); edit(list); loop.subSystemList[i].subSystemList = list.ToArray(); return true; } } return false; } } internal static class VisEquipmentExtensions { private static readonly Dictionary<string, FieldInfo> Fields = new Dictionary<string, FieldInfo>(); private static object ReadField(VisEquipment equipment, string name) { if (!Fields.TryGetValue(name, out var value)) { value = AccessTools.Field(typeof(VisEquipment), name); Fields[name] = value; } return value?.GetValue(equipment); } public static string GetEquippedItemName(this VisEquipment equipment, string fieldName) { if ((Object)(object)equipment == (Object)null || string.IsNullOrEmpty(fieldName) || !fieldName.StartsWith("m_", StringComparison.Ordinal) || fieldName.Length < 3) { return null; } string name = "m_current" + char.ToUpperInvariant(fieldName[2]) + fieldName.Substring(3) + "Hash"; if (!(ReadField(equipment, name) is int num) || num == 0) { return null; } if (!((Object)(object)ObjectDB.instance != (Object)null)) { return null; } GameObject itemPrefab = ObjectDB.instance.GetItemPrefab(num); if (itemPrefab == null) { return null; } return ((Object)itemPrefab).name; } } public static class Constants { public static class Vrm { public static readonly string GoName = "evv__vrm"; public static readonly string DefaultName = "___Default.vrm"; public static readonly string Dir = PluginDir; public static readonly string[] ReadDirs = new string[2] { Path.Combine(PluginDir, "test"), PluginDir }; public static string DefaultPath => Find(DefaultName); public static string Find(string fileName) { string text = Path.Combine(Dir, fileName); if (File.Exists(text)) { return text; } Dictionary<string, string> dictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); string[] readDirs = ReadDirs; foreach (string path in readDirs) { if (!Directory.Exists(path)) { continue; } foreach (string item in Directory.EnumerateFiles(path)) { dictionary[Path.GetFileName(item)] = item; } } if (!dictionary.TryGetValue(fileName, out var value)) { return text; } return value; } } public static class Shaders { public static readonly string Dir = Resolve(); private static string Resolve() { string directoryName = Path.GetDirectoryName(typeof(Constants).Assembly.Location); if (directoryName != null) { if (File.Exists(Path.Combine(directoryName, "UniVrm.shaders"))) { return directoryName; } string text = Path.Combine(directoryName, "shaders"); if (File.Exists(Path.Combine(text, "UniVrm.shaders"))) { return text; } } return Path.Combine(PluginDir, "shaders"); } } public static class Keys { public static readonly string PlayerName = "evv_PlayerName"; } public static class VanillaCapsule { public const float Radius = 0.49f; public const float Height = 1.85f; public const float Center = 0.925f; } public const string PluginName = "EnhancedValheimVRM"; private static readonly string PluginDir = Path.Combine(Environment.CurrentDirectory, "EnhancedValheimVRM"); private const string Prefix = "evv_"; } public sealed class SharedVrmLifetime : MonoBehaviour { public readonly List<Object> ExtraResources = new List<Object>(); internal readonly HashSet<Material> ConvertedMaterials = new HashSet<Material>(); internal Action CacheReleased; internal event Action<Material> MaterialReady; internal void NotifyMaterial(Material material) { if ((Object)(object)material != (Object)null) { ConvertedMaterials.Add(material); } this.MaterialReady?.Invoke(material); } public void Release() { foreach (Object extraResource in ExtraResources) { if (extraResource != (Object)null) { Object.Destroy(extraResource); } } ExtraResources.Clear(); ConvertedMaterials.Clear(); this.MaterialReady = null; Action cacheReleased = CacheReleased; CacheReleased = null; cacheReleased?.Invoke(); } private void OnDestroy() { Release(); } } public sealed class EmbeddedSharingHost : MonoBehaviour { private ZNet _network; private CancellationTokenSource _stop; private Task _serving; private Task<int> _listening; private volatile AvatarTcpServer _storage; private Task _stopping = Task.CompletedTask; private Task _addressCheck; private float _nextCheck; private float _nextAddressCheck = 3600f; private int _port; private int _facePort; private int _bytesPerSecond; private int _slots; private int _bundleLimit; private int _uploadMbps; private string _bindAddress; private bool _dedicated; private static readonly string[] PublicAddressServices = new string[5] { "https://ipv4.icanhazip.com/", "https://api.ipify.org", "https://ipv4.myip.wtf/text", "https://checkip.amazonaws.com/", "https://ipinfo.io/ip/" }; internal AvatarTcpServer Storage { get { if (ListeningPort == 0) { return null; } return _storage; } } internal int ListeningPort { get { if ((Object)(object)_network != (Object)null && (Object)(object)_network == (Object)(object)ZNet.instance && _network.IsServer() && _network.IsDedicated() && Settings.EnableSharingServer && _serving != null && !_serving.IsCompleted) { Task<int> listening = _listening; if (listening != null && listening.Status == TaskStatus.RanToCompletion) { return _listening.Result; } } return 0; } } private void Update() { if (Time.realtimeSinceStartup < _nextCheck) { return; } _nextCheck = Time.realtimeSinceStartup + 1f; ZNet instance = ZNet.instance; if ((Object)(object)instance != (Object)null && instance.IsServer() && !instance.IsDedicated() && ZNet.IsOpenServer() && Settings.EnableSharingServer) { Logger.LogOnce("sharing-player-host", "Player-hosted VRM sharing is disabled: no verified TCP hole-punch path is implemented. Dedicated-server sharing remains available."); } if ((Object)(object)instance == (Object)null || !SharingEndpoint.ShouldHost(instance.IsServer(), instance.IsDedicated(), Settings.EnableSharingServer)) { StopHost(); return; } if (Time.realtimeSinceStartup >= _nextAddressCheck && (_addressCheck == null || _addressCheck.IsCompleted)) { _nextAddressCheck = Time.realtimeSinceStartup + 3600f; _addressCheck = Task.Run(delegate { SharingRpc.SetPublicAddress(LookUpPublicAddress()); }); } SharingDownloadPolicy policy = Settings.GetDownloadPolicy(); if (_serving != null && !_serving.IsCompleted && _bytesPerSecond == policy.BytesPerSecond && _bundleLimit == Settings.BundleLimitBytes && _slots == policy.Slots && (Object)(object)_network == (Object)(object)instance && _uploadMbps == Settings.DedicatedUploadMbps && _port == Settings.SharingPort && _facePort == Settings.FacePort && _bindAddress == Settings.SharingBindAddress && _dedicated == instance.IsDedicated()) { return; } bool num = _serving?.IsFaulted ?? false; StopHost(); if (num) { _nextCheck = Time.realtimeSinceStartup + 15f; Logger.LogOnce("sharing-listen-failed", "Cannot run embedded VRM TCP server. Check Sharing.BindAddress and ServerPort; retrying."); return; } _network = instance; _port = Settings.SharingPort; _facePort = Settings.FacePort; _bindAddress = Settings.SharingBindAddress; _dedicated = instance.IsDedicated(); _bytesPerSecond = policy.BytesPerSecond; _slots = policy.Slots; _bundleLimit = Settings.BundleLimitBytes; _uploadMbps = Settings.DedicatedUploadMbps; _stop = new CancellationTokenSource(); CancellationToken cancellation = _stop.Token; string bindAddress = _bindAddress; string path = Path.Combine(Constants.Vrm.Dir, "Server"); int port = _port; int facePort = _facePor
valheim_Data/Managed/FastSpringBone10.dll
Decompiled 20 hours agousing System; using System.CodeDom.Compiler; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using UniGLTF.SpringBoneJobs; using Unity.Jobs; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [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[78] { 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 101, 114, 118, 105, 99, 101, 46, 99, 115 }, TypesData = new byte[51] { 0, 0, 0, 0, 46, 85, 110, 105, 86, 82, 77, 49, 48, 46, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 101, 114, 118, 105, 99, 101 }, TotalFiles = 1, TotalTypes = 1, IsEditorOnly = false }; } } namespace UniVRM10.FastSpringBones; [DefaultExecutionOrder(11010)] public sealed class FastSpringBoneService : MonoBehaviour { public enum UpdateTypes { Manual, LateUpdate } [SerializeField] [Header("Runtime")] public UpdateTypes UpdateType = UpdateTypes.LateUpdate; private FastSpringBoneScheduler _fastSpringBoneScheduler; private static FastSpringBoneService _instance; public FastSpringBoneBufferCombiner BufferCombiner { get; private set; } public static FastSpringBoneService Instance { get { //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_003e: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)_instance)) { return _instance; } _instance = Object.FindFirstObjectByType<FastSpringBoneService>(); if (Object.op_Implicit((Object)(object)_instance)) { return _instance; } GameObject val = new GameObject("FastSpringBone Service"); Object.DontDestroyOnLoad((Object)val); _instance = val.AddComponent<FastSpringBoneService>(); return _instance; } } public static void Free() { Object.Destroy((Object)(object)((Component)_instance).gameObject); _instance = null; } private void OnEnable() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown BufferCombiner = new FastSpringBoneBufferCombiner(); _fastSpringBoneScheduler = new FastSpringBoneScheduler(BufferCombiner); } private void OnDisable() { BufferCombiner.Dispose(); _fastSpringBoneScheduler.Dispose(); } private void LateUpdate() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) if (UpdateType == UpdateTypes.LateUpdate) { JobHandle val = _fastSpringBoneScheduler.Schedule(Time.deltaTime, (JobHandle?)null); ((JobHandle)(ref val)).Complete(); } } public void ManualUpdate(float deltaTime) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) JobHandle val = ManualUpdate(in deltaTime, (JobHandle?)null); ((JobHandle)(ref val)).Complete(); } public JobHandle ManualUpdate(in float deltaTime, in JobHandle? dependency = null) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) if (UpdateType != UpdateTypes.Manual) { throw new ArgumentException("require UpdateTypes.Manual"); } return _fastSpringBoneScheduler.Schedule(deltaTime, dependency); } public void OnDrawGizmosSelected() { if (((Behaviour)this).enabled) { BufferCombiner.DrawGizmos(); } } }
valheim_Data/Managed/AsyncImageLoader.Runtime.dll
Decompiled 20 hours 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 System.Threading.Tasks; using Unity.Burst; using Unity.Collections; using Unity.Collections.LowLevel.Unsafe; using Unity.Jobs; using Unity.Mathematics; using Unity.Profiling; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] public static class AsyncImageLoader { public struct LoaderSettings { public bool linear; public bool markNonReadable; public bool generateMipmap; public bool autoMipmapCount; public int mipmapCount; public FreeImage.Format format; public bool logException; public static LoaderSettings Default { get { LoaderSettings result = default(LoaderSettings); result.linear = false; result.markNonReadable = false; result.generateMipmap = true; result.autoMipmapCount = true; result.format = FreeImage.Format.FIF_UNKNOWN; result.logException = true; return result; } } } public static class FreeImage { public enum Format { FIF_UNKNOWN = -1, FIF_BMP = 0, FIF_ICO = 1, FIF_JPEG = 2, FIF_JNG = 3, FIF_KOALA = 4, FIF_LBM = 5, FIF_IFF = 5, FIF_MNG = 6, FIF_PBM = 7, FIF_PBMRAW = 8, FIF_PCD = 9, FIF_PCX = 10, FIF_PGM = 11, FIF_PGMRAW = 12, FIF_PNG = 13, FIF_PPM = 14, FIF_PPMRAW = 15, FIF_RAS = 16, FIF_TARGA = 17, FIF_TIFF = 18, FIF_WBMP = 19, FIF_PSD = 20, FIF_CUT = 21, FIF_XBM = 22, FIF_XPM = 23, FIF_DDS = 24, FIF_GIF = 25, FIF_HDR = 26, FIF_FAXG3 = 27, FIF_SGI = 28, FIF_EXR = 29, FIF_J2K = 30, FIF_JP2 = 31, FIF_PFM = 32, FIF_PICT = 33, FIF_RAW = 34, FIF_WEBP = 35, FIF_JXR = 36 } internal enum Type { FIT_UNKNOWN, FIT_BITMAP, FIT_UINT16, FIT_INT16, FIT_UINT32, FIT_INT32, FIT_FLOAT, FIT_DOUBLE, FIT_COMPLEX, FIT_RGB16, FIT_RGBA16, FIT_RGBF, FIT_RGBAF } [Flags] internal enum LoadFlags { DEFAULT = 0, GIF_LOAD256 = 1, GIF_PLAYBACK = 2, ICO_MAKEALPHA = 1, JPEG_FAST = 1, JPEG_ACCURATE = 2, JPEG_CMYK = 4, JPEG_EXIFROTATE = 8, PCD_BASE = 1, PCD_BASEDIV4 = 2, PCD_BASEDIV16 = 3, PNG_IGNOREGAMMA = 1, TARGA_LOAD_RGB888 = 1, TIFF_CMYK = 1, RAW_PREVIEW = 1, RAW_DISPLAY = 2 } private const string FreeImageLibrary = "FreeImage"; [DllImport("FreeImage", EntryPoint = "FreeImage_IsLittleEndian")] internal static extern bool IsLittleEndian(); [DllImport("FreeImage", EntryPoint = "FreeImage_GetFileTypeFromMemory")] internal static extern Format GetFileTypeFromMemory(IntPtr memory, int size); [DllImport("FreeImage", EntryPoint = "FreeImage_OpenMemory")] internal static extern IntPtr OpenMemory(IntPtr data, uint size_in_bytes); [DllImport("FreeImage", EntryPoint = "FreeImage_CloseMemory")] internal static extern IntPtr CloseMemory(IntPtr data); [DllImport("FreeImage", EntryPoint = "FreeImage_LoadFromMemory")] internal static extern IntPtr LoadFromMemory(Format format, IntPtr stream, int flags); [DllImport("FreeImage", EntryPoint = "FreeImage_Unload")] internal static extern void Unload(IntPtr dib); [DllImport("FreeImage", EntryPoint = "FreeImage_ConvertToRawBits")] internal static extern void ConvertToRawBits(IntPtr bits, IntPtr dib, int pitch, uint bpp, uint red_mask, uint green_mask, uint blue_mask, bool topdown); [DllImport("FreeImage", EntryPoint = "FreeImage_GetWidth")] internal static extern uint GetWidth(IntPtr handle); [DllImport("FreeImage", EntryPoint = "FreeImage_GetHeight")] internal static extern uint GetHeight(IntPtr handle); [DllImport("FreeImage", EntryPoint = "FreeImage_GetImageType")] internal static extern Type GetImageType(IntPtr dib); [DllImport("FreeImage", EntryPoint = "FreeImage_GetBPP")] internal static extern int GetBPP(IntPtr dib); [DllImport("FreeImage", EntryPoint = "FreeImage_GetBits")] internal static extern IntPtr GetBits(IntPtr dib); [DllImport("FreeImage", EntryPoint = "FreeImage_GetLine")] internal static extern int GetLine(IntPtr dib); [DllImport("FreeImage", EntryPoint = "FreeImage_GetPitch")] internal static extern int GetPitch(IntPtr dib); } private interface IMipmapJob<TChannel> : IJobParallelFor where TChannel : struct { int2 InputSize { get; set; } int2 OutputSize { get; set; } NativeSlice<TChannel> InputChannel { get; set; } NativeSlice<TChannel> OutputChannel { get; set; } } [BurstCompile(CompileSynchronously = true)] private struct ByteChannelMipmapJob : IMipmapJob<byte>, IJobParallelFor { [ReadOnly] private NativeSlice<byte> _inputChannel; [WriteOnly] private NativeSlice<byte> _outputChannel; public int2 InputSize { get; set; } public int2 OutputSize { get; set; } public NativeSlice<byte> InputChannel { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _inputChannel; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _inputChannel = value; } } public NativeSlice<byte> OutputChannel { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _outputChannel; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _outputChannel = value; } } public void Execute(int outputIndex) { //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_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_0021: 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_00ab: 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_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) int2 val = math.int2(outputIndex % OutputSize.x, outputIndex / OutputSize.x); int2 val2 = math.int2(0); uint num = 0u; val2.y = 0; while (val2.y < 2) { val2.x = 0; while (val2.x < 2) { int2 val3 = math.min(math.mad(int2.op_Implicit(2), val, val2), InputSize - 1); int num2 = math.mad(InputSize.x, val3.y, val3.x); num += _inputChannel[num2]; val2.x++; } val2.y++; } _outputChannel[outputIndex] = (byte)(num >> 2); } } [BurstCompile(CompileSynchronously = true)] private struct ShortChannelMipmapJob : IMipmapJob<short>, IJobParallelFor { [ReadOnly] private NativeSlice<short> _inputChannel; [WriteOnly] private NativeSlice<short> _outputChannel; public int2 InputSize { get; set; } public int2 OutputSize { get; set; } public NativeSlice<short> InputChannel { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _inputChannel; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _inputChannel = value; } } public NativeSlice<short> OutputChannel { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _outputChannel; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _outputChannel = value; } } public void Execute(int outputIndex) { //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_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_0021: 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_00ab: 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_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) int2 val = math.int2(outputIndex % OutputSize.x, outputIndex / OutputSize.x); int2 val2 = math.int2(0); int num = 0; val2.y = 0; while (val2.y < 2) { val2.x = 0; while (val2.x < 2) { int2 val3 = math.min(math.mad(int2.op_Implicit(2), val, val2), InputSize - 1); int num2 = math.mad(InputSize.x, val3.y, val3.x); num += _inputChannel[num2]; val2.x++; } val2.y++; } _outputChannel[outputIndex] = (short)(num >> 2); } } [BurstCompile(CompileSynchronously = true)] private struct FloatChannelMipmapJob : IMipmapJob<float>, IJobParallelFor { [ReadOnly] private NativeSlice<float> _inputChannel; [WriteOnly] private NativeSlice<float> _outputChannel; public int2 InputSize { get; set; } public int2 OutputSize { get; set; } public NativeSlice<float> InputChannel { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _inputChannel; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _inputChannel = value; } } public NativeSlice<float> OutputChannel { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return _outputChannel; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) _outputChannel = value; } } public void Execute(int outputIndex) { //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_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_0021: 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_00af: 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_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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_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_005a: 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_0061: 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_0071: Unknown result type (might be due to invalid IL or missing references) int2 val = math.int2(outputIndex % OutputSize.x, outputIndex / OutputSize.x); int2 val2 = math.int2(0); float num = 0f; val2.y = 0; while (val2.y < 2) { val2.x = 0; while (val2.x < 2) { int2 val3 = math.min(math.mad(int2.op_Implicit(2), val, val2), InputSize - 1); int num2 = math.mad(InputSize.x, val3.y, val3.x); num += _inputChannel[num2]; val2.x++; } val2.y++; } _outputChannel[outputIndex] = 0.25f * num; } } private interface IPixel<TChannel> where TChannel : struct { static int ChannelCount() { throw new NotImplementedException(); } static int ChannelByteCount() { throw new NotImplementedException(); } } private struct R16Pixel : IPixel<short> { public short r; public static int ChannelCount() { return 1; } public static int ChannelByteCount() { return 2; } } private struct RFloatPixel : IPixel<float> { public float r; public static int ChannelCount() { return 1; } public static int ChannelByteCount() { return 4; } } private struct RGB24Pixel : IPixel<byte> { public byte r; public byte g; public byte b; public static int ChannelCount() { return 3; } public static int ChannelByteCount() { return 1; } } private struct RGB48Pixel : IPixel<short> { public short r; public short g; public short b; public static int ChannelCount() { return 3; } public static int ChannelByteCount() { return 2; } } private struct RGBA32Pixel : IPixel<byte> { public byte r; public byte g; public byte b; public byte a; public static int ChannelCount() { return 4; } public static int ChannelByteCount() { return 1; } } private struct RGBA64Pixel : IPixel<short> { public short r; public short g; public short b; public short a; public static int ChannelCount() { return 4; } public static int ChannelByteCount() { return 2; } } private struct RGBAFloatPixel : IPixel<float> { public float r; public float g; public float b; public float a; public static int ChannelCount() { return 4; } public static int ChannelByteCount() { return 4; } } [BurstCompile(CompileSynchronously = true)] private struct TransferImageToTextureJob : IJobParallelFor { public int bytesPerLine; public int bytesPerScanline; [NativeDisableUnsafePtrRestriction] public IntPtr bitsPtr; [WriteOnly] public NativeSlice<byte> textureData; public unsafe void Execute(int rowIndex) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) UnsafeUtility.MemCpy((void*)((byte*)NativeSliceUnsafeUtility.GetUnsafePtr<byte>(textureData) + rowIndex * bytesPerLine), (bitsPtr + rowIndex * bytesPerScanline).ToPointer(), (long)bytesPerLine); } } [BurstCompile(CompileSynchronously = true)] private struct TransferBGR24ImageToRGB24TextureJob : IJobParallelFor { public int bytesPerScanline; public int width; [NativeDisableUnsafePtrRestriction] public IntPtr bitsPtr; [WriteOnly] public NativeSlice<byte> textureData; public unsafe void Execute(int rowIndex) { //IL_0001: 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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: 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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: 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_0093: 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) NativeSlice<RGB24Pixel> val = NativeSliceUnsafeUtility.ConvertExistingDataToNativeSlice<RGB24Pixel>((void*)((byte*)NativeSliceUnsafeUtility.GetUnsafePtr<byte>(textureData) + (nint)(rowIndex * width) * (nint)sizeof(RGB24Pixel)), sizeof(RGB24Pixel), width); NativeSlice<RGB24Pixel> val2 = NativeSliceUnsafeUtility.ConvertExistingDataToNativeSlice<RGB24Pixel>((bitsPtr + rowIndex * bytesPerScanline).ToPointer(), sizeof(RGB24Pixel), width); val.SliceWithStride<byte>(0).CopyFrom(val2.SliceWithStride<byte>(2)); val.SliceWithStride<byte>(1).CopyFrom(val2.SliceWithStride<byte>(1)); val.SliceWithStride<byte>(2).CopyFrom(val2.SliceWithStride<byte>(0)); } } [BurstCompile(CompileSynchronously = true)] private struct TransferBGRA32ImageToRGBA32TextureJob : IJobParallelFor { public int bytesPerScanline; public int width; [NativeDisableUnsafePtrRestriction] public IntPtr bitsPtr; [WriteOnly] public NativeSlice<byte> textureData; public unsafe void Execute(int rowIndex) { //IL_0001: 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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: 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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_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_00b1: Unknown result type (might be due to invalid IL or missing references) NativeSlice<RGBA32Pixel> val = NativeSliceUnsafeUtility.ConvertExistingDataToNativeSlice<RGBA32Pixel>((void*)((byte*)NativeSliceUnsafeUtility.GetUnsafePtr<byte>(textureData) + (nint)(rowIndex * width) * (nint)sizeof(RGBA32Pixel)), sizeof(RGBA32Pixel), width); NativeSlice<RGBA32Pixel> val2 = NativeSliceUnsafeUtility.ConvertExistingDataToNativeSlice<RGBA32Pixel>((bitsPtr + rowIndex * bytesPerScanline).ToPointer(), sizeof(RGBA32Pixel), width); val.SliceWithStride<byte>(0).CopyFrom(val2.SliceWithStride<byte>(2)); val.SliceWithStride<byte>(1).CopyFrom(val2.SliceWithStride<byte>(1)); val.SliceWithStride<byte>(2).CopyFrom(val2.SliceWithStride<byte>(0)); val.SliceWithStride<byte>(3).CopyFrom(val2.SliceWithStride<byte>(3)); } } [BurstCompile(CompileSynchronously = true)] private struct TransferRGBFloatImageToRGBAFloatTextureJob : IJobParallelFor { public int bytesPerScanline; public int width; [NativeDisableUnsafePtrRestriction] public IntPtr bitsPtr; [WriteOnly] public NativeSlice<byte> textureData; public unsafe void Execute(int rowIndex) { //IL_0001: 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_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) NativeSlice<RGBAFloatPixel> val = NativeSliceUnsafeUtility.ConvertExistingDataToNativeSlice<RGBAFloatPixel>((void*)((byte*)NativeSliceUnsafeUtility.GetUnsafePtr<byte>(textureData) + (nint)(rowIndex * width) * (nint)sizeof(RGBAFloatPixel)), sizeof(RGBAFloatPixel), width); NativeSlice<float> val2 = val.SliceWithStride<float>(12); UnsafeUtility.MemCpyStride(NativeSliceUnsafeUtility.GetUnsafePtr<RGBAFloatPixel>(val), val.Stride, (bitsPtr + rowIndex * bytesPerScanline).ToPointer(), 12, 12, width); for (int i = 0; i < val2.Length; i++) { val2[i] = 1f; } } } private class ImageImporter : IDisposable { private static readonly ProfilerMarker ConstructorMarker = new ProfilerMarker("ImageImporter.Constructor"); private static readonly ProfilerMarker CreateNewTextureMarker = new ProfilerMarker("ImageImporter.CreateNewTexture"); private static readonly ProfilerMarker LoadIntoTextureMarker = new ProfilerMarker("ImageImporter.LoadIntoTexture"); private LoaderSettings _loaderSettings; private IntPtr _bitmap; private int _width; private int _height; private TextureFormat _textureFormat; private int _bytesPerPixel; private int _imageBitsPerPixel; private FreeImage.Type _imageType; public ImageImporter(byte[] imageData, LoaderSettings loaderSettings) { //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_000e: 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) ProfilerMarker constructorMarker = ConstructorMarker; AutoScope val = ((ProfilerMarker)(ref constructorMarker)).Auto(); try { _loaderSettings = loaderSettings; _bitmap = IntPtr.Zero; IntPtr intPtr = IntPtr.Zero; try { intPtr = FreeImage.OpenMemory(Marshal.UnsafeAddrOfPinnedArrayElement(imageData, 0), (uint)imageData.Length); if (_loaderSettings.format == FreeImage.Format.FIF_UNKNOWN) { _loaderSettings.format = FreeImage.GetFileTypeFromMemory(intPtr, imageData.Length); } if (_loaderSettings.format == FreeImage.Format.FIF_UNKNOWN) { throw new Exception("Cannot automatically determine the image format. Consider explicitly specifying image format."); } _bitmap = FreeImage.LoadFromMemory(_loaderSettings.format, intPtr, 2); _width = (int)FreeImage.GetWidth(_bitmap); _height = (int)FreeImage.GetHeight(_bitmap); _imageBitsPerPixel = FreeImage.GetBPP(_bitmap); _imageType = FreeImage.GetImageType(_bitmap); if (_width > MaxTextureSize || _height > MaxTextureSize) { Dispose(); throw new Exception("Texture size exceed maximum dimension supported by Unity."); } DetermineTextureFormat(); } finally { if (intPtr != IntPtr.Zero) { FreeImage.CloseMemory(intPtr); } } } finally { ((IDisposable)(AutoScope)(ref val)).Dispose(); } } public void Dispose() { if (_bitmap != IntPtr.Zero) { FreeImage.Unload(_bitmap); _bitmap = IntPtr.Zero; } } public Texture2D CreateTexture() { //IL_0014: 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: Expected O, but got Unknown int mipmapCount = GetMipmapCount(); return new Texture2D(_width, _height, _textureFormat, mipmapCount, _loaderSettings.linear); } public void ReinitializeTexture(Texture2D texture) { //IL_000e: 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_002e: 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_0062: 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_004b: Unknown result type (might be due to invalid IL or missing references) int width = ((Texture)texture).width; int height = ((Texture)texture).height; TextureFormat format = texture.format; bool flag = ((Texture)texture).mipmapCount > 1; int width2 = _width; int height2 = _height; TextureFormat textureFormat = _textureFormat; bool generateMipmap = _loaderSettings.generateMipmap; if (width != width2 || height != height2 || format != textureFormat || flag != generateMipmap) { texture.Reinitialize(_width, _height, _textureFormat, _loaderSettings.generateMipmap); } } public Texture2D CreateNewTexture() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) ProfilerMarker createNewTextureMarker = CreateNewTextureMarker; AutoScope val = ((ProfilerMarker)(ref createNewTextureMarker)).Auto(); try { Texture2D val2 = CreateTexture(); JobHandle val3 = ProcessImage(val2); ((JobHandle)(ref val3)).Complete(); val2.Apply(false, _loaderSettings.markNonReadable); return val2; } finally { ((IDisposable)(AutoScope)(ref val)).Dispose(); } } public async Task<Texture2D> CreateNewTextureAsync() { Texture2D texture = CreateTexture(); JobHandle dependency = ProcessImage(texture); while (!((JobHandle)(ref dependency)).IsCompleted) { await Task.Yield(); } ((JobHandle)(ref dependency)).Complete(); texture.Apply(false, _loaderSettings.markNonReadable); return texture; } public void LoadIntoTexture(Texture2D texture) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) ProfilerMarker loadIntoTextureMarker = LoadIntoTextureMarker; AutoScope val = ((ProfilerMarker)(ref loadIntoTextureMarker)).Auto(); try { ReinitializeTexture(texture); JobHandle val2 = ProcessImage(texture); ((JobHandle)(ref val2)).Complete(); texture.Apply(false, _loaderSettings.markNonReadable); } finally { ((IDisposable)(AutoScope)(ref val)).Dispose(); } } public async Task LoadIntoTextureAsync(Texture2D texture) { ReinitializeTexture(texture); JobHandle dependency = ProcessImage(texture); while (!((JobHandle)(ref dependency)).IsCompleted) { await Task.Yield(); } ((JobHandle)(ref dependency)).Complete(); texture.Apply(false, _loaderSettings.markNonReadable); } private int GetMipmapCount() { if (!_loaderSettings.generateMipmap) { return 1; } int num = Mathf.FloorToInt(Mathf.Log((float)Mathf.Max(_width, _height), 2f)) + 1; num = Mathf.Clamp(num, 2, MaxMipmapLevel); if (!_loaderSettings.autoMipmapCount) { num = Mathf.Clamp(_loaderSettings.mipmapCount, 2, num); } return num; } private int2 GetMipmapSize(int mipmapLevel) { //IL_004d: 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) if (mipmapLevel == 0) { return math.int2(_width, _height); } float num = Mathf.Pow(2f, (float)(-mipmapLevel)); int num2 = Mathf.Max(1, Mathf.FloorToInt(num * (float)_width)); int num3 = Mathf.Max(1, Mathf.FloorToInt(num * (float)_height)); return math.int2(num2, num3); } private void DetermineTextureFormat() { //IL_0093: 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_00b3: 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) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) switch (_imageType) { case FreeImage.Type.FIT_BITMAP: switch (_imageBitsPerPixel) { case 24: _textureFormat = (TextureFormat)3; _bytesPerPixel = 3; break; case 32: _textureFormat = (TextureFormat)4; _bytesPerPixel = 4; break; default: throw new Exception($"Bitmap bitdepth not supported: {_imageBitsPerPixel}"); } break; case FreeImage.Type.FIT_UINT16: case FreeImage.Type.FIT_INT16: _textureFormat = (TextureFormat)9; _bytesPerPixel = 2; break; case FreeImage.Type.FIT_FLOAT: _textureFormat = (TextureFormat)18; _bytesPerPixel = 4; break; case FreeImage.Type.FIT_RGB16: _textureFormat = (TextureFormat)73; _bytesPerPixel = 6; break; case FreeImage.Type.FIT_RGBA16: _textureFormat = (TextureFormat)74; _bytesPerPixel = 8; break; case FreeImage.Type.FIT_RGBF: case FreeImage.Type.FIT_RGBAF: _textureFormat = (TextureFormat)20; _bytesPerPixel = 16; break; default: throw new Exception($"Image type not supported: {_imageType}. Please submit a new GitHub issue if you want this type to be supported."); } } public JobHandle ProcessImage(Texture2D texture) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) JobHandle dependency = ScheduleLoadTextureDataJob(texture); return ScheduleMipmapJobForEachLevels(texture, dependency); } public JobHandle ScheduleLoadTextureDataJob(Texture2D texture, JobHandle dependency = default(JobHandle)) { //IL_0003: 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_0157: 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_0166: 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_011f: 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_012e: Unknown result type (might be due to invalid IL or missing references) //IL_012f: 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_0081: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00be: 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_00cd: Unknown result type (might be due to invalid IL or missing references) NativeSlice<byte> textureData = GetTextureData(texture, 0); IntPtr bits = FreeImage.GetBits(_bitmap); int line = FreeImage.GetLine(_bitmap); int pitch = FreeImage.GetPitch(_bitmap); if (FreeImage.IsLittleEndian() && _imageType == FreeImage.Type.FIT_BITMAP) { switch (_imageBitsPerPixel) { case 24: { TransferBGR24ImageToRGB24TextureJob transferBGR24ImageToRGB24TextureJob = default(TransferBGR24ImageToRGB24TextureJob); transferBGR24ImageToRGB24TextureJob.bytesPerScanline = pitch; transferBGR24ImageToRGB24TextureJob.width = _width; transferBGR24ImageToRGB24TextureJob.bitsPtr = bits; transferBGR24ImageToRGB24TextureJob.textureData = textureData; return IJobParallelForExtensions.Schedule<TransferBGR24ImageToRGB24TextureJob>(transferBGR24ImageToRGB24TextureJob, _height, 1, dependency); } case 32: { TransferBGRA32ImageToRGBA32TextureJob transferBGRA32ImageToRGBA32TextureJob = default(TransferBGRA32ImageToRGBA32TextureJob); transferBGRA32ImageToRGBA32TextureJob.bytesPerScanline = pitch; transferBGRA32ImageToRGBA32TextureJob.width = _width; transferBGRA32ImageToRGBA32TextureJob.bitsPtr = bits; transferBGRA32ImageToRGBA32TextureJob.textureData = textureData; return IJobParallelForExtensions.Schedule<TransferBGRA32ImageToRGBA32TextureJob>(transferBGRA32ImageToRGBA32TextureJob, _height, 1, dependency); } default: throw new Exception($"Bitmap bitdepth not supported: {_imageBitsPerPixel}"); } } if (_imageType == FreeImage.Type.FIT_RGBF) { TransferRGBFloatImageToRGBAFloatTextureJob transferRGBFloatImageToRGBAFloatTextureJob = default(TransferRGBFloatImageToRGBAFloatTextureJob); transferRGBFloatImageToRGBAFloatTextureJob.bytesPerScanline = pitch; transferRGBFloatImageToRGBAFloatTextureJob.width = _width; transferRGBFloatImageToRGBAFloatTextureJob.bitsPtr = bits; transferRGBFloatImageToRGBAFloatTextureJob.textureData = textureData; return IJobParallelForExtensions.Schedule<TransferRGBFloatImageToRGBAFloatTextureJob>(transferRGBFloatImageToRGBAFloatTextureJob, _height, 1, dependency); } TransferImageToTextureJob transferImageToTextureJob = default(TransferImageToTextureJob); transferImageToTextureJob.bytesPerLine = line; transferImageToTextureJob.bytesPerScanline = pitch; transferImageToTextureJob.bitsPtr = bits; transferImageToTextureJob.textureData = textureData; return IJobParallelForExtensions.Schedule<TransferImageToTextureJob>(transferImageToTextureJob, _height, 1, dependency); } public JobHandle ScheduleMipmapJobForEachLevels(Texture2D texture, JobHandle dependency = default(JobHandle)) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Invalid comparison between Unknown and I4 //IL_0171: 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_0054: Invalid comparison between Unknown and I4 //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Invalid comparison between Unknown and I4 //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Invalid comparison between Unknown and I4 //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Invalid comparison between Unknown and I4 //IL_00c3: 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) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: 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_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Invalid comparison between Unknown and I4 //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: 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_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Invalid comparison between Unknown and I4 //IL_00a6: 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_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Invalid comparison between Unknown and I4 //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0160: 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_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: 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_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: 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_0049: Invalid comparison between Unknown and I4 //IL_0114: 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_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011f: 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_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0130: 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_0133: 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_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008a: 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_008d: 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_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) int2 inputSize = GetMipmapSize(0); NativeSlice<byte> inputSlice = GetTextureData(texture, 0); int2 mipmapSize; NativeSlice<byte> textureData; JobHandle val; for (int i = 1; i < ((Texture)texture).mipmapCount; dependency = val, inputSize = mipmapSize, inputSlice = textureData, i++) { mipmapSize = GetMipmapSize(i); textureData = GetTextureData(texture, i); TextureFormat textureFormat = _textureFormat; if ((int)textureFormat <= 9) { if ((int)textureFormat == 3) { val = ScheduleMipmapJobForEachChannels<byte, RGB24Pixel, ByteChannelMipmapJob>(RGB24Pixel.ChannelCount(), RGB24Pixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency); continue; } if ((int)textureFormat == 4) { val = ScheduleMipmapJobForEachChannels<byte, RGBA32Pixel, ByteChannelMipmapJob>(RGBA32Pixel.ChannelCount(), RGBA32Pixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency); continue; } if ((int)textureFormat == 9) { val = ScheduleMipmapJobForEachChannels<short, R16Pixel, ShortChannelMipmapJob>(R16Pixel.ChannelCount(), R16Pixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency); continue; } } else if ((int)textureFormat <= 20) { if ((int)textureFormat == 18) { val = ScheduleMipmapJobForEachChannels<float, RFloatPixel, FloatChannelMipmapJob>(RFloatPixel.ChannelCount(), RFloatPixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency); continue; } if ((int)textureFormat == 20) { val = ScheduleMipmapJobForEachChannels<float, RGBAFloatPixel, FloatChannelMipmapJob>(RGBAFloatPixel.ChannelCount(), RGBAFloatPixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency); continue; } } else { if ((int)textureFormat == 73) { val = ScheduleMipmapJobForEachChannels<short, RGB48Pixel, ShortChannelMipmapJob>(RGB48Pixel.ChannelCount(), RGB48Pixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency); continue; } if ((int)textureFormat == 74) { val = ScheduleMipmapJobForEachChannels<short, RGBA64Pixel, ShortChannelMipmapJob>(RGBA64Pixel.ChannelCount(), RGBA64Pixel.ChannelByteCount(), inputSlice, inputSize, textureData, mipmapSize, dependency); continue; } } throw new NotSupportedException($"Texture format not supported: {_textureFormat}"); } return dependency; } private unsafe JobHandle ScheduleMipmapJobForEachChannels<TChannel, TPixel, TMipmapJob>(int channelCount, int channelByteCount, NativeSlice<byte> inputSlice, int2 inputSize, NativeSlice<byte> outputSlice, int2 outputSize, JobHandle dependency) where TChannel : struct where TPixel : struct, IPixel<TChannel> where TMipmapJob : struct, IMipmapJob<TChannel> { //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_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_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0031: 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_0054: 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_0085: 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_008c: 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) int num = math.min(outputSize.x, outputSize.y); NativeSlice<TPixel> val = inputSlice.SliceConvert<TPixel>(); NativeSlice<TPixel> val2 = outputSlice.SliceConvert<TPixel>(); for (int i = 0; i < channelCount; i++) { dependency = IJobParallelForExtensions.Schedule<TMipmapJob>(new TMipmapJob { InputSize = inputSize, OutputSize = outputSize, InputChannel = ((NativeSlice<?>*)(&val))->SliceWithStride<TChannel>(i * channelByteCount), OutputChannel = ((NativeSlice<?>*)(&val2))->SliceWithStride<TChannel>(i * channelByteCount) }, val2.Length, num, dependency); } return dependency; } private NativeSlice<byte> GetTextureData(Texture2D texture, int mipmapLevel) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return NativeSlice<byte>.op_Implicit(texture.GetPixelData<byte>(mipmapLevel)); } } private static readonly int MaxTextureSize = SystemInfo.maxTextureSize; private static readonly int MaxMipmapLevel = (int)Mathf.Log((float)SystemInfo.maxTextureSize, 2f) + 1; public static bool LoadImage(Texture2D texture, byte[] data) { return LoadImage(texture, data, LoaderSettings.Default); } public static bool LoadImage(Texture2D texture, byte[] data, bool markNonReadable) { LoaderSettings @default = LoaderSettings.Default; @default.markNonReadable = markNonReadable; return LoadImage(texture, data, @default); } public static bool LoadImage(Texture2D texture, byte[] data, LoaderSettings loaderSettings) { try { if (data == null || data.Length == 0) { throw new Exception("Input data is null or empty."); } using (ImageImporter imageImporter = new ImageImporter(data, loaderSettings)) { imageImporter.LoadIntoTexture(texture); } return true; } catch (Exception ex) { if (loaderSettings.logException) { Debug.LogException(ex); } return false; } } public static Task<bool> LoadImageAsync(Texture2D texture, byte[] data) { return LoadImageAsync(texture, data, LoaderSettings.Default); } public static Task<bool> LoadImageAsync(Texture2D texture, byte[] data, bool markNonReadable) { LoaderSettings @default = LoaderSettings.Default; @default.markNonReadable = markNonReadable; return LoadImageAsync(texture, data, @default); } public static async Task<bool> LoadImageAsync(Texture2D texture, byte[] data, LoaderSettings loaderSettings) { try { if (data == null || data.Length == 0) { throw new Exception("Input data is null or empty."); } using (ImageImporter importer = await Task.Run(() => new ImageImporter(data, loaderSettings))) { await importer.LoadIntoTextureAsync(texture); } return true; } catch (Exception ex) { if (loaderSettings.logException) { Debug.LogException(ex); } return false; } } public static Texture2D CreateFromImage(byte[] data) { return CreateFromImage(data, LoaderSettings.Default); } public static Texture2D CreateFromImage(byte[] data, LoaderSettings loaderSettings) { try { if (data == null || data.Length == 0) { throw new Exception("Input data is null or empty."); } using ImageImporter imageImporter = new ImageImporter(data, loaderSettings); return imageImporter.CreateNewTexture(); } catch (Exception ex) { if (loaderSettings.logException) { Debug.LogException(ex); } return null; } } public static Task<Texture2D> CreateFromImageAsync(byte[] data) { return CreateFromImageAsync(data, LoaderSettings.Default); } public static async Task<Texture2D> CreateFromImageAsync(byte[] data, LoaderSettings loaderSettings) { try { if (data == null || data.Length == 0) { throw new Exception("Input data is null or empty."); } using ImageImporter importer = await Task.Run(() => new ImageImporter(data, loaderSettings)); return await importer.CreateNewTextureAsync(); } catch (Exception ex) { if (loaderSettings.logException) { Debug.LogException(ex); } return null; } } } [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() { MonoScriptData result = default(MonoScriptData); result.FilePathsData = new byte[630] { 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, 108, 111, 111, 111, 111, 111, 110, 103, 46, 97, 115, 121, 110, 99, 105, 109, 97, 103, 101, 108, 111, 97, 100, 101, 114, 64, 99, 99, 99, 102, 48, 56, 54, 98, 49, 53, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 100, 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, 108, 111, 111, 111, 111, 111, 110, 103, 46, 97, 115, 121, 110, 99, 105, 109, 97, 103, 101, 108, 111, 97, 100, 101, 114, 64, 99, 99, 99, 102, 48, 56, 54, 98, 49, 53, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 92, 70, 114, 101, 101, 73, 109, 97, 103, 101, 46, 99, 115, 0, 0, 0, 5, 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, 108, 111, 111, 111, 111, 111, 110, 103, 46, 97, 115, 121, 110, 99, 105, 109, 97, 103, 101, 108, 111, 97, 100, 101, 114, 64, 99, 99, 99, 102, 48, 56, 54, 98, 49, 53, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 92, 77, 105, 112, 109, 97, 112, 74, 111, 98, 115, 46, 99, 115, 0, 0, 0, 9, 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, 108, 111, 111, 111, 111, 111, 110, 103, 46, 97, 115, 121, 110, 99, 105, 109, 97, 103, 101, 108, 111, 97, 100, 101, 114, 64, 99, 99, 99, 102, 48, 56, 54, 98, 49, 53, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 92, 80, 105, 120, 101, 108, 115, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 107, 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, 108, 111, 111, 111, 111, 111, 110, 103, 46, 97, 115, 121, 110, 99, 105, 109, 97, 103, 101, 108, 111, 97, 100, 101, 114, 64, 99, 99, 99, 102, 48, 56, 54, 98, 49, 53, 92, 82, 117, 110, 116, 105, 109, 101, 92, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 92, 84, 114, 97, 110, 115, 102, 101, 114, 73, 109, 97, 103, 101, 74, 111, 98, 46, 99, 115, 0, 0, 0, 2, 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, 108, 111, 111, 111, 111, 111, 110, 103, 46, 97, 115, 121, 110, 99, 105, 109, 97, 103, 101, 108, 111, 97, 100, 101, 114, 64, 99, 99, 99, 102, 48, 56, 54, 98, 49, 53, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 109, 97, 103, 101, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115 }; result.TypesData = new byte[878] { 1, 0, 0, 0, 17, 124, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 0, 0, 0, 0, 31, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 76, 111, 97, 100, 101, 114, 83, 101, 116, 116, 105, 110, 103, 115, 1, 0, 0, 0, 17, 124, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 0, 0, 0, 0, 26, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 70, 114, 101, 101, 73, 109, 97, 103, 101, 1, 0, 0, 0, 17, 124, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 0, 0, 0, 0, 27, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 73, 77, 105, 112, 109, 97, 112, 74, 111, 98, 0, 0, 0, 0, 37, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 66, 121, 116, 101, 67, 104, 97, 110, 110, 101, 108, 77, 105, 112, 109, 97, 112, 74, 111, 98, 0, 0, 0, 0, 38, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 83, 104, 111, 114, 116, 67, 104, 97, 110, 110, 101, 108, 77, 105, 112, 109, 97, 112, 74, 111, 98, 0, 0, 0, 0, 38, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 70, 108, 111, 97, 116, 67, 104, 97, 110, 110, 101, 108, 77, 105, 112, 109, 97, 112, 74, 111, 98, 1, 0, 0, 0, 17, 124, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 0, 0, 0, 0, 23, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 73, 80, 105, 120, 101, 108, 0, 0, 0, 0, 25, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 82, 49, 54, 80, 105, 120, 101, 108, 0, 0, 0, 0, 28, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 82, 70, 108, 111, 97, 116, 80, 105, 120, 101, 108, 0, 0, 0, 0, 27, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 82, 71, 66, 50, 52, 80, 105, 120, 101, 108, 0, 0, 0, 0, 27, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 82, 71, 66, 52, 56, 80, 105, 120, 101, 108, 0, 0, 0, 0, 28, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 82, 71, 66, 65, 51, 50, 80, 105, 120, 101, 108, 0, 0, 0, 0, 28, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 82, 71, 66, 65, 54, 52, 80, 105, 120, 101, 108, 0, 0, 0, 0, 31, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 82, 71, 66, 65, 70, 108, 111, 97, 116, 80, 105, 120, 101, 108, 1, 0, 0, 0, 17, 124, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 0, 0, 0, 0, 42, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 84, 114, 97, 110, 115, 102, 101, 114, 73, 109, 97, 103, 101, 84, 111, 84, 101, 120, 116, 117, 114, 101, 74, 111, 98, 0, 0, 0, 0, 52, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 84, 114, 97, 110, 115, 102, 101, 114, 66, 71, 82, 50, 52, 73, 109, 97, 103, 101, 84, 111, 82, 71, 66, 50, 52, 84, 101, 120, 116, 117, 114, 101, 74, 111, 98, 0, 0, 0, 0, 54, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 84, 114, 97, 110, 115, 102, 101, 114, 66, 71, 82, 65, 51, 50, 73, 109, 97, 103, 101, 84, 111, 82, 71, 66, 65, 51, 50, 84, 101, 120, 116, 117, 114, 101, 74, 111, 98, 0, 0, 0, 0, 59, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 84, 114, 97, 110, 115, 102, 101, 114, 82, 71, 66, 70, 108, 111, 97, 116, 73, 109, 97, 103, 101, 84, 111, 82, 71, 66, 65, 70, 108, 111, 97, 116, 84, 101, 120, 116, 117, 114, 101, 74, 111, 98, 1, 0, 0, 0, 17, 124, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 0, 0, 0, 0, 30, 65, 115, 121, 110, 99, 73, 109, 97, 103, 101, 76, 111, 97, 100, 101, 114, 124, 73, 109, 97, 103, 101, 73, 109, 112, 111, 114, 116, 101, 114 }; result.TotalFiles = 6; result.TotalTypes = 25; result.IsEditorOnly = false; return result; } }
valheim_Data/Managed/MToon.dll
Decompiled 20 hours agousing System; using System.CodeDom.Compiler; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using UniGLTF; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [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[365] { 0, 0, 0, 1, 0, 0, 0, 48, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 77, 84, 111, 111, 110, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 110, 117, 109, 115, 46, 99, 115, 0, 0, 0, 13, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 77, 84, 111, 111, 110, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 84, 111, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 48, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 77, 84, 111, 111, 110, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 77, 84, 111, 111, 110, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 71, 101, 116, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 77, 84, 111, 111, 110, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 83, 101, 116, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 77, 84, 111, 111, 110, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 86, 101, 114, 115, 105, 111, 110, 46, 99, 115 }, TypesData = new byte[480] { 0, 0, 0, 0, 28, 77, 84, 111, 111, 110, 124, 82, 101, 110, 100, 101, 114, 81, 117, 101, 117, 101, 82, 101, 113, 117, 105, 114, 101, 109, 101, 110, 116, 0, 0, 0, 0, 21, 77, 84, 111, 111, 110, 124, 77, 84, 111, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 20, 77, 84, 111, 111, 110, 124, 77, 101, 116, 97, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 25, 77, 84, 111, 111, 110, 124, 82, 101, 110, 100, 101, 114, 105, 110, 103, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 21, 77, 84, 111, 111, 110, 124, 67, 111, 108, 111, 114, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 24, 77, 84, 111, 111, 110, 124, 76, 105, 103, 104, 116, 105, 110, 103, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 33, 77, 84, 111, 111, 110, 124, 76, 105, 116, 65, 110, 100, 83, 104, 97, 100, 101, 77, 105, 120, 105, 110, 103, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 33, 77, 84, 111, 111, 110, 124, 76, 105, 103, 104, 116, 105, 110, 103, 73, 110, 102, 108, 117, 101, 110, 99, 101, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 24, 77, 84, 111, 111, 110, 124, 69, 109, 105, 115, 115, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 22, 77, 84, 111, 111, 110, 124, 77, 97, 116, 67, 97, 112, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 19, 77, 84, 111, 111, 110, 124, 82, 105, 109, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 22, 77, 84, 111, 111, 110, 124, 78, 111, 114, 109, 97, 108, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 23, 77, 84, 111, 111, 110, 124, 79, 117, 116, 108, 105, 110, 101, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 31, 77, 84, 111, 111, 110, 124, 84, 101, 120, 116, 117, 114, 101, 85, 118, 67, 111, 111, 114, 100, 115, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 1, 0, 0, 0, 11, 77, 84, 111, 111, 110, 124, 85, 116, 105, 108, 115, 1, 0, 0, 0, 11, 77, 84, 111, 111, 110, 124, 85, 116, 105, 108, 115, 1, 0, 0, 0, 11, 77, 84, 111, 111, 110, 124, 85, 116, 105, 108, 115, 1, 0, 0, 0, 11, 77, 84, 111, 111, 110, 124, 85, 116, 105, 108, 115 }, TotalFiles = 6, TotalTypes = 18, IsEditorOnly = false }; } } namespace MToon; public enum DebugMode { None, Normal, LitShadeRate } public enum OutlineColorMode { FixedColor, MixedLighting } public enum OutlineWidthMode { None, WorldCoordinates, ScreenCoordinates } public enum RenderMode { Opaque, Cutout, Transparent, TransparentWithZWrite } public enum CullMode { Off, Front, Back } public struct RenderQueueRequirement { public int DefaultValue; public int MinValue; public int MaxValue; } public class MToonDefinition { public MetaDefinition Meta; public RenderingDefinition Rendering; public ColorDefinition Color; public LightingDefinition Lighting; public EmissionDefinition Emission; public MatCapDefinition MatCap; public RimDefinition Rim; public OutlineDefinition Outline; public TextureUvCoordsDefinition TextureOption; } public class MetaDefinition { public string Implementation; public int VersionNumber; } public class RenderingDefinition { public RenderMode RenderMode; public CullMode CullMode; public int RenderQueueOffsetNumber; } public class ColorDefinition { public Color LitColor; public Texture2D LitMultiplyTexture; public Color ShadeColor; public Texture2D ShadeMultiplyTexture; public float CutoutThresholdValue; } public class LightingDefinition { public LitAndShadeMixingDefinition LitAndShadeMixing; public LightingInfluenceDefinition LightingInfluence; public NormalDefinition Normal; } public class LitAndShadeMixingDefinition { public float ShadingShiftValue; public float ShadingToonyValue; public float ShadowReceiveMultiplierValue; public Texture2D ShadowReceiveMultiplierMultiplyTexture; public float LitAndShadeMixingMultiplierValue; public Texture2D LitAndShadeMixingMultiplierMultiplyTexture; } public class LightingInfluenceDefinition { public float LightColorAttenuationValue; public float GiIntensityValue; } public class EmissionDefinition { public Color EmissionColor; public Texture2D EmissionMultiplyTexture; } public class MatCapDefinition { public Texture2D AdditiveTexture; } public class RimDefinition { public Color RimColor; public Texture2D RimMultiplyTexture; public float RimLightingMixValue; public float RimFresnelPowerValue; public float RimLiftValue; } public class NormalDefinition { public Texture2D NormalTexture; public float NormalScaleValue; } public class OutlineDefinition { public OutlineWidthMode OutlineWidthMode; public float OutlineWidthValue; public Texture2D OutlineWidthMultiplyTexture; public float OutlineScaledMaxDistanceValue; public OutlineColorMode OutlineColorMode; public Color OutlineColor; public float OutlineLightingMixValue; } public class TextureUvCoordsDefinition { public Vector2 MainTextureLeftBottomOriginScale; public Vector2 MainTextureLeftBottomOriginOffset; public Texture2D UvAnimationMaskTexture; public float UvAnimationScrollXSpeedValue; public float UvAnimationScrollYSpeedValue; public float UvAnimationRotationSpeedValue; } public static class Utils { public const string ShaderName = "VRM/MToon"; public const string PropVersion = "_MToonVersion"; public const string PropDebugMode = "_DebugMode"; public const string PropOutlineWidthMode = "_OutlineWidthMode"; public const string PropOutlineColorMode = "_OutlineColorMode"; public const string PropBlendMode = "_BlendMode"; public const string PropCullMode = "_CullMode"; public const string PropOutlineCullMode = "_OutlineCullMode"; public const string PropCutoff = "_Cutoff"; public const string PropColor = "_Color"; public const string PropShadeColor = "_ShadeColor"; public const string PropMainTex = "_MainTex"; public const string PropShadeTexture = "_ShadeTexture"; public const string PropBumpScale = "_BumpScale"; public const string PropBumpMap = "_BumpMap"; public const string PropReceiveShadowRate = "_ReceiveShadowRate"; public const string PropReceiveShadowTexture = "_ReceiveShadowTexture"; public const string PropShadingGradeRate = "_ShadingGradeRate"; public const string PropShadingGradeTexture = "_ShadingGradeTexture"; public const string PropShadeShift = "_ShadeShift"; public const string PropShadeToony = "_ShadeToony"; public const string PropLightColorAttenuation = "_LightColorAttenuation"; public const string PropIndirectLightIntensity = "_IndirectLightIntensity"; public const string PropRimColor = "_RimColor"; public const string PropRimTexture = "_RimTexture"; public const string PropRimLightingMix = "_RimLightingMix"; public const string PropRimFresnelPower = "_RimFresnelPower"; public const string PropRimLift = "_RimLift"; public const string PropSphereAdd = "_SphereAdd"; public const string PropEmissionColor = "_EmissionColor"; public const string PropEmissionMap = "_EmissionMap"; public const string PropOutlineWidthTexture = "_OutlineWidthTexture"; public const string PropOutlineWidth = "_OutlineWidth"; public const string PropOutlineScaledMaxDistance = "_OutlineScaledMaxDistance"; public const string PropOutlineColor = "_OutlineColor"; public const string PropOutlineLightingMix = "_OutlineLightingMix"; public const string PropUvAnimMaskTexture = "_UvAnimMaskTexture"; public const string PropUvAnimScrollX = "_UvAnimScrollX"; public const string PropUvAnimScrollY = "_UvAnimScrollY"; public const string PropUvAnimRotation = "_UvAnimRotation"; public const string PropSrcBlend = "_SrcBlend"; public const string PropDstBlend = "_DstBlend"; public const string PropZWrite = "_ZWrite"; public const string PropAlphaToMask = "_AlphaToMask"; public const string KeyNormalMap = "_NORMALMAP"; public const string KeyAlphaTestOn = "_ALPHATEST_ON"; public const string KeyAlphaBlendOn = "_ALPHABLEND_ON"; public const string KeyAlphaPremultiplyOn = "_ALPHAPREMULTIPLY_ON"; public const string KeyOutlineWidthWorld = "MTOON_OUTLINE_WIDTH_WORLD"; public const string KeyOutlineWidthScreen = "MTOON_OUTLINE_WIDTH_SCREEN"; public const string KeyOutlineColorFixed = "MTOON_OUTLINE_COLOR_FIXED"; public const string KeyOutlineColorMixed = "MTOON_OUTLINE_COLOR_MIXED"; public const string KeyDebugNormal = "MTOON_DEBUG_NORMAL"; public const string KeyDebugLitShadeRate = "MTOON_DEBUG_LITSHADERATE"; public const string TagRenderTypeKey = "RenderType"; public const string TagRenderTypeValueOpaque = "Opaque"; public const string TagRenderTypeValueTransparentCutout = "TransparentCutout"; public const string TagRenderTypeValueTransparent = "Transparent"; public const int DisabledIntValue = 0; public const int EnabledIntValue = 1; public const string Implementation = "Santarh/MToon"; public const int VersionNumber = 39; public static RenderQueueRequirement GetRenderQueueRequirement(RenderMode renderMode) { return renderMode switch { RenderMode.Opaque => new RenderQueueRequirement { DefaultValue = -1, MinValue = -1, MaxValue = -1 }, RenderMode.Cutout => new RenderQueueRequirement { DefaultValue = 2450, MinValue = 2450, MaxValue = 2450 }, RenderMode.Transparent => new RenderQueueRequirement { DefaultValue = 3000, MinValue = 2951, MaxValue = 3000 }, RenderMode.TransparentWithZWrite => new RenderQueueRequirement { DefaultValue = 2501, MinValue = 2501, MaxValue = 2550 }, _ => throw new ArgumentOutOfRangeException("renderMode", renderMode, null), }; } public static MToonDefinition GetMToonParametersFromMaterial(Material material) { //IL_006e: 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_0090: 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_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Unknown result type (might be due to invalid IL or missing references) //IL_02ca: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) return new MToonDefinition { Meta = new MetaDefinition { Implementation = "Santarh/MToon", VersionNumber = material.GetInt("_MToonVersion") }, Rendering = new RenderingDefinition { RenderMode = GetBlendMode(material), CullMode = GetCullMode(material), RenderQueueOffsetNumber = GetRenderQueueOffset(material, GetRenderQueueOriginMode(material)) }, Color = new ColorDefinition { LitColor = GetColor(material, "_Color"), LitMultiplyTexture = GetTexture(material, "_MainTex"), ShadeColor = GetColor(material, "_ShadeColor"), ShadeMultiplyTexture = GetTexture(material, "_ShadeTexture"), CutoutThresholdValue = GetValue(material, "_Cutoff") }, Lighting = new LightingDefinition { LitAndShadeMixing = new LitAndShadeMixingDefinition { ShadingShiftValue = GetValue(material, "_ShadeShift"), ShadingToonyValue = GetValue(material, "_ShadeToony"), ShadowReceiveMultiplierValue = GetValue(material, "_ReceiveShadowRate"), ShadowReceiveMultiplierMultiplyTexture = GetTexture(material, "_ReceiveShadowTexture"), LitAndShadeMixingMultiplierValue = GetValue(material, "_ShadingGradeRate"), LitAndShadeMixingMultiplierMultiplyTexture = GetTexture(material, "_ShadingGradeTexture") }, LightingInfluence = new LightingInfluenceDefinition { LightColorAttenuationValue = GetValue(material, "_LightColorAttenuation"), GiIntensityValue = GetValue(material, "_IndirectLightIntensity") }, Normal = new NormalDefinition { NormalTexture = GetTexture(material, "_BumpMap"), NormalScaleValue = GetValue(material, "_BumpScale") } }, Emission = new EmissionDefinition { EmissionColor = GetColor(material, "_EmissionColor"), EmissionMultiplyTexture = GetTexture(material, "_EmissionMap") }, MatCap = new MatCapDefinition { AdditiveTexture = GetTexture(material, "_SphereAdd") }, Rim = new RimDefinition { RimColor = GetColor(material, "_RimColor"), RimMultiplyTexture = GetTexture(material, "_RimTexture"), RimLightingMixValue = GetValue(material, "_RimLightingMix"), RimFresnelPowerValue = GetValue(material, "_RimFresnelPower"), RimLiftValue = GetValue(material, "_RimLift") }, Outline = new OutlineDefinition { OutlineWidthMode = GetOutlineWidthMode(material), OutlineWidthValue = GetValue(material, "_OutlineWidth"), OutlineWidthMultiplyTexture = GetTexture(material, "_OutlineWidthTexture"), OutlineScaledMaxDistanceValue = GetValue(material, "_OutlineScaledMaxDistance"), OutlineColorMode = GetOutlineColorMode(material), OutlineColor = GetColor(material, "_OutlineColor"), OutlineLightingMixValue = GetValue(material, "_OutlineLightingMix") }, TextureOption = new TextureUvCoordsDefinition { MainTextureLeftBottomOriginScale = material.GetTextureScale("_MainTex"), MainTextureLeftBottomOriginOffset = material.GetTextureOffset("_MainTex"), UvAnimationMaskTexture = GetTexture(material, "_UvAnimMaskTexture"), UvAnimationScrollXSpeedValue = GetValue(material, "_UvAnimScrollX"), UvAnimationScrollYSpeedValue = GetValue(material, "_UvAnimScrollY"), UvAnimationRotationSpeedValue = GetValue(material, "_UvAnimRotation") } }; } private static float GetValue(Material material, string propertyName) { return material.GetFloat(propertyName); } private static Color GetColor(Material material, string propertyName) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return material.GetColor(propertyName); } private static Texture2D GetTexture(Material material, string propertyName) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown return (Texture2D)material.GetTexture(propertyName); } private static RenderMode GetBlendMode(Material material) { if (material.IsKeywordEnabled("_ALPHATEST_ON")) { return RenderMode.Cutout; } if (material.IsKeywordEnabled("_ALPHABLEND_ON")) { switch (material.GetInt("_ZWrite")) { case 1: return RenderMode.TransparentWithZWrite; case 0: return RenderMode.Transparent; default: UniGLTFLogger.Warning("Invalid ZWrite Int Value.", (Object)null); return RenderMode.Transparent; } } return RenderMode.Opaque; } private static CullMode GetCullMode(Material material) { switch ((CullMode)material.GetInt("_CullMode")) { case CullMode.Off: return CullMode.Off; case CullMode.Front: return CullMode.Front; case CullMode.Back: return CullMode.Back; default: UniGLTFLogger.Warning("Invalid CullMode.", (Object)null); return CullMode.Back; } } private static OutlineWidthMode GetOutlineWidthMode(Material material) { if (material.IsKeywordEnabled("MTOON_OUTLINE_WIDTH_WORLD")) { return OutlineWidthMode.WorldCoordinates; } if (material.IsKeywordEnabled("MTOON_OUTLINE_WIDTH_SCREEN")) { return OutlineWidthMode.ScreenCoordinates; } return OutlineWidthMode.None; } private static OutlineColorMode GetOutlineColorMode(Material material) { if (material.IsKeywordEnabled("MTOON_OUTLINE_COLOR_FIXED")) { return OutlineColorMode.FixedColor; } if (material.IsKeywordEnabled("MTOON_OUTLINE_COLOR_MIXED")) { return OutlineColorMode.MixedLighting; } return OutlineColorMode.FixedColor; } private static RenderMode GetRenderQueueOriginMode(Material material) { return GetBlendMode(material); } private static int GetRenderQueueOffset(Material material, RenderMode originMode) { int renderQueue = material.renderQueue; RenderQueueRequirement renderQueueRequirement = GetRenderQueueRequirement(originMode); if (renderQueue < renderQueueRequirement.MinValue || renderQueue > renderQueueRequirement.MaxValue) { return 0; } return renderQueue - renderQueueRequirement.DefaultValue; } public static void SetMToonParametersToMaterial(Material material, MToonDefinition parameters) { //IL_004d: 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_0165: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) MetaDefinition meta = parameters.Meta; SetValue(material, "_MToonVersion", meta.VersionNumber); RenderingDefinition rendering = parameters.Rendering; SetRenderMode(material, rendering.RenderMode, rendering.RenderQueueOffsetNumber, useDefaultRenderQueue: false); SetCullMode(material, rendering.CullMode); ColorDefinition color = parameters.Color; SetColor(material, "_Color", color.LitColor); SetTexture(material, "_MainTex", (Texture)(object)color.LitMultiplyTexture); SetColor(material, "_ShadeColor", color.ShadeColor); SetTexture(material, "_ShadeTexture", (Texture)(object)color.ShadeMultiplyTexture); SetValue(material, "_Cutoff", color.CutoutThresholdValue); LightingDefinition lighting = parameters.Lighting; LitAndShadeMixingDefinition litAndShadeMixing = lighting.LitAndShadeMixing; SetValue(material, "_ShadeShift", litAndShadeMixing.ShadingShiftValue); SetValue(material, "_ShadeToony", litAndShadeMixing.ShadingToonyValue); SetValue(material, "_ReceiveShadowRate", litAndShadeMixing.ShadowReceiveMultiplierValue); SetTexture(material, "_ReceiveShadowTexture", (Texture)(object)litAndShadeMixing.ShadowReceiveMultiplierMultiplyTexture); SetValue(material, "_ShadingGradeRate", litAndShadeMixing.LitAndShadeMixingMultiplierValue); SetTexture(material, "_ShadingGradeTexture", (Texture)(object)litAndShadeMixing.LitAndShadeMixingMultiplierMultiplyTexture); LightingInfluenceDefinition lightingInfluence = lighting.LightingInfluence; SetValue(material, "_LightColorAttenuation", lightingInfluence.LightColorAttenuationValue); SetValue(material, "_IndirectLightIntensity", lightingInfluence.GiIntensityValue); NormalDefinition normal = lighting.Normal; SetNormalMapping(material, (Texture)(object)normal.NormalTexture, normal.NormalScaleValue); EmissionDefinition emission = parameters.Emission; SetColor(material, "_EmissionColor", emission.EmissionColor); SetTexture(material, "_EmissionMap", (Texture)(object)emission.EmissionMultiplyTexture); MatCapDefinition matCap = parameters.MatCap; SetTexture(material, "_SphereAdd", (Texture)(object)matCap.AdditiveTexture); RimDefinition rim = parameters.Rim; SetColor(material, "_RimColor", rim.RimColor); SetTexture(material, "_RimTexture", (Texture)(object)rim.RimMultiplyTexture); SetValue(material, "_RimLightingMix", rim.RimLightingMixValue); SetValue(material, "_RimFresnelPower", rim.RimFresnelPowerValue); SetValue(material, "_RimLift", rim.RimLiftValue); OutlineDefinition outline = parameters.Outline; SetValue(material, "_OutlineWidth", outline.OutlineWidthValue); SetTexture(material, "_OutlineWidthTexture", (Texture)(object)outline.OutlineWidthMultiplyTexture); SetValue(material, "_OutlineScaledMaxDistance", outline.OutlineScaledMaxDistanceValue); SetColor(material, "_OutlineColor", outline.OutlineColor); SetValue(material, "_OutlineLightingMix", outline.OutlineLightingMixValue); SetOutlineMode(material, outline.OutlineWidthMode, outline.OutlineColorMode); TextureUvCoordsDefinition textureOption = parameters.TextureOption; material.SetTextureScale("_MainTex", textureOption.MainTextureLeftBottomOriginScale); material.SetTextureOffset("_MainTex", textureOption.MainTextureLeftBottomOriginOffset); material.SetTexture("_UvAnimMaskTexture", (Texture)(object)textureOption.UvAnimationMaskTexture); material.SetFloat("_UvAnimScrollX", textureOption.UvAnimationScrollXSpeedValue); material.SetFloat("_UvAnimScrollY", textureOption.UvAnimationScrollYSpeedValue); material.SetFloat("_UvAnimRotation", textureOption.UvAnimationRotationSpeedValue); ValidateProperties(material); } public static void ValidateProperties(Material material, bool isBlendModeChangedByUser = false) { SetRenderMode(material, (RenderMode)material.GetFloat("_BlendMode"), material.renderQueue - GetRenderQueueRequirement((RenderMode)material.GetFloat("_BlendMode")).DefaultValue, isBlendModeChangedByUser); SetNormalMapping(material, material.GetTexture("_BumpMap"), material.GetFloat("_BumpScale")); SetOutlineMode(material, (OutlineWidthMode)material.GetFloat("_OutlineWidthMode"), (OutlineColorMode)material.GetFloat("_OutlineColorMode")); SetDebugMode(material, (DebugMode)material.GetFloat("_DebugMode")); SetCullMode(material, (CullMode)material.GetFloat("_CullMode")); Texture texture = material.GetTexture("_MainTex"); Texture texture2 = material.GetTexture("_ShadeTexture"); if ((Object)(object)texture != (Object)null && (Object)(object)texture2 == (Object)null) { material.SetTexture("_ShadeTexture", texture); } } private static void SetDebugMode(Material material, DebugMode debugMode) { SetValue(material, "_DebugMode", (float)debugMode); switch (debugMode) { case DebugMode.None: SetKeyword(material, "MTOON_DEBUG_NORMAL", required: false); SetKeyword(material, "MTOON_DEBUG_LITSHADERATE", required: false); break; case DebugMode.Normal: SetKeyword(material, "MTOON_DEBUG_NORMAL", required: true); SetKeyword(material, "MTOON_DEBUG_LITSHADERATE", required: false); break; case DebugMode.LitShadeRate: SetKeyword(material, "MTOON_DEBUG_NORMAL", required: false); SetKeyword(material, "MTOON_DEBUG_LITSHADERATE", required: true); break; } } private static void SetRenderMode(Material material, RenderMode renderMode, int renderQueueOffset, bool useDefaultRenderQueue) { SetValue(material, "_BlendMode", (float)renderMode); switch (renderMode) { case RenderMode.Opaque: material.SetOverrideTag("RenderType", "Opaque"); material.SetInt("_SrcBlend", 1); material.SetInt("_DstBlend", 0); material.SetInt("_ZWrite", 1); material.SetInt("_AlphaToMask", 0); SetKeyword(material, "_ALPHATEST_ON", required: false); SetKeyword(material, "_ALPHABLEND_ON", required: false); SetKeyword(material, "_ALPHAPREMULTIPLY_ON", required: false); break; case RenderMode.Cutout: material.SetOverrideTag("RenderType", "TransparentCutout"); material.SetInt("_SrcBlend", 1); material.SetInt("_DstBlend", 0); material.SetInt("_ZWrite", 1); material.SetInt("_AlphaToMask", 1); SetKeyword(material, "_ALPHATEST_ON", required: true); SetKeyword(material, "_ALPHABLEND_ON", required: false); SetKeyword(material, "_ALPHAPREMULTIPLY_ON", required: false); break; case RenderMode.Transparent: material.SetOverrideTag("RenderType", "Transparent"); material.SetInt("_SrcBlend", 5); material.SetInt("_DstBlend", 10); material.SetInt("_ZWrite", 0); material.SetInt("_AlphaToMask", 0); SetKeyword(material, "_ALPHATEST_ON", required: false); SetKeyword(material, "_ALPHABLEND_ON", required: true); SetKeyword(material, "_ALPHAPREMULTIPLY_ON", required: false); break; case RenderMode.TransparentWithZWrite: material.SetOverrideTag("RenderType", "Transparent"); material.SetInt("_SrcBlend", 5); material.SetInt("_DstBlend", 10); material.SetInt("_ZWrite", 1); material.SetInt("_AlphaToMask", 0); SetKeyword(material, "_ALPHATEST_ON", required: false); SetKeyword(material, "_ALPHABLEND_ON", required: true); SetKeyword(material, "_ALPHAPREMULTIPLY_ON", required: false); break; } if (useDefaultRenderQueue) { material.renderQueue = GetRenderQueueRequirement(renderMode).DefaultValue; return; } RenderQueueRequirement renderQueueRequirement = GetRenderQueueRequirement(renderMode); material.renderQueue = Mathf.Clamp(renderQueueRequirement.DefaultValue + renderQueueOffset, renderQueueRequirement.MinValue, renderQueueRequirement.MaxValue); } private static void SetOutlineMode(Material material, OutlineWidthMode outlineWidthMode, OutlineColorMode outlineColorMode) { SetValue(material, "_OutlineWidthMode", (float)outlineWidthMode); SetValue(material, "_OutlineColorMode", (float)outlineColorMode); bool required = outlineColorMode == OutlineColorMode.FixedColor; bool required2 = outlineColorMode == OutlineColorMode.MixedLighting; switch (outlineWidthMode) { case OutlineWidthMode.None: SetKeyword(material, "MTOON_OUTLINE_WIDTH_WORLD", required: false); SetKeyword(material, "MTOON_OUTLINE_WIDTH_SCREEN", required: false); SetKeyword(material, "MTOON_OUTLINE_COLOR_FIXED", required: false); SetKeyword(material, "MTOON_OUTLINE_COLOR_MIXED", required: false); break; case OutlineWidthMode.WorldCoordinates: SetKeyword(material, "MTOON_OUTLINE_WIDTH_WORLD", required: true); SetKeyword(material, "MTOON_OUTLINE_WIDTH_SCREEN", required: false); SetKeyword(material, "MTOON_OUTLINE_COLOR_FIXED", required); SetKeyword(material, "MTOON_OUTLINE_COLOR_MIXED", required2); break; case OutlineWidthMode.ScreenCoordinates: SetKeyword(material, "MTOON_OUTLINE_WIDTH_WORLD", required: false); SetKeyword(material, "MTOON_OUTLINE_WIDTH_SCREEN", required: true); SetKeyword(material, "MTOON_OUTLINE_COLOR_FIXED", required); SetKeyword(material, "MTOON_OUTLINE_COLOR_MIXED", required2); break; } } private static void SetNormalMapping(Material material, Texture bumpMap, float bumpScale) { SetTexture(material, "_BumpMap", bumpMap); SetValue(material, "_BumpScale", bumpScale); SetKeyword(material, "_NORMALMAP", (Object)(object)bumpMap != (Object)null); } private static void SetCullMode(Material material, CullMode cullMode) { SetValue(material, "_CullMode", (float)cullMode); switch (cullMode) { case CullMode.Back: material.SetInt("_CullMode", 2); material.SetInt("_OutlineCullMode", 1); break; case CullMode.Front: material.SetInt("_CullMode", 1); material.SetInt("_OutlineCullMode", 2); break; case CullMode.Off: material.SetInt("_CullMode", 0); material.SetInt("_OutlineCullMode", 1); break; } } private static void SetValue(Material material, string propertyName, float val) { material.SetFloat(propertyName, val); } private static void SetColor(Material material, string propertyName, Color color) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) material.SetColor(propertyName, color); } private static void SetTexture(Material material, string propertyName, Texture texture) { material.SetTexture(propertyName, texture); } private static void SetKeyword(Material mat, string keyword, bool required) { if (required) { mat.EnableKeyword(keyword); } else { mat.DisableKeyword(keyword); } } }
valheim_Data/Managed/SpringBoneJobs.dll
Decompiled 20 hours 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.Linq; using System.Reflection; using System.Runtime.CompilerServices; using UniGLTF.Runtime.Utils; using UniGLTF.SpringBoneJobs.Blittables; using UniGLTF.SpringBoneJobs.InputPorts; using Unity.Collections; using Unity.Jobs; using Unity.Mathematics; using UnityEngine; using UnityEngine.Jobs; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [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[1939] { 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 92, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 92, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 67, 111, 110, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 92, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 72, 105, 110, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 92, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 83, 112, 104, 101, 114, 105, 99, 97, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 67, 111, 108, 108, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 74, 111, 105, 110, 116, 73, 109, 109, 117, 116, 97, 98, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 74, 111, 105, 110, 116, 77, 117, 116, 97, 98, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 77, 111, 100, 101, 108, 76, 101, 118, 101, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 83, 112, 97, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 83, 112, 114, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 92, 66, 108, 105, 116, 116, 97, 98, 108, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 66, 117, 102, 102, 101, 114, 67, 111, 109, 98, 105, 110, 101, 114, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 110, 98, 105, 110, 101, 100, 66, 117, 102, 102, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 72, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 68, 105, 115, 112, 111, 115, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 73, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 99, 104, 101, 100, 117, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 73, 110, 112, 117, 116, 80, 111, 114, 116, 115, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 66, 117, 102, 102, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 73, 110, 112, 117, 116, 80, 111, 114, 116, 115, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 73, 110, 112, 117, 116, 80, 111, 114, 116, 115, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 105, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 73, 110, 112, 117, 116, 80, 111, 114, 116, 115, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 112, 114, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 80, 117, 108, 108, 84, 114, 97, 110, 115, 102, 111, 114, 109, 74, 111, 98, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 80, 117, 115, 104, 84, 114, 97, 110, 115, 102, 111, 114, 109, 74, 111, 98, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 73, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 92, 85, 112, 100, 97, 116, 101, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 46, 99, 115 }, TypesData = new byte[1622] { 0, 0, 0, 0, 33, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 0, 0, 0, 0, 37, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 67, 111, 110, 101, 0, 0, 0, 0, 38, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 72, 105, 110, 103, 101, 0, 0, 0, 0, 42, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 65, 110, 103, 108, 101, 108, 105, 109, 105, 116, 83, 112, 104, 101, 114, 105, 99, 97, 108, 0, 0, 0, 0, 51, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 124, 66, 108, 105, 116, 116, 97, 98, 108, 101, 67, 111, 108, 108, 105, 100, 101, 114, 0, 0, 0, 0, 57, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 124, 66, 108, 105, 116, 116, 97, 98, 108, 101, 74, 111, 105, 110, 116, 73, 109, 109, 117, 116, 97, 98, 108, 101, 0, 0, 0, 0, 55, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 124, 66, 108, 105, 116, 116, 97, 98, 108, 101, 74, 111, 105, 110, 116, 77, 117, 116, 97, 98, 108, 101, 0, 0, 0, 0, 53, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 124, 66, 108, 105, 116, 116, 97, 98, 108, 101, 77, 111, 100, 101, 108, 76, 101, 118, 101, 108, 0, 0, 0, 0, 47, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 124, 66, 108, 105, 116, 116, 97, 98, 108, 101, 83, 112, 97, 110, 0, 0, 0, 0, 49, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 124, 66, 108, 105, 116, 116, 97, 98, 108, 101, 83, 112, 114, 105, 110, 103, 0, 0, 0, 0, 52, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 66, 108, 105, 116, 116, 97, 98, 108, 101, 115, 124, 66, 108, 105, 116, 116, 97, 98, 108, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 0, 0, 0, 0, 51, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 66, 117, 102, 102, 101, 114, 67, 111, 109, 98, 105, 110, 101, 114, 0, 0, 0, 0, 59, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 66, 117, 102, 102, 101, 114, 67, 111, 109, 98, 105, 110, 101, 114, 124, 82, 101, 113, 117, 101, 115, 116, 0, 0, 0, 0, 51, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 109, 98, 105, 110, 101, 100, 66, 117, 102, 102, 101, 114, 0, 0, 0, 0, 66, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 109, 98, 105, 110, 101, 100, 66, 117, 102, 102, 101, 114, 124, 76, 111, 97, 100, 83, 112, 114, 105, 110, 103, 115, 74, 111, 98, 0, 0, 0, 0, 68, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 109, 98, 105, 110, 101, 100, 66, 117, 102, 102, 101, 114, 124, 76, 111, 97, 100, 67, 111, 108, 108, 105, 100, 101, 114, 115, 74, 111, 98, 0, 0, 0, 0, 67, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 109, 98, 105, 110, 101, 100, 66, 117, 102, 102, 101, 114, 124, 79, 102, 102, 115, 101, 116, 76, 111, 103, 105, 99, 115, 74, 111, 98, 0, 0, 0, 0, 71, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 109, 98, 105, 110, 101, 100, 66, 117, 102, 102, 101, 114, 124, 73, 110, 105, 116, 67, 117, 114, 114, 101, 110, 116, 84, 97, 105, 108, 115, 74, 111, 98, 0, 0, 0, 0, 45, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 68, 105, 115, 112, 111, 115, 101, 114, 0, 0, 0, 0, 56, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 68, 105, 115, 112, 111, 115, 101, 114, 124, 68, 105, 115, 112, 111, 115, 97, 98, 108, 101, 0, 0, 0, 0, 46, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 99, 104, 101, 100, 117, 108, 101, 114, 0, 0, 0, 0, 54, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 73, 110, 112, 117, 116, 80, 111, 114, 116, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 66, 117, 102, 102, 101, 114, 0, 0, 0, 0, 56, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 73, 110, 112, 117, 116, 80, 111, 114, 116, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 100, 101, 114, 0, 0, 0, 0, 53, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 73, 110, 112, 117, 116, 80, 111, 114, 116, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 105, 110, 116, 0, 0, 0, 0, 54, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 46, 73, 110, 112, 117, 116, 80, 111, 114, 116, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 112, 114, 105, 110, 103, 0, 0, 0, 0, 39, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 80, 117, 108, 108, 84, 114, 97, 110, 115, 102, 111, 114, 109, 74, 111, 98, 0, 0, 0, 0, 39, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 80, 117, 115, 104, 84, 114, 97, 110, 115, 102, 111, 114, 109, 74, 111, 98, 0, 0, 0, 0, 42, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 115, 105, 111, 110, 0, 0, 0, 0, 46, 85, 110, 105, 71, 76, 84, 70, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 85, 112, 100, 97, 116, 101, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98 }, TotalFiles = 23, TotalTypes = 29, IsEditorOnly = false }; } } namespace UniGLTF.SpringBoneJobs { public static class Anglelimit { public static float3 Apply(in BlittableJointImmutable logic, in BlittableJointMutable joint, in quaternion parentRotation, in float3 head, in float3 nextTail) { //IL_0024: 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_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_004d: 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_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: 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_006e: 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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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_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_00b7: 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_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: 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_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: 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_00f5: 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_00fc: 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_0105: 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) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: 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_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) switch (joint.anglelimitType) { case AnglelimitTypes.None: return nextTail; case AnglelimitTypes.Cone: { quaternion val5 = anglelimitSpaceToWorld(in logic, in joint, in parentRotation); float3 val6 = AnglelimitCone.Apply(math.mul(math.inverse(val5), math.normalizesafe(nextTail - head, default(float3))), joint.anglelimit1); return head + math.mul(val5, val6) * logic.length; } case AnglelimitTypes.Hinge: { quaternion val3 = anglelimitSpaceToWorld(in logic, in joint, in parentRotation); float3 val4 = AnglelimitHinge.Apply(math.mul(math.inverse(val3), math.normalizesafe(nextTail - head, default(float3))), joint.anglelimit1); return head + math.mul(val3, val4) * logic.length; } case AnglelimitTypes.Spherical: { quaternion val = anglelimitSpaceToWorld(in logic, in joint, in parentRotation); float3 val2 = AnglelimitSpherical.Apply(math.mul(math.inverse(val), math.normalizesafe(nextTail - head, default(float3))), joint.anglelimit1, joint.anglelimit2); return head + math.mul(val, val2) * logic.length; } default: throw new ArgumentException($"unknown joint.anglelimitType: {joint.anglelimitType}"); } } public static quaternion anglelimitSpaceToWorld(in BlittableJointImmutable logic, in BlittableJointMutable joint, in quaternion parentRotation) { //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_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_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) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_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) quaternion axisRotation = getAxisRotation(logic.boneAxis); return math.mul(parentRotation, math.mul(logic.localRotation, math.mul(axisRotation, joint.anglelimitOffset))); } public static quaternion getAxisRotation(in float3 to) { //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_0029: Unknown result type (might be due to invalid IL or missing references) float num = to.y + 1f; if (num < 1E-08f) { return new quaternion(1f, 0f, 0f, 0f); } return math.normalizesafe(new quaternion(to.z, 0f, 0f - to.x, num)); } } public static class AnglelimitCone { public static float3 Apply(in float3 src, float angleLimit) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0061: 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) float num = math.cos(angleLimit); if (src.y >= num) { return src; } float3 val = src; float num2 = math.sqrt((1f - num * num) / (1f - val.y * val.y)); val.x *= num2; val.z *= num2; val.y = num; return val; } } public static class AnglelimitHinge { public static float3 Apply(in float3 src, float limitAngle) { //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_0013: 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_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002a: 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_0041: 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) float3 val = src; val.x = 0f; val = math.normalizesafe(val, default(float3)); float num = math.cos(limitAngle); if (val.y < num) { float num2 = math.sqrt((1f - num * num) / (1f - val.y * val.y)); val.z *= num2; val.y = num; } return val; } } public static class AnglelimitSpherical { public static float3 Apply(in float3 tailDir, float limitAnglePhi, float limitAngleTheta) { //IL_005f: Unknown result type (might be due to invalid IL or missing references) float num = math.atan2(tailDir.z, tailDir.y); float num2 = math.asin(tailDir.x); if (math.abs(num) > limitAnglePhi) { num = limitAnglePhi * math.sign(num); } if (math.abs(num2) > limitAngleTheta) { num2 = limitAngleTheta * math.sign(num2); } float num3 = math.cos(num2); return new float3(math.sin(num2), num3 * math.cos(num), num3 * math.sin(num)); } } public enum AnglelimitTypes { None, Cone, Hinge, Spherical } public sealed class FastSpringBoneBufferCombiner : IDisposable { private struct Request { public FastSpringBoneBuffer Remove; public FastSpringBoneBuffer Add; } private FastSpringBoneCombinedBuffer _combinedBuffer; private readonly List<FastSpringBoneBuffer> _buffers = new List<FastSpringBoneBuffer>(); private Queue<Request> _request = new Queue<Request>(); public FastSpringBoneCombinedBuffer Combined => _combinedBuffer; public bool HasBuffer { get { if (_buffers.Count > 0) { return _combinedBuffer != null; } return false; } } public void Register(FastSpringBoneBuffer add, FastSpringBoneBuffer remove) { _request.Enqueue(new Request { Remove = remove, Add = add }); } public JobHandle ReconstructIfDirty(JobHandle handle) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0109: 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_0036: 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_0049: 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) if (_request.Count == 0) { return handle; } FastSpringBoneCombinedBuffer combinedBuffer = _combinedBuffer; if (combinedBuffer != null) { int num = 0; foreach (FastSpringBoneBuffer buffer in _buffers) { buffer.BackupCurrentTails(combinedBuffer.CurrentTails, combinedBuffer.NextTails, num); num += buffer.Logics.Length; } } while (_request.Count > 0) { Request request = _request.Dequeue(); if (request.Remove != null && request.Add != null) { int index = _buffers.IndexOf(request.Remove); _buffers[index] = request.Add; } else if (request.Add != null) { _buffers.Add(request.Add); } else if (request.Remove != null) { _buffers.Remove(request.Remove); } } return ReconstructBuffers(handle); } private JobHandle ReconstructBuffers(JobHandle handle) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) _combinedBuffer?.Dispose(); handle = FastSpringBoneCombinedBuffer.Create(handle, _buffers, out _combinedBuffer); return handle; } public void InitializeJointsLocalRotation(FastSpringBoneBuffer model) { _combinedBuffer?.InitializeJointsLocalRotation(model); } public void Dispose() { if (_combinedBuffer != null) { _combinedBuffer.Dispose(); _combinedBuffer = null; } } public void DrawGizmos() { _combinedBuffer?.DrawGizmos(); } } public class FastSpringBoneCombinedBuffer : IDisposable { private struct LoadSpringsJob : IJobParallelFor { [ReadOnly] public NativeArray<BlittableSpring> SrcSprings; [WriteOnly] public NativeSlice<BlittableSpring> DestSprings; public int ModelIndex; public int CollidersOffset; public int LogicsOffset; public int TransformOffset; public void Execute(int index) { BlittableSpring blittableSpring = SrcSprings[index]; DestSprings[index] = new BlittableSpring(modelIndex: ModelIndex, colliderSpan: new BlittableSpan(blittableSpring.colliderSpan.startIndex + CollidersOffset, blittableSpring.colliderSpan.count), logicSpan: new BlittableSpan(blittableSpring.logicSpan.startIndex + LogicsOffset, blittableSpring.logicSpan.count), transformIndexOffset: TransformOffset, centerTransformIndex: blittableSpring.centerTransformIndex); } } private struct LoadCollidersJob : IJobParallelFor { [ReadOnly] public NativeArray<BlittableCollider> SrcColliders; [WriteOnly] public NativeSlice<BlittableCollider> DestColliders; public void Execute(int index) { DestColliders[index] = SrcColliders[index]; } } private struct OffsetLogicsJob : IJobParallelFor { [ReadOnly] public NativeSlice<BlittableJointImmutable> SrcLogics; [ReadOnly] public NativeSlice<BlittableJointMutable> SrcJoints; [WriteOnly] public NativeSlice<BlittableJointImmutable> DestLogics; [WriteOnly] public NativeSlice<BlittableJointMutable> DestJoints; public void Execute(int index) { DestLogics[index] = SrcLogics[index]; DestJoints[index] = SrcJoints[index]; } } private struct InitCurrentTailsJob : IJobParallelFor { [ReadOnly] public NativeArray<BlittableSpring> Springs; [ReadOnly] public NativeArray<BlittableJointImmutable> Logics; [ReadOnly] public NativeArray<BlittableTransform> Transforms; [NativeDisableParallelForRestriction] public NativeSlice<float3> CurrentTails; [NativeDisableParallelForRestriction] public NativeSlice<float3> PrevTails; [NativeDisableParallelForRestriction] public NativeSlice<float3> NextTails; public void Execute(int springIndex) { //IL_005f: 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_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011f: 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) BlittableSpring blittableSpring = Springs[springIndex]; BlittableTransform? blittableTransform = ((blittableSpring.centerTransformIndex >= 0) ? new BlittableTransform?(Transforms[blittableSpring.transformIndexOffset + blittableSpring.centerTransformIndex]) : ((BlittableTransform?)null)); for (int i = blittableSpring.logicSpan.startIndex; i < blittableSpring.logicSpan.EndIndex; i++) { if (float.IsNaN(CurrentTails[i].x)) { int num = ((Logics[i].tailTransformIndex != -1) ? (blittableSpring.transformIndexOffset + Logics[i].tailTransformIndex) : (blittableSpring.transformIndexOffset + Logics[i].headTransformIndex)); BlittableTransform blittableTransform2 = Transforms[num]; float3 val = (blittableTransform.HasValue ? MathHelper.MultiplyPoint3x4(blittableTransform.Value.worldToLocalMatrix, blittableTransform2.position) : blittableTransform2.position); CurrentTails[i] = val; PrevTails[i] = val; NextTails[i] = val; } } } } private NativeArray<BlittableJointImmutable> _logics; private NativeArray<BlittableJointMutable> _joints; private NativeArray<float3> _prevTails; private NativeArray<float3> _currentTails; private NativeArray<float3> _nextTails; private NativeArray<BlittableSpring> _springs; private NativeArray<BlittableModelLevel> _models; private NativeArray<BlittableCollider> _colliders; private NativeArray<BlittableTransform> _transforms; private TransformAccessArray _transformAccessArray; private FastSpringBoneBuffer[] _batchedBuffers; private int[] _batchedBufferLogicSizes; private Dictionary<Transform, int> _modelMap = new Dictionary<Transform, int>(); private Dictionary<Transform, int> _jointMap = new Dictionary<Transform, int>(); public NativeArray<BlittableJointImmutable> Logics => _logics; public NativeArray<BlittableJointMutable> Joints => _joints; public NativeArray<float3> PrevTails => _prevTails; public NativeArray<float3> CurrentTails => _currentTails; public NativeArray<float3> NextTails => _nextTails; public NativeArray<BlittableSpring> Springs => _springs; public NativeArray<BlittableModelLevel> Models => _models; public NativeArray<BlittableCollider> Colliders => _colliders; public NativeArray<BlittableTransform> Transforms => _transforms; public TransformAccessArray TransformAccessArray => _transformAccessArray; private FastSpringBoneCombinedBuffer(int logicsCount, int springsCount, int modelCount, int collidersCount, int transformsCount, FastSpringBoneBuffer[] batchedBuffers, int[] batchedBufferLogicSizes) { //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_002e: 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_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0066: 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_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) _logics = new NativeArray<BlittableJointImmutable>(logicsCount, (Allocator)4, (NativeArrayOptions)1); _joints = new NativeArray<BlittableJointMutable>(logicsCount, (Allocator)4, (NativeArrayOptions)1); _prevTails = new NativeArray<float3>(logicsCount, (Allocator)4, (NativeArrayOptions)1); _currentTails = new NativeArray<float3>(logicsCount, (Allocator)4, (NativeArrayOptions)1); _nextTails = new NativeArray<float3>(logicsCount, (Allocator)4, (NativeArrayOptions)1); _springs = new NativeArray<BlittableSpring>(springsCount, (Allocator)4, (NativeArrayOptions)1); _models = new NativeArray<BlittableModelLevel>(modelCount, (Allocator)4, (NativeArrayOptions)1); _colliders = new NativeArray<BlittableCollider>(collidersCount, (Allocator)4, (NativeArrayOptions)1); _transforms = new NativeArray<BlittableTransform>(transformsCount, (Allocator)4, (NativeArrayOptions)1); _batchedBuffers = batchedBuffers; _batchedBufferLogicSizes = batchedBufferLogicSizes; } internal static JobHandle Create(JobHandle handle, IReadOnlyList<FastSpringBoneBuffer> buffers, out FastSpringBoneCombinedBuffer combined) { //IL_0052: 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_0065: 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_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) FastSpringBoneBuffer[] array = buffers.ToArray(); int[] batchedBufferLogicSizes = array.Select((FastSpringBoneBuffer buffer) => buffer.Logics.Length).ToArray(); int num = 0; int num2 = 0; int num3 = 0; int num4 = 0; foreach (FastSpringBoneBuffer buffer in buffers) { num += buffer.Springs.Length; num2 += buffer.Colliders.Length; num3 += buffer.Logics.Length; num4 += buffer.Transforms.Length; } combined = new FastSpringBoneCombinedBuffer(num3, num, buffers.Count, num2, num4, array, batchedBufferLogicSizes); return combined.Batching(handle); } private JobHandle Batching(JobHandle handle) { //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_0089: 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_0096: 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_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) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_02f9: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //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_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_015a: 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_0170: 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_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_028c: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) Transform[] array = (Transform[])(object)new Transform[_transforms.Length]; int num = 0; FastSpringBoneBuffer[] batchedBuffers = _batchedBuffers; foreach (FastSpringBoneBuffer fastSpringBoneBuffer in batchedBuffers) { Array.Copy(fastSpringBoneBuffer.Transforms, 0, array, num, fastSpringBoneBuffer.Transforms.Length); num += fastSpringBoneBuffer.Transforms.Length; } if (((TransformAccessArray)(ref _transformAccessArray)).isCreated) { ((TransformAccessArray)(ref _transformAccessArray)).Dispose(); } _transformAccessArray = new TransformAccessArray(array, -1); handle = IJobParallelForTransformExtensions.Schedule<PullTransformJob>(new PullTransformJob { Transforms = Transforms }, TransformAccessArray, handle); int num2 = 0; int num3 = 0; int num4 = 0; int num5 = 0; for (int j = 0; j < _batchedBuffers.Length; j++) { FastSpringBoneBuffer fastSpringBoneBuffer2 = _batchedBuffers[j]; _modelMap.Add(fastSpringBoneBuffer2.Model, j); for (int k = 0; k < _batchedBufferLogicSizes[j]; k++) { int headTransformIndex = fastSpringBoneBuffer2.Logics[k].headTransformIndex; _jointMap.Add(fastSpringBoneBuffer2.Transforms[headTransformIndex], num4 + k); } fastSpringBoneBuffer2.RestoreCurrentTails(_currentTails, _nextTails, num4); handle = IJobParallelForExtensions.Schedule<LoadSpringsJob>(new LoadSpringsJob { ModelIndex = j, SrcSprings = fastSpringBoneBuffer2.Springs, DestSprings = new NativeSlice<BlittableSpring>(_springs, num2, fastSpringBoneBuffer2.Springs.Length), CollidersOffset = num3, LogicsOffset = num4, TransformOffset = num5 }, fastSpringBoneBuffer2.Springs.Length, 1, handle); handle = IJobParallelForExtensions.Schedule<LoadCollidersJob>(new LoadCollidersJob { SrcColliders = fastSpringBoneBuffer2.Colliders, DestColliders = new NativeSlice<BlittableCollider>(_colliders, num3, fastSpringBoneBuffer2.Colliders.Length) }, fastSpringBoneBuffer2.Colliders.Length, 1, handle); handle = IJobParallelForExtensions.Schedule<OffsetLogicsJob>(new OffsetLogicsJob { SrcLogics = NativeSlice<BlittableJointImmutable>.op_Implicit(fastSpringBoneBuffer2.Logics), SrcJoints = NativeSlice<BlittableJointMutable>.op_Implicit(fastSpringBoneBuffer2.Joints), DestLogics = new NativeSlice<BlittableJointImmutable>(_logics, num4, fastSpringBoneBuffer2.Logics.Length), DestJoints = new NativeSlice<BlittableJointMutable>(_joints, num4, fastSpringBoneBuffer2.Logics.Length) }, fastSpringBoneBuffer2.Logics.Length, 1, handle); num2 += fastSpringBoneBuffer2.Springs.Length; num3 += fastSpringBoneBuffer2.Colliders.Length; num4 += fastSpringBoneBuffer2.Logics.Length; num5 += fastSpringBoneBuffer2.Transforms.Length; } handle = InitCurrentTails(handle); return handle; } public void Dispose() { if (_logics.IsCreated) { _logics.Dispose(); } if (_joints.IsCreated) { _joints.Dispose(); } if (_prevTails.IsCreated) { _prevTails.Dispose(); } if (_currentTails.IsCreated) { _currentTails.Dispose(); } if (_nextTails.IsCreated) { _nextTails.Dispose(); } if (_springs.IsCreated) { _springs.Dispose(); } if (_models.IsCreated) { _models.Dispose(); } if (_colliders.IsCreated) { _colliders.Dispose(); } if (_transforms.IsCreated) { _transforms.Dispose(); } if (((TransformAccessArray)(ref _transformAccessArray)).isCreated) { ((TransformAccessArray)(ref _transformAccessArray)).Dispose(); } } public void FlipBuffer() { //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_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_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) //IL_0020: 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) NativeArray<float3> prevTails = _prevTails; _prevTails = _currentTails; _currentTails = _nextTails; _nextTails = prevTails; } public void SetJointLevel(Transform joint, BlittableJointMutable jointSettings) { if (_jointMap.TryGetValue(joint, out var value)) { _joints[value] = jointSettings; } } public void SetModelLevel(Transform model, BlittableModelLevel modelSetting) { if (_modelMap.TryGetValue(model, out var value)) { _models[value] = modelSetting; } } public JobHandle InitCurrentTails(JobHandle handle) { //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_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_002a: 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_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_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_0075: 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) return IJobParallelForExtensions.Schedule<InitCurrentTailsJob>(new InitCurrentTailsJob { Springs = Springs, Logics = Logics, Transforms = Transforms, CurrentTails = NativeSlice<float3>.op_Implicit(CurrentTails), PrevTails = NativeSlice<float3>.op_Implicit(PrevTails), NextTails = NativeSlice<float3>.op_Implicit(NextTails) }, Springs.Length, 1, handle); } public void InitializeJointsLocalRotation(FastSpringBoneBuffer buffer) { //IL_0022: 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_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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0071: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) int num = 0; for (int i = 0; i < _batchedBuffers.Length; i++) { int num2 = _batchedBufferLogicSizes[i]; if (_batchedBuffers[i] == buffer) { for (int j = 0; j < num2; j++) { BlittableJointImmutable blittableJointImmutable = buffer.Logics[j]; if (blittableJointImmutable.tailTransformIndex != -1) { Vector3 position = buffer.Transforms[blittableJointImmutable.tailTransformIndex].position; int num3 = num + j; ref NativeArray<float3> currentTails = ref _currentTails; ref NativeArray<float3> prevTails = ref _prevTails; float3 val = (_nextTails[num3] = float3.op_Implicit(position)); float3 val3 = (prevTails[num3] = val); currentTails[num3] = val3; } } break; } num += num2; } } public void DrawGizmos() { //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_00c3: 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_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) Enumerator<BlittableSpring> enumerator = _springs.GetEnumerator(); try { while (enumerator.MoveNext()) { BlittableSpring current = enumerator.Current; for (int i = current.colliderSpan.startIndex; i < current.colliderSpan.EndIndex; i++) { BlittableCollider blittableCollider = _colliders[i]; blittableCollider.DrawGizmo(_transforms[current.transformIndexOffset + blittableCollider.transformIndex]); } for (int j = current.logicSpan.startIndex; j < current.logicSpan.EndIndex; j++) { BlittableJointImmutable blittableJointImmutable = _logics[j]; blittableJointImmutable.DrawGizmo(_transforms[current.transformIndexOffset + blittableJointImmutable.tailTransformIndex], _joints[j]); Gizmos.matrix = Matrix4x4.identity; Gizmos.DrawLine(float3.op_Implicit(_transforms[current.transformIndexOffset + blittableJointImmutable.tailTransformIndex].position), float3.op_Implicit(_transforms[current.transformIndexOffset + blittableJointImmutable.headTransformIndex].position)); } } } finally { ((IDisposable)enumerator/*cast due to .constrained prefix*/).Dispose(); } } } public sealed class FastSpringBoneDisposer : MonoBehaviour { private class Disposable : IDisposable { private Action m_onDispose; private Disposable(Action action) { m_onDispose = action; } public static IDisposable Create(Action action) { return new Disposable(action); } public void Dispose() { m_onDispose(); } } private readonly List<IDisposable> _disposables = new List<IDisposable>(); public FastSpringBoneDisposer Add(IDisposable disposable) { _disposables.Add(disposable); return this; } public FastSpringBoneDisposer AddAction(Action action) { _disposables.Add(Disposable.Create(action)); return this; } private void OnDestroy() { foreach (IDisposable disposable in _disposables) { disposable.Dispose(); } } } public sealed class FastSpringBoneScheduler : IDisposable { private readonly FastSpringBoneBufferCombiner _bufferCombiner; public FastSpringBoneScheduler(FastSpringBoneBufferCombiner bufferCombiner) { _bufferCombiner = bufferCombiner; } public void Dispose() { _bufferCombiner.Dispose(); } public JobHandle Schedule(float deltaTime, JobHandle? dependency = null) { //IL_0008: 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_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_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_0039: 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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006a: 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_0081: 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_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009b: 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_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_00b5: 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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: 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_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: 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_0103: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0131: 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) JobHandle val = _bufferCombiner.ReconstructIfDirty(default(JobHandle)); if (dependency.HasValue) { val = JobHandle.CombineDependencies(val, dependency.Value); } if (!_bufferCombiner.HasBuffer) { return val; } FastSpringBoneCombinedBuffer combined = _bufferCombiner.Combined; if (combined != null) { val = IJobParallelForTransformExtensions.Schedule<PullTransformJob>(new PullTransformJob { Transforms = combined.Transforms }, combined.TransformAccessArray, val); combined.FlipBuffer(); val = IJobParallelForExtensions.Schedule<UpdateFastSpringBoneJob>(new UpdateFastSpringBoneJob { Joints = combined.Joints, Logics = combined.Logics, CurrentTail = combined.CurrentTails, PrevTail = combined.PrevTails, NextTail = combined.NextTails, Springs = combined.Springs, Models = combined.Models, Colliders = combined.Colliders, Transforms = combined.Transforms, DeltaTime = deltaTime }, combined.Springs.Length, 1, val); val = IJobParallelForTransformExtensions.Schedule<PushTransformJob>(new PushTransformJob { Transforms = combined.Transforms }, combined.TransformAccessArray, val); } return val; } } public struct PullTransformJob : IJobParallelForTransform { [WriteOnly] public NativeArray<BlittableTransform> Transforms; public void Execute(int index, TransformAccess transform) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) Transforms[index] = BlittableTransform.FromTransformAccess(transform); } } public struct PushTransformJob : IJobParallelForTransform { [ReadOnly] public NativeArray<BlittableTransform> Transforms; public void Execute(int index, TransformAccess transform) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) ((TransformAccess)(ref transform)).rotation = quaternion.op_Implicit(Transforms[index].rotation); } } public static class SpringBoneCollision { public static bool TryCollide(in BlittableJointImmutable logic, in BlittableJointMutable joint, in BlittableTransform headTransform, in BlittableCollider collider, in BlittableTransform colliderTransform, float maxColliderScale, in float3 colliderWorldTail, in float3 colliderWorldPosition, in float3 nextTail, out float3 newNextTail) { //IL_0037: 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) return collider.colliderType switch { BlittableColliderType.Sphere => TryResolveSphereCollision(in joint, in collider, in colliderWorldPosition, in headTransform, in maxColliderScale, in logic, in nextTail, out newNextTail), BlittableColliderType.Capsule => TryResolveCapsuleCollision(colliderWorldTail, colliderWorldPosition, headTransform, joint, collider, maxColliderScale, logic, in nextTail, out newNextTail), BlittableColliderType.Plane => TryResolvePlaneCollision(in joint, in collider, in colliderTransform, in nextTail, out newNextTail), BlittableColliderType.SphereInside => TryResolveSphereCollisionInside(in joint, in collider, in colliderTransform, in nextTail, out newNextTail), BlittableColliderType.CapsuleInside => TryResolveCapsuleCollisionInside(in joint, in collider, in colliderTransform, in nextTail, out newNextTail), _ => throw new NotImplementedException(), }; } private static bool TryResolveSphereCollision(in BlittableJointMutable joint, in BlittableCollider collider, in float3 worldPosition, in BlittableTransform headTransform, in float maxColliderScale, in BlittableJointImmutable logic, in float3 nextTail, out float3 newNextTail) { //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_009e: 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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0042: 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_0049: 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_0050: 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_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_0061: 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_006a: 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_0071: 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_007e: 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_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_0095: Unknown result type (might be due to invalid IL or missing references) float num = joint.radius + collider.radius * maxColliderScale; if (math.lengthsq(nextTail - worldPosition) <= num * num) { float3 val = math.normalizesafe(nextTail - worldPosition, default(float3)); float3 val2 = worldPosition + val * num; newNextTail = headTransform.position + math.normalizesafe(val2 - headTransform.position, default(float3)) * logic.length; return true; } newNextTail = default(float3); return false; } private static bool TryResolveCapsuleCollision(float3 worldTail, float3 worldPosition, BlittableTransform headTransform, BlittableJointMutable joint, BlittableCollider collider, float maxColliderScale, BlittableJointImmutable logic, in float3 nextTail, out float3 newNextTail) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: 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_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: 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) float3 val = worldTail - worldPosition; if (math.lengthsq(val) == 0f) { return TryResolveSphereCollision(in joint, in collider, in worldPosition, in headTransform, in maxColliderScale, in logic, in nextTail, out newNextTail); } float3 val2 = math.normalizesafe(val, default(float3)); float3 val3 = headTransform.position - worldPosition; float num = math.dot(val2, val3); if (num <= 0f) { return TryResolveSphereCollision(in joint, in collider, in worldPosition, in headTransform, in maxColliderScale, in logic, in nextTail, out newNextTail); } if (num >= math.length(val)) { return TryResolveSphereCollision(in joint, in collider, in worldTail, in headTransform, in maxColliderScale, in logic, in nextTail, out newNextTail); } return TryResolveSphereCollision(in joint, in collider, worldPosition + val2 * num, in headTransform, in maxColliderScale, in logic, in nextTail, out newNextTail); } private static bool TryResolvePlaneCollision(in BlittableJointMutable joint, in BlittableCollider collider, in BlittableTransform colliderTransform, in float3 nextTail, out float3 newNextTail) { //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_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: 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_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) float3 val = MathHelper.MultiplyPoint(colliderTransform.localToWorldMatrix, collider.offset); float3 val2 = math.normalizesafe(MathHelper.MultiplyVector(colliderTransform.localToWorldMatrix, collider.tailOrNormal), default(float3)); float num = math.dot(nextTail - val, val2) - joint.radius; if (num < 0f) { float3 val3 = val2; newNextTail = nextTail - val3 * num; return true; } newNextTail = default(float3); return false; } private static bool TryResolveSphereCollisionInside(in BlittableJointMutable joint, in BlittableCollider collider, in BlittableTransform colliderTransform, in float3 nextTail, out float3 newNextTail) { //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_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002c: 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_0041: 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) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) float3 val = MathHelper.MultiplyPoint(colliderTransform.localToWorldMatrix, collider.offset); float3 val2 = nextTail - val; float num = collider.radius - joint.radius - math.length(val2); if (num < 0f) { float3 val3 = -1f * math.normalizesafe(val2, default(float3)); newNextTail = nextTail - val3 * num; return true; } newNextTail = default(float3); return false; } private static bool TryResolveCapsuleCollisionInside(in BlittableJointMutable joint, in BlittableCollider collider, in BlittableTransform colliderTransform, in float3 nextTail, out float3 newNextTail) { //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_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_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_003d: 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_0082: 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_0099: 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_00a2: 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_00ae: 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_00b8: 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_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: 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_006a: 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_0074: 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_005b: 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_0061: Unknown result type (might be due to invalid IL or missing references) float3 val = MathHelper.MultiplyPoint(colliderTransform.localToWorldMatrix, collider.offset); float3 val2 = MathHelper.MultiplyPoint(colliderTransform.localToWorldMatrix, collider.tailOrNormal) - val; float num = math.lengthsq(val2); float3 val3 = nextTail - val; float num2 = math.dot(val2, val3); if (!((double)num2 < 0.0)) { val3 = ((!(num2 > num)) ? (val3 - val2 * (num2 / num)) : (val3 - val2)); } float num3 = collider.radius - joint.radius - math.length(val3); if (num3 < 0f) { float3 val4 = -1f * math.normalizesafe(val3, default(float3)); newNextTail = nextTail - val4 * num3; return true; } newNextTail = default(float3); return false; } } public struct UpdateFastSpringBoneJob : IJobParallelFor { [ReadOnly] public NativeArray<BlittableJointMutable> Joints; [ReadOnly] public NativeArray<BlittableJointImmutable> Logics; [ReadOnly] public NativeArray<float3> PrevTail; [ReadOnly] public NativeArray<float3> CurrentTail; [NativeDisableParallelForRestriction] public NativeArray<float3> NextTail; [ReadOnly] public NativeArray<BlittableSpring> Springs; [ReadOnly] public NativeArray<BlittableModelLevel> Models; [ReadOnly] public NativeArray<BlittableCollider> Colliders; [NativeDisableParallelForRestriction] public NativeArray<BlittableTransform> Transforms; public float DeltaTime; public void Execute(int index) { //IL_0119: 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_012b: 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_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0141: 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_0187: 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_018c: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_02cf: Unknown result type (might be due to invalid IL or missing references) //IL_02d4: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0353: Unknown result type (might be due to invalid IL or missing references) //IL_0358: Unknown result type (might be due to invalid IL or missing references) //IL_035e: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_03a1: Unknown result type (might be due to invalid IL or missing references) //IL_03a6: Unknown result type (might be due to invalid IL or missing references) //IL_03a8: Unknown result type (might be due to invalid IL or missing references) //IL_0392: Unknown result type (might be due to invalid IL or missing references) //IL_03b2: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Unknown result type (might be due to invalid IL or missing references) //IL_03c0: Unknown result type (might be due to invalid IL or missing references) //IL_03c4: Unknown result type (might be due to invalid IL or missing references) //IL_03c8: Unknown result type (might be due to invalid IL or missing references) //IL_03cd: Unknown result type (might be due to invalid IL or missing references) //IL_03d2: Unknown result type (might be due to invalid IL or missing references) //IL_03d6: Unknown result type (might be due to invalid IL or missing references) //IL_03da: Unknown result type (might be due to invalid IL or missing references) //IL_03df: Unknown result type (might be due to invalid IL or missing references) //IL_03e4: Unknown result type (might be due to invalid IL or missing references) //IL_03e8: Unknown result type (might be due to invalid IL or missing references) //IL_03ed: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: Unknown result type (might be due to invalid IL or missing references) BlittableSpring blittableSpring = Springs[index]; int transformIndexOffset = blittableSpring.transformIndexOffset; BlittableSpan colliderSpan = blittableSpring.colliderSpan; BlittableSpan logicSpan = blittableSpring.logicSpan; BlittableModelLevel blittableModelLevel = Models[blittableSpring.modelIndex]; for (int i = logicSpan.startIndex; i < logicSpan.startIndex + logicSpan.count; i++) { BlittableJointImmutable logic = Logics[i]; BlittableJointMutable joint = Joints[i]; BlittableTransform headTransform = Transforms[logic.headTransformIndex + transformIndexOffset]; BlittableTransform? blittableTransform = ((logic.parentTransformIndex >= 0) ? new BlittableTransform?(Transforms[logic.parentTransformIndex + transformIndexOffset]) : ((BlittableTransform?)null)); BlittableTransform? blittableTransform2 = ((blittableSpring.centerTransformIndex >= 0) ? new BlittableTransform?(Transforms[blittableSpring.centerTransformIndex + transformIndexOffset]) : ((BlittableTransform?)null)); if (blittableTransform.HasValue) { headTransform = headTransform.UpdateParentMatrix(blittableTransform.Value); } float3 val = (blittableTransform2.HasValue ? MathHelper.MultiplyPoint3x4(blittableTransform2.Value.localToWorldMatrix, CurrentTail[i]) : CurrentTail[i]); float3 val2 = (blittableTransform2.HasValue ? MathHelper.MultiplyPoint3x4(blittableTransform2.Value.localToWorldMatrix, PrevTail[i]) : PrevTail[i]); quaternion parentRotation = blittableTransform?.rotation ?? quaternion.identity; float num = (blittableModelLevel.SupportsScalingAtRuntime ? math.cmax(math.abs(headTransform.lossyScale)) : 1f); float3 val3 = (joint.gravityDir * joint.gravityPower + blittableModelLevel.ExternalForce) * DeltaTime; float3 val4 = val + (val - val2) * (1f - joint.dragForce) + math.mul(math.mul(parentRotation, logic.localRotation), logic.boneAxis) * joint.stiffnessForce * DeltaTime * num + val3 * num; val4 = headTransform.position + math.normalizesafe(val4 - headTransform.position, default(float3)) * logic.length; val4 = Anglelimit.Apply(in logic, in joint, in parentRotation, headTransform.position, in val4); for (int j = colliderSpan.startIndex; j < colliderSpan.startIndex + colliderSpan.count; j++) { BlittableCollider collider = Colliders[j]; BlittableTransform colliderTransform = Transforms[collider.transformIndex + transformIndexOffset]; float3 lossyScale = colliderTransform.lossyScale; float maxColliderScale = math.max(math.max(math.abs(lossyScale.x), math.abs(lossyScale.y)), math.abs(lossyScale.z)); float3 colliderWorldPosition = MathHelper.MultiplyPoint3x4(colliderTransform.localToWorldMatrix, collider.offset); if (SpringBoneCollision.TryCollide(in logic, in joint, in headTransform, in collider, in colliderTransform, maxColliderScale, MathHelper.MultiplyPoint3x4(colliderTransform.localToWorldMatrix, collider.tailOrNormal), in colliderWorldPosition, in val4, out var newNextTail)) { val4 = Anglelimit.Apply(in logic, in joint, in parentRotation, headTransform.position, in newNextTail); } } NextTail[i] = (blittableTransform2.HasValue ? MathHelper.MultiplyPoint3x4(blittableTransform2.Value.worldToLocalMatrix, val4) : val4); quaternion val5 = math.mul(parentRotation, logic.localRotation); float3 val6 = math.mul(val5, logic.boneAxis); float3 val7 = val4 - headTransform.position; headTransform = headTransform.UpdateRotation(math.mul(MathHelper.FromToRotation(ref val6, ref val7), val5), blittableTransform); if (!blittableModelLevel.StopSpringBoneWriteback) { Transforms[logic.headTransformIndex + transformIndexOffset] = headTransform; } } } } } namespace UniGLTF.SpringBoneJobs.InputPorts { public class FastSpringBoneBuffer : IDisposable { private NativeArray<float3> _currentTailsBackup; private NativeArray<float3> _nextTailsBackup; public Transform Model { get; } public NativeArray<BlittableSpring> Springs { get; } public NativeArray<BlittableJointMutable> Joints { get; } public NativeArray<BlittableCollider> Colliders { get; } public NativeArray<BlittableJointImmutable> Logics { get; } public Transform[] Transforms { get; } private static Transform[] MakeFlattenTransformList(FastSpringBoneSpring[] springs) { HashSet<Transform> hashSet = new HashSet<Transform>(); for (int i = 0; i < springs.Length; i++) { FastSpringBoneSpring fastSpringBoneSpring = springs[i]; FastSpringBoneJoint[] joints = fastSpringBoneSpring.joints; for (int j = 0; j < joints.Length; j++) { FastSpringBoneJoint fastSpringBoneJoint = joints[j]; hashSet.Add(fastSpringBoneJoint.Transform); if ((Object)(object)fastSpringBoneJoint.Transform.parent != (Object)null) { hashSet.Add(fastSpringBoneJoint.Transform.parent); } } FastSpringBoneCollider[] colliders = fastSpringBoneSpring.colliders; for (int j = 0; j < colliders.Length; j++) { FastSpringBoneCollider fastSpringBoneCollider = colliders[j]; hashSet.Add(fastSpringBoneCollider.Transform); } if ((Object)(object)fastSpringBoneSpring.center != (Object)null) { hashSet.Add(fastSpringBoneSpring.center); } } return hashSet.ToArray(); } public FastSpringBoneBuffer(Transform model, FastSpringBoneSpring[] springs) { //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_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0147: 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_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) Model = model; Transforms = MakeFlattenTransformList(springs); List<BlittableSpring> list = new List<BlittableSpring>(); List<BlittableJointMutable> list2 = new List<BlittableJointMutable>(); List<BlittableCollider> list3 = new List<BlittableCollider>(); List<BlittableJointImmutable> list4 = new List<BlittableJointImmutable>(); for (int i = 0; i < springs.Length; i++) { FastSpringBoneSpring spring = springs[i]; int centerTransformIndex = Array.IndexOf(Transforms, spring.center); BlittableSpring item = new BlittableSpring(new BlittableSpan(list3.Count, spring.colliders.Length), new BlittableSpan(list2.Count, spring.joints.Length - 1), centerTransformIndex); list.Add(item); list3.AddRange(spring.colliders.Select(delegate(FastSpringBoneCollider collider) { BlittableCollider collider2 = collider.Collider; int transformIndex = Array.IndexOf(Transforms, collider.Transform); return collider2.SetTransformIndex(transformIndex); })); list2.AddRange(from joint in spring.joints.Take(spring.joints.Length - 1) select joint.Joint); list4.AddRange(LogicFromTransform(Transforms, spring)); } Springs = new NativeArray<BlittableSpring>(list.ToArray(), (Allocator)4); Joints = new NativeArray<BlittableJointMutable>(list2.ToArray(), (Allocator)4); Colliders = new NativeArray<BlittableCollider>(list3.ToArray(), (Allocator)4); Logics = new NativeArray<BlittableJointImmutable>(list4.ToArray(), (Allocator)4); } public static IEnumerable<BlittableJointImmutable> LogicFromTransform(Transform[] Transforms, FastSpringBoneSpring spring) { int i = 0; float3 val = default(float3); while (i < spring.joints.Length - 1) { FastSpringBoneJoint fastSpringBoneJoint = spring.joints[i]; FastSpringBoneJoint fastSpringBoneJoint2 = spring.joints[i + 1]; Vector3 localPosition = fastSpringBoneJoint2.Transform.localPosition; Vector3 lossyScale = fastSpringBoneJoint2.Transform.lossyScale; ((float3)(ref val))..ctor(localPosition.x * lossyScale.x, localPosition.y * lossyScale.y, localPosition.z * lossyScale.z); int num = Array.IndexOf(Transforms, fastSpringBoneJoint.Transform); yield return new BlittableJointImmutable(Array.IndexOf(Transforms, fastSpringBoneJoint.Transform.parent), num, Array.IndexOf(Transforms, fastSpringBoneJoint2.Transform), localRotation: quaternion.op_Implicit(fastSpringBoneJoint.DefaultLocalRotation), boneAxis: math.normalizesafe(val, default(float3)), length: math.length(val)); num = i + 1; i = num; } } public void BackupCurrentTails(NativeArray<float3> currentTails, NativeArray<float3> nextTails, int offset) { //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) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_0071: 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_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_008d: 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_0097: 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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_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) if (Logics.IsCreated && Logics.Length != 0) { if (!_currentTailsBackup.IsCreated) { _currentTailsBackup = new NativeArray<float3>(Logics.Length, (Allocator)4, (NativeArrayOptions)1); } if (!_nextTailsBackup.IsCreated) { _nextTailsBackup = new NativeArray<float3>(Logics.Length, (Allocator)4, (NativeArrayOptions)1); } NativeArray<float3>.Copy(currentTails, offset, _currentTailsBackup, 0, Logics.Length); NativeArray<float3>.Copy(nextTails, offset, _nextTailsBackup, 0, Logics.Length); } } public void RestoreCurrentTails(NativeArray<float3> currentTails, NativeArray<float3> nextTails, int offset) { //IL_00
valheim_Data/Managed/UniGLTF.UniUnlit.dll
Decompiled 20 hours agousing System; using System.CodeDom.Compiler; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [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[131] { 0, 0, 0, 1, 0, 0, 0, 59, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 85, 110, 105, 85, 110, 108, 105, 116, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 85, 110, 108, 105, 116, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 85, 110, 105, 85, 110, 108, 105, 116, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 85, 110, 108, 105, 116, 85, 116, 105, 108, 46, 99, 115 }, TypesData = new byte[71] { 0, 0, 0, 0, 32, 85, 110, 105, 71, 76, 84, 70, 46, 85, 110, 105, 85, 110, 108, 105, 116, 124, 85, 110, 105, 85, 110, 108, 105, 116, 67, 111, 110, 116, 101, 120, 116, 0, 0, 0, 0, 29, 85, 110, 105, 71, 76, 84, 70, 46, 85, 110, 105, 85, 110, 108, 105, 116, 124, 85, 110, 105, 85, 110, 108, 105, 116, 85, 116, 105, 108 }, TotalFiles = 2, TotalTypes = 2, IsEditorOnly = false }; } } namespace UniGLTF.UniUnlit; public class UniUnlitContext { public Material Material { get; } public bool UnsafeEditMode { get; set; } public UniUnlitRenderMode RenderMode { get { return UniUnlitUtil.GetRenderMode(Material); } set { UniUnlitUtil.SetRenderMode(Material, value); if (!UnsafeEditMode) { UniUnlitUtil.ValidateProperties(Material, isRenderModeChangedByUser: true); } } } public UniUnlitCullMode CullMode { get { return UniUnlitUtil.GetCullMode(Material); } set { UniUnlitUtil.SetCullMode(Material, value); if (!UnsafeEditMode) { UniUnlitUtil.ValidateProperties(Material); } } } public UniUnlitVertexColorBlendOp VColBlendMode { get { return UniUnlitUtil.GetVColBlendMode(Material); } set { UniUnlitUtil.SetVColBlendMode(Material, value); if (!UnsafeEditMode) { UniUnlitUtil.ValidateProperties(Material); } } } public Color MainColorSrgb { get { //IL_000b: Unknown result type (might be due to invalid IL or missing references) return Material.GetColor("_Color"); } set { //IL_000b: Unknown result type (might be due to invalid IL or missing references) Material.SetColor("_Color", value); } } public Texture MainTexture { get { return Material.GetTexture("_MainTex"); } set { Material.SetTexture("_MainTex", value); } } public Vector2 MainTextureOffset { get { //IL_000b: Unknown result type (might be due to invalid IL or missing references) return Material.GetTextureOffset("_MainTex"); } set { //IL_000b: Unknown result type (might be due to invalid IL or missing references) Material.SetTextureOffset("_MainTex", value); } } public Vector2 MainTextureScale { get { //IL_000b: Unknown result type (might be due to invalid IL or missing references) return Material.GetTextureScale("_MainTex"); } set { //IL_000b: Unknown result type (might be due to invalid IL or missing references) Material.SetTextureScale("_MainTex", value); } } public float Cutoff { get { return Material.GetFloat("_Cutoff"); } set { Material.SetFloat("_Cutoff", value); } } public UniUnlitContext(Material material) { Material = material; } public void Validate() { UniUnlitUtil.ValidateProperties(Material, isRenderModeChangedByUser: true); } } public enum UniUnlitRenderMode { Opaque, Cutout, Transparent } public enum UniUnlitCullMode { Off = 0, Back = 2 } public enum UniUnlitVertexColorBlendOp { None, Multiply } public static class UniUnlitUtil { public const string ShaderName = "UniGLTF/UniUnlit"; public const string PropNameMainTex = "_MainTex"; public const string PropNameColor = "_Color"; public const string PropNameCutoff = "_Cutoff"; public const string PropNameBlendMode = "_BlendMode"; public const string PropNameCullMode = "_CullMode"; [Obsolete("Use PropNameVColBlendMode")] public const string PropeNameVColBlendMode = "_VColBlendMode"; public const string PropNameVColBlendMode = "_VColBlendMode"; public const string PropNameSrcBlend = "_SrcBlend"; public const string PropNameDstBlend = "_DstBlend"; public const string PropNameZWrite = "_ZWrite"; public const string PropNameStandardShadersRenderMode = "_Mode"; public const string KeywordAlphaTestOn = "_ALPHATEST_ON"; public const string KeywordAlphaBlendOn = "_ALPHABLEND_ON"; public const string KeywordVertexColMul = "_VERTEXCOL_MUL"; public const string TagRenderTypeKey = "RenderType"; public const string TagRenderTypeValueOpaque = "Opaque"; public const string TagRenderTypeValueTransparentCutout = "TransparentCutout"; public const string TagRenderTypeValueTransparent = "Transparent"; public static void SetRenderMode(Material material, UniUnlitRenderMode mode) { material.SetInt("_BlendMode", (int)mode); } public static void SetCullMode(Material material, UniUnlitCullMode mode) { material.SetInt("_CullMode", (int)mode); } public static void SetVColBlendMode(Material material, UniUnlitVertexColorBlendOp mode) { material.SetInt("_VColBlendMode", (int)mode); } public static UniUnlitRenderMode GetRenderMode(Material material) { return (UniUnlitRenderMode)material.GetInt("_BlendMode"); } public static UniUnlitCullMode GetCullMode(Material material) { return (UniUnlitCullMode)material.GetInt("_CullMode"); } public static UniUnlitVertexColorBlendOp GetVColBlendMode(Material material) { return (UniUnlitVertexColorBlendOp)material.GetInt("_VColBlendMode"); } public static void ValidateProperties(Material material, bool isRenderModeChangedByUser = false) { SetupBlendMode(material, (UniUnlitRenderMode)material.GetFloat("_BlendMode"), isRenderModeChangedByUser); SetupVertexColorBlendOp(material, (UniUnlitVertexColorBlendOp)material.GetFloat("_VColBlendMode")); } private static void SetupBlendMode(Material material, UniUnlitRenderMode renderMode, bool isRenderModeChangedByUser = false) { switch (renderMode) { case UniUnlitRenderMode.Opaque: material.SetOverrideTag("RenderType", "Opaque"); material.SetInt("_SrcBlend", 1); material.SetInt("_DstBlend", 0); material.SetInt("_ZWrite", 1); SetKeyword(material, "_ALPHATEST_ON", required: false); SetKeyword(material, "_ALPHABLEND_ON", required: false); if (isRenderModeChangedByUser) { material.renderQueue = -1; } break; case UniUnlitRenderMode.Cutout: material.SetOverrideTag("RenderType", "TransparentCutout"); material.SetInt("_SrcBlend", 1); material.SetInt("_DstBlend", 0); material.SetInt("_ZWrite", 1); SetKeyword(material, "_ALPHATEST_ON", required: true); SetKeyword(material, "_ALPHABLEND_ON", required: false); if (isRenderModeChangedByUser) { material.renderQueue = 2450; } break; case UniUnlitRenderMode.Transparent: material.SetOverrideTag("RenderType", "Transparent"); material.SetInt("_SrcBlend", 5); material.SetInt("_DstBlend", 10); material.SetInt("_ZWrite", 0); SetKeyword(material, "_ALPHATEST_ON", required: false); SetKeyword(material, "_ALPHABLEND_ON", required: true); if (isRenderModeChangedByUser) { material.renderQueue = 3000; } break; } } private static void SetupVertexColorBlendOp(Material material, UniUnlitVertexColorBlendOp vColBlendOp) { switch (vColBlendOp) { case UniUnlitVertexColorBlendOp.None: SetKeyword(material, "_VERTEXCOL_MUL", required: false); break; case UniUnlitVertexColorBlendOp.Multiply: SetKeyword(material, "_VERTEXCOL_MUL", required: true); break; } } private static void SetKeyword(Material mat, string keyword, bool required) { if (required) { mat.EnableKeyword(keyword); } else { mat.DisableKeyword(keyword); } } }
valheim_Data/Managed/UniGLTF.dll
Decompiled 20 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Buffers; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.IO.Compression; using System.Linq; using System.Linq.Expressions; using System.Net; using System.Numerics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using UniGLTF.Extensions.VRMC_materials_hdr_emissiveMultiplier; using UniGLTF.MeshUtility; using UniGLTF.UniUnlit; using UniGLTF.Utils; using UniGLTF.Zip; using UniJSON; using Unity.Collections; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] public static class TriangleUtil { public static IEnumerable<int> FlipTriangle(IEnumerable<byte> src) { return FlipTriangle(src.Select((Func<byte, int>)((byte x) => x))); } public static IEnumerable<int> FlipTriangle(IEnumerable<ushort> src) { return FlipTriangle(src.Select((Func<ushort, int>)((ushort x) => x))); } public static IEnumerable<int> FlipTriangle(IEnumerable<uint> src) { return FlipTriangle(src.Select((uint x) => (int)x)); } public static IEnumerable<int> FlipTriangle(IEnumerable<int> src) { IEnumerator<int> it = src.GetEnumerator(); while (it.MoveNext()) { int i0 = it.Current; if (!it.MoveNext()) { break; } int i1 = it.Current; if (!it.MoveNext()) { break; } yield return it.Current; yield return i1; yield return i0; } } } [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[17349] { 0, 0, 0, 4, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 65, 114, 114, 97, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 67, 111, 108, 111, 114, 67, 111, 110, 118, 101, 114, 115, 105, 111, 110, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 73, 110, 100, 101, 120, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 78, 117, 109, 101, 114, 105, 99, 115, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 83, 116, 114, 105, 110, 103, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 84, 114, 97, 110, 115, 102, 111, 114, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 85, 110, 105, 116, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 103, 108, 84, 70, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 66, 105, 110, 100, 112, 111, 115, 101, 71, 105, 122, 109, 111, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 82, 101, 112, 111, 114, 116, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 66, 111, 110, 101, 77, 101, 115, 104, 69, 114, 97, 115, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 66, 111, 110, 101, 78, 111, 114, 109, 97, 108, 105, 122, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 71, 108, 116, 102, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 77, 101, 115, 104, 65, 116, 116, 97, 99, 104, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 77, 101, 115, 104, 69, 120, 99, 108, 117, 100, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 77, 101, 115, 104, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 77, 101, 115, 104, 70, 114, 101, 101, 122, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 77, 101, 115, 104, 73, 110, 116, 101, 103, 114, 97, 116, 105, 111, 110, 71, 114, 111, 117, 112, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 77, 101, 115, 104, 73, 110, 116, 101, 103, 114, 97, 116, 105, 111, 110, 82, 101, 115, 117, 108, 116, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 77, 101, 115, 104, 73, 110, 116, 101, 103, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 84, 114, 105, 97, 110, 103, 108, 101, 83, 101, 112, 97, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 65, 110, 100, 69, 120, 116, 114, 97, 115, 92, 69, 109, 105, 115, 115, 105, 118, 101, 77, 117, 108, 116, 105, 112, 108, 105, 101, 114, 92, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 97, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 65, 110, 100, 69, 120, 116, 114, 97, 115, 92, 69, 109, 105, 115, 115, 105, 118, 101, 77, 117, 108, 116, 105, 112, 108, 105, 101, 114, 92, 70, 111, 114, 109, 97, 116, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 65, 110, 100, 69, 120, 116, 114, 97, 115, 92, 69, 109, 105, 115, 115, 105, 118, 101, 77, 117, 108, 116, 105, 112, 108, 105, 101, 114, 92, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 65, 110, 100, 69, 120, 116, 114, 97, 115, 92, 75, 72, 82, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 101, 109, 105, 115, 115, 105, 118, 101, 95, 115, 116, 114, 101, 110, 103, 116, 104, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 89, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 65, 110, 100, 69, 120, 116, 114, 97, 115, 92, 75, 72, 82, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 117, 110, 108, 105, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 65, 110, 100, 69, 120, 116, 114, 97, 115, 92, 75, 72, 82, 95, 116, 101, 120, 116, 117, 114, 101, 95, 98, 97, 115, 105, 115, 117, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 65, 110, 100, 69, 120, 116, 114, 97, 115, 92, 75, 72, 82, 95, 116, 101, 120, 116, 117, 114, 101, 95, 116, 114, 97, 110, 115, 102, 111, 114, 109, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 83, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 65, 110, 100, 69, 120, 116, 114, 97, 115, 92, 103, 108, 116, 102, 69, 120, 116, 101, 110, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 65, 110, 100, 69, 120, 116, 114, 97, 115, 92, 103, 108, 116, 102, 95, 109, 101, 115, 104, 95, 101, 120, 116, 114, 97, 115, 95, 116, 97, 114, 103, 101, 116, 78, 97, 109, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 71, 108, 116, 102, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 73, 83, 116, 111, 114, 97, 103, 101, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 74, 115, 111, 110, 83, 99, 104, 101, 109, 97, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 69, 110, 117, 109, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 65, 110, 105, 109, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 65, 115, 115, 101, 116, 115, 46, 99, 115, 0, 0, 0, 6, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 66, 117, 102, 102, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 67, 97, 109, 101, 114, 97, 46, 99, 115, 0, 0, 0, 8, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 77, 97, 116, 101, 114, 105, 97, 108, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 77, 101, 115, 104, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 78, 111, 100, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 84, 101, 120, 116, 117, 114, 101, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 98, 84, 121, 112, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 79, 92, 69, 120, 112, 111, 114, 116, 92, 73, 65, 110, 105, 109, 97, 116, 105, 111, 110, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 108, 105, 112, 70, 97, 99, 116, 111, 114, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 109, 112, 111, 114, 116, 101, 114, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 65, 114, 114, 97, 121, 66, 121, 116, 101, 66, 117, 102, 102, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 65, 114, 114, 97, 121, 80, 105, 110, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 50, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 65, 120, 101, 115, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 66, 117, 102, 102, 101, 114, 65, 99, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 51, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 66, 121, 116, 101, 51, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 51, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 66, 121, 116, 101, 52, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 66, 121, 116, 101, 115, 82, 101, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 69, 120, 112, 111, 114, 116, 105, 110, 103, 71, 108, 116, 102, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 83, 117, 112, 112, 111, 114, 116, 70, 108, 97, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 70, 105, 108, 101, 83, 121, 115, 116, 101, 109, 83, 116, 111, 114, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 70, 111, 114, 99, 101, 71, 108, 116, 102, 78, 111, 100, 101, 85, 110, 105, 113, 117, 101, 78, 97, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 71, 108, 116, 102, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 71, 108, 116, 102, 69, 120, 112, 111, 114, 116, 83, 101, 116, 116, 105, 110, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 71, 108, 116, 102, 74, 115, 111, 110, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 71, 108, 116, 102, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 73, 82, 101, 115, 112, 111, 110, 115, 105, 98, 105, 108, 105, 116, 121, 70, 111, 114, 68, 101, 115, 116, 114, 111, 121, 79, 98, 106, 101, 99, 116, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 83, 101, 116, 116, 105, 110, 103, 115, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 83, 112, 101, 101, 100, 76, 111, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 66, 117, 105, 108, 116, 73, 110, 71, 108, 116, 102, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 115, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 70, 97, 108, 108, 98, 97, 99, 107, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 119, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 71, 101, 110, 101, 114, 105, 99, 85, 110, 108, 105, 116, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 115, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 83, 116, 97, 110, 100, 97, 114, 100, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 115, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 85, 110, 105, 85, 110, 108, 105, 116, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 112, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 66, 117, 105, 108, 116, 73, 110, 71, 108, 116, 102, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 118, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 71, 108, 116, 102, 68, 101, 102, 97, 117, 108, 116, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 114, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 71, 108, 116, 102, 80, 98, 114, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 116, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 71, 108, 116, 102, 85, 110, 108, 105, 116, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 69, 120, 112, 111, 114, 116, 92, 71, 108, 116, 102, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 69, 120, 112, 111, 114, 116, 92, 73, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 71, 108, 116, 102, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 73, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 70, 97, 99, 116, 111, 114, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 80, 97, 114, 97, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 82, 101, 110, 100, 101, 114, 80, 105, 112, 101, 108, 105, 110, 101, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 73, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 85, 114, 112, 70, 97, 108, 108, 98, 97, 99, 107, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 85, 114, 112, 76, 105, 116, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 85, 114, 112, 85, 110, 105, 85, 110, 108, 105, 116, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 85, 114, 112, 85, 110, 108, 105, 116, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 85, 114, 112, 71, 108, 116, 102, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 108, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 85, 114, 112, 71, 108, 116, 102, 68, 101, 102, 97, 117, 108, 116, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 104, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 85, 114, 112, 71, 108, 116, 102, 80, 98, 114, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 85, 114, 112, 71, 108, 116, 102, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 83, 104, 97, 100, 101, 114, 85, 116, 105, 108, 92, 76, 105, 116, 92, 85, 114, 112, 66, 97, 115, 101, 83, 104, 97, 100, 101, 114, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 89, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 83, 104, 97, 100, 101, 114, 85, 116, 105, 108, 92, 76, 105, 116, 92, 85, 114, 112, 76, 105, 116, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 83, 104, 97, 100, 101, 114, 85, 116, 105, 108, 92, 76, 105, 116, 92, 85, 114, 112, 85, 110, 108, 105, 116, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 116, 105, 108, 115, 92, 73, 110, 116, 101, 114, 110, 97, 108, 77, 97, 116, 101, 114, 105, 97, 108, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 116, 105, 108, 115, 92, 85, 110, 105, 71, 76, 84, 70, 83, 104, 97, 100, 101, 114, 78, 111, 116, 77, 97, 116, 99, 104, 101, 100, 73, 110, 116, 101, 114, 110, 97, 108, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 70, 105, 108, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 74, 111, 105, 110, 116, 115, 65, 99, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 69, 120, 112, 111, 114, 116, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 69, 120, 112, 111, 114, 116, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 69, 120, 112, 111, 114, 116, 101, 114, 95, 68, 105, 118, 105, 100, 101, 100, 86, 101, 114, 116, 101, 120, 66, 117, 102, 102, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 69, 120, 112, 111, 114, 116, 101, 114, 95, 83, 104, 97, 114, 101, 100, 86, 101, 114, 116, 101, 120, 66, 117, 102, 102, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 85, 112, 108, 111, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 86, 101, 114, 116, 101, 120, 48, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 86, 101, 114, 116, 101, 120, 49, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 86, 101, 114, 116, 101, 120, 50, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 86, 101, 114, 116, 101, 120, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 77, 101, 115, 104, 87, 105, 116, 104, 77, 97, 116, 101, 114, 105, 97, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 80, 111, 115, 105, 116, 105, 111, 110, 77, 105, 110, 77, 97, 120, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 72, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 80, 114, 105, 109, 105, 116, 105, 118, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 83, 107, 105, 110, 110, 105, 110, 103, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 84, 114, 105, 97, 110, 103, 108, 101, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 86, 101, 114, 116, 101, 120, 67, 111, 108, 111, 114, 83, 116, 97, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 101, 115, 104, 73, 79, 92, 87, 101, 105, 103, 104, 116, 115, 65, 99, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 70, 108, 97, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 77, 111, 110, 111, 66, 101, 104, 97, 118, 105, 111, 117, 114, 67, 111, 109, 112, 97, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 78, 97, 116, 105, 118, 101, 65, 114, 114, 97, 121, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 78, 111, 100, 101, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 80, 97, 114, 115, 101, 114, 92, 65, 117, 116, 111, 71, 108, 116, 102, 70, 105, 108, 101, 80, 97, 114, 115, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 80, 97, 114, 115, 101, 114, 92, 71, 108, 98, 66, 105, 110, 97, 114, 121, 80, 97, 114, 115, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 80, 97, 114, 115, 101, 114, 92, 71, 108, 98, 70, 105, 108, 101, 80, 97, 114, 115, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 80, 97, 114, 115, 101, 114, 92, 71, 108, 98, 76, 111, 119, 76, 101, 118, 101, 108, 80, 97, 114, 115, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 80, 97, 114, 115, 101, 114, 92, 71, 108, 116, 102, 70, 105, 108, 101, 87, 105, 116, 104, 82, 101, 115, 111, 117, 114, 99, 101, 70, 105, 108, 101, 115, 80, 97, 114, 115, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 80, 97, 114, 115, 101, 114, 92, 90, 105, 112, 65, 114, 99, 104, 105, 118, 101, 100, 71, 108, 116, 102, 70, 105, 108, 101, 80, 97, 114, 115, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 80, 97, 116, 104, 79, 98, 106, 101, 99, 116, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 80, 114, 111, 103, 114, 101, 115, 115, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 83, 66, 121, 116, 101, 51, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 83, 66, 121, 116, 101, 52, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 83, 97, 102, 101, 77, 97, 114, 115, 104, 97, 108, 67, 111, 112, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 83, 104, 111, 114, 116, 51, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 83, 107, 105, 110, 74, 111, 105, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 83, 117, 98, 65, 115, 115, 101, 116, 75, 101, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 83, 121, 109, 98, 111, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 67, 111, 110, 118, 101, 114, 116, 101, 114, 92, 78, 111, 114, 109, 97, 108, 67, 111, 110, 118, 101, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 67, 111, 110, 118, 101, 114, 116, 101, 114, 92, 79, 99, 99, 108, 117, 115, 105, 111, 110, 77, 101, 116, 97, 108, 108, 105, 99, 82, 111, 117, 103, 104, 110, 101, 115, 115, 67, 111, 110, 118, 101, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 67, 111, 110, 118, 101, 114, 116, 101, 114, 92, 84, 101, 120, 116, 117, 114, 101, 67, 111, 110, 118, 101, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 69, 120, 112, 111, 114, 116, 92, 71, 108, 116, 102, 84, 101, 120, 116, 117, 114, 101, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 69, 120, 112, 111, 114, 116, 92, 73, 84, 101, 120, 116, 117, 114, 101, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 69, 120, 112, 111, 114, 116, 92, 73, 84, 101, 120, 116, 117, 114, 101, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 69, 120, 112, 111, 114, 116, 92, 82, 117, 110, 116, 105, 109, 101, 84, 101, 120, 116, 117, 114, 101, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 69, 120, 112, 111, 114, 116, 92, 84, 101, 120, 116, 117, 114, 101, 69, 120, 112, 111, 114, 116, 80, 97, 114, 97, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 69, 120, 112, 111, 114, 116, 92, 84, 101, 120, 116, 117, 114, 101, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 105, 110, 103, 84, 101, 120, 116, 117, 114, 101, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 71, 108, 116, 102, 80, 98, 114, 84, 101, 120, 116, 117, 114, 101, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 71, 108, 116, 102, 84, 101, 120, 116, 117, 114, 101, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 71, 108, 116, 102, 84, 101, 120, 116, 117, 114, 101, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 90, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 73, 84, 101, 120, 116, 117, 114, 101, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 73, 84, 101, 120, 116, 117, 114, 101, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 73, 109, 112, 111, 114, 116, 101, 100, 84, 101, 120, 116, 117, 114, 101, 65, 99, 99, 101, 115, 115, 105, 98, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 75, 116, 120, 84, 101, 120, 116, 117, 114, 101, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 83, 97, 109, 112, 108, 101, 114, 80, 97, 114, 97, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 84, 101, 120, 116, 117, 114, 101, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 84, 101, 120, 116, 117, 114, 101, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 83, 101, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 77, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 84, 101, 120, 116, 117, 114, 101, 70, 97, 99, 116, 111, 114, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 84, 101, 120, 116, 117, 114, 101, 73, 109, 112, 111, 114, 116, 78, 97, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 98, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 85, 110, 105, 116, 121, 83, 117, 112, 112, 111, 114, 116, 101, 100, 73, 109, 97, 103, 101, 84, 121, 112, 101, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 87, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 73, 109, 112, 111, 114, 116, 92, 85, 110, 105, 116, 121, 84, 101, 120, 116, 117, 114, 101, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 73, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 83, 97, 109, 112, 108, 101, 114, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 85, 83, 104, 111, 114, 116, 50, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 85, 83, 104, 111, 114, 116, 51, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 85, 83, 104, 111, 114, 116, 52, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 85, 110, 105, 116, 121, 79, 98, 106, 101, 99, 116, 68, 101, 115, 116, 114, 111, 121, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 85, 110, 105, 116, 121, 80, 97, 116, 104, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 85, 114, 105, 66, 121, 116, 101, 66, 117, 102, 102, 101, 114, 46, 99, 115, 0, 0, 0, 6, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 90, 105, 112, 65, 114, 99, 104, 105, 118, 101, 83, 116, 111, 114, 97, 103, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 103, 108, 98, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 73, 79, 92, 103, 108, 116, 102, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 80, 97, 99, 107, 97, 103, 101, 86, 101, 114, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 80, 97, 99, 107, 97, 103, 101, 86, 101, 114, 115, 105, 111, 110, 80, 97, 114, 116, 105, 97, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 82, 117, 110, 116, 105, 109, 101, 71, 108, 116, 102, 73, 110, 115, 116, 97, 110, 99, 101, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 59, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 85, 110, 105, 71, 76, 84, 70, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 85, 110, 105, 71, 76, 84, 70, 86, 101, 114, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 85, 110, 105, 71, 76, 84, 70, 86, 101, 114, 115, 105, 111, 110, 95, 112, 97, 114, 116, 105, 97, 108, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 71, 76, 84, 70, 92, 86, 97, 108, 105, 100, 97, 116, 105, 111, 110, 92, 86, 97, 108, 105, 100, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 66, 121, 116, 101, 66, 117, 102, 102, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 67, 111, 110, 99, 114, 101, 116, 101, 67, 97, 115, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 67, 111, 110, 99, 114, 101, 116, 101, 67, 97, 115, 116, 46, 103, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 69, 120, 99, 101, 112, 116, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 65, 114, 114, 97, 121, 83, 101, 103, 109, 101, 110, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 66, 121, 116, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 68, 97, 116, 101, 84, 105, 109, 101, 79, 102, 102, 115, 101, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 69, 110, 117, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 80, 97, 114, 115, 101, 114, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 84, 121, 112, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 70, 111, 114, 109, 97, 116, 116, 101, 114, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 73, 70, 105, 108, 101, 83, 121, 115, 116, 101, 109, 65, 99, 99, 101, 115, 115, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 73, 70, 111, 114, 109, 97, 116, 116, 101, 114, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 59, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 73, 83, 116, 111, 114, 101, 92, 66, 121, 116, 101, 85, 110, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 73, 83, 116, 111, 114, 101, 92, 66, 121, 116, 101, 115, 83, 116, 111, 114, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 73, 83, 116, 111, 114, 101, 92, 73, 83, 116, 111, 114, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 73, 83, 116, 111, 114, 101, 92, 83, 116, 114, 101, 97, 109, 83, 116, 111, 114, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 73, 83, 116, 111, 114, 101, 92, 83, 116, 114, 105, 110, 103, 66, 117, 105, 108, 100, 101, 114, 83, 116, 111, 114, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 74, 115, 111, 110, 92, 74, 115, 111, 110, 70, 111, 114, 109, 97, 116, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 74, 115, 111, 110, 92, 74, 115, 111, 110, 80, 97, 114, 115, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 74, 115, 111, 110, 92, 74, 115, 111, 110, 83, 116, 114, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 74, 115, 111, 110, 92, 74, 115, 111, 110, 86, 97, 108, 117, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 76, 105, 115, 116, 84, 114, 101, 101, 78, 111, 100, 101, 92, 76, 105, 115, 116, 84, 114, 101, 101, 78, 111, 100, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 76, 105, 115, 116, 84, 114, 101, 101, 78, 111, 100, 101, 92, 76, 105, 115, 116, 84, 114, 101, 101, 78, 111, 100, 101, 65, 114, 114, 97, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 76, 105, 115, 116, 84, 114, 101, 101, 78, 111, 100, 101, 92, 76, 105, 115, 116, 84, 114, 101, 101, 78, 111, 100, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 76, 105, 115, 116, 84, 114, 101, 101, 78, 111, 100, 101, 92, 76, 105, 115, 116, 84, 114, 101, 101, 78, 111, 100, 101, 79, 98, 106, 101, 99, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 92, 73, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 92, 85, 116, 102, 56, 73, 116, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 92, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 92, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 66, 117, 105, 108, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 92, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 74, 83, 79, 78, 92, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 92, 85, 116, 102, 56, 83, 116, 114, 105, 110, 103, 83, 112, 108, 105, 116, 116, 101, 114, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115 }, TypesData = new byte[9572] { 1, 0, 0, 0, 11, 85, 110, 105, 71, 76, 84, 70, 124, 80, 105, 110, 1, 0, 0, 0, 11, 85, 110, 105, 71, 76, 84, 70, 124, 80, 105, 110, 0, 0, 0, 0, 23, 85, 110, 105, 71, 76, 84, 70, 124, 65, 114, 114, 97, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 30, 85, 110, 105, 71, 76, 84, 70, 124, 65, 114, 114, 97, 121, 83, 101, 103, 109, 101, 110, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 33, 85, 110, 105, 71, 76, 84, 70, 124, 67, 111, 108, 111, 114, 67, 111, 110, 118, 101, 114, 115, 105, 111, 110, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 23, 85, 110, 105, 71, 76, 84, 70, 124, 73, 110, 100, 101, 120, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 26, 85, 110, 105, 71, 76, 84, 70, 124, 78, 117, 109, 101, 114, 105, 99, 115, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 24, 85, 110, 105, 71, 76, 84, 70, 124, 83, 116, 114, 105, 110, 103, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 27, 85, 110, 105, 71, 76, 84, 70, 124, 84, 114, 97, 110, 115, 102, 111, 114, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 14, 85, 110, 105, 71, 76, 84, 70, 124, 80, 111, 115, 82, 111, 116, 0, 0, 0, 0, 18, 85, 110, 105, 71, 76, 84, 70, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 0, 0, 0, 0, 23, 85, 110, 105, 71, 76, 84, 70, 124, 85, 110, 105, 116, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 22, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 35, 85, 110, 105, 71, 76, 84, 70, 46, 103, 108, 84, 70, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 124, 67, 111, 109, 112, 111, 110, 101, 110, 116, 86, 101, 99, 0, 0, 0, 0, 33, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 66, 105, 110, 100, 112, 111, 115, 101, 71, 105, 122, 109, 111, 0, 0, 0, 0, 36, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 82, 101, 112, 111, 114, 116, 0, 0, 0, 0, 51, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 82, 101, 112, 111, 114, 116, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 83, 116, 97, 116, 0, 0, 0, 0, 34, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 66, 111, 110, 101, 77, 101, 115, 104, 69, 114, 97, 115, 101, 114, 0, 0, 0, 0, 51, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 66, 111, 110, 101, 77, 101, 115, 104, 69, 114, 97, 115, 101, 114, 124, 69, 120, 99, 108, 117, 100, 101, 66, 111, 110, 101, 73, 110, 100, 101, 120, 0, 0, 0, 0, 44, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 66, 111, 110, 101, 77, 101, 115, 104, 69, 114, 97, 115, 101, 114, 124, 69, 114, 97, 115, 101, 66, 111, 110, 101, 0, 0, 0, 0, 34, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 66, 111, 110, 101, 78, 111, 114, 109, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 35, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 71, 108, 116, 102, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 34, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 77, 101, 115, 104, 65, 116, 116, 97, 99, 104, 73, 110, 102, 111, 0, 0, 0, 0, 31, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 77, 101, 115, 104, 69, 120, 99, 108, 117, 100, 101, 0, 0, 0, 0, 34, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 77, 101, 115, 104, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 45, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 77, 101, 115, 104, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 0, 0, 0, 0, 31, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 77, 101, 115, 104, 70, 114, 101, 101, 122, 101, 114, 0, 0, 0, 0, 40, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 77, 101, 115, 104, 73, 110, 116, 101, 103, 114, 97, 116, 105, 111, 110, 71, 114, 111, 117, 112, 0, 0, 0, 0, 29, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 68, 114, 97, 119, 67, 111, 117, 110, 116, 0, 0, 0, 0, 28, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 77, 101, 115, 104, 73, 110, 102, 111, 0, 0, 0, 0, 41, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 77, 101, 115, 104, 73, 110, 116, 101, 103, 114, 97, 116, 105, 111, 110, 82, 101, 115, 117, 108, 116, 0, 0, 0, 0, 34, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 77, 101, 115, 104, 73, 110, 116, 101, 103, 114, 97, 116, 111, 114, 0, 0, 0, 0, 42, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 77, 101, 115, 104, 73, 110, 116, 101, 103, 114, 97, 116, 111, 114, 124, 83, 117, 98, 77, 101, 115, 104, 0, 0, 0, 0, 45, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 77, 101, 115, 104, 73, 110, 116, 101, 103, 114, 97, 116, 111, 114, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 0, 0, 0, 0, 37, 85, 110, 105, 71, 76, 84, 70, 46, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 84, 114, 105, 97, 110, 103, 108, 101, 83, 101, 112, 97, 114, 97, 116, 111, 114, 0, 0, 0, 0, 73, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 104, 100, 114, 95, 101, 109, 105, 115, 115, 105, 118, 101, 77, 117, 108, 116, 105, 112, 108, 105, 101, 114, 124, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 94, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 104, 100, 114, 95, 101, 109, 105, 115, 115, 105, 118, 101, 77, 117, 108, 116, 105, 112, 108, 105, 101, 114, 124, 86, 82, 77, 67, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 104, 100, 114, 95, 101, 109, 105, 115, 115, 105, 118, 101, 77, 117, 108, 116, 105, 112, 108, 105, 101, 114, 0, 0, 0, 0, 71, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 104, 100, 114, 95, 101, 109, 105, 115, 115, 105, 118, 101, 77, 117, 108, 116, 105, 112, 108, 105, 101, 114, 124, 71, 108, 116, 102, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 44, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 95, 75, 72, 82, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 101, 109, 105, 115, 115, 105, 118, 101, 95, 115, 116, 114, 101, 110, 103, 116, 104, 0, 0, 0, 0, 32, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 95, 75, 72, 82, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 117, 110, 108, 105, 116, 0, 0, 0, 0, 31, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 95, 75, 72, 82, 95, 116, 101, 120, 116, 117, 114, 101, 95, 98, 97, 115, 105, 115, 117, 0, 0, 0, 0, 34, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 95, 75, 72, 82, 95, 116, 101, 120, 116, 117, 114, 101, 95, 116, 114, 97, 110, 115, 102, 111, 114, 109, 0, 0, 0, 0, 21, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 69, 120, 116, 101, 110, 115, 105, 111, 110, 0, 0, 0, 0, 27, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 69, 120, 116, 101, 110, 115, 105, 111, 110, 69, 120, 112, 111, 114, 116, 0, 0, 0, 0, 27, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 69, 120, 116, 101, 110, 115, 105, 111, 110, 73, 109, 112, 111, 114, 116, 0, 0, 0, 0, 40, 85, 110, 105, 71, 76, 84, 70, 124, 71, 108, 116, 102, 69, 120, 116, 101, 110, 115, 105, 111, 110, 70, 111, 114, 109, 97, 116, 116, 101, 114, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 36, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 116, 102, 95, 109, 101, 115, 104, 95, 101, 120, 116, 114, 97, 115, 95, 116, 97, 114, 103, 101, 116, 78, 97, 109, 101, 115, 0, 0, 0, 0, 24, 85, 110, 105, 71, 76, 84, 70, 124, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 22, 85, 110, 105, 71, 76, 84, 70, 124, 71, 108, 116, 102, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 16, 85, 110, 105, 71, 76, 84, 70, 124, 73, 83, 116, 111, 114, 97, 103, 101, 0, 0, 0, 0, 31, 85, 110, 105, 71, 76, 84, 70, 124, 66, 97, 115, 101, 74, 115, 111, 110, 83, 99, 104, 101, 109, 97, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 27, 85, 110, 105, 71, 76, 84, 70, 124, 74, 115, 111, 110, 83, 99, 104, 101, 109, 97, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 31, 85, 110, 105, 71, 76, 84, 70, 124, 73, 116, 101, 109, 74, 115, 111, 110, 83, 99, 104, 101, 109, 97, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 33, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 67, 111, 109, 112, 111, 110, 101, 110, 116, 84, 121, 112, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 17, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 116, 102, 83, 99, 101, 110, 101, 0, 0, 0, 0, 12, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 0, 0, 0, 0, 27, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 65, 110, 105, 109, 97, 116, 105, 111, 110, 84, 97, 114, 103, 101, 116, 0, 0, 0, 0, 28, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 104, 97, 110, 110, 101, 108, 0, 0, 0, 0, 28, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 65, 110, 105, 109, 97, 116, 105, 111, 110, 83, 97, 109, 112, 108, 101, 114, 0, 0, 0, 0, 21, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 65, 110, 105, 109, 97, 116, 105, 111, 110, 0, 0, 0, 0, 18, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 65, 115, 115, 101, 116, 115, 0, 0, 0, 0, 18, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 66, 117, 102, 102, 101, 114, 0, 0, 0, 0, 22, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 66, 117, 102, 102, 101, 114, 86, 105, 101, 119, 0, 0, 0, 0, 25, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 83, 112, 97, 114, 115, 101, 73, 110, 100, 105, 99, 101, 115, 0, 0, 0, 0, 24, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 83, 112, 97, 114, 115, 101, 86, 97, 108, 117, 101, 115, 0, 0, 0, 0, 18, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 83, 112, 97, 114, 115, 101, 0, 0, 0, 0, 20, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 65, 99, 99, 101, 115, 115, 111, 114, 0, 0, 0, 0, 24, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 79, 114, 116, 104, 111, 103, 114, 97, 112, 104, 105, 99, 0, 0, 0, 0, 23, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 80, 101, 114, 115, 112, 101, 99, 116, 105, 118, 101, 0, 0, 0, 0, 18, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 67, 97, 109, 101, 114, 97, 0, 0, 0, 0, 23, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 84, 101, 120, 116, 117, 114, 101, 73, 110, 102, 111, 0, 0, 0, 0, 40, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 77, 97, 116, 101, 114, 105, 97, 108, 66, 97, 115, 101, 67, 111, 108, 111, 114, 84, 101, 120, 116, 117, 114, 101, 73, 110, 102, 111, 0, 0, 0, 0, 48, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 77, 97, 116, 101, 114, 105, 97, 108, 77, 101, 116, 97, 108, 108, 105, 99, 82, 111, 117, 103, 104, 110, 101, 115, 115, 84, 101, 120, 116, 117, 114, 101, 73, 110, 102, 111, 0, 0, 0, 0, 37, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 77, 97, 116, 101, 114, 105, 97, 108, 78, 111, 114, 109, 97, 108, 84, 101, 120, 116, 117, 114, 101, 73, 110, 102, 111, 0, 0, 0, 0, 40, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 77, 97, 116, 101, 114, 105, 97, 108, 79, 99, 99, 108, 117, 115, 105, 111, 110, 84, 101, 120, 116, 117, 114, 101, 73, 110, 102, 111, 0, 0, 0, 0, 39, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 77, 97, 116, 101, 114, 105, 97, 108, 69, 109, 105, 115, 115, 105, 118, 101, 84, 101, 120, 116, 117, 114, 101, 73, 110, 102, 111, 0, 0, 0, 0, 32, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 80, 98, 114, 77, 101, 116, 97, 108, 108, 105, 99, 82, 111, 117, 103, 104, 110, 101, 115, 115, 0, 0, 0, 0, 20, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 77, 97, 116, 101, 114, 105, 97, 108, 0, 0, 0, 0, 22, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 65, 116, 116, 114, 105, 98, 117, 116, 101, 115, 0, 0, 0, 0, 23, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 116, 102, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 0, 0, 0, 0, 22, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 80, 114, 105, 109, 105, 116, 105, 118, 101, 115, 0, 0, 0, 0, 16, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 77, 101, 115, 104, 0, 0, 0, 0, 16, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 78, 111, 100, 101, 0, 0, 0, 0, 16, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 83, 107, 105, 110, 0, 0, 0, 0, 26, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 84, 101, 120, 116, 117, 114, 101, 83, 97, 109, 112, 108, 101, 114, 0, 0, 0, 0, 17, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 73, 109, 97, 103, 101, 0, 0, 0, 0, 19, 85, 110, 105, 71, 76, 84, 70, 124, 103, 108, 84, 70, 84, 101, 120, 116, 117, 114, 101, 0, 0, 0, 0, 17, 85, 110, 105, 71, 76, 84, 70, 124, 71, 108, 98, 72, 101, 97, 100, 101, 114, 0, 0, 0, 0, 16, 85, 110, 105, 71, 76, 84, 70, 124, 71, 108, 98, 67, 104, 117, 110, 107, 0, 0, 0, 0, 11, 85, 110, 105, 71, 76, 84, 70, 124, 71, 108, 98, 0, 0, 0, 0, 26, 85, 110, 105, 71, 76, 84, 70, 124, 73, 65, 110, 105, 109, 97, 116, 105, 111, 110, 69, 120, 112, 111, 114, 116, 101, 114, 0, 0, 0, 0, 28, 85, 110, 105, 71, 76, 84, 70, 124, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 108, 105, 112, 70, 97, 99, 116, 111, 114, 121, 0, 0, 0, 0, 29, 85, 110, 105, 71, 76, 84, 70, 124, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 109, 112, 111, 114, 116, 101, 114, 85, 116, 105, 108, 0, 0, 0, 0, 23, 85, 110, 105, 71, 76, 84, 70, 124, 65, 114, 114, 97, 121, 66, 121, 116, 101, 66, 117, 102, 102, 101, 114, 1, 0, 0, 0, 16, 85, 110, 105, 71, 76, 84, 70, 124, 65, 114, 114, 97, 121, 80, 105, 110, 1, 0, 0, 0, 16, 85, 110, 105, 71, 76, 84, 70, 124, 65, 114, 114, 97, 121, 80, 105, 110, 0, 0, 0, 0, 26, 85, 110, 105, 71, 76, 84, 70, 124, 65, 114, 114, 97, 121, 80, 105, 110, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 21, 85, 110, 105, 71, 76, 84, 70, 124, 73, 65, 120, 105, 115, 73, 110, 118, 101,
valheim_Data/Managed/UniGLTF.Utils.dll
Decompiled 20 hours agousing System; using System.CodeDom.Compiler; using System.Collections.Concurrent; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Threading.Tasks; using Unity.Mathematics; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [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[959] { 0, 0, 0, 1, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 92, 73, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 92, 73, 109, 109, 101, 100, 105, 97, 116, 101, 67, 97, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 92, 78, 101, 120, 116, 70, 114, 97, 109, 101, 84, 97, 115, 107, 83, 99, 104, 101, 100, 117, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 92, 82, 117, 110, 116, 105, 109, 101, 79, 110, 108, 121, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 92, 82, 117, 110, 116, 105, 109, 101, 79, 110, 108, 121, 78, 111, 84, 104, 114, 101, 97, 100, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 77, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 92, 84, 105, 110, 121, 77, 97, 110, 97, 103, 101, 100, 84, 97, 115, 107, 83, 99, 104, 101, 100, 117, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 67, 97, 99, 104, 101, 100, 69, 110, 117, 109, 92, 67, 97, 99, 104, 101, 100, 69, 110, 117, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 67, 97, 99, 104, 101, 100, 69, 110, 117, 109, 92, 67, 97, 99, 104, 101, 100, 69, 110, 117, 109, 84, 121, 112, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 69, 117, 99, 108, 105, 100, 101, 97, 110, 84, 114, 97, 110, 115, 102, 111, 114, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 70, 111, 114, 99, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 85, 110, 105, 113, 117, 101, 78, 97, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 51, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 77, 97, 116, 104, 72, 101, 108, 112, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 84, 114, 97, 110, 115, 102, 111, 114, 109, 83, 116, 97, 116, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 116, 105, 108, 115, 92, 85, 110, 105, 71, 76, 84, 70, 76, 111, 103, 103, 101, 114, 46, 99, 115 }, TypesData = new byte[544] { 0, 0, 0, 0, 20, 85, 110, 105, 71, 76, 84, 70, 124, 73, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 0, 0, 0, 0, 23, 85, 110, 105, 71, 76, 84, 70, 124, 73, 109, 109, 101, 100, 105, 97, 116, 101, 67, 97, 108, 108, 101, 114, 0, 0, 0, 0, 30, 85, 110, 105, 71, 76, 84, 70, 124, 78, 101, 120, 116, 70, 114, 97, 109, 101, 84, 97, 115, 107, 83, 99, 104, 101, 100, 117, 108, 101, 114, 0, 0, 0, 0, 53, 85, 110, 105, 71, 76, 84, 70, 46, 78, 101, 120, 116, 70, 114, 97, 109, 101, 84, 97, 115, 107, 83, 99, 104, 101, 100, 117, 108, 101, 114, 124, 85, 110, 105, 116, 121, 76, 111, 111, 112, 84, 97, 115, 107, 83, 99, 104, 101, 100, 117, 108, 101, 114, 0, 0, 0, 0, 30, 85, 110, 105, 71, 76, 84, 70, 124, 82, 117, 110, 116, 105, 109, 101, 79, 110, 108, 121, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 0, 0, 0, 0, 38, 85, 110, 105, 71, 76, 84, 70, 124, 82, 117, 110, 116, 105, 109, 101, 79, 110, 108, 121, 78, 111, 84, 104, 114, 101, 97, 100, 65, 119, 97, 105, 116, 67, 97, 108, 108, 101, 114, 0, 0, 0, 0, 32, 85, 110, 105, 71, 76, 84, 70, 124, 84, 105, 110, 121, 77, 97, 110, 97, 103, 101, 100, 84, 97, 115, 107, 83, 99, 104, 101, 100, 117, 108, 101, 114, 0, 0, 0, 0, 24, 85, 110, 105, 71, 76, 84, 70, 46, 85, 116, 105, 108, 115, 124, 67, 97, 99, 104, 101, 100, 69, 110, 117, 109, 0, 0, 0, 0, 28, 85, 110, 105, 71, 76, 84, 70, 46, 85, 116, 105, 108, 115, 124, 67, 97, 99, 104, 101, 100, 69, 110, 117, 109, 84, 121, 112, 101, 0, 0, 0, 0, 32, 85, 110, 105, 71, 76, 84, 70, 46, 85, 116, 105, 108, 115, 124, 69, 117, 99, 108, 105, 100, 101, 97, 110, 84, 114, 97, 110, 115, 102, 111, 114, 109, 0, 0, 0, 0, 38, 85, 110, 105, 71, 76, 84, 70, 46, 85, 116, 105, 108, 115, 124, 70, 111, 114, 99, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 85, 110, 105, 113, 117, 101, 78, 97, 109, 101, 0, 0, 0, 0, 32, 85, 110, 105, 71, 76, 84, 70, 46, 82, 117, 110, 116, 105, 109, 101, 46, 85, 116, 105, 108, 115, 124, 77, 97, 116, 104, 72, 101, 108, 112, 101, 114, 0, 0, 0, 0, 28, 85, 110, 105, 71, 76, 84, 70, 46, 85, 116, 105, 108, 115, 124, 84, 114, 97, 110, 115, 102, 111, 114, 109, 83, 116, 97, 116, 101, 0, 0, 0, 0, 21, 85, 110, 105, 71, 76, 84, 70, 124, 85, 110, 105, 71, 76, 84, 70, 76, 111, 103, 103, 101, 114, 0, 0, 0, 0, 40, 85, 110, 105, 71, 76, 84, 70, 46, 85, 110, 105, 71, 76, 84, 70, 76, 111, 103, 103, 101, 114, 124, 68, 101, 102, 97, 117, 108, 116, 85, 110, 105, 116, 121, 76, 111, 103, 103, 101, 114 }, TotalFiles = 13, TotalTypes = 15, IsEditorOnly = false }; } } namespace UniGLTF { public interface IAwaitCaller { Task NextFrame(); Task Run(Action action); Task<T> Run<T>(Func<T> action); Task NextFrameIfTimedOut(); } public sealed class ImmediateCaller : IAwaitCaller { public Task NextFrame() { return Task.FromResult<object>(null); } public Task Run(Action action) { action(); return Task.FromResult<object>(null); } public Task<T> Run<T>(Func<T> action) { return Task.FromResult(action()); } public Task NextFrameIfTimedOut() { return NextFrame(); } } internal sealed class NextFrameTaskScheduler { private sealed class UnityLoopTaskScheduler : MonoBehaviour { private static UnityLoopTaskScheduler _instance; public static UnityLoopTaskScheduler Instance { get { //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_001d: Expected O, but got Unknown if ((Object)(object)_instance == (Object)null) { GameObject val = new GameObject("UniGLTF UnityThreadScheduler"); Object.DontDestroyOnLoad((Object)val); _instance = val.AddComponent<UnityLoopTaskScheduler>(); } return _instance; } } public TinyManagedTaskScheduler Scheduler { get; } = new TinyManagedTaskScheduler(); private void Update() { Scheduler.ManagedUpdate(); } } public bool IsSupported => Application.isPlaying; public NextFrameTaskScheduler() { if (!IsSupported) { throw new NotSupportedException("NextFrameTaskScheduler is supported at runtime only."); } } public bool Enqueue(Action action) { int currentFrame = Time.frameCount; UnityLoopTaskScheduler.Instance.Scheduler.Enqueue(action, () => Time.frameCount != currentFrame); return true; } } public sealed class RuntimeOnlyAwaitCaller : IAwaitCaller { private readonly NextFrameTaskScheduler _scheduler; private readonly float _timeOutInSeconds; private float _lastTimeoutBaseTime; private bool LastTimeoutBaseTimeNeedsReset => _lastTimeoutBaseTime == 0f; public RuntimeOnlyAwaitCaller(float timeOutInSeconds = 0.001f) { _scheduler = new NextFrameTaskScheduler(); _timeOutInSeconds = timeOutInSeconds; ResetLastTimeoutBaseTime(); } public Task NextFrame() { ResetLastTimeoutBaseTime(); TaskCompletionSource<object> tcs = new TaskCompletionSource<object>(); _scheduler.Enqueue(delegate { tcs.SetResult(null); }); return tcs.Task; } public Task Run(Action action) { return Task.Run(action); } public Task<T> Run<T>(Func<T> action) { return Task.Run(action); } public Task NextFrameIfTimedOut() { if (!CheckTimeout()) { return Task.CompletedTask; } return NextFrame(); } private void ResetLastTimeoutBaseTime() { _lastTimeoutBaseTime = 0f; } private bool CheckTimeout() { float realtimeSinceStartup = Time.realtimeSinceStartup; if (LastTimeoutBaseTimeNeedsReset) { _lastTimeoutBaseTime = realtimeSinceStartup; } return realtimeSinceStartup - _lastTimeoutBaseTime >= _timeOutInSeconds; } } public sealed class RuntimeOnlyNoThreadAwaitCaller : IAwaitCaller { private readonly NextFrameTaskScheduler _scheduler; private readonly float _timeoutInSeconds; private float _lastTimeoutBaseTime; private bool LastTimeoutBaseTimeNeedsReset => _lastTimeoutBaseTime == 0f; public RuntimeOnlyNoThreadAwaitCaller(float timeoutInSeconds = 0.001f) { _scheduler = new NextFrameTaskScheduler(); _timeoutInSeconds = timeoutInSeconds; ResetLastTimeoutBaseTime(); } public Task NextFrame() { ResetLastTimeoutBaseTime(); TaskCompletionSource<object> tcs = new TaskCompletionSource<object>(); _scheduler.Enqueue(delegate { tcs.SetResult(null); }); return tcs.Task; } public Task Run(Action action) { try { action(); return Task.FromResult<object>(null); } catch (Exception exception) { return Task.FromException(exception); } } public Task<T> Run<T>(Func<T> action) { try { return Task.FromResult(action()); } catch (Exception exception) { return Task.FromException<T>(exception); } } public Task NextFrameIfTimedOut() { if (!CheckTimeout()) { return Task.CompletedTask; } return NextFrame(); } private void ResetLastTimeoutBaseTime() { _lastTimeoutBaseTime = 0f; } private bool CheckTimeout() { float realtimeSinceStartup = Time.realtimeSinceStartup; if (LastTimeoutBaseTimeNeedsReset) { _lastTimeoutBaseTime = realtimeSinceStartup; } return realtimeSinceStartup - _lastTimeoutBaseTime >= _timeoutInSeconds; } } internal sealed class TinyManagedTaskScheduler { private readonly ConcurrentQueue<(Action, Func<bool>)> _continuationQueue = new ConcurrentQueue<(Action, Func<bool>)>(); private readonly ConcurrentQueue<(Action, Func<bool>)> _temporaryQueue = new ConcurrentQueue<(Action, Func<bool>)>(); public void ManagedUpdate() { (Action, Func<bool>) result; while (_continuationQueue.TryDequeue(out result)) { (Action, Func<bool>) tuple = result; var (action, _) = tuple; if (tuple.Item2()) { action(); } else { _temporaryQueue.Enqueue(result); } } (Action, Func<bool>) result2; while (_temporaryQueue.TryDequeue(out result2)) { _continuationQueue.Enqueue(result2); } } public void Enqueue(Action continuation, Func<bool> canExecute) { _continuationQueue.Enqueue((continuation, canExecute)); } } public static class UniGLTFLogger { private class DefaultUnityLogger : ILogHandler { public void LogException(Exception exception, Object context) { Debug.LogException(exception, context); } public void LogFormat(LogType logType, Object context, string format, params object[] args) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected I4, but got Unknown switch ((int)logType) { case 0: Debug.LogError((object)string.Format(format, args), context); break; case 2: Debug.LogWarning((object)string.Format(format, args), context); break; case 3: Debug.Log((object)string.Format(format, args), context); break; case 4: Debug.LogError((object)string.Format(format, args), context); break; default: throw new NotImplementedException(); case 1: break; } } } private static ILogHandler s_logger = (ILogHandler)(object)new DefaultUnityLogger(); public static void SetLogger(ILogHandler logger) { if (logger != null) { s_logger = logger; } else { s_logger = (ILogHandler)(object)new DefaultUnityLogger(); } } [Conditional("VRM_DEVELOP")] public static void Log(string msg, Object context = null) { s_logger.LogFormat((LogType)3, context, msg, Array.Empty<object>()); } public static void Warning(string msg, Object context = null) { s_logger.LogFormat((LogType)2, context, msg, Array.Empty<object>()); } public static void Error(string msg, Object context = null) { s_logger.LogFormat((LogType)0, context, msg, Array.Empty<object>()); } public static void Exception(Exception exception, Object context = null) { s_logger.LogException(exception, context); } } } namespace UniGLTF.Runtime.Utils { public static class MathHelper { [MethodImpl(MethodImplOptions.AggressiveInlining)] public static float3 MultiplyPoint3x4(float4x4 matrix, float3 point) { //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_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_0011: 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) float4 val = math.mul(matrix, new float4(point, 1f)); return ((float4)(ref val)).xyz; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static float3 MultiplyPoint(float4x4 matrix, float3 point) { //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_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_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) float4 val = math.mul(matrix, new float4(point, 1f)); return ((float4)(ref val)).xyz / val.w; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static float3 MultiplyVector(float4x4 matrix, float3 vector) { //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_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_0011: 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) float4 val = math.mul(matrix, new float4(vector, 0f)); return ((float4)(ref val)).xyz; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static quaternion FromToRotation(in float3 fromVector, in float3 toVector) { //IL_0001: 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_0013: 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) //IL_0038: 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_0040: 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_004d: 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_0054: 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_007d: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_009f: 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_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: 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_00de: 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_00bd: 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_00c7: 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_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: 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_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) if (math.lengthsq(fromVector) < 1E-12f || math.lengthsq(toVector) < 1E-12f) { return quaternion.identity; } float3 val = math.normalizesafe(fromVector, default(float3)); float3 val2 = math.normalizesafe(toVector, default(float3)); float num = math.clamp(math.dot(val, val2), -1f, 1f); if (!(num > 0.999999f)) { if (num < -0.999999f) { float3 val3 = math.cross(val, new float3(1f, 0f, 0f)); if (math.lengthsq(val3) < 1E-12f) { val3 = math.cross(val, new float3(0f, 1f, 0f)); } return quaternion.AxisAngle(math.normalizesafe(val3, default(float3)), MathF.PI); } float num2 = math.acos(num); return quaternion.AxisAngle(math.normalizesafe(math.cross(val, val2), default(float3)), num2); } return quaternion.identity; } public static bool Approximately(float a, float b) { return math.abs(b - a) < math.max(1E-06f * math.max(math.abs(a), math.abs(b)), 9.536743E-07f); } public static bool Approximately(float3 a, float3 b) { //IL_0000: 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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0026: 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) if (Approximately(a.x, b.x) && Approximately(a.y, b.y)) { return Approximately(a.z, b.z); } return false; } public static bool Approximately(quaternion a, quaternion b) { //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_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_001d: 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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: 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_0057: 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) //IL_0062: 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 (Approximately(a.value.x, b.value.x) && Approximately(a.value.y, b.value.y) && Approximately(a.value.z, b.value.z)) { return Approximately(a.value.w, b.value.w); } return false; } } } namespace UniGLTF.Utils { public static class CachedEnum { public static T Parse<T>(string name, bool ignoreCase = false) where T : struct, Enum { if (ignoreCase) { return CachedEnumType<T>.IgnoreCaseMap[name]; } return CachedEnumType<T>.Map[name]; } public static T ParseOrDefault<T>(string name, bool ignoreCase = false, T defaultValue = default(T)) where T : struct, Enum { try { return Parse<T>(name, ignoreCase); } catch (KeyNotFoundException) { return defaultValue; } } public static T[] GetValues<T>() where T : struct, Enum { return CachedEnumType<T>.Values; } } internal static class CachedEnumType<T> where T : struct, Enum { public static IReadOnlyDictionary<string, T> Map { get; } = CreateStringEnumMap(ignoreCase: false); public static IReadOnlyDictionary<string, T> IgnoreCaseMap { get; } = CreateStringEnumMap(ignoreCase: true); public static T[] Values { get; } = (T[])Enum.GetValues(typeof(T)); private static Dictionary<string, T> CreateStringEnumMap(bool ignoreCase) { Dictionary<string, T> dictionary = (ignoreCase ? new Dictionary<string, T>(StringComparer.OrdinalIgnoreCase) : new Dictionary<string, T>()); foreach (T value in Enum.GetValues(typeof(T))) { dictionary.Add(value.ToString(), value); } return dictionary; } } public readonly struct EuclideanTransform { public readonly Quaternion Rotation; public readonly Vector3 Translation; public EuclideanTransform(Quaternion rotation, Vector3 translation) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_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) Rotation = rotation; Translation = translation; } public EuclideanTransform(Quaternion rotation) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: 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) Rotation = rotation; Translation = Vector3.zero; } public EuclideanTransform(Vector3 translation) { //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) //IL_000d: Unknown result type (might be due to invalid IL or missing references) Rotation = Quaternion.identity; Translation = translation; } public EuclideanTransform(Matrix4x4 matrix) { //IL_0003: 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_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) Rotation = ((Matrix4x4)(ref matrix)).rotation; Translation = Vector4.op_Implicit(((Matrix4x4)(ref matrix)).GetColumn(3)); } } public class ForceTransformUniqueName { public delegate string GetNameFunc<T>(T t); public delegate void SetNameFunc<T>(T t, string newName); public delegate string GetLeafNameFunc<T>(T t); private HashSet<string> m_uniqueNameSet = new HashSet<string>(); private int m_counter = 1; public static void Process(Transform root) { Process(((Component)root).GetComponentsInChildren<Transform>(), (Transform t) => ((Object)t).name, delegate(Transform t, string name) { ((Object)t).name = name; }, (Transform t) => (!((Object)(object)t.parent != (Object)null) || t.childCount != 0) ? null : (((Object)t.parent).name + "-" + ((Object)t).name)); } public static void Process<T>(IReadOnlyList<T> transforms, GetNameFunc<T> getName, SetNameFunc<T> setName, GetLeafNameFunc<T> getLeafName) { ForceTransformUniqueName forceTransformUniqueName = new ForceTransformUniqueName(); foreach (T transform in transforms) { forceTransformUniqueName.RenameIfDupName(transform, getName, setName, getLeafName); } } public void RenameIfDupName<T>(T t, GetNameFunc<T> getName, SetNameFunc<T> setName, GetLeafNameFunc<T> getLeafName) { if (!m_uniqueNameSet.Contains(getName(t))) { m_uniqueNameSet.Add(getName(t)); return; } string text = getLeafName(t); if (!string.IsNullOrEmpty(text) && !m_uniqueNameSet.Contains(text)) { DoRename(t, getName, setName, text); return; } for (int i = 0; i < 100; i++) { string text2 = $"{getName(t)}{m_counter++}"; if (!m_uniqueNameSet.Contains(text2)) { DoRename(t, getName, setName, text2); return; } } throw new NotImplementedException(); } private void DoRename<T>(T t, GetNameFunc<T> getName, SetNameFunc<T> setName, string newName) { UniGLTFLogger.Warning("force rename !!: " + getName(t) + " => " + newName); setName(t, newName); m_uniqueNameSet.Add(newName); } } public readonly struct TransformState { public Vector3 Position { get; } public Vector3 LocalPosition { get; } public Quaternion Rotation { get; } public Quaternion LocalRotation { get; } public Vector3 LocalScale { get; } public TransformState(Vector3 position, Vector3 localPosition, Quaternion rotation, Quaternion localRotation, Vector3 localScale) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_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_000f: 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) //IL_0018: 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_0020: Unknown result type (might be due to invalid IL or missing references) Position = position; LocalPosition = localPosition; Rotation = rotation; LocalRotation = localRotation; LocalScale = localScale; } public TransformState(Transform tf) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_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_0073: 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_000a: 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_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) //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_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)tf == (Object)null) { Position = Vector3.zero; LocalPosition = Vector3.zero; Rotation = Quaternion.identity; LocalRotation = Quaternion.identity; LocalScale = Vector3.one; } else { Position = tf.position; LocalPosition = tf.localPosition; Rotation = tf.rotation; LocalRotation = tf.localRotation; LocalScale = tf.localScale; } } } }
valheim_Data/Managed/VRM10.MToon10.dll
Decompiled 20 hours agousing System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using UniGLTF; using UnityEngine; using VRM10.MToon10.MToon0X; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [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[1641] { 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 13, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 84, 111, 111, 110, 48, 88, 92, 77, 84, 111, 111, 110, 48, 88, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 84, 111, 111, 110, 48, 88, 92, 77, 84, 111, 111, 110, 48, 88, 69, 110, 117, 109, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 84, 111, 111, 110, 48, 88, 92, 77, 84, 111, 111, 110, 48, 88, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 84, 111, 111, 110, 48, 88, 92, 77, 84, 111, 111, 110, 48, 88, 85, 116, 105, 108, 115, 71, 101, 116, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 84, 111, 111, 110, 48, 88, 92, 77, 84, 111, 111, 110, 48, 88, 85, 116, 105, 108, 115, 86, 101, 114, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 84, 111, 111, 110, 49, 48, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 84, 111, 111, 110, 49, 48, 77, 105, 103, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 77, 105, 103, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 84, 111, 111, 110, 86, 97, 108, 105, 100, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 83, 104, 97, 100, 101, 114, 76, 97, 98, 92, 77, 84, 111, 111, 110, 68, 101, 102, 105, 110, 101, 100, 86, 97, 108, 117, 101, 115, 92, 77, 84, 111, 111, 110, 49, 48, 69, 109, 105, 115, 115, 105, 118, 101, 77, 97, 112, 75, 101, 121, 119, 111, 114, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 99, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 83, 104, 97, 100, 101, 114, 76, 97, 98, 92, 77, 84, 111, 111, 110, 68, 101, 102, 105, 110, 101, 100, 86, 97, 108, 117, 101, 115, 92, 77, 84, 111, 111, 110, 49, 48, 78, 111, 114, 109, 97, 108, 77, 97, 112, 75, 101, 121, 119, 111, 114, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 83, 104, 97, 100, 101, 114, 76, 97, 98, 92, 77, 84, 111, 111, 110, 68, 101, 102, 105, 110, 101, 100, 86, 97, 108, 117, 101, 115, 92, 77, 84, 111, 111, 110, 49, 48, 79, 117, 116, 108, 105, 110, 101, 77, 111, 100, 101, 75, 101, 121, 119, 111, 114, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 83, 104, 97, 100, 101, 114, 76, 97, 98, 92, 77, 84, 111, 111, 110, 68, 101, 102, 105, 110, 101, 100, 86, 97, 108, 117, 101, 115, 92, 77, 84, 111, 111, 110, 49, 48, 80, 97, 114, 97, 109, 101, 116, 101, 114, 77, 97, 112, 75, 101, 121, 119, 111, 114, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 83, 104, 97, 100, 101, 114, 76, 97, 98, 92, 77, 84, 111, 111, 110, 68, 101, 102, 105, 110, 101, 100, 86, 97, 108, 117, 101, 115, 92, 77, 84, 111, 111, 110, 49, 48, 82, 105, 109, 77, 97, 112, 75, 101, 121, 119, 111, 114, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 83, 104, 97, 100, 101, 114, 76, 97, 98, 92, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 92, 77, 84, 111, 111, 110, 49, 48, 77, 101, 116, 97, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 83, 104, 97, 100, 101, 114, 76, 97, 98, 92, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 92, 77, 84, 111, 111, 110, 49, 48, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 101, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 83, 104, 97, 100, 101, 114, 76, 97, 98, 92, 83, 104, 97, 100, 101, 114, 76, 97, 98, 68, 101, 102, 105, 110, 101, 100, 86, 97, 108, 117, 101, 115, 92, 85, 110, 105, 116, 121, 65, 108, 112, 104, 97, 77, 111, 100, 101, 75, 101, 121, 119, 111, 114, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 77, 84, 111, 111, 110, 49, 48, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 83, 104, 97, 100, 101, 114, 76, 97, 98, 92, 83, 104, 97, 100, 101, 114, 76, 97, 98, 68, 101, 102, 105, 110, 101, 100, 86, 97, 108, 117, 101, 115, 92, 85, 110, 105, 116, 121, 82, 101, 110, 100, 101, 114, 84, 97, 103, 46, 99, 115 }, TypesData = new byte[1380] { 0, 0, 0, 0, 32, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 39, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 43, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 77, 101, 116, 97, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 48, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 82, 101, 110, 100, 101, 114, 105, 110, 103, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 44, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 67, 111, 108, 111, 114, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 47, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 76, 105, 103, 104, 116, 105, 110, 103, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 56, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 76, 105, 116, 65, 110, 100, 83, 104, 97, 100, 101, 77, 105, 120, 105, 110, 103, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 56, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 76, 105, 103, 104, 116, 105, 110, 103, 73, 110, 102, 108, 117, 101, 110, 99, 101, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 47, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 69, 109, 105, 115, 115, 105, 111, 110, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 45, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 77, 97, 116, 67, 97, 112, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 42, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 82, 105, 109, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 45, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 78, 111, 114, 109, 97, 108, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 46, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 79, 117, 116, 108, 105, 110, 101, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 54, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 84, 101, 120, 116, 117, 114, 101, 85, 118, 67, 111, 111, 114, 100, 115, 68, 101, 102, 105, 110, 105, 116, 105, 111, 110, 0, 0, 0, 0, 51, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 82, 101, 110, 100, 101, 114, 81, 117, 101, 117, 101, 82, 101, 113, 117, 105, 114, 101, 109, 101, 110, 116, 1, 0, 0, 0, 34, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 85, 116, 105, 108, 115, 1, 0, 0, 0, 34, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 85, 116, 105, 108, 115, 1, 0, 0, 0, 34, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 46, 77, 84, 111, 111, 110, 48, 88, 124, 77, 84, 111, 111, 110, 48, 88, 85, 116, 105, 108, 115, 0, 0, 0, 0, 28, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 49, 48, 67, 111, 110, 116, 101, 120, 116, 0, 0, 0, 0, 29, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 49, 48, 77, 105, 103, 114, 97, 116, 111, 114, 0, 0, 0, 0, 35, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 77, 105, 103, 114, 97, 116, 111, 114, 0, 0, 0, 0, 28, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 86, 97, 108, 105, 100, 97, 116, 111, 114, 0, 0, 0, 0, 39, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 49, 48, 69, 109, 105, 115, 115, 105, 118, 101, 77, 97, 112, 75, 101, 121, 119, 111, 114, 100, 0, 0, 0, 0, 37, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 49, 48, 78, 111, 114, 109, 97, 108, 77, 97, 112, 75, 101, 121, 119, 111, 114, 100, 0, 0, 0, 0, 39, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 49, 48, 79, 117, 116, 108, 105, 110, 101, 77, 111, 100, 101, 75, 101, 121, 119, 111, 114, 100, 0, 0, 0, 0, 40, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 49, 48, 80, 97, 114, 97, 109, 101, 116, 101, 114, 77, 97, 112, 75, 101, 121, 119, 111, 114, 100, 0, 0, 0, 0, 34, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 49, 48, 82, 105, 109, 77, 97, 112, 75, 101, 121, 119, 111, 114, 100, 0, 0, 0, 0, 25, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 49, 48, 77, 101, 116, 97, 0, 0, 0, 0, 31, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 77, 84, 111, 111, 110, 49, 48, 80, 114, 111, 112, 101, 114, 116, 105, 101, 115, 0, 0, 0, 0, 35, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 85, 110, 105, 116, 121, 65, 108, 112, 104, 97, 77, 111, 100, 101, 75, 101, 121, 119, 111, 114, 100, 0, 0, 0, 0, 28, 86, 82, 77, 49, 48, 46, 77, 84, 111, 111, 110, 49, 48, 124, 85, 110, 105, 116, 121, 82, 101, 110, 100, 101, 114, 84, 97, 103 }, TotalFiles = 19, TotalTypes = 31, IsEditorOnly = false }; } } namespace VRM10.MToon10 { public static class MaterialExtensions { public static void SetKeyword(this Material mat, string keyword, bool isEnabled) { if (isEnabled) { mat.EnableKeyword(keyword); } else { mat.DisableKeyword(keyword); } } public static int GetInt(this Material mat, MToon10Prop prop) { return mat.GetInt(prop.ToUnityShaderLabName()); } public static void SetInt(this Material mat, MToon10Prop prop, int val) { mat.SetInt(prop.ToUnityShaderLabName(), val); } public static Texture GetTexture(this Material mat, MToon10Prop prop) { return mat.GetTexture(prop.ToUnityShaderLabName()); } public static void SetTexture(this Material mat, MToon10Prop prop, Texture val) { mat.SetTexture(prop.ToUnityShaderLabName(), val); } public static Vector2 GetTextureScale(this Material mat, MToon10Prop prop) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return mat.GetTextureScale(prop.ToUnityShaderLabName()); } public static void SetTextureScale(this Material mat, MToon10Prop prop, Vector2 val) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) mat.SetTextureScale(prop.ToUnityShaderLabName(), val); } public static Vector2 GetTextureOffset(this Material mat, MToon10Prop prop) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return mat.GetTextureOffset(prop.ToUnityShaderLabName()); } public static void SetTextureOffset(this Material mat, MToon10Prop prop, Vector2 val) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) mat.SetTextureOffset(prop.ToUnityShaderLabName(), val); } public static float GetFloat(this Material mat, MToon10Prop prop) { return mat.GetFloat(prop.ToUnityShaderLabName()); } public static void SetFloat(this Material mat, MToon10Prop prop, float val) { mat.SetFloat(prop.ToUnityShaderLabName(), val); } public static Color GetColor(this Material mat, MToon10Prop prop) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return mat.GetColor(prop.ToUnityShaderLabName()); } public static void SetColor(this Material mat, MToon10Prop prop, Color val) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) mat.SetColor(prop.ToUnityShaderLabName(), val); } } public sealed class MToon10Context { private readonly Material _material; public MToon10AlphaMode AlphaMode { get { return (MToon10AlphaMode)_material.GetInt(MToon10Prop.AlphaMode); } set { _material.SetInt(MToon10Prop.AlphaMode, (int)value); } } public MToon10TransparentWithZWriteMode TransparentWithZWriteMode { get { return (MToon10TransparentWithZWriteMode)_material.GetInt(MToon10Prop.TransparentWithZWrite); } set { _material.SetInt(MToon10Prop.TransparentWithZWrite, (int)value); } } public float AlphaCutoff { get { return _material.GetFloat(MToon10Prop.AlphaCutoff); } set { _material.SetFloat(MToon10Prop.AlphaCutoff, value); } } public int RenderQueueOffsetNumber { get { return _material.GetInt(MToon10Prop.RenderQueueOffsetNumber); } set { _material.SetInt(MToon10Prop.RenderQueueOffsetNumber, value); } } public MToon10DoubleSidedMode DoubleSidedMode { get { return (MToon10DoubleSidedMode)_material.GetInt(MToon10Prop.DoubleSided); } set { _material.SetInt(MToon10Prop.DoubleSided, (int)value); } } public Color BaseColorFactorSrgb { get { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return _material.GetColor(MToon10Prop.BaseColorFactor); } set { //IL_0007: Unknown result type (might be due to invalid IL or missing references) _material.SetColor(MToon10Prop.BaseColorFactor, value); } } public Texture BaseColorTexture { get { return _material.GetTexture(MToon10Prop.BaseColorTexture); } set { _material.SetTexture(MToon10Prop.BaseColorTexture, value); } } public Color ShadeColorFactorSrgb { get { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return _material.GetColor(MToon10Prop.ShadeColorFactor); } set { //IL_0007: Unknown result type (might be due to invalid IL or missing references) _material.SetColor(MToon10Prop.ShadeColorFactor, value); } } public Texture ShadeColorTexture { get { return _material.GetTexture(MToon10Prop.ShadeColorTexture); } set { _material.SetTexture(MToon10Prop.ShadeColorTexture, value); } } public Texture NormalTexture { get { return _material.GetTexture(MToon10Prop.NormalTexture); } set { _material.SetTexture(MToon10Prop.NormalTexture, value); } } public float NormalTextureScale { get { return _material.GetFloat(MToon10Prop.NormalTextureScale); } set { _material.SetFloat(MToon10Prop.NormalTextureScale, value); } } public float ShadingShiftFactor { get { return _material.GetFloat(MToon10Prop.ShadingShiftFactor); } set { _material.SetFloat(MToon10Prop.ShadingShiftFactor, value); } } public Texture ShadingShiftTexture { get { return _material.GetTexture(MToon10Prop.ShadingShiftTexture); } set { _material.SetTexture(MToon10Prop.ShadingShiftTexture, value); } } public float ShadingShiftTextureScale { get { return _material.GetFloat(MToon10Prop.ShadingShiftTextureScale); } set { _material.SetFloat(MToon10Prop.ShadingShiftTextureScale, value); } } public float ShadingToonyFactor { get { return _material.GetFloat(MToon10Prop.ShadingToonyFactor); } set { _material.SetFloat(MToon10Prop.ShadingToonyFactor, value); } } public float GiEqualizationFactor { get { return _material.GetFloat(MToon10Prop.GiEqualizationFactor); } set { _material.SetFloat(MToon10Prop.GiEqualizationFactor, value); } } public Color EmissiveFactorLinear { get { //IL_0008: Unknown result type (might be due to invalid IL or missing references) return _material.GetColor(MToon10Prop.EmissiveFactor); } set { //IL_0008: Unknown result type (might be due to invalid IL or missing references) _material.SetColor(MToon10Prop.EmissiveFactor, value); } } public Texture EmissiveTexture { get { return _material.GetTexture(MToon10Prop.EmissiveTexture); } set { _material.SetTexture(MToon10Prop.EmissiveTexture, value); } } public Color MatcapColorFactorSrgb { get { //IL_0008: Unknown result type (might be due to invalid IL or missing references) return _material.GetColor(MToon10Prop.MatcapColorFactor); } set { //IL_0008: Unknown result type (might be due to invalid IL or missing references) _material.SetColor(MToon10Prop.MatcapColorFactor, value); } } public Texture MatcapTexture { get { return _material.GetTexture(MToon10Prop.MatcapTexture); } set { _material.SetTexture(MToon10Prop.MatcapTexture, value); } } public Color ParametricRimColorFactorSrgb { get { //IL_0008: Unknown result type (might be due to invalid IL or missing references) return _material.GetColor(MToon10Prop.ParametricRimColorFactor); } set { //IL_0008: Unknown result type (might be due to invalid IL or missing references) _material.SetColor(MToon10Prop.ParametricRimColorFactor, value); } } public float ParametricRimFresnelPowerFactor { get { return _material.GetFloat(MToon10Prop.ParametricRimFresnelPowerFactor); } set { _material.SetFloat(MToon10Prop.ParametricRimFresnelPowerFactor, value); } } public float ParametricRimLiftFactor { get { return _material.GetFloat(MToon10Prop.ParametricRimLiftFactor); } set { _material.SetFloat(MToon10Prop.ParametricRimLiftFactor, value); } } public Texture RimMultiplyTexture { get { return _material.GetTexture(MToon10Prop.RimMultiplyTexture); } set { _material.SetTexture(MToon10Prop.RimMultiplyTexture, value); } } public float RimLightingMixFactor { get { return _material.GetFloat(MToon10Prop.RimLightingMixFactor); } set { _material.SetFloat(MToon10Prop.RimLightingMixFactor, value); } } public MToon10OutlineMode OutlineWidthMode { get { return (MToon10OutlineMode)_material.GetInt(MToon10Prop.OutlineWidthMode); } set { _material.SetInt(MToon10Prop.OutlineWidthMode, (int)value); } } public float OutlineWidthFactor { get { return _material.GetFloat(MToon10Prop.OutlineWidthFactor); } set { _material.SetFloat(MToon10Prop.OutlineWidthFactor, value); } } public Texture OutlineWidthMultiplyTexture { get { return _material.GetTexture(MToon10Prop.OutlineWidthMultiplyTexture); } set { _material.SetTexture(MToon10Prop.OutlineWidthMultiplyTexture, value); } } public Color OutlineColorFactorSrgb { get { //IL_0008: Unknown result type (might be due to invalid IL or missing references) return _material.GetColor(MToon10Prop.OutlineColorFactor); } set { //IL_0008: Unknown result type (might be due to invalid IL or missing references) _material.SetColor(MToon10Prop.OutlineColorFactor, value); } } public float OutlineLightingMixFactor { get { return _material.GetFloat(MToon10Prop.OutlineLightingMixFactor); } set { _material.SetFloat(MToon10Prop.OutlineLightingMixFactor, value); } } public Texture UvAnimationMaskTexture { get { return _material.GetTexture(MToon10Prop.UvAnimationMaskTexture); } set { _material.SetTexture(MToon10Prop.UvAnimationMaskTexture, value); } } public float UvAnimationScrollXSpeedFactor { get { return _material.GetFloat(MToon10Prop.UvAnimationScrollXSpeedFactor); } set { _material.SetFloat(MToon10Prop.UvAnimationScrollXSpeedFactor, value); } } public float UvAnimationScrollYSpeedFactor { get { return _material.GetFloat(MToon10Prop.UvAnimationScrollYSpeedFactor); } set { _material.SetFloat(MToon10Prop.UvAnimationScrollYSpeedFactor, value); } } public float UvAnimationRotationSpeedFactor { get { return _material.GetFloat(MToon10Prop.UvAnimationRotationSpeedFactor); } set { _material.SetFloat(MToon10Prop.UvAnimationRotationSpeedFactor, value); } } public Vector2 TextureScale { get { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return _material.GetTextureScale(MToon10Prop.BaseColorTexture); } set { //IL_0007: Unknown result type (might be due to invalid IL or missing references) _material.SetTextureScale(MToon10Prop.BaseColorTexture, value); } } public Vector2 TextureOffset { get { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return _material.GetTextureOffset(MToon10Prop.BaseColorTexture); } set { //IL_0007: Unknown result type (might be due to invalid IL or missing references) _material.SetTextureOffset(MToon10Prop.BaseColorTexture, value); } } public MToon10Context(Material material) { _material = material; } public void Validate() { new MToonValidator(_material).Validate(); } } public static class MToon10Migrator { public static float MigrateToShadingToony(float shadingToony0X, float shadingShift0X) { var (num, num2) = GetShadingRange0X(shadingToony0X, shadingShift0X); return Mathf.Clamp((2f - (num2 - num)) * 0.5f, 0f, 1f); } public static float MigrateToShadingShift(float shadingToony0X, float shadingShift0X) { (float min, float max) shadingRange0X = GetShadingRange0X(shadingToony0X, shadingShift0X); var (num, _) = shadingRange0X; return Mathf.Clamp((shadingRange0X.max + num) * 0.5f * -1f, -1f, 1f); } public static float MigrateToGiEqualization(float giIntensity0X) { return Mathf.Clamp01(1f - giIntensity0X); } private static (float min, float max) GetShadingRange0X(float shadingToony0X, float shadingShift0X) { float item = Mathf.Lerp(1f, shadingShift0X, shadingToony0X); return (min: shadingShift0X, max: item); } } public sealed class MToonMaterialMigrator { public bool TryMigrate(Material material, bool validateShaderName = true) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_03cc: Unknown result type (might be due to invalid IL or missing references) //IL_0461: Unknown result type (might be due to invalid IL or missing references) //IL_0472: Unknown result type (might be due to invalid IL or missing references) Material val = new Material(Shader.Find("VRM10/MToon10")); try { if (validateShaderName && ((Object)material.shader).name != "VRM/MToon") { throw new ArgumentException("The shader of the material is not VRM/MToon"); } MToon0XDefinition mToonParametersFromMaterial = MToon0XUtils.GetMToonParametersFromMaterial(material); MToon10Context mToon10Context = new MToon10Context(val); MToon10Context mToon10Context2 = mToon10Context; mToon10Context2.AlphaMode = mToonParametersFromMaterial.Rendering.RenderMode switch { MToon0XRenderMode.Opaque => MToon10AlphaMode.Opaque, MToon0XRenderMode.Cutout => MToon10AlphaMode.Cutout, MToon0XRenderMode.Transparent => MToon10AlphaMode.Transparent, MToon0XRenderMode.TransparentWithZWrite => MToon10AlphaMode.Transparent, _ => throw new ArgumentOutOfRangeException(), }; mToon10Context2 = mToon10Context; mToon10Context2.TransparentWithZWriteMode = mToonParametersFromMaterial.Rendering.RenderMode switch { MToon0XRenderMode.Opaque => MToon10TransparentWithZWriteMode.Off, MToon0XRenderMode.Cutout => MToon10TransparentWithZWriteMode.Off, MToon0XRenderMode.Transparent => MToon10TransparentWithZWriteMode.Off, MToon0XRenderMode.TransparentWithZWrite => MToon10TransparentWithZWriteMode.On, _ => throw new ArgumentOutOfRangeException(), }; mToon10Context.AlphaCutoff = mToonParametersFromMaterial.Color.CutoutThresholdValue; mToon10Context.RenderQueueOffsetNumber = mToonParametersFromMaterial.Rendering.RenderQueueOffsetNumber; mToon10Context2 = mToon10Context; mToon10Context2.DoubleSidedMode = mToonParametersFromMaterial.Rendering.CullMode switch { MToon0XCullMode.Back => MToon10DoubleSidedMode.Off, MToon0XCullMode.Off => MToon10DoubleSidedMode.On, MToon0XCullMode.Front => MToon10DoubleSidedMode.On, _ => throw new ArgumentOutOfRangeException(), }; mToon10Context.BaseColorFactorSrgb = mToonParametersFromMaterial.Color.LitColor; mToon10Context.BaseColorTexture = (Texture)(object)mToonParametersFromMaterial.Color.LitMultiplyTexture; mToon10Context.ShadeColorFactorSrgb = mToonParametersFromMaterial.Color.ShadeColor; mToon10Context.ShadeColorTexture = (Texture)(object)mToonParametersFromMaterial.Color.ShadeMultiplyTexture; mToon10Context.NormalTexture = (Texture)(object)mToonParametersFromMaterial.Lighting.Normal.NormalTexture; mToon10Context.NormalTextureScale = mToonParametersFromMaterial.Lighting.Normal.NormalScaleValue; mToon10Context.ShadingShiftFactor = MToon10Migrator.MigrateToShadingShift(mToonParametersFromMaterial.Lighting.LitAndShadeMixing.ShadingToonyValue, mToonParametersFromMaterial.Lighting.LitAndShadeMixing.ShadingShiftValue); mToon10Context.ShadingShiftTexture = (Texture)(object)mToonParametersFromMaterial.Lighting.LitAndShadeMixing.LitAndShadeMixingMultiplierMultiplyTexture; mToon10Context.ShadingShiftTexture = null; mToon10Context.ShadingShiftTextureScale = 1f; mToon10Context.ShadingToonyFactor = MToon10Migrator.MigrateToShadingToony(mToonParametersFromMaterial.Lighting.LitAndShadeMixing.ShadingToonyValue, mToonParametersFromMaterial.Lighting.LitAndShadeMixing.ShadingShiftValue); mToon10Context.GiEqualizationFactor = MToon10Migrator.MigrateToGiEqualization(mToonParametersFromMaterial.Lighting.LightingInfluence.GiIntensityValue); mToon10Context.EmissiveFactorLinear = mToonParametersFromMaterial.Emission.EmissionColor; mToon10Context.EmissiveTexture = (Texture)(object)mToonParametersFromMaterial.Emission.EmissionMultiplyTexture; mToon10Context.MatcapColorFactorSrgb = (((Object)(object)mToonParametersFromMaterial.MatCap.AdditiveTexture != (Object)null) ? new Color(1f, 1f, 1f) : new Color(0f, 0f, 0f)); mToon10Context.MatcapTexture = (Texture)(object)mToonParametersFromMaterial.MatCap.AdditiveTexture; mToon10Context.ParametricRimColorFactorSrgb = mToonParametersFromMaterial.Rim.RimColor; mToon10Context.ParametricRimFresnelPowerFactor = mToonParametersFromMaterial.Rim.RimFresnelPowerValue; mToon10Context.ParametricRimLiftFactor = mToonParametersFromMaterial.Rim.RimLiftValue; mToon10Context.RimMultiplyTexture = (Texture)(object)mToonParametersFromMaterial.Rim.RimMultiplyTexture; mToon10Context.RimLightingMixFactor = 1f; mToon10Context2 = mToon10Context; mToon10Context2.OutlineWidthMode = mToonParametersFromMaterial.Outline.OutlineWidthMode switch { MToon0XOutlineWidthMode.None => MToon10OutlineMode.None, MToon0XOutlineWidthMode.WorldCoordinates => MToon10OutlineMode.World, MToon0XOutlineWidthMode.ScreenCoordinates => MToon10OutlineMode.Screen, _ => throw new ArgumentOutOfRangeException(), }; mToon10Context2 = mToon10Context; mToon10Context2.OutlineWidthFactor = mToonParametersFromMaterial.Outline.OutlineWidthMode switch { MToon0XOutlineWidthMode.None => 0f, MToon0XOutlineWidthMode.WorldCoordinates => mToonParametersFromMaterial.Outline.OutlineWidthValue * 0.01f, MToon0XOutlineWidthMode.ScreenCoordinates => mToonParametersFromMaterial.Outline.OutlineWidthValue * 0.01f * 0.5f, _ => throw new ArgumentOutOfRangeException(), }; mToon10Context.OutlineWidthMultiplyTexture = (Texture)(object)mToonParametersFromMaterial.Outline.OutlineWidthMultiplyTexture; mToon10Context.OutlineColorFactorSrgb = mToonParametersFromMaterial.Outline.OutlineColor; mToon10Context2 = mToon10Context; mToon10Context2.OutlineLightingMixFactor = mToonParametersFromMaterial.Outline.OutlineColorMode switch { MToon0XOutlineColorMode.FixedColor => 0f, MToon0XOutlineColorMode.MixedLighting => mToonParametersFromMaterial.Outline.OutlineLightingMixValue, _ => throw new ArgumentOutOfRangeException(), }; mToon10Context.UvAnimationMaskTexture = (Texture)(object)mToonParametersFromMaterial.TextureOption.UvAnimationMaskTexture; mToon10Context.UvAnimationScrollXSpeedFactor = mToonParametersFromMaterial.TextureOption.UvAnimationScrollXSpeedValue; mToon10Context.UvAnimationScrollYSpeedFactor = mToonParametersFromMaterial.TextureOption.UvAnimationScrollYSpeedValue; mToon10Context.UvAnimationRotationSpeedFactor = mToonParametersFromMaterial.TextureOption.UvAnimationRotationSpeedValue; mToon10Context.TextureScale = mToonParametersFromMaterial.TextureOption.MainTextureLeftBottomOriginScale; mToon10Context.TextureOffset = mToonParametersFromMaterial.TextureOption.MainTextureLeftBottomOriginOffset; mToon10Context.Validate(); material.shader = val.shader; material.CopyPropertiesFromMaterial(val); return true; } catch (Exception) { return false; } finally { if (Application.isPlaying) { Object.Destroy((Object)(object)val); } else { Object.DestroyImmediate((Object)(object)val); } } } } public sealed class MToonValidator { private readonly Material _material; public MToonValidator(Material material) { _material = material; } public void Validate() { MToon10AlphaMode alphaMode = (MToon10AlphaMode)_material.GetInt(MToon10Prop.AlphaMode); MToon10TransparentWithZWriteMode zWriteMode = (MToon10TransparentWithZWriteMode)_material.GetInt(MToon10Prop.TransparentWithZWrite); int renderQueueOffset = _material.GetInt(MToon10Prop.RenderQueueOffsetNumber); MToon10DoubleSidedMode doubleSidedMode = (MToon10DoubleSidedMode)_material.GetInt(MToon10Prop.DoubleSided); SetUnityShaderPassSettings(_material, alphaMode, zWriteMode, renderQueueOffset, doubleSidedMode); SetUnityShaderVariants(_material); } private static void SetUnityShaderPassSettings(Material material, MToon10AlphaMode alphaMode, MToon10TransparentWithZWriteMode zWriteMode, int renderQueueOffset, MToon10DoubleSidedMode doubleSidedMode) { material.SetInt(MToon10Prop.AlphaMode, (int)alphaMode); material.SetInt(MToon10Prop.TransparentWithZWrite, (int)zWriteMode); material.SetInt(MToon10Prop.DoubleSided, (int)doubleSidedMode); switch (alphaMode) { case MToon10AlphaMode.Opaque: material.SetOverrideTag("RenderType", "Opaque"); material.SetInt(MToon10Prop.UnitySrcBlend, 1); material.SetInt(MToon10Prop.UnityDstBlend, 0); material.SetInt(MToon10Prop.UnityZWrite, 1); material.SetInt(MToon10Prop.UnityAlphaToMask, 0); renderQueueOffset = 0; material.renderQueue = 2000; break; case MToon10AlphaMode.Cutout: material.SetOverrideTag("RenderType", "TransparentCutout"); material.SetInt(MToon10Prop.UnitySrcBlend, 1); material.SetInt(MToon10Prop.UnityDstBlend, 0); material.SetInt(MToon10Prop.UnityZWrite, 1); material.SetInt(MToon10Prop.UnityAlphaToMask, 1); renderQueueOffset = 0; material.renderQueue = 2450; break; case MToon10AlphaMode.Transparent: if (zWriteMode == MToon10TransparentWithZWriteMode.Off) { material.SetOverrideTag("RenderType", "Transparent"); material.SetInt(MToon10Prop.UnitySrcBlend, 5); material.SetInt(MToon10Prop.UnityDstBlend, 10); material.SetInt(MToon10Prop.UnityZWrite, 0); material.SetInt(MToon10Prop.UnityAlphaToMask, 0); renderQueueOffset = Mathf.Clamp(renderQueueOffset, -9, 0); material.renderQueue = 3000 + renderQueueOffset; break; } if (zWriteMode == MToon10TransparentWithZWriteMode.On) { material.SetOverrideTag("RenderType", "Transparent"); material.SetInt(MToon10Prop.UnitySrcBlend, 5); material.SetInt(MToon10Prop.UnityDstBlend, 10); material.SetInt(MToon10Prop.UnityZWrite, 1); material.SetInt(MToon10Prop.UnityAlphaToMask, 0); renderQueueOffset = Mathf.Clamp(renderQueueOffset, 0, 9); material.renderQueue = 2501 + renderQueueOffset; break; } goto default; default: throw new ArgumentOutOfRangeException("alphaMode", alphaMode, null); } switch (doubleSidedMode) { case MToon10DoubleSidedMode.Off: material.SetInt(MToon10Prop.UnityCullMode, 2); break; case MToon10DoubleSidedMode.On: material.SetInt(MToon10Prop.UnityCullMode, 0); break; default: throw new ArgumentOutOfRangeException("doubleSidedMode", doubleSidedMode, null); } material.SetInt(MToon10Prop.RenderQueueOffsetNumber, renderQueueOffset); } private static void SetUnityCullingSettings(Material material, MToon10DoubleSidedMode doubleSidedMode) { } private static void SetUnityShaderVariants(Material material) { material.SetKeyword("_ALPHATEST_ON", material.GetInt(MToon10Prop.AlphaMode) == 1); material.SetKeyword("_ALPHABLEND_ON", material.GetInt(MToon10Prop.AlphaMode) == 2); material.SetKeyword("_ALPHAPREMULTIPLY_ON", isEnabled: false); material.SetKeyword("_NORMALMAP", (Object)(object)material.GetTexture(MToon10Prop.NormalTexture) != (Object)null); material.SetKeyword("_MTOON_EMISSIVEMAP", (Object)(object)material.GetTexture(MToon10Prop.EmissiveTexture) != (Object)null); material.SetKeyword("_MTOON_RIMMAP", (Object)(object)material.GetTexture(MToon10Prop.MatcapTexture) != (Object)null || (Object)(object)material.GetTexture(MToon10Prop.RimMultiplyTexture) != (Object)null); material.SetKeyword("_MTOON_PARAMETERMAP", (Object)(object)material.GetTexture(MToon10Prop.ShadingShiftTexture) != (Object)null || (Object)(object)material.GetTexture(MToon10Prop.OutlineWidthMultiplyTexture) != (Object)null || (Object)(object)material.GetTexture(MToon10Prop.UvAnimationMaskTexture) != (Object)null); material.SetKeyword("_MTOON_OUTLINE_WORLD", material.GetInt(MToon10Prop.OutlineWidthMode) == 1); material.SetKeyword("_MTOON_OUTLINE_SCREEN", material.GetInt(MToon10Prop.OutlineWidthMode) == 2); } } public enum MToon10AlphaMode { Opaque, Cutout, Transparent } public enum MToon10DoubleSidedMode { Off, On } public static class MToon10EmissiveMapKeyword { public const string On = "_MTOON_EMISSIVEMAP"; } public static class MToon10NormalMapKeyword { public const string On = "_NORMALMAP"; } public enum MToon10OutlineMode { None, World, Screen } public static class MToon10OutlineModeKeyword { public const string World = "_MTOON_OUTLINE_WORLD"; public const string Screen = "_MTOON_OUTLINE_SCREEN"; } public static class MToon10ParameterMapKeyword { public const string On = "_MTOON_PARAMETERMAP"; } public static class MToon10RimMapKeyword { public const string On = "_MTOON_RIMMAP"; } public enum MToon10TransparentWithZWriteMode { Off, On } public static class MToon10Meta { public static readonly string UnityShaderName = "VRM10/MToon10"; public static readonly string UnityUrpShaderName = "VRM10/Universal Render Pipeline/MToon10"; [Obsolete("Use UnityUrpShaderName instead")] public static readonly string URPUnityShaderName = UnityUrpShaderName; } public enum MToon10Prop { AlphaMode, TransparentWithZWrite, AlphaCutoff, RenderQueueOffsetNumber, DoubleSided, BaseColorFactor, BaseColorTexture, ShadeColorFactor, ShadeColorTexture, NormalTexture, NormalTextureScale, ShadingShiftFactor, ShadingShiftTexture, ShadingShiftTextureScale, ShadingToonyFactor, GiEqualizationFactor, EmissiveFactor, EmissiveTexture, MatcapColorFactor, MatcapTexture, ParametricRimColorFactor, ParametricRimFresnelPowerFactor, ParametricRimLiftFactor, RimMultiplyTexture, RimLightingMixFactor, OutlineWidthMode, OutlineWidthFactor, OutlineWidthMultiplyTexture, OutlineColorFactor, OutlineLightingMixFactor, UvAnimationMaskTexture, UvAnimationScrollXSpeedFactor, UvAnimationScrollYSpeedFactor, UvAnimationRotationSpeedFactor, UnityCullMode, UnitySrcBlend, UnityDstBlend, UnityZWrite, UnityAlphaToMask, EditorEditMode } public static class MToon10Properties { private static readonly Dictionary<MToon10Prop, string> _unityShaderLabNames = new Dictionary<MToon10Prop, string> { [MToon10Prop.AlphaMode] = "_AlphaMode", [MToon10Prop.TransparentWithZWrite] = "_TransparentWithZWrite", [MToon10Prop.AlphaCutoff] = "_Cutoff", [MToon10Prop.RenderQueueOffsetNumber] = "_RenderQueueOffset", [MToon10Prop.DoubleSided] = "_DoubleSided", [MToon10Prop.BaseColorFactor] = "_Color", [MToon10Prop.BaseColorTexture] = "_MainTex", [MToon10Prop.ShadeColorFactor] = "_ShadeColor", [MToon10Prop.ShadeColorTexture] = "_ShadeTex", [MToon10Prop.NormalTexture] = "_BumpMap", [MToon10Prop.NormalTextureScale] = "_BumpScale", [MToon10Prop.ShadingShiftFactor] = "_ShadingShiftFactor", [MToon10Prop.ShadingShiftTexture] = "_ShadingShiftTex", [MToon10Prop.ShadingShiftTextureScale] = "_ShadingShiftTexScale", [MToon10Prop.ShadingToonyFactor] = "_ShadingToonyFactor", [MToon10Prop.GiEqualizationFactor] = "_GiEqualization", [MToon10Prop.EmissiveFactor] = "_EmissionColor", [MToon10Prop.EmissiveTexture] = "_EmissionMap", [MToon10Prop.MatcapColorFactor] = "_MatcapColor", [MToon10Prop.MatcapTexture] = "_MatcapTex", [MToon10Prop.ParametricRimColorFactor] = "_RimColor", [MToon10Prop.ParametricRimFresnelPowerFactor] = "_RimFresnelPower", [MToon10Prop.ParametricRimLiftFactor] = "_RimLift", [MToon10Prop.RimMultiplyTexture] = "_RimTex", [MToon10Prop.RimLightingMixFactor] = "_RimLightingMix", [MToon10Prop.OutlineWidthMode] = "_OutlineWidthMode", [MToon10Prop.OutlineWidthFactor] = "_OutlineWidth", [MToon10Prop.OutlineWidthMultiplyTexture] = "_OutlineWidthTex", [MToon10Prop.OutlineColorFactor] = "_OutlineColor", [MToon10Prop.OutlineLightingMixFactor] = "_OutlineLightingMix", [MToon10Prop.UvAnimationMaskTexture] = "_UvAnimMaskTex", [MToon10Prop.UvAnimationScrollXSpeedFactor] = "_UvAnimScrollXSpeed", [MToon10Prop.UvAnimationScrollYSpeedFactor] = "_UvAnimScrollYSpeed", [MToon10Prop.UvAnimationRotationSpeedFactor] = "_UvAnimRotationSpeed", [MToon10Prop.UnityCullMode] = "_M_CullMode", [MToon10Prop.UnitySrcBlend] = "_M_SrcBlend", [MToon10Prop.UnityDstBlend] = "_M_DstBlend", [MToon10Prop.UnityZWrite] = "_M_ZWrite", [MToon10Prop.UnityAlphaToMask] = "_M_AlphaToMask", [MToon10Prop.EditorEditMode] = "_M_EditMode" }; public static IReadOnlyDictionary<MToon10Prop, string> UnityShaderLabNames => _unityShaderLabNames; public static string ToUnityShaderLabName(this MToon10Prop prop) { return UnityShaderLabNames[prop]; } } public static class UnityAlphaModeKeyword { public const string AlphaTest = "_ALPHATEST_ON"; public const string AlphaBlend = "_ALPHABLEND_ON"; public const string AlphaPremultiply = "_ALPHAPREMULTIPLY_ON"; } public enum UnityAlphaToMaskMode { Off, On } public enum UnityCullMode { Off = 0, Back = 2 } public static class UnityRenderTag { public const string Key = "RenderType"; public const string OpaqueValue = "Opaque"; public const string TransparentCutoutValue = "TransparentCutout"; public const string TransparentValue = "Transparent"; } public enum UnityZWriteMode { Off, On } } namespace VRM10.MToon10.MToon0X { public class MToon0XDefinition { public MToon0XMetaDefinition Meta; public MToon0XRenderingDefinition Rendering; public MToon0XColorDefinition Color; public MToon0XLightingDefinition Lighting; public MToon0XEmissionDefinition Emission; public MToon0XMatCapDefinition MatCap; public MToon0XRimDefinition Rim; public MToon0XOutlineDefinition Outline; public MToon0XTextureUvCoordsDefinition TextureOption; } public class MToon0XMetaDefinition { public string Implementation; public int VersionNumber; } public class MToon0XRenderingDefinition { public MToon0XRenderMode RenderMode; public MToon0XCullMode CullMode; public int RenderQueueOffsetNumber; } public class MToon0XColorDefinition { public Color LitColor; public Texture2D LitMultiplyTexture; public Color ShadeColor; public Texture2D ShadeMultiplyTexture; public float CutoutThresholdValue; } public class MToon0XLightingDefinition { public MToon0XLitAndShadeMixingDefinition LitAndShadeMixing; public MToon0XLightingInfluenceDefinition LightingInfluence; public MToon0XNormalDefinition Normal; } public class MToon0XLitAndShadeMixingDefinition { public float ShadingShiftValue; public float ShadingToonyValue; public float ShadowReceiveMultiplierValue; public Texture2D ShadowReceiveMultiplierMultiplyTexture; public float LitAndShadeMixingMultiplierValue; public Texture2D LitAndShadeMixingMultiplierMultiplyTexture; } public class MToon0XLightingInfluenceDefinition { public float LightColorAttenuationValue; public float GiIntensityValue; } public class MToon0XEmissionDefinition { public Color EmissionColor; public Texture2D EmissionMultiplyTexture; } public class MToon0XMatCapDefinition { public Texture2D AdditiveTexture; } public class MToon0XRimDefinition { public Color RimColor; public Texture2D RimMultiplyTexture; public float RimLightingMixValue; public float RimFresnelPowerValue; public float RimLiftValue; } public class MToon0XNormalDefinition { public Texture2D NormalTexture; public float NormalScaleValue; } public class MToon0XOutlineDefinition { public MToon0XOutlineWidthMode OutlineWidthMode; public float OutlineWidthValue; public Texture2D OutlineWidthMultiplyTexture; public float OutlineScaledMaxDistanceValue; public MToon0XOutlineColorMode OutlineColorMode; public Color OutlineColor; public float OutlineLightingMixValue; } public class MToon0XTextureUvCoordsDefinition { public Vector2 MainTextureLeftBottomOriginScale; public Vector2 MainTextureLeftBottomOriginOffset; public Texture2D UvAnimationMaskTexture; public float UvAnimationScrollXSpeedValue; public float UvAnimationScrollYSpeedValue; public float UvAnimationRotationSpeedValue; } public enum MToon0XDebugMode { None, Normal, LitShadeRate } public enum MToon0XOutlineColorMode { FixedColor, MixedLighting } public enum MToon0XOutlineWidthMode { None, WorldCoordinates, ScreenCoordinates } public enum MToon0XRenderMode { Opaque, Cutout, Transparent, TransparentWithZWrite } public enum MToon0XCullMode { Off, Front, Back } public struct MToon0XRenderQueueRequirement { public int DefaultValue; public int MinValue; public int MaxValue; } public static class MToon0XUtils { public const string ShaderName = "VRM/MToon"; public const string PropVersion = "_MToonVersion"; public const string PropDebugMode = "_DebugMode"; public const string PropOutlineWidthMode = "_OutlineWidthMode"; public const string PropOutlineColorMode = "_OutlineColorMode"; public const string PropBlendMode = "_BlendMode"; public const string PropCullMode = "_CullMode"; public const string PropOutlineCullMode = "_OutlineCullMode"; public const string PropCutoff = "_Cutoff"; public const string PropColor = "_Color"; public const string PropShadeColor = "_ShadeColor"; public const string PropMainTex = "_MainTex"; public const string PropShadeTexture = "_ShadeTexture"; public const string PropBumpScale = "_BumpScale"; public const string PropBumpMap = "_BumpMap"; public const string PropReceiveShadowRate = "_ReceiveShadowRate"; public const string PropReceiveShadowTexture = "_ReceiveShadowTexture"; public const string PropShadingGradeRate = "_ShadingGradeRate"; public const string PropShadingGradeTexture = "_ShadingGradeTexture"; public const string PropShadeShift = "_ShadeShift"; public const string PropShadeToony = "_ShadeToony"; public const string PropLightColorAttenuation = "_LightColorAttenuation"; public const string PropIndirectLightIntensity = "_IndirectLightIntensity"; public const string PropRimColor = "_RimColor"; public const string PropRimTexture = "_RimTexture"; public const string PropRimLightingMix = "_RimLightingMix"; public const string PropRimFresnelPower = "_RimFresnelPower"; public const string PropRimLift = "_RimLift"; public const string PropSphereAdd = "_SphereAdd"; public const string PropEmissionColor = "_EmissionColor"; public const string PropEmissionMap = "_EmissionMap"; public const string PropOutlineWidthTexture = "_OutlineWidthTexture"; public const string PropOutlineWidth = "_OutlineWidth"; public const string PropOutlineScaledMaxDistance = "_OutlineScaledMaxDistance"; public const string PropOutlineColor = "_OutlineColor"; public const string PropOutlineLightingMix = "_OutlineLightingMix"; public const string PropUvAnimMaskTexture = "_UvAnimMaskTexture"; public const string PropUvAnimScrollX = "_UvAnimScrollX"; public const string PropUvAnimScrollY = "_UvAnimScrollY"; public const string PropUvAnimRotation = "_UvAnimRotation"; public const string PropSrcBlend = "_SrcBlend"; public const string PropDstBlend = "_DstBlend"; public const string PropZWrite = "_ZWrite"; public const string PropAlphaToMask = "_AlphaToMask"; public const string KeyNormalMap = "_NORMALMAP"; public const string KeyAlphaTestOn = "_ALPHATEST_ON"; public const string KeyAlphaBlendOn = "_ALPHABLEND_ON"; public const string KeyAlphaPremultiplyOn = "_ALPHAPREMULTIPLY_ON"; public const string KeyOutlineWidthWorld = "MTOON_OUTLINE_WIDTH_WORLD"; public const string KeyOutlineWidthScreen = "MTOON_OUTLINE_WIDTH_SCREEN"; public const string KeyOutlineColorFixed = "MTOON_OUTLINE_COLOR_FIXED"; public const string KeyOutlineColorMixed = "MTOON_OUTLINE_COLOR_MIXED"; public const string KeyDebugNormal = "MTOON_DEBUG_NORMAL"; public const string KeyDebugLitShadeRate = "MTOON_DEBUG_LITSHADERATE"; public const string TagRenderTypeKey = "RenderType"; public const string TagRenderTypeValueOpaque = "Opaque"; public const string TagRenderTypeValueTransparentCutout = "TransparentCutout"; public const string TagRenderTypeValueTransparent = "Transparent"; public const int DisabledIntValue = 0; public const int EnabledIntValue = 1; public const string Implementation = "Santarh/MToon"; public const int VersionNumber = 39; public static MToon0XRenderQueueRequirement GetRenderQueueRequirement(MToon0XRenderMode renderMode) { return renderMode switch { MToon0XRenderMode.Opaque => new MToon0XRenderQueueRequirement { DefaultValue = -1, MinValue = -1, MaxValue = -1 }, MToon0XRenderMode.Cutout => new MToon0XRenderQueueRequirement { DefaultValue = 2450, MinValue = 2450, MaxValue = 2450 }, MToon0XRenderMode.Transparent => new MToon0XRenderQueueRequirement { DefaultValue = 3000, MinValue = 2951, MaxValue = 3000 }, MToon0XRenderMode.TransparentWithZWrite => new MToon0XRenderQueueRequirement { DefaultValue = 2501, MinValue = 2501, MaxValue = 2550 }, _ => throw new ArgumentOutOfRangeException("renderMode", renderMode, null), }; } public static MToon0XDefinition GetMToonParametersFromMaterial(Material material) { //IL_006e: 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_0090: 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_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02c5: Unknown result type (might be due to invalid IL or missing references) //IL_02ca: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) return new MToon0XDefinition { Meta = new MToon0XMetaDefinition { Implementation = "Santarh/MToon", VersionNumber = material.GetInt("_MToonVersion") }, Rendering = new MToon0XRenderingDefinition { RenderMode = GetBlendMode(material), CullMode = GetCullMode(material), RenderQueueOffsetNumber = GetRenderQueueOffset(material, GetRenderQueueOriginMode(material)) }, Color = new MToon0XColorDefinition { LitColor = GetColor(material, "_Color"), LitMultiplyTexture = GetTexture(material, "_MainTex"), ShadeColor = GetColor(material, "_ShadeColor"), ShadeMultiplyTexture = GetTexture(material, "_ShadeTexture"), CutoutThresholdValue = GetValue(material, "_Cutoff") }, Lighting = new MToon0XLightingDefinition { LitAndShadeMixing = new MToon0XLitAndShadeMixingDefinition { ShadingShiftValue = GetValue(material, "_ShadeShift"), ShadingToonyValue = GetValue(material, "_ShadeToony"), ShadowReceiveMultiplierValue = GetValue(material, "_ReceiveShadowRate"), ShadowReceiveMultiplierMultiplyTexture = GetTexture(material, "_ReceiveShadowTexture"), LitAndShadeMixingMultiplierValue = GetValue(material, "_ShadingGradeRate"), LitAndShadeMixingMultiplierMultiplyTexture = GetTexture(material, "_ShadingGradeTexture") }, LightingInfluence = new MToon0XLightingInfluenceDefinition { LightColorAttenuationValue = GetValue(material, "_LightColorAttenuation"), GiIntensityValue = GetValue(material, "_IndirectLightIntensity") }, Normal = new MToon0XNormalDefinition { NormalTexture = GetTexture(material, "_BumpMap"), NormalScaleValue = GetValue(material, "_BumpScale") } }, Emission = new MToon0XEmissionDefinition { EmissionColor = GetColor(material, "_EmissionColor"), EmissionMultiplyTexture = GetTexture(material, "_EmissionMap") }, MatCap = new MToon0XMatCapDefinition { AdditiveTexture = GetTexture(material, "_SphereAdd") }, Rim = new MToon0XRimDefinition { RimColor = GetColor(material, "_RimColor"), RimMultiplyTexture = GetTexture(material, "_RimTexture"), RimLightingMixValue = GetValue(material, "_RimLightingMix"), RimFresnelPowerValue = GetValue(material, "_RimFresnelPower"), RimLiftValue = GetValue(material, "_RimLift") }, Outline = new MToon0XOutlineDefinition { OutlineWidthMode = GetOutlineWidthMode(material), OutlineWidthValue = GetValue(material, "_OutlineWidth"), OutlineWidthMultiplyTexture = GetTexture(material, "_OutlineWidthTexture"), OutlineScaledMaxDistanceValue = GetValue(material, "_OutlineScaledMaxDistance"), OutlineColorMode = GetOutlineColorMode(material), OutlineColor = GetColor(material, "_OutlineColor"), OutlineLightingMixValue = GetValue(material, "_OutlineLightingMix") }, TextureOption = new MToon0XTextureUvCoordsDefinition { MainTextureLeftBottomOriginScale = material.GetTextureScale("_MainTex"), MainTextureLeftBottomOriginOffset = material.GetTextureOffset("_MainTex"), UvAnimationMaskTexture = GetTexture(material, "_UvAnimMaskTexture"), UvAnimationScrollXSpeedValue = GetValue(material, "_UvAnimScrollX"), UvAnimationScrollYSpeedValue = GetValue(material, "_UvAnimScrollY"), UvAnimationRotationSpeedValue = GetValue(material, "_UvAnimRotation") } }; } private static float GetValue(Material material, string propertyName) { return material.GetFloat(propertyName); } private static Color GetColor(Material material, string propertyName) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return material.GetColor(propertyName); } private static Texture2D GetTexture(Material material, string propertyName) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Expected O, but got Unknown return (Texture2D)material.GetTexture(propertyName); } private static MToon0XRenderMode GetBlendMode(Material material) { if (material.IsKeywordEnabled("_ALPHATEST_ON")) { return MToon0XRenderMode.Cutout; } if (material.IsKeywordEnabled("_ALPHABLEND_ON")) { switch (material.GetInt("_ZWrite")) { case 1: return MToon0XRenderMode.TransparentWithZWrite; case 0: return MToon0XRenderMode.Transparent; default: UniGLTFLogger.Warning("Invalid ZWrite Int Value.", (Object)null); return MToon0XRenderMode.Transparent; } } return MToon0XRenderMode.Opaque; } private static MToon0XCullMode GetCullMode(Material material) { switch ((MToon0XCullMode)material.GetInt("_CullMode")) { case MToon0XCullMode.Off: return MToon0XCullMode.Off; case MToon0XCullMode.Front: return MToon0XCullMode.Front; case MToon0XCullMode.Back: return MToon0XCullMode.Back; default: UniGLTFLogger.Warning("Invalid CullMode.", (Object)null); return MToon0XCullMode.Back; } } private static MToon0XOutlineWidthMode GetOutlineWidthMode(Material material) { if (material.IsKeywordEnabled("MTOON_OUTLINE_WIDTH_WORLD")) { return MToon0XOutlineWidthMode.WorldCoordinates; } if (material.IsKeywordEnabled("MTOON_OUTLINE_WIDTH_SCREEN")) { return MToon0XOutlineWidthMode.ScreenCoordinates; } return MToon0XOutlineWidthMode.None; } private static MToon0XOutlineColorMode GetOutlineColorMode(Material material) { if (material.IsKeywordEnabled("MTOON_OUTLINE_COLOR_FIXED")) { return MToon0XOutlineColorMode.FixedColor; } if (material.IsKeywordEnabled("MTOON_OUTLINE_COLOR_MIXED")) { return MToon0XOutlineColorMode.MixedLighting; } return MToon0XOutlineColorMode.FixedColor; } private static MToon0XRenderMode GetRenderQueueOriginMode(Material material) { return GetBlendMode(material); } private static int GetRenderQueueOffset(Material material, MToon0XRenderMode originMode) { int renderQueue = material.renderQueue; MToon0XRenderQueueRequirement renderQueueRequirement = GetRenderQueueRequirement(originMode); if (renderQueue < renderQueueRequirement.MinValue || renderQueue > renderQueueRequirement.MaxValue) { return 0; } return renderQueue - renderQueueRequirement.DefaultValue; } } }
valheim_Data/Managed/VRM.dll
Decompiled 20 hours 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; using System.Collections.Generic; using System.Collections.ObjectModel; 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.Threading; using System.Threading.Tasks; using MToon; using UniGLTF; using UniGLTF.MeshUtility; using UniGLTF.SpringBoneJobs; using UniGLTF.SpringBoneJobs.Blittables; using UniGLTF.SpringBoneJobs.InputPorts; using UniGLTF.Utils; using UniHumanoid; using UniJSON; using Unity.Jobs; using Unity.Mathematics; using UnityEngine; using UnityEngine.Profiling; using UnityEngine.Serialization; using UnityEngine.UI; using VRM.SpringBone; using VRM.SpringBoneJobs; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [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[5931] { 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 65, 118, 97, 116, 97, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 67, 108, 105, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 67, 108, 105, 112, 72, 97, 110, 100, 108, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 75, 101, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 77, 101, 114, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 66, 108, 105, 110, 107, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 77, 101, 115, 104, 80, 114, 101, 118, 105, 101, 119, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 80, 114, 101, 118, 105, 101, 119, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 92, 86, 82, 77, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 80, 114, 111, 120, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 45, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 110, 117, 109, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 69, 110, 117, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 86, 114, 109, 72, 117, 109, 97, 110, 111, 105, 100, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 103, 108, 84, 70, 95, 86, 82, 77, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 92, 86, 82, 77, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 92, 86, 82, 77, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 67, 97, 109, 101, 114, 97, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 86, 82, 77, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 86, 82, 77, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 86, 82, 77, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 86, 82, 77, 83, 112, 101, 99, 86, 101, 114, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 95, 86, 82, 77, 95, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 95, 86, 82, 77, 95, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 95, 86, 82, 77, 95, 72, 117, 109, 97, 110, 111, 105, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 95, 86, 82, 77, 95, 77, 97, 116, 101, 114, 105, 97, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 95, 86, 82, 77, 95, 77, 101, 116, 97, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 95, 86, 82, 77, 95, 83, 101, 99, 111, 110, 100, 97, 114, 121, 65, 110, 105, 109, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 103, 108, 84, 70, 95, 86, 82, 77, 95, 101, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 72, 117, 109, 97, 110, 111, 105, 100, 92, 86, 82, 77, 72, 117, 109, 97, 110, 111, 105, 100, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 111, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 80, 114, 111, 112, 101, 114, 116, 121, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 109, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 109, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 126, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 85, 110, 108, 105, 116, 84, 114, 97, 110, 115, 112, 97, 114, 101, 110, 116, 90, 87, 114, 105, 116, 101, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 77, 84, 111, 111, 110, 92, 80, 114, 101, 83, 104, 97, 100, 101, 114, 80, 114, 111, 112, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 77, 84, 111, 111, 110, 92, 83, 104, 97, 100, 101, 114, 80, 114, 111, 112, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 85, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 85, 114, 112, 86, 114, 109, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 86, 114, 109, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 77, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 73, 79, 92, 86, 114, 109, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 47, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 82, 77, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 82, 77, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 51, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 82, 77, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 82, 77, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 82, 77, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 82, 77, 77, 84, 111, 111, 110, 84, 101, 120, 116, 117, 114, 101, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 71, 101, 111, 109, 101, 116, 114, 121, 66, 97, 99, 107, 117, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 84, 101, 120, 116, 117, 114, 101, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 86, 82, 77, 67, 111, 109, 112, 111, 110, 101, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 76, 111, 111, 107, 65, 116, 92, 67, 117, 114, 118, 101, 77, 97, 112, 112, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 76, 111, 111, 107, 65, 116, 92, 76, 111, 111, 107, 65, 116, 84, 97, 114, 103, 101, 116, 83, 119, 105, 116, 99, 104, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 76, 111, 111, 107, 65, 116, 92, 76, 111, 111, 107, 84, 97, 114, 103, 101, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 76, 111, 111, 107, 65, 116, 92, 77, 97, 116, 114, 105, 120, 52, 120, 52, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 76, 111, 111, 107, 65, 116, 92, 79, 102, 102, 115, 101, 116, 79, 110, 84, 114, 97, 110, 115, 102, 111, 114, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 76, 111, 111, 107, 65, 116, 92, 86, 82, 77, 76, 111, 111, 107, 65, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 76, 111, 111, 107, 65, 116, 92, 86, 82, 77, 76, 111, 111, 107, 65, 116, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 65, 112, 112, 108, 121, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 76, 111, 111, 107, 65, 116, 92, 86, 82, 77, 76, 111, 111, 107, 65, 116, 66, 111, 110, 101, 65, 112, 112, 108, 121, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 76, 111, 111, 107, 65, 116, 92, 86, 82, 77, 76, 111, 111, 107, 65, 116, 72, 101, 97, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 49, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 116, 97, 92, 86, 82, 77, 77, 101, 116, 97, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 116, 97, 92, 86, 82, 77, 77, 101, 116, 97, 73, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 116, 97, 92, 86, 82, 77, 77, 101, 116, 97, 79, 98, 106, 101, 99, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 73, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 107, 105, 110, 110, 101, 100, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 86, 82, 77, 66, 111, 110, 101, 78, 111, 114, 109, 97, 108, 105, 122, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 107, 105, 110, 110, 101, 100, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 86, 114, 109, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 73, 86, 114, 109, 48, 88, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 74, 111, 98, 115, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 82, 101, 112, 108, 97, 99, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 74, 111, 98, 115, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 101, 114, 118, 105, 99, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 74, 111, 98, 115, 92, 86, 114, 109, 48, 88, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 76, 111, 103, 105, 99, 92, 83, 99, 101, 110, 101, 73, 110, 102, 111, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 76, 111, 103, 105, 99, 92, 83, 112, 104, 101, 114, 101, 67, 111, 108, 108, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 73, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 76, 111, 103, 105, 99, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 105, 110, 116, 73, 110, 105, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 76, 111, 103, 105, 99, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 105, 110, 116, 83, 116, 97, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 72, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 76, 111, 103, 105, 99, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 101, 116, 116, 105, 110, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 76, 111, 103, 105, 99, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 121, 115, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 86, 82, 77, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 86, 82, 77, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 100, 101, 114, 71, 114, 111, 117, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 86, 82, 77, 83, 112, 114, 105, 110, 103, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 77, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 117, 110, 105, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 86, 114, 109, 48, 88, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 68, 101, 102, 97, 117, 108, 116, 82, 117, 110, 116, 105, 109, 101, 46, 99, 115 }, TypesData = new byte[3276] { 0, 0, 0, 0, 20, 86, 82, 77, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 65, 118, 97, 116, 97, 114, 0, 0, 0, 0, 27, 86, 82, 77, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 0, 0, 0, 0, 66, 86, 82, 77, 46, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 124, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 75, 101, 121, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 66, 105, 110, 100, 105, 110, 103, 67, 111, 109, 112, 97, 114, 101, 114, 0, 0, 0, 0, 21, 86, 82, 77, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 66, 105, 110, 100, 105, 110, 103, 0, 0, 0, 0, 24, 86, 82, 77, 124, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 0, 0, 0, 0, 18, 86, 82, 77, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 67, 108, 105, 112, 0, 0, 0, 0, 25, 86, 82, 77, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 67, 108, 105, 112, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 0, 17, 86, 82, 77, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 75, 101, 121, 0, 0, 0, 0, 20, 86, 82, 77, 124, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 77, 101, 114, 103, 101, 114, 0, 0, 0, 0, 11, 86, 82, 77, 124, 66, 108, 105, 110, 107, 101, 114, 0, 0, 0, 0, 30, 86, 82, 77, 124, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 0, 0, 0, 0, 72, 86, 82, 77, 46, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 124, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 75, 101, 121, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 67, 111, 109, 112, 97, 114, 101, 114, 0, 0, 0, 0, 45, 86, 82, 77, 46, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 124, 77, 97, 116, 101, 114, 105, 97, 108, 84, 97, 114, 103, 101, 116, 0, 0, 0, 0, 16, 86, 82, 77, 124, 77, 97, 116, 101, 114, 105, 97, 108, 73, 116, 101, 109, 0, 0, 0, 0, 19, 86, 82, 77, 124, 77, 101, 115, 104, 80, 114, 101, 118, 105, 101, 119, 73, 116, 101, 109, 0, 0, 0, 0, 23, 86, 82, 77, 124, 80, 114, 101, 118, 105, 101, 119, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 22, 86, 82, 77, 124, 86, 82, 77, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 80, 114, 111, 120, 121, 0, 0, 0, 0, 32, 86, 82, 77, 124, 86, 82, 77, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 80, 114, 111, 120, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 12, 86, 82, 77, 124, 69, 110, 117, 109, 85, 116, 105, 108, 0, 0, 0, 0, 18, 86, 82, 77, 124, 69, 110, 117, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 21, 86, 82, 77, 124, 86, 82, 77, 66, 111, 110, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 25, 86, 82, 77, 124, 86, 82, 77, 72, 117, 109, 97, 110, 111, 105, 100, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 22, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 18, 86, 82, 77, 124, 86, 82, 77, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 0, 0, 0, 0, 43, 86, 82, 77, 46, 86, 82, 77, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 124, 82, 101, 110, 100, 101, 114, 101, 114, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 70, 108, 97, 103, 115, 0, 0, 0, 0, 31, 86, 82, 77, 124, 86, 82, 77, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 67, 97, 109, 101, 114, 97, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 50, 86, 82, 77, 46, 86, 82, 77, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 67, 97, 109, 101, 114, 97, 77, 97, 110, 97, 103, 101, 114, 124, 67, 97, 109, 101, 114, 97, 87, 105, 116, 104, 82, 97, 119, 73, 109, 97, 103, 101, 0, 0, 0, 0, 19, 86, 82, 77, 124, 86, 114, 109, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 16, 86, 82, 77, 124, 86, 82, 77, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 17, 86, 82, 77, 124, 86, 82, 77, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 18, 86, 82, 77, 124, 86, 82, 77, 83, 112, 101, 99, 86, 101, 114, 115, 105, 111, 110, 0, 0, 0, 0, 30, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 0, 0, 0, 0, 27, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 66, 105, 110, 100, 0, 0, 0, 0, 28, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 71, 114, 111, 117, 112, 0, 0, 0, 0, 29, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 77, 97, 115, 116, 101, 114, 0, 0, 0, 0, 22, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 68, 101, 103, 114, 101, 101, 77, 97, 112, 0, 0, 0, 0, 27, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 77, 101, 115, 104, 65, 110, 110, 111, 116, 97, 116, 105, 111, 110, 0, 0, 0, 0, 24, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 70, 105, 114, 115, 116, 112, 101, 114, 115, 111, 110, 0, 0, 0, 0, 25, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 72, 117, 109, 97, 110, 111, 105, 100, 66, 111, 110, 101, 0, 0, 0, 0, 21, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 72, 117, 109, 97, 110, 111, 105, 100, 0, 0, 0, 0, 21, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 77, 97, 116, 101, 114, 105, 97, 108, 0, 0, 0, 0, 17, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 77, 101, 116, 97, 0, 0, 0, 0, 39, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 83, 101, 99, 111, 110, 100, 97, 114, 121, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 111, 108, 108, 105, 100, 101, 114, 0, 0, 0, 0, 44, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 83, 101, 99, 111, 110, 100, 97, 114, 121, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 111, 108, 108, 105, 100, 101, 114, 71, 114, 111, 117, 112, 0, 0, 0, 0, 36, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 83, 101, 99, 111, 110, 100, 97, 114, 121, 65, 110, 105, 109, 97, 116, 105, 111, 110, 71, 114, 111, 117, 112, 0, 0, 0, 0, 31, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 83, 101, 99, 111, 110, 100, 97, 114, 121, 65, 110, 105, 109, 97, 116, 105, 111, 110, 0, 0, 0, 0, 23, 86, 82, 77, 124, 103, 108, 84, 70, 95, 86, 82, 77, 95, 101, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 26, 86, 82, 77, 124, 86, 82, 77, 72, 117, 109, 97, 110, 111, 105, 100, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 0, 0, 0, 0, 47, 86, 82, 77, 124, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 80, 114, 111, 112, 101, 114, 116, 121, 69, 120, 112, 111, 114, 116, 101, 114, 0, 0, 0, 0, 30, 86, 82, 77, 124, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 0, 0, 0, 0, 35, 86, 82, 77, 124, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 0, 0, 0, 0, 41, 86, 82, 77, 124, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 0, 0, 0, 0, 35, 86, 82, 77, 124, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 0, 0, 0, 0, 52, 86, 82, 77, 124, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 85, 110, 108, 105, 116, 84, 114, 97, 110, 115, 112, 97, 114, 101, 110, 116, 90, 87, 114, 105, 116, 101, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 0, 0, 0, 0, 25, 86, 82, 77, 124, 80, 114, 101, 83, 104, 97, 100, 101, 114, 80, 114, 111, 112, 69, 120, 112, 111, 114, 116, 101, 114, 0, 0, 0, 0, 18, 86, 82, 77, 124, 83, 104, 97, 100, 101, 114, 80, 114, 111, 112, 101, 114, 116, 121, 0, 0, 0, 0, 15, 86, 82, 77, 124, 83, 104, 97, 100, 101, 114, 80, 114, 111, 112, 115, 0, 0, 0, 0, 37, 86, 82, 77, 124, 85, 114, 112, 86, 114, 109, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 0, 0, 0, 0, 41, 86, 82, 77, 124, 86, 114, 109, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 30, 86, 82, 77, 124, 86, 114, 109, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 11, 86, 82, 77, 124, 86, 82, 77, 68, 97, 116, 97, 0, 0, 0, 0, 20, 86, 82, 77, 124, 78, 111, 116, 86, 114, 109, 48, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 15, 86, 82, 77, 124, 86, 82, 77, 69, 120, 112, 111, 114, 116, 101, 114, 0, 0, 0, 0, 22, 86, 82, 77, 124, 86, 82, 77, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 0, 0, 0, 0, 32, 86, 82, 77, 124, 86, 82, 77, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 27, 86, 82, 77, 124, 86, 82, 77, 77, 84, 111, 111, 110, 84, 101, 120, 116, 117, 114, 101, 73, 109, 112, 111, 114, 116, 101, 114, 0, 0, 0, 0, 21, 86, 82, 77, 124, 86, 114, 109, 71, 101, 111, 109, 101, 116, 114, 121, 66, 97, 99, 107, 117, 112, 0, 0, 0, 0, 49, 86, 82, 77, 46, 86, 114, 109, 71, 101, 111, 109, 101, 116, 114, 121, 66, 97, 99, 107, 117, 112, 124, 86, 114, 109, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 100, 101, 114, 66, 97, 99, 107, 117, 112, 0, 0, 0, 0, 31, 86, 82, 77, 46, 86, 114, 109, 71, 101, 111, 109, 101, 116, 114, 121, 66, 97, 99, 107, 117, 112, 43, 124, 67, 111, 108, 108, 105, 100, 101, 114, 0, 0, 0, 0, 41, 86, 82, 77, 46, 86, 114, 109, 71, 101, 111, 109, 101, 116, 114, 121, 66, 97, 99, 107, 117, 112, 124, 86, 114, 109, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 66, 97, 99, 107, 117, 112, 0, 0, 0, 0, 33, 86, 82, 77, 124, 86, 114, 109, 84, 101, 120, 116, 117, 114, 101, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 0, 0, 0, 0, 14, 86, 82, 77, 124, 86, 114, 109, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 17, 86, 82, 77, 124, 73, 86, 82, 77, 67, 111, 109, 112, 111, 110, 101, 110, 116, 0, 0, 0, 0, 15, 86, 82, 77, 124, 67, 117, 114, 118, 101, 77, 97, 112, 112, 101, 114, 0, 0, 0, 0, 24, 86, 82, 77, 124, 76, 111, 111, 107, 65, 116, 84, 97, 114, 103, 101, 116, 83, 119, 105, 116, 99, 104, 101, 114, 0, 0, 0, 0, 14, 86, 82, 77, 124, 76, 111, 111, 107, 84, 97, 114, 103, 101, 116, 0, 0, 0, 0, 23, 86, 82, 77, 124, 77, 97, 116, 114, 105, 120, 52, 120, 52, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 21, 86, 82, 77, 124, 79, 102, 102, 115, 101, 116, 79, 110, 84, 114, 97, 110, 115, 102, 111, 114, 109, 0, 0, 0, 0, 13, 86, 82, 77, 124, 86, 82, 77, 76, 111, 111, 107, 65, 116, 0, 0, 0, 0, 30, 86, 82, 77, 124, 86, 82, 77, 76, 111, 111, 107, 65, 116, 66, 108, 101, 110, 100, 83, 104, 97, 112, 101, 65, 112, 112, 108, 121, 101, 114, 0, 0, 0, 0, 24, 86, 82, 77, 124, 86, 82, 77, 76, 111, 111, 107, 65, 116, 66, 111, 110, 101, 65, 112, 112, 108, 121, 101, 114, 0, 0, 0, 0, 17, 86, 82, 77, 124, 86, 82, 77, 76, 111, 111, 107, 65, 116, 72, 101, 97, 100, 0, 0, 0, 0, 11, 86, 82, 77, 124, 86, 82, 77, 77, 101, 116, 97, 0, 0, 0, 0, 22, 86, 82, 77, 124, 86, 82, 77, 77, 101, 116, 97, 73, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110, 0, 0, 0, 0, 17, 86, 82, 77, 124, 86, 82, 77, 77, 101, 116, 97, 79, 98, 106, 101, 99, 116, 0, 0, 0, 0, 21, 86, 82, 77, 124, 86, 82, 77, 66, 111, 110, 101, 78, 111, 114, 109, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 18, 86, 82, 77, 124, 86, 114, 109, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 27, 86, 82, 77, 124, 73, 86, 114, 109, 48, 88, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 0, 0, 0, 0, 41, 86, 82, 77, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 82, 101, 112, 108, 97, 99, 101, 114, 0, 0, 0, 0, 40, 86, 82, 77, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 98, 115, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 101, 114, 118, 105, 99, 101, 0, 0, 0, 0, 30, 86, 82, 77, 124, 86, 114, 109, 48, 88, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 0, 0, 0, 0, 24, 86, 82, 77, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 83, 99, 101, 110, 101, 73, 110, 102, 111, 0, 0, 0, 0, 29, 86, 82, 77, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 83, 112, 104, 101, 114, 101, 67, 111, 108, 108, 105, 100, 101, 114, 0, 0, 0, 0, 34, 86, 82, 77, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 105, 110, 116, 73, 110, 105, 116, 0, 0, 0, 0, 35, 86, 82, 77, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 105, 110, 116, 83, 116, 97, 116, 101, 0, 0, 0, 0, 33, 86, 82, 77, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 101, 116, 116, 105, 110, 103, 115, 0, 0, 0, 0, 31, 86, 82, 77, 46, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 83, 121, 115, 116, 101, 109, 0, 0, 0, 0, 17, 86, 82, 77, 124, 86, 82, 77, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 0, 0, 0, 0, 30, 86, 82, 77, 124, 86, 82, 77, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 100, 101, 114, 71, 114, 111, 117, 112, 0, 0, 0, 0, 45, 86, 82, 77, 46, 86, 82, 77, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 100, 101, 114, 71, 114, 111, 117, 112, 124, 83, 112, 104, 101, 114, 101, 67, 111, 108, 108, 105, 100, 101, 114, 0, 0, 0, 0, 20, 86, 82, 77, 124, 86, 82, 77, 83, 112, 114, 105, 110, 103, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 33, 86, 82, 77, 124, 86, 114, 109, 48, 88, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 68, 101, 102, 97, 117, 108, 116, 82, 117, 110, 116, 105, 109, 101 }, TotalFiles = 78, TotalTypes = 102, IsEditorOnly = false }; } } namespace VRM { [CreateAssetMenu(menuName = "VRM/BlendShapeAvatar")] public class BlendShapeAvatar : ScriptableObject { [SerializeField] public List<BlendShapeClip> Clips = new List<BlendShapeClip>(); public void CreateDefaultPreset() { BlendShapePreset[] values = CachedEnum.GetValues<BlendShapePreset>(); foreach (BlendShapePreset blendShapePreset in values) { if (blendShapePreset != BlendShapePreset.Unknown) { CreateDefaultPreset(blendShapePreset); } } } private void CreateDefaultPreset(BlendShapePreset preset) { BlendShapeClip blendShapeClip = null; foreach (BlendShapeClip clip in Clips) { if (clip.Preset == preset) { blendShapeClip = clip; break; } } if (!((Object)(object)blendShapeClip != (Object)null)) { blendShapeClip = ScriptableObject.CreateInstance<BlendShapeClip>(); ((Object)blendShapeClip).name = preset.ToString(); blendShapeClip.BlendShapeName = preset.ToString(); blendShapeClip.Preset = preset; Clips.Add(blendShapeClip); } } public void SetClip(BlendShapeKey key, BlendShapeClip clip) { int num = -1; try { num = Clips.FindIndex((BlendShapeClip x) => key.Match(x)); } catch (Exception) { } if (num == -1) { Clips.Add(clip); } else { Clips[num] = clip; } } public BlendShapeClip GetClip(BlendShapeKey key) { if (Clips == null) { return null; } return Clips.FirstOrDefault((BlendShapeClip x) => key.Match(x)); } public BlendShapeClip GetClip(BlendShapePreset preset) { return GetClip(BlendShapeKey.CreateFromPreset(preset)); } public BlendShapeClip GetClip(string name) { return GetClip(BlendShapeKey.CreateUnknown(name)); } } internal class BlendShapeBindingMerger { private class DictionaryKeyBlendShapeBindingComparer : IEqualityComparer<BlendShapeBinding> { public bool Equals(BlendShapeBinding x, BlendShapeBinding y) { if (x.RelativePath == y.RelativePath) { return x.Index == y.Index; } return false; } public int GetHashCode(BlendShapeBinding obj) { return obj.RelativePath.GetHashCode() + obj.Index; } } private static DictionaryKeyBlendShapeBindingComparer comparer = new DictionaryKeyBlendShapeBindingComparer(); private Dictionary<BlendShapeBinding, float> m_blendShapeValueMap = new Dictionary<BlendShapeBinding, float>(comparer); private Dictionary<BlendShapeBinding, Action<float>> m_blendShapeSetterMap = new Dictionary<BlendShapeBinding, Action<float>>(comparer); public BlendShapeBindingMerger(Dictionary<BlendShapeKey, BlendShapeClip> clipMap, Transform root) { foreach (KeyValuePair<BlendShapeKey, BlendShapeClip> item in clipMap) { BlendShapeBinding[] values = item.Value.Values; for (int i = 0; i < values.Length; i++) { BlendShapeBinding binding = values[i]; if (m_blendShapeSetterMap.ContainsKey(binding)) { continue; } Transform val = root.Find(binding.RelativePath); SkinnedMeshRenderer target = null; if ((Object)(object)val != (Object)null) { target = UnityExtensions.GetComponentOrNull<SkinnedMeshRenderer>((Component)(object)val); } if ((Object)(object)target != (Object)null) { if (binding.Index >= 0 && binding.Index < target.sharedMesh.blendShapeCount) { m_blendShapeSetterMap.Add(binding, delegate(float x) { target.SetBlendShapeWeight(binding.Index, x); }); } else { UniGLTFLogger.Warning($"Invalid blendshape binding: {((Object)target).name}: {binding}", (Object)null); } } else { UniGLTFLogger.Warning("SkinnedMeshRenderer: " + binding.RelativePath + " not found", (Object)null); } } } } public void ImmediatelySetValue(BlendShapeClip clip, float value) { BlendShapeBinding[] values = clip.Values; for (int i = 0; i < values.Length; i++) { BlendShapeBinding key = values[i]; if (m_blendShapeSetterMap.TryGetValue(key, out var value2)) { value2(key.Weight * value); } } } public void AccumulateValue(BlendShapeClip clip, float value) { BlendShapeBinding[] values = clip.Values; for (int i = 0; i < values.Length; i++) { BlendShapeBinding key = values[i]; if (m_blendShapeValueMap.TryGetValue(key, out var value2)) { float num = value2 + key.Weight * value; m_blendShapeValueMap[key] = Mathf.Clamp(num, 0f, 100f); } else { m_blendShapeValueMap[key] = key.Weight * value; } } } public void Apply() { foreach (KeyValuePair<BlendShapeBinding, float> item in m_blendShapeValueMap) { if (m_blendShapeSetterMap.TryGetValue(item.Key, out var value)) { value(item.Value); } } m_blendShapeValueMap.Clear(); } } [Serializable] public struct BlendShapeBinding : IEquatable<BlendShapeBinding> { public string RelativePath; public int Index; public float Weight; public override string ToString() { return $"{RelativePath}[{Index}]=>{Weight}"; } public bool Equals(BlendShapeBinding other) { if (string.Equals(RelativePath, other.RelativePath) && Index == other.Index) { return Weight.Equals(other.Weight); } return false; } public override bool Equals(object obj) { if (obj == null) { return false; } if (obj is BlendShapeBinding) { return Equals((BlendShapeBinding)obj); } return false; } public override int GetHashCode() { return (((((RelativePath != null) ? RelativePath.GetHashCode() : 0) * 397) ^ Index) * 397) ^ Weight.GetHashCode(); } } [Serializable] public struct MaterialValueBinding : IEquatable<MaterialValueBinding> { public string MaterialName; public string ValueName; public Vector4 TargetValue; public Vector4 BaseValue; public bool Equals(MaterialValueBinding other) { //IL_002d: 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) if (string.Equals(MaterialName, other.MaterialName) && string.Equals(ValueName, other.ValueName) && ((Vector4)(ref TargetValue)).Equals(other.TargetValue)) { return ((Vector4)(ref BaseValue)).Equals(other.BaseValue); } return false; } public override bool Equals(object obj) { if (obj == null) { return false; } if (obj is MaterialValueBinding) { return Equals((MaterialValueBinding)obj); } return false; } public override int GetHashCode() { return (((((((MaterialName != null) ? MaterialName.GetHashCode() : 0) * 397) ^ ((ValueName != null) ? ValueName.GetHashCode() : 0)) * 397) ^ ((object)Unsafe.As<Vector4, Vector4>(ref TargetValue)/*cast due to .constrained prefix*/).GetHashCode()) * 397) ^ ((object)Unsafe.As<Vector4, Vector4>(ref BaseValue)/*cast due to .constrained prefix*/).GetHashCode(); } } [CreateAssetMenu(menuName = "VRM/BlendShapeClip")] public class BlendShapeClip : ScriptableObject { [SerializeField] public string BlendShapeName = ""; [SerializeField] public BlendShapePreset Preset; [SerializeField] public BlendShapeBinding[] Values = new BlendShapeBinding[0]; [SerializeField] public MaterialValueBinding[] MaterialValues = new MaterialValueBinding[0]; [SerializeField] public bool IsBinary; public BlendShapeKey Key => BlendShapeKey.CreateFromClip(this); public void CopyFrom(BlendShapeClip src) { IsBinary = src.IsBinary; MaterialValues = src.MaterialValues.ToArray(); Values = src.Values.ToArray(); Preset = src.Preset; ((Object)this).name = ((Object)src).name; } } [Obsolete("Use VRMBlendShapeProxy")] public class BlendShapeClipHandler { private BlendShapeClip m_clip; private SkinnedMeshRenderer[] m_renderers; [Obsolete("Use Clip")] public BlendShapeClip Cilp => Clip; public BlendShapeClip Clip => m_clip; public float LastValue { get; private set; } public BlendShapeClipHandler(BlendShapeClip clip, Transform transform) { m_clip = clip; if ((Object)(object)m_clip != (Object)null && m_clip.Values != null && (Object)(object)transform != (Object)null) { m_renderers = m_clip.Values.Select((BlendShapeBinding x) => UnityExtensions.GetComponentOrNull<SkinnedMeshRenderer>((Component)(object)UnityExtensions.GetFromPath(transform, x.RelativePath))).ToArray(); } } public void Apply(float value) { LastValue = value; if ((Object)(object)m_clip == (Object)null || m_renderers == null) { return; } for (int i = 0; i < m_clip.Values.Length; i++) { BlendShapeBinding blendShapeBinding = m_clip.Values[i]; SkinnedMeshRenderer val = m_renderers[i]; if (blendShapeBinding.Index >= 0 && blendShapeBinding.Index < val.sharedMesh.blendShapeCount) { val.SetBlendShapeWeight(blendShapeBinding.Index, blendShapeBinding.Weight * value); } } } } [Serializable] public readonly struct BlendShapeKey : IEquatable<BlendShapeKey>, IComparable<BlendShapeKey> { private static readonly Dictionary<BlendShapePreset, string> PresetNameCacheDictionary = new Dictionary<BlendShapePreset, string>(); private static readonly string UnknownPresetPrefix = "Unknown_"; public readonly BlendShapePreset Preset; private readonly string m_id; public string Name { get; } private BlendShapeKey(string name, BlendShapePreset preset) { Preset = preset; if (Preset != BlendShapePreset.Unknown) { if (PresetNameCacheDictionary.TryGetValue(Preset, out var value)) { m_id = (Name = value); return; } m_id = (Name = Preset.ToString()); PresetNameCacheDictionary.Add(Preset, Name); } else { Name = ((!string.IsNullOrEmpty(name)) ? name : ""); m_id = UnknownPresetPrefix + Name; } } public static BlendShapeKey CreateFromPreset(BlendShapePreset preset) { return new BlendShapeKey("", preset); } public static BlendShapeKey CreateFromClip(BlendShapeClip clip) { if ((Object)(object)clip == (Object)null) { return default(BlendShapeKey); } return new BlendShapeKey(clip.BlendShapeName, clip.Preset); } public static BlendShapeKey CreateUnknown(string name) { return new BlendShapeKey(name, BlendShapePreset.Unknown); } public override string ToString() { return m_id.Replace(UnknownPresetPrefix, ""); } public bool Equals(BlendShapeKey other) { return m_id == other.m_id; } public override bool Equals(object obj) { if (obj is BlendShapeKey) { return Equals((BlendShapeKey)obj); } return false; } public override int GetHashCode() { return m_id.GetHashCode(); } public bool Match(BlendShapeClip clip) { return Equals(CreateFromClip(clip)); } public int CompareTo(BlendShapeKey other) { if (Preset != other.Preset) { return Preset - other.Preset; } return 0; } } public class BlendShapeMerger { private Dictionary<BlendShapeKey, BlendShapeClip> m_clipMap; private Dictionary<BlendShapeKey, float> m_valueMap; private BlendShapeBindingMerger m_blendShapeBindingMerger; private MaterialValueBindingMerger m_materialValueBindingMerger; public BlendShapeMerger(IEnumerable<BlendShapeClip> clips, Transform root) { m_clipMap = clips.ToDictionary((BlendShapeClip x) => BlendShapeKey.CreateFromClip(x), (BlendShapeClip x) => x); m_valueMap = new Dictionary<BlendShapeKey, float>(); m_blendShapeBindingMerger = new BlendShapeBindingMerger(m_clipMap, root); m_materialValueBindingMerger = new MaterialValueBindingMerger(m_clipMap, root); } public void Apply() { m_blendShapeBindingMerger.Apply(); m_materialValueBindingMerger.Apply(); } public void SetValues(IEnumerable<KeyValuePair<BlendShapeKey, float>> values) { foreach (KeyValuePair<BlendShapeKey, float> value in values) { AccumulateValue(value.Key, value.Value); } Apply(); } public void AccumulateValue(BlendShapeKey key, float value) { m_valueMap[key] = value; if (m_clipMap.TryGetValue(key, out var value2)) { if (value2.IsBinary) { value = Mathf.Round(value); } m_blendShapeBindingMerger.AccumulateValue(value2, value); m_materialValueBindingMerger.AccumulateValue(value2, value); } } public void ImmediatelySetValue(BlendShapeKey key, float value) { m_valueMap[key] = value; if (m_clipMap.TryGetValue(key, out var value2)) { if (value2.IsBinary) { value = Mathf.Round(value); } m_blendShapeBindingMerger.ImmediatelySetValue(value2, value); m_materialValueBindingMerger.ImmediatelySetValue(value2, value); } } public void SetValue(BlendShapeKey key, float value, bool immediately) { if (immediately) { ImmediatelySetValue(key, value); } else { AccumulateValue(key, value); } } public float GetValue(BlendShapeKey key) { if (!m_valueMap.TryGetValue(key, out var value)) { return 0f; } return value; } public void RestoreMaterialInitialValues(IEnumerable<BlendShapeClip> clips) { m_materialValueBindingMerger.RestoreMaterialInitialValues(clips); } } public class Blinker : MonoBehaviour { private VRMBlendShapeProxy m_blendShapes; [FormerlySerializedAs("m_interVal")] [SerializeField] public float Interval = 5f; [FormerlySerializedAs("m_closingTime")] [SerializeField] public float ClosingTime = 0.06f; [FormerlySerializedAs("m_openingSeconds")] [SerializeField] public float OpeningSeconds = 0.03f; [FormerlySerializedAs("m_closeSeconds")] [SerializeField] public float CloseSeconds = 0.1f; private Coroutine m_coroutine; private float m_nextRequest; private bool m_request; public bool Request { get { return m_request; } set { if (!(Time.time < m_nextRequest)) { m_request = value; m_nextRequest = Time.time + 1f; } } } private IEnumerator BlinkRoutine() { while (true) { float waitTime = Time.time + Random.value * Interval; while (waitTime > Time.time) { if (Request) { m_request = false; break; } yield return null; } float value = 0f; float closeSpeed = 1f / CloseSeconds; while (true) { value += Time.deltaTime * closeSpeed; if (value >= 1f) { break; } m_blendShapes.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.Blink), value); yield return null; } m_blendShapes.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.Blink), 1f); yield return (object)new WaitForSeconds(ClosingTime); value = 1f; float openSpeed = 1f / OpeningSeconds; while (true) { value -= Time.deltaTime * openSpeed; if (value < 0f) { break; } m_blendShapes.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.Blink), value); yield return null; } m_blendShapes.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.Blink), 0f); } } private void OnEnable() { m_blendShapes = UnityExtensions.GetComponentOrNull<VRMBlendShapeProxy>((Component)(object)this); m_coroutine = ((MonoBehaviour)this).StartCoroutine(BlinkRoutine()); } private void OnDisable() { if (m_coroutine != null) { ((MonoBehaviour)this).StopCoroutine(m_coroutine); m_coroutine = null; } } } internal class MaterialValueBindingMerger { [StructLayout(LayoutKind.Sequential, Size = 1)] private struct DictionaryKeyMaterialValueBindingComparer : IEqualityComparer<MaterialValueBinding> { public bool Equals(MaterialValueBinding x, MaterialValueBinding y) { //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_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) if (x.TargetValue == y.TargetValue && x.BaseValue == y.BaseValue && x.MaterialName == y.MaterialName) { return x.ValueName == y.ValueName; } return false; } public int GetHashCode(MaterialValueBinding obj) { return obj.GetHashCode(); } } private delegate void Setter(float value, bool firstValue); private struct MaterialTarget : IEquatable<MaterialTarget> { public string MaterialName; public string ValueName; public bool Equals(MaterialTarget other) { if (MaterialName == other.MaterialName) { return ValueName == other.ValueName; } return false; } public override bool Equals(object obj) { if (obj is MaterialTarget) { return Equals((MaterialTarget)obj); } return false; } public override int GetHashCode() { if (MaterialName == null || ValueName == null) { return 0; } return MaterialName.GetHashCode() + ValueName.GetHashCode(); } public static MaterialTarget Create(MaterialValueBinding binding) { return new MaterialTarget { MaterialName = binding.MaterialName, ValueName = binding.ValueName }; } } private static DictionaryKeyMaterialValueBindingComparer comparer; private Dictionary<string, Material> m_materialMap = new Dictionary<string, Material>(); private Dictionary<MaterialValueBinding, float> m_materialValueMap = new Dictionary<MaterialValueBinding, float>(comparer); private Dictionary<MaterialValueBinding, Setter> m_materialSetterMap = new Dictionary<MaterialValueBinding, Setter>(comparer); private HashSet<MaterialTarget> m_used = new HashSet<MaterialTarget>(); public MaterialValueBindingMerger(Dictionary<BlendShapeKey, BlendShapeClip> clipMap, Transform root) { Renderer val = default(Renderer); foreach (Transform item in UnityExtensions.Traverse(root)) { if (!((Component)item).TryGetComponent<Renderer>(ref val)) { continue; } foreach (Material item2 in val.sharedMaterials.Where((Material y) => (Object)(object)y != (Object)null)) { if (!string.IsNullOrEmpty(((Object)item2).name) && !m_materialMap.ContainsKey(((Object)item2).name)) { m_materialMap.Add(((Object)item2).name, item2); } } } foreach (KeyValuePair<BlendShapeKey, BlendShapeClip> item3 in clipMap) { MaterialValueBinding[] materialValues = item3.Value.MaterialValues; for (int num = 0; num < materialValues.Length; num++) { MaterialValueBinding binding = materialValues[num]; if (m_materialSetterMap.ContainsKey(binding)) { continue; } if (m_materialMap.TryGetValue(binding.MaterialName, out var target)) { if (binding.ValueName.EndsWith("_ST_S")) { string valueName = binding.ValueName.Substring(0, binding.ValueName.Length - 2); Setter value = delegate(float num2, bool firstValue) { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0076: 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_0081: 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_0014: 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_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_003f: 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_008b: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) Vector4 val2 = (firstValue ? (binding.BaseValue + (binding.TargetValue - binding.BaseValue) * num2) : (target.GetVector(valueName) + (binding.TargetValue - binding.BaseValue) * num2)); Vector4 vector = target.GetVector(valueName); vector.x = val2.x; vector.z = val2.z; target.SetVector(valueName, vector); }; m_materialSetterMap.Add(binding, value); } else if (binding.ValueName.EndsWith("_ST_T")) { string valueName2 = binding.ValueName.Substring(0, binding.ValueName.Length - 2); Setter value2 = delegate(float num2, bool firstValue) { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0076: 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_0081: 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_0014: 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_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_003f: 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_008b: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) Vector4 val2 = (firstValue ? (binding.BaseValue + (binding.TargetValue - binding.BaseValue) * num2) : (target.GetVector(valueName2) + (binding.TargetValue - binding.BaseValue) * num2)); Vector4 vector = target.GetVector(valueName2); vector.y = val2.y; vector.w = val2.w; target.SetVector(valueName2, vector); }; m_materialSetterMap.Add(binding, value2); } else { Setter value3 = delegate(float num2, bool firstValue) { //IL_0047: 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_005d: 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_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0014: 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_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_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_0072: 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_0085: Unknown result type (might be due to invalid IL or missing references) Vector4 val2 = (firstValue ? (binding.BaseValue + (binding.TargetValue - binding.BaseValue) * num2) : (target.GetVector(binding.ValueName) + (binding.TargetValue - binding.BaseValue) * num2)); target.SetColor(binding.ValueName, Color.op_Implicit(val2)); }; m_materialSetterMap.Add(binding, value3); } } else { UniGLTFLogger.Warning("material: " + binding.MaterialName + " not found", (Object)null); } } } } public void RestoreMaterialInitialValues(IEnumerable<BlendShapeClip> clips) { if (m_materialMap == null) { return; } foreach (BlendShapeClip clip in clips) { MaterialValueBinding[] materialValues = clip.MaterialValues; for (int i = 0; i < materialValues.Length; i++) { MaterialValueBinding materialValueBinding = materialValues[i]; if (m_materialMap.TryGetValue(materialValueBinding.MaterialName, out var _)) { string valueName = materialValueBinding.ValueName; if (valueName.EndsWith("_ST_S") || valueName.EndsWith("_ST_T")) { valueName = valueName.Substring(0, valueName.Length - 2); } } else { UniGLTFLogger.Warning(materialValueBinding.MaterialName + " not found", (Object)null); } } } } public void ImmediatelySetValue(BlendShapeClip clip, float value) { MaterialValueBinding[] materialValues = clip.MaterialValues; foreach (MaterialValueBinding key in materialValues) { if (m_materialSetterMap.TryGetValue(key, out var value2)) { value2(value, firstValue: true); } } } public void AccumulateValue(BlendShapeClip clip, float value) { MaterialValueBinding[] materialValues = clip.MaterialValues; foreach (MaterialValueBinding key in materialValues) { if (m_materialValueMap.TryGetValue(key, out var value2)) { m_materialValueMap[key] = value2 + value; } else { m_materialValueMap[key] = value; } } } public void Apply() { //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0095: 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_009e: 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_0106: 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_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: 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) m_used.Clear(); foreach (KeyValuePair<MaterialValueBinding, float> item2 in m_materialValueMap) { MaterialTarget item = MaterialTarget.Create(item2.Key); if (!m_used.Contains(item)) { if (m_materialMap.TryGetValue(item.MaterialName, out var value)) { Vector4 baseValue = item2.Key.BaseValue; string text = item.ValueName; if (text.EndsWith("_ST_S")) { text = text.Substring(0, text.Length - 2); Vector4 vector = value.GetVector(text); baseValue.y = vector.y; baseValue.w = vector.w; } else if (text.EndsWith("_ST_T")) { text = text.Substring(0, text.Length - 2); Vector4 vector2 = value.GetVector(text); baseValue.x = vector2.x; baseValue.z = vector2.z; } value.SetColor(text, Color.op_Implicit(baseValue)); } m_used.Add(item); } if (m_materialSetterMap.TryGetValue(item2.Key, out var value2)) { value2(item2.Value, firstValue: false); } } m_materialValueMap.Clear(); } } [Serializable] public class MaterialItem { public Material Material { get; private set; } public static MaterialItem Create(Material material) { return new MaterialItem { Material = material }; } } [Serializable] public class MeshPreviewItem { private Transform m_transform; public string Path { get; private set; } public SkinnedMeshRenderer SkinnedMeshRenderer { get; private set; } public Mesh Mesh { get; private set; } public string[] BlendShapeNames { get; private set; } public int BlendShapeCount => BlendShapeNames.Length; public Material[] Materials { get; private set; } public Vector3 Position => m_transform.position; public Quaternion Rotation => m_transform.rotation; private MeshPreviewItem(string path, Transform transform, Material[] materials) { Path = path; m_transform = transform; Materials = materials; } public void Bake(IEnumerable<BlendShapeBinding> values, float weight) { if ((Object)(object)SkinnedMeshRenderer == (Object)null) { return; } if (values != null) { for (int i = 0; i < BlendShapeCount; i++) { SkinnedMeshRenderer.SetBlendShapeWeight(i, 0f); } foreach (BlendShapeBinding value in values) { if (value.RelativePath == Path) { if (value.Index >= 0 && value.Index < SkinnedMeshRenderer.sharedMesh.blendShapeCount) { SkinnedMeshRenderer.SetBlendShapeWeight(value.Index, value.Weight * weight); } else { UniGLTFLogger.Warning($"Out of range {((Object)SkinnedMeshRenderer).name}: 0 <= {value.Index} < {SkinnedMeshRenderer.sharedMesh.blendShapeCount}", (Object)null); } } } } SkinnedMeshRenderer.BakeMesh(Mesh); } public static MeshPreviewItem Create(Transform t, Transform root, Func<Material, Material> getOrCreateMaterial) { //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Expected O, but got Unknown MeshFilter val = default(MeshFilter); MeshRenderer val2 = default(MeshRenderer); if (((Component)t).TryGetComponent<MeshFilter>(ref val) && ((Component)t).TryGetComponent<MeshRenderer>(ref val2)) { ((Renderer)val2).sharedMaterials = ((Renderer)val2).sharedMaterials.Select((Material x) => getOrCreateMaterial(x)).ToArray(); return new MeshPreviewItem(UnityExtensions.RelativePathFrom(t, root), t, ((Renderer)val2).sharedMaterials) { Mesh = val.sharedMesh }; } SkinnedMeshRenderer val3 = default(SkinnedMeshRenderer); if (((Component)t).TryGetComponent<SkinnedMeshRenderer>(ref val3)) { ((Renderer)val3).sharedMaterials = ((Renderer)val3).sharedMaterials.Select((Material x) => getOrCreateMaterial(x)).ToArray(); if (val3.sharedMesh.blendShapeCount > 0) { Mesh sharedMesh = val3.sharedMesh; return new MeshPreviewItem(UnityExtensions.RelativePathFrom(t, root), t, ((Renderer)val3).sharedMaterials) { SkinnedMeshRenderer = val3, Mesh = new Mesh(), BlendShapeNames = (from x in Enumerable.Range(0, sharedMesh.blendShapeCount) select sharedMesh.GetBlendShapeName(x)).ToArray() }; } return new MeshPreviewItem(UnityExtensions.RelativePathFrom(t, root), t, ((Renderer)val3).sharedMaterials) { Mesh = val3.sharedMesh }; } return null; } } public class PreviewSceneManager : MonoBehaviour { public GameObject Prefab; private MeshPreviewItem[] m_meshes; private MeshPreviewItem[] m_blendShapeMeshes; private Dictionary<string, MaterialItem> m_materialMap = new Dictionary<string, MaterialItem>(); private string[] m_rendererPathList; private string[] m_skinnedMeshRendererPathList; public Transform m_target; public IEnumerable<MeshPreviewItem> EnumRenderItems { get { if (m_meshes != null) { MeshPreviewItem[] meshes = m_meshes; for (int i = 0; i < meshes.Length; i++) { yield return meshes[i]; } } } } public string[] MaterialNames { get; private set; } public string[] RendererPathList => m_rendererPathList; public string[] SkinnedMeshRendererPathList => m_skinnedMeshRendererPathList; public Vector3 TargetPosition { get { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)m_target == (Object)null) { return new Vector3(0f, 1.4f, 0f); } return m_target.position + new Vector3(0f, 0.1f, 0f); } } public void Clean() { foreach (KeyValuePair<string, MaterialItem> item in m_materialMap) { Object.DestroyImmediate((Object)(object)item.Value.Material); } } private void Initialize(GameObject prefab) { Prefab = prefab; List<string> materialNames = new List<string>(); Dictionary<Material, Material> map = new Dictionary<Material, Material>(); Func<Material, Material> getOrCreateMaterial = delegate(Material src) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown if ((Object)(object)src == (Object)null) { return (Material)null; } if (string.IsNullOrEmpty(((Object)src).name)) { return (Material)null; } if (!map.TryGetValue(src, out var value)) { value = new Material(src); map.Add(src, value); materialNames.Add(((Object)src).name); m_materialMap.Add(((Object)src).name, MaterialItem.Create(value)); } return value; }; m_meshes = (from x in UnityExtensions.Traverse(((Component)this).transform) select MeshPreviewItem.Create(x, ((Component)this).transform, getOrCreateMaterial) into x where x != null select x).ToArray(); MaterialNames = materialNames.ToArray(); m_blendShapeMeshes = m_meshes.Where((MeshPreviewItem x) => (Object)(object)x.SkinnedMeshRenderer != (Object)null && x.SkinnedMeshRenderer.sharedMesh.blendShapeCount > 0).ToArray(); m_rendererPathList = m_meshes.Select((MeshPreviewItem x) => x.Path).ToArray(); m_skinnedMeshRendererPathList = (from x in m_meshes where (Object)(object)x.SkinnedMeshRenderer != (Object)null select x.Path).ToArray(); Animator val = default(Animator); if (((Component)this).TryGetComponent<Animator>(ref val)) { Transform boneTransform = val.GetBoneTransform((HumanBodyBones)10); if ((Object)(object)boneTransform != (Object)null) { m_target = boneTransform; } } } public string[] GetBlendShapeNames(int blendShapeMeshIndex) { if (blendShapeMeshIndex >= 0 && blendShapeMeshIndex < m_blendShapeMeshes.Length) { return m_blendShapeMeshes[blendShapeMeshIndex].BlendShapeNames; } return null; } public MaterialItem GetMaterialItem(string materialName) { if (!m_materialMap.TryGetValue(materialName, out var value)) { return null; } return value; } public void SetupCamera(Camera camera, Vector3 target, float yaw, float pitch, Vector3 position) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003c: 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_0043: 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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006d: 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_006f: 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_0084: 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) camera.backgroundColor = Color.gray; camera.clearFlags = (CameraClearFlags)2; camera.fieldOfView = 27f; camera.nearClipPlane = 0.3f; camera.farClipPlane = (0f - position.z) * 2.1f; Matrix4x4 val = Matrix4x4.Translate(position); Matrix4x4 val2 = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(pitch, yaw, 0f), Vector3.one) * val; ((Component)camera).transform.position = target + UnityExtensions.ExtractPosition(val2); ((Component)camera).transform.rotation = UnityExtensions.ExtractRotation(val2); } } [DisallowMultipleComponent] public class VRMBlendShapeProxy : MonoBehaviour, IVRMComponent { [SerializeField] public BlendShapeAvatar BlendShapeAvatar; private BlendShapeMerger m_merger; private bool m_destroyed; public void OnImported(VRMImporterContext context) { throw new NotImplementedException(); } private void OnDestroy() { m_destroyed = true; if (m_merger != null) { m_merger.RestoreMaterialInitialValues(BlendShapeAvatar.Clips); } } private void Start() { if (!m_destroyed && !((Object)(object)BlendShapeAvatar == (Object)null)) { m_merger = new BlendShapeMerger(BlendShapeAvatar.Clips, ((Component)this).transform); } } public void Reinitialize() { Start(); } public void ImmediatelySetValue(BlendShapeKey key, float value) { if (m_merger != null) { m_merger.ImmediatelySetValue(key, value); } } public void AccumulateValue(BlendShapeKey key, float value) { if (m_merger != null) { m_merger.AccumulateValue(key, value); } } public float GetValue(BlendShapeKey key) { if (m_merger == null) { return 0f; } return m_merger.GetValue(key); } public IEnumerable<KeyValuePair<BlendShapeKey, float>> GetValues() { if (m_merger == null || !((Object)(object)BlendShapeAvatar != (Object)null)) { yield break; } foreach (BlendShapeClip clip in BlendShapeAvatar.Clips) { BlendShapeKey key = BlendShapeKey.CreateFromClip(clip); yield return new KeyValuePair<BlendShapeKey, float>(key, m_merger.GetValue(key)); } } public void SetValues(IEnumerable<KeyValuePair<BlendShapeKey, float>> values) { if (m_merger != null) { m_merger.SetValues(values); } } public void Apply() { if (m_merger != null) { m_merger.Apply(); } } } public static class VRMBlendShapeProxyExtensions { [Obsolete("Use BlendShapeKey.CreateFromPreset")] public static float GetValue(this VRMBlendShapeProxy proxy, BlendShapePreset key) { return proxy.GetValue(BlendShapeKey.CreateFromPreset(key)); } [Obsolete("Use BlendShapeKey.CreateUnknown")] public static float GetValue(this VRMBlendShapeProxy proxy, string key) { return proxy.GetValue(BlendShapeKey.CreateUnknown(key)); } [Obsolete("Use ImmediatelySetValue")] public static void SetValue(this VRMBlendShapeProxy proxy, BlendShapePreset key, float value) { proxy.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(key), value); } [Obsolete("Use BlendShapeKey.CreateFromPreset")] public static void ImmediatelySetValue(this VRMBlendShapeProxy proxy, BlendShapePreset key, float value) { proxy.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(key), value); } [Obsolete("Use BlendShapeKey.CreateFromPreset")] public static void AccumulateValue(this VRMBlendShapeProxy proxy, BlendShapePreset key, float value) { proxy.AccumulateValue(BlendShapeKey.CreateFromPreset(key), value); } [Obsolete("Use ImmediatelySetValue")] public static void SetValue(this VRMBlendShapeProxy proxy, string key, float value) { proxy.ImmediatelySetValue(BlendShapeKey.CreateUnknown(key), value); } [Obsolete("Use BlendShapeKey.CreateUnknown")] public static void ImmediatelySetValue(this VRMBlendShapeProxy proxy, string key, float value) { proxy.ImmediatelySetValue(BlendShapeKey.CreateUnknown(key), value); } [Obsolete("Use BlendShapeKey.CreateUnknown")] public static void AccumulateValue(this VRMBlendShapeProxy proxy, string key, float value) { proxy.AccumulateValue(BlendShapeKey.CreateUnknown(key), value); } [Obsolete("Use ImmediatelySetValue")] public static void SetValue(this VRMBlendShapeProxy proxy, BlendShapeKey key, float value) { proxy.ImmediatelySetValue(key, value); } [Obsolete("Use ImmediatelySetValue or AccumulateValue")] public static void SetValue(this VRMBlendShapeProxy proxy, BlendShapePreset key, float value, bool apply) { if (apply) { proxy.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(key), value); } else { proxy.AccumulateValue(BlendShapeKey.CreateFromPreset(key), value); } } [Obsolete("Use ImmediatelySetValue or AccumulateValue")] public static void SetValue(this VRMBlendShapeProxy proxy, string key, float value, bool apply) { if (apply) { proxy.ImmediatelySetValue(BlendShapeKey.CreateUnknown(key), value); } else { proxy.AccumulateValue(BlendShapeKey.CreateUnknown(key), value); } } [Obsolete("Use ImmediatelySetValue or AccumulateValue")] public static void SetValue(this VRMBlendShapeProxy proxy, BlendShapeKey key, float value, bool apply) { if (apply) { proxy.ImmediatelySetValue(key, value); } else { proxy.AccumulateValue(key, value); } } } public static class EnumUtil { public static T TryParseOrDefault<T>(string src, T defaultValue = default(T)) where T : struct { try { return (T)Enum.Parse(typeof(T), src, ignoreCase: true); } catch (Exception) { return defaultValue; } } } public static class EnumExtensions { public static HumanBodyBones ToUnityBone(this VRMBone val) { return (HumanBodyBones)(val switch { VRMBone.hips => 0, VRMBone.leftUpperLeg => 1, VRMBone.rightUpperLeg => 2, VRMBone.leftLowerLeg => 3, VRMBone.rightLowerLeg => 4, VRMBone.leftFoot => 5, VRMBone.rightFoot => 6, VRMBone.spine => 7, VRMBone.chest => 8, VRMBone.neck => 9, VRMBone.head => 10, VRMBone.leftShoulder => 11, VRMBone.rightShoulder => 12, VRMBone.leftUpperArm => 13, VRMBone.rightUpperArm => 14, VRMBone.leftLowerArm => 15, VRMBone.rightLowerArm => 16, VRMBone.leftHand => 17, VRMBone.rightHand => 18, VRMBone.leftToes => 19, VRMBone.rightToes => 20, VRMBone.leftEye => 21, VRMBone.rightEye => 22, VRMBone.jaw => 23, VRMBone.leftThumbProximal => 24, VRMBone.leftThumbIntermediate => 25, VRMBone.leftThumbDistal => 26, VRMBone.leftIndexProximal => 27, VRMBone.leftIndexIntermediate => 28, VRMBone.leftIndexDistal => 29, VRMBone.leftMiddleProximal => 30, VRMBone.leftMiddleIntermediate => 31, VRMBone.leftMiddleDistal => 32, VRMBone.leftRingProximal => 33, VRMBone.leftRingIntermediate => 34, VRMBone.leftRingDistal => 35, VRMBone.leftLittleProximal => 36, VRMBone.leftLittleIntermediate => 37, VRMBone.leftLittleDistal => 38, VRMBone.rightThumbProximal => 39, VRMBone.rightThumbIntermediate => 40, VRMBone.rightThumbDistal => 41, VRMBone.rightIndexProximal => 42, VRMBone.rightIndexIntermediate => 43, VRMBone.rightIndexDistal => 44, VRMBone.rightMiddleProximal => 45, VRMBone.rightMiddleIntermediate => 46, VRMBone.rightMiddleDistal => 47, VRMBone.rightRingProximal => 48, VRMBone.rightRingIntermediate => 49, VRMBone.rightRingDistal => 50, VRMBone.rightLittleProximal => 51, VRMBone.rightLittleIntermediate => 52, VRMBone.rightLittleDistal => 53, VRMBone.upperChest => 54, _ => throw new InvalidOperationException(), }); } public static VRMBone ToVrmBone(this HumanBodyBones val) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Expected I4, but got Unknown return (int)val switch { 0 => VRMBone.hips, 1 => VRMBone.leftUpperLeg, 2 => VRMBone.rightUpperLeg, 3 => VRMBone.leftLowerLeg, 4 => VRMBone.rightLowerLeg, 5 => VRMBone.leftFoot, 6 => VRMBone.rightFoot, 7 => VRMBone.spine, 8 => VRMBone.chest, 9 => VRMBone.neck, 10 => VRMBone.head, 11 => VRMBone.leftShoulder, 12 => VRMBone.rightShoulder, 13 => VRMBone.leftUpperArm, 14 => VRMBone.rightUpperArm, 15 => VRMBone.leftLowerArm, 16 => VRMBone.rightLowerArm, 17 => VRMBone.leftHand, 18 => VRMBone.rightHand, 19 => VRMBone.leftToes, 20 => VRMBone.rightToes, 21 => VRMBone.leftEye, 22 => VRMBone.rightEye, 23 => VRMBone.jaw, 24 => VRMBone.leftThumbProximal, 25 => VRMBone.leftThumbIntermediate, 26 => VRMBone.leftThumbDistal, 27 => VRMBone.leftIndexProximal, 28 => VRMBone.leftIndexIntermediate, 29 => VRMBone.leftIndexDistal, 30 => VRMBone.leftMiddleProximal, 31 => VRMBone.leftMiddleIntermediate, 32 => VRMBone.leftMiddleDistal, 33 => VRMBone.leftRingProximal, 34 => VRMBone.leftRingIntermediate, 35 => VRMBone.leftRingDistal, 36 => VRMBone.leftLittleProximal, 37 => VRMBone.leftLittleIntermediate, 38 => VRMBone.leftLittleDistal, 39 => VRMBone.rightThumbProximal, 40 => VRMBone.rightThumbIntermediate, 41 => VRMBone.rightThumbDistal, 42 => VRMBone.rightIndexProximal, 43 => VRMBone.rightIndexIntermediate, 44 => VRMBone.rightIndexDistal, 45 => VRMBone.rightMiddleProximal, 46 => VRMBone.rightMiddleIntermediate, 47 => VRMBone.rightMiddleDistal, 48 => VRMBone.rightRingProximal, 49 => VRMBone.rightRingIntermediate, 50 => VRMBone.rightRingDistal, 51 => VRMBone.rightLittleProximal, 52 => VRMBone.rightLittleIntermediate, 53 => VRMBone.rightLittleDistal, 54 => VRMBone.upperChest, _ => throw new InvalidOperationException(), }; } } public static class VRMBoneExtensions { public static VRMBone FromHumanBodyBone(this HumanBodyBones human) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return human.ToVrmBone(); } public static HumanBodyBones ToHumanBodyBone(this VRMBone bone) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return bone.ToUnityBone(); } } public static class VRMHumanoidExtensions { public static void SetNodeIndex(this glTF_VRM_Humanoid self, HumanBodyBones _key, int node) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) VRMBone key = _key.FromHumanBodyBone(); int num = self.humanBones.FindIndex((glTF_VRM_HumanoidBone x) => x.vrmBone == key); if (num == -1 || self.humanBones[num] == null) { self.humanBones.Add(new glTF_VRM_HumanoidBone { vrmBone = key, node = node }); } else { self.humanBones[num].node = node; } } public static void Apply(this glTF_VRM_Humanoid self, AvatarDescription desc, List<Transform> nodes) { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: 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_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: 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_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) self.armStretch = desc.armStretch; self.legStretch = desc.legStretch; self.upperArmTwist = desc.upperArmTwist; self.lowerArmTwist = desc.lowerArmTwist; self.upperLegTwist = desc.upperLegTwist; self.lowerLegTwist = desc.lowerArmTwist; self.feetSpacing = desc.feetSpacing; self.hasTranslationDoF = desc.hasTranslationDoF; BoneLimit[] human = desc.human; for (int i = 0; i < human.Length; i++) { BoneLimit x = human[i]; int num = nodes.FindIndex((Transform y) => ((Object)y).name == x.boneName); if (num >= 0) { VRMBone key = x.humanBone.FromHumanBodyBone(); glTF_VRM_HumanoidBone glTF_VRM_HumanoidBone2 = self.humanBones.FirstOrDefault((glTF_VRM_HumanoidBone y) => y.vrmBone == key); if (glTF_VRM_HumanoidBone2 == null) { glTF_VRM_HumanoidBone2 = new glTF_VRM_HumanoidBone { vrmBone = key }; self.humanBones.Add(glTF_VRM_HumanoidBone2); } glTF_VRM_HumanoidBone2.node = num; glTF_VRM_HumanoidBone2.useDefaultValues = x.useDefaultValues; glTF_VRM_HumanoidBone2.axisLength = x.axisLength; glTF_VRM_HumanoidBone2.center = x.center; glTF_VRM_HumanoidBone2.max = x.max; glTF_VRM_HumanoidBone2.min = x.min; } } } public static AvatarDescription ToDescription(this glTF_VRM_Humanoid self, List<Transform> nodes) { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: 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) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: 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_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: 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) AvatarDescription val = ScriptableObject.CreateInstance<AvatarDescription>(); val.upperLegTwist = self.upperLegTwist; val.lowerLegTwist = self.lowerLegTwist; val.upperArmTwist = self.upperArmTwist; val.lowerArmTwist = self.lowerArmTwist; val.armStretch = self.armStretch; val.legStretch = self.legStretch; val.hasTranslationDoF = self.hasTranslationDoF; BoneLimit[] array = (BoneLimit[])(object)new BoneLimit[self.humanBones.Count]; int num = 0; foreach (glTF_VRM_HumanoidBone humanBone in self.humanBones) { array[num] = new BoneLimit { useDefaultValues = humanBone.useDefaultValues, axisLength = humanBone.axisLength, center = humanBone.center, min = humanBone.min, max = humanBone.max, humanBone = humanBone.vrmBone.ToHumanBodyBone() }; if (humanBone.node >= 0 && humanBone.node < nodes.Count) { array[num].boneName = ((Object)nodes[humanBone.node]).name; } num++; } val.human = array; return val; } } public static class glTF_VRMExtensions { [Obsolete("Use Create(root, meshes, binding)")] public static glTF_VRM_BlendShapeBind Cerate(Transform root, BlendShapeBinding binding, gltfExporter exporter) { return Create(root, binding, exporter); } public static glTF_VRM_BlendShapeBind Create(Transform root, BlendShapeBinding binding, gltfExporter exporter) { if ((Object)(object)root == (Object)null || exporter == null) { return null; } if (string.IsNullOrEmpty(binding.RelativePath)) { UniGLTFLogger.Warning("binding.RelativePath is null", (Object)null); return null; } Transform val = ((Component)root).transform.Find(binding.RelativePath); if ((Object)(object)val == (Object)null) { string name = binding.RelativePath.Split('/').Last(); val = ((IEnumerable<Transform>)((Component)root).GetComponentsInChildren<Transform>()).FirstOrDefault((Func<Transform, bool>)((Transform x) => ((Object)x).name == name)); if ((Object)(object)val == (Object)null) { UniGLTFLogger.Warning(binding.RelativePath + " not found", (Object)null); return null; } UniGLTFLogger.Warning("fall back '" + binding.RelativePath + "' => '" + UnityExtensions.RelativePathFrom(val, root) + "'", (Object)null); } SkinnedMeshRenderer val2 = default(SkinnedMeshRenderer); if (((Component)val).TryGetComponent<SkinnedMeshRenderer>(ref val2)) { if (!((Component)val2).gameObject.activeInHierarchy) { return null; } Mesh sharedMesh = val2.sharedMesh; int num = exporter.Meshes.IndexOf(sharedMesh); if (num == -1) { return null; } if (!exporter.MeshBlendShapeIndexMap.TryGetValue(sharedMesh, out var value)) { return null; } if (!value.TryGetValue(binding.Index, out var value2)) { return null; } return new glTF_VRM_BlendShapeBind { mesh = num, index = value2, weight = binding.Weight }; } return null; } public static void Add(this glTF_VRM_BlendShapeMaster master, BlendShapeClip clip, gltfExporter exporter) { master.blendShapeGroups.Add(clip.Serialize(exporter)); } public static glTF_VRM_BlendShapeGroup Serialize(this BlendShapeClip clip, gltfExporter exporter) { List<glTF_VRM_BlendShapeBind> list = new List<glTF_VRM_BlendShapeBind>(); if (clip.Values != null && exporter != null) { BlendShapeBinding[] values = clip.Values; foreach (BlendShapeBinding binding in values) { glTF_VRM_BlendShapeBind glTF_VRM_BlendShapeBind2 = Create(exporter.Copy.transform, binding, exporter); if (glTF_VRM_BlendShapeBind2 != null) { list.Add(glTF_VRM_BlendShapeBind2); } } } List<glTF_VRM_MaterialValueBind> list2 = new List<glTF_VRM_MaterialValueBind>(); if (clip.MaterialValues != null) { list2.AddRange(clip.MaterialValues.Select((MaterialValueBinding y) => new glTF_VRM_MaterialValueBind { materialName = y.MaterialName, propertyName = y.ValueName, targetValue = UnityExtensions.ToArray(y.TargetValue) })); } return new glTF_VRM_BlendShapeGroup { name = clip.BlendShapeName, presetName = clip.Preset.ToString().ToLowerInvariant(), isBinary = clip.IsBinary, binds = list, materialValues = list2 }; } public static
valheim_Data/Managed/VRM10.dll
Decompiled 20 hours 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; 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.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using UniGLTF; using UniGLTF.Extensions.VRMC_materials_hdr_emissiveMultiplier; using UniGLTF.Extensions.VRMC_materials_mtoon; using UniGLTF.Extensions.VRMC_node_constraint; using UniGLTF.Extensions.VRMC_springBone; using UniGLTF.Extensions.VRMC_springBone_extended_collider; using UniGLTF.Extensions.VRMC_springBone_limit; using UniGLTF.Extensions.VRMC_vrm; using UniGLTF.Extensions.VRMC_vrm_animation; using UniGLTF.Extensions.VRMC_vrm_expressions_node_transform; using UniGLTF.MeshUtility; using UniGLTF.SpringBoneJobs; using UniGLTF.SpringBoneJobs.Blittables; using UniGLTF.SpringBoneJobs.InputPorts; using UniGLTF.Utils; using UniHumanoid; using UniJSON; using UniVRM10.FastSpringBones; using UniVRM10.Migration; using Unity.Collections; using Unity.Collections.LowLevel.Unsafe; using Unity.Jobs; using Unity.Mathematics; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Serialization; using UnityEngine.Timeline; using VRM10.MToon10; using VRM10.MToon10.MToon0X; using VrmLib; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: InternalsVisibleTo("VRM10.Tests")] [assembly: InternalsVisibleTo("VRM10.Tests.PlayMode")] [assembly: AssemblyVersion("0.0.0.0")] [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[13620] { 0, 0, 0, 1, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 67, 111, 110, 115, 116, 82, 97, 105, 110, 116, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 65, 120, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 77, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 68, 101, 115, 116, 105, 110, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 72, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 83, 111, 117, 114, 99, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 72, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 73, 86, 114, 109, 49, 48, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 84, 82, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 84, 114, 97, 110, 115, 102, 111, 114, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 86, 114, 109, 49, 48, 65, 105, 109, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 86, 114, 109, 49, 48, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 86, 114, 109, 49, 48, 82, 111, 108, 108, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 92, 86, 114, 109, 49, 48, 82, 111, 116, 97, 116, 105, 111, 110, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 68, 101, 102, 97, 117, 108, 116, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 86, 97, 108, 105, 100, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 75, 101, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 72, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 77, 101, 114, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 73, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 86, 97, 108, 105, 100, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 73, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 86, 97, 108, 105, 100, 97, 116, 111, 114, 70, 97, 99, 116, 111, 114, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 73, 76, 111, 111, 107, 65, 116, 69, 121, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 65, 112, 112, 108, 105, 99, 97, 98, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 77, 97, 116, 101, 114, 105, 97, 108, 67, 111, 108, 111, 114, 66, 105, 110, 100, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 73, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 77, 97, 116, 101, 114, 105, 97, 108, 85, 86, 66, 105, 110, 100, 105, 110, 103, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 66, 105, 110, 100, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 92, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 102, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 92, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 106, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 92, 82, 117, 110, 116, 105, 109, 101, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 66, 105, 110, 100, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 78, 111, 100, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 66, 105, 110, 100, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 78, 111, 100, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 80, 114, 101, 118, 105, 101, 119, 92, 80, 114, 101, 118, 105, 101, 119, 77, 101, 115, 104, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 83, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 80, 114, 101, 118, 105, 101, 119, 92, 80, 114, 101, 118, 105, 101, 119, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 80, 114, 101, 118, 105, 101, 119, 77, 97, 116, 101, 114, 105, 97, 108, 73, 116, 101, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 92, 86, 82, 77, 49, 48, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 92, 82, 101, 110, 100, 101, 114, 101, 114, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 70, 108, 97, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 92, 86, 114, 109, 49, 48, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 76, 97, 121, 101, 114, 83, 101, 116, 116, 105, 110, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 76, 111, 111, 107, 65, 116, 92, 67, 117, 114, 118, 101, 77, 97, 112, 112, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 76, 111, 111, 107, 65, 116, 92, 73, 76, 111, 111, 107, 65, 116, 69, 121, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 76, 111, 111, 107, 65, 116, 92, 76, 111, 111, 107, 65, 116, 69, 121, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 86, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 76, 111, 111, 107, 65, 116, 92, 76, 111, 111, 107, 65, 116, 69, 121, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 65, 112, 112, 108, 105, 99, 97, 98, 108, 101, 84, 111, 66, 111, 110, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 76, 111, 111, 107, 65, 116, 92, 76, 111, 111, 107, 65, 116, 69, 121, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 65, 112, 112, 108, 105, 99, 97, 98, 108, 101, 84, 111, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 76, 111, 111, 107, 65, 116, 92, 76, 111, 111, 107, 65, 116, 73, 110, 112, 117, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 76, 111, 111, 107, 65, 116, 92, 77, 97, 116, 114, 105, 120, 52, 120, 52, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 80, 114, 101, 102, 97, 98, 82, 101, 108, 97, 116, 101, 100, 83, 99, 114, 105, 112, 116, 97, 98, 108, 101, 79, 98, 106, 101, 99, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 86, 82, 77, 49, 48, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 86, 82, 77, 49, 48, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 100, 101, 114, 71, 114, 111, 117, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 86, 82, 77, 49, 48, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 105, 110, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 86, 82, 77, 49, 48, 83, 112, 114, 105, 110, 103, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 92, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 92, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 92, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 92, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 76, 111, 111, 107, 65, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 72, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 92, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 77, 101, 116, 97, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 72, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 73, 110, 115, 116, 97, 110, 99, 101, 92, 86, 114, 109, 49, 48, 73, 110, 115, 116, 97, 110, 99, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 73, 110, 115, 116, 97, 110, 99, 101, 92, 86, 114, 109, 49, 48, 73, 110, 115, 116, 97, 110, 99, 101, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 86, 114, 109, 49, 48, 67, 111, 110, 116, 114, 111, 108, 66, 111, 110, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 92, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 66, 117, 102, 102, 101, 114, 70, 97, 99, 116, 111, 114, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 92, 73, 86, 114, 109, 49, 48, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 100, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 92, 73, 86, 114, 109, 49, 48, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 95, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 92, 86, 114, 109, 49, 48, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 103, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 92, 86, 114, 109, 49, 48, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 105, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 92, 86, 114, 109, 49, 48, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 83, 116, 97, 110, 100, 97, 108, 111, 110, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 113, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 92, 86, 114, 109, 49, 48, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 83, 116, 97, 110, 100, 97, 108, 111, 110, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 94, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 92, 86, 114, 109, 49, 48, 78, 111, 112, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 92, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 76, 111, 111, 107, 65, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 110, 115, 116, 97, 110, 99, 101, 92, 73, 86, 114, 109, 49, 48, 65, 110, 105, 109, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 110, 115, 116, 97, 110, 99, 101, 92, 86, 114, 109, 49, 48, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 110, 115, 116, 97, 110, 99, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 110, 115, 116, 97, 110, 99, 101, 92, 86, 114, 109, 49, 48, 80, 111, 115, 101, 76, 111, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 109, 112, 111, 110, 101, 110, 116, 115, 92, 86, 114, 109, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 110, 115, 116, 97, 110, 99, 101, 92, 86, 114, 109, 49, 48, 84, 80, 111, 115, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 65, 110, 105, 109, 97, 116, 111, 114, 80, 111, 115, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 66, 111, 110, 101, 73, 110, 105, 116, 105, 97, 108, 82, 111, 116, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 73, 78, 111, 114, 109, 97, 108, 105, 122, 101, 100, 80, 111, 115, 101, 65, 112, 112, 108, 105, 99, 97, 98, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 73, 78, 111, 114, 109, 97, 108, 105, 122, 101, 100, 80, 111, 115, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 59, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 73, 84, 80, 111, 115, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 72, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 73, 110, 105, 116, 105, 97, 108, 82, 111, 116, 97, 116, 105, 111, 110, 80, 111, 115, 101, 80, 114, 111, 118, 105, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 73, 110, 105, 116, 105, 97, 108, 82, 111, 116, 97, 116, 105, 111, 110, 115, 92, 88, 82, 95, 69, 88, 84, 95, 104, 97, 110, 100, 95, 116, 114, 97, 99, 107, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 73, 110, 105, 116, 105, 97, 108, 82, 111, 116, 97, 116, 105, 111, 110, 115, 92, 88, 82, 95, 70, 66, 95, 98, 111, 100, 121, 95, 116, 114, 97, 99, 107, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 92, 86, 114, 109, 49, 48, 82, 101, 116, 97, 114, 103, 101, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 110, 117, 109, 70, 108, 97, 103, 115, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 92, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 8, 0, 0, 0, 59, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 92, 70, 111, 114, 109, 97, 116, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 92, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 115, 92, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 115, 92, 70, 111, 114, 109, 97, 116, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 115, 92, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 115, 78, 111, 100, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 92, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 115, 78, 111, 100, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 92, 70, 111, 114, 109, 97, 116, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 78, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 115, 78, 111, 100, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 92, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 77, 84, 111, 111, 110, 92, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 77, 84, 111, 111, 110, 92, 70, 111, 114, 109, 97, 116, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 77, 84, 111, 111, 110, 92, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 8, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 70, 111, 114, 109, 97, 116, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 92, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 69, 120, 116, 101, 110, 100, 101, 100, 67, 111, 108, 108, 105, 100, 101, 114, 92, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 69, 120, 116, 101, 110, 100, 101, 100, 67, 111, 108, 108, 105, 100, 101, 114, 92, 70, 111, 114, 109, 97, 116, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 80, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 69, 120, 116, 101, 110, 100, 101, 100, 67, 111, 108, 108, 105, 100, 101, 114, 92, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 71, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 76, 105, 109, 105, 116, 92, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 65, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 76, 105, 109, 105, 116, 92, 70, 111, 114, 109, 97, 116, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 76, 105, 109, 105, 116, 92, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 59, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 86, 114, 109, 92, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 15, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 86, 114, 109, 92, 70, 111, 114, 109, 97, 116, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 86, 114, 109, 92, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 46, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 84, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 86, 114, 109, 72, 117, 109, 97, 110, 111, 105, 100, 66, 111, 110, 101, 115, 92, 86, 114, 109, 49, 48, 72, 117, 109, 97, 110, 111, 105, 100, 66, 111, 110, 101, 65, 116, 116, 114, 105, 98, 117, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 88, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 70, 111, 114, 109, 97, 116, 92, 86, 114, 109, 72, 117, 109, 97, 110, 111, 105, 100, 66, 111, 110, 101, 115, 92, 86, 114, 109, 49, 48, 72, 117, 109, 97, 110, 111, 105, 100, 66, 111, 110, 101, 83, 112, 101, 99, 105, 102, 105, 99, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 65, 114, 114, 97, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 73, 110, 100, 101, 120, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 91, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 49, 48, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 106, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 49, 48, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 102, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 49, 48, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 106, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 66, 117, 105, 108, 116, 73, 110, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 66, 117, 105, 108, 116, 73, 110, 86, 114, 109, 49, 48, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 85, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 85, 114, 112, 86, 114, 109, 49, 48, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 81, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 85, 82, 80, 92, 69, 120, 112, 111, 114, 116, 92, 85, 114, 112, 86, 114, 109, 49, 48, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 96, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 85, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 85, 114, 112, 86, 114, 109, 49, 48, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 92, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 85, 82, 80, 92, 73, 109, 112, 111, 114, 116, 92, 85, 114, 112, 86, 114, 109, 49, 48, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 85, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 86, 114, 109, 49, 48, 77, 97, 116, 101, 114, 105, 97, 108, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 86, 114, 109, 49, 48, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 85, 116, 105, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 97, 116, 101, 114, 105, 97, 108, 92, 86, 114, 109, 49, 48, 77, 97, 116, 101, 114, 105, 97, 108, 69, 120, 112, 111, 114, 116, 101, 114, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 5, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 111, 100, 101, 108, 92, 67, 111, 112, 121, 73, 110, 100, 105, 99, 101, 115, 74, 111, 98, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 111, 100, 101, 108, 92, 73, 110, 116, 101, 114, 108, 101, 97, 118, 101, 77, 101, 115, 104, 86, 101, 114, 116, 105, 99, 101, 115, 74, 111, 98, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 111, 100, 101, 108, 92, 77, 101, 115, 104, 82, 101, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 111, 100, 101, 108, 92, 77, 101, 115, 104, 86, 101, 114, 116, 101, 120, 48, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 111, 100, 101, 108, 92, 77, 101, 115, 104, 86, 101, 114, 116, 101, 120, 49, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 111, 100, 101, 108, 92, 77, 101, 115, 104, 86, 101, 114, 116, 101, 120, 50, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 111, 100, 101, 108, 92, 77, 101, 115, 104, 86, 101, 114, 116, 101, 120, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 111, 100, 101, 108, 92, 77, 101, 115, 104, 87, 114, 105, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 111, 100, 101, 108, 92, 77, 111, 100, 101, 108, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 77, 111, 100, 101, 108, 92, 77, 111, 100, 101, 108, 82, 101, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 70, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 92, 86, 114, 109, 49, 48, 77, 84, 111, 111, 110, 84, 101, 120, 116, 117, 114, 101, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 84, 101, 120, 116, 117, 114, 101, 92, 86, 114, 109, 49, 48, 84, 101, 120, 116, 117, 114, 101, 68, 101, 115, 99, 114, 105, 112, 116, 111, 114, 71, 101, 110, 101, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 51, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 85, 110, 105, 116, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 42, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 49, 48, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 46, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 49, 48, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 51, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 49, 48, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 49, 48, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 49, 48, 71, 101, 111, 109, 101, 116, 114, 121, 66, 97, 99, 107, 117, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 49, 48, 73, 109, 112, 111, 114, 116, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 50, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 49, 48, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 65, 110, 105, 109, 97, 116, 105, 111, 110, 68, 97, 116, 97, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 65, 110, 105, 109, 97, 116, 105, 111, 110, 69, 120, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 73, 79, 92, 86, 114, 109, 65, 110, 105, 109, 97, 116, 105, 111, 110, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 92, 86, 114, 109, 49, 48, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 82, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 76, 101, 103, 97, 99, 121, 85, 110, 108, 105, 116, 77, 97, 116, 101, 114, 105, 97, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 77, 84, 111, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 75, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 85, 116, 105, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 80, 98, 114, 77, 97, 116, 101, 114, 105, 97, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 93, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 85, 110, 108, 105, 116, 84, 114, 97, 110, 115, 112, 97, 114, 101, 110, 116, 90, 87, 114, 105, 116, 101, 77, 97, 116, 101, 114, 105, 97, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 79, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 86, 114, 109, 48, 88, 77, 84, 111, 111, 110, 84, 101, 120, 116, 117, 114, 101, 73, 110, 100, 101, 120, 77, 97, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 97, 116, 101, 114, 105, 97, 108, 115, 92, 86, 114, 109, 48, 88, 77, 84, 111, 111, 110, 86, 97, 108, 117, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 101, 115, 104, 85, 112, 100, 97, 116, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 67, 104, 101, 99, 107, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 77, 97, 116, 101, 114, 105, 97, 108, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 86, 101, 99, 116, 111, 114, 51, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 86, 114, 109, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 86, 114, 109, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 86, 114, 109, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 65, 110, 100, 76, 111, 111, 107, 65, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 86, 114, 109, 72, 117, 109, 97, 110, 111, 105, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 86, 114, 109, 77, 101, 116, 97, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 86, 114, 109, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 77, 105, 103, 114, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 82, 111, 116, 97, 116, 101, 89, 49, 56, 48, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 86, 114, 109, 48, 77, 101, 116, 97, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 105, 103, 114, 97, 116, 105, 111, 110, 92, 86, 114, 109, 48, 88, 86, 101, 114, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 47, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 99, 101, 110, 101, 115, 92, 83, 97, 109, 112, 108, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 116, 114, 105, 110, 103, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 49, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 116, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 56, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 86, 101, 114, 115, 105, 111, 110, 92, 86, 82, 77, 83, 112, 101, 99, 86, 101, 114, 115, 105, 111, 110, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 82, 117, 110, 116, 105, 109, 101, 92, 86, 101, 114, 115, 105, 111, 110, 92, 86, 82, 77, 83, 112, 101, 99, 86, 101, 114, 115, 105, 111, 110, 80, 97, 114, 116, 105, 97, 108, 46, 99, 115 }, TypesData = new byte[10197] { 0, 0, 0, 0, 28, 85, 110, 105, 86, 82, 77, 49, 48, 124, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 27, 85, 110, 105, 86, 82, 77, 49, 48, 124, 65, 120, 101, 115, 77, 97, 115, 107, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 30, 85, 110, 105, 86, 82, 77, 49, 48, 124, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 68, 101, 115, 116, 105, 110, 97, 116, 105, 111, 110, 0, 0, 0, 0, 25, 85, 110, 105, 86, 82, 77, 49, 48, 124, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 83, 111, 117, 114, 99, 101, 0, 0, 0, 0, 25, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 86, 114, 109, 49, 48, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 0, 0, 0, 0, 11, 85, 110, 105, 86, 82, 77, 49, 48, 124, 84, 82, 0, 0, 0, 0, 28, 85, 110, 105, 86, 82, 77, 49, 48, 124, 84, 114, 97, 110, 115, 102, 111, 114, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 27, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 65, 105, 109, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 0, 0, 0, 0, 28, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 85, 116, 105, 108, 0, 0, 0, 0, 28, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 82, 111, 108, 108, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 0, 0, 0, 0, 32, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 82, 111, 116, 97, 116, 105, 111, 110, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 0, 0, 0, 0, 35, 85, 110, 105, 86, 82, 77, 49, 48, 124, 68, 101, 102, 97, 117, 108, 116, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 86, 97, 108, 105, 100, 97, 116, 111, 114, 0, 0, 0, 0, 43, 85, 110, 105, 86, 82, 77, 49, 48, 46, 68, 101, 102, 97, 117, 108, 116, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 86, 97, 108, 105, 100, 97, 116, 111, 114, 124, 70, 97, 99, 116, 111, 114, 121, 0, 0, 0, 0, 22, 85, 110, 105, 86, 82, 77, 49, 48, 124, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 75, 101, 121, 1, 0, 0, 0, 26, 85, 110, 105, 86, 82, 77, 49, 48, 46, 124, 69, 113, 117, 97, 108, 105, 116, 121, 67, 111, 109, 112, 97, 114, 101, 114, 0, 0, 0, 0, 25, 85, 110, 105, 86, 82, 77, 49, 48, 124, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 77, 101, 114, 103, 101, 114, 0, 0, 0, 0, 29, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 86, 97, 108, 105, 100, 97, 116, 111, 114, 0, 0, 0, 0, 36, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 86, 97, 108, 105, 100, 97, 116, 111, 114, 70, 97, 99, 116, 111, 114, 121, 0, 0, 0, 0, 38, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 76, 111, 111, 107, 65, 116, 69, 121, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 65, 112, 112, 108, 105, 99, 97, 98, 108, 101, 0, 0, 0, 0, 29, 85, 110, 105, 86, 82, 77, 49, 48, 124, 77, 97, 116, 101, 114, 105, 97, 108, 67, 111, 108, 111, 114, 66, 105, 110, 100, 105, 110, 103, 0, 0, 0, 0, 26, 85, 110, 105, 86, 82, 77, 49, 48, 124, 77, 97, 116, 101, 114, 105, 97, 108, 85, 86, 66, 105, 110, 100, 105, 110, 103, 0, 0, 0, 0, 35, 85, 110, 105, 86, 82, 77, 49, 48, 124, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 0, 0, 0, 0, 77, 85, 110, 105, 86, 82, 77, 49, 48, 46, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 124, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 75, 101, 121, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 67, 111, 109, 112, 97, 114, 101, 114, 0, 0, 0, 0, 50, 85, 110, 105, 86, 82, 77, 49, 48, 46, 77, 97, 116, 101, 114, 105, 97, 108, 86, 97, 108, 117, 101, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 124, 77, 97, 116, 101, 114, 105, 97, 108, 84, 97, 114, 103, 101, 116, 0, 0, 0, 0, 27, 85, 110, 105, 86, 82, 77, 49, 48, 124, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 66, 105, 110, 100, 105, 110, 103, 0, 0, 0, 0, 33, 85, 110, 105, 86, 82, 77, 49, 48, 124, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 0, 0, 0, 0, 30, 85, 110, 105, 86, 82, 77, 49, 48, 124, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 1, 0, 0, 0, 26, 85, 110, 105, 86, 82, 77, 49, 48, 46, 124, 69, 113, 117, 97, 108, 105, 116, 121, 67, 111, 109, 112, 97, 114, 101, 114, 0, 0, 0, 0, 34, 85, 110, 105, 86, 82, 77, 49, 48, 124, 82, 117, 110, 116, 105, 109, 101, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 66, 105, 110, 100, 105, 110, 103, 0, 0, 0, 0, 29, 85, 110, 105, 86, 82, 77, 49, 48, 124, 78, 111, 100, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 66, 105, 110, 100, 105, 110, 103, 0, 0, 0, 0, 35, 85, 110, 105, 86, 82, 77, 49, 48, 124, 78, 111, 100, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 66, 105, 110, 100, 105, 110, 103, 77, 101, 114, 103, 101, 114, 0, 0, 0, 0, 24, 85, 110, 105, 86, 82, 77, 49, 48, 124, 80, 114, 101, 118, 105, 101, 119, 77, 101, 115, 104, 73, 116, 101, 109, 0, 0, 0, 0, 28, 85, 110, 105, 86, 82, 77, 49, 48, 124, 80, 114, 101, 118, 105, 101, 119, 83, 99, 101, 110, 101, 77, 97, 110, 97, 103, 101, 114, 0, 0, 0, 0, 17, 85, 110, 105, 86, 82, 77, 49, 48, 124, 80, 114, 111, 112, 73, 116, 101, 109, 0, 0, 0, 0, 21, 85, 110, 105, 86, 82, 77, 49, 48, 124, 77, 97, 116, 101, 114, 105, 97, 108, 73, 116, 101, 109, 0, 0, 0, 0, 28, 85, 110, 105, 86, 82, 77, 49, 48, 124, 80, 114, 101, 118, 105, 101, 119, 77, 97, 116, 101, 114, 105, 97, 108, 73, 116, 101, 109, 0, 0, 0, 0, 24, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 82, 77, 49, 48, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 0, 0, 0, 0, 33, 85, 110, 105, 86, 82, 77, 49, 48, 124, 82, 101, 110, 100, 101, 114, 101, 114, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 70, 108, 97, 103, 115, 0, 0, 0, 0, 38, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 76, 97, 121, 101, 114, 83, 101, 116, 116, 105, 110, 103, 115, 0, 0, 0, 0, 20, 85, 110, 105, 86, 82, 77, 49, 48, 124, 67, 117, 114, 118, 101, 77, 97, 112, 112, 101, 114, 0, 0, 0, 0, 36, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 76, 111, 111, 107, 65, 116, 69, 121, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 27, 85, 110, 105, 86, 82, 77, 49, 48, 124, 76, 111, 111, 107, 65, 116, 69, 121, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 0, 0, 0, 0, 43, 85, 110, 105, 86, 82, 77, 49, 48, 124, 76, 111, 111, 107, 65, 116, 69, 121, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 65, 112, 112, 108, 105, 99, 97, 98, 108, 101, 84, 111, 66, 111, 110, 101, 0, 0, 0, 0, 49, 85, 110, 105, 86, 82, 77, 49, 48, 124, 76, 111, 111, 107, 65, 116, 69, 121, 101, 68, 105, 114, 101, 99, 116, 105, 111, 110, 65, 112, 112, 108, 105, 99, 97, 98, 108, 101, 84, 111, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 0, 0, 0, 0, 20, 85, 110, 105, 86, 82, 77, 49, 48, 124, 76, 111, 111, 107, 65, 116, 73, 110, 112, 117, 116, 0, 0, 0, 0, 28, 85, 110, 105, 86, 82, 77, 49, 48, 124, 77, 97, 116, 114, 105, 120, 52, 120, 52, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 38, 85, 110, 105, 86, 82, 77, 49, 48, 124, 80, 114, 101, 102, 97, 98, 82, 101, 108, 97, 116, 101, 100, 83, 99, 114, 105, 112, 116, 97, 98, 108, 101, 79, 98, 106, 101, 99, 116, 0, 0, 0, 0, 32, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 82, 77, 49, 48, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 100, 101, 114, 0, 0, 0, 0, 37, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 82, 77, 49, 48, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 67, 111, 108, 108, 105, 100, 101, 114, 71, 114, 111, 117, 112, 0, 0, 0, 0, 29, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 82, 77, 49, 48, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 105, 110, 116, 0, 0, 0, 0, 27, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 82, 77, 49, 48, 83, 112, 114, 105, 110, 103, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 20, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 0, 0, 0, 0, 30, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 0, 0, 0, 0, 31, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 0, 0, 0, 0, 26, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 76, 111, 111, 107, 65, 116, 0, 0, 0, 0, 24, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 82, 77, 49, 48, 79, 98, 106, 101, 99, 116, 77, 101, 116, 97, 0, 0, 0, 0, 22, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 73, 110, 115, 116, 97, 110, 99, 101, 0, 0, 0, 0, 32, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 73, 110, 115, 116, 97, 110, 99, 101, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 0, 0, 0, 0, 39, 85, 110, 105, 86, 82, 77, 49, 48, 46, 86, 114, 109, 49, 48, 73, 110, 115, 116, 97, 110, 99, 101, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 83, 112, 114, 105, 110, 103, 0, 0, 0, 0, 25, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 67, 111, 110, 116, 114, 111, 108, 66, 111, 110, 101, 0, 0, 0, 0, 31, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 67, 111, 110, 116, 114, 111, 108, 82, 105, 103, 0, 0, 0, 0, 36, 85, 110, 105, 86, 82, 77, 49, 48, 124, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 66, 117, 102, 102, 101, 114, 70, 97, 99, 116, 111, 114, 121, 0, 0, 0, 0, 32, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 86, 114, 109, 49, 48, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 0, 0, 0, 0, 40, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 86, 114, 109, 49, 48, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 35, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 0, 0, 0, 0, 43, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 45, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 83, 116, 97, 110, 100, 97, 108, 111, 110, 101, 0, 0, 0, 0, 53, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 70, 97, 115, 116, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 83, 116, 97, 110, 100, 97, 108, 111, 110, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 34, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 78, 111, 112, 83, 112, 114, 105, 110, 103, 98, 111, 110, 101, 82, 117, 110, 116, 105, 109, 101, 0, 0, 0, 0, 21, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 0, 0, 0, 0, 31, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 0, 0, 0, 0, 27, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 82, 117, 110, 116, 105, 109, 101, 76, 111, 111, 107, 65, 116, 0, 0, 0, 0, 24, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 86, 114, 109, 49, 48, 65, 110, 105, 109, 97, 116, 105, 111, 110, 0, 0, 0, 0, 31, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 65, 110, 105, 109, 97, 116, 105, 111, 110, 73, 110, 115, 116, 97, 110, 99, 101, 0, 0, 0, 0, 24, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 80, 111, 115, 101, 76, 111, 97, 100, 101, 114, 0, 0, 0, 0, 19, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 84, 80, 111, 115, 101, 0, 0, 0, 0, 30, 85, 110, 105, 86, 82, 77, 49, 48, 46, 86, 114, 109, 49, 48, 84, 80, 111, 115, 101, 124, 78, 111, 82, 111, 116, 97, 116, 105, 111, 110, 0, 0, 0, 0, 28, 85, 110, 105, 86, 82, 77, 49, 48, 46, 86, 114, 109, 49, 48, 84, 80, 111, 115, 101, 124, 83, 107, 101, 108, 101, 116, 111, 110, 0, 0, 0, 0, 29, 85, 110, 105, 86, 82, 77, 49, 48, 124, 65, 110, 105, 109, 97, 116, 111, 114, 80, 111, 115, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 28, 85, 110, 105, 86, 82, 77, 49, 48, 124, 66, 111, 110, 101, 73, 110, 105, 116, 105, 97, 108, 82, 111, 116, 97, 116, 105, 111, 110, 0, 0, 0, 0, 34, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 78, 111, 114, 109, 97, 108, 105, 122, 101, 100, 80, 111, 115, 101, 65, 112, 112, 108, 105, 99, 97, 98, 108, 101, 0, 0, 0, 0, 32, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 78, 111, 114, 109, 97, 108, 105, 122, 101, 100, 80, 111, 115, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 23, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 84, 80, 111, 115, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 33, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 84, 80, 111, 115, 101, 80, 114, 111, 118, 105, 100, 101, 114, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 33, 85, 110, 105, 86, 82, 77, 49, 48, 124, 73, 110, 105, 116, 82, 111, 116, 97, 116, 105, 111, 110, 80, 111, 115, 101, 80, 114, 111, 118, 105, 100, 101, 114, 0, 0, 0, 0, 29, 85, 110, 105, 86, 82, 77, 49, 48, 124, 88, 82, 95, 69, 88, 84, 95, 104, 97, 110, 100, 95, 116, 114, 97, 99, 107, 105, 110, 103, 0, 0, 0, 0, 28, 85, 110, 105, 86, 82, 77, 49, 48, 124, 88, 82, 95, 70, 66, 95, 98, 111, 100, 121, 95, 116, 114, 97, 99, 107, 105, 110, 103, 0, 0, 0, 0, 22, 85, 110, 105, 86, 82, 77, 49, 48, 124, 86, 114, 109, 49, 48, 82, 101, 116, 97, 114, 103, 101, 116, 0, 0, 0, 0, 27, 85, 110, 105, 86, 82, 77, 49, 48, 124, 69, 110, 117, 109, 70, 108, 97, 103, 115, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 54, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 124, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 47, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 124, 72, 117, 109, 97, 110, 66, 111, 110, 101, 0, 0, 0, 0, 48, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 124, 72, 117, 109, 97, 110, 66, 111, 110, 101, 115, 0, 0, 0, 0, 46, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 124, 72, 117, 109, 97, 110, 111, 105, 100, 0, 0, 0, 0, 48, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 124, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 0, 0, 0, 0, 44, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 124, 80, 114, 101, 115, 101, 116, 0, 0, 0, 0, 49, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 124, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 115, 0, 0, 0, 0, 44, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 124, 76, 111, 111, 107, 65, 116, 0, 0, 0, 0, 56, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 124, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 0, 0, 0, 0, 52, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 97, 110, 105, 109, 97, 116, 105, 111, 110, 124, 71, 108, 116, 102, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 56, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 110, 111, 100, 101, 95, 99, 111, 110, 115, 116, 114, 97, 105, 110, 116, 124, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 54, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 110, 111, 100, 101, 95, 99, 111, 110, 115, 116, 114, 97, 105, 110, 116, 124, 82, 111, 108, 108, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 0, 0, 0, 0, 53, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 110, 111, 100, 101, 95, 99, 111, 110, 115, 116, 114, 97, 105, 110, 116, 124, 65, 105, 109, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 0, 0, 0, 0, 58, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 110, 111, 100, 101, 95, 99, 111, 110, 115, 116, 114, 97, 105, 110, 116, 124, 82, 111, 116, 97, 116, 105, 111, 110, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 0, 0, 0, 0, 50, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 110, 111, 100, 101, 95, 99, 111, 110, 115, 116, 114, 97, 105, 110, 116, 124, 67, 111, 110, 115, 116, 114, 97, 105, 110, 116, 0, 0, 0, 0, 60, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 110, 111, 100, 101, 95, 99, 111, 110, 115, 116, 114, 97, 105, 110, 116, 124, 86, 82, 77, 67, 95, 110, 111, 100, 101, 95, 99, 111, 110, 115, 116, 114, 97, 105, 110, 116, 0, 0, 0, 0, 54, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 110, 111, 100, 101, 95, 99, 111, 110, 115, 116, 114, 97, 105, 110, 116, 124, 71, 108, 116, 102, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 71, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 115, 95, 110, 111, 100, 101, 95, 116, 114, 97, 110, 115, 102, 111, 114, 109, 124, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 72, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 115, 95, 110, 111, 100, 101, 95, 116, 114, 97, 110, 115, 102, 111, 114, 109, 124, 78, 111, 100, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 66, 105, 110, 100, 0, 0, 0, 0, 90, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 115, 95, 110, 111, 100, 101, 95, 116, 114, 97, 110, 115, 102, 111, 114, 109, 124, 86, 82, 77, 67, 95, 118, 114, 109, 95, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 115, 95, 110, 111, 100, 101, 95, 116, 114, 97, 110, 115, 102, 111, 114, 109, 0, 0, 0, 0, 69, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 95, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 115, 95, 110, 111, 100, 101, 95, 116, 114, 97, 110, 115, 102, 111, 114, 109, 124, 71, 108, 116, 102, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 56, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 109, 116, 111, 111, 110, 124, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 51, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 109, 116, 111, 111, 110, 124, 84, 101, 120, 116, 117, 114, 101, 73, 110, 102, 111, 0, 0, 0, 0, 63, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 109, 116, 111, 111, 110, 124, 83, 104, 97, 100, 105, 110, 103, 83, 104, 105, 102, 116, 84, 101, 120, 116, 117, 114, 101, 73, 110, 102, 111, 0, 0, 0, 0, 60, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 109, 116, 111, 111, 110, 124, 86, 82, 77, 67, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 109, 116, 111, 111, 110, 0, 0, 0, 0, 54, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 109, 97, 116, 101, 114, 105, 97, 108, 115, 95, 109, 116, 111, 111, 110, 124, 71, 108, 116, 102, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 51, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 54, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 67, 111, 108, 108, 105, 100, 101, 114, 83, 104, 97, 112, 101, 83, 112, 104, 101, 114, 101, 0, 0, 0, 0, 55, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 67, 111, 108, 108, 105, 100, 101, 114, 83, 104, 97, 112, 101, 67, 97, 112, 115, 117, 108, 101, 0, 0, 0, 0, 48, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 67, 111, 108, 108, 105, 100, 101, 114, 83, 104, 97, 112, 101, 0, 0, 0, 0, 43, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 67, 111, 108, 108, 105, 100, 101, 114, 0, 0, 0, 0, 48, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 67, 111, 108, 108, 105, 100, 101, 114, 71, 114, 111, 117, 112, 0, 0, 0, 0, 50, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 83, 112, 114, 105, 110, 103, 66, 111, 110, 101, 74, 111, 105, 110, 116, 0, 0, 0, 0, 41, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 83, 112, 114, 105, 110, 103, 0, 0, 0, 0, 50, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 0, 0, 0, 0, 49, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 124, 71, 108, 116, 102, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 69, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 101, 120, 116, 101, 110, 100, 101, 100, 95, 99, 111, 108, 108, 105, 100, 101, 114, 124, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 80, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 101, 120, 116, 101, 110, 100, 101, 100, 95, 99, 111, 108, 108, 105, 100, 101, 114, 124, 69, 120, 116, 101, 110, 100, 101, 100, 67, 111, 108, 108, 105, 100, 101, 114, 83, 104, 97, 112, 101, 83, 112, 104, 101, 114, 101, 0, 0, 0, 0, 81, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 101, 120, 116, 101, 110, 100, 101, 100, 95, 99, 111, 108, 108, 105, 100, 101, 114, 124, 69, 120, 116, 101, 110, 100, 101, 100, 67, 111, 108, 108, 105, 100, 101, 114, 83, 104, 97, 112, 101, 67, 97, 112, 115, 117, 108, 101, 0, 0, 0, 0, 79, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 101, 120, 116, 101, 110, 100, 101, 100, 95, 99, 111, 108, 108, 105, 100, 101, 114, 124, 69, 120, 116, 101, 110, 100, 101, 100, 67, 111, 108, 108, 105, 100, 101, 114, 83, 104, 97, 112, 101, 80, 108, 97, 110, 101, 0, 0, 0, 0, 74, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 101, 120, 116, 101, 110, 100, 101, 100, 95, 99, 111, 108, 108, 105, 100, 101, 114, 124, 69, 120, 116, 101, 110, 100, 101, 100, 67, 111, 108, 108, 105, 100, 101, 114, 83, 104, 97, 112, 101, 0, 0, 0, 0, 86, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 101, 120, 116, 101, 110, 100, 101, 100, 95, 99, 111, 108, 108, 105, 100, 101, 114, 124, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 101, 120, 116, 101, 110, 100, 101, 100, 95, 99, 111, 108, 108, 105, 100, 101, 114, 0, 0, 0, 0, 67, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 101, 120, 116, 101, 110, 100, 101, 100, 95, 99, 111, 108, 108, 105, 100, 101, 114, 124, 71, 108, 116, 102, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 57, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 108, 105, 109, 105, 116, 124, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 50, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 108, 105, 109, 105, 116, 124, 67, 111, 110, 101, 76, 105, 109, 105, 116, 0, 0, 0, 0, 51, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 108, 105, 109, 105, 116, 124, 72, 105, 110, 103, 101, 76, 105, 109, 105, 116, 0, 0, 0, 0, 55, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 108, 105, 109, 105, 116, 124, 83, 112, 104, 101, 114, 105, 99, 97, 108, 76, 105, 109, 105, 116, 0, 0, 0, 0, 46, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 108, 105, 109, 105, 116, 124, 76, 105, 109, 105, 116, 0, 0, 0, 0, 62, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 108, 105, 109, 105, 116, 124, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 108, 105, 109, 105, 116, 0, 0, 0, 0, 55, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 115, 112, 114, 105, 110, 103, 66, 111, 110, 101, 95, 108, 105, 109, 105, 116, 124, 71, 108, 116, 102, 83, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 44, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 71, 108, 116, 102, 68, 101, 115, 101, 114, 105, 97, 108, 105, 122, 101, 114, 0, 0, 0, 0, 32, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 77, 101, 116, 97, 0, 0, 0, 0, 37, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 72, 117, 109, 97, 110, 66, 111, 110, 101, 0, 0, 0, 0, 38, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 72, 117, 109, 97, 110, 66, 111, 110, 101, 115, 0, 0, 0, 0, 36, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 72, 117, 109, 97, 110, 111, 105, 100, 0, 0, 0, 0, 42, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 77, 101, 115, 104, 65, 110, 110, 111, 116, 97, 116, 105, 111, 110, 0, 0, 0, 0, 39, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 70, 105, 114, 115, 116, 80, 101, 114, 115, 111, 110, 0, 0, 0, 0, 42, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 76, 111, 111, 107, 65, 116, 82, 97, 110, 103, 101, 77, 97, 112, 0, 0, 0, 0, 34, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 76, 111, 111, 107, 65, 116, 0, 0, 0, 0, 43, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 66, 105, 110, 100, 0, 0, 0, 0, 45, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 77, 97, 116, 101, 114, 105, 97, 108, 67, 111, 108, 111, 114, 66, 105, 110, 100, 0, 0, 0, 0, 48, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 84, 101, 120, 116, 117, 114, 101, 84, 114, 97, 110, 115, 102, 111, 114, 109, 66, 105, 110, 100, 0, 0, 0, 0, 38, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 0, 0, 0, 0, 34, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 86, 82, 77, 67, 95, 118, 114, 109, 124, 80, 114, 101, 115, 101, 116, 0, 0, 0, 0, 39, 85, 110, 105, 71, 76, 84, 70, 46, 69, 120, 1
valheim_Data/Managed/VrmLib.dll
Decompiled 20 hours 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; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; 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 UniGLTF; using UniGLTF.Utils; using Unity.Collections; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [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[1049] { 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 67, 111, 111, 114, 100, 105, 110, 97, 116, 101, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 51, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 112, 111, 114, 116, 65, 114, 103, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 76, 105, 115, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 47, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 71, 108, 116, 102, 73, 100, 46, 99, 115, 0, 0, 0, 7, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 72, 117, 109, 97, 110, 111, 105, 100, 92, 72, 117, 109, 97, 110, 111, 105, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 63, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 72, 117, 109, 97, 110, 111, 105, 100, 92, 72, 117, 109, 97, 110, 111, 105, 100, 66, 111, 110, 101, 115, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 72, 117, 109, 97, 110, 111, 105, 100, 92, 83, 107, 101, 108, 101, 116, 111, 110, 69, 115, 116, 105, 109, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 72, 117, 109, 97, 110, 111, 105, 100, 92, 83, 107, 101, 108, 101, 116, 111, 110, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 97, 116, 104, 70, 87, 114, 97, 112, 46, 99, 115, 0, 0, 0, 3, 0, 0, 0, 45, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 50, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 101, 115, 104, 71, 114, 111, 117, 112, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 46, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 111, 100, 101, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 45, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 78, 111, 100, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 78, 111, 100, 101, 65, 110, 105, 109, 97, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 45, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 83, 107, 105, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 53, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 118, 114, 109, 92, 118, 114, 109, 108, 105, 98, 92, 82, 117, 110, 116, 105, 109, 101, 92, 86, 101, 114, 116, 101, 120, 66, 117, 102, 102, 101, 114, 46, 99, 115 }, TypesData = new byte[748] { 0, 0, 0, 0, 18, 86, 114, 109, 76, 105, 98, 124, 67, 111, 111, 114, 100, 105, 110, 97, 116, 101, 115, 0, 0, 0, 0, 17, 86, 114, 109, 76, 105, 98, 124, 69, 120, 112, 111, 114, 116, 65, 114, 103, 115, 0, 0, 0, 0, 21, 86, 114, 109, 76, 105, 98, 124, 76, 105, 115, 116, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 13, 86, 114, 109, 76, 105, 98, 124, 71, 108, 116, 102, 73, 100, 0, 0, 0, 0, 19, 86, 114, 109, 76, 105, 98, 124, 72, 117, 109, 97, 110, 111, 105, 100, 72, 101, 97, 100, 0, 0, 0, 0, 18, 86, 114, 109, 76, 105, 98, 124, 72, 117, 109, 97, 110, 111, 105, 100, 65, 114, 109, 0, 0, 0, 0, 18, 86, 114, 109, 76, 105, 98, 124, 72, 117, 109, 97, 110, 111, 105, 100, 76, 101, 103, 0, 0, 0, 0, 21, 86, 114, 109, 76, 105, 98, 124, 72, 117, 109, 97, 110, 111, 105, 100, 70, 105, 110, 103, 101, 114, 0, 0, 0, 0, 20, 86, 114, 109, 76, 105, 98, 124, 72, 117, 109, 97, 110, 111, 105, 100, 84, 104, 117, 109, 98, 0, 0, 0, 0, 22, 86, 114, 109, 76, 105, 98, 124, 72, 117, 109, 97, 110, 111, 105, 100, 70, 105, 110, 103, 101, 114, 115, 0, 0, 0, 0, 15, 86, 114, 109, 76, 105, 98, 124, 72, 117, 109, 97, 110, 111, 105, 100, 0, 0, 0, 0, 28, 86, 114, 109, 76, 105, 98, 124, 66, 111, 110, 101, 82, 101, 113, 117, 105, 114, 101, 100, 65, 116, 116, 114, 105, 98, 117, 116, 101, 0, 0, 0, 0, 24, 86, 114, 109, 76, 105, 98, 124, 83, 107, 101, 108, 101, 116, 111, 110, 69, 115, 116, 105, 109, 97, 116, 111, 114, 0, 0, 0, 0, 28, 86, 114, 109, 76, 105, 98, 46, 83, 107, 101, 108, 101, 116, 111, 110, 69, 115, 116, 105, 109, 97, 116, 111, 114, 124, 65, 114, 109, 0, 0, 0, 0, 28, 86, 114, 109, 76, 105, 98, 46, 83, 107, 101, 108, 101, 116, 111, 110, 69, 115, 116, 105, 109, 97, 116, 111, 114, 124, 76, 101, 103, 0, 0, 0, 0, 17, 86, 114, 109, 76, 105, 98, 124, 66, 111, 110, 101, 87, 101, 105, 103, 104, 116, 0, 0, 0, 0, 18, 86, 114, 109, 76, 105, 98, 124, 77, 101, 115, 104, 66, 117, 105, 108, 100, 101, 114, 0, 0, 0, 0, 19, 86, 114, 109, 76, 105, 98, 124, 66, 111, 110, 101, 72, 101, 97, 100, 84, 97, 105, 108, 0, 0, 0, 0, 16, 86, 114, 109, 76, 105, 98, 124, 77, 97, 116, 104, 70, 87, 114, 97, 112, 0, 0, 0, 0, 15, 86, 114, 109, 76, 105, 98, 124, 84, 114, 105, 97, 110, 103, 108, 101, 0, 0, 0, 0, 14, 86, 114, 109, 76, 105, 98, 124, 83, 117, 98, 109, 101, 115, 104, 0, 0, 0, 0, 11, 86, 114, 109, 76, 105, 98, 124, 77, 101, 115, 104, 0, 0, 0, 0, 16, 86, 114, 109, 76, 105, 98, 124, 77, 101, 115, 104, 71, 114, 111, 117, 112, 0, 0, 0, 0, 12, 86, 114, 109, 76, 105, 98, 124, 77, 111, 100, 101, 108, 0, 0, 0, 0, 21, 86, 114, 109, 76, 105, 98, 46, 77, 111, 100, 101, 108, 124, 82, 101, 118, 101, 114, 115, 101, 114, 0, 0, 0, 0, 18, 86, 114, 109, 76, 105, 98, 124, 77, 111, 114, 112, 104, 84, 97, 114, 103, 101, 116, 0, 0, 0, 0, 11, 86, 114, 109, 76, 105, 98, 124, 78, 111, 100, 101, 0, 0, 0, 0, 21, 86, 114, 109, 76, 105, 98, 124, 78, 111, 100, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 19, 86, 114, 109, 76, 105, 98, 124, 67, 117, 114, 118, 101, 83, 97, 109, 112, 108, 101, 114, 0, 0, 0, 0, 20, 86, 114, 109, 76, 105, 98, 124, 78, 111, 100, 101, 65, 110, 105, 109, 97, 116, 105, 111, 110, 0, 0, 0, 0, 11, 86, 114, 109, 76, 105, 98, 124, 83, 107, 105, 110, 0, 0, 0, 0, 19, 86, 114, 109, 76, 105, 98, 124, 86, 101, 114, 116, 101, 120, 66, 117, 102, 102, 101, 114 }, TotalFiles = 17, TotalTypes = 32, IsEditorOnly = false }; } } namespace VrmLib; public enum GeometryCoordinates { Unknown, XYZ_RightUpBack_RH, XYZ_RightUpForward_RH, XYZ_RightUpForward_LH } public enum TextureOrigin { Unknown, LeftTop, LeftBottom } public struct Coordinates { public GeometryCoordinates Geometry; public TextureOrigin Texture; public static Coordinates Vrm0 => new Coordinates { Geometry = GeometryCoordinates.XYZ_RightUpBack_RH, Texture = TextureOrigin.LeftTop }; public bool IsVrm0 => Equals(Vrm0); public static Coordinates Vrm1 => new Coordinates { Geometry = GeometryCoordinates.XYZ_RightUpForward_RH, Texture = TextureOrigin.LeftTop }; public bool IsVrm1 => Equals(Vrm1); public static Coordinates Unity => new Coordinates { Geometry = GeometryCoordinates.XYZ_RightUpForward_LH, Texture = TextureOrigin.LeftBottom }; public bool IsUnity => Equals(Unity); } [Serializable] public struct ExportArgs { private bool? m_sparse; private bool? m_remove_morph_normal; private bool? m_remove_tangent; public bool sparse { get { if (!m_sparse.HasValue) { m_sparse = true; } return m_sparse.Value; } set { m_sparse = value; } } public bool removeMorphNormal { get { if (!m_remove_morph_normal.HasValue) { m_remove_morph_normal = false; } return m_remove_morph_normal.Value; } set { m_remove_morph_normal = value; } } public bool removeTangent { get { if (!m_remove_tangent.HasValue) { m_remove_tangent = true; } return m_remove_tangent.Value; } set { m_remove_tangent = value; } } } public static class ListExtensions { public static int IndexOfThrow<T>(this List<T> list, T target) { int num = list.IndexOf(target); if (num == -1) { throw new KeyNotFoundException(); } return num; } public static int? IndexOfNullable<T>(this List<T> list, T target) { int num = list.IndexOf(target); if (num == -1) { return null; } return num; } } public class GltfId { public int? GltfIndex; public int SortOrder => GltfIndex ?? int.MaxValue; } public struct HumanoidHead { public Node Head; public Node Jaw; public Node LeftEye; public Node RightEye; public bool HasRequiredBones => Head != null; } public struct HumanoidArm { public Node Shoulder; public Node Upper; public Node Lower; public Node Hand; public bool HasRequiredBones { get { if (Upper != null && Lower != null) { return Hand != null; } return false; } } public Vector3 Direction { get { //IL_002f: 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_0044: 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_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) if (Shoulder != null) { return Vector3.Normalize(Hand.Translation - Shoulder.Translation); } return Vector3.Normalize(Hand.Translation - Upper.Translation); } } public void DirectTo(Vector3 dir) { //IL_003b: 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_0050: 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_006d: 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_0077: 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_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) if (Shoulder != null) { Shoulder.RotateFromTo(Upper.Translation - Shoulder.Translation, dir); } Upper.RotateFromTo(Lower.Translation - Upper.Translation, dir); Lower.RotateFromTo(Hand.Translation - Lower.Translation, dir); } } public struct HumanoidLeg { public Node Upper; public Node Lower; public Node Foot; public Node Toe; } internal struct HumanoidFinger { public Node Proximal; public Node Intermediate; public Node Distal; } internal struct HumanoidThumb { public Node Metacarpal; public Node Proximal; public Node Distal; } internal struct HumanoidFingers { public HumanoidThumb Thumb; public HumanoidFinger Index; public HumanoidFinger Middle; public HumanoidFinger Ring; public HumanoidFinger Little; } public class Humanoid : IDictionary<HumanoidBones, Node>, ICollection<KeyValuePair<HumanoidBones, Node>>, IEnumerable<KeyValuePair<HumanoidBones, Node>>, IEnumerable { public Node Hips; public Node Spine; public Node Chest; public Node UpperChest; public Node Neck; private HumanoidHead Head; private HumanoidArm LeftArm; private HumanoidFingers LeftFingers; private HumanoidArm RightArm; private HumanoidFingers RightFingers; private HumanoidLeg LeftLeg; private HumanoidLeg RightLeg; public bool HasRequiredBones { get { if (Hips == null) { return false; } if (Spine == null) { return false; } if (!Head.HasRequiredBones) { return false; } if (!LeftArm.HasRequiredBones) { return false; } if (!RightArm.HasRequiredBones) { return false; } return true; } } ICollection<HumanoidBones> IDictionary<HumanoidBones, Node>.Keys { get { throw new NotImplementedException(); } } ICollection<Node> IDictionary<HumanoidBones, Node>.Values { get { throw new NotImplementedException(); } } int ICollection<KeyValuePair<HumanoidBones, Node>>.Count => this.Select((KeyValuePair<HumanoidBones, Node> _) => _).Count(); bool ICollection<KeyValuePair<HumanoidBones, Node>>.IsReadOnly { get { throw new NotImplementedException(); } } Node IDictionary<HumanoidBones, Node>.this[HumanoidBones key] { get { throw new NotImplementedException(); } set { throw new NotImplementedException(); } } public Node this[HumanoidBones key] { get { if (TryGetValue(key, out var value)) { return value; } throw new KeyNotFoundException(); } } public Node this[Node node] { get { if (node.HumanoidBone.HasValue && node.HumanoidBone.Value != HumanoidBones.unknown) { return this[node.HumanoidBone.Value]; } return Hips.Traverse().First((Node x) => x.Name == node.Name); } } public Humanoid() { } public Humanoid(Node root) { Assign(root); } public void Assign(Node root) { foreach (Node item in root.Traverse()) { if (item.HumanoidBone.HasValue) { Add(item.HumanoidBone.Value, item); } } } private void CopyTraverse(Node src, Node dst) { //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_0026: Unknown result type (might be due to invalid IL or missing references) dst.HumanoidBone = src.HumanoidBone; dst.LocalScaling = src.LocalScaling; dst.LocalRotation = src.LocalRotation; dst.LocalTranslation = src.LocalTranslation; foreach (Node child in src.Children) { Node node = new Node(child.Name); dst.Add(node); CopyTraverse(child, node); } } public Humanoid CopyNodes() { Node node = new Node(Hips.Name); CopyTraverse(Hips, node); return new Humanoid(node); } public (bool, string) Y180() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) StringBuilder stringBuilder = new StringBuilder(); Hips.LocalRotation = Quaternion.Euler(0f, MathFWrap.PI, 0f); Hips.CalcWorldMatrix(); return (true, stringBuilder.ToString()); } public (bool, string) MakeTPose() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_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_003c: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: 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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: 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) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) StringBuilder stringBuilder = new StringBuilder(); bool item = false; Vector3 val = Vector3.Cross(Vector3.Normalize(LeftLeg.Upper.Translation - RightLeg.Upper.Translation), Vector3.up); if (Vector3.Dot(val, -Vector3.forward) < 0.9f) { Hips.RotateFromTo(val, -Vector3.forward); item = true; } if (Vector3.Dot(LeftArm.Direction, -Vector3.right) < 0.9f) { LeftArm.DirectTo(-Vector3.right); stringBuilder.Append("(fix left arm)"); item = true; } if (Vector3.Dot(RightArm.Direction, Vector3.right) < 0.9f) { RightArm.DirectTo(Vector3.right); stringBuilder.Append("(fix right arm)"); item = true; } Hips.CalcWorldMatrix(); return (item, stringBuilder.ToString()); } public void RetargetTo(Humanoid srcTPose, Humanoid dst) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_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) using (IEnumerator<KeyValuePair<HumanoidBones, Node>> enumerator = GetEnumerator()) { while (enumerator.MoveNext()) { KeyValuePair<HumanoidBones, Node> current = enumerator.Current; Node node = srcTPose[current.Key]; if (dst.TryGetValue(current.Key, out var value)) { Quaternion rotation = node.Rotation; value.Rotation = current.Value.Rotation * Quaternion.Inverse(rotation); } else { Console.WriteLine($"{current.Key} not found"); } } } dst.Hips.CalcWorldMatrix(); } public void Add(KeyValuePair<HumanoidBones, Node> item) { Add(item.Key, item.Value); } public void Add(HumanoidBones key, Node node) { if (key == HumanoidBones.unknown) { throw new ArgumentException(); } node.HumanoidBone = key; switch (node.HumanoidBone.Value) { case HumanoidBones.hips: Hips = node; break; case HumanoidBones.spine: Spine = node; break; case HumanoidBones.chest: Chest = node; break; case HumanoidBones.upperChest: UpperChest = node; break; case HumanoidBones.neck: Neck = node; break; case HumanoidBones.head: Head.Head = node; break; case HumanoidBones.jaw: Head.Jaw = node; break; case HumanoidBones.leftEye: Head.LeftEye = node; break; case HumanoidBones.rightEye: Head.RightEye = node; break; case HumanoidBones.leftShoulder: LeftArm.Shoulder = node; break; case HumanoidBones.leftUpperArm: LeftArm.Upper = node; break; case HumanoidBones.leftLowerArm: LeftArm.Lower = node; break; case HumanoidBones.leftHand: LeftArm.Hand = node; break; case HumanoidBones.rightShoulder: RightArm.Shoulder = node; break; case HumanoidBones.rightUpperArm: RightArm.Upper = node; break; case HumanoidBones.rightLowerArm: RightArm.Lower = node; break; case HumanoidBones.rightHand: RightArm.Hand = node; break; case HumanoidBones.leftUpperLeg: LeftLeg.Upper = node; break; case HumanoidBones.leftLowerLeg: LeftLeg.Lower = node; break; case HumanoidBones.leftFoot: LeftLeg.Foot = node; break; case HumanoidBones.leftToes: LeftLeg.Toe = node; break; case HumanoidBones.rightUpperLeg: RightLeg.Upper = node; break; case HumanoidBones.rightLowerLeg: RightLeg.Lower = node; break; case HumanoidBones.rightFoot: RightLeg.Foot = node; break; case HumanoidBones.rightToes: RightLeg.Toe = node; break; case HumanoidBones.leftThumbMetacarpal: LeftFingers.Thumb.Metacarpal = node; break; case HumanoidBones.leftThumbProximal: LeftFingers.Thumb.Proximal = node; break; case HumanoidBones.leftThumbDistal: LeftFingers.Thumb.Distal = node; break; case HumanoidBones.leftIndexProximal: LeftFingers.Index.Proximal = node; break; case HumanoidBones.leftIndexIntermediate: LeftFingers.Index.Intermediate = node; break; case HumanoidBones.leftIndexDistal: LeftFingers.Index.Distal = node; break; case HumanoidBones.leftMiddleProximal: LeftFingers.Middle.Proximal = node; break; case HumanoidBones.leftMiddleIntermediate: LeftFingers.Middle.Intermediate = node; break; case HumanoidBones.leftMiddleDistal: LeftFingers.Middle.Distal = node; break; case HumanoidBones.leftRingProximal: LeftFingers.Ring.Proximal = node; break; case HumanoidBones.leftRingIntermediate: LeftFingers.Ring.Intermediate = node; break; case HumanoidBones.leftRingDistal: LeftFingers.Ring.Distal = node; break; case HumanoidBones.leftLittleProximal: LeftFingers.Little.Proximal = node; break; case HumanoidBones.leftLittleIntermediate: LeftFingers.Little.Intermediate = node; break; case HumanoidBones.leftLittleDistal: LeftFingers.Little.Distal = node; break; case HumanoidBones.rightThumbMetacarpal: RightFingers.Thumb.Metacarpal = node; break; case HumanoidBones.rightThumbProximal: RightFingers.Thumb.Proximal = node; break; case HumanoidBones.rightThumbDistal: RightFingers.Thumb.Distal = node; break; case HumanoidBones.rightIndexProximal: RightFingers.Index.Proximal = node; break; case HumanoidBones.rightIndexIntermediate: RightFingers.Index.Intermediate = node; break; case HumanoidBones.rightIndexDistal: RightFingers.Index.Distal = node; break; case HumanoidBones.rightMiddleProximal: RightFingers.Middle.Proximal = node; break; case HumanoidBones.rightMiddleIntermediate: RightFingers.Middle.Intermediate = node; break; case HumanoidBones.rightMiddleDistal: RightFingers.Middle.Distal = node; break; case HumanoidBones.rightRingProximal: RightFingers.Ring.Proximal = node; break; case HumanoidBones.rightRingIntermediate: RightFingers.Ring.Intermediate = node; break; case HumanoidBones.rightRingDistal: RightFingers.Ring.Distal = node; break; case HumanoidBones.rightLittleProximal: RightFingers.Little.Proximal = node; break; case HumanoidBones.rightLittleIntermediate: RightFingers.Little.Intermediate = node; break; case HumanoidBones.rightLittleDistal: RightFingers.Little.Distal = node; break; default: throw new NotImplementedException(); } } public bool ContainsKey(HumanoidBones key) { Node value; return TryGetValue(key, out value); } public bool Remove(HumanoidBones key) { if (!ContainsKey(key)) { return false; } Add(key, null); return true; } public bool TryGetValue(HumanoidBones key, out Node value) { switch (key) { case HumanoidBones.hips: value = Hips; return true; case HumanoidBones.spine: value = Spine; return true; case HumanoidBones.chest: value = Chest; return true; case HumanoidBones.upperChest: value = UpperChest; return true; case HumanoidBones.neck: value = Neck; return true; case HumanoidBones.head: value = Head.Head; return true; case HumanoidBones.jaw: value = Head.Jaw; return true; case HumanoidBones.leftEye: value = Head.LeftEye; return true; case HumanoidBones.rightEye: value = Head.RightEye; return true; case HumanoidBones.leftShoulder: value = LeftArm.Shoulder; return true; case HumanoidBones.leftUpperArm: value = LeftArm.Upper; return true; case HumanoidBones.leftLowerArm: value = LeftArm.Lower; return true; case HumanoidBones.leftHand: value = LeftArm.Hand; return true; case HumanoidBones.rightShoulder: value = RightArm.Shoulder; return true; case HumanoidBones.rightUpperArm: value = RightArm.Upper; return true; case HumanoidBones.rightLowerArm: value = RightArm.Lower; return true; case HumanoidBones.rightHand: value = RightArm.Hand; return true; case HumanoidBones.leftUpperLeg: value = LeftLeg.Upper; return true; case HumanoidBones.leftLowerLeg: value = LeftLeg.Lower; return true; case HumanoidBones.leftFoot: value = LeftLeg.Foot; return true; case HumanoidBones.leftToes: value = LeftLeg.Toe; return true; case HumanoidBones.rightUpperLeg: value = RightLeg.Upper; return true; case HumanoidBones.rightLowerLeg: value = RightLeg.Lower; return true; case HumanoidBones.rightFoot: value = RightLeg.Foot; return true; case HumanoidBones.rightToes: value = RightLeg.Toe; return true; case HumanoidBones.leftThumbMetacarpal: value = LeftFingers.Thumb.Metacarpal; return true; case HumanoidBones.leftThumbProximal: value = LeftFingers.Thumb.Proximal; return true; case HumanoidBones.leftThumbDistal: value = LeftFingers.Thumb.Distal; return true; case HumanoidBones.leftIndexProximal: value = LeftFingers.Index.Proximal; return true; case HumanoidBones.leftIndexIntermediate: value = LeftFingers.Index.Intermediate; return true; case HumanoidBones.leftIndexDistal: value = LeftFingers.Index.Distal; return true; case HumanoidBones.leftMiddleProximal: value = LeftFingers.Middle.Proximal; return true; case HumanoidBones.leftMiddleIntermediate: value = LeftFingers.Middle.Intermediate; return true; case HumanoidBones.leftMiddleDistal: value = LeftFingers.Middle.Distal; return true; case HumanoidBones.leftRingProximal: value = LeftFingers.Ring.Proximal; return true; case HumanoidBones.leftRingIntermediate: value = LeftFingers.Ring.Intermediate; return true; case HumanoidBones.leftRingDistal: value = LeftFingers.Ring.Distal; return true; case HumanoidBones.leftLittleProximal: value = LeftFingers.Little.Proximal; return true; case HumanoidBones.leftLittleIntermediate: value = LeftFingers.Little.Intermediate; return true; case HumanoidBones.leftLittleDistal: value = LeftFingers.Little.Distal; return true; case HumanoidBones.rightThumbProximal: value = LeftFingers.Thumb.Proximal; return true; case HumanoidBones.rightThumbMetacarpal: value = LeftFingers.Thumb.Metacarpal; return true; case HumanoidBones.rightThumbDistal: value = LeftFingers.Thumb.Distal; return true; case HumanoidBones.rightIndexProximal: value = LeftFingers.Index.Proximal; return true; case HumanoidBones.rightIndexIntermediate: value = LeftFingers.Index.Intermediate; return true; case HumanoidBones.rightIndexDistal: value = LeftFingers.Index.Distal; return true; case HumanoidBones.rightMiddleProximal: value = LeftFingers.Middle.Proximal; return true; case HumanoidBones.rightMiddleIntermediate: value = LeftFingers.Middle.Intermediate; return true; case HumanoidBones.rightMiddleDistal: value = LeftFingers.Middle.Distal; return true; case HumanoidBones.rightRingProximal: value = LeftFingers.Ring.Proximal; return true; case HumanoidBones.rightRingIntermediate: value = LeftFingers.Ring.Intermediate; return true; case HumanoidBones.rightRingDistal: value = LeftFingers.Ring.Distal; return true; case HumanoidBones.rightLittleProximal: value = LeftFingers.Little.Proximal; return true; case HumanoidBones.rightLittleIntermediate: value = LeftFingers.Little.Intermediate; return true; case HumanoidBones.rightLittleDistal: value = LeftFingers.Little.Distal; return true; default: value = null; return false; } } public void Clear() { HumanoidBones[] values = CachedEnum.GetValues<HumanoidBones>(); foreach (HumanoidBones key in values) { Add(key, null); } } public IEnumerator<KeyValuePair<HumanoidBones, Node>> GetEnumerator() { if (Hips != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.hips, Hips); } if (Spine != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.spine, Spine); } if (Chest != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.chest, Chest); } if (UpperChest != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.upperChest, UpperChest); } if (Neck != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.neck, Neck); } if (Head.Head != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.head, Head.Head); } if (LeftArm.Shoulder != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftShoulder, LeftArm.Shoulder); } if (LeftArm.Upper != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftUpperArm, LeftArm.Upper); } if (LeftArm.Lower != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftLowerArm, LeftArm.Lower); } if (LeftArm.Hand != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftHand, LeftArm.Hand); } if (RightArm.Shoulder != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightShoulder, RightArm.Shoulder); } if (RightArm.Upper != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightUpperArm, RightArm.Upper); } if (RightArm.Lower != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightLowerArm, RightArm.Lower); } if (RightArm.Hand != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightHand, RightArm.Hand); } if (LeftLeg.Upper != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftUpperLeg, LeftLeg.Upper); } if (LeftLeg.Lower != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftLowerLeg, LeftLeg.Lower); } if (LeftLeg.Foot != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.leftFoot, LeftLeg.Foot); } if (RightLeg.Upper != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightUpperLeg, RightLeg.Upper); } if (RightLeg.Lower != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightLowerLeg, RightLeg.Lower); } if (RightLeg.Foot != null) { yield return new KeyValuePair<HumanoidBones, Node>(HumanoidBones.rightFoot, RightLeg.Foot); } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } bool ICollection<KeyValuePair<HumanoidBones, Node>>.Contains(KeyValuePair<HumanoidBones, Node> item) { throw new NotImplementedException(); } void ICollection<KeyValuePair<HumanoidBones, Node>>.CopyTo(KeyValuePair<HumanoidBones, Node>[] array, int arrayIndex) { throw new NotImplementedException(); } bool ICollection<KeyValuePair<HumanoidBones, Node>>.Remove(KeyValuePair<HumanoidBones, Node> item) { throw new NotImplementedException(); } } public class BoneRequiredAttribute : Attribute { } public enum HumanoidBones { unknown, [BoneRequired] hips, [BoneRequired] leftUpperLeg, [BoneRequired] rightUpperLeg, [BoneRequired] leftLowerLeg, [BoneRequired] rightLowerLeg, [BoneRequired] leftFoot, [BoneRequired] rightFoot, [BoneRequired] spine, chest, neck, [BoneRequired] head, leftShoulder, rightShoulder, [BoneRequired] leftUpperArm, [BoneRequired] rightUpperArm, [BoneRequired] leftLowerArm, [BoneRequired] rightLowerArm, [BoneRequired] leftHand, [BoneRequired] rightHand, leftToes, rightToes, leftEye, rightEye, jaw, leftThumbMetacarpal, leftThumbProximal, leftThumbDistal, leftIndexProximal, leftIndexIntermediate, leftIndexDistal, leftMiddleProximal, leftMiddleIntermediate, leftMiddleDistal, leftRingProximal, leftRingIntermediate, leftRingDistal, leftLittleProximal, leftLittleIntermediate, leftLittleDistal, rightThumbMetacarpal, rightThumbProximal, rightThumbDistal, rightIndexProximal, rightIndexIntermediate, rightIndexDistal, rightMiddleProximal, rightMiddleIntermediate, rightMiddleDistal, rightRingProximal, rightRingIntermediate, rightRingDistal, rightLittleProximal, rightLittleIntermediate, rightLittleDistal, upperChest } public static class SkeletonEstimator { private struct Arm { public Node Shoulder; public Node UpperArm; public Node LowerArm; public Node Hand; } private struct Leg { public Node UpperLeg; public Node LowerLeg; public Node Foot; public Node Toes; } private static Dictionary<string, HumanoidBones> s_nameBoneMap = new Dictionary<string, HumanoidBones> { { "Spine1", HumanoidBones.chest }, { "Spine2", HumanoidBones.upperChest }, { "LeftShoulder", HumanoidBones.leftShoulder }, { "LeftArm", HumanoidBones.leftUpperArm }, { "LeftForeArm", HumanoidBones.leftLowerArm }, { "RightShoulder", HumanoidBones.rightShoulder }, { "RightArm", HumanoidBones.rightUpperArm }, { "RightForeArm", HumanoidBones.rightLowerArm }, { "LeftUpLeg", HumanoidBones.leftUpperLeg }, { "LeftLeg", HumanoidBones.leftLowerLeg }, { "LeftToeBase", HumanoidBones.leftToes }, { "RightUpLeg", HumanoidBones.rightUpperLeg }, { "RightLeg", HumanoidBones.rightLowerLeg }, { "RightToeBase", HumanoidBones.rightToes } }; private static Dictionary<string, HumanoidBones> s_nameBoneMapLA = new Dictionary<string, HumanoidBones> { { "Chest", HumanoidBones.spine }, { "Chest2", HumanoidBones.chest }, { "LeftCollar", HumanoidBones.leftShoulder }, { "LeftShoulder", HumanoidBones.leftUpperArm }, { "LeftElbow", HumanoidBones.leftLowerArm }, { "LeftWrist", HumanoidBones.leftHand }, { "RightCollar", HumanoidBones.rightShoulder }, { "RightShoulder", HumanoidBones.rightUpperArm }, { "RightElbow", HumanoidBones.rightLowerArm }, { "RightWrist", HumanoidBones.rightHand }, { "LeftHip", HumanoidBones.leftUpperLeg }, { "LeftKnee", HumanoidBones.leftLowerLeg }, { "LeftAnkle", HumanoidBones.leftFoot }, { "RightHip", HumanoidBones.rightUpperLeg }, { "RightKnee", HumanoidBones.rightLowerLeg }, { "RightAnkle", HumanoidBones.rightFoot } }; private static Dictionary<string, HumanoidBones> s_nameBoneMapAccad = new Dictionary<string, HumanoidBones> { { "root", HumanoidBones.hips }, { "lowerback", HumanoidBones.spine }, { "upperback", HumanoidBones.chest }, { "thorax", HumanoidBones.upperChest }, { "neck", HumanoidBones.neck }, { "head", HumanoidBones.head }, { "lshoulderjoint", HumanoidBones.leftShoulder }, { "lhumerus", HumanoidBones.leftUpperArm }, { "lradius", HumanoidBones.leftLowerArm }, { "lhand", HumanoidBones.leftHand }, { "rshoulderjoint", HumanoidBones.rightShoulder }, { "rhumerus", HumanoidBones.rightUpperArm }, { "rradius", HumanoidBones.rightLowerArm }, { "rhand", HumanoidBones.rightHand }, { "rfemur", HumanoidBones.rightUpperLeg }, { "rtibia", HumanoidBones.rightLowerLeg }, { "rfoot", HumanoidBones.rightFoot }, { "rtoes", HumanoidBones.rightToes }, { "lfemur", HumanoidBones.leftUpperLeg }, { "ltibia", HumanoidBones.leftLowerLeg }, { "lfoot", HumanoidBones.leftFoot }, { "ltoes", HumanoidBones.leftToes } }; private static HumanoidBones[] RequiredBones = new HumanoidBones[15] { HumanoidBones.hips, HumanoidBones.spine, HumanoidBones.head, HumanoidBones.leftUpperArm, HumanoidBones.leftLowerArm, HumanoidBones.leftHand, HumanoidBones.leftUpperLeg, HumanoidBones.leftLowerLeg, HumanoidBones.leftFoot, HumanoidBones.rightUpperArm, HumanoidBones.rightLowerArm, HumanoidBones.rightHand, HumanoidBones.rightUpperLeg, HumanoidBones.rightLowerLeg, HumanoidBones.rightFoot }; private static Node GetRoot(IReadOnlyList<Node> bones) { Node[] array = bones.Where((Node x) => x.Parent == null).ToArray(); if (array.Length != 1) { throw new Exception("Require unique root"); } return array[0]; } private static Node SelectBone(Func<Node, Node, bool> pred, Node parent) { IReadOnlyList<Node> children = parent.Children; if (children == null || children.Count == 0) { throw new Exception("no bones"); } foreach (Node item in children) { if (pred(item, parent)) { return item; } } throw new Exception("not found"); } private static void GetSpineAndHips(Node hips, out Node spine, out Node leg_L, out Node leg_R) { if (hips.Children.Count != 3) { throw new Exception("Hips require 3 children"); } spine = SelectBone((Node l, Node r) => l.CenterOfDescendant().y > r.SkeletonLocalPosition.y, hips); Node s = spine; try { leg_L = SelectBone((Node l, Node r) => !l.Equals(s) && l.CenterOfDescendant().x < r.SkeletonLocalPosition.x, hips); leg_R = SelectBone((Node l, Node r) => !l.Equals(s) && l.CenterOfDescendant().x > r.SkeletonLocalPosition.x, hips); } catch (Exception) { leg_L = SelectBone((Node l, Node r) => !l.Equals(s) && l.CenterOfDescendant().z < r.SkeletonLocalPosition.z, hips); leg_R = SelectBone((Node l, Node r) => !l.Equals(s) && l.CenterOfDescendant().z > r.SkeletonLocalPosition.z, hips); } } private static void GetNeckAndArms(Node chest, out Node neck, out Node arm_L, out Node arm_R, Func<Vector3, Vector3, bool> isLeft) { if (chest.Children.Count != 3) { throw new Exception("Chest require 3 children"); } neck = SelectBone((Node l, Node r) => l.CenterOfDescendant().y > r.SkeletonLocalPosition.y, chest); Node n = neck; arm_L = SelectBone((Node l, Node r) => !l.Equals(n) && isLeft(l.CenterOfDescendant(), r.SkeletonLocalPosition), chest); arm_R = SelectBone((Node l, Node r) => !l.Equals(n) && !isLeft(l.CenterOfDescendant(), r.SkeletonLocalPosition), chest); } private static Arm GetArm(Node shoulder) { Node[] array = shoulder.Traverse().ToArray(); switch (array.Length) { case 0: case 1: case 2: throw new NotImplementedException(); case 3: return new Arm { UpperArm = array[0], LowerArm = array[1], Hand = array[2] }; default: return new Arm { Shoulder = array[0], UpperArm = array[1], LowerArm = array[2], Hand = array[3] }; } } private static Leg GetLeg(Node leg) { Node[] array = (from x in leg.Traverse() where string.IsNullOrEmpty(x.Name) || !x.Name.ToLower().Contains("buttock") select x).ToArray(); switch (array.Length) { case 0: case 1: case 2: throw new NotImplementedException(); case 3: return new Leg { UpperLeg = array[0], LowerLeg = array[1], Foot = array[2] }; default: return new Leg { UpperLeg = array[^4], LowerLeg = array[^3], Foot = array[^2], Toes = array[^1] }; } } public static Dictionary<HumanoidBones, Node> DetectByName(Node root, Dictionary<string, HumanoidBones> map) { Dictionary<HumanoidBones, Node> dictionary = new Dictionary<HumanoidBones, Node>(); foreach (Node item in root.Traverse()) { HumanoidBones result; if (map.TryGetValue(item.Name, out var value)) { if (value != HumanoidBones.unknown) { dictionary.Add(value, item); } } else if (Enum.TryParse<HumanoidBones>(item.Name, ignoreCase: true, out result)) { value = result; dictionary.Add(value, item); } } return dictionary; } public static Dictionary<HumanoidBones, Node> DetectByPosition(Node root) { //IL_00b8: 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) Node node = root.Traverse().First((Node x) => x.Children.Where((Node y) => y.Traverse().Count() >= 3).Count() >= 3); GetSpineAndHips(node, out var spine, out var leg_L, out var leg_R); if (leg_L.Equals(leg_R)) { throw new Exception(); } Leg leg = GetLeg(leg_L); Leg leg2 = GetLeg(leg_R); List<Node> list = new List<Node>(); foreach (Node item in spine.Traverse()) { list.Add(item); if (item.Children.Count == 3) { break; } } Func<Vector3, Vector3, bool> func = null; GetNeckAndArms(isLeft: (leg.UpperLeg.SkeletonLocalPosition.z != leg2.UpperLeg.SkeletonLocalPosition.z) ? ((Func<Vector3, Vector3, bool>)((Vector3 l, Vector3 r) => l.z < r.z)) : ((Func<Vector3, Vector3, bool>)((Vector3 l, Vector3 r) => l.x < r.x)), chest: list.Last(), neck: out var neck, arm_L: out var arm_L, arm_R: out var arm_R); Arm arm = GetArm(arm_L); Arm arm2 = GetArm(arm_R); Node[] array = neck.Traverse().ToArray(); Dictionary<HumanoidBones, Node> skeleton = new Dictionary<HumanoidBones, Node>(); Action<HumanoidBones, Node> action = delegate(HumanoidBones b, Node t) { if (t != null) { t.HumanoidBone = b; skeleton[b] = t; } }; action(HumanoidBones.hips, node); switch (list.Count) { case 0: throw new Exception(); case 1: action(HumanoidBones.spine, list[0]); break; case 2: action(HumanoidBones.spine, list[0]); action(HumanoidBones.chest, list[1]); break; case 3: action(HumanoidBones.spine, list[0]); action(HumanoidBones.chest, list[1]); action(HumanoidBones.upperChest, list[2]); break; default: action(HumanoidBones.spine, list[0]); action(HumanoidBones.chest, list[1]); action(HumanoidBones.upperChest, list.Last()); break; } switch (array.Length) { case 0: throw new Exception(); case 1: action(HumanoidBones.head, array[0]); break; case 2: action(HumanoidBones.neck, array[0]); action(HumanoidBones.head, array[1]); break; default: action(HumanoidBones.neck, array[0]); action(HumanoidBones.head, array.Where((Node x) => x.Parent.Children.Count == 1).Last()); break; } action(HumanoidBones.leftUpperLeg, leg.UpperLeg); action(HumanoidBones.leftLowerLeg, leg.LowerLeg); action(HumanoidBones.leftFoot, leg.Foot); action(HumanoidBones.leftToes, leg.Toes); action(HumanoidBones.rightUpperLeg, leg2.UpperLeg); action(HumanoidBones.rightLowerLeg, leg2.LowerLeg); action(HumanoidBones.rightFoot, leg2.Foot); action(HumanoidBones.rightToes, leg2.Toes); action(HumanoidBones.leftShoulder, arm.Shoulder); action(HumanoidBones.leftUpperArm, arm.UpperArm); action(HumanoidBones.leftLowerArm, arm.LowerArm); action(HumanoidBones.leftHand, arm.Hand); action(HumanoidBones.rightShoulder, arm2.Shoulder); action(HumanoidBones.rightUpperArm, arm2.UpperArm); action(HumanoidBones.rightLowerArm, arm2.LowerArm); action(HumanoidBones.rightHand, arm2.Hand); return skeleton; } private static bool HasAllHumanRequiredBone(Dictionary<HumanoidBones, Node> dict) { HumanoidBones[] requiredBones = RequiredBones; foreach (HumanoidBones key in requiredBones) { if (!dict.ContainsKey(key)) { return false; } } return true; } private static Dictionary<HumanoidBones, Node> _Detect(Node root) { List<Dictionary<HumanoidBones, Node>> list = new List<Dictionary<HumanoidBones, Node>>(); Dictionary<string, HumanoidBones>[] array = new Dictionary<string, HumanoidBones>[3] { s_nameBoneMap, s_nameBoneMapLA, s_nameBoneMapAccad }; foreach (Dictionary<string, HumanoidBones> map in array) { try { Dictionary<HumanoidBones, Node> dictionary = DetectByName(root, map); if (dictionary != null) { list.Add(dictionary); } } catch (Exception) { } } foreach (Dictionary<HumanoidBones, Node> item in list.OrderByDescending((Dictionary<HumanoidBones, Node> x) => x.Count)) { if (HasAllHumanRequiredBone(item)) { return item; } } return DetectByPosition(root); } public static Dictionary<HumanoidBones, Node> Detect(Node root) { try { Dictionary<HumanoidBones, Node> dictionary = _Detect(root); foreach (KeyValuePair<HumanoidBones, Node> item in dictionary) { item.Value.HumanoidBone = item.Key; } return dictionary; } catch { return null; } } } internal struct BoneWeight { public int boneIndex0; public int boneIndex1; public int boneIndex2; public int boneIndex3; public float weight0; public float weight1; public float weight2; public float weight3; } internal class MeshBuilder { public static BoneHeadTail[] Bones = new BoneHeadTail[21] { new BoneHeadTail(HumanoidBones.hips, HumanoidBones.spine, 0.1f, 0.06f), new BoneHeadTail(HumanoidBones.spine, HumanoidBones.chest), new BoneHeadTail(HumanoidBones.chest, HumanoidBones.neck, 0.1f, 0.06f), new BoneHeadTail(HumanoidBones.neck, HumanoidBones.head, 0.03f, 0.03f), new BoneHeadTail(HumanoidBones.head, new Vector3(0f, 0.1f, 0f), 0.1f, 0.1f), new BoneHeadTail(HumanoidBones.leftShoulder, HumanoidBones.leftUpperArm), new BoneHeadTail(HumanoidBones.leftUpperArm, HumanoidBones.leftLowerArm), new BoneHeadTail(HumanoidBones.leftLowerArm, HumanoidBones.leftHand), new BoneHeadTail(HumanoidBones.leftHand, new Vector3(-0.1f, 0f, 0f)), new BoneHeadTail(HumanoidBones.leftUpperLeg, HumanoidBones.leftLowerLeg), new BoneHeadTail(HumanoidBones.leftLowerLeg, HumanoidBones.leftFoot), new BoneHeadTail(HumanoidBones.leftFoot, HumanoidBones.leftToes), new BoneHeadTail(HumanoidBones.leftToes, new Vector3(0f, 0f, 0.1f)), new BoneHeadTail(HumanoidBones.rightShoulder, HumanoidBones.rightUpperArm), new BoneHeadTail(HumanoidBones.rightUpperArm, HumanoidBones.rightLowerArm), new BoneHeadTail(HumanoidBones.rightLowerArm, HumanoidBones.rightHand), new BoneHeadTail(HumanoidBones.rightHand, new Vector3(0.1f, 0f, 0f)), new BoneHeadTail(HumanoidBones.rightUpperLeg, HumanoidBones.rightLowerLeg), new BoneHeadTail(HumanoidBones.rightLowerLeg, HumanoidBones.rightFoot), new BoneHeadTail(HumanoidBones.rightFoot, HumanoidBones.rightToes), new BoneHeadTail(HumanoidBones.rightToes, new Vector3(0f, 0f, 0.1f)) }; private List<Vector3> m_positioins = new List<Vector3>(); private List<int> m_indices = new List<int>(); private List<BoneWeight> m_boneWeights = new List<BoneWeight>(); public void Build(List<Node> bones) { //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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_006a: 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_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) BoneHeadTail[] bones2 = Bones; for (int i = 0; i < bones2.Length; i++) { BoneHeadTail headTail = bones2[i]; Node node = bones.FirstOrDefault((Node x) => x.HumanoidBone == headTail.Head); if (node != null) { Node node2 = null; if (headTail.Tail != HumanoidBones.unknown) { node2 = bones.FirstOrDefault((Node x) => x.HumanoidBone == headTail.Tail); } if (node2 != null) { AddBone(node.SkeletonLocalPosition, node2.SkeletonLocalPosition, bones.IndexOf(node), headTail.XWidth, headTail.ZWidth); } else if (headTail.TailOffset != Vector3.zero) { AddBone(node.SkeletonLocalPosition, node.SkeletonLocalPosition + headTail.TailOffset, bones.IndexOf(node), headTail.XWidth, headTail.ZWidth); } } else { Console.Error.WriteLine($"{headTail.Head} not found"); } } } private void AddBone(Vector3 head, Vector3 tail, int boneIndex, float xWidth, float zWidth) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: 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_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_0022: 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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_004e: 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_0059: 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_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) Vector3 val = tail - head; Vector3 normalized = ((Vector3)(ref val)).normalized; Vector3 val2; Vector3 val3; if (Vector3.Dot(normalized, Vector3.forward) >= 1f) { val2 = Vector3.right; val3 = -Vector3.up; } else { val2 = Vector3.Normalize(Vector3.Cross(normalized, Vector3.forward)); val3 = Vector3.forward; } AddBox((head + tail) * 0.5f, val2 * xWidth, (tail - head) * 0.5f, val3 * zWidth, boneIndex); } private void AddBox(Vector3 center, Vector3 xaxis, Vector3 yaxis, Vector3 zaxis, int boneIndex) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: 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_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0031: 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_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_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_0044: 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_004c: 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_005b: 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_0061: 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_0067: 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_006e: 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_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0076: 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_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_0083: 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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0091: 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_0097: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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_00a5: 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_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: 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) //IL_00c0: 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_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: 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_00ce: 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_00d4: 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_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: 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_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: 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_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_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_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: 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_012d: Unknown result type (might be due to invalid IL or missing references) //IL_012f: 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_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0141: 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_0149: 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) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0150: 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_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0179: 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_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: 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_018d: Unknown result type (might be due to invalid IL or missing references) //IL_018e: 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_0195: 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_019b: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: 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) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: 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_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0208: 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) AddQuad(center - yaxis - xaxis - zaxis, center - yaxis + xaxis - zaxis, center - yaxis + xaxis + zaxis, center - yaxis - xaxis + zaxis, boneIndex); AddQuad(center + yaxis - xaxis - zaxis, center + yaxis + xaxis - zaxis, center + yaxis + xaxis + zaxis, center + yaxis - xaxis + zaxis, boneIndex, reverse: true); AddQuad(center - xaxis - yaxis - zaxis, center - xaxis + yaxis - zaxis, center - xaxis + yaxis + zaxis, center - xaxis - yaxis + zaxis, boneIndex, reverse: true); AddQuad(center + xaxis - yaxis - zaxis, center + xaxis + yaxis - zaxis, center + xaxis + yaxis + zaxis, center + xaxis - yaxis + zaxis, boneIndex); AddQuad(center - zaxis - xaxis - yaxis, center - zaxis + xaxis - yaxis, center - zaxis + xaxis + yaxis, center - zaxis - xaxis + yaxis, boneIndex, reverse: true); AddQuad(center + zaxis - xaxis - yaxis, center + zaxis + xaxis - yaxis, center + zaxis + xaxis + yaxis, center + zaxis - xaxis + yaxis, boneIndex); } private void AddQuad(Vector3 v0, Vector3 v1, Vector3 v2, Vector3 v3, int boneIndex, bool reverse = false) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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_00b1: 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_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) int count = m_positioins.Count; if (float.IsNaN(v0.x) || float.IsNaN(v0.y) || float.IsNaN(v0.z)) { throw new Exception(); } m_positioins.Add(v0); if (float.IsNaN(v1.x) || float.IsNaN(v1.y) || float.IsNaN(v1.z)) { throw new Exception(); } m_positioins.Add(v1); if (float.IsNaN(v2.x) || float.IsNaN(v2.y) || float.IsNaN(v2.z)) { throw new Exception(); } m_positioins.Add(v2); if (float.IsNaN(v3.x) || float.IsNaN(v3.y) || float.IsNaN(v3.z)) { throw new Exception(); } m_positioins.Add(v3); BoneWeight item = new BoneWeight { boneIndex0 = boneIndex, weight0 = 1f }; m_boneWeights.Add(item); m_boneWeights.Add(item); m_boneWeights.Add(item); m_boneWeights.Add(item); if (reverse) { m_indices.Add(count + 3); m_indices.Add(count + 2); m_indices.Add(count + 1); m_indices.Add(count + 1); m_indices.Add(count); m_indices.Add(count + 3); } else { m_indices.Add(count); m_indices.Add(count + 1); m_indices.Add(count + 2); m_indices.Add(count + 2); m_indices.Add(count + 3); m_indices.Add(count); } } } internal struct BoneHeadTail { public HumanoidBones Head; public HumanoidBones Tail; public Vector3 TailOffset; public float XWidth; public float ZWidth; public BoneHeadTail(HumanoidBones head, HumanoidBones tail, float xWidth = 0.05f, float zWidth = 0.05f) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) Head = head; Tail = tail; TailOffset = Vector3.zero; XWidth = xWidth; ZWidth = zWidth; } public BoneHeadTail(HumanoidBones head, Vector3 tailOffset, float xWidth = 0.05f, float zWidth = 0.05f) { //IL_000f: 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) Head = head; Tail = HumanoidBones.unknown; TailOffset = tailOffset; XWidth = xWidth; ZWidth = zWidth; } } public static class MathFWrap { public static readonly float PI = MathF.PI; public static float Clamp(float src, float min, float max) { return Math.Max(Math.Min(src, min), max); } public static int Clamp(int src, int min, int max) { return Math.Max(Math.Min(src, min), max); } } public enum TopologyType { Points, Lines, LineLoop, LineStrip, Triangles, TriangleStrip, TriangleFan } public struct Triangle { public int Vertex0; public int Vertex1; public int Vertex2; public Triangle(int v0, int v1, int v2) { Vertex0 = v0; Vertex1 = v1; Vertex2 = v2; } } public class Submesh { public int Offset; public int DrawCount; public int? Material; public override string ToString() { return $"{Material}({DrawCount})"; } public Submesh(int? material) : this(0, 0, material) { } public Submesh(int offset, int drawCount, int? material) { Offset = offset; DrawCount = drawCount; Material = material; } } public class Mesh { public VertexBuffer VertexBuffer; public BufferAccessor IndexBuffer; public TopologyType Topology = TopologyType.Triangles; public List<MorphTarget> MorphTargets = new List<MorphTarget>(); public List<Submesh> Submeshes { get; private set; } = new List<Submesh>(); public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); foreach (string item in VertexBuffer.Select((KeyValuePair<string, BufferAccessor> x) => x.Key)) { stringBuilder.Append("[" + item + "]"); } if (IndexBuffer != null) { if (Topology == TopologyType.Triangles) { stringBuilder.Append($" {IndexBuffer.Count / 3} tris"); } else { stringBuilder.Append($" topology: {Topology}"); } } if (MorphTargets.Any()) { stringBuilder.Append($", {MorphTargets.Count} morphs"); foreach (KeyValuePair<string, BufferAccessor> item2 in MorphTargets[0].VertexBuffer) { stringBuilder.Append("[" + item2.Key + "]"); } } int num = VertexBuffer.ByteLength + IndexBuffer.ByteLength + MorphTargets.Sum((MorphTarget x) => x.VertexBuffer.ByteLength); stringBuilder.Append($": expected {num / 1000 / 1000} MB"); return stringBuilder.ToString(); } public Mesh(TopologyType topology = TopologyType.Triangles) { Topology = topology; } public void ApplyRotationAndScaling(Matrix4x4 m) { //IL_0017: 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_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0078: 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) ((Matrix4x4)(ref m)).SetColumn(3, new Vector4(0f, 0f, 0f, 1f)); NativeArray<Vector3> val = VertexBuffer.Positions.Bytes.Reinterpret<Vector3>(1); NativeArray<Vector3> val2 = VertexBuffer.Normals.Bytes.Reinterpret<Vector3>(1); for (int i = 0; i < val.Length; i++) { val[i] = ((Matrix4x4)(ref m)).MultiplyPoint(val[i]); val2[i] = ((Matrix4x4)(ref m)).MultiplyVector(val2[i]); } } } public class MeshGroup : GltfId { public readonly string Name; public readonly List<Mesh> Meshes = new List<Mesh>(); public Skin Skin; public bool HasSharedBuffer { get { if (Meshes.Count == 1) { return Meshes[0].Submeshes.Count > 1; } return false; } } public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(Name); if (Skin != null) { stringBuilder.Append("(skinned)"); } bool flag = true; foreach (Mesh mesh in Meshes) { if (flag) { flag = false; } else { stringBuilder.Append(", "); } stringBuilder.Append(mesh); } return stringBuilder.ToString(); } public MeshGroup(string name) { Name = name; } } public class Model { private struct Reverser { public Action<BufferAccessor> ReverseBuffer; public Func<Vector3, Vector3> ReverseVector3; public Func<Matrix4x4, Matrix4x4> ReverseMatrix; } public Coordinates Coordinates; public string AssetVersion = "2.0"; public string AssetGenerator = "UniVRM-0.131.2"; public string AssetCopyright; public string AssetMinVersion; public readonly List<object> Materials = new List<object>(); public readonly List<Skin> Skins = new List<Skin>(); public readonly List<MeshGroup> MeshGroups = new List<MeshGroup>(); private Node m_root = new Node("__root__"); public List<Node> Nodes = new List<Node>(); public Node Root => m_root; private static Reverser ZReverser => new Reverser { ReverseBuffer = ReverseZ, ReverseVector3 = (Vector3 v) => UnityExtensions.ReverseZ(v), ReverseMatrix = (Matrix4x4 m) => UnityExtensions.ReverseZ(m) }; private static Reverser XReverser => new Reverser { ReverseBuffer = ReverseX, ReverseVector3 = (Vector3 v) => UnityExtensions.ReverseX(v), ReverseMatrix = (Matrix4x4 m) => UnityExtensions.ReverseX(m) }; public Model(Coordinates coordinates) { Coordinates = coordinates; } public void SetRoot(Node root) { m_root = root; Nodes.Clear(); Nodes.AddRange(root.Traverse().Skip(1)); } public Dictionary<HumanoidBones, Node> GetBoneMap() { return (from x in Root.Traverse() where x.HumanoidBone.HasValue select x).ToDictionary((Node x) => x.HumanoidBone.Value, (Node x) => x); } public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("[GLTF] generator: " + AssetGenerator + "\n"); for (int i = 0; i < Materials.Count; i++) { object arg = Materials[i]; stringBuilder.Append($"[Material#{i:00}] {arg}\n"); } for (int j = 0; j < MeshGroups.Count; j++) { MeshGroup arg2 = MeshGroups[j]; stringBuilder.Append($"[Mesh#{j:00}] {arg2}\n"); } stringBuilder.Append($"[Node] {Nodes.Count} nodes\n"); foreach (Skin skin in Skins) { stringBuilder.Append($"[Skin] {skin}\n"); } return stringBuilder.ToString(); } public bool CheckVrmHumanoid() { HashSet<HumanoidBones> hashSet = new HashSet<HumanoidBones>(); foreach (Node node in Nodes) { if (node.HumanoidBone.HasValue) { if (hashSet.Contains(node.HumanoidBone.Value)) { return false; } hashSet.Add(node.HumanoidBone.Value); } } IEnumerable<BoneRequiredAttribute[]> source = from bone in CachedEnum.GetValues<HumanoidBones>() select bone.GetType().GetField(bone.ToString()) into info select info.GetCustomAttributes(typeof(BoneRequiredAttribute), inherit: false) as BoneRequiredAttribute[] into attributes where attributes.Length != 0 select attributes; if ((from humanoid in hashSet select humanoid.GetType().GetField(humanoid.ToString()) into info select info.GetCustomAttributes(typeof(BoneRequiredAttribute), inherit: false) as BoneRequiredAttribute[] into attributes where attributes.Length != 0 select attributes).Count() != source.Count()) { return false; } return true; } public static Node GetNode(Node root, string path) { string[] source = path.Split('/'); IEnumerator<string> it = source.Select((string x) => x).GetEnumerator(); Node node = root; while (it.MoveNext()) { node = node.Children.First((Node x) => x.Name == it.Current); } return node; } public void ApplyRotationAndScale() { //IL_0075: 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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) Dictionary<Node, Vector3> dictionary = Nodes.ToDictionary((Node x) => x, (Node x) => x.Translation); foreach (Node item in Root.Traverse().Skip(1)) { if (dictionary.TryGetValue(item, out var value)) { Matrix4x4 m = Matrix4x4.Translate(value); item.SetMatrix(m, calcWorldMatrix: false); } } } public void NodeAdd(Node node, Node parent = null) { if (parent == null) { parent = Root; } parent.Add(node); if (Nodes.Contains(node)) { throw new ArgumentException($"Nodes contain {node}"); } Nodes.Add(node); } public void NodeRemove(Node remove) { foreach (Node node in Nodes) { if (node.Parent == remove) { remove.Remove(node); } if (remove.Parent == node) { node.Remove(remove); } } if (Root.Children.Contains(remove)) { Root.Remove(remove); } Nodes.Remove(remove); } public string SkinningBake(INativeArrayManager arrayManager) { //IL_00a1: Unknown result type (might be due to invalid IL or missing references) foreach (Node node in Nodes) { MeshGroup meshGroup = node.MeshGroup; if (meshGroup == null) { continue; } if (meshGroup.Skin != null) { foreach (Mesh mesh in meshGroup.Meshes) { meshGroup.Skin.Skinning(arrayManager, mesh.VertexBuffer); } meshGroup.Skin.Root = null; meshGroup.Skin.InverseMatrices = null; continue; } foreach (Mesh mesh2 in meshGroup.Meshes) { mesh2.ApplyRotationAndScaling(node.Matrix); } } ApplyRotationAndScale(); foreach (Node node2 in Nodes) { MeshGroup meshGroup2 = node2.MeshGroup; if (meshGroup2 == null) { continue; } foreach (Mesh mesh3 in meshGroup2.Meshes) { _ = mesh3; if (meshGroup2.Skin != null) { meshGroup2.Skin.CalcInverseMatrices(arrayManager); } } } return "SkinningBake"; } private static void ReverseX(BufferAccessor ba) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Invalid comparison between Unknown and I4 //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Invalid comparison between Unknown and I4 //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Invalid comparison between Unknown and I4 //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_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) if ((int)ba.ComponentType != 5126) { throw new Exception(); } if ((int)ba.AccessorType == 2) { NativeArray<Vector3> val = ba.Bytes.Reinterpret<Vector3>(1); for (int i = 0; i < val.Length; i++) { val[i] = UnityExtensions.ReverseX(val[i]); } return; } if ((int)ba.AccessorType == 6) { NativeArray<Matrix4x4> val2 = ba.Bytes.Reinterpret<Matrix4x4>(1); for (int j = 0; j < val2.Length; j++) { val2[j] = UnityExtensions.ReverseX(val2[j]); } return; } throw new NotImplementedException(); } private static void ReverseZ(BufferAccessor ba) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Invalid comparison between Unknown and I4 //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Invalid comparison between Unknown and I4 //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Invalid comparison between Unknown and I4 //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_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) if ((int)ba.ComponentType != 5126) { throw new Exception(); } if ((int)ba.AccessorType == 2) { NativeArray<Vector3> val = ba.Bytes.Reinterpret<Vector3>(1); for (int i = 0; i < val.Length; i++) { val[i] = UnityExtensions.ReverseZ(val[i]); } return; } if ((int)ba.AccessorType == 6) { NativeArray<Matrix4x4> val2 = ba.Bytes.Reinterpret<Matrix4x4>(1); for (int j = 0; j < val2.Length; j++) { val2[j] = UnityExtensions.ReverseZ(val2[j]); } return; } throw new NotImplementedException(); } public void ConvertCoordinate(Coordinates coordinates, bool ignoreVrm = false) { if (Coordinates.Equals(coordinates)) { return; } if (Coordinates.IsVrm0 && coordinates.IsUnity) { ReverseAxisAndFlipTriangle(ZReverser, ignoreVrm); UVVerticalFlip(); Coordinates = coordinates; return; } if (Coordinates.IsUnity && coordinates.IsVrm0) { ReverseAxisAndFlipTriangle(ZReverser, ignoreVrm); UVVerticalFlip(); Coordinates = coordinates; return; } if (Coordinates.IsVrm1 && coordinates.IsUnity) { ReverseAxisAndFlipTriangle(XReverser, ignoreVrm); UVVerticalFlip(); Coordinates = coordinates; return; } if (Coordinates.IsUnity && coordinates.IsVrm1) { ReverseAxisAndFlipTriangle(XReverser, ignoreVrm); UVVerticalFlip(); Coordinates = coordinates; return; } throw new NotImplementedException(); } private void UVVerticalFlip() { //IL_003b: 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_004a: 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) //IL_005d: Unknown result type (might be due to invalid IL or missing references) foreach (MeshGroup meshGroup in MeshGroups) { foreach (Mesh mesh in meshGroup.Meshes) { BufferAccessor texCoords = mesh.VertexBuffer.TexCoords; if (texCoords != null) { NativeArray<Vector2> val = texCoords.Bytes.Reinterpret<Vector2>(1); for (int i = 0; i < val.Length; i++) { val[i] = UnityExtensions.UVVerticalFlip(val[i]); } } } } } private void ReverseAxisAndFlipTriangle(Reverser reverser, bool ignoreVrm) { //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0278: 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_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Expected I4, but got Unknown //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_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_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) HashSet<NativeArray<byte>> hashSet = new HashSet<NativeArray<byte>>(); foreach (MeshGroup meshGroup in MeshGroups) { foreach (Mesh mesh in meshGroup.Meshes) { foreach (KeyValuePair<string, BufferAccessor> item in mesh.VertexBuffer) { string key = item.Key; BufferAccessor value = item.Value; if (key == "POSITION" || key == "NORMAL") { if (hashSet.Add(value.Bytes)) { reverser.ReverseBuffer(value); } } else { _ = key == "TANGENT"; } } if (hashSet.Add(mesh.IndexBuffer.Bytes)) { AccessorValueType componentType = mesh.IndexBuffer.ComponentType; switch (componentType - 5121) { case 0: FlipTriangle(mesh.IndexBuffer.Bytes); break; case 2: FlipTriangle(mesh.IndexBuffer.Bytes.Reinterpret<ushort>(1)); break; case 4: FlipTriangle(mesh.IndexBuffer.Bytes.Reinterpret<uint>(1)); break; default: throw new NotImplementedException(); } } foreach (MorphTarget morphTarget in mesh.MorphTargets) { foreach (KeyValuePair<string, BufferAccessor> item2 in morphTarget.VertexBuffer) { string key2 = item2.Key; BufferAccessor value2 = item2.Value; if ((key2 == "POSITION" || key2 == "NORMAL") && hashSet.Add(value2.Bytes)) { reverser.ReverseBuffer(value2); } _ = key2 == "TANGENT"; } } } } foreach (Node item3 in Root.Traverse().Skip(1)) { item3.SetMatrix(reverser.ReverseMatrix(item3.Matrix), calcWorldMatrix: false); } foreach (Skin skin in Skins) { if (skin.InverseMatrices != null && hashSet.Add(skin.InverseMatrices.Bytes)) { reverser.ReverseBuffer(skin.InverseMatrices); } } } private static void FlipTriangle(NativeArray<byte> indices) { for (int i = 0; i < indices.Length; i += 3) { byte b = indices[i + 2]; indices[i + 2] = indices[i]; indices[i] = b; } } private static void FlipTriangle(NativeArray<ushort> indices) { for (int i = 0; i < indices.Length; i += 3) { ushort num = indices[i + 2]; indices[i + 2] = indices[i]; indices[i] = num; } } private static void FlipTriangle(NativeArray<uint> indices) { for (int i = 0; i < indices.Length; i += 3) { uint num = indices[i + 2]; indices[i + 2] = indices[i]; indices[i] = num; } } } public class MorphTarget { public readonly string Name; public VertexBuffer VertexBuffer; public override string ToString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(Name); foreach (KeyValuePair<string, BufferAccessor> item in VertexBuffer) { stringBuilder.Append("[" + item.Key + "]"); } return stringBuilder.ToString(); } public MorphTarget(string name) { Name = name; } } public enum ChildMatrixMode { KeepLocal, KeepWorld } public class Node : GltfId, IEnumerable<Node>, IEnumerable { private static int s_nextUniqueId = 1; public readonly int UniqueID; public Vector3 LocalTranslationWithoutUpdate = Vector3.zero; public Quaternion LocalRotationWithoutUpdate = Quaternion.identity; public Vector3 LocalScalingWithoutUpdate = Vector3.one; private Matrix4x4 m_matrix = Matrix4x4.identity; private readonly List<Node> m_children = new List<Node>(); public MeshGroup MeshGroup; private HumanoidBones? m_bone; public string Name { get; set; } public Vector3 LocalTranslation { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return LocalTranslationWithoutUpdate; } set { //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_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_002c: 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) if (!(LocalTranslationWithoutUpdate == value)) { LocalTranslationWithoutUpdate = value; CalcWorldMatrix((Parent != null) ? Parent.Matrix : Matrix4x4.identity); } } } public Quaternion LocalRotation { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return LocalRotationWithoutUpdate; } set { //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_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_002c: 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) if (!(LocalRotationWithoutUpdate == value)) { LocalRotationWithoutUpdate = value; CalcWorldMatrix((Parent != null) ? Parent.Matrix : Matrix4x4.identity); } } } public Vector3 LocalScaling { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return LocalScalingWithoutUpdate; } set { //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_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_002c: 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) if (!(LocalScalingWithoutUpdate == value)) { LocalScalingWithoutUpdate = value; CalcWorldMatrix((Parent != null) ? Parent.Matrix : Matrix4x4.identity); } } } public Matrix4x4 LocalMatrix => Matrix4x4.Translate(LocalTranslation) * Matrix4x4.Rotate(LocalRotation) * Matrix4x4.Scale(LocalScaling); public Matrix4x4 Matrix => m_matrix; public Quaternion Rotation { get { //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_0009: Unknown result type (might be due to invalid IL or missing references) Matrix4x4 matrix = Matrix; return ((Matrix4x4)(ref matrix)).rotation; } set { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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) if (Parent == null) { LocalRotation = value; } else { LocalRotation = Quaternion.Inverse(Parent.Rotation) * value; } } } public Matrix4x4 InverseMatrix { get { //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_0009: Unknown result type (might be due to invalid IL or missing references) Matrix4x4 matrix = Matrix; return ((Matrix4x4)(ref matrix)).inverse; } } public Vector3 Translation { get { //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_000a: 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) Matrix4x4 matrix = Matrix; return Vector4.op_Implicit(((Matrix4x4)(ref matrix)).GetColumn(3)); } set { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: 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) if (Parent == null) { LocalTranslation = value; return; } Matrix4x4 inverseMatrix = Parent.InverseMatrix; LocalTranslation = ((Matrix4x4)(ref inverseMatrix)).MultiplyPoint(value); } } public Vector3 SkeletonLocalPosition { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Translation; } set { //IL_0001: Unknown result type (might be due to invalid IL or missing references) Translation = value; } } public Node Parent { get; private set; } public Mesh Mesh => MeshGroup?.Meshes?[0]; public HumanoidBones? HumanoidBone { get { return m_bone; } set { if (m_bone != value && value != HumanoidBones.unknown) { m_bone = value; } } } public IReadOnlyList<Node> Children => m_children; public event Action<Matrix4x4> MatrixUpdated; public Node(string name) { //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) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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) UniqueID = s_nextUniqueId++; Name = name; } public void SetLocalMatrix(Matrix4x4 value, bool calcWorldMatrix) { //IL_0000: 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_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) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missi
valheim_Data/Managed/UniHumanoid.dll
Decompiled 20 hours 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.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using UniGLTF; using UniGLTF.Utils; using UnityEngine; using UnityEngine.Serialization; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] [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[2148] { 0, 0, 0, 1, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 108, 105, 112, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 65, 118, 97, 116, 97, 114, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 66, 111, 110, 101, 71, 105, 122, 109, 111, 68, 114, 97, 119, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 66, 111, 110, 101, 77, 97, 112, 112, 105, 110, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 54, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 66, 118, 104, 66, 111, 110, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 72, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 69, 110, 117, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 57, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 70, 111, 114, 109, 97, 116, 92, 66, 118, 104, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 70, 111, 114, 109, 97, 116, 92, 66, 118, 104, 67, 104, 97, 110, 110, 101, 108, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 69, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 70, 111, 114, 109, 97, 116, 92, 66, 118, 104, 67, 104, 97, 110, 110, 101, 108, 67, 117, 114, 118, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 70, 111, 114, 109, 97, 116, 92, 66, 118, 104, 69, 110, 100, 83, 105, 116, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 70, 111, 114, 109, 97, 116, 92, 66, 118, 104, 69, 120, 99, 101, 112, 116, 105, 111, 110, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 70, 111, 114, 109, 97, 116, 92, 66, 118, 104, 78, 111, 100, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 60, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 72, 117, 109, 97, 110, 80, 111, 115, 101, 67, 108, 105, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 72, 117, 109, 97, 110, 80, 111, 115, 101, 84, 114, 97, 110, 115, 102, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 72, 117, 109, 97, 110, 111, 105, 100, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 72, 117, 109, 97, 110, 111, 105, 100, 76, 111, 97, 100, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 52, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 73, 66, 111, 110, 101, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 73, 79, 92, 66, 118, 104, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 108, 105, 112, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 61, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 73, 79, 92, 66, 118, 104, 73, 109, 112, 111, 114, 116, 101, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 73, 79, 92, 66, 118, 104, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 74, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 73, 79, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 66, 118, 104, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 76, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 73, 79, 92, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 92, 85, 110, 105, 116, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 58, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 77, 117, 115, 99, 108, 101, 68, 101, 98, 117, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 62, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 77, 117, 115, 99, 108, 101, 73, 110, 115, 112, 101, 99, 116, 111, 114, 46, 99, 115, 0, 0, 0, 2, 0, 0, 0, 68, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 80, 111, 115, 101, 77, 111, 100, 105, 102, 105, 101, 114, 92, 72, 97, 110, 100, 80, 111, 115, 101, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 67, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 80, 111, 115, 101, 77, 111, 100, 105, 102, 105, 101, 114, 92, 72, 97, 110, 100, 82, 105, 103, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 73, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 80, 111, 115, 101, 77, 111, 100, 105, 102, 105, 101, 114, 92, 73, 80, 111, 115, 101, 77, 111, 100, 105, 102, 105, 101, 114, 46, 99, 115, 0, 0, 0, 1, 0, 0, 0, 55, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 83, 107, 101, 108, 101, 116, 111, 110, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 64, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 83, 107, 101, 108, 101, 116, 111, 110, 69, 115, 116, 105, 109, 97, 116, 111, 114, 46, 99, 115, 0, 0, 0, 4, 0, 0, 0, 66, 92, 80, 97, 99, 107, 97, 103, 101, 115, 92, 99, 111, 109, 46, 118, 114, 109, 99, 46, 103, 108, 116, 102, 92, 82, 117, 110, 116, 105, 109, 101, 92, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 92, 83, 107, 101, 108, 101, 116, 111, 110, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 46, 99, 115 }, TypesData = new byte[1430] { 0, 0, 0, 0, 32, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 65, 110, 105, 109, 97, 116, 105, 111, 110, 67, 108, 105, 112, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 21, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 111, 110, 101, 76, 105, 109, 105, 116, 0, 0, 0, 0, 29, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 65, 118, 97, 116, 97, 114, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 0, 0, 0, 0, 27, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 111, 110, 101, 71, 105, 122, 109, 111, 68, 114, 97, 119, 101, 114, 0, 0, 0, 0, 23, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 111, 110, 101, 77, 97, 112, 112, 105, 110, 103, 0, 0, 0, 0, 19, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 66, 111, 110, 101, 0, 0, 0, 0, 26, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 69, 110, 117, 109, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 15, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 0, 0, 0, 0, 32, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 46, 66, 118, 104, 124, 80, 97, 116, 104, 87, 105, 116, 104, 80, 114, 111, 112, 101, 114, 116, 121, 0, 0, 0, 0, 32, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 67, 104, 97, 110, 110, 101, 108, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 27, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 67, 104, 97, 110, 110, 101, 108, 67, 117, 114, 118, 101, 0, 0, 0, 0, 22, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 69, 110, 100, 83, 105, 116, 101, 0, 0, 0, 0, 24, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 69, 120, 99, 101, 112, 116, 105, 111, 110, 0, 0, 0, 0, 19, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 78, 111, 100, 101, 0, 0, 0, 0, 25, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 72, 117, 109, 97, 110, 80, 111, 115, 101, 67, 108, 105, 112, 0, 0, 0, 0, 29, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 72, 117, 109, 97, 110, 80, 111, 115, 101, 84, 114, 97, 110, 115, 102, 101, 114, 0, 0, 0, 0, 20, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 72, 117, 109, 97, 110, 111, 105, 100, 0, 0, 0, 0, 31, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 46, 72, 117, 109, 97, 110, 111, 105, 100, 124, 86, 97, 108, 105, 100, 97, 116, 105, 111, 110, 0, 0, 0, 0, 26, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 72, 117, 109, 97, 110, 111, 105, 100, 76, 111, 97, 100, 101, 114, 0, 0, 0, 0, 17, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 73, 66, 111, 110, 101, 0, 0, 0, 0, 27, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 73, 66, 111, 110, 101, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 24, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 65, 110, 105, 109, 97, 116, 105, 111, 110, 0, 0, 0, 0, 33, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 46, 66, 118, 104, 65, 110, 105, 109, 97, 116, 105, 111, 110, 124, 67, 117, 114, 118, 101, 83, 101, 116, 0, 0, 0, 0, 23, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 73, 109, 112, 111, 114, 116, 101, 114, 0, 0, 0, 0, 27, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 0, 0, 0, 0, 30, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 73, 109, 112, 111, 114, 116, 101, 114, 67, 111, 110, 116, 101, 120, 116, 0, 0, 0, 0, 25, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 27, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 85, 110, 105, 116, 121, 69, 120, 116, 101, 110, 115, 105, 111, 110, 115, 0, 0, 0, 0, 23, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 77, 117, 115, 99, 108, 101, 68, 101, 98, 117, 103, 0, 0, 0, 0, 30, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 46, 77, 117, 115, 99, 108, 101, 68, 101, 98, 117, 103, 124, 77, 117, 115, 99, 108, 101, 0, 0, 0, 0, 27, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 77, 117, 115, 99, 108, 101, 73, 110, 115, 112, 101, 99, 116, 111, 114, 0, 0, 0, 0, 28, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 72, 97, 110, 100, 80, 111, 115, 101, 77, 111, 100, 105, 102, 105, 101, 114, 0, 0, 0, 0, 37, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 46, 72, 97, 110, 100, 80, 111, 115, 101, 77, 111, 100, 105, 102, 105, 101, 114, 124, 72, 97, 110, 100, 80, 111, 115, 101, 0, 0, 0, 0, 19, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 72, 97, 110, 100, 82, 105, 103, 0, 0, 0, 0, 25, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 73, 80, 111, 115, 101, 77, 111, 100, 105, 102, 105, 101, 114, 0, 0, 0, 0, 20, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 83, 107, 101, 108, 101, 116, 111, 110, 0, 0, 0, 0, 29, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 73, 83, 107, 101, 108, 101, 116, 111, 110, 68, 101, 116, 101, 99, 116, 111, 114, 0, 0, 0, 0, 32, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 66, 118, 104, 83, 107, 101, 108, 101, 116, 111, 110, 69, 115, 116, 105, 109, 97, 116, 111, 114, 0, 0, 0, 0, 36, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 46, 66, 118, 104, 83, 107, 101, 108, 101, 116, 111, 110, 69, 115, 116, 105, 109, 97, 116, 111, 114, 124, 65, 114, 109, 0, 0, 0, 0, 36, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 46, 66, 118, 104, 83, 107, 101, 108, 101, 116, 111, 110, 69, 115, 116, 105, 109, 97, 116, 111, 114, 124, 76, 101, 103, 0, 0, 0, 0, 31, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 124, 83, 107, 101, 108, 101, 116, 111, 110, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 0, 0, 0, 0, 38, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 46, 83, 107, 101, 108, 101, 116, 111, 110, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 84, 83, 82, 66, 111, 120, 0, 0, 0, 0, 43, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 46, 83, 107, 101, 108, 101, 116, 111, 110, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 77, 101, 115, 104, 66, 117, 105, 108, 100, 101, 114, 0, 0, 0, 0, 44, 85, 110, 105, 72, 117, 109, 97, 110, 111, 105, 100, 46, 83, 107, 101, 108, 101, 116, 111, 110, 77, 101, 115, 104, 85, 116, 105, 108, 105, 116, 121, 124, 66, 111, 110, 101, 72, 101, 97, 100, 84, 97, 105, 108 }, TotalFiles = 30, TotalTypes = 44, IsEditorOnly = false }; } } namespace UniHumanoid; public static class AnimationClipUtility { private static Dictionary<string, string> TraitPropMap = new Dictionary<string, string> { { "Left Thumb 1 Stretched", "LeftHand.Thumb.1 Stretched" }, { "Left Thumb Spread", "LeftHand.Thumb Spread" }, { "Left Thumb 2 Stretched", "LeftHand.Thumb.2 Stretched" }, { "Left Thumb 3 Stretched", "LeftHand.Thumb.3 Stretched" }, { "Left Index 1 Stretched", "LeftHand.Index.1 Stretched" }, { "Left Index Spread", "LeftHand.Index Spread" }, { "Left Index 2 Stretched", "LeftHand.Index.2 Stretched" }, { "Left Index 3 Stretched", "LeftHand.Index.3 Stretched" }, { "Left Middle 1 Stretched", "LeftHand.Middle.1 Stretched" }, { "Left Middle Spread", "LeftHand.Middle Spread" }, { "Left Middle 2 Stretched", "LeftHand.Middle.2 Stretched" }, { "Left Middle 3 Stretched", "LeftHand.Middle.3 Stretched" }, { "Left Ring 1 Stretched", "LeftHand.Ring.1 Stretched" }, { "Left Ring Spread", "LeftHand.Ring Spread" }, { "Left Ring 2 Stretched", "LeftHand.Ring.2 Stretched" }, { "Left Ring 3 Stretched", "LeftHand.Ring.3 Stretched" }, { "Left Little 1 Stretched", "LeftHand.Little.1 Stretched" }, { "Left Little Spread", "LeftHand.Little Spread" }, { "Left Little 2 Stretched", "LeftHand.Little.2 Stretched" }, { "Left Little 3 Stretched", "LeftHand.Little.3 Stretched" }, { "Right Thumb 1 Stretched", "RightHand.Thumb.1 Stretched" }, { "Right Thumb Spread", "RightHand.Thumb Spread" }, { "Right Thumb 2 Stretched", "RightHand.Thumb.2 Stretched" }, { "Right Thumb 3 Stretched", "RightHand.Thumb.3 Stretched" }, { "Right Index 1 Stretched", "RightHand.Index.1 Stretched" }, { "Right Index Spread", "RightHand.Index Spread" }, { "Right Index 2 Stretched", "RightHand.Index.2 Stretched" }, { "Right Index 3 Stretched", "RightHand.Index.3 Stretched" }, { "Right Middle 1 Stretched", "RightHand.Middle.1 Stretched" }, { "Right Middle Spread", "RightHand.Middle Spread" }, { "Right Middle 2 Stretched", "RightHand.Middle.2 Stretched" }, { "Right Middle 3 Stretched", "RightHand.Middle.3 Stretched" }, { "Right Ring 1 Stretched", "RightHand.Ring.1 Stretched" }, { "Right Ring Spread", "RightHand.Ring Spread" }, { "Right Ring 2 Stretched", "RightHand.Ring.2 Stretched" }, { "Right Ring 3 Stretched", "RightHand.Ring.3 Stretched" }, { "Right Little 1 Stretched", "RightHand.Little.1 Stretched" }, { "Right Little Spread", "RightHand.Little Spread" }, { "Right Little 2 Stretched", "RightHand.Little.2 Stretched" }, { "Right Little 3 Stretched", "RightHand.Little.3 Stretched" } }; public static AnimationClip CreateAnimationClipFromHumanPose(HumanPose pose) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_0013: 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_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown //IL_009f: 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_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_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Expected O, but got Unknown //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Expected O, but got Unknown //IL_0131: 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_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Expected O, but got Unknown //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017b: 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) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Expected O, but got Unknown //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Expected O, but got Unknown //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Expected O, but got Unknown AnimationClip val = new AnimationClip(); AnimationCurve val2 = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, pose.bodyPosition.x) }); string text = "RootT.x"; val.SetCurve(string.Empty, typeof(Animator), text, val2); AnimationCurve val3 = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, pose.bodyPosition.y) }); string text2 = "RootT.y"; val.SetCurve(string.Empty, typeof(Animator), text2, val3); AnimationCurve val4 = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, pose.bodyPosition.z) }); string text3 = "RootT.z"; val.SetCurve(string.Empty, typeof(Animator), text3, val4); AnimationCurve val5 = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, pose.bodyRotation.x) }); string text4 = "RootQ.x"; val.SetCurve(string.Empty, typeof(Animator), text4, val5); AnimationCurve val6 = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, pose.bodyRotation.y) }); string text5 = "RootQ.y"; val.SetCurve(string.Empty, typeof(Animator), text5, val6); AnimationCurve val7 = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, pose.bodyRotation.z) }); string text6 = "RootQ.z"; val.SetCurve(string.Empty, typeof(Animator), text6, val7); AnimationCurve val8 = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, pose.bodyRotation.w) }); string text7 = "RootQ.w"; val.SetCurve(string.Empty, typeof(Animator), text7, val8); for (int i = 0; i < HumanTrait.MuscleCount; i++) { AnimationCurve val9 = new AnimationCurve((Keyframe[])(object)new Keyframe[1] { new Keyframe(0f, pose.muscles[i]) }); string text8 = HumanTrait.MuscleName[i]; if (TraitPropMap.ContainsKey(text8)) { text8 = TraitPropMap[text8]; } val.SetCurve(string.Empty, typeof(Animator), text8, val9); } return val; } } [Serializable] public struct BoneLimit { public HumanBodyBones humanBone; public string boneName; public bool useDefaultValues; public Vector3 min; public Vector3 max; public Vector3 center; public float axisLength; private static readonly Dictionary<HumanBodyBones, string> cachedHumanBodyBonesToBoneTraitNameMap = ((IEnumerable<string>)HumanTrait.BoneName).ToDictionary((Func<string, HumanBodyBones>)((string traitName) => (HumanBodyBones)Enum.Parse(typeof(HumanBodyBones), traitName.Replace(" ", ""))), (Func<string, string>)((string traitName) => traitName)); private static readonly Dictionary<string, HumanBodyBones> cachedBoneTraitNameToHumanBodyBonesMap = ((IEnumerable<string>)HumanTrait.BoneName).ToDictionary((Func<string, string>)((string traitName) => traitName), (Func<string, HumanBodyBones>)((string traitName) => (HumanBodyBones)Enum.Parse(typeof(HumanBodyBones), traitName.Replace(" ", "")))); public static BoneLimit From(HumanBone bone) { //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_004a: 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_005d: 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_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) return new BoneLimit { humanBone = cachedBoneTraitNameToHumanBodyBonesMap[((HumanBone)(ref bone)).humanName], boneName = ((HumanBone)(ref bone)).boneName, useDefaultValues = ((HumanLimit)(ref bone.limit)).useDefaultValues, min = ((HumanLimit)(ref bone.limit)).min, max = ((HumanLimit)(ref bone.limit)).max, center = ((HumanLimit)(ref bone.limit)).center, axisLength = ((HumanLimit)(ref bone.limit)).axisLength }; } public HumanBone ToHumanBone() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_0053: 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_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) HumanBone result = default(HumanBone); ((HumanBone)(ref result)).boneName = boneName; ((HumanBone)(ref result)).humanName = cachedHumanBodyBonesToBoneTraitNameMap[humanBone]; HumanLimit limit = default(HumanLimit); ((HumanLimit)(ref limit)).useDefaultValues = useDefaultValues; ((HumanLimit)(ref limit)).axisLength = axisLength; ((HumanLimit)(ref limit)).center = center; ((HumanLimit)(ref limit)).max = max; ((HumanLimit)(ref limit)).min = min; result.limit = limit; return result; } } [Serializable] public class AvatarDescription : ScriptableObject { public float armStretch = 0.05f; public float legStretch = 0.05f; public float upperArmTwist = 0.5f; public float lowerArmTwist = 0.5f; public float upperLegTwist = 0.5f; public float lowerLegTwist = 0.5f; public float feetSpacing; public bool hasTranslationDoF; public BoneLimit[] human; public IEnumerable<(Transform, HumanBodyBones)> ToHumanoidMap(Transform root) { Dictionary<string, Transform> map = new Dictionary<string, Transform>(); Transform[] componentsInChildren = ((Component)root).GetComponentsInChildren<Transform>(); foreach (Transform val in componentsInChildren) { map[((Object)val).name] = val; } return from x in human where !string.IsNullOrEmpty(x.boneName) && map.ContainsKey(x.boneName) select (map[x.boneName], humanBone: x.humanBone); } public Avatar CreateAvatarAndSetup(Transform root) { //IL_0095: Unknown result type (might be due to invalid IL or missing references) Avatar val = HumanoidLoader.BuildHumanAvatarFromMap(root, ToHumanoidMap(root)); ((Object)val).name = ((Object)this).name; Animator val2 = default(Animator); if (((Component)root).TryGetComponent<Animator>(ref val2)) { Dictionary<Transform, Vector3> dictionary = root.Traverse().ToDictionary((Transform x) => x, (Transform x) => x.position); val2.avatar = val; foreach (Transform item in root.Traverse()) { item.position = dictionary[item]; } } HumanPoseTransfer humanPoseTransfer = default(HumanPoseTransfer); if (((Component)root).TryGetComponent<HumanPoseTransfer>(ref humanPoseTransfer)) { humanPoseTransfer.Avatar = val; } return val; } public static AvatarDescription CreateFrom(HumanDescription description) { //IL_0079: Unknown result type (might be due to invalid IL or missing references) AvatarDescription avatarDescription = ScriptableObject.CreateInstance<AvatarDescription>(); ((Object)avatarDescription).name = "AvatarDescription"; avatarDescription.armStretch = ((HumanDescription)(ref description)).armStretch; avatarDescription.legStretch = ((HumanDescription)(ref description)).legStretch; avatarDescription.feetSpacing = ((HumanDescription)(ref description)).feetSpacing; avatarDescription.hasTranslationDoF = ((HumanDescription)(ref description)).hasTranslationDoF; avatarDescription.lowerArmTwist = ((HumanDescription)(ref description)).lowerArmTwist; avatarDescription.lowerLegTwist = ((HumanDescription)(ref description)).lowerLegTwist; avatarDescription.upperArmTwist = ((HumanDescription)(ref description)).upperArmTwist; avatarDescription.upperLegTwist = ((HumanDescription)(ref description)).upperLegTwist; avatarDescription.human = description.human.Select(BoneLimit.From).ToArray(); return avatarDescription; } public static AvatarDescription Create(AvatarDescription src = null) { AvatarDescription avatarDescription = ScriptableObject.CreateInstance<AvatarDescription>(); ((Object)avatarDescription).name = "AvatarDescription"; if ((Object)(object)src != (Object)null) { avatarDescription.armStretch = src.armStretch; avatarDescription.legStretch = src.legStretch; avatarDescription.feetSpacing = src.feetSpacing; avatarDescription.upperArmTwist = src.upperArmTwist; avatarDescription.lowerArmTwist = src.lowerArmTwist; avatarDescription.upperLegTwist = src.upperLegTwist; avatarDescription.lowerLegTwist = src.lowerLegTwist; } else { avatarDescription.armStretch = 0.05f; avatarDescription.legStretch = 0.05f; avatarDescription.feetSpacing = 0f; avatarDescription.lowerArmTwist = 0.5f; avatarDescription.upperArmTwist = 0.5f; avatarDescription.upperLegTwist = 0.5f; avatarDescription.lowerLegTwist = 0.5f; } return avatarDescription; } public static AvatarDescription Create(Transform[] boneTransforms, Skeleton skeleton) { return Create(skeleton.Bones.Select((KeyValuePair<HumanBodyBones, int> x) => new KeyValuePair<HumanBodyBones, Transform>(x.Key, boneTransforms[x.Value]))); } public static AvatarDescription Create(IEnumerable<KeyValuePair<HumanBodyBones, Transform>> skeleton) { AvatarDescription avatarDescription = Create(); avatarDescription.SetHumanBones(skeleton); return avatarDescription; } public void SetHumanBones(IEnumerable<KeyValuePair<HumanBodyBones, Transform>> skeleton) { human = skeleton.Select((KeyValuePair<HumanBodyBones, Transform> x) => new BoneLimit { humanBone = x.Key, boneName = ((Object)x.Value).name, useDefaultValues = true }).ToArray(); } public static Avatar CreateAvatarForCopyHierarchy(Animator src, GameObject dst, IDictionary<Transform, Transform> boneMap, Action<AvatarDescription> modAvatarDesc = null) { if ((Object)(object)src == (Object)null) { throw new ArgumentNullException("src"); } Dictionary<HumanBodyBones, Transform> humanBones = (from x in CachedEnum.GetValues<HumanBodyBones>() where (int)x != 55 select new { Key = x, Value = src.GetBoneTransform(x) } into x where (Object)(object)x.Value != (Object)null where boneMap.ContainsKey(x.Value) select x).ToDictionary(x => x.Key, x => boneMap[x.Value]); AvatarDescription avatarDescription = Create(); modAvatarDesc?.Invoke(avatarDescription); ForceTransformUniqueName.Process(dst.transform); avatarDescription.SetHumanBones(humanBones); Avatar obj = HumanoidLoader.BuildHumanAvatarFromMap(dst.transform, avatarDescription.ToHumanoidMap(dst.transform)); ((Object)obj).name = "created"; return obj; } } public class BoneGizmoDrawer : MonoBehaviour { private const float size = 0.03f; private readonly Vector3 SIZE = new Vector3(0.03f, 0.03f, 0.03f); [SerializeField] public bool Draw = true; private void OnDrawGizmos() { } } public class BoneMapping : MonoBehaviour { [SerializeField] public GameObject[] Bones = (GameObject[])(object)new GameObject[55]; [SerializeField] public AvatarDescription Description; private void Reset() { GetBones(); } private void GetBones() { //IL_0032: 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_0036: Invalid comparison between Unknown and I4 //IL_0039: 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) Bones = (GameObject[])(object)new GameObject[55]; Animator val = default(Animator); if (!((Component)this).TryGetComponent<Animator>(ref val) || !((Object)(object)val.avatar != (Object)null)) { return; } HumanBodyBones[] values = CachedEnum.GetValues<HumanBodyBones>(); foreach (HumanBodyBones val2 in values) { if ((int)val2 != 55) { Transform boneTransform = val.GetBoneTransform(val2); if ((Object)(object)boneTransform != (Object)null) { Bones[val2] = ((Component)boneTransform).gameObject; } continue; } break; } } public void GuessBoneMapping() { GameObject val = Bones[0]; if ((Object)(object)val == (Object)null) { UniGLTFLogger.Warning("require hips", (Object)null); return; } Skeleton skeleton = new BvhSkeletonEstimator().Detect(val.transform); Transform[] array = val.transform.Traverse().ToArray(); for (int i = 0; i < 55; i++) { int boneIndex = skeleton.GetBoneIndex((HumanBodyBones)i); if (boneIndex >= 0) { Bones[i] = ((Component)array[boneIndex]).gameObject; } } } public void EnsureTPose() { //IL_009a: 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_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: 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) //IL_00c8: 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_00da: 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_00f9: 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_0103: 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_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0114: 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_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) Dictionary<HumanBodyBones, Transform> dictionary = (from x in Bones.Select((GameObject x, int i) => new { i, x }) where (Object)(object)x.x != (Object)null select x).ToDictionary(x => (HumanBodyBones)x.i, x => x.x.transform); Vector3 val = dictionary[(HumanBodyBones)15].position - dictionary[(HumanBodyBones)13].position; Vector3 normalized = ((Vector3)(ref val)).normalized; dictionary[(HumanBodyBones)13].rotation = Quaternion.FromToRotation(normalized, Vector3.left) * dictionary[(HumanBodyBones)13].rotation; val = dictionary[(HumanBodyBones)16].position - dictionary[(HumanBodyBones)14].position; Vector3 normalized2 = ((Vector3)(ref val)).normalized; dictionary[(HumanBodyBones)14].rotation = Quaternion.FromToRotation(normalized2, Vector3.right) * dictionary[(HumanBodyBones)14].rotation; } public static void SetBonesToDescription(BoneMapping mapping, AvatarDescription description) { Dictionary<HumanBodyBones, Transform> humanBones = (from x in mapping.Bones.Select((GameObject x, int i) => new { i, x }) where (Object)(object)x.x != (Object)null select x).ToDictionary(x => (HumanBodyBones)x.i, x => x.x.transform); description.SetHumanBones(humanBones); } private void Awake() { if (Bones == null || Bones.All((GameObject x) => (Object)(object)x == (Object)null)) { GetBones(); } } } public class BvhBone : IBone { private List<IBone> _children = new List<IBone>(); public string Name { get; private set; } public Vector3 SkeletonLocalPosition { get; private set; } public IBone Parent { get; private set; } public IList<IBone> Children => _children; public BvhBone(string name, Vector3 position) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) Name = name; SkeletonLocalPosition = position; } public override string ToString() { return $"<BvhBone: {Name}>"; } public void Build(Transform t) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) foreach (Transform item in t) { Transform val = item; BvhBone bvhBone = new BvhBone(((Object)val).name, SkeletonLocalPosition + val.localPosition); bvhBone.Parent = this; _children.Add(bvhBone); bvhBone.Build(val); } } public void Build(BvhNode node) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) foreach (BvhNode child in node.Children) { BvhBone bvhBone = new BvhBone(child.Name, SkeletonLocalPosition + child.Offset.ToXReversedVector3()); bvhBone.Parent = this; _children.Add(bvhBone); bvhBone.Build(child); } } public IEnumerable<BvhBone> Traverse() { yield return this; foreach (IBone child in Children) { foreach (IBone item in child.Traverse()) { yield return (BvhBone)item; } } } } public static class EnumExtensions { public static string ToStringFromEnum(this HumanBodyBones val, bool compareBoneTrait = false) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Expected I4, but got Unknown switch ((int)val) { case 0: return "Hips"; case 1: return "LeftUpperLeg"; case 2: return "RightUpperLeg"; case 3: return "LeftLowerLeg"; case 4: return "RightLowerLeg"; case 5: return "LeftFoot"; case 6: return "RightFoot"; case 7: return "Spine"; case 8: return "Chest"; case 9: return "Neck"; case 10: return "Head"; case 11: return "LeftShoulder"; case 12: return "RightShoulder"; case 13: return "LeftUpperArm"; case 14: return "RightUpperArm"; case 15: return "LeftLowerArm"; case 16: return "RightLowerArm"; case 17: return "LeftHand"; case 18: return "RightHand"; case 19: return "LeftToes"; case 20: return "RightToes"; case 21: return "LeftEye"; case 22: return "RightEye"; case 23: return "Jaw"; case 24: if (!compareBoneTrait) { return "LeftThumbProximal"; } return "Left Thumb Proximal"; case 25: if (!compareBoneTrait) { return "LeftThumbIntermediate"; } return "Left Thumb Intermediate"; case 26: if (!compareBoneTrait) { return "LeftThumbDistal"; } return "Left Thumb Distal"; case 27: if (!compareBoneTrait) { return "LeftIndexProximal"; } return "Left Index Proximal"; case 28: if (!compareBoneTrait) { return "LeftIndexIntermediate"; } return "Left Index Intermediate"; case 29: if (!compareBoneTrait) { return "LeftIndexDistal"; } return "Left Index Distal"; case 30: if (!compareBoneTrait) { return "LeftMiddleProximal"; } return "Left Middle Proximal"; case 31: if (!compareBoneTrait) { return "LeftMiddleIntermediate"; } return "Left Middle Intermediate"; case 32: if (!compareBoneTrait) { return "LeftMiddleDistal"; } return "Left Middle Distal"; case 33: if (!compareBoneTrait) { return "LeftRingProximal"; } return "Left Ring Proximal"; case 34: if (!compareBoneTrait) { return "LeftRingIntermediate"; } return "Left Ring Intermediate"; case 35: if (!compareBoneTrait) { return "LeftRingDistal"; } return "Left Ring Distal"; case 36: if (!compareBoneTrait) { return "LeftLittleProximal"; } return "Left Little Proximal"; case 37: if (!compareBoneTrait) { return "LeftLittleIntermediate"; } return "Left Little Intermediate"; case 38: if (!compareBoneTrait) { return "LeftLittleDistal"; } return "Left Little Distal"; case 39: if (!compareBoneTrait) { return "RightThumbProximal"; } return "Right Thumb Proximal"; case 40: if (!compareBoneTrait) { return "RightThumbIntermediate"; } return "Right Thumb Intermediate"; case 41: if (!compareBoneTrait) { return "RightThumbDistal"; } return "Right Thumb Distal"; case 42: if (!compareBoneTrait) { return "RightIndexProximal"; } return "Right Index Proximal"; case 43: if (!compareBoneTrait) { return "RightIndexIntermediate"; } return "Right Index Intermediate"; case 44: if (!compareBoneTrait) { return "RightIndexDistal"; } return "Right Index Distal"; case 45: if (!compareBoneTrait) { return "RightMiddleProximal"; } return "Right Middle Proximal"; case 46: if (!compareBoneTrait) { return "RightMiddleIntermediate"; } return "Right Middle Intermediate"; case 47: if (!compareBoneTrait) { return "RightMiddleDistal"; } return "Right Middle Distal"; case 48: if (!compareBoneTrait) { return "RightRingProximal"; } return "Right Ring Proximal"; case 49: if (!compareBoneTrait) { return "RightRingIntermediate"; } return "Right Ring Intermediate"; case 50: if (!compareBoneTrait) { return "RightRingDistal"; } return "Right Ring Distal"; case 51: if (!compareBoneTrait) { return "RightLittleProximal"; } return "Right Little Proximal"; case 52: if (!compareBoneTrait) { return "RightLittleIntermediate"; } return "Right Little Intermediate"; case 53: if (!compareBoneTrait) { return "RightLittleDistal"; } return "Right Little Distal"; case 54: return "UpperChest"; case 55: return "LastBone"; default: throw new InvalidOperationException(); } } } public class Bvh { public struct PathWithProperty { public string Path; public string Property; public bool IsLocation; } private int m_frames; public BvhNode Root { get; private set; } public TimeSpan FrameTime { get; private set; } public BvhChannelCurve[] Channels { get; private set; } public int FrameCount => m_frames; public bool TryGetPathWithPropertyFromChannel(BvhChannelCurve channel, out PathWithProperty pathWithProp) { int num = Channels.ToList().IndexOf(channel); if (num == -1) { pathWithProp = default(PathWithProperty); return false; } foreach (BvhNode item in Root.Traverse()) { int num2 = 0; while (num2 < item.Channels.Length) { if (num == 0) { pathWithProp = new PathWithProperty { Path = GetPath(item), Property = item.Channels[num2].ToProperty(), IsLocation = item.Channels[num2].IsLocation() }; return true; } num2++; num--; } } throw new BvhException("channel is not found"); } public string GetPath(BvhNode node) { List<string> list = new List<string> { node.Name }; BvhNode bvhNode = node; while (bvhNode != null) { bvhNode = GetParent(bvhNode); if (bvhNode != null) { list.Insert(0, bvhNode.Name); } } return string.Join("/", list.ToArray()); } private BvhNode GetParent(BvhNode node) { foreach (BvhNode item in Root.Traverse()) { if (item.Children.Contains(node)) { return item; } } return null; } public BvhChannelCurve GetChannel(BvhNode target, BvhChannel channel) { int num = 0; foreach (BvhNode item in Root.Traverse()) { int num2 = 0; while (num2 < item.Channels.Length) { if (item == target && item.Channels[num2] == channel) { return Channels[num]; } num2++; num++; } } throw new BvhException("channel is not found"); } public override string ToString() { return $"{Root.Traverse().Count()}nodes, {Channels.Length}channels, {m_frames}frames, {(double)m_frames * FrameTime.TotalSeconds:0.00}seconds"; } public Bvh(BvhNode root, int frames, float seconds) { Root = root; FrameTime = TimeSpan.FromSeconds(seconds); m_frames = frames; int count = (from x in Root.Traverse() where x.Channels != null select x.Channels.Length).Sum(); Channels = (from x in Enumerable.Range(0, count) select new BvhChannelCurve(frames)).ToArray(); } public void ParseFrame(int frame, string line) { string[] array = (from x in line.Trim().Split() where !string.IsNullOrEmpty(x) select x).ToArray(); if (array.Length != Channels.Length) { throw new BvhException("frame key count is not match channel count"); } for (int num = 0; num < Channels.Length; num++) { Channels[num].SetKey(frame, float.Parse(array[num], CultureInfo.InvariantCulture)); } } public static Bvh Parse(string src) { using StringReader stringReader = new StringReader(src); if (stringReader.ReadLine() != "HIERARCHY") { throw new BvhException("not start with HIERARCHY"); } BvhNode bvhNode = ParseNode(stringReader); if (bvhNode == null) { return null; } int num = 0; float seconds = 0f; if (stringReader.ReadLine() == "MOTION") { string[] array = stringReader.ReadLine().Split(':'); if (array[0] != "Frames") { throw new BvhException("Frames is not found"); } num = int.Parse(array[1]); string[] array2 = stringReader.ReadLine().Split(':'); if (array2[0] != "Frame Time") { throw new BvhException("Frame Time is not found"); } seconds = float.Parse(array2[1], CultureInfo.InvariantCulture); } Bvh bvh = new Bvh(bvhNode, num, seconds); for (int i = 0; i < num; i++) { string line = stringReader.ReadLine(); bvh.ParseFrame(i, line); } return bvh; } private static BvhNode ParseNode(StringReader r, int level = 0) { string text = r.ReadLine().Trim(); string[] array = text.Split(); if (array.Length != 2) { if (array.Length == 1 && array[0] == "}") { return null; } throw new BvhException($"split to {array.Length}({text})"); } BvhNode bvhNode = null; if (array[0] == "ROOT") { if (level != 0) { throw new BvhException("nested ROOT"); } bvhNode = new BvhNode(array[1]); } else if (array[0] == "JOINT") { if (level == 0) { throw new BvhException("should ROOT, but JOINT"); } bvhNode = new BvhNode(array[1]); } else { if (!(array[0] == "End")) { throw new BvhException("unknown type: " + array[0]); } if (level == 0) { throw new BvhException("End in level 0"); } bvhNode = new BvhEndSite(); } if (r.ReadLine().Trim() != "{") { throw new BvhException("'{' is not found"); } bvhNode.Parse(r); while (true) { BvhNode bvhNode2 = ParseNode(r, level + 1); if (bvhNode2 == null) { break; } if (!(bvhNode2 is BvhEndSite)) { bvhNode.Children.Add(bvhNode2); } } return bvhNode; } } public enum BvhChannel { Xposition, Yposition, Zposition, Xrotation, Yrotation, Zrotation } public static class BvhChannelExtensions { public static string ToProperty(this BvhChannel ch) { return ch switch { BvhChannel.Xposition => "localPosition.x", BvhChannel.Yposition => "localPosition.y", BvhChannel.Zposition => "localPosition.z", BvhChannel.Xrotation => "localEulerAnglesBaked.x", BvhChannel.Yrotation => "localEulerAnglesBaked.y", BvhChannel.Zrotation => "localEulerAnglesBaked.z", _ => throw new BvhException("no property for " + ch), }; } public static bool IsLocation(this BvhChannel ch) { switch (ch) { case BvhChannel.Xposition: case BvhChannel.Yposition: case BvhChannel.Zposition: return true; case BvhChannel.Xrotation: case BvhChannel.Yrotation: case BvhChannel.Zrotation: return false; default: throw new BvhException("no property for " + ch); } } } public class BvhChannelCurve { public float[] Keys { get; private set; } public BvhChannelCurve(int frameCount) { Keys = new float[frameCount]; } public void SetKey(int frame, float value) { Keys[frame] = value; } } public class BvhEndSite : BvhNode { public BvhEndSite() : base("") { } public override void Parse(StringReader r) { r.ReadLine(); } } public class BvhException : Exception { public BvhException(string msg) : base(msg) { } } public class BvhNode { public string Name { get; private set; } public Vector3 Offset { get; private set; } public BvhChannel[] Channels { get; private set; } public List<BvhNode> Children { get; private set; } public BvhNode(string name) { Name = name; Children = new List<BvhNode>(); } public int GetChannelIndex(BvhChannel channel) { for (int i = 0; i < Channels.Length; i++) { if (channel == Channels[i]) { return i; } } throw new KeyNotFoundException(); } public virtual void Parse(StringReader r) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) Offset = ParseOffset(r.ReadLine()); Channels = ParseChannel(r.ReadLine()); } private static Vector3 ParseOffset(string line) { //IL_0087: Unknown result type (might be due to invalid IL or missing references) string[] array = line.Trim().Split(); if (array[0] != "OFFSET") { throw new BvhException("OFFSET is not found"); } float[] array2 = (from x in array.Skip(1) where !string.IsNullOrEmpty(x) select float.Parse(x, CultureInfo.InvariantCulture)).ToArray(); return new Vector3(array2[0], array2[1], array2[2]); } private static BvhChannel[] ParseChannel(string line) { string[] array = line.Trim().Split(); if (array[0] != "CHANNELS") { throw new BvhException("CHANNELS is not found"); } if (int.Parse(array[1]) + 2 != array.Length) { throw new BvhException("channel count is not match with split count"); } return (from x in array.Skip(2) select (BvhChannel)Enum.Parse(typeof(BvhChannel), x)).ToArray(); } public IEnumerable<BvhNode> Traverse() { yield return this; foreach (BvhNode child in Children) { foreach (BvhNode item in child.Traverse()) { yield return item; } } } } public class HumanPoseClip : ScriptableObject { public const string TPoseResourcePath = "UniHumanoid/T-Pose.pose"; public Vector3 bodyPosition; public Quaternion bodyRotation; public float[] muscles; public HumanPose GetPose() { //IL_0002: 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_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) return new HumanPose { bodyPosition = bodyPosition, bodyRotation = bodyRotation, muscles = muscles }; } public void ApplyPose(ref HumanPose pose) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: 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) bodyPosition = pose.bodyPosition; bodyRotation = pose.bodyRotation; muscles = (float[])pose.muscles.Clone(); } } public class HumanPoseTransfer : MonoBehaviour { public enum HumanPoseTransferSourceType { None, HumanPoseTransfer, HumanPoseClip } [SerializeField] public HumanPoseTransferSourceType SourceType; [SerializeField] public Avatar Avatar; [SerializeField] public HumanPoseTransfer Source; [SerializeField] public HumanPoseClip PoseClip; private HumanPoseHandler m_handler; private HumanPose m_pose; private int m_lastFrameCount = -1; public HumanPose CreatePose() { //IL_000c: 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_0020: Unknown result type (might be due to invalid IL or missing references) HumanPoseHandler val = new HumanPoseHandler(Avatar, ((Component)this).transform); HumanPose result = default(HumanPose); val.GetHumanPose(ref result); return result; } public void SetPose(HumanPose pose) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) SetPose(Avatar, ((Component)this).transform, pose); } public static void SetPose(Avatar avatar, Transform transform, HumanPose pose) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) new HumanPoseHandler(avatar, transform).SetHumanPose(ref pose); } public static void SetTPose(Avatar avatar, Transform transform) { //IL_000a: 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_0012: Unknown result type (might be due to invalid IL or missing references) HumanPose pose = Resources.Load<HumanPoseClip>("UniHumanoid/T-Pose.pose").GetPose(); SetPose(avatar, transform, pose); } private void Reset() { Animator val = default(Animator); if (((Component)this).TryGetComponent<Animator>(ref val)) { Avatar = val.avatar; } } [ContextMenu("Set T-Pose")] private void SetTPose() { if (!((Object)(object)Avatar == (Object)null)) { SetTPose(Avatar, ((Component)this).transform); } } public void Dispose() { if (m_handler != null) { m_handler.Dispose(); m_handler = null; } } public void OnEnable() { Animator val = default(Animator); if (((Component)this).TryGetComponent<Animator>(ref val)) { Avatar = val.avatar; } Setup(); } private void OnDisable() { Dispose(); } public void Setup() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown if (!((Object)(object)Avatar == (Object)null)) { Dispose(); m_handler = new HumanPoseHandler(Avatar, ((Component)this).transform); } } public bool GetPose(int frameCount, ref HumanPose pose) { //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) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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) if ((Object)(object)PoseClip != (Object)null) { pose = PoseClip.GetPose(); return true; } if (m_handler == null) { pose = m_pose; return false; } if (frameCount != m_lastFrameCount) { m_handler.GetHumanPose(ref m_pose); m_lastFrameCount = frameCount; } pose = m_pose; return true; } private void Update() { //IL_006e: 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) switch (SourceType) { case HumanPoseTransferSourceType.HumanPoseTransfer: if ((Object)(object)Source != (Object)null && m_handler != null && Source.GetPose(Time.frameCount, ref m_pose)) { m_handler.SetHumanPose(ref m_pose); } break; case HumanPoseTransferSourceType.HumanPoseClip: if ((Object)(object)PoseClip != (Object)null) { HumanPose pose = PoseClip.GetPose(); m_handler.SetHumanPose(ref pose); } break; case HumanPoseTransferSourceType.None: break; } } } [DisallowMultipleComponent] public class Humanoid : MonoBehaviour { public struct Validation { public readonly string Message; public readonly bool IsError; public Validation(string message, bool isError) { Message = message; IsError = isError; } } [SerializeField] private Transform m_Hips; [SerializeField] private Transform m_LeftUpperLeg; [SerializeField] private Transform m_RightUpperLeg; [SerializeField] private Transform m_LeftLowerLeg; [SerializeField] private Transform m_RightLowerLeg; [SerializeField] private Transform m_LeftFoot; [SerializeField] private Transform m_RightFoot; [SerializeField] private Transform m_LeftToes; [SerializeField] private Transform m_RightToes; [SerializeField] private Transform m_Spine; [SerializeField] private Transform m_Chest; [SerializeField] private Transform m_UpperChest; [SerializeField] private Transform m_Neck; [SerializeField] private Transform m_Head; [SerializeField] private Transform m_LeftEye; [SerializeField] private Transform m_RightEye; [SerializeField] private Transform m_Jaw; [SerializeField] private Transform m_LeftShoulder; [SerializeField] private Transform m_RightShoulder; [SerializeField] private Transform m_LeftUpperArm; [SerializeField] private Transform m_RightUpperArm; [SerializeField] private Transform m_LeftLowerArm; [SerializeField] private Transform m_RightLowerArm; [SerializeField] private Transform m_LeftHand; [SerializeField] private Transform m_RightHand; [SerializeField] private Transform m_LeftThumbProximal; [SerializeField] private Transform m_LeftThumbIntermediate; [SerializeField] private Transform m_LeftThumbDistal; [SerializeField] private Transform m_LeftIndexProximal; [SerializeField] private Transform m_LeftIndexIntermediate; [SerializeField] private Transform m_LeftIndexDistal; [SerializeField] private Transform m_LeftMiddleProximal; [SerializeField] private Transform m_LeftMiddleIntermediate; [SerializeField] private Transform m_LeftMiddleDistal; [SerializeField] private Transform m_LeftRingProximal; [SerializeField] private Transform m_LeftRingIntermediate; [SerializeField] private Transform m_LeftRingDistal; [SerializeField] private Transform m_LeftLittleProximal; [SerializeField] private Transform m_LeftLittleIntermediate; [SerializeField] private Transform m_LeftLittleDistal; [SerializeField] private Transform m_RightThumbProximal; [SerializeField] private Transform m_RightThumbIntermediate; [SerializeField] private Transform m_RightThumbDistal; [SerializeField] private Transform m_RightIndexProximal; [SerializeField] private Transform m_RightIndexIntermediate; [SerializeField] private Transform m_RightIndexDistal; [SerializeField] private Transform m_RightMiddleProximal; [SerializeField] private Transform m_RightMiddleIntermediate; [SerializeField] private Transform m_RightMiddleDistal; [SerializeField] private Transform m_RightRingProximal; [SerializeField] private Transform m_RightRingIntermediate; [SerializeField] private Transform m_RightRingDistal; [SerializeField] private Transform m_RightLittleProximal; [SerializeField] private Transform m_RightLittleIntermediate; [SerializeField] private Transform m_RightLittleDistal; public Transform Hips => m_Hips; public Transform LeftUpperLeg => m_LeftUpperLeg; public Transform RightUpperLeg => m_RightUpperLeg; public Transform LeftLowerLeg => m_LeftLowerLeg; public Transform RightLowerLeg => m_RightLowerLeg; public Transform LeftFoot => m_LeftFoot; public Transform RightFoot => m_RightFoot; public Transform LeftToes => m_LeftToes; public Transform RightToes => m_RightToes; public Transform Spine => m_Spine; public Transform Chest => m_Chest; public Transform UpperChest => m_UpperChest; public Transform Neck => m_Neck; public Transform Head => m_Head; public Transform LeftEye => m_LeftEye; public Transform RightEye => m_RightEye; public Transform Jaw => m_Jaw; public Transform LeftShoulder => m_LeftShoulder; public Transform RightShoulder => m_RightShoulder; public Transform LeftUpperArm => m_LeftUpperArm; public Transform RightUpperArm => m_RightUpperArm; public Transform LeftLowerArm => m_LeftLowerArm; public Transform RightLowerArm => m_RightLowerArm; public Transform LeftHand => m_LeftHand; public Transform RightHand => m_RightHand; public Transform LeftThumbProximal => m_LeftThumbProximal; public Transform LeftThumbIntermediate => m_LeftThumbIntermediate; public Transform LeftThumbDistal => m_LeftThumbDistal; public Transform LeftIndexProximal => m_LeftIndexProximal; public Transform LeftIndexIntermediate => m_LeftIndexIntermediate; public Transform LeftIndexDistal => m_LeftIndexDistal; public Transform LeftMiddleProximal => m_LeftMiddleProximal; public Transform LeftMiddleIntermediate => m_LeftMiddleIntermediate; public Transform LeftMiddleDistal => m_LeftMiddleDistal; public Transform LeftRingProximal => m_LeftRingProximal; public Transform LeftRingIntermediate => m_LeftRingIntermediate; public Transform LeftRingDistal => m_LeftRingDistal; public Transform LeftLittleProximal => m_LeftLittleProximal; public Transform LeftLittleIntermediate => m_LeftLittleIntermediate; public Transform LeftLittleDistal => m_LeftLittleDistal; public Transform RightThumbProximal => m_RightThumbProximal; public Transform RightThumbIntermediate => m_RightThumbIntermediate; public Transform RightThumbDistal => m_RightThumbDistal; public Transform RightIndexProximal => m_RightIndexProximal; public Transform RightIndexIntermediate => m_RightIndexIntermediate; public Transform RightIndexDistal => m_RightIndexDistal; public Transform RightMiddleProximal => m_RightMiddleProximal; public Transform RightMiddleIntermediate => m_RightMiddleIntermediate; public Transform RightMiddleDistal => m_RightMiddleDistal; public Transform RightRingProximal => m_RightRingProximal; public Transform RightRingIntermediate => m_RightRingIntermediate; public Transform RightRingDistal => m_RightRingDistal; public Transform RightLittleProximal => m_RightLittleProximal; public Transform RightLittleIntermediate => m_RightLittleIntermediate; public Transform RightLittleDistal => m_RightLittleDistal; public IEnumerable<(Transform, HumanBodyBones)> BoneMap { get { if ((Object)(object)Hips != (Object)null) { yield return (Hips, (HumanBodyBones)0); } if ((Object)(object)LeftUpperLeg != (Object)null) { yield return (LeftUpperLeg, (HumanBodyBones)1); } if ((Object)(object)RightUpperLeg != (Object)null) { yield return (RightUpperLeg, (HumanBodyBones)2); } if ((Object)(object)LeftLowerLeg != (Object)null) { yield return (LeftLowerLeg, (HumanBodyBones)3); } if ((Object)(object)RightLowerLeg != (Object)null) { yield return (RightLowerLeg, (HumanBodyBones)4); } if ((Object)(object)LeftFoot != (Object)null) { yield return (LeftFoot, (HumanBodyBones)5); } if ((Object)(object)RightFoot != (Object)null) { yield return (RightFoot, (HumanBodyBones)6); } if ((Object)(object)LeftToes != (Object)null) { yield return (LeftToes, (HumanBodyBones)19); } if ((Object)(object)RightToes != (Object)null) { yield return (RightToes, (HumanBodyBones)20); } if ((Object)(object)Spine != (Object)null) { yield return (Spine, (HumanBodyBones)7); } if ((Object)(object)Chest != (Object)null) { yield return (Chest, (HumanBodyBones)8); } if ((Object)(object)UpperChest != (Object)null) { yield return (UpperChest, (HumanBodyBones)54); } if ((Object)(object)Neck != (Object)null) { yield return (Neck, (HumanBodyBones)9); } if ((Object)(object)Head != (Object)null) { yield return (Head, (HumanBodyBones)10); } if ((Object)(object)LeftEye != (Object)null) { yield return (LeftEye, (HumanBodyBones)21); } if ((Object)(object)RightEye != (Object)null) { yield return (RightEye, (HumanBodyBones)22); } if ((Object)(object)Jaw != (Object)null) { yield return (Jaw, (HumanBodyBones)23); } if ((Object)(object)LeftShoulder != (Object)null) { yield return (LeftShoulder, (HumanBodyBones)11); } if ((Object)(object)RightShoulder != (Object)null) { yield return (RightShoulder, (HumanBodyBones)12); } if ((Object)(object)LeftUpperArm != (Object)null) { yield return (LeftUpperArm, (HumanBodyBones)13); } if ((Object)(object)RightUpperArm != (Object)null) { yield return (RightUpperArm, (HumanBodyBones)14); } if ((Object)(object)LeftLowerArm != (Object)null) { yield return (LeftLowerArm, (HumanBodyBones)15); } if ((Object)(object)RightLowerArm != (Object)null) { yield return (RightLowerArm, (HumanBodyBones)16); } if ((Object)(object)LeftHand != (Object)null) { yield return (LeftHand, (HumanBodyBones)17); } if ((Object)(object)RightHand != (Object)null) { yield return (RightHand, (HumanBodyBones)18); } if ((Object)(object)LeftThumbProximal != (Object)null) { yield return (LeftThumbProximal, (HumanBodyBones)24); } if ((Object)(object)LeftThumbIntermediate != (Object)null) { yield return (LeftThumbIntermediate, (HumanBodyBones)25); } if ((Object)(object)LeftThumbDistal != (Object)null) { yield return (LeftThumbDistal, (HumanBodyBones)26); } if ((Object)(object)LeftIndexProximal != (Object)null) { yield return (LeftIndexProximal, (HumanBodyBones)27); } if ((Object)(object)LeftIndexIntermediate != (Object)null) { yield return (LeftIndexIntermediate, (HumanBodyBones)28); } if ((Object)(object)LeftIndexDistal != (Object)null) { yield return (LeftIndexDistal, (HumanBodyBones)29); } if ((Object)(object)LeftMiddleProximal != (Object)null) { yield return (LeftMiddleProximal, (HumanBodyBones)30); } if ((Object)(object)LeftMiddleIntermediate != (Object)null) { yield return (LeftMiddleIntermediate, (HumanBodyBones)31); } if ((Object)(object)LeftMiddleDistal != (Object)null) { yield return (LeftMiddleDistal, (HumanBodyBones)32); } if ((Object)(object)LeftRingProximal != (Object)null) { yield return (LeftRingProximal, (HumanBodyBones)33); } if ((Object)(object)LeftRingIntermediate != (Object)null) { yield return (LeftRingIntermediate, (HumanBodyBones)34); } if ((Object)(object)LeftRingDistal != (Object)null) { yield return (LeftRingDistal, (HumanBodyBones)35); } if ((Object)(object)LeftLittleProximal != (Object)null) { yield return (LeftLittleProximal, (HumanBodyBones)36); } if ((Object)(object)LeftLittleIntermediate != (Object)null) { yield return (LeftLittleIntermediate, (HumanBodyBones)37); } if ((Object)(object)LeftLittleDistal != (Object)null) { yield return (LeftLittleDistal, (HumanBodyBones)38); } if ((Object)(object)RightThumbProximal != (Object)null) { yield return (RightThumbProximal, (HumanBodyBones)39); } if ((Object)(object)RightThumbIntermediate != (Object)null) { yield return (RightThumbIntermediate, (HumanBodyBones)40); } if ((Object)(object)RightThumbDistal != (Object)null) { yield return (RightThumbDistal, (HumanBodyBones)41); } if ((Object)(object)RightIndexProximal != (Object)null) { yield return (RightIndexProximal, (HumanBodyBones)42); } if ((Object)(object)RightIndexIntermediate != (Object)null) { yield return (RightIndexIntermediate, (HumanBodyBones)43); } if ((Object)(object)RightIndexDistal != (Object)null) { yield return (RightIndexDistal, (HumanBodyBones)44); } if ((Object)(object)RightMiddleProximal != (Object)null) { yield return (RightMiddleProximal, (HumanBodyBones)45); } if ((Object)(object)RightMiddleIntermediate != (Object)null) { yield return (RightMiddleIntermediate, (HumanBodyBones)46); } if ((Object)(object)RightMiddleDistal != (Object)null) { yield return (RightMiddleDistal, (HumanBodyBones)47); } if ((Object)(object)RightRingProximal != (Object)null) { yield return (RightRingProximal, (HumanBodyBones)48); } if ((Object)(object)RightRingIntermediate != (Object)null) { yield return (RightRingIntermediate, (HumanBodyBones)49); } if ((Object)(object)RightRingDistal != (Object)null) { yield return (RightRingDistal, (HumanBodyBones)50); } if ((Object)(object)RightLittleProximal != (Object)null) { yield return (RightLittleProximal, (HumanBodyBones)51); } if ((Object)(object)RightLittleIntermediate != (Object)null) { yield return (RightLittleIntermediate, (HumanBodyBones)52); } if ((Object)(object)RightLittleDistal != (Object)null) { yield return (RightLittleDistal, (HumanBodyBones)53); } } } private void Reset() { AssignBonesFromAnimator(); } private IEnumerable<Validation> Required(params (string, Transform)[] props) { for (int i = 0; i < props.Length; i++) { (string, Transform) tuple = props[i]; if ((Object)(object)tuple.Item2 == (Object)null) { var (text, _) = tuple; if (text.StartsWith("m_")) { text = text.Substring(2); } yield return new Validation(text + " is Required", isError: true); } } } private static Vector3 GetForward(Transform l, Transform r) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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_0031: 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) if ((Object)(object)l == (Object)null || (Object)(object)r == (Object)null) { return Vector3.zero; } Vector3 val = r.position - l.position; return Vector3.Cross(((Vector3)(ref val)).normalized, Vector3.up); } public Vector3 GetForward() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) return GetForward(m_LeftUpperLeg, m_RightUpperLeg); } public IEnumerable<Validation> Validate() { foreach (Validation item in Required(("m_Hips", m_Hips), ("m_Spine", m_Spine), ("m_Head", m_Head), ("m_LeftUpperLeg", m_LeftUpperLeg), ("m_LeftLowerLeg", m_LeftLowerLeg), ("m_LeftFoot", m_LeftFoot), ("m_RightUpperLeg", m_RightUpperLeg), ("m_RightLowerLeg", m_RightLowerLeg), ("m_RightFoot", m_RightFoot), ("m_LeftUpperArm", m_LeftUpperArm), ("m_LeftLowerArm", m_LeftLowerArm), ("m_LeftHand", m_LeftHand), ("m_RightUpperArm", m_RightUpperArm), ("m_RightLowerArm", m_RightLowerArm), ("m_RightHand", m_RightHand))) { yield return item; } } public Avatar CreateAvatar() { ForceTransformUniqueName.Process(((Component)this).transform); return HumanoidLoader.BuildHumanAvatarFromMap(((Component)this).transform, BoneMap); } public Transform GetBoneTransform(HumanBodyBones bone) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Expected I4, but got Unknown return (Transform)((int)bone switch { 0 => Hips, 1 => LeftUpperLeg, 2 => RightUpperLeg, 3 => LeftLowerLeg, 4 => RightLowerLeg, 5 => LeftFoot, 6 => RightFoot, 19 => LeftToes, 20 => RightToes, 7 => Spine, 8 => Chest, 54 => UpperChest, 9 => Neck, 10 => Head, 21 => LeftEye, 22 => RightEye, 23 => Jaw, 11 => LeftShoulder, 12 => RightShoulder, 13 => LeftUpperArm, 14 => RightUpperArm, 15 => LeftLowerArm, 16 => RightLowerArm, 17 => LeftHand, 18 => RightHand, 24 => LeftThumbProximal, 25 => LeftThumbIntermediate, 26 => LeftThumbDistal, 27 => LeftIndexProximal, 28 => LeftIndexIntermediate, 29 => LeftIndexDistal, 30 => LeftMiddleProximal, 31 => LeftMiddleIntermediate, 32 => LeftMiddleDistal, 33 => LeftRingProximal, 34 => LeftRingIntermediate, 35 => LeftRingDistal, 36 => LeftLittleProximal, 37 => LeftLittleIntermediate, 38 => LeftLittleDistal, 39 => RightThumbProximal, 40 => RightThumbIntermediate, 41 => RightThumbDistal, 42 => RightIndexProximal, 43 => RightIndexIntermediate, 44 => RightIndexDistal, 45 => RightMiddleProximal, 46 => RightMiddleIntermediate, 47 => RightMiddleDistal, 48 => RightRingProximal, 49 => RightRingIntermediate, 50 => RightRingDistal, 51 => RightLittleProximal, 52 => RightLittleIntermediate, 53 => RightLittleDistal, _ => null, }); } public void AssignBones(IEnumerable<(HumanBodyBones, Transform)> nodes) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Invalid comparison between Unknown and I4 //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Expected I4, but got Unknown foreach (var (val, val2) in nodes) { if ((int)val != 55 && val2 != null) { switch ((int)val) { case 0: m_Hips = val2; break; case 1: m_LeftUpperLeg = val2; break; case 2: m_RightUpperLeg = val2; break; case 3: m_LeftLowerLeg = val2; break; case 4: m_RightLowerLeg = val2; break; case 5: m_LeftFoot = val2; break; case 6: m_RightFoot = val2; break; case 19: m_LeftToes = val2; break; case 20: m_RightToes = val2; break; case 7: m_Spine = val2; break; case 8: m_Chest = val2; break; case 54: m_UpperChest = val2; break; case 9: m_Neck = val2; break; case 10: m_Head = val2; break; case 21: m_LeftEye = val2; break; case 22: m_RightEye = val2; break; case 23: m_Jaw = val2; break; case 11: m_LeftShoulder = val2; break; case 12: m_RightShoulder = val2; break; case 13: m_LeftUpperArm = val2; break; case 14: m_RightUpperArm = val2; break; case 15: m_LeftLowerArm = val2; break; case 16: m_RightLowerArm = val2; break; case 17: m_LeftHand = val2; break; case 18: m_RightHand = val2; break; case 24: m_LeftThumbProximal = val2; break; case 25: m_LeftThumbIntermediate = val2; break; case 26: m_LeftThumbDistal = val2; break; case 27: m_LeftIndexProximal = val2; break; case 28: m_LeftIndexIntermediate = val2; break; case 29: m_LeftIndexDistal = val2; break; case 30: m_LeftMiddleProximal = val2; break; case 31: m_LeftMiddleIntermediate = val2; break; case 32: m_LeftMiddleDistal = val2; break; case 33: m_LeftRingProximal = val2; break; case 34: m_LeftRingIntermediate = val2; break; case 35: m_LeftRingDistal = val2; break; case 36: m_LeftLittleProximal = val2; break; case 37: m_LeftLittleIntermediate = val2; break; case 38: m_LeftLittleDistal = val2; break; case 39: m_RightThumbProximal = val2; break; case 40: m_RightThumbIntermediate = val2; break; case 41: m_RightThumbDistal = val2; break; case 42: m_RightIndexProximal = val2; break; case 43: m_RightIndexIntermediate = val2; break; case 44: m_RightIndexDistal = val2; break; case 45: m_RightMiddleProximal = val2; break; case 46: m_RightMiddleIntermediate = val2; break; case 47: m_RightMiddleDistal = val2; break; case 48: m_RightRingProximal = val2; break; case 49: m_RightRingIntermediate = val2; break; case 50: m_RightRingDistal = val2; break; case 51: m_RightLittleProximal = val2; break; case 52: m_RightLittleIntermediate = val2; break; case 53: m_RightLittleDistal = val2; break; } } } } public unsafe bool AssignBonesFromAnimator() { Animator animator = default(Animator); if (((Component)this).TryGetComponent<Animator>(ref animator)) { Avatar avatar = animator.avatar; if ((Object)(object)avatar == (Object)null) { return false; } if (!avatar.isValid) { return false; } if (!avatar.isHuman) { return false; } HumanBodyBones[] values = CachedEnum.GetValues<HumanBodyBones>(); AssignBones(values.Select((HumanBodyBones x) => ((HumanBodyBones, Transform))(((int)x == 55) ? ((HumanBodyBones)55, (Transform)null) : ((HumanBodyBones)Enum.Parse(typeof(HumanBodyBones), ((object)(*(HumanBodyBones*)(&x))/*cast due to .constrained prefix*/).ToString(), ignoreCase: true), animator.GetBoneTransform(x))))); return true; } return false; } public bool TryGetBoneForTransform(Transform t, out HumanBodyBones bone) { //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_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected I4, but got Unknown foreach (var (val, val2) in BoneMap) { if ((Object)(object)val == (Object)(object)t) { bone = (HumanBodyBones)(int)val2; return true; } } bone = (HumanBodyBones)0; return false; } public static Func<HumanBodyBones, Transform> Get_GetBoneTransform(GameObject root) { Humanoid humanoid = default(Humanoid); if (root.TryGetComponent<Humanoid>(ref humanoid)) { return humanoid.GetBoneTransform; } Animator val = default(Animator); if (root.TryGetComponent<Animator>(ref val)) { Avatar avatar = val.avatar; if ((Object)(object)avatar == (Object)null) { throw new ArgumentException("no avatar"); } if (!avatar.isValid) { throw new ArgumentException("invalid avatar"); } if (!avatar.isHuman) { throw new ArgumentException("avatar is not humanoid"); } return val.GetBoneTransform; } throw new ArgumentException("no animator nor humanoid"); } } public static class HumanoidLoader { private static readonly Dictionary<HumanBodyBones, string> s_humanTranitBoneNameMap = HumanTrait.BoneName.ToDictionary((string x) => TraitToHumanBone(x), (string x) => x); public static Avatar BuildHumanAvatarFromMap(Transform root, IEnumerable<(Transform, HumanBodyBones)> boneMap) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: 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_00d3: Unknown result type (might be due to invalid IL or missing references) HumanDescription val = new HumanDescription { skeleton = (from x in ((Component)root).GetComponentsInChildren<Transform>() select x.ToSkeletonBone()).ToArray(), human = boneMap.Select(delegate((Transform, HumanBodyBones) x) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) HumanBone result = default(HumanBone); ((HumanBone)(ref result)).boneName = ((Object)x.Item1).name; ((HumanBone)(ref result)).humanName = s_humanTranitBoneNameMap[x.Item2]; HumanLimit limit = default(HumanLimit); ((HumanLimit)(ref limit)).useDefaultValues = true; result.limit = limit; return result; }).ToArray() }; ((HumanDescription)(ref val)).armStretch = 0.05f; ((HumanDescription)(ref val)).legStretch = 0.05f; ((HumanDescription)(ref val)).upperArmTwist = 0.5f; ((HumanDescription)(ref val)).lowerArmTwist = 0.5f; ((HumanDescription)(ref val)).upperLegTwist = 0.5f; ((HumanDescription)(ref val)).lowerLegTwist = 0.5f; ((HumanDescription)(ref val)).feetSpacing = 0f; ((HumanDescription)(ref val)).hasTranslationDoF = false; HumanDescription val2 = val; return AvatarBuilder.BuildHumanAvatar(((Component)root).gameObject, val2); } private static HumanBodyBones TraitToHumanBone(string x) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) return (HumanBodyBones)Enum.Parse(typeof(HumanBodyBones), x.Replace(" ", ""), ignoreCase: true); } public static void RebuildHumanAvatar(Animator animator) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown if (!RebuildHumanAvatarAsync(animator, (IAwaitCaller)new ImmediateCaller()).IsCompleted) { throw new Exception("task not completed"); } } public static async Task RebuildHumanAvatarAsync(Animator animator, IAwaitCaller awaitCaller) { if ((Object)(object)animator == (Object)null) { throw new ArgumentNullException("src"); } GameObject target = ((Component)animator).gameObject; IEnumerable<(Transform, HumanBodyBones)> boneMap = from x in CachedEnum.GetValues<HumanBodyBones>() where (int)x != 55 select (animator.GetBoneTransform(x), x: x) into x where (Object)(object)x.Item1 != (Object)null select x; Avatar newAvatar = BuildHumanAvatarFromMap(((Component)animator).transform, boneMap); ((Object)newAvatar).name = "re-created"; if (Application.isPlaying) { Object.Destroy((Object)(object)animator); await awaitCaller.NextFrame(); } else { Object.DestroyImmediate((Object)(object)animator); } target.AddComponent<Animator>().avatar = newAvatar; } } public interface IBone { string Name { get; } Vector3 SkeletonLocalPosition { get; } IBone Parent { get; } IList<IBone> Children { get; } } public static class IBoneExtensions { public static IEnumerable<IBone> Traverse(this IBone self) { yield return self; foreach (IBone child in self.Children) { foreach (IBone item in child.Traverse()) { yield return item; } } } public static Vector3 CenterOfDescendant(this IBone self) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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_0045: Unknown result type (might be due to invalid IL or missing references) Vector3 val = Vector3.zero; int num = 0; foreach (IBone item in self.Traverse()) { val += item.SkeletonLocalPosition; num++; } return val / (float)num; } } public static class BvhAnimation { private class CurveSet { private BvhNode Node; private Func<float, float, float, Quaternion> EulerToRotation; public BvhChannelCurve PositionX; public BvhChannelCurve PositionY; public BvhChannelCurve PositionZ; public BvhChannelCurve RotationX; public BvhChannelCurve RotationY; public BvhChannelCurve RotationZ; public CurveSet(BvhNode node) { Node = node; } public Vector3 GetPosition(int i) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) return new Vector3(PositionX.Keys[i], PositionY.Keys[i], PositionZ.Keys[i]); } public Quaternion GetRotation(int i) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) if (EulerToRotation == null) { EulerToRotation = Node.GetEulerToRotation(); } return EulerToRotation(RotationX.Keys[i], RotationY.Keys[i], RotationZ.Keys[i]); } private static void AddCurve(Bvh bvh, AnimationClip clip, BvhChannelCurve ch, float scaling) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown if (ch != null) { Bvh.PathWithProperty pathWithProp = default(Bvh.PathWithProperty); bvh.TryGetPathWithPropertyFromChannel(ch, out pathWithProp); AnimationCurve val = new AnimationCurve(); for (int i = 0; i < bvh.FrameCount; i++) { float num = (float)((double)i * bvh.FrameTime.TotalSeconds); float num2 = ch.Keys[i] * scaling; val.AddKey(num, num2); } clip.SetCurve(pathWithProp.Path, typeof(Transform), pathWithProp.Property, val); } } public void AddCurves(Bvh bvh, AnimationClip clip, float scaling) { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) AddCurve(bvh, clip, PositionX, 0f - scaling); AddCurve(bvh, clip, PositionY, scaling); AddCurve(bvh, clip, PositionZ, scaling); Bvh.PathWithProperty pathWithProp = default(Bvh.PathWithProperty); bvh.TryGetPathWithPropertyFromChannel(RotationX, out pathWithProp); AnimationCurve val = new AnimationCurve(); AnimationCurve val2 = new AnimationCurve(); AnimationCurve val3 = new AnimationCurve(); AnimationCurve val4 = new AnimationCurve(); for (int i = 0; i < bvh.FrameCount; i++) { float num = (float)((double)i * bvh.FrameTime.TotalSeconds); Quaternion val5 = GetRotation(i).ReverseX(); val.AddKey(num, val5.x); val2.AddKey(num, val5.y); val3.AddKey(num, val5.z); val4.AddKey(num, val5.w); } clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.x", val); clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.y", val2); clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.z", val3); clip.SetCurve(pathWithProp.Path, typeof(Transform), "localRotation.w", val4); } } public static AnimationClip CreateAnimationClip(Bvh bvh, float scaling) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown AnimationClip val = new AnimationClip(); val.legacy = true; Dictionary<BvhNode, CurveSet> dictionary = new Dictionary<BvhNode, CurveSet>(); int num = 0; foreach (BvhNode item in bvh.Root.Traverse()) { CurveSet curveSet = (dictionary[item] = new CurveSet(item)); int num2 = 0; while (num2 < item.Channels.Length) { BvhChannelCurve bvhChannelCurve = bvh.Channels[num]; switch (item.Channels[num2]) { case BvhChannel.Xposition: curveSet.PositionX = bvhChannelCurve; break; case BvhChannel.Yposition: curveSet.PositionY = bvhChannelCurve; break; case BvhChannel.Zposition: curveSet.PositionZ = bvhChannelCurve; break; case BvhChannel.Xrotation: curveSet.RotationX = bvhChannelCurve; break; case BvhChannel.Yrotation: curveSet.RotationY = bvhChannelCurve; break; case BvhChannel.Zrotation: curveSet.RotationZ = bvhChannelCurve; break; default: throw new Exception(); } num2++; num++; } } foreach (KeyValuePair<BvhNode, CurveSet> item2 in dictionary) { item2.Value.AddCurves(bvh, val, scaling); } val.EnsureQuaternionContinuity(); return val; } } public static class BvhImporter { [Obsolete("use BvhImporter.Parse(path), then BvhImporter.Load()")] public static void Import(BvhImporterContext context) { context.Parse(context.Path); context.Load(); } } [Obsolete("use BvhImporterContext")] public class ImporterContext : BvhImporterContext { } public class BvhImporterContext { private string m_path; public string Source; public Bvh Bvh; public GameObject Root; public List<Transform> Nodes = new List<Transform>(); public AnimationClip Animation; public AvatarDescription AvatarDescription; public Avatar Avatar; public Mesh Mesh; public Material Material; public string Path { get { return m_path; } set { if (!(m_path == value)) { m_path = value; } } } [Obsolete("use Load(path)")] public void Parse() { Parse(Path); } public void Parse(string path) { Parse(path, File.ReadAllText(path, Encoding.UTF8)); } public void Parse(string path, string source) { Path = path; Source = source; Bvh = Bvh.Parse(Source); } public void Load() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) Root = new GameObject(System.IO.Path.GetFileNameWithoutExtension(Path)); Transform val = BuildHierarchy(Root.transform, Bvh.Root, 1f); Skeleton skeleton = Skeleton.Estimate(val); AvatarDescription avatarDescription = AvatarDescription.Create(val.Traverse().ToArray(), skeleton); int channelIndex = Bvh.Root.GetChannelIndex(BvhChannel.Yposition); float num = Bvh.Channels[channelIndex].Keys[0]; float num2 = 1f; num2 = 1f / num; foreach (Transform item in Root.transform.Traverse()) { item.localPosition *= num2; } float num3 = num * num2; val.position = new Vector3(0f, num3, 0f); Animation = BvhAnimation.CreateAnimationClip(Bvh, num2); ((Object)Animation).name = ((Object)Root).name; Animation.legacy = true; Animation.wrapMode = (WrapMode)2; Animation obj = Root.AddComponent<Animation>(); obj.AddClip(Animation, ((Object)Animation).name); obj.clip = Animation; obj.Play(); ForceTransformUniqueName.Process(Root.transform); Avatar = HumanoidLoader.BuildHumanAvatarFromMap(Root.transform, avatarDescription.ToHumanoidMap(Root.transform)); ((Object)Avatar).name = "Avatar"; AvatarDescription = avatarDescription; Root.AddComponent<Animator>().avatar = Avatar; Root.AddComponent<HumanPoseTransfer>(); } private static Transform BuildHierarchy(Transform parent, BvhNode node, float toMeter) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(node.Name); val.transform.localPosition = node.Offset.ToXReversedVector3() * toMeter; val.transform.SetParent(parent, false); foreach (BvhNode child in node.Children) { BuildHierarchy(val.transform, child, toMeter); } return val.transform; } public void Destroy(bool destroySubAssets) { if ((Object)(object)Root != (Object)null) { Object.DestroyImmediate((Object)(object)Root); } } } public static class BvhExtensions { public static Func<float, float, float, Quaternion> GetEulerToRotation(this BvhNode bvh) { BvhChannel[] order = bvh.Channels.Where((BvhChannel x) => x == BvhChannel.Xrotation || x == BvhChannel.Yrotation || x == BvhChannel.Zrotation).ToArray(); return delegate(float x, float y, float z) { //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_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_009b: 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_0066: 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_006e: 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_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_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) Quaternion val = Quaternion.Euler(x, 0f, 0f); Quaternion val2 = Quaternion.Euler(0f, y, 0f); Quaternion val3 = Quaternion.Euler(0f, 0f, z); Quaternion val4 = Quaternion.identity; BvhChannel[] array = order; for (int i = 0; i < array.Length; i++) { val4 = (Quaternion)(array[i] switch { BvhChannel.Xrotation => val4 * val, BvhChannel.Yrotation => val4 * val2, BvhChannel.Zrotation => val4 * val3, _ => throw new BvhException("no rotation"), }); } return val4; }; } public static Vector3 ToVector3(this Vector3 s3) { //IL_0000: 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) //IL_0012: Unknown result type (might be due to invalid IL or missing references) return new Vector3(s3.x, s3.y, s3.z); } public static Vector3 ToXReversedVector3(this Vector3 s3) { //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_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) return new Vector3(0f - s3.x, s3.y, s3.z); } } public static class UnityExtensions { public static