Decompiled source of CrystalLights v1.0.16

CrystalLights.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Linq.Expressions;
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;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using HarmonyLib;
using ItemManager;
using JetBrains.Annotations;
using LocalizationManager;
using Microsoft.CodeAnalysis;
using PieceManager;
using ServerSync;
using TMPro;
using UnityEngine;
using YamlDotNet.Core;
using YamlDotNet.Core.Events;
using YamlDotNet.Core.Tokens;
using YamlDotNet.Helpers;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.Converters;
using YamlDotNet.Serialization.EventEmitters;
using YamlDotNet.Serialization.NamingConventions;
using YamlDotNet.Serialization.NodeDeserializers;
using YamlDotNet.Serialization.NodeTypeResolvers;
using YamlDotNet.Serialization.ObjectFactories;
using YamlDotNet.Serialization.ObjectGraphTraversalStrategies;
using YamlDotNet.Serialization.ObjectGraphVisitors;
using YamlDotNet.Serialization.Schemas;
using YamlDotNet.Serialization.TypeInspectors;
using YamlDotNet.Serialization.TypeResolvers;
using YamlDotNet.Serialization.Utilities;
using YamlDotNet.Serialization.ValueDeserializers;

[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: Guid("D181CDA7-EF07-4BBC-B975-2B80FC6BBFAE")]
[assembly: ComVisible(false)]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyProduct("CrystalLights")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("CrystalLights")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[<24481a2a-01be-43c4-97a9-b3edadc04b33>Embedded]
	internal sealed class <24481a2a-01be-43c4-97a9-b3edadc04b33>EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	[<24481a2a-01be-43c4-97a9-b3edadc04b33>Embedded]
	[CompilerGenerated]
	internal sealed class <608c74ee-8480-4db4-a755-9f2b54fbb76e>NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public <608c74ee-8480-4db4-a755-9f2b54fbb76e>NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public <608c74ee-8480-4db4-a755-9f2b54fbb76e>NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
}
namespace CrystalLights
{
	[BepInPlugin("org.bepinex.plugins.crystallights", "CrystalLights", "1.0.16")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class CrystalLights : BaseUnityPlugin
	{
		private enum Toggle
		{
			On = 1,
			Off = 0
		}

		private class ConfigurationManagerAttributes
		{
			[UsedImplicitly]
			[<608c74ee-8480-4db4-a755-9f2b54fbb76e>Nullable(2)]
			public string Category = null;
		}

		private const string ModName = "CrystalLights";

		private const string ModVersion = "1.0.16";

		private const string ModGUID = "org.bepinex.plugins.crystallights";

		private static readonly ConfigSync configSync = new ConfigSync("CrystalLights")
		{
			DisplayName = "CrystalLights",
			CurrentVersion = "1.0.16",
			MinimumRequiredVersion = "1.0.16"
		};

		private static ConfigEntry<Toggle> serverConfigLocked = null;

		private static readonly Dictionary<string, ConfigEntry<float>> lightIntensities = new Dictionary<string, ConfigEntry<float>>();

		private static AssetBundle assets = null;

		private static Localization english = null;

		private ConfigEntry<T> config<T>(string group, string name, T value, ConfigDescription description, bool synchronizedSetting = true)
		{
			ConfigEntry<T> val = ((BaseUnityPlugin)this).Config.Bind<T>(group, name, value, description);
			SyncedConfigEntry<T> syncedConfigEntry = configSync.AddConfigEntry<T>(val);
			syncedConfigEntry.SynchronizedConfig = synchronizedSetting;
			return val;
		}

		private ConfigEntry<T> config<T>(string group, string name, T value, string description, bool synchronizedSetting = true)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			return config(group, name, value, new ConfigDescription(description, (AcceptableValueBase)null, Array.Empty<object>()), synchronizedSetting);
		}

		public void Awake()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			//IL_16ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_16f1: Expected O, but got Unknown
			Localizer.Load();
			english = new Localization();
			english.SetupLanguage("English");
			serverConfigLocked = config("1 - General", "Lock Configuration", Toggle.On, "If on, the configuration is locked and can be changed by server admins only.");
			configSync.AddLockingConfigEntry<Toggle>(serverConfigLocked);
			assets = PiecePrefabManager.RegisterAssetBundle("crystallights");
			Item item = new Item(assets, "CL_Crystal_Hammer");
			item.Crafting.Add(ItemManager.CraftingTable.Workbench, 1);
			item.RequiredItems.Add("Uncut_Red_Stone", 1);
			item.RequiredItems.Add("Wood", 1);
			item.CraftAmount = 1;
			BuildPiece buildPiece = AddLightPiece("CL_Large_Wall_Black");
			buildPiece.RequiredItems.Add("Uncut_Black_Stone", 10, recover: true);
			buildPiece.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece2 = AddLightPiece("CL_Large_Wall_White");
			buildPiece2.RequiredItems.Add("Uncut_Black_Stone", 10, recover: true);
			buildPiece2.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece2.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece2.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece3 = AddLightPiece("CL_Large_Wall_Blue");
			buildPiece3.RequiredItems.Add("Uncut_Blue_Stone", 10, recover: true);
			buildPiece3.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece3.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece3.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece4 = AddLightPiece("CL_Large_Wall_Green");
			buildPiece4.RequiredItems.Add("Uncut_Green_Stone", 10, recover: true);
			buildPiece4.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece4.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece4.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece5 = AddLightPiece("CL_Large_Wall_Orange");
			buildPiece5.RequiredItems.Add("Uncut_Orange_Stone", 10, recover: true);
			buildPiece5.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece5.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece5.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece6 = AddLightPiece("CL_Large_Wall_Purple");
			buildPiece6.RequiredItems.Add("Uncut_Purple_Stone", 10, recover: true);
			buildPiece6.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece6.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece6.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece7 = AddLightPiece("CL_Large_Wall_Red");
			buildPiece7.RequiredItems.Add("Uncut_Red_Stone", 10, recover: true);
			buildPiece7.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece7.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece7.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece8 = AddLightPiece("CL_Large_Wall_Yellow");
			buildPiece8.RequiredItems.Add("Uncut_Yellow_Stone", 10, recover: true);
			buildPiece8.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece8.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece8.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece9 = AddLightPiece("CL_Small_Wall_Black");
			buildPiece9.RequiredItems.Add("Uncut_Black_Stone", 3, recover: true);
			buildPiece9.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece9.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece9.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece10 = AddLightPiece("CL_Small_Wall_White");
			buildPiece10.RequiredItems.Add("Uncut_Black_Stone", 3, recover: true);
			buildPiece10.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece10.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece10.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece11 = AddLightPiece("CL_Small_Wall_Blue");
			buildPiece11.RequiredItems.Add("Uncut_Blue_Stone", 3, recover: true);
			buildPiece11.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece11.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece11.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece12 = AddLightPiece("CL_Small_Wall_Green");
			buildPiece12.RequiredItems.Add("Uncut_Green_Stone", 3, recover: true);
			buildPiece12.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece12.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece12.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece13 = AddLightPiece("CL_Small_Wall_Orange");
			buildPiece13.RequiredItems.Add("Uncut_Orange_Stone", 3, recover: true);
			buildPiece13.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece13.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece13.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece14 = AddLightPiece("CL_Small_Wall_Purple");
			buildPiece14.RequiredItems.Add("Uncut_Purple_Stone", 3, recover: true);
			buildPiece14.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece14.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece14.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece15 = AddLightPiece("CL_Small_Wall_Red");
			buildPiece15.RequiredItems.Add("Uncut_Red_Stone", 3, recover: true);
			buildPiece15.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece15.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece15.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece16 = AddLightPiece("CL_Small_Wall_Yellow");
			buildPiece16.RequiredItems.Add("Uncut_Yellow_Stone", 3, recover: true);
			buildPiece16.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece16.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece16.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece17 = AddLightPiece("CL_Standing_Lamp_Black");
			buildPiece17.RequiredItems.Add("Uncut_Black_Stone", 1, recover: true);
			buildPiece17.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece17.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece17.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece18 = AddLightPiece("CL_Standing_Lamp_White");
			buildPiece18.RequiredItems.Add("Uncut_Black_Stone", 1, recover: true);
			buildPiece18.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece18.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece18.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece19 = AddLightPiece("CL_Standing_Lamp_Blue");
			buildPiece19.RequiredItems.Add("Uncut_Blue_Stone", 1, recover: true);
			buildPiece19.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece19.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece19.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece20 = AddLightPiece("CL_Standing_Lamp_Green");
			buildPiece20.RequiredItems.Add("Uncut_Green_Stone", 1, recover: true);
			buildPiece20.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece20.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece20.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece21 = AddLightPiece("CL_Standing_Lamp_Orange");
			buildPiece21.RequiredItems.Add("Uncut_Orange_Stone", 1, recover: true);
			buildPiece21.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece21.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece21.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece22 = AddLightPiece("CL_Standing_Lamp_Purple");
			buildPiece22.RequiredItems.Add("Uncut_Purple_Stone", 1, recover: true);
			buildPiece22.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece22.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece22.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece23 = AddLightPiece("CL_Standing_Lamp_Red");
			buildPiece23.RequiredItems.Add("Uncut_Red_Stone", 1, recover: true);
			buildPiece23.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece23.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece23.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece24 = AddLightPiece("CL_Standing_Lamp_Yellow");
			buildPiece24.RequiredItems.Add("Uncut_Yellow_Stone", 1, recover: true);
			buildPiece24.RequiredItems.Add("IronNails", 1, recover: true);
			buildPiece24.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece24.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece25 = AddLightPiece("CL_Chandelier_Black");
			buildPiece25.RequiredItems.Add("Uncut_Black_Stone", 15, recover: true);
			buildPiece25.RequiredItems.Add("IronNails", 5, recover: true);
			buildPiece25.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece25.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece26 = AddLightPiece("CL_Chandelier_White");
			buildPiece26.RequiredItems.Add("Uncut_Black_Stone", 15, recover: true);
			buildPiece26.RequiredItems.Add("IronNails", 5, recover: true);
			buildPiece26.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece26.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece27 = AddLightPiece("CL_Chandelier_Blue");
			buildPiece27.RequiredItems.Add("Uncut_Blue_Stone", 15, recover: true);
			buildPiece27.RequiredItems.Add("IronNails", 5, recover: true);
			buildPiece27.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece27.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece28 = AddLightPiece("CL_Chandelier_Green");
			buildPiece28.RequiredItems.Add("Uncut_Green_Stone", 15, recover: true);
			buildPiece28.RequiredItems.Add("IronNails", 5, recover: true);
			buildPiece28.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece28.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece29 = AddLightPiece("CL_Chandelier_Orange");
			buildPiece29.RequiredItems.Add("Uncut_Orange_Stone", 15, recover: true);
			buildPiece29.RequiredItems.Add("IronNails", 5, recover: true);
			buildPiece29.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece29.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece30 = AddLightPiece("CL_Chandelier_Yellow");
			buildPiece30.RequiredItems.Add("Uncut_Yellow_Stone", 15, recover: true);
			buildPiece30.RequiredItems.Add("IronNails", 5, recover: true);
			buildPiece30.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece30.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece31 = AddLightPiece("CL_Chandelier_Purple");
			buildPiece31.RequiredItems.Add("Uncut_Purple_Stone", 15, recover: true);
			buildPiece31.RequiredItems.Add("IronNails", 5, recover: true);
			buildPiece31.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece31.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece32 = AddLightPiece("CL_Chandelier_Red");
			buildPiece32.RequiredItems.Add("Uncut_Red_Stone", 15, recover: true);
			buildPiece32.RequiredItems.Add("IronNails", 5, recover: true);
			buildPiece32.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece32.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece33 = AddLightPiece("CL_Brazier_Black");
			buildPiece33.RequiredItems.Add("Uncut_Black_Stone", 10, recover: true);
			buildPiece33.RequiredItems.Add("IronNails", 4, recover: true);
			buildPiece33.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece33.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece34 = AddLightPiece("CL_Brazier_White");
			buildPiece34.RequiredItems.Add("Uncut_Black_Stone", 10, recover: true);
			buildPiece34.RequiredItems.Add("IronNails", 4, recover: true);
			buildPiece34.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece34.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece35 = AddLightPiece("CL_Brazier_Blue");
			buildPiece35.RequiredItems.Add("Uncut_Blue_Stone", 10, recover: true);
			buildPiece35.RequiredItems.Add("IronNails", 4, recover: true);
			buildPiece35.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece35.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece36 = AddLightPiece("CL_Brazier_Green");
			buildPiece36.RequiredItems.Add("Uncut_Green_Stone", 10, recover: true);
			buildPiece36.RequiredItems.Add("IronNails", 4, recover: true);
			buildPiece36.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece36.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece37 = AddLightPiece("CL_Brazier_Orange");
			buildPiece37.RequiredItems.Add("Uncut_Orange_Stone", 10, recover: true);
			buildPiece37.RequiredItems.Add("IronNails", 4, recover: true);
			buildPiece37.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece37.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece38 = AddLightPiece("CL_Brazier_Purple");
			buildPiece38.RequiredItems.Add("Uncut_Purple_Stone", 10, recover: true);
			buildPiece38.RequiredItems.Add("IronNails", 4, recover: true);
			buildPiece38.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece38.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece39 = AddLightPiece("CL_Brazier_Red");
			buildPiece39.RequiredItems.Add("Uncut_Red_Stone", 10, recover: true);
			buildPiece39.RequiredItems.Add("IronNails", 4, recover: true);
			buildPiece39.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece39.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece40 = AddLightPiece("CL_Brazier_Yellow");
			buildPiece40.RequiredItems.Add("Uncut_Yellow_Stone", 10, recover: true);
			buildPiece40.RequiredItems.Add("IronNails", 4, recover: true);
			buildPiece40.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece40.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece41 = AddLightPiece("CL_Hanging_Black");
			buildPiece41.RequiredItems.Add("Uncut_Black_Stone", 5, recover: true);
			buildPiece41.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece41.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece41.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece42 = AddLightPiece("CL_Hanging_White");
			buildPiece42.RequiredItems.Add("Uncut_Black_Stone", 5, recover: true);
			buildPiece42.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece42.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece42.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece43 = AddLightPiece("CL_Hanging_Blue");
			buildPiece43.RequiredItems.Add("Uncut_Blue_Stone", 5, recover: true);
			buildPiece43.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece43.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece43.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece44 = AddLightPiece("CL_Hanging_Green");
			buildPiece44.RequiredItems.Add("Uncut_Green_Stone", 5, recover: true);
			buildPiece44.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece44.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece44.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece45 = AddLightPiece("CL_Hanging_Orange");
			buildPiece45.RequiredItems.Add("Uncut_Orange_Stone", 5, recover: true);
			buildPiece45.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece45.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece45.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece46 = AddLightPiece("CL_Hanging_Purple");
			buildPiece46.RequiredItems.Add("Uncut_Purple_Stone", 5, recover: true);
			buildPiece46.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece46.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece46.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece47 = AddLightPiece("CL_Hanging_Red");
			buildPiece47.RequiredItems.Add("Uncut_Red_Stone", 5, recover: true);
			buildPiece47.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece47.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece47.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece48 = AddLightPiece("CL_Hanging_Yellow");
			buildPiece48.RequiredItems.Add("Uncut_Yellow_Stone", 5, recover: true);
			buildPiece48.RequiredItems.Add("IronNails", 2, recover: true);
			buildPiece48.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece48.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece49 = AddLightPiece("CL_Pole_Black");
			buildPiece49.RequiredItems.Add("Uncut_Black_Stone", 5, recover: true);
			buildPiece49.RequiredItems.Add("Iron", 2, recover: true);
			buildPiece49.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece49.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece50 = AddLightPiece("CL_Pole_White");
			buildPiece50.RequiredItems.Add("Uncut_Black_Stone", 5, recover: true);
			buildPiece50.RequiredItems.Add("Iron", 2, recover: true);
			buildPiece50.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece50.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece51 = AddLightPiece("CL_Pole_Blue");
			buildPiece51.RequiredItems.Add("Uncut_Blue_Stone", 5, recover: true);
			buildPiece51.RequiredItems.Add("Iron", 2, recover: true);
			buildPiece51.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece51.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece52 = AddLightPiece("CL_Pole_Green");
			buildPiece52.RequiredItems.Add("Uncut_Green_Stone", 5, recover: true);
			buildPiece52.RequiredItems.Add("Iron", 2, recover: true);
			buildPiece52.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece52.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece53 = AddLightPiece("CL_Pole_Orange");
			buildPiece53.RequiredItems.Add("Uncut_Orange_Stone", 5, recover: true);
			buildPiece53.RequiredItems.Add("Iron", 2, recover: true);
			buildPiece53.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece53.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece54 = AddLightPiece("CL_Pole_Purple");
			buildPiece54.RequiredItems.Add("Uncut_Purple_Stone", 5, recover: true);
			buildPiece54.RequiredItems.Add("Iron", 2, recover: true);
			buildPiece54.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece54.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece55 = AddLightPiece("CL_Pole_Red");
			buildPiece55.RequiredItems.Add("Uncut_Red_Stone", 5, recover: true);
			buildPiece55.RequiredItems.Add("Iron", 2, recover: true);
			buildPiece55.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece55.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece56 = AddLightPiece("CL_Pole_Yellow");
			buildPiece56.RequiredItems.Add("Uncut_Yellow_Stone", 5, recover: true);
			buildPiece56.RequiredItems.Add("Iron", 2, recover: true);
			buildPiece56.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece56.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece57 = AddLightPiece("CL_Raw_Black");
			buildPiece57.RequiredItems.Add("Uncut_Black_Stone", 5, recover: true);
			buildPiece57.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece57.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece58 = AddLightPiece("CL_Raw_White");
			buildPiece58.RequiredItems.Add("Uncut_Black_Stone", 5, recover: true);
			buildPiece58.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece58.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece59 = AddLightPiece("CL_Raw_Blue");
			buildPiece59.RequiredItems.Add("Uncut_Blue_Stone", 5, recover: true);
			buildPiece59.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece59.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece60 = AddLightPiece("CL_Raw_Green");
			buildPiece60.RequiredItems.Add("Uncut_Green_Stone", 5, recover: true);
			buildPiece60.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece60.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece61 = AddLightPiece("CL_Raw_Orange");
			buildPiece61.RequiredItems.Add("Uncut_Orange_Stone", 5, recover: true);
			buildPiece61.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece61.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece62 = AddLightPiece("CL_Raw_Purple");
			buildPiece62.RequiredItems.Add("Uncut_Purple_Stone", 5, recover: true);
			buildPiece62.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece62.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece63 = AddLightPiece("CL_Raw_Red");
			buildPiece63.RequiredItems.Add("Uncut_Red_Stone", 5, recover: true);
			buildPiece63.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece63.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece64 = AddLightPiece("CL_Raw_Yellow");
			buildPiece64.RequiredItems.Add("Uncut_Yellow_Stone", 5, recover: true);
			buildPiece64.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece64.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece65 = AddLightPiece("CL_Standing_Torch_Black");
			buildPiece65.RequiredItems.Add("Uncut_Black_Stone", 1, recover: true);
			buildPiece65.RequiredItems.Add("Wood", 2, recover: true);
			buildPiece65.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece65.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece66 = AddLightPiece("CL_Standing_Torch_White");
			buildPiece66.RequiredItems.Add("Uncut_Black_Stone", 1, recover: true);
			buildPiece66.RequiredItems.Add("Wood", 2, recover: true);
			buildPiece66.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece66.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece67 = AddLightPiece("CL_Standing_Torch_Blue");
			buildPiece67.RequiredItems.Add("Uncut_Blue_Stone", 1, recover: true);
			buildPiece67.RequiredItems.Add("Wood", 2, recover: true);
			buildPiece67.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece67.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece68 = AddLightPiece("CL_Standing_Torch_Green");
			buildPiece68.RequiredItems.Add("Uncut_Green_Stone", 1, recover: true);
			buildPiece68.RequiredItems.Add("Wood", 2, recover: true);
			buildPiece68.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece68.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece69 = AddLightPiece("CL_Standing_Torch_Orange");
			buildPiece69.RequiredItems.Add("Uncut_Orange_Stone", 1, recover: true);
			buildPiece69.RequiredItems.Add("Wood", 2, recover: true);
			buildPiece69.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece69.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece70 = AddLightPiece("CL_Standing_Torch_Purple");
			buildPiece70.RequiredItems.Add("Uncut_Purple_Stone", 1, recover: true);
			buildPiece70.RequiredItems.Add("Wood", 2, recover: true);
			buildPiece70.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece70.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece71 = AddLightPiece("CL_Standing_Torch_Red");
			buildPiece71.RequiredItems.Add("Uncut_Red_Stone", 1, recover: true);
			buildPiece71.RequiredItems.Add("Wood", 2, recover: true);
			buildPiece71.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece71.Category.Set(BuildPieceCategory.Misc);
			BuildPiece buildPiece72 = AddLightPiece("CL_Standing_Torch_Yellow");
			buildPiece72.RequiredItems.Add("Uncut_Yellow_Stone", 1, recover: true);
			buildPiece72.RequiredItems.Add("Wood", 2, recover: true);
			buildPiece72.Crafting.Set(PieceManager.CraftingTable.None);
			buildPiece72.Category.Set(BuildPieceCategory.Misc);
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			Harmony val = new Harmony("org.bepinex.plugins.crystallights");
			val.PatchAll(executingAssembly);
		}

		private BuildPiece AddLightPiece(string prefabName)
		{
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Expected O, but got Unknown
			BuildPiece light = new BuildPiece(assets, prefabName);
			light.Tool.Add("CL_Crystal_Hammer");
			string name = light.Prefab.GetComponent<Piece>().m_name;
			name = new Regex("['[\"\\]]").Replace(english.Localize(name), "").Trim();
			string category = Localization.instance.Localize(name).Trim();
			lightIntensities.Add(prefabName, config(name, "Light Range", light.Prefab.GetComponentInChildren<Light>().range, new ConfigDescription("The range of the light emitted by " + english.Localize(prefabName) + ".", (AcceptableValueBase)null, new object[1]
			{
				new ConfigurationManagerAttributes
				{
					Category = category
				}
			})));
			lightIntensities[prefabName].SettingChanged += delegate
			{
				SetLightRange(light.Prefab);
			};
			SetLightRange(light.Prefab);
			return light;
		}

		private void SetLightRange(GameObject lightPrefab)
		{
			Light[] componentsInChildren = lightPrefab.GetComponentsInChildren<Light>();
			foreach (Light val in componentsInChildren)
			{
				val.range = lightIntensities[((Object)lightPrefab).name].Value;
			}
		}
	}
}
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[<b89b921d-8954-4084-bd4d-1feb826a594e>Embedded]
	internal sealed class <b89b921d-8954-4084-bd4d-1feb826a594e>EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	[<b89b921d-8954-4084-bd4d-1feb826a594e>Embedded]
	[CompilerGenerated]
	internal sealed class <f6f8ff5f-fa45-43ba-9489-b740a9e7c98b>NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public <f6f8ff5f-fa45-43ba-9489-b740a9e7c98b>NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public <f6f8ff5f-fa45-43ba-9489-b740a9e7c98b>NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[<b89b921d-8954-4084-bd4d-1feb826a594e>Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class <bb5e3e5e-5c47-485a-88ef-ea5afd7f01c7>NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public <bb5e3e5e-5c47-485a-88ef-ea5afd7f01c7>NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace LocalizationManager
{
	[<bb5e3e5e-5c47-485a-88ef-ea5afd7f01c7>NullableContext(1)]
	[PublicAPI]
	[<f6f8ff5f-fa45-43ba-9489-b740a9e7c98b>Nullable(0)]
	internal class Localizer
	{
		private static readonly Dictionary<string, Dictionary<string, Func<string>>> PlaceholderProcessors;

		private static readonly Dictionary<string, Dictionary<string, string>> loadedTexts;

		private static readonly ConditionalWeakTable<Localization, string> localizationLanguage;

		private static readonly List<WeakReference<Localization>> localizationObjects;

		[<f6f8ff5f-fa45-43ba-9489-b740a9e7c98b>Nullable(2)]
		private static BaseUnityPlugin _plugin;

		private static readonly List<string> fileExtensions;

		private static BaseUnityPlugin plugin
		{
			get
			{
				//IL_009b: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a5: Expected O, but got Unknown
				if (_plugin == null)
				{
					IEnumerable<TypeInfo> source;
					try
					{
						source = Assembly.GetExecutingAssembly().DefinedTypes.ToList();
					}
					catch (ReflectionTypeLoadException ex)
					{
						source = from t in ex.Types
							where t != null
							select t.GetTypeInfo();
					}
					_plugin = (BaseUnityPlugin)Chainloader.ManagerObject.GetComponent((Type)source.First([<bb5e3e5e-5c47-485a-88ef-ea5afd7f01c7>NullableContext(0)] (TypeInfo t) => t.IsClass && typeof(BaseUnityPlugin).IsAssignableFrom(t)));
				}
				return _plugin;
			}
		}

		private static void UpdatePlaceholderText(Localization localization, string key)
		{
			localizationLanguage.TryGetValue(localization, out var value);
			string text = loadedTexts[value][key];
			if (PlaceholderProcessors.TryGetValue(key, out var value2))
			{
				text = value2.Aggregate(text, [<bb5e3e5e-5c47-485a-88ef-ea5afd7f01c7>NullableContext(0)] (string current, KeyValuePair<string, Func<string>> kv) => current.Replace("{" + kv.Key + "}", kv.Value()));
			}
			localization.AddWord(key, text);
		}

		public static void AddPlaceholder<T>(string key, string placeholder, ConfigEntry<T> config, [<f6f8ff5f-fa45-43ba-9489-b740a9e7c98b>Nullable(new byte[] { 2, 1, 1 })] Func<T, string> convertConfigValue = null)
		{
			if (convertConfigValue == null)
			{
				convertConfigValue = [<bb5e3e5e-5c47-485a-88ef-ea5afd7f01c7>NullableContext(0)] [return: <f6f8ff5f-fa45-43ba-9489-b740a9e7c98b>Nullable(1)] (T val) => val.ToString();
			}
			if (!PlaceholderProcessors.ContainsKey(key))
			{
				PlaceholderProcessors[key] = new Dictionary<string, Func<string>>();
			}
			config.SettingChanged += [<bb5e3e5e-5c47-485a-88ef-ea5afd7f01c7>NullableContext(0)] (object _, EventArgs _) =>
			{
				UpdatePlaceholder();
			};
			if (loadedTexts.ContainsKey(Localization.instance.GetSelectedLanguage()))
			{
				UpdatePlaceholder();
			}
			void UpdatePlaceholder()
			{
				PlaceholderProcessors[key][placeholder] = () => convertConfigValue(config.Value);
				UpdatePlaceholderText(Localization.instance, key);
			}
		}

		public static void AddText(string key, string text)
		{
			List<WeakReference<Localization>> list = new List<WeakReference<Localization>>();
			foreach (WeakReference<Localization> localizationObject in localizationObjects)
			{
				if (localizationObject.TryGetTarget(out var target))
				{
					Dictionary<string, string> dictionary = loadedTexts[localizationLanguage.GetOrCreateValue(target)];
					if (!target.m_translations.ContainsKey(key))
					{
						dictionary[key] = text;
						target.AddWord(key, text);
					}
				}
				else
				{
					list.Add(localizationObject);
				}
			}
			foreach (WeakReference<Localization> item in list)
			{
				localizationObjects.Remove(item);
			}
		}

		public static void Load()
		{
			LoadLocalization(Localization.instance, Localization.instance.GetSelectedLanguage());
		}

		private static void LoadLocalization(Localization __instance, string language)
		{
			if (!localizationLanguage.Remove(__instance))
			{
				localizationObjects.Add(new WeakReference<Localization>(__instance));
			}
			localizationLanguage.Add(__instance, language);
			Dictionary<string, string> dictionary = new Dictionary<string, string>();
			foreach (string item in from f in Directory.GetFiles(Path.GetDirectoryName(Paths.PluginPath), plugin.Info.Metadata.Name + ".*", SearchOption.AllDirectories)
				where fileExtensions.IndexOf(Path.GetExtension(f)) >= 0
				select f)
			{
				string text = Path.GetFileNameWithoutExtension(item).Split(new char[1] { '.' })[1];
				if (dictionary.ContainsKey(text))
				{
					Debug.LogWarning((object)("Duplicate key " + text + " found for " + plugin.Info.Metadata.Name + ". The duplicate file found at " + item + " will be skipped."));
				}
				else
				{
					dictionary[text] = item;
				}
			}
			byte[] array = LoadTranslationFromAssembly("English");
			if (array == null)
			{
				throw new Exception("Found no English localizations in mod " + plugin.Info.Metadata.Name + ". Expected an embedded resource translations/English.json or translations/English.yml.");
			}
			Dictionary<string, string> dictionary2 = new <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder().IgnoreFields().Build().Deserialize<Dictionary<string, string>>(Encoding.UTF8.GetString(array));
			if (dictionary2 == null)
			{
				throw new Exception("Localization for mod " + plugin.Info.Metadata.Name + " failed: Localization file was empty.");
			}
			string text2 = null;
			if (language != "English")
			{
				if (dictionary.ContainsKey(language))
				{
					text2 = File.ReadAllText(dictionary[language]);
				}
				else
				{
					byte[] array2 = LoadTranslationFromAssembly(language);
					if (array2 != null)
					{
						text2 = Encoding.UTF8.GetString(array2);
					}
				}
			}
			if (text2 == null && dictionary.ContainsKey("English"))
			{
				text2 = File.ReadAllText(dictionary["English"]);
			}
			if (text2 != null)
			{
				foreach (KeyValuePair<string, string> item2 in new <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder().IgnoreFields().Build().Deserialize<Dictionary<string, string>>(text2) ?? new Dictionary<string, string>())
				{
					dictionary2[item2.Key] = item2.Value;
				}
			}
			loadedTexts[language] = dictionary2;
			foreach (KeyValuePair<string, string> item3 in dictionary2)
			{
				UpdatePlaceholderText(__instance, item3.Key);
			}
		}

		static Localizer()
		{
			//IL_004d: 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_008c: Expected O, but got Unknown
			PlaceholderProcessors = new Dictionary<string, Dictionary<string, Func<string>>>();
			loadedTexts = new Dictionary<string, Dictionary<string, string>>();
			localizationLanguage = new ConditionalWeakTable<Localization, string>();
			localizationObjects = new List<WeakReference<Localization>>();
			fileExtensions = new List<string> { ".json", ".yml" };
			new Harmony("org.bepinex.helpers.LocalizationManager").Patch((MethodBase)AccessTools.DeclaredMethod(typeof(Localization), "LoadCSV", (Type[])null, (Type[])null), (HarmonyMethod)null, new HarmonyMethod(AccessTools.DeclaredMethod(typeof(Localizer), "LoadLocalization", (Type[])null, (Type[])null)), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
		}

		[return: <f6f8ff5f-fa45-43ba-9489-b740a9e7c98b>Nullable(2)]
		private static byte[] LoadTranslationFromAssembly(string language)
		{
			foreach (string fileExtension in fileExtensions)
			{
				byte[] array = ReadEmbeddedFileBytes("translations." + language + fileExtension);
				if (array != null)
				{
					return array;
				}
			}
			return null;
		}

		[<bb5e3e5e-5c47-485a-88ef-ea5afd7f01c7>NullableContext(2)]
		public static byte[] ReadEmbeddedFileBytes([<f6f8ff5f-fa45-43ba-9489-b740a9e7c98b>Nullable(1)] string resourceFileName, Assembly containingAssembly = null)
		{
			using MemoryStream memoryStream = new MemoryStream();
			if ((object)containingAssembly == null)
			{
				containingAssembly = Assembly.GetCallingAssembly();
			}
			string text = containingAssembly.GetManifestResourceNames().FirstOrDefault([<bb5e3e5e-5c47-485a-88ef-ea5afd7f01c7>NullableContext(0)] (string str) => str.EndsWith(resourceFileName, StringComparison.Ordinal));
			if (text != null)
			{
				containingAssembly.GetManifestResourceStream(text)?.CopyTo(memoryStream);
			}
			return (memoryStream.Length == 0L) ? null : memoryStream.ToArray();
		}
	}
}
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[<8e4463b6-bae6-4f2c-8630-16f0a6d78824>Embedded]
	internal sealed class <8e4463b6-bae6-4f2c-8630-16f0a6d78824>EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[<8e4463b6-bae6-4f2c-8630-16f0a6d78824>Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class <d086df14-b1c5-4533-8c99-acbca0bd3e2f>NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public <d086df14-b1c5-4533-8c99-acbca0bd3e2f>NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public <d086df14-b1c5-4533-8c99-acbca0bd3e2f>NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[<8e4463b6-bae6-4f2c-8630-16f0a6d78824>Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class <b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public <b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace System.Diagnostics.CodeAnalysis
{
	[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, Inherited = false)]
	internal sealed class <d1de1ac9-7138-42ea-95ad-d33b9cacfac9>AllowNullAttribute : Attribute
	{
	}
	[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, Inherited = false)]
	internal sealed class <239d04ff-e427-40bf-878d-5535acc30bb1>DisallowNullAttribute : Attribute
	{
	}
	[AttributeUsage(AttributeTargets.Method, Inherited = false)]
	internal sealed class <0994b631-39f0-4fc6-9e90-24fda3ed9928>DoesNotReturnAttribute : Attribute
	{
	}
	[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
	internal sealed class <a0dd3811-5967-42ff-a130-5b976fd7dc1a>DoesNotReturnIfAttribute : Attribute
	{
		public bool ParameterValue { get; }

		public <a0dd3811-5967-42ff-a130-5b976fd7dc1a>DoesNotReturnIfAttribute(bool parameterValue)
		{
			ParameterValue = parameterValue;
		}
	}
	[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.ReturnValue, Inherited = false)]
	internal sealed class <bb54031e-8042-4aae-b9d1-1ddf7e3afef7>MaybeNullAttribute : Attribute
	{
	}
	[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
	internal sealed class <415262cd-afcf-4b06-94dd-19db9a2e5484>MaybeNullWhenAttribute : Attribute
	{
		public bool ReturnValue { get; }

		public <415262cd-afcf-4b06-94dd-19db9a2e5484>MaybeNullWhenAttribute(bool returnValue)
		{
			ReturnValue = returnValue;
		}
	}
	[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.ReturnValue, Inherited = false)]
	internal sealed class <66397b17-5418-46c1-8ba9-5b3d2aa42f6b>NotNullAttribute : Attribute
	{
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	[AttributeUsage(AttributeTargets.Property | AttributeTargets.Parameter | AttributeTargets.ReturnValue, AllowMultiple = true, Inherited = false)]
	[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
	internal sealed class <acb5b025-f7c7-4f79-8b58-06a09e39368d>NotNullIfNotNullAttribute : Attribute
	{
		public string ParameterName { get; }

		public <acb5b025-f7c7-4f79-8b58-06a09e39368d>NotNullIfNotNullAttribute(string parameterName)
		{
			ParameterName = parameterName;
		}
	}
	[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
	internal sealed class <2c0161a2-2f88-4b9e-8b01-2a3d1df765e6>NotNullWhenAttribute : Attribute
	{
		public bool ReturnValue { get; }

		public <2c0161a2-2f88-4b9e-8b01-2a3d1df765e6>NotNullWhenAttribute(bool returnValue)
		{
			ReturnValue = returnValue;
		}
	}
}
namespace System.Collections.Generic
{
	internal static class <fa27229c-a1df-44d9-8ded-4628ea49b205>DeconstructionExtensions
	{
		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
		public static void Deconstruct<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TKey, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TValue>([<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(new byte[] { 0, 1, 1 })] this KeyValuePair<TKey, TValue> pair, out TKey key, out TValue value)
		{
			key = pair.Key;
			value = pair.Value;
		}
	}
}
namespace YamlDotNet
{
	[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal sealed class <b24e200b-793d-4194-b478-09fee28526b8>CultureInfoAdapter : CultureInfo
	{
		private readonly IFormatProvider provider;

		public <b24e200b-793d-4194-b478-09fee28526b8>CultureInfoAdapter(CultureInfo baseCulture, IFormatProvider provider)
			: base(baseCulture.LCID)
		{
			this.provider = provider;
		}

		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(2)]
		public override object GetFormat(Type formatType)
		{
			return provider.GetFormat(formatType);
		}
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
	internal static class <6bb0ba5c-2315-4c5b-87b6-449ce29b70bd>ReflectionExtensions
	{
		[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		private static readonly FieldInfo RemoteStackTraceField = typeof(Exception).GetField("_remoteStackTraceString", BindingFlags.Instance | BindingFlags.NonPublic);

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public static Type BaseType(this Type type)
		{
			return type.BaseType;
		}

		public static bool IsValueType(this Type type)
		{
			return type.IsValueType;
		}

		public static bool IsGenericType(this Type type)
		{
			return type.IsGenericType;
		}

		public static bool IsGenericTypeDefinition(this Type type)
		{
			return type.IsGenericTypeDefinition;
		}

		public static bool IsInterface(this Type type)
		{
			return type.IsInterface;
		}

		public static bool IsEnum(this Type type)
		{
			return type.IsEnum;
		}

		public static bool IsDbNull(this object value)
		{
			return value is DBNull;
		}

		public static bool HasDefaultConstructor(this Type type)
		{
			if (!type.IsValueType)
			{
				return type.GetConstructor(BindingFlags.Instance | BindingFlags.Public, null, Type.EmptyTypes, null) != null;
			}
			return true;
		}

		public static TypeCode GetTypeCode(this Type type)
		{
			return Type.GetTypeCode(type);
		}

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public static PropertyInfo GetPublicProperty(this Type type, string name)
		{
			return type.GetProperty(name);
		}

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public static FieldInfo GetPublicStaticField(this Type type, string name)
		{
			return type.GetField(name, BindingFlags.Static | BindingFlags.Public);
		}

		public static IEnumerable<PropertyInfo> GetProperties(this Type type, bool includeNonPublic)
		{
			BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.Public;
			if (includeNonPublic)
			{
				bindingFlags |= BindingFlags.NonPublic;
			}
			if (!type.IsInterface)
			{
				return type.GetProperties(bindingFlags);
			}
			return new Type[1] { type }.Concat(type.GetInterfaces()).SelectMany([<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(0)] (Type i) => i.GetProperties(bindingFlags));
		}

		public static IEnumerable<PropertyInfo> GetPublicProperties(this Type type)
		{
			return GetProperties(type, includeNonPublic: false);
		}

		public static IEnumerable<FieldInfo> GetPublicFields(this Type type)
		{
			return type.GetFields(BindingFlags.Instance | BindingFlags.Public);
		}

		public static IEnumerable<MethodInfo> GetPublicStaticMethods(this Type type)
		{
			return type.GetMethods(BindingFlags.Static | BindingFlags.Public);
		}

		public static MethodInfo GetPrivateStaticMethod(this Type type, string name)
		{
			return type.GetMethod(name, BindingFlags.Static | BindingFlags.NonPublic) ?? throw new MissingMethodException("Expected to find a method named '" + name + "' in '" + type.FullName + "'.");
		}

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public static MethodInfo GetPublicStaticMethod(this Type type, string name, params Type[] parameterTypes)
		{
			return type.GetMethod(name, BindingFlags.Static | BindingFlags.Public, null, parameterTypes, null);
		}

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public static MethodInfo GetPublicInstanceMethod(this Type type, string name)
		{
			return type.GetMethod(name, BindingFlags.Instance | BindingFlags.Public);
		}

		public static Exception Unwrap(this TargetInvocationException ex)
		{
			Exception innerException = ex.InnerException;
			if (innerException == null)
			{
				return ex;
			}
			if (RemoteStackTraceField != null)
			{
				RemoteStackTraceField.SetValue(innerException, innerException.StackTrace + "\r\n");
			}
			return innerException;
		}

		public static bool IsInstanceOf(this Type type, object o)
		{
			return type.IsInstanceOfType(o);
		}

		public static Attribute[] GetAllCustomAttributes<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TAttribute>(this PropertyInfo property)
		{
			return Attribute.GetCustomAttributes(property, typeof(TAttribute));
		}
	}
	internal static class <6537d2e8-ac34-4a99-bffc-b13e4e289fa6>PropertyInfoExtensions
	{
		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public static object ReadValue(this PropertyInfo property, object target)
		{
			return property.GetValue(target, null);
		}
	}
	internal static class <05ed95d6-9f6c-408c-a04c-446167f122cf>StandardRegexOptions
	{
		public const RegexOptions Compiled = RegexOptions.Compiled;
	}
}
namespace YamlDotNet.Serialization
{
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
	internal abstract class <6854748a-db39-4259-ba81-0594adb5b94b>BuilderSkeleton<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TBuilder> where TBuilder : <6854748a-db39-4259-ba81-0594adb5b94b>BuilderSkeleton<TBuilder>
	{
		internal <8415bd25-4c19-4eaf-bf46-fb9f0daeef6a>INamingConvention namingConvention = <4a26ba71-df91-4273-a61d-a8fff76a177b>NullNamingConvention.Instance;

		internal <c069c2af-387d-45b0-b5eb-4e1ab6ea4a77>ITypeResolver typeResolver;

		internal readonly <eff85ddc-dcf2-4d16-88c1-009583e332ce>YamlAttributeOverrides overrides;

		internal readonly <467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing, <05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter> typeConverterFactories;

		internal readonly <467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector, <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector> typeInspectorFactories;

		private bool ignoreFields;

		private bool includeNonPublicProperties;

		protected abstract TBuilder Self { get; }

		internal <6854748a-db39-4259-ba81-0594adb5b94b>BuilderSkeleton(<c069c2af-387d-45b0-b5eb-4e1ab6ea4a77>ITypeResolver typeResolver)
		{
			overrides = new <eff85ddc-dcf2-4d16-88c1-009583e332ce>YamlAttributeOverrides();
			typeConverterFactories = new <467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing, <05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter>
			{
				{
					typeof(<7866561d-d4c2-48a2-900c-2addd8e28c5d>GuidConverter),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <7866561d-d4c2-48a2-900c-2addd8e28c5d>GuidConverter(jsonCompatible: false)
				},
				{
					typeof(<623a0269-948e-4c4c-ae3b-3587b42c06c4>SystemTypeConverter),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <623a0269-948e-4c4c-ae3b-3587b42c06c4>SystemTypeConverter()
				}
			};
			typeInspectorFactories = new <467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector, <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector>();
			this.typeResolver = typeResolver ?? throw new ArgumentNullException("typeResolver");
		}

		internal <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector BuildTypeInspector()
		{
			<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector2 = new <4a711928-f8f3-4eac-aa98-638defae6e47>ReadablePropertiesTypeInspector(typeResolver, includeNonPublicProperties);
			if (!ignoreFields)
			{
				<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector2 = new <1d6ad2d5-32f4-4786-99f7-2adaecc4b7e0>CompositeTypeInspector(new <0eb1579c-6bec-4643-b44c-c77bdcb166a5>ReadableFieldsTypeInspector(typeResolver), <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector2);
			}
			return typeInspectorFactories.BuildComponentChain(<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector2);
		}

		public TBuilder IgnoreFields()
		{
			ignoreFields = true;
			return Self;
		}

		public TBuilder IncludeNonPublicProperties()
		{
			includeNonPublicProperties = true;
			return Self;
		}

		public TBuilder WithNamingConvention(<8415bd25-4c19-4eaf-bf46-fb9f0daeef6a>INamingConvention namingConvention)
		{
			this.namingConvention = namingConvention ?? throw new ArgumentNullException("namingConvention");
			return Self;
		}

		public TBuilder WithTypeResolver(<c069c2af-387d-45b0-b5eb-4e1ab6ea4a77>ITypeResolver typeResolver)
		{
			this.typeResolver = typeResolver ?? throw new ArgumentNullException("typeResolver");
			return Self;
		}

		public abstract TBuilder WithTagMapping(<bca081f8-df74-4d1e-ae06-8e5741607d60>TagName tag, Type type);

		public TBuilder WithAttributeOverride<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TClass>(Expression<Func<TClass, object>> propertyAccessor, Attribute attribute)
		{
			overrides.Add(propertyAccessor, attribute);
			return Self;
		}

		public TBuilder WithAttributeOverride(Type type, string member, Attribute attribute)
		{
			overrides.Add(type, member, attribute);
			return Self;
		}

		public TBuilder WithTypeConverter(<05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter typeConverter)
		{
			return WithTypeConverter(typeConverter, delegate(<9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<<05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter> w)
			{
				w.OnTop();
			});
		}

		public TBuilder WithTypeConverter(<05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter typeConverter, Action<<9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<<05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter>> where)
		{
			if (typeConverter == null)
			{
				throw new ArgumentNullException("typeConverter");
			}
			if (where == null)
			{
				throw new ArgumentNullException("where");
			}
			where(typeConverterFactories.CreateRegistrationLocationSelector(typeConverter.GetType(), (<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => typeConverter));
			return Self;
		}

		public TBuilder WithTypeConverter<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TYamlTypeConverter>(<b0ad906e-7555-4d2b-b31f-3a4db3c3d970>WrapperFactory<<05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter, <05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter> typeConverterFactory, Action<<2fe8cad5-706d-47d3-8140-aaaa0d817290>ITrackingRegistrationLocationSelectionSyntax<<05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter>> where) where TYamlTypeConverter : <05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter
		{
			if (typeConverterFactory == null)
			{
				throw new ArgumentNullException("typeConverterFactory");
			}
			if (where == null)
			{
				throw new ArgumentNullException("where");
			}
			where(typeConverterFactories.CreateTrackingRegistrationLocationSelector(typeof(TYamlTypeConverter), (<05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter wrapped, <b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => typeConverterFactory(wrapped)));
			return Self;
		}

		public TBuilder WithoutTypeConverter<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TYamlTypeConverter>() where TYamlTypeConverter : <05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter
		{
			return WithoutTypeConverter(typeof(TYamlTypeConverter));
		}

		public TBuilder WithoutTypeConverter(Type converterType)
		{
			if (converterType == null)
			{
				throw new ArgumentNullException("converterType");
			}
			typeConverterFactories.Remove(converterType);
			return Self;
		}

		public TBuilder WithTypeInspector<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TTypeInspector>(Func<<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector, TTypeInspector> typeInspectorFactory) where TTypeInspector : <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector
		{
			return WithTypeInspector(typeInspectorFactory, delegate(<9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector> w)
			{
				w.OnTop();
			});
		}

		public TBuilder WithTypeInspector<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TTypeInspector>(Func<<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector, TTypeInspector> typeInspectorFactory, Action<<9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector>> where) where TTypeInspector : <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector
		{
			if (typeInspectorFactory == null)
			{
				throw new ArgumentNullException("typeInspectorFactory");
			}
			if (where == null)
			{
				throw new ArgumentNullException("where");
			}
			where(typeInspectorFactories.CreateRegistrationLocationSelector(typeof(TTypeInspector), (<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector inner) => typeInspectorFactory(inner)));
			return Self;
		}

		public TBuilder WithTypeInspector<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TTypeInspector>(<88009b9a-4e6f-4110-94f3-c7987fc4c9bc>WrapperFactory<<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector, <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector, TTypeInspector> typeInspectorFactory, Action<<2fe8cad5-706d-47d3-8140-aaaa0d817290>ITrackingRegistrationLocationSelectionSyntax<<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector>> where) where TTypeInspector : <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector
		{
			if (typeInspectorFactory == null)
			{
				throw new ArgumentNullException("typeInspectorFactory");
			}
			if (where == null)
			{
				throw new ArgumentNullException("where");
			}
			where(typeInspectorFactories.CreateTrackingRegistrationLocationSelector(typeof(TTypeInspector), (<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector wrapped, <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector inner) => typeInspectorFactory(wrapped, inner)));
			return Self;
		}

		public TBuilder WithoutTypeInspector<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TTypeInspector>() where TTypeInspector : <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector
		{
			return WithoutTypeInspector(typeof(TTypeInspector));
		}

		public TBuilder WithoutTypeInspector(Type inspectorType)
		{
			if (inspectorType == null)
			{
				throw new ArgumentNullException("inspectorType");
			}
			typeInspectorFactories.Remove(inspectorType);
			return Self;
		}

		protected IEnumerable<<05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter> BuildTypeConverters()
		{
			return typeConverterFactories.BuildComponentList();
		}
	}
	internal delegate TComponent <b0ad906e-7555-4d2b-b31f-3a4db3c3d970>WrapperFactory<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TComponentBase, TComponent>(TComponentBase wrapped) where TComponent : TComponentBase;
	internal delegate TComponent <88009b9a-4e6f-4110-94f3-c7987fc4c9bc>WrapperFactory<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TArgument, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TComponentBase, TComponent>(TComponentBase wrapped, TArgument argument) where TComponent : TComponentBase;
	[Flags]
	internal enum <5349508e-acd6-4c61-918f-c43c92fa9787>DefaultValuesHandling
	{
		Preserve = 0,
		OmitNull = 1,
		OmitDefaults = 2,
		OmitEmptyCollections = 4
	}
	[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal sealed class <c9dc66d2-0457-4631-b8e6-e1c40a97386a>Deserializer : <a39d1482-581f-4ce7-9e9e-724db035cead>IDeserializer
	{
		private readonly <edc783a3-50cf-4ecf-b878-3be583573362>IValueDeserializer valueDeserializer;

		public <c9dc66d2-0457-4631-b8e6-e1c40a97386a>Deserializer()
			: this(new <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder().BuildValueDeserializer())
		{
		}

		private <c9dc66d2-0457-4631-b8e6-e1c40a97386a>Deserializer(<edc783a3-50cf-4ecf-b878-3be583573362>IValueDeserializer valueDeserializer)
		{
			this.valueDeserializer = valueDeserializer ?? throw new ArgumentNullException("valueDeserializer");
		}

		public static <c9dc66d2-0457-4631-b8e6-e1c40a97386a>Deserializer FromValueDeserializer(<edc783a3-50cf-4ecf-b878-3be583573362>IValueDeserializer valueDeserializer)
		{
			return new <c9dc66d2-0457-4631-b8e6-e1c40a97386a>Deserializer(valueDeserializer);
		}

		public T Deserialize<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] T>(string input)
		{
			using StringReader input2 = new StringReader(input);
			return Deserialize<T>(input2);
		}

		public T Deserialize<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] T>(TextReader input)
		{
			return Deserialize<T>(new <e603777b-18a3-4908-8443-b68d7bd851e2>Parser(input));
		}

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public object Deserialize(TextReader input)
		{
			return Deserialize(input, typeof(object));
		}

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public object Deserialize(string input, Type type)
		{
			using StringReader input2 = new StringReader(input);
			return Deserialize(input2, type);
		}

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public object Deserialize(TextReader input, Type type)
		{
			return Deserialize(new <e603777b-18a3-4908-8443-b68d7bd851e2>Parser(input), type);
		}

		public T Deserialize<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] T>(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser parser)
		{
			return (T)Deserialize(parser, typeof(T));
		}

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public object Deserialize(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser parser)
		{
			return Deserialize(parser, typeof(object));
		}

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		public object Deserialize(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser parser, Type type)
		{
			if (parser == null)
			{
				throw new ArgumentNullException("parser");
			}
			if (type == null)
			{
				throw new ArgumentNullException("type");
			}
			<3bece373-4354-48b2-9342-10c9792a53d5>StreamStart @event;
			bool flag = parser.TryConsume<<3bece373-4354-48b2-9342-10c9792a53d5>StreamStart>(out @event);
			<dfd30d8d-6d47-4808-9b1e-9829933f22e1>DocumentStart event2;
			bool flag2 = parser.TryConsume<<dfd30d8d-6d47-4808-9b1e-9829933f22e1>DocumentStart>(out event2);
			object result = null;
			if (!parser.Accept<<d79f5d22-172a-49d3-a7ec-d74a33dc9ee6>DocumentEnd>(out var _) && !parser.Accept<<6a77ae44-c1c4-48ae-918a-09ec514d3828>StreamEnd>(out var _))
			{
				using <b69ce8c5-17a3-4090-8575-e74f6381e75b>SerializerState <b69ce8c5-17a3-4090-8575-e74f6381e75b>SerializerState = new <b69ce8c5-17a3-4090-8575-e74f6381e75b>SerializerState();
				result = valueDeserializer.DeserializeValue(parser, type, <b69ce8c5-17a3-4090-8575-e74f6381e75b>SerializerState, valueDeserializer);
				<b69ce8c5-17a3-4090-8575-e74f6381e75b>SerializerState.OnDeserialization();
			}
			if (flag2)
			{
				parser.Consume<<d79f5d22-172a-49d3-a7ec-d74a33dc9ee6>DocumentEnd>();
			}
			if (flag)
			{
				parser.Consume<<6a77ae44-c1c4-48ae-918a-09ec514d3828>StreamEnd>();
			}
			return result;
		}
	}
	[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(new byte[] { 0, 1 })]
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal sealed class <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder : <6854748a-db39-4259-ba81-0594adb5b94b>BuilderSkeleton<<3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder>
	{
		private Lazy<<2f3625cb-d27d-4387-99cd-500bae7b18ec>IObjectFactory> objectFactory;

		private readonly <467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing, <3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer> nodeDeserializerFactories;

		private readonly <467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing, <05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver> nodeTypeResolverFactories;

		private readonly Dictionary<<bca081f8-df74-4d1e-ae06-8e5741607d60>TagName, Type> tagMappings;

		private readonly Dictionary<Type, Type> typeMappings;

		private bool ignoreUnmatched;

		protected override <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder Self => this;

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder()
			: base((<c069c2af-387d-45b0-b5eb-4e1ab6ea4a77>ITypeResolver)new <b04c5a21-bc50-43c3-bd5e-74f7cb0e4575>StaticTypeResolver())
		{
			typeMappings = new Dictionary<Type, Type>();
			objectFactory = new Lazy<<2f3625cb-d27d-4387-99cd-500bae7b18ec>IObjectFactory>(() => new <4bf8d7d6-7c68-4bba-b408-1e155665305e>DefaultObjectFactory(typeMappings), isThreadSafe: true);
			tagMappings = new Dictionary<<bca081f8-df74-4d1e-ae06-8e5741607d60>TagName, Type>
			{
				{
					<8213d600-99cd-4bca-a7c8-03ee5133b323>FailsafeSchema.Tags.Map,
					typeof(Dictionary<object, object>)
				},
				{
					<8213d600-99cd-4bca-a7c8-03ee5133b323>FailsafeSchema.Tags.Str,
					typeof(string)
				},
				{
					<33eafa7a-f492-4897-9337-c2cb319237b9>JsonSchema.Tags.Bool,
					typeof(bool)
				},
				{
					<33eafa7a-f492-4897-9337-c2cb319237b9>JsonSchema.Tags.Float,
					typeof(double)
				},
				{
					<33eafa7a-f492-4897-9337-c2cb319237b9>JsonSchema.Tags.Int,
					typeof(int)
				},
				{
					<bdd55c9b-f00e-4439-9f56-713bc254c84b>DefaultSchema.Tags.Timestamp,
					typeof(DateTime)
				}
			};
			typeInspectorFactories.Add(typeof(<6ab0b628-dfd9-455f-a463-501b1ed761c5>CachedTypeInspector), (<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector inner) => new <6ab0b628-dfd9-455f-a463-501b1ed761c5>CachedTypeInspector(inner));
			typeInspectorFactories.Add(typeof(<1839a533-fa32-47f1-8859-2ec8058072cc>NamingConventionTypeInspector), (<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector inner) => (!(namingConvention is <4a26ba71-df91-4273-a61d-a8fff76a177b>NullNamingConvention)) ? new <1839a533-fa32-47f1-8859-2ec8058072cc>NamingConventionTypeInspector(inner, namingConvention) : inner);
			typeInspectorFactories.Add(typeof(<b58611fa-60ba-4b21-872f-edbce1af4075>YamlAttributesTypeInspector), (<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector inner) => new <b58611fa-60ba-4b21-872f-edbce1af4075>YamlAttributesTypeInspector(inner));
			typeInspectorFactories.Add(typeof(<c767fa7d-9f06-40f1-89f2-0cbc97e8450d>YamlAttributeOverridesInspector), (<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector inner) => (overrides == null) ? inner : new <c767fa7d-9f06-40f1-89f2-0cbc97e8450d>YamlAttributeOverridesInspector(inner, overrides.Clone()));
			typeInspectorFactories.Add(typeof(<c1656527-a766-4c0a-8f19-d429f28587c1>ReadableAndWritablePropertiesTypeInspector), (<8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector inner) => new <c1656527-a766-4c0a-8f19-d429f28587c1>ReadableAndWritablePropertiesTypeInspector(inner));
			nodeDeserializerFactories = new <467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing, <3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer>
			{
				{
					typeof(<b8a8ad5c-6e24-4f35-a55f-aa1a0a8687d1>YamlConvertibleNodeDeserializer),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <b8a8ad5c-6e24-4f35-a55f-aa1a0a8687d1>YamlConvertibleNodeDeserializer(objectFactory.Value)
				},
				{
					typeof(<0d454deb-f6ab-4b5f-9d74-afb5c1ae1912>YamlSerializableNodeDeserializer),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <0d454deb-f6ab-4b5f-9d74-afb5c1ae1912>YamlSerializableNodeDeserializer(objectFactory.Value)
				},
				{
					typeof(<0e0f30e2-cf57-41b9-a5b3-04aa82b2f7f2>TypeConverterNodeDeserializer),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <0e0f30e2-cf57-41b9-a5b3-04aa82b2f7f2>TypeConverterNodeDeserializer(BuildTypeConverters())
				},
				{
					typeof(<67e2785e-327c-4d9d-818a-fff2b37ec38c>NullNodeDeserializer),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <67e2785e-327c-4d9d-818a-fff2b37ec38c>NullNodeDeserializer()
				},
				{
					typeof(<e0624b1e-beec-4206-90fb-80606c5318f2>ScalarNodeDeserializer),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <e0624b1e-beec-4206-90fb-80606c5318f2>ScalarNodeDeserializer()
				},
				{
					typeof(<8494bf18-030f-4a7a-b3e7-202f3db35cb9>ArrayNodeDeserializer),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <8494bf18-030f-4a7a-b3e7-202f3db35cb9>ArrayNodeDeserializer()
				},
				{
					typeof(<9528613b-16f8-46fe-b3a1-ef145c244edc>DictionaryNodeDeserializer),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <9528613b-16f8-46fe-b3a1-ef145c244edc>DictionaryNodeDeserializer(objectFactory.Value)
				},
				{
					typeof(<19730291-0901-4bad-8c95-b38293a85159>CollectionNodeDeserializer),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <19730291-0901-4bad-8c95-b38293a85159>CollectionNodeDeserializer(objectFactory.Value)
				},
				{
					typeof(<4c9be8ae-986c-4bf2-abcb-e854d240e0d2>EnumerableNodeDeserializer),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <4c9be8ae-986c-4bf2-abcb-e854d240e0d2>EnumerableNodeDeserializer()
				},
				{
					typeof(<4004ad93-3fa2-4377-8d14-4d1169457b5a>ObjectNodeDeserializer),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <4004ad93-3fa2-4377-8d14-4d1169457b5a>ObjectNodeDeserializer(objectFactory.Value, BuildTypeInspector(), ignoreUnmatched)
				}
			};
			nodeTypeResolverFactories = new <467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing, <05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver>
			{
				{
					typeof(<20c7d62c-a87a-40f5-b93b-5a58b3461df2>MappingNodeTypeResolver),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <20c7d62c-a87a-40f5-b93b-5a58b3461df2>MappingNodeTypeResolver(typeMappings)
				},
				{
					typeof(<d84ba592-bf7c-4037-8620-1cb6e74b5ea5>YamlConvertibleTypeResolver),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <d84ba592-bf7c-4037-8620-1cb6e74b5ea5>YamlConvertibleTypeResolver()
				},
				{
					typeof(<a285e8e0-ba26-4975-b339-c8d47a557fb5>YamlSerializableTypeResolver),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <a285e8e0-ba26-4975-b339-c8d47a557fb5>YamlSerializableTypeResolver()
				},
				{
					typeof(<7c9a16e2-3008-4b9e-8e4f-f3ed87bebf4f>TagNodeTypeResolver),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <7c9a16e2-3008-4b9e-8e4f-f3ed87bebf4f>TagNodeTypeResolver(tagMappings)
				},
				{
					typeof(<9ca241f9-6070-4944-9c8e-35c514107598>PreventUnknownTagsNodeTypeResolver),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <9ca241f9-6070-4944-9c8e-35c514107598>PreventUnknownTagsNodeTypeResolver()
				},
				{
					typeof(<655c4487-748f-41c7-8f9f-44f60b522c32>DefaultContainersNodeTypeResolver),
					(<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => new <655c4487-748f-41c7-8f9f-44f60b522c32>DefaultContainersNodeTypeResolver()
				}
			};
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithObjectFactory(<2f3625cb-d27d-4387-99cd-500bae7b18ec>IObjectFactory objectFactory)
		{
			if (objectFactory == null)
			{
				throw new ArgumentNullException("objectFactory");
			}
			this.objectFactory = new Lazy<<2f3625cb-d27d-4387-99cd-500bae7b18ec>IObjectFactory>(() => objectFactory, isThreadSafe: true);
			return this;
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithObjectFactory(Func<Type, object> objectFactory)
		{
			if (objectFactory == null)
			{
				throw new ArgumentNullException("objectFactory");
			}
			return WithObjectFactory(new <56471553-687d-4c85-82a1-ee6eb2295863>LambdaObjectFactory(objectFactory));
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithNodeDeserializer(<3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer nodeDeserializer)
		{
			return WithNodeDeserializer(nodeDeserializer, delegate(<9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<<3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer> w)
			{
				w.OnTop();
			});
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithNodeDeserializer(<3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer nodeDeserializer, Action<<9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<<3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer>> where)
		{
			if (nodeDeserializer == null)
			{
				throw new ArgumentNullException("nodeDeserializer");
			}
			if (where == null)
			{
				throw new ArgumentNullException("where");
			}
			where(nodeDeserializerFactories.CreateRegistrationLocationSelector(nodeDeserializer.GetType(), (<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => nodeDeserializer));
			return this;
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithNodeDeserializer<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TNodeDeserializer>(<b0ad906e-7555-4d2b-b31f-3a4db3c3d970>WrapperFactory<<3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer, TNodeDeserializer> nodeDeserializerFactory, Action<<2fe8cad5-706d-47d3-8140-aaaa0d817290>ITrackingRegistrationLocationSelectionSyntax<<3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer>> where) where TNodeDeserializer : <3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer
		{
			if (nodeDeserializerFactory == null)
			{
				throw new ArgumentNullException("nodeDeserializerFactory");
			}
			if (where == null)
			{
				throw new ArgumentNullException("where");
			}
			where(nodeDeserializerFactories.CreateTrackingRegistrationLocationSelector(typeof(TNodeDeserializer), (<3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer wrapped, <b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => nodeDeserializerFactory(wrapped)));
			return this;
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithoutNodeDeserializer<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TNodeDeserializer>() where TNodeDeserializer : <3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer
		{
			return WithoutNodeDeserializer(typeof(TNodeDeserializer));
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithoutNodeDeserializer(Type nodeDeserializerType)
		{
			if (nodeDeserializerType == null)
			{
				throw new ArgumentNullException("nodeDeserializerType");
			}
			nodeDeserializerFactories.Remove(nodeDeserializerType);
			return this;
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithNodeTypeResolver(<05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver nodeTypeResolver)
		{
			return WithNodeTypeResolver(nodeTypeResolver, delegate(<9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<<05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver> w)
			{
				w.OnTop();
			});
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithNodeTypeResolver(<05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver nodeTypeResolver, Action<<9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<<05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver>> where)
		{
			if (nodeTypeResolver == null)
			{
				throw new ArgumentNullException("nodeTypeResolver");
			}
			if (where == null)
			{
				throw new ArgumentNullException("where");
			}
			where(nodeTypeResolverFactories.CreateRegistrationLocationSelector(nodeTypeResolver.GetType(), (<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => nodeTypeResolver));
			return this;
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithNodeTypeResolver<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TNodeTypeResolver>(<b0ad906e-7555-4d2b-b31f-3a4db3c3d970>WrapperFactory<<05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver, TNodeTypeResolver> nodeTypeResolverFactory, Action<<2fe8cad5-706d-47d3-8140-aaaa0d817290>ITrackingRegistrationLocationSelectionSyntax<<05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver>> where) where TNodeTypeResolver : <05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver
		{
			if (nodeTypeResolverFactory == null)
			{
				throw new ArgumentNullException("nodeTypeResolverFactory");
			}
			if (where == null)
			{
				throw new ArgumentNullException("where");
			}
			where(nodeTypeResolverFactories.CreateTrackingRegistrationLocationSelector(typeof(TNodeTypeResolver), (<05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver wrapped, <b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing _) => nodeTypeResolverFactory(wrapped)));
			return this;
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithoutNodeTypeResolver<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TNodeTypeResolver>() where TNodeTypeResolver : <05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver
		{
			return WithoutNodeTypeResolver(typeof(TNodeTypeResolver));
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithoutNodeTypeResolver(Type nodeTypeResolverType)
		{
			if (nodeTypeResolverType == null)
			{
				throw new ArgumentNullException("nodeTypeResolverType");
			}
			nodeTypeResolverFactories.Remove(nodeTypeResolverType);
			return this;
		}

		public override <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithTagMapping(<bca081f8-df74-4d1e-ae06-8e5741607d60>TagName tag, Type type)
		{
			if (tag.IsEmpty)
			{
				throw new ArgumentException("Non-specific tags cannot be maped");
			}
			if (type == null)
			{
				throw new ArgumentNullException("type");
			}
			if (tagMappings.TryGetValue(tag, out var value))
			{
				throw new ArgumentException($"Type already has a registered type '{value.FullName}' for tag '{tag}'", "tag");
			}
			tagMappings.Add(tag, type);
			return this;
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithTypeMapping<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TInterface, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] TConcrete>() where TConcrete : TInterface
		{
			Type typeFromHandle = typeof(TInterface);
			Type typeFromHandle2 = typeof(TConcrete);
			if (!typeFromHandle.IsAssignableFrom(typeFromHandle2))
			{
				throw new InvalidOperationException("The type '" + typeFromHandle2.Name + "' does not implement interface '" + typeFromHandle.Name + "'.");
			}
			if (typeMappings.ContainsKey(typeFromHandle))
			{
				typeMappings[typeFromHandle] = typeFromHandle2;
			}
			else
			{
				typeMappings.Add(typeFromHandle, typeFromHandle2);
			}
			return this;
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder WithoutTagMapping(<bca081f8-df74-4d1e-ae06-8e5741607d60>TagName tag)
		{
			if (tag.IsEmpty)
			{
				throw new ArgumentException("Non-specific tags cannot be maped");
			}
			if (!tagMappings.Remove(tag))
			{
				throw new KeyNotFoundException($"Tag '{tag}' is not registered");
			}
			return this;
		}

		public <3cf445f2-8137-4c05-8ef1-f36507a360e7>DeserializerBuilder IgnoreUnmatchedProperties()
		{
			ignoreUnmatched = true;
			return this;
		}

		public <a39d1482-581f-4ce7-9e9e-724db035cead>IDeserializer Build()
		{
			return <c9dc66d2-0457-4631-b8e6-e1c40a97386a>Deserializer.FromValueDeserializer(BuildValueDeserializer());
		}

		public <edc783a3-50cf-4ecf-b878-3be583573362>IValueDeserializer BuildValueDeserializer()
		{
			return new <c51132e9-459e-4550-bc47-a2aa50401d28>AliasValueDeserializer(new <8a098687-d448-479a-bd71-ecea391aeeb9>NodeValueDeserializer(nodeDeserializerFactories.BuildComponentList(), nodeTypeResolverFactories.BuildComponentList()));
		}
	}
	[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal sealed class <693d97de-24f5-4ad6-b4d7-03d8b9085e0a>EmissionPhaseObjectGraphVisitorArgs
	{
		private readonly IEnumerable<<daf58f3b-d649-4dce-af65-d06cef0166ff>IObjectGraphVisitor<<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing>> preProcessingPhaseVisitors;

		public <daf58f3b-d649-4dce-af65-d06cef0166ff>IObjectGraphVisitor<<08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter> InnerVisitor { get; private set; }

		public <bc2eadf6-32dc-467d-bdf9-5f56544c920e>IEventEmitter EventEmitter { get; private set; }

		public <782d98f0-ca60-4479-a3a3-ca1ea49c5414>ObjectSerializer NestedObjectSerializer { get; private set; }

		public IEnumerable<<05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter> TypeConverters { get; private set; }

		public <693d97de-24f5-4ad6-b4d7-03d8b9085e0a>EmissionPhaseObjectGraphVisitorArgs(<daf58f3b-d649-4dce-af65-d06cef0166ff>IObjectGraphVisitor<<08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter> innerVisitor, <bc2eadf6-32dc-467d-bdf9-5f56544c920e>IEventEmitter eventEmitter, IEnumerable<<daf58f3b-d649-4dce-af65-d06cef0166ff>IObjectGraphVisitor<<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing>> preProcessingPhaseVisitors, IEnumerable<<05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter> typeConverters, <782d98f0-ca60-4479-a3a3-ca1ea49c5414>ObjectSerializer nestedObjectSerializer)
		{
			InnerVisitor = innerVisitor ?? throw new ArgumentNullException("innerVisitor");
			EventEmitter = eventEmitter ?? throw new ArgumentNullException("eventEmitter");
			this.preProcessingPhaseVisitors = preProcessingPhaseVisitors ?? throw new ArgumentNullException("preProcessingPhaseVisitors");
			TypeConverters = typeConverters ?? throw new ArgumentNullException("typeConverters");
			NestedObjectSerializer = nestedObjectSerializer ?? throw new ArgumentNullException("nestedObjectSerializer");
		}

		public T GetPreProcessingPhaseObjectGraphVisitor<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] T>() where T : <daf58f3b-d649-4dce-af65-d06cef0166ff>IObjectGraphVisitor<<b86f96e8-6844-4e7a-9b55-3bb88a700a8a>Nothing>
		{
			return preProcessingPhaseVisitors.OfType<T>().Single();
		}
	}
	[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal abstract class <90241b4a-060e-4d37-9533-22ebd603694b>EventInfo
	{
		public <9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor Source { get; }

		protected <90241b4a-060e-4d37-9533-22ebd603694b>EventInfo(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor source)
		{
			Source = source ?? throw new ArgumentNullException("source");
		}
	}
	internal class <799027f0-c091-40d5-bba6-18b38e558b59>AliasEventInfo : <90241b4a-060e-4d37-9533-22ebd603694b>EventInfo
	{
		public <a9b2c62b-7d7f-4118-b787-d50ad5b627d8>AnchorName Alias { get; }

		public bool NeedsExpansion { get; set; }

		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
		public <799027f0-c091-40d5-bba6-18b38e558b59>AliasEventInfo(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor source, <a9b2c62b-7d7f-4118-b787-d50ad5b627d8>AnchorName alias)
			: base(source)
		{
			if (alias.IsEmpty)
			{
				throw new ArgumentNullException("alias");
			}
			Alias = alias;
		}
	}
	internal class <f21d903c-5e4d-4e59-9e10-b0fd1ed4d128>ObjectEventInfo : <90241b4a-060e-4d37-9533-22ebd603694b>EventInfo
	{
		public <a9b2c62b-7d7f-4118-b787-d50ad5b627d8>AnchorName Anchor { get; set; }

		public <bca081f8-df74-4d1e-ae06-8e5741607d60>TagName Tag { get; set; }

		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
		protected <f21d903c-5e4d-4e59-9e10-b0fd1ed4d128>ObjectEventInfo(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor source)
			: base(source)
		{
		}
	}
	[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal sealed class <aab2f741-ceff-4f30-ad39-99bd8d26f8d7>ScalarEventInfo : <f21d903c-5e4d-4e59-9e10-b0fd1ed4d128>ObjectEventInfo
	{
		public string RenderedValue { get; set; }

		public <0d4f8979-7e8e-43df-a54e-84c0da5442c8>ScalarStyle Style { get; set; }

		public bool IsPlainImplicit { get; set; }

		public bool IsQuotedImplicit { get; set; }

		public <aab2f741-ceff-4f30-ad39-99bd8d26f8d7>ScalarEventInfo(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor source)
			: base(source)
		{
			Style = source.ScalarStyle;
			RenderedValue = string.Empty;
		}
	}
	internal sealed class <4dbcd715-90b3-4870-a365-543de6a9b5b3>MappingStartEventInfo : <f21d903c-5e4d-4e59-9e10-b0fd1ed4d128>ObjectEventInfo
	{
		public bool IsImplicit { get; set; }

		public <f54701ff-fa12-4576-aad5-9ae9bb452b91>MappingStyle Style { get; set; }

		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
		public <4dbcd715-90b3-4870-a365-543de6a9b5b3>MappingStartEventInfo(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor source)
			: base(source)
		{
		}
	}
	internal sealed class <2eb5fe5c-e619-4032-9e6e-b55494e8a910>MappingEndEventInfo : <90241b4a-060e-4d37-9533-22ebd603694b>EventInfo
	{
		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
		public <2eb5fe5c-e619-4032-9e6e-b55494e8a910>MappingEndEventInfo(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor source)
			: base(source)
		{
		}
	}
	internal sealed class <3d0bf879-9c62-40d9-9778-8af88dac0079>SequenceStartEventInfo : <f21d903c-5e4d-4e59-9e10-b0fd1ed4d128>ObjectEventInfo
	{
		public bool IsImplicit { get; set; }

		public <33eb6fd6-bd78-4abb-8ae5-8d689db1f6eb>SequenceStyle Style { get; set; }

		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
		public <3d0bf879-9c62-40d9-9778-8af88dac0079>SequenceStartEventInfo(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor source)
			: base(source)
		{
		}
	}
	internal sealed class <e72c499a-952c-4ccd-8dd8-bab26a1f1906>SequenceEndEventInfo : <90241b4a-060e-4d37-9533-22ebd603694b>EventInfo
	{
		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
		public <e72c499a-952c-4ccd-8dd8-bab26a1f1906>SequenceEndEventInfo(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor source)
			: base(source)
		{
		}
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <6bc9fddb-b405-4496-a65d-cd202f953ed5>IAliasProvider
	{
		<a9b2c62b-7d7f-4118-b787-d50ad5b627d8>AnchorName GetAlias(object target);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <a39d1482-581f-4ce7-9e9e-724db035cead>IDeserializer
	{
		T Deserialize<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] T>(string input);

		T Deserialize<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] T>(TextReader input);

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		object Deserialize(TextReader input);

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		object Deserialize(string input, Type type);

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		object Deserialize(TextReader input, Type type);

		T Deserialize<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] T>(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser parser);

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		object Deserialize(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser parser);

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		object Deserialize(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser parser, Type type);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <bc2eadf6-32dc-467d-bdf9-5f56544c920e>IEventEmitter
	{
		void Emit(<799027f0-c091-40d5-bba6-18b38e558b59>AliasEventInfo eventInfo, <08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter);

		void Emit(<aab2f741-ceff-4f30-ad39-99bd8d26f8d7>ScalarEventInfo eventInfo, <08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter);

		void Emit(<4dbcd715-90b3-4870-a365-543de6a9b5b3>MappingStartEventInfo eventInfo, <08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter);

		void Emit(<2eb5fe5c-e619-4032-9e6e-b55494e8a910>MappingEndEventInfo eventInfo, <08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter);

		void Emit(<3d0bf879-9c62-40d9-9778-8af88dac0079>SequenceStartEventInfo eventInfo, <08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter);

		void Emit(<e72c499a-952c-4ccd-8dd8-bab26a1f1906>SequenceEndEventInfo eventInfo, <08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <8415bd25-4c19-4eaf-bf46-fb9f0daeef6a>INamingConvention
	{
		string Apply(string value);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <3fd98355-c58c-4292-966c-b5141c909d85>INodeDeserializer
	{
		bool Deserialize(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser reader, Type expectedType, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(new byte[] { 1, 1, 1, 2 })] Func<<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser, Type, object> nestedObjectDeserializer, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] out object value);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <05602ffd-a716-4815-9714-6e734839e086>INodeTypeResolver
	{
		bool Resolve([<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] <986a1f13-9cc5-4f6b-9c89-bd14fe6842de>NodeEvent nodeEvent, ref Type currentType);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor
	{
		[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		object Value
		{
			[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(2)]
			get;
		}

		Type Type { get; }

		Type StaticType { get; }

		<0d4f8979-7e8e-43df-a54e-84c0da5442c8>ScalarStyle ScalarStyle { get; }
	}
	internal static class <f14c13af-0305-4658-8e1f-d1863db4b717>ObjectDescriptorExtensions
	{
		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
		public static object NonNullValue(this <9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor objectDescriptor)
		{
			return objectDescriptor.Value ?? throw new InvalidOperationException("Attempted to use a IObjectDescriptor of type '" + objectDescriptor.Type.FullName + "' whose Value is null at a point whete it is invalid to do so. This may indicate a bug in YamlDotNet.");
		}
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <2f3625cb-d27d-4387-99cd-500bae7b18ec>IObjectFactory
	{
		object Create(Type type);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <1371a809-f7f7-432f-bf1c-48295ccc7056>IObjectGraphTraversalStrategy
	{
		void Traverse<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TContext>(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor graph, <daf58f3b-d649-4dce-af65-d06cef0166ff>IObjectGraphVisitor<TContext> visitor, TContext context);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <daf58f3b-d649-4dce-af65-d06cef0166ff>IObjectGraphVisitor<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TContext>
	{
		bool Enter(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor value, TContext context);

		bool EnterMapping(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor key, <9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor value, TContext context);

		bool EnterMapping(<c348836e-1640-47b5-9016-065bdedb23f9>IPropertyDescriptor key, <9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor value, TContext context);

		void VisitScalar(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor scalar, TContext context);

		void VisitMappingStart(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor mapping, Type keyType, Type valueType, TContext context);

		void VisitMappingEnd(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor mapping, TContext context);

		void VisitSequenceStart(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor sequence, Type elementType, TContext context);

		void VisitSequenceEnd(<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor sequence, TContext context);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <c348836e-1640-47b5-9016-065bdedb23f9>IPropertyDescriptor
	{
		string Name { get; }

		bool CanWrite { get; }

		Type Type { get; }

		[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		Type TypeOverride
		{
			[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(2)]
			get;
			[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(2)]
			set;
		}

		int Order { get; set; }

		<0d4f8979-7e8e-43df-a54e-84c0da5442c8>ScalarStyle ScalarStyle { get; set; }

		T GetCustomAttribute<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)] T>() where T : Attribute;

		<9e1cff88-7d49-4eb7-af36-c82ec4c24f08>IObjectDescriptor Read(object target);

		void Write(object target, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] object value);
	}
	internal interface <9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TBaseRegistrationType>
	{
		void InsteadOf<TRegistrationType>() where TRegistrationType : TBaseRegistrationType;

		void Before<TRegistrationType>() where TRegistrationType : TBaseRegistrationType;

		void After<TRegistrationType>() where TRegistrationType : TBaseRegistrationType;

		void OnTop();

		void OnBottom();
	}
	internal interface <2fe8cad5-706d-47d3-8140-aaaa0d817290>ITrackingRegistrationLocationSelectionSyntax<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TBaseRegistrationType>
	{
		void InsteadOf<TRegistrationType>() where TRegistrationType : TBaseRegistrationType;
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <fa2f47ed-c6ac-495a-a740-42641950e948>ISerializer
	{
		void Serialize(TextWriter writer, object graph);

		string Serialize(object graph);

		void Serialize(TextWriter writer, object graph, Type type);

		void Serialize(<08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter, object graph);

		void Serialize(<08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter, object graph, Type type);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <8df5fb57-3d13-4cfb-bc47-c34b4d2a9b21>ITypeInspector
	{
		IEnumerable<<c348836e-1640-47b5-9016-065bdedb23f9>IPropertyDescriptor> GetProperties(Type type, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] object container);

		<c348836e-1640-47b5-9016-065bdedb23f9>IPropertyDescriptor GetProperty(Type type, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] object container, string name, [<415262cd-afcf-4b06-94dd-19db9a2e5484>MaybeNullWhen(true)] bool ignoreUnmatched);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <c069c2af-387d-45b0-b5eb-4e1ab6ea4a77>ITypeResolver
	{
		Type Resolve(Type staticType, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] object actualValue);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <edc783a3-50cf-4ecf-b878-3be583573362>IValueDeserializer
	{
		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		object DeserializeValue(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser parser, Type expectedType, <b69ce8c5-17a3-4090-8575-e74f6381e75b>SerializerState state, <edc783a3-50cf-4ecf-b878-3be583573362>IValueDeserializer nestedObjectDeserializer);
	}
	internal interface <220cd0d8-0c0b-4dcf-92d9-eb5fa577ce53>IValuePromise
	{
		[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(new byte[] { 1, 2 })]
		event Action<object> ValueAvailable;
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(2)]
	internal interface <b86542d0-d35f-4e75-aa7f-a63fe063fe38>IValueSerializer
	{
		void SerializeValue([<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(1)] <08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter, object value, Type type);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <455a3da7-8082-483d-b61c-5b77c17e0ede>IYamlConvertible
	{
		void Read(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser parser, Type expectedType, <559bd4a9-55d2-41c3-9d08-2a8f6e9ac25e>ObjectDeserializer nestedObjectDeserializer);

		void Write(<08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter, <782d98f0-ca60-4479-a3a3-ca1ea49c5414>ObjectSerializer nestedObjectSerializer);
	}
	[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
	internal delegate object <559bd4a9-55d2-41c3-9d08-2a8f6e9ac25e>ObjectDeserializer(Type type);
	internal delegate void <782d98f0-ca60-4479-a3a3-ca1ea49c5414>ObjectSerializer(object value, Type type = null);
	[Obsolete("Please use IYamlConvertible instead")]
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <8ada1155-e1c4-4915-8632-ea173ddf229f>IYamlSerializable
	{
		void ReadYaml(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser parser);

		void WriteYaml(<08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	internal interface <05933b86-61e1-4bf6-9308-a047f8718317>IYamlTypeConverter
	{
		bool Accepts(Type type);

		[return: <d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)]
		object ReadYaml(<2afdd087-0341-4faa-a1b8-b2a8bbcd78dc>IParser parser, Type type);

		void WriteYaml(<08bc9bff-f70e-49ae-9c2a-30be71831c1c>IEmitter emitter, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] object value, Type type);
	}
	[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
	[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
	internal sealed class <467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TArgument, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(2)] TComponent> : IEnumerable<Func<TArgument, TComponent>>, IEnumerable
	{
		[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
		public sealed class LazyComponentRegistration
		{
			public readonly Type ComponentType;

			public readonly Func<TArgument, TComponent> Factory;

			public LazyComponentRegistration(Type componentType, Func<TArgument, TComponent> factory)
			{
				ComponentType = componentType;
				Factory = factory;
			}
		}

		[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(0)]
		public sealed class TrackingLazyComponentRegistration
		{
			public readonly Type ComponentType;

			public readonly Func<TComponent, TArgument, TComponent> Factory;

			public TrackingLazyComponentRegistration(Type componentType, Func<TComponent, TArgument, TComponent> factory)
			{
				ComponentType = componentType;
				Factory = factory;
			}
		}

		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(0)]
		private class RegistrationLocationSelector : <9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<TComponent>
		{
			[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(1)]
			private readonly <467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<TArgument, TComponent> registrations;

			[<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(new byte[] { 1, 0, 0 })]
			private readonly LazyComponentRegistration newRegistration;

			[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(1)]
			public RegistrationLocationSelector(<467d24ea-f025-4cfb-8554-4c93084dd61a>LazyComponentRegistrationList<TArgument, TComponent> registrations, [<d086df14-b1c5-4533-8c99-acbca0bd3e2f>Nullable(new byte[] { 1, 0, 0 })] LazyComponentRegistration newRegistration)
			{
				this.registrations = registrations;
				this.newRegistration = newRegistration;
			}

			void <9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<TComponent>.InsteadOf<TRegistrationType>()
			{
				if (newRegistration.ComponentType != typeof(TRegistrationType))
				{
					registrations.EnsureNoDuplicateRegistrationType(newRegistration.ComponentType);
				}
				int index = registrations.EnsureRegistrationExists<TRegistrationType>();
				registrations.entries[index] = newRegistration;
			}

			void <9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<TComponent>.After<TRegistrationType>()
			{
				registrations.EnsureNoDuplicateRegistrationType(newRegistration.ComponentType);
				int num = registrations.EnsureRegistrationExists<TRegistrationType>();
				registrations.entries.Insert(num + 1, newRegistration);
			}

			void <9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<TComponent>.Before<TRegistrationType>()
			{
				registrations.EnsureNoDuplicateRegistrationType(newRegistration.ComponentType);
				int index = registrations.EnsureRegistrationExists<TRegistrationType>();
				registrations.entries.Insert(index, newRegistration);
			}

			void <9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<TComponent>.OnBottom()
			{
				registrations.EnsureNoDuplicateRegistrationType(newRegistration.ComponentType);
				registrations.entries.Add(newRegistration);
			}

			void <9010d17e-fd7f-4424-8aae-e9005d94ce42>IRegistrationLocationSelectionSyntax<TComponent>.OnTop()
			{
				registrations.EnsureNoDuplicateRegistrationType(newRegistration.ComponentType);
				registrations.entries.Insert(0, newRegistration);
			}
		}

		[<b24a5620-3cfd-4c16-af9c-fce18c0f999f>NullableContext(0)]
		private class T