using System;
+using System.Collections.Concurrent;
using System.Collections.Generic;
using TheOtherRoles.Utilities;
using UnityEngine;
-namespace TheOtherRoles.Objects {
- class Footprint {
- private static List<Footprint> footprints = new List<Footprint>();
- private static Sprite sprite;
- private Color color;
- private GameObject footprint;
- private SpriteRenderer spriteRenderer;
- private PlayerControl owner;
- private bool anonymousFootprints;
+namespace TheOtherRoles.Objects
+{
+ public class FootprintHolder : MonoBehaviour
+ {
+ static FootprintHolder() => ClassInjector.RegisterTypeInIl2Cpp<FootprintHolder>();
- public static Sprite getFootprintSprite() {
- if (sprite) return sprite;
- sprite = Helpers.loadSpriteFromResources("TheOtherRoles.Resources.Footprint.png", 600f);
- return sprite;
- }
-
- public Footprint(float footprintDuration, bool anonymousFootprints, PlayerControl player) {
- this.owner = player;
- this.anonymousFootprints = anonymousFootprints;
- if (anonymousFootprints)
- this.color = Palette.PlayerColors[6];
- else
- this.color = Palette.PlayerColors[(int) player.Data.DefaultOutfit.ColorId];
+ public FootprintHolder(IntPtr ptr) : base(ptr) { }
- footprint = new GameObject("Footprint");
- footprint.AddSubmergedComponent(SubmergedCompatibility.Classes.ElevatorMover);
- Vector3 position = new Vector3(player.transform.position.x, player.transform.position.y, player.transform.position.y / 1000 + 0.001f);
- footprint.transform.position = position;
- footprint.transform.localPosition = position;
- footprint.transform.SetParent(player.transform.parent);
+ private static FootprintHolder _instance;
+ public static FootprintHolder Instance
+ {
+ get => _instance ? _instance : _instance = new GameObject("FootprintHolder").AddComponent<FootprintHolder>();
+ set => _instance = value;
- footprint.transform.Rotate(0.0f, 0.0f, UnityEngine.Random.Range(0.0f, 360.0f));
+ }
+
+ private static Sprite _footprintSprite;
+ private static Sprite FootprintSprite => _footprintSprite ??= Helpers.loadSpriteFromResources("TheOtherRoles.Resources.Footprint.png", 600f);
+ private static bool AnonymousFootprints => TheOtherRoles.Detective.anonymousFootprints;
+ private static float FootprintDuration => TheOtherRoles.Detective.footprintDuration;
+
+ private class Footprint
+ {
+ public GameObject GameObject;
+ public Transform Transform;
+ public SpriteRenderer Renderer;
+ public PlayerControl Owner;
+ public GameData.PlayerInfo Data;
+ public float Lifetime;
- spriteRenderer = footprint.AddComponent<SpriteRenderer>();
- spriteRenderer.sprite = getFootprintSprite();
- spriteRenderer.color = color;
+ public Footprint()
+ {
+ GameObject = new("Footprint") { layer = 8 };
+ Transform = GameObject.transform;
+ Renderer = GameObject.AddComponent<SpriteRenderer>();
+ Renderer.sprite = FootprintSprite;
+ Renderer.color = Color.clear;
+ GameObject.AddSubmergedComponent(SubmergedCompatibility.Classes.ElevatorMover);
+ }
+ }
- footprint.SetActive(true);
- footprints.Add(this);
+
- FastDestroyableSingleton<HudManager>.Instance.StartCoroutine(Effects.Lerp(footprintDuration, new Action<float>((p) => {
- Color c = color;
- if (!anonymousFootprints && owner != null) {
- if (owner == Morphling.morphling && Morphling.morphTimer > 0 && Morphling.morphTarget?.Data != null)
- c = Palette.ShadowColors[Morphling.morphTarget.Data.DefaultOutfit.ColorId];
- else if (Camouflager.camouflageTimer > 0)
- c = Palette.PlayerColors[6];
+ private readonly ConcurrentBag<Footprint> _pool = new();
+ private readonly List<Footprint> _activeFootprints = new();
+ private readonly List<Footprint> _toRemove = new();
+
+ [HideFromIl2Cpp]
+ public void MakeFootprint(PlayerControl player)
+ {
+ if (!_pool.TryTake(out var print))
+ {
+ print = new();
}
- if (spriteRenderer) spriteRenderer.color = new Color(c.r, c.g, c.b, Mathf.Clamp01(1 - p));
+ print.Lifetime = FootprintDuration;
+
+ var pos = player.transform.position;
+ pos.z = pos.y / 1000f + 0.001f;
+ print.Transform.SetPositionAndRotation(pos, Quaternion.EulerRotation(0, 0, UnityEngine.Random.Range(0.0f, 360.0f)));
+ print.GameObject.SetActive(true);
+ print.Owner = player;
+ print.Data = player.Data;
+ _activeFootprints.Add(print);
+ }
- if (p == 1f && footprint != null) {
- UnityEngine.Object.Destroy(footprint);
- footprints.Remove(this);
+ private void Update()
+ {
+ var dt = Time.deltaTime;
+ _toRemove.Clear();
+ foreach (var activeFootprint in _activeFootprints)
+ {
+ var p = activeFootprint.Lifetime / FootprintDuration;
+
+ if (activeFootprint.Lifetime <= 0)
+ {
+ _toRemove.Add(activeFootprint);
+ continue;
+ }
+
+ Color color;
+ if (AnonymousFootprints || Camouflager.camouflageTimer > 0)
+ {
+ color = Palette.PlayerColors[6];
+ }
+ else if (activeFootprint.Owner == Morphling.morphling && Morphling.morphTimer > 0 && Morphling.morphTarget && Morphling.morphTarget.Data != null)
+ {
+ color = Palette.PlayerColors[Morphling.morphTarget.Data.DefaultOutfit.ColorId];
+ }
+ else
+ {
+ color = Palette.PlayerColors[activeFootprint.Data.DefaultOutfit.ColorId];
+ }
+
+ color.a = Math.Clamp(p, 0f, 1f);
+ activeFootprint.Renderer.color = color;
+
+ activeFootprint.Lifetime -= dt;
+ }
+
+ foreach (var footprint in _toRemove)
+ {
+ footprint.GameObject.SetActive(false);
+ _activeFootprints.Remove(footprint);
+ _pool.Add(footprint);
}
- })));
+ }
+
+ private void OnDestroy()
+ {
+ Instance = null;
}
}
}
--- /dev/null
+{
+ "version": 1,
+ "dependencies": {
+ ".NETStandard,Version=v2.1": {
+ "AmongUs.GameLibs.Steam": {
+ "type": "Direct",
+ "requested": "[2022.3.29, )",
+ "resolved": "2022.3.29",
+ "contentHash": "EStKwHGq8MMvSRxIHjlh31VJmCZrGHZ/xoDDN33L5gh7XJLWBFufo6+5ueezndSRpanoCkqLwuTkG73KCS2J1A=="
+ },
+ "BepInEx.IL2CPP": {
+ "type": "Direct",
+ "requested": "[6.0.0-be.559, )",
+ "resolved": "6.0.0-be.559",
+ "contentHash": "s0PSNq7Gr1/OWh+Yw2SGu8QYMow5lp6iP5hozxReMaJIGctnb/lUPj1pjeVP33pWWDomXwsWN76dCAW2qIY0tg==",
+ "dependencies": {
+ "BepInEx.Core": "6.0.0-be.559",
+ "BepInEx.Il2Cpp.TlsAdapter": "1.0.1",
+ "HarmonyX": "2.10.0",
+ "Iced": "1.17.0",
+ "Il2CppAssemblyUnhollower.BaseLib": "0.4.33",
+ "Il2CppAssemblyUnhollower.BaseLib.Legacy": "0.4.33",
+ "Il2CppAssemblyUnhollower.Lib": "0.4.33",
+ "Il2CppDumper": "6.6.4",
+ "MonoMod.RuntimeDetour": "22.3.23.4",
+ "Samboy063.Cpp2IL.Core": "2022.0.4"
+ }
+ },
+ "BepInEx.IL2CPP.MSBuild": {
+ "type": "Direct",
+ "requested": "[1.1.1, )",
+ "resolved": "1.1.1",
+ "contentHash": "uUSo4TuamyEIVg+ICNeJMSSW/arKWHGpfBFINc4fdF5kppfHFrsDURKzNPmDvxivtLsiuGthck9J/5uPXgIcTg=="
+ },
+ "BepInEx.Core": {
+ "type": "Transitive",
+ "resolved": "6.0.0-be.559",
+ "contentHash": "pjqwrVxD3JKz/Qz4gn8phzi0mEJucb1EVVcF/2A4oQ1+ytRnBUcOYldg1GCkzLoVYwbuhE0J2bXfUOGawRUwog==",
+ "dependencies": {
+ "HarmonyX": "2.10.0",
+ "MonoMod.Utils": "22.3.23.4",
+ "SemanticVersioning": "2.0.2"
+ }
+ },
+ "BepInEx.Il2Cpp.TlsAdapter": {
+ "type": "Transitive",
+ "resolved": "1.0.1",
+ "contentHash": "kTfX6312X0Fvwks+t7Ul3YO2jMSbqNS2Jx/85Cgl6lbAjEJnKzsmx7Krmd66dbnx0eY/QMjaV2r6LyWmQARtdA==",
+ "dependencies": {
+ "HarmonyX": "2.3.1"
+ }
+ },
+ "HarmonyX": {
+ "type": "Transitive",
+ "resolved": "2.10.0",
+ "contentHash": "4ayiy/dlCiW86K2N7Jvbf+VpI5wvP7dncv/6oRmfwRi32UCmCRzCGzsxdMfzJZkp6/26oBW+DrD8vi4UejzVAg==",
+ "dependencies": {
+ "MonoMod.RuntimeDetour": "22.3.23.4",
+ "System.Reflection.Emit": "4.7.0"
+ }
+ },
+ "Iced": {
+ "type": "Transitive",
+ "resolved": "1.17.0",
+ "contentHash": "8x+HCVTl/HHTGpscH3vMBhV8sknN/muZFw9s3TsI8SA6+c43cOTCi2+jE4KsU8pNLbJ++iF2ZFcpcXHXtDglnw=="
+ },
+ "Il2CppAssemblyUnhollower.BaseLib": {
+ "type": "Transitive",
+ "resolved": "0.4.33",
+ "contentHash": "QiltA4HJt6DvrFCcS4vQnirPV4WmQKZNG8M4lCn51k7yyx5LW0xix8HqE4Xt1IVo1Ei+60t5aLRga4W2ktve5w==",
+ "dependencies": {
+ "Iced": "1.15.0"
+ }
+ },
+ "Il2CppAssemblyUnhollower.BaseLib.Legacy": {
+ "type": "Transitive",
+ "resolved": "0.4.33",
+ "contentHash": "4o2Z44uqmI/6VBNpyhKJ1JksuqtrOgNrNkbv00ljITs3KedrcqZqGXCP+RaJF2ej4Fkr67fGsATshZ9B8f7izQ==",
+ "dependencies": {
+ "Il2CppAssemblyUnhollower.BaseLib": "0.4.33"
+ }
+ },
+ "Il2CppAssemblyUnhollower.Lib": {
+ "type": "Transitive",
+ "resolved": "0.4.33",
+ "contentHash": "1l7tqjAdzRyq+FP6h//Lojlr0PviEc5adfvsit9BZBQtmBUZoifAccAfXAiU0zLv5pbvHiAguspgmeRdUT1yUw==",
+ "dependencies": {
+ "Il2CppAssemblyUnhollower.BaseLib": "0.4.33",
+ "Il2CppAssemblyUnhollower.BaseLib.Legacy": "0.4.33",
+ "Mono.Cecil": "0.11.3"
+ }
+ },
+ "Il2CppDumper": {
+ "type": "Transitive",
+ "resolved": "6.6.4",
+ "contentHash": "aqjmlyigdZ5FS9ElMNlaCExlgSmAiho4BeIcVwkmzHGnomBzopjOCxqIX9vc/575TQ87TKoaGW2KP+3b5xI15A==",
+ "dependencies": {
+ "Mono.Cecil": "0.11.3"
+ }
+ },
+ "IndexRange": {
+ "type": "Transitive",
+ "resolved": "1.0.0",
+ "contentHash": "6TgS1JLSUkpmPLfXBPaAgB39ZUix8E4soXWk2XSDcscVe84i1JKzIAtA7jHbRHSkOOrcr6YA0MpLCeq98y9mYQ=="
+ },
+ "js6pak.Gee.External.Capstone": {
+ "type": "Transitive",
+ "resolved": "2.1.0",
+ "contentHash": "YYpq7NM50bSSVUDjXyV/eiITk6syXqItPjKBOb3jEWS6RFsk0DNhpWMPW6b3hKDmArARuWDU6S2pVu1IeVrvIA=="
+ },
+ "Microsoft.NETCore.Platforms": {
+ "type": "Transitive",
+ "resolved": "1.1.0",
+ "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A=="
+ },
+ "Microsoft.NETCore.Targets": {
+ "type": "Transitive",
+ "resolved": "1.1.0",
+ "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg=="
+ },
+ "Mono.Cecil": {
+ "type": "Transitive",
+ "resolved": "0.11.4",
+ "contentHash": "IC1h5g0NeJGHIUgzM1P82ld57knhP0IcQfrYITDPXlNpMYGUrsG5TxuaWTjaeqDNQMBDNZkB8L0rBnwsY6JHuQ=="
+ },
+ "MonoMod.RuntimeDetour": {
+ "type": "Transitive",
+ "resolved": "22.3.23.4",
+ "contentHash": "2nwwFfwYDSgUzhi+1MutTg1gyUgXoMS4+E04vHOFp84Vxs0oBkkn4mGAfhkr272y0j3vqIBzo2aT9pXRlCd/ZA==",
+ "dependencies": {
+ "Mono.Cecil": "0.11.4",
+ "MonoMod.Utils": "22.3.23.4",
+ "System.Collections.NonGeneric": "4.3.0",
+ "System.ComponentModel.TypeConverter": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.7.0",
+ "System.Reflection.Emit.Lightweight": "4.7.0",
+ "System.Reflection.TypeExtensions": "4.7.0"
+ }
+ },
+ "MonoMod.Utils": {
+ "type": "Transitive",
+ "resolved": "22.3.23.4",
+ "contentHash": "xso1rHFfcsPy3X1kj2uDk115z9tLTMxPEnba/zdNB6WazvrLRWGPuV9d4hHwr1iVz5quTFlZCbLBlE5fS2TqLA==",
+ "dependencies": {
+ "Mono.Cecil": "0.11.4",
+ "System.Collections.NonGeneric": "4.3.0",
+ "System.ComponentModel.TypeConverter": "4.3.0",
+ "System.IO.FileSystem.Primitives": "4.3.0",
+ "System.Reflection.Emit.ILGeneration": "4.7.0",
+ "System.Reflection.Emit.Lightweight": "4.7.0",
+ "System.Reflection.TypeExtensions": "4.7.0"
+ }
+ },
+ "Samboy063.Cpp2IL.Core": {
+ "type": "Transitive",
+ "resolved": "2022.0.4",
+ "contentHash": "6fLZDkAmnClogPwDWCkB5NYG1uqUShOkdNap4ud3m5cLI57BiBRzBoUBEKV+9SNtSirUrEAOUP+0kIfduTLYWQ==",
+ "dependencies": {
+ "HarmonyX": "2.5.5",
+ "Iced": "1.11.1",
+ "IndexRange": "1.0.0",
+ "Mono.Cecil": "0.11.4",
+ "Samboy063.LibCpp2IL": "2022.0.4",
+ "System.Runtime.InteropServices": "4.3.0",
+ "System.ValueTuple": "4.5.0",
+ "js6pak.Gee.External.Capstone": "2.1.0"
+ }
+ },
+ "Samboy063.LibCpp2IL": {
+ "type": "Transitive",
+ "resolved": "2022.0.4",
+ "contentHash": "KxUvnPgGSIgmLqVbK2fMCUmL+RJK0Ccvhkj2boVMtkE9feEFxtriHX7YkqZGQtXs55CpyETm8nZfYhj1m2bYkQ==",
+ "dependencies": {
+ "IndexRange": "1.0.0",
+ "Samboy063.WasmDisassembler": "2022.0.2"
+ }
+ },
+ "Samboy063.WasmDisassembler": {
+ "type": "Transitive",
+ "resolved": "2022.0.2",
+ "contentHash": "2uu+xBb7M3HKfBx9tAY6jiDieAf0hRnQjSmGX+7IdE6i24dYsx6TYgtrLvRx5lOuF2M8DijZ5H8yQ1pcuCs2SA=="
+ },
+ "SemanticVersioning": {
+ "type": "Transitive",
+ "resolved": "2.0.2",
+ "contentHash": "4EQgYdNZ92SyaO7YFk6olVnebF5V+jrHyMUjvPq89tLeMo8NSfgDF+6Zwq/lgh9j/0yfQp9Lkm0ZA0rUATCZFA=="
+ },
+ "System.Collections": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Collections.NonGeneric": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==",
+ "dependencies": {
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Collections.Specialized": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "Epx8PoVZR0iuOnJJDzp7pWvdfMMOAvpUo95pC4ScH2mJuXkKA2Y4aR3cG9qt2klHgSons1WFh4kcGW7cSXvrxg==",
+ "dependencies": {
+ "System.Collections.NonGeneric": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Globalization.Extensions": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.ComponentModel": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "VyGn1jGRZVfxnh8EdvDCi71v3bMXrsu8aYJOwoV7SNDLVhiEqwP86pPMyRGsDsxhXAm2b3o9OIqeETfN5qfezw==",
+ "dependencies": {
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.ComponentModel.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==",
+ "dependencies": {
+ "System.ComponentModel": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.ComponentModel.TypeConverter": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "16pQ6P+EdhcXzPiEK4kbA953Fu0MNG2ovxTZU81/qsCd1zPRsKc3uif5NgvllCY598k6bI0KUyKW8fanlfaDQg==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Collections.NonGeneric": "4.3.0",
+ "System.Collections.Specialized": "4.3.0",
+ "System.ComponentModel": "4.3.0",
+ "System.ComponentModel.Primitives": "4.3.0",
+ "System.Globalization": "4.3.0",
+ "System.Linq": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Extensions": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Reflection.TypeExtensions": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Threading": "4.3.0"
+ }
+ },
+ "System.Diagnostics.Debug": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Globalization": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Globalization.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "System.Globalization": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0",
+ "System.Runtime.InteropServices": "4.3.0"
+ }
+ },
+ "System.IO": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0",
+ "System.Text.Encoding": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.IO.FileSystem.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
+ "dependencies": {
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Linq": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
+ "dependencies": {
+ "System.Collections": "4.3.0",
+ "System.Diagnostics.Debug": "4.3.0",
+ "System.Resources.ResourceManager": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Extensions": "4.3.0"
+ }
+ },
+ "System.Reflection": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.IO": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Emit": {
+ "type": "Transitive",
+ "resolved": "4.7.0",
+ "contentHash": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ=="
+ },
+ "System.Reflection.Emit.ILGeneration": {
+ "type": "Transitive",
+ "resolved": "4.7.0",
+ "contentHash": "AucBYo3DSI0IDxdUjKksBcQJXPHyoPyrCXYURW1WDsLI4M65Ar/goSHjdnHOAY9MiYDNKqDlIgaYm+zL2hA1KA=="
+ },
+ "System.Reflection.Emit.Lightweight": {
+ "type": "Transitive",
+ "resolved": "4.7.0",
+ "contentHash": "a4OLB4IITxAXJeV74MDx49Oq2+PsF6Sml54XAFv+2RyWwtDBcabzoxiiJRhdhx+gaohLh4hEGCLQyBozXoQPqA=="
+ },
+ "System.Reflection.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.Primitives": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Reflection.TypeExtensions": {
+ "type": "Transitive",
+ "resolved": "4.7.0",
+ "contentHash": "VybpaOQQhqE6siHppMktjfGBw1GCwvCqiufqmP8F1nj7fTUNtW35LOEt3UZTEsECfo+ELAl/9o9nJx3U91i7vA=="
+ },
+ "System.Resources.ResourceManager": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Globalization": "4.3.0",
+ "System.Reflection": "4.3.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Runtime": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0"
+ }
+ },
+ "System.Runtime.Extensions": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Runtime.Handles": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Runtime.InteropServices": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Reflection": "4.3.0",
+ "System.Reflection.Primitives": "4.3.0",
+ "System.Runtime": "4.3.0",
+ "System.Runtime.Handles": "4.3.0"
+ }
+ },
+ "System.Text.Encoding": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.Threading": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
+ "dependencies": {
+ "System.Runtime": "4.3.0",
+ "System.Threading.Tasks": "4.3.0"
+ }
+ },
+ "System.Threading.Tasks": {
+ "type": "Transitive",
+ "resolved": "4.3.0",
+ "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "1.1.0",
+ "Microsoft.NETCore.Targets": "1.1.0",
+ "System.Runtime": "4.3.0"
+ }
+ },
+ "System.ValueTuple": {
+ "type": "Transitive",
+ "resolved": "4.5.0",
+ "contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ=="
+ }
+ }
+ }
+}
\ No newline at end of file