diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..8fc8956
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "Assets/RebootKit"]
+ path = Assets/RebootKit
+ url = http://100.115.126.106:3000/RR/RebootKit.git
diff --git a/Assembly-CSharp.csproj.DotSettings b/Assembly-CSharp.csproj.DotSettings
new file mode 100644
index 0000000..a785881
--- /dev/null
+++ b/Assembly-CSharp.csproj.DotSettings
@@ -0,0 +1,2 @@
+
+ True
\ No newline at end of file
diff --git a/Assets/AddressableAssetsData.meta b/Assets/AddressableAssetsData.meta
new file mode 100644
index 0000000..abad2c2
--- /dev/null
+++ b/Assets/AddressableAssetsData.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dfe7e56166b0a8145b7e4dc6e7690bd0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/AddressableAssetSettings.asset b/Assets/AddressableAssetsData/AddressableAssetSettings.asset
new file mode 100644
index 0000000..f718d25
--- /dev/null
+++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset
@@ -0,0 +1,115 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 468a46d0ae32c3544b7d98094e6448a9, type: 3}
+ m_Name: AddressableAssetSettings
+ m_EditorClassIdentifier:
+ m_DefaultGroup: 64326db70156abe409df70a80bc62dc5
+ m_currentHash:
+ serializedVersion: 2
+ Hash: 3481c484c724115ba8ee73619b898201
+ m_OptimizeCatalogSize: 0
+ m_BuildRemoteCatalog: 0
+ m_CatalogRequestsTimeout: 0
+ m_DisableCatalogUpdateOnStart: 0
+ m_InternalIdNamingMode: 0
+ m_InternalBundleIdMode: 1
+ m_AssetLoadMode: 0
+ m_BundledAssetProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
+ m_AssetBundleProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
+ m_IgnoreUnsupportedFilesInBuild: 0
+ m_UniqueBundleIds: 0
+ m_EnableJsonCatalog: 0
+ m_NonRecursiveBuilding: 1
+ m_CCDEnabled: 0
+ m_maxConcurrentWebRequests: 3
+ m_UseUWRForLocalBundles: 0
+ m_BundleTimeout: 0
+ m_BundleRetryCount: 0
+ m_BundleRedirectLimit: -1
+ m_SharedBundleSettings: 0
+ m_SharedBundleSettingsCustomGroupIndex: 0
+ m_ContiguousBundles: 1
+ m_StripUnityVersionFromBundleBuild: 0
+ m_DisableVisibleSubAssetRepresentations: 0
+ m_BuiltInBundleNaming: 0
+ mBuiltInBundleCustomNaming:
+ m_MonoScriptBundleNaming: 0
+ m_CheckForContentUpdateRestrictionsOption: 0
+ m_MonoScriptBundleCustomNaming:
+ m_RemoteCatalogBuildPath:
+ m_Id:
+ m_RemoteCatalogLoadPath:
+ m_Id:
+ m_ContentStateBuildPathProfileVariableName:
+ m_CustomContentStateBuildPath:
+ m_ContentStateBuildPath:
+ m_BuildAddressablesWithPlayerBuild: 0
+ m_overridePlayerVersion: '[UnityEditor.PlayerSettings.bundleVersion]'
+ m_GroupAssets:
+ - {fileID: 11400000, guid: e468db1926376464080e081fe2d66d57, type: 2}
+ - {fileID: 11400000, guid: 75261079cac228443bb2e2ef3f5f716d, type: 2}
+ m_BuildSettings:
+ m_LogResourceManagerExceptions: 1
+ m_BundleBuildPath: Temp/com.unity.addressables/AssetBundles
+ m_ProfileSettings:
+ m_Profiles:
+ - m_InheritedParent:
+ m_Id: e6ceeace500e752458c2e9958ab5bb88
+ m_ProfileName: Default
+ m_Values:
+ - m_Id: 115914b8d76a9b245b028fc5c5cab06e
+ m_Value: '[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]'
+ - m_Id: cf7641c90cae58e4fabfdccba436dce0
+ m_Value: 'ServerData/[BuildTarget]'
+ - m_Id: e2c55dfc19289fc4299f81315c15c559
+ m_Value:
+ - m_Id: f0346b62289721c4ea1836b06909cd39
+ m_Value: '{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]'
+ - m_Id: fe3e77f120d5a474387a8299ebd4f517
+ m_Value: '[UnityEditor.EditorUserBuildSettings.activeBuildTarget]'
+ m_ProfileEntryNames:
+ - m_Id: 115914b8d76a9b245b028fc5c5cab06e
+ m_Name: Local.BuildPath
+ m_InlineUsage: 0
+ - m_Id: cf7641c90cae58e4fabfdccba436dce0
+ m_Name: Remote.BuildPath
+ m_InlineUsage: 0
+ - m_Id: e2c55dfc19289fc4299f81315c15c559
+ m_Name: Remote.LoadPath
+ m_InlineUsage: 0
+ - m_Id: f0346b62289721c4ea1836b06909cd39
+ m_Name: Local.LoadPath
+ m_InlineUsage: 0
+ - m_Id: fe3e77f120d5a474387a8299ebd4f517
+ m_Name: BuildTarget
+ m_InlineUsage: 0
+ m_ProfileVersion: 1
+ m_LabelTable:
+ m_LabelNames:
+ - default
+ m_SchemaTemplates: []
+ m_GroupTemplateObjects:
+ - {fileID: 11400000, guid: ce67ab8e01be15442bd2911cedb156c4, type: 2}
+ m_InitializationObjects: []
+ m_CertificateHandlerType:
+ m_AssemblyName:
+ m_ClassName:
+ m_ActivePlayerDataBuilderIndex: 2
+ m_DataBuilders:
+ - {fileID: 11400000, guid: 52359cdc374c453439e7e1ec734458cb, type: 2}
+ - {fileID: 11400000, guid: ce5345a2b0b3dbc4299d51ab1e993e3c, type: 2}
+ - {fileID: 11400000, guid: 27a1189a4d280884585fb45777d1938e, type: 2}
+ m_ActiveProfileId: e6ceeace500e752458c2e9958ab5bb88
diff --git a/Assets/Settings/Mobile_Renderer.asset.meta b/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta
similarity index 79%
rename from Assets/Settings/Mobile_Renderer.asset.meta
rename to Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta
index a3588b1..ea0b45f 100644
--- a/Assets/Settings/Mobile_Renderer.asset.meta
+++ b/Assets/AddressableAssetsData/AddressableAssetSettings.asset.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 65bc7dbf4170f435aa868c779acfb082
+guid: 93969247b34433f44bfa755967945828
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates.meta b/Assets/AddressableAssetsData/AssetGroupTemplates.meta
new file mode 100644
index 0000000..30f9fd5
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroupTemplates.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dd03b1e76623c4a47baf496bff14eaf0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset
new file mode 100644
index 0000000..ad08fc2
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset
@@ -0,0 +1,78 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-5481743438338742405
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
+ m_Name: ContentUpdateGroupSchema
+ m_EditorClassIdentifier:
+ m_Group: {fileID: 0}
+ m_StaticContent: 0
+--- !u!114 &-1110830023496488469
+MonoBehaviour:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
+ m_Name: BundledAssetGroupSchema
+ m_EditorClassIdentifier:
+ m_Group: {fileID: 0}
+ m_InternalBundleIdMode: 1
+ m_Compression: 1
+ m_IncludeAddressInCatalog: 1
+ m_IncludeGUIDInCatalog: 1
+ m_IncludeLabelsInCatalog: 1
+ m_InternalIdNamingMode: 0
+ m_CacheClearBehavior: 0
+ m_IncludeInBuild: 1
+ m_BundledAssetProviderType:
+ m_AssemblyName:
+ m_ClassName:
+ m_ForceUniqueProvider: 0
+ m_UseAssetBundleCache: 1
+ m_UseAssetBundleCrc: 1
+ m_UseAssetBundleCrcForCachedBundles: 1
+ m_UseUWRForLocalBundles: 0
+ m_Timeout: 0
+ m_ChunkedTransfer: 0
+ m_RedirectLimit: -1
+ m_RetryCount: 0
+ m_BuildPath:
+ m_Id:
+ m_LoadPath:
+ m_Id:
+ m_BundleMode: 0
+ m_AssetBundleProviderType:
+ m_AssemblyName:
+ m_ClassName:
+ m_UseDefaultSchemaSettings: 0
+ m_SelectedPathPairIndex: 0
+ m_BundleNaming: 0
+ m_AssetLoadMode: 0
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1a3c5d64ac83548c09dd1678b9f6f1cd, type: 3}
+ m_Name: Packed Assets
+ m_EditorClassIdentifier:
+ m_SchemaObjects:
+ - {fileID: -1110830023496488469}
+ - {fileID: -5481743438338742405}
+ m_Description: Pack assets into asset bundles.
+ m_Settings: {fileID: 11400000, guid: 93969247b34433f44bfa755967945828, type: 2}
diff --git a/Assets/Settings/Mobile_RPAsset.asset.meta b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta
similarity index 79%
rename from Assets/Settings/Mobile_RPAsset.asset.meta
rename to Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta
index 3660d15..89cbfae 100644
--- a/Assets/Settings/Mobile_RPAsset.asset.meta
+++ b/Assets/AddressableAssetsData/AssetGroupTemplates/Packed Assets.asset.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 5e6cbd92db86f4b18aec3ed561671858
+guid: ce67ab8e01be15442bd2911cedb156c4
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
diff --git a/Assets/AddressableAssetsData/AssetGroups.meta b/Assets/AddressableAssetsData/AssetGroups.meta
new file mode 100644
index 0000000..bc8348b
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6fb17d8e1d79e1a4a982e069b51d7ff6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/AssetGroups/Jelycho Core.asset b/Assets/AddressableAssetsData/AssetGroups/Jelycho Core.asset
new file mode 100644
index 0000000..457b5b2
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Jelycho Core.asset
@@ -0,0 +1,33 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
+ m_Name: Jelycho Core
+ m_EditorClassIdentifier:
+ m_GroupName: Jelycho Core
+ m_GUID: 64326db70156abe409df70a80bc62dc5
+ m_SerializeEntries:
+ - m_GUID: be292ae0883a3be4090cdc42a4c7c131
+ m_Address: Assets/jelycho/actors/player/a_player.prefab
+ m_ReadOnly: 0
+ m_SerializedLabels: []
+ FlaggedDuringContentUpdateRestriction: 0
+ - m_GUID: c5a555fd0308dc546b2a31af07869f90
+ m_Address: Assets/RebootKit/Runtime/FPPKit/Prefabs/FPPActor.prefab
+ m_ReadOnly: 0
+ m_SerializedLabels: []
+ FlaggedDuringContentUpdateRestriction: 0
+ m_ReadOnly: 0
+ m_Settings: {fileID: 11400000, guid: 93969247b34433f44bfa755967945828, type: 2}
+ m_SchemaSet:
+ m_Schemas:
+ - {fileID: 11400000, guid: 75505e164e88c2547b93455fc91e0f05, type: 2}
+ - {fileID: 11400000, guid: da5e6c0dca6ef42409baace5a8a17ff1, type: 2}
diff --git a/Assets/AddressableAssetsData/AssetGroups/Jelycho Core.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Jelycho Core.asset.meta
new file mode 100644
index 0000000..2a8673e
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Jelycho Core.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e468db1926376464080e081fe2d66d57
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/AssetGroups/Jelycho Dev.asset b/Assets/AddressableAssetsData/AssetGroups/Jelycho Dev.asset
new file mode 100644
index 0000000..08c1756
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Jelycho Dev.asset
@@ -0,0 +1,28 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: bbb281ee3bf0b054c82ac2347e9e782c, type: 3}
+ m_Name: Jelycho Dev
+ m_EditorClassIdentifier:
+ m_GroupName: Jelycho Dev
+ m_GUID: 9d65553015c8f6e47b61ba7892ccbb3e
+ m_SerializeEntries:
+ - m_GUID: 9ad3292f4f1ed8e4fb37da9cdd43b38b
+ m_Address: Assets/jelycho/maps/dev/scn_map_dev.unity
+ m_ReadOnly: 0
+ m_SerializedLabels: []
+ FlaggedDuringContentUpdateRestriction: 0
+ m_ReadOnly: 0
+ m_Settings: {fileID: 11400000, guid: 93969247b34433f44bfa755967945828, type: 2}
+ m_SchemaSet:
+ m_Schemas:
+ - {fileID: 11400000, guid: c80eb8e0ef30bd741aa3af0972a846b1, type: 2}
+ - {fileID: 11400000, guid: b88ed4fcae7423f4584d067dfa9a6e04, type: 2}
diff --git a/Assets/AddressableAssetsData/AssetGroups/Jelycho Dev.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Jelycho Dev.asset.meta
new file mode 100644
index 0000000..67a0e07
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Jelycho Dev.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 75261079cac228443bb2e2ef3f5f716d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas.meta
new file mode 100644
index 0000000..9180730
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Schemas.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 767e015451329614c829e731a5463fb7
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_BundledAssetGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_BundledAssetGroupSchema.asset
new file mode 100644
index 0000000..8506302
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_BundledAssetGroupSchema.asset
@@ -0,0 +1,47 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
+ m_Name: Jelycho Core_BundledAssetGroupSchema
+ m_EditorClassIdentifier:
+ m_Group: {fileID: 11400000, guid: e468db1926376464080e081fe2d66d57, type: 2}
+ m_InternalBundleIdMode: 1
+ m_Compression: 1
+ m_IncludeAddressInCatalog: 1
+ m_IncludeGUIDInCatalog: 1
+ m_IncludeLabelsInCatalog: 1
+ m_InternalIdNamingMode: 0
+ m_CacheClearBehavior: 0
+ m_IncludeInBuild: 1
+ m_BundledAssetProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
+ m_ForceUniqueProvider: 0
+ m_UseAssetBundleCache: 1
+ m_UseAssetBundleCrc: 1
+ m_UseAssetBundleCrcForCachedBundles: 1
+ m_UseUWRForLocalBundles: 0
+ m_Timeout: 0
+ m_ChunkedTransfer: 0
+ m_RedirectLimit: -1
+ m_RetryCount: 0
+ m_BuildPath:
+ m_Id: 115914b8d76a9b245b028fc5c5cab06e
+ m_LoadPath:
+ m_Id: f0346b62289721c4ea1836b06909cd39
+ m_BundleMode: 0
+ m_AssetBundleProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
+ m_UseDefaultSchemaSettings: 1
+ m_SelectedPathPairIndex: 0
+ m_BundleNaming: 0
+ m_AssetLoadMode: 0
diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_BundledAssetGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_BundledAssetGroupSchema.asset.meta
new file mode 100644
index 0000000..f1ec118
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_BundledAssetGroupSchema.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 75505e164e88c2547b93455fc91e0f05
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_ContentUpdateGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_ContentUpdateGroupSchema.asset
new file mode 100644
index 0000000..c43a110
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_ContentUpdateGroupSchema.asset
@@ -0,0 +1,16 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
+ m_Name: Jelycho Core_ContentUpdateGroupSchema
+ m_EditorClassIdentifier:
+ m_Group: {fileID: 11400000, guid: e468db1926376464080e081fe2d66d57, type: 2}
+ m_StaticContent: 0
diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_ContentUpdateGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_ContentUpdateGroupSchema.asset.meta
new file mode 100644
index 0000000..e8d9aee
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Core_ContentUpdateGroupSchema.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: da5e6c0dca6ef42409baace5a8a17ff1
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_BundledAssetGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_BundledAssetGroupSchema.asset
new file mode 100644
index 0000000..abedb5a
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_BundledAssetGroupSchema.asset
@@ -0,0 +1,47 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e5d17a21594effb4e9591490b009e7aa, type: 3}
+ m_Name: Jelycho Dev_BundledAssetGroupSchema
+ m_EditorClassIdentifier:
+ m_Group: {fileID: 11400000, guid: 75261079cac228443bb2e2ef3f5f716d, type: 2}
+ m_InternalBundleIdMode: 1
+ m_Compression: 1
+ m_IncludeAddressInCatalog: 1
+ m_IncludeGUIDInCatalog: 1
+ m_IncludeLabelsInCatalog: 1
+ m_InternalIdNamingMode: 0
+ m_CacheClearBehavior: 0
+ m_IncludeInBuild: 1
+ m_BundledAssetProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider
+ m_ForceUniqueProvider: 0
+ m_UseAssetBundleCache: 1
+ m_UseAssetBundleCrc: 1
+ m_UseAssetBundleCrcForCachedBundles: 1
+ m_UseUWRForLocalBundles: 0
+ m_Timeout: 0
+ m_ChunkedTransfer: 0
+ m_RedirectLimit: -1
+ m_RetryCount: 0
+ m_BuildPath:
+ m_Id: 115914b8d76a9b245b028fc5c5cab06e
+ m_LoadPath:
+ m_Id: f0346b62289721c4ea1836b06909cd39
+ m_BundleMode: 0
+ m_AssetBundleProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
+ m_UseDefaultSchemaSettings: 1
+ m_SelectedPathPairIndex: 0
+ m_BundleNaming: 0
+ m_AssetLoadMode: 0
diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_BundledAssetGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_BundledAssetGroupSchema.asset.meta
new file mode 100644
index 0000000..dc9f904
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_BundledAssetGroupSchema.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c80eb8e0ef30bd741aa3af0972a846b1
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_ContentUpdateGroupSchema.asset b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_ContentUpdateGroupSchema.asset
new file mode 100644
index 0000000..64f1ec2
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_ContentUpdateGroupSchema.asset
@@ -0,0 +1,16 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5834b5087d578d24c926ce20cd31e6d6, type: 3}
+ m_Name: Jelycho Dev_ContentUpdateGroupSchema
+ m_EditorClassIdentifier:
+ m_Group: {fileID: 11400000, guid: 75261079cac228443bb2e2ef3f5f716d, type: 2}
+ m_StaticContent: 0
diff --git a/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_ContentUpdateGroupSchema.asset.meta b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_ContentUpdateGroupSchema.asset.meta
new file mode 100644
index 0000000..25e961c
--- /dev/null
+++ b/Assets/AddressableAssetsData/AssetGroups/Schemas/Jelycho Dev_ContentUpdateGroupSchema.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b88ed4fcae7423f4584d067dfa9a6e04
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/DataBuilders.meta b/Assets/AddressableAssetsData/DataBuilders.meta
new file mode 100644
index 0000000..bb02290
--- /dev/null
+++ b/Assets/AddressableAssetsData/DataBuilders.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 82c13a06fee3ac5428dcf7ef5e7c9429
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset
new file mode 100644
index 0000000..50d30dc
--- /dev/null
+++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset
@@ -0,0 +1,20 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 88d21199f5d473f4db36845f2318f180, type: 3}
+ m_Name: BuildScriptFastMode
+ m_EditorClassIdentifier:
+ instanceProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
+ sceneProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta
new file mode 100644
index 0000000..1b0c9f6
--- /dev/null
+++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptFastMode.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 52359cdc374c453439e7e1ec734458cb
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset
new file mode 100644
index 0000000..ec875f9
--- /dev/null
+++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset
@@ -0,0 +1,20 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3e2e0ffa088c91d41a086d0b8cb16bdc, type: 3}
+ m_Name: BuildScriptPackedMode
+ m_EditorClassIdentifier:
+ instanceProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
+ sceneProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta
new file mode 100644
index 0000000..a12f920
--- /dev/null
+++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedMode.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 27a1189a4d280884585fb45777d1938e
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset
new file mode 100644
index 0000000..7628845
--- /dev/null
+++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset
@@ -0,0 +1,20 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ad8c280d42ee0ed41a27db23b43dd2bf, type: 3}
+ m_Name: BuildScriptPackedPlayMode
+ m_EditorClassIdentifier:
+ instanceProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider
+ sceneProviderType:
+ m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.SceneProvider
diff --git a/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta
new file mode 100644
index 0000000..6622319
--- /dev/null
+++ b/Assets/AddressableAssetsData/DataBuilders/BuildScriptPackedPlayMode.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ce5345a2b0b3dbc4299d51ab1e993e3c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/DefaultObject.asset b/Assets/AddressableAssetsData/DefaultObject.asset
new file mode 100644
index 0000000..6251d35
--- /dev/null
+++ b/Assets/AddressableAssetsData/DefaultObject.asset
@@ -0,0 +1,15 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3a189bb168d8d90478a09ea08c2f3d72, type: 3}
+ m_Name: DefaultObject
+ m_EditorClassIdentifier:
+ m_AddressableAssetSettingsGuid: 93969247b34433f44bfa755967945828
diff --git a/Assets/AddressableAssetsData/DefaultObject.asset.meta b/Assets/AddressableAssetsData/DefaultObject.asset.meta
new file mode 100644
index 0000000..cdc1770
--- /dev/null
+++ b/Assets/AddressableAssetsData/DefaultObject.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 67d4bf55309dfa94da71f2a2ffe64204
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/Windows.meta b/Assets/AddressableAssetsData/Windows.meta
new file mode 100644
index 0000000..6aa7e09
--- /dev/null
+++ b/Assets/AddressableAssetsData/Windows.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d9218cc7c50186b4bba55f7da9a87f25
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AddressableAssetsData/Windows/addressables_content_state.bin b/Assets/AddressableAssetsData/Windows/addressables_content_state.bin
new file mode 100644
index 0000000..691c069
Binary files /dev/null and b/Assets/AddressableAssetsData/Windows/addressables_content_state.bin differ
diff --git a/Assets/AddressableAssetsData/Windows/addressables_content_state.bin.meta b/Assets/AddressableAssetsData/Windows/addressables_content_state.bin.meta
new file mode 100644
index 0000000..55a16c7
--- /dev/null
+++ b/Assets/AddressableAssetsData/Windows/addressables_content_state.bin.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 492692243c8b99a4587f9e08091ad66c
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/InputSystem.inputsettings.asset b/Assets/InputSystem.inputsettings.asset
new file mode 100644
index 0000000..87996a1
--- /dev/null
+++ b/Assets/InputSystem.inputsettings.asset
@@ -0,0 +1,38 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c46f07b5ed07e4e92aa78254188d3d10, type: 3}
+ m_Name: InputSystem.inputsettings
+ m_EditorClassIdentifier:
+ m_SupportedDevices: []
+ m_UpdateMode: 1
+ m_ScrollDeltaBehavior: 0
+ m_MaxEventBytesPerUpdate: 5242880
+ m_MaxQueuedEventsPerUpdate: 1000
+ m_CompensateForScreenOrientation: 1
+ m_BackgroundBehavior: 0
+ m_EditorInputBehaviorInPlayMode: 0
+ m_InputActionPropertyDrawerMode: 0
+ m_DefaultDeadzoneMin: 0.125
+ m_DefaultDeadzoneMax: 0.925
+ m_DefaultButtonPressPoint: 0.5
+ m_ButtonReleaseThreshold: 0.75
+ m_DefaultTapTime: 0.2
+ m_DefaultSlowTapTime: 0.5
+ m_DefaultHoldTime: 0.4
+ m_TapRadius: 5
+ m_MultiTapDelayTime: 0.75
+ m_DisableRedundantEventsMerging: 0
+ m_ShortcutKeysConsumeInputs: 0
+ m_iOSSettings:
+ m_MotionUsage:
+ m_Enabled: 0
+ m_Description:
diff --git a/Assets/InputSystem.inputsettings.asset.meta b/Assets/InputSystem.inputsettings.asset.meta
new file mode 100644
index 0000000..ed7b46b
--- /dev/null
+++ b/Assets/InputSystem.inputsettings.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5e0d3796a45800e429656e78e50c710e
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/NuGet.config b/Assets/NuGet.config
new file mode 100644
index 0000000..d267a78
--- /dev/null
+++ b/Assets/NuGet.config
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/NuGet.config.meta b/Assets/NuGet.config.meta
new file mode 100644
index 0000000..03d47b0
--- /dev/null
+++ b/Assets/NuGet.config.meta
@@ -0,0 +1,28 @@
+fileFormatVersion: 2
+guid: f55989a31e1b8ff458b67208d1fac8f8
+labels:
+- NuGetForUnity
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 3
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ Any:
+ enabled: 0
+ settings: {}
+ Editor:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ WindowsStoreApps:
+ enabled: 0
+ settings: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages.meta b/Assets/Packages.meta
new file mode 100644
index 0000000..79a5331
--- /dev/null
+++ b/Assets/Packages.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cc7e200c3fabaa04c823f8809cb85732
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0.meta
new file mode 100644
index 0000000..d3d6886
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b52ed4682805e50409c5371214c3eb7a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/.signature.p7s b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/.signature.p7s
new file mode 100644
index 0000000..c7137b0
Binary files /dev/null and b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/.signature.p7s differ
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Icon.png b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Icon.png
new file mode 100644
index 0000000..a0f1fdb
Binary files /dev/null and b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Icon.png differ
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Icon.png.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Icon.png.meta
new file mode 100644
index 0000000..5ff5704
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Icon.png.meta
@@ -0,0 +1,117 @@
+fileFormatVersion: 2
+guid: 196e9d39d8e7b314eb6623936070db50
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/LICENSE.TXT b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/LICENSE.TXT
new file mode 100644
index 0000000..984713a
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/LICENSE.TXT
@@ -0,0 +1,23 @@
+The MIT License (MIT)
+
+Copyright (c) .NET Foundation and Contributors
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/LICENSE.TXT.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/LICENSE.TXT.meta
new file mode 100644
index 0000000..f114b63
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/LICENSE.TXT.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: cdd41bade8552714aa789df36208f1f9
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Microsoft.Bcl.AsyncInterfaces.nuspec b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Microsoft.Bcl.AsyncInterfaces.nuspec
new file mode 100644
index 0000000..b132d7e
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Microsoft.Bcl.AsyncInterfaces.nuspec
@@ -0,0 +1,31 @@
+
+
+
+ Microsoft.Bcl.AsyncInterfaces
+ 6.0.0
+ Microsoft
+ MIT
+ https://licenses.nuget.org/MIT
+ Icon.png
+ https://dot.net/
+ Provides the IAsyncEnumerable<T> and IAsyncDisposable interfaces and helper types for .NET Standard 2.0. This package is not required starting with .NET Standard 2.1 and .NET Core 3.0.
+
+Commonly Used Types:
+System.IAsyncDisposable
+System.Collections.Generic.IAsyncEnumerable
+System.Collections.Generic.IAsyncEnumerator
+ https://go.microsoft.com/fwlink/?LinkID=799421
+ © Microsoft Corporation. All rights reserved.
+ true
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Microsoft.Bcl.AsyncInterfaces.nuspec.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Microsoft.Bcl.AsyncInterfaces.nuspec.meta
new file mode 100644
index 0000000..73646f7
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/Microsoft.Bcl.AsyncInterfaces.nuspec.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1f1b9927b25eb7b46b5f9d7941182482
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/THIRD-PARTY-NOTICES.TXT b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/THIRD-PARTY-NOTICES.TXT
new file mode 100644
index 0000000..89c59b2
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/THIRD-PARTY-NOTICES.TXT
@@ -0,0 +1,939 @@
+.NET Runtime uses third-party libraries or other resources that may be
+distributed under licenses different than the .NET Runtime software.
+
+In the event that we accidentally failed to list a required notice, please
+bring it to our attention. Post an issue or email us:
+
+ dotnet@microsoft.com
+
+The attached notices are provided for information only.
+
+License notice for ASP.NET
+-------------------------------
+
+Copyright (c) .NET Foundation. All rights reserved.
+Licensed under the Apache License, Version 2.0.
+
+Available at
+https://github.com/dotnet/aspnetcore/blob/main/LICENSE.txt
+
+License notice for Slicing-by-8
+-------------------------------
+
+http://sourceforge.net/projects/slicing-by-8/
+
+Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
+
+
+This software program is licensed subject to the BSD License, available at
+http://www.opensource.org/licenses/bsd-license.html.
+
+
+License notice for Unicode data
+-------------------------------
+
+https://www.unicode.org/license.html
+
+Copyright © 1991-2020 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that either
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software, or
+(b) this copyright and permission notice appear in associated
+Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
+
+License notice for Zlib
+-----------------------
+
+https://github.com/madler/zlib
+http://zlib.net/zlib_license.html
+
+/* zlib.h -- interface of the 'zlib' general purpose compression library
+ version 1.2.11, January 15th, 2017
+
+ Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jean-loup Gailly Mark Adler
+ jloup@gzip.org madler@alumni.caltech.edu
+
+*/
+
+License notice for Mono
+-------------------------------
+
+http://www.mono-project.com/docs/about-mono/
+
+Copyright (c) .NET Foundation Contributors
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for International Organization for Standardization
+-----------------------------------------------------------------
+
+Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+License notice for Intel
+------------------------
+
+"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Xamarin and Novell
+-------------------------------------
+
+Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Copyright (c) 2011 Novell, Inc (http://www.novell.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Third party notice for W3C
+--------------------------
+
+"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE
+Status: This license takes effect 13 May, 2015.
+This work is being provided by the copyright holders under the following license.
+License
+By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
+Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications:
+The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
+Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
+Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
+Disclaimers
+THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders."
+
+License notice for Bit Twiddling Hacks
+--------------------------------------
+
+Bit Twiddling Hacks
+
+By Sean Eron Anderson
+seander@cs.stanford.edu
+
+Individually, the code snippets here are in the public domain (unless otherwise
+noted) — feel free to use them however you please. The aggregate collection and
+descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are
+distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and
+without even the implied warranty of merchantability or fitness for a particular
+purpose.
+
+License notice for Brotli
+--------------------------------------
+
+Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+compress_fragment.c:
+Copyright (c) 2011, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+decode_fuzzer.c:
+Copyright (c) 2015 The Chromium Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+
+License notice for Json.NET
+-------------------------------
+
+https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md
+
+The MIT License (MIT)
+
+Copyright (c) 2007 James Newton-King
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for vectorized base64 encoding / decoding
+--------------------------------------------------------
+
+Copyright (c) 2005-2007, Nick Galbreath
+Copyright (c) 2013-2017, Alfred Klomp
+Copyright (c) 2015-2017, Wojciech Mula
+Copyright (c) 2016-2017, Matthieu Darbois
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+- Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for RFC 3492
+---------------------------
+
+The punycode implementation is based on the sample code in RFC 3492
+
+Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to
+others, and derivative works that comment on or otherwise explain it
+or assist in its implementation may be prepared, copied, published
+and distributed, in whole or in part, without restriction of any
+kind, provided that the above copyright notice and this paragraph are
+included on all such copies and derivative works. However, this
+document itself may not be modified in any way, such as by removing
+the copyright notice or references to the Internet Society or other
+Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for
+copyrights defined in the Internet Standards process must be
+followed, or as required to translate it into languages other than
+English.
+
+The limited permissions granted above are perpetual and will not be
+revoked by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an
+"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+License notice for Algorithm from Internet Draft document "UUIDs and GUIDs"
+---------------------------------------------------------------------------
+
+Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
+Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
+Digital Equipment Corporation, Maynard, Mass.
+To anyone who acknowledges that this file is provided "AS IS"
+without any express or implied warranty: permission to use, copy,
+modify, and distribute this file for any purpose is hereby
+granted without fee, provided that the above copyright notices and
+this notice appears in all source code copies, and that none of
+the names of Open Software Foundation, Inc., Hewlett-Packard
+Company, or Digital Equipment Corporation be used in advertising
+or publicity pertaining to distribution of the software without
+specific, written prior permission. Neither Open Software
+Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital Equipment
+Corporation makes any representations about the suitability of
+this software for any purpose.
+
+Copyright(C) The Internet Society 1997. All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others,
+and derivative works that comment on or otherwise explain it or assist in
+its implementation may be prepared, copied, published and distributed, in
+whole or in part, without restriction of any kind, provided that the above
+copyright notice and this paragraph are included on all such copies and
+derivative works.However, this document itself may not be modified in any
+way, such as by removing the copyright notice or references to the Internet
+Society or other Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for copyrights
+defined in the Internet Standards process must be followed, or as required
+to translate it into languages other than English.
+
+The limited permissions granted above are perpetual and will not be revoked
+by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an "AS IS"
+basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
+DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
+RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
+PARTICULAR PURPOSE.
+
+License notice for Algorithm from RFC 4122 -
+A Universally Unique IDentifier (UUID) URN Namespace
+----------------------------------------------------
+
+Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
+Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
+Digital Equipment Corporation, Maynard, Mass.
+Copyright (c) 1998 Microsoft.
+To anyone who acknowledges that this file is provided "AS IS"
+without any express or implied warranty: permission to use, copy,
+modify, and distribute this file for any purpose is hereby
+granted without fee, provided that the above copyright notices and
+this notice appears in all source code copies, and that none of
+the names of Open Software Foundation, Inc., Hewlett-Packard
+Company, Microsoft, or Digital Equipment Corporation be used in
+advertising or publicity pertaining to distribution of the software
+without specific, written prior permission. Neither Open Software
+Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital
+Equipment Corporation makes any representations about the
+suitability of this software for any purpose."
+
+License notice for The LLVM Compiler Infrastructure
+---------------------------------------------------
+
+Developed by:
+
+ LLVM Team
+
+ University of Illinois at Urbana-Champaign
+
+ http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimers.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimers in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the names of the LLVM Team, University of Illinois at
+ Urbana-Champaign, nor the names of its contributors may be used to
+ endorse or promote products derived from this Software without specific
+ prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+License notice for Bob Jenkins
+------------------------------
+
+By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
+code any way you wish, private, educational, or commercial. It's free.
+
+License notice for Greg Parker
+------------------------------
+
+Greg Parker gparker@cs.stanford.edu December 2000
+This code is in the public domain and may be copied or modified without
+permission.
+
+License notice for libunwind based code
+----------------------------------------
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for Printing Floating-Point Numbers (Dragon4)
+------------------------------------------------------------
+
+/******************************************************************************
+ Copyright (c) 2014 Ryan Juckett
+ http://www.ryanjuckett.com/
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source
+ distribution.
+******************************************************************************/
+
+License notice for Printing Floating-point Numbers (Grisu3)
+-----------------------------------------------------------
+
+Copyright 2012 the V8 project authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of Google Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for xxHash
+-------------------------
+
+xxHash Library
+Copyright (c) 2012-2014, Yann Collet
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Berkeley SoftFloat Release 3e
+------------------------------------------------
+
+https://github.com/ucb-bar/berkeley-softfloat-3
+https://github.com/ucb-bar/berkeley-softfloat-3/blob/master/COPYING.txt
+
+License for Berkeley SoftFloat Release 3e
+
+John R. Hauser
+2018 January 20
+
+The following applies to the whole of SoftFloat Release 3e as well as to
+each source file individually.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions, and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for xoshiro RNGs
+--------------------------------
+
+Written in 2018 by David Blackman and Sebastiano Vigna (vigna@acm.org)
+
+To the extent possible under law, the author has dedicated all copyright
+and related and neighboring rights to this software to the public domain
+worldwide. This software is distributed without any warranty.
+
+See .
+
+License for fastmod (https://github.com/lemire/fastmod) and ibm-fpgen (https://github.com/nigeltao/parse-number-fxx-test-data)
+--------------------------------------
+
+ Copyright 2018 Daniel Lemire
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+License notice for The C++ REST SDK
+-----------------------------------
+
+C++ REST SDK
+
+The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for MessagePack-CSharp
+-------------------------------------
+
+MessagePack for C#
+
+MIT License
+
+Copyright (c) 2017 Yoshifumi Kawai
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for lz4net
+-------------------------------------
+
+lz4net
+
+Copyright (c) 2013-2017, Milosz Krajewski
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Nerdbank.Streams
+-----------------------------------
+
+The MIT License (MIT)
+
+Copyright (c) Andrew Arnott
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for RapidJSON
+----------------------------
+
+Tencent is pleased to support the open source community by making RapidJSON available.
+
+Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
+
+Licensed under the MIT License (the "License"); you may not use this file except
+in compliance with the License. You may obtain a copy of the License at
+
+http://opensource.org/licenses/MIT
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for the
+specific language governing permissions and limitations under the License.
+
+License notice for DirectX Math Library
+---------------------------------------
+
+https://github.com/microsoft/DirectXMath/blob/master/LICENSE
+
+ The MIT License (MIT)
+
+Copyright (c) 2011-2020 Microsoft Corp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights to use, copy, modify,
+merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be included in all copies
+or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
+OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for ldap4net
+---------------------------
+
+The MIT License (MIT)
+
+Copyright (c) 2018 Alexander Chermyanin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for vectorized sorting code
+------------------------------------------
+
+MIT License
+
+Copyright (c) 2020 Dan Shechter
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for musl
+-----------------------
+
+musl as a whole is licensed under the following standard MIT license:
+
+Copyright © 2005-2020 Rich Felker, et al.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+License notice for "Faster Unsigned Division by Constants"
+------------------------------
+
+Reference implementations of computing and using the "magic number" approach to dividing
+by constants, including codegen instructions. The unsigned division incorporates the
+"round down" optimization per ridiculous_fish.
+
+This is free and unencumbered software. Any copyright is dedicated to the Public Domain.
+
+
+License notice for mimalloc
+-----------------------------------
+
+MIT License
+
+Copyright (c) 2019 Microsoft Corporation, Daan Leijen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/THIRD-PARTY-NOTICES.TXT.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/THIRD-PARTY-NOTICES.TXT.meta
new file mode 100644
index 0000000..c4d56bd
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/THIRD-PARTY-NOTICES.TXT.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: dfbe81cccbcee504e80738672434e54d
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib.meta
new file mode 100644
index 0000000..2d6ad6e
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e975d08202681e34980ba3126ee6676e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1.meta
new file mode 100644
index 0000000..e6cb1e4
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 65cd4122ec1d13e46b97c80be0b0898e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll
new file mode 100644
index 0000000..fe6ba4c
Binary files /dev/null and b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll differ
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll.meta
new file mode 100644
index 0000000..839147b
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll.meta
@@ -0,0 +1,29 @@
+fileFormatVersion: 2
+guid: 9cacb8d9eac41cc498fb33fffe2318f5
+labels:
+- NuGetForUnity
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 3
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ Any:
+ enabled: 1
+ settings: {}
+ Editor:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml
new file mode 100644
index 0000000..5fd48a2
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml
@@ -0,0 +1,8 @@
+
+
+
+ Microsoft.Bcl.AsyncInterfaces
+
+
+
+
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml.meta
new file mode 100644
index 0000000..15b87e5
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 6071ed1e7f7f1774f880021ff25ac082
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/useSharedDesignerContext.txt b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/useSharedDesignerContext.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/useSharedDesignerContext.txt.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/useSharedDesignerContext.txt.meta
new file mode 100644
index 0000000..acd4712
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.6.0.0/useSharedDesignerContext.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f8aeb00a642577947bcb24d0cd3bcf5a
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0.meta
new file mode 100644
index 0000000..58780ef
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0a4f351cb682b3c4cb14d88067e57f51
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/.signature.p7s b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/.signature.p7s
new file mode 100644
index 0000000..0b4d4a3
Binary files /dev/null and b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/.signature.p7s differ
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Icon.png b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Icon.png
new file mode 100644
index 0000000..a0f1fdb
Binary files /dev/null and b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Icon.png differ
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Icon.png.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Icon.png.meta
new file mode 100644
index 0000000..600d88f
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Icon.png.meta
@@ -0,0 +1,117 @@
+fileFormatVersion: 2
+guid: 540aa17032495d54080ae86a231aa257
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/LICENSE.TXT b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/LICENSE.TXT
new file mode 100644
index 0000000..984713a
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/LICENSE.TXT
@@ -0,0 +1,23 @@
+The MIT License (MIT)
+
+Copyright (c) .NET Foundation and Contributors
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/LICENSE.TXT.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/LICENSE.TXT.meta
new file mode 100644
index 0000000..d7993bb
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/LICENSE.TXT.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1e839c50b6591c144bd3fc87ccceefee
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Microsoft.Bcl.TimeProvider.nuspec b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Microsoft.Bcl.TimeProvider.nuspec
new file mode 100644
index 0000000..d350224
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Microsoft.Bcl.TimeProvider.nuspec
@@ -0,0 +1,32 @@
+
+
+
+ Microsoft.Bcl.TimeProvider
+ 8.0.0
+ Microsoft
+ MIT
+ https://licenses.nuget.org/MIT
+ Icon.png
+ PACKAGE.md
+ https://dot.net/
+ Provides support for system time abstraction primitives for .NET Framework and .NET Standard.
+
+Commonly Used Types:
+System.TimeProvider
+System.ITimer
+ https://go.microsoft.com/fwlink/?LinkID=799421
+ © Microsoft Corporation. All rights reserved.
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Microsoft.Bcl.TimeProvider.nuspec.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Microsoft.Bcl.TimeProvider.nuspec.meta
new file mode 100644
index 0000000..5263bf0
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/Microsoft.Bcl.TimeProvider.nuspec.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: be24ad8db999f774b970fe9ca86aea80
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/PACKAGE.md b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/PACKAGE.md
new file mode 100644
index 0000000..f3c9c37
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/PACKAGE.md
@@ -0,0 +1,57 @@
+## About
+
+Microsoft.Bcl.TimeProvider provides time abstraction support for apps targeting .NET 7 and earlier, as well as those intended for the .NET Framework. For apps targeting .NET 8 and newer versions, referencing this package is unnecessary, as the types it contains are already included in the .NET 8 and higher platform versions.
+
+## Key Features
+
+* Provides a common abstraction for time-related operations.
+
+## How to Use
+
+```csharp
+using System;
+
+// A class that uses TimeProvider to get the current time in Utc coordinates
+public class UtcClock
+{
+ private readonly TimeProvider _timeProvider;
+
+ // Constructor that takes a TimeProvider as a dependency
+ public Clock(TimeProvider timeProvider)
+ {
+ _timeProvider = timeProvider;
+ }
+
+ // A method that returns the current time as a string
+ public string GetTime()
+ {
+ return _timeProvider.GetLocalNow().ToString("HH:mm:ss");
+ }
+}
+
+// A class that inherits from TimeProvider and overrides the GetLocalNow method
+public class UtcTimeProvider : TimeProvider
+{
+ // Override the GetLocalNow method to always return UTC time
+ public override DateTimeOffset GetLocalNow()
+ {
+ return TimeProvider.System.GetUtcNow();
+ }
+}
+
+```
+
+## Main Types
+
+The main types provided by this library are:
+
+* `TimeProvider`
+* `TimeProviderTaskExtensions`
+
+## Additional Documentation
+
+* [API documentation](https://learn.microsoft.com/dotnet/api/system.timeprovider)
+
+## Feedback & Contributing
+
+Microsoft.Bcl.TimeProvider is released as open source under the [MIT license](https://licenses.nuget.org/MIT). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/dotnet/runtime).
\ No newline at end of file
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/PACKAGE.md.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/PACKAGE.md.meta
new file mode 100644
index 0000000..718384b
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/PACKAGE.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b87fadce71864bf4abd0197b6daf4026
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/THIRD-PARTY-NOTICES.TXT b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/THIRD-PARTY-NOTICES.TXT
new file mode 100644
index 0000000..4b40333
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/THIRD-PARTY-NOTICES.TXT
@@ -0,0 +1,1272 @@
+.NET Runtime uses third-party libraries or other resources that may be
+distributed under licenses different than the .NET Runtime software.
+
+In the event that we accidentally failed to list a required notice, please
+bring it to our attention. Post an issue or email us:
+
+ dotnet@microsoft.com
+
+The attached notices are provided for information only.
+
+License notice for ASP.NET
+-------------------------------
+
+Copyright (c) .NET Foundation. All rights reserved.
+Licensed under the Apache License, Version 2.0.
+
+Available at
+https://github.com/dotnet/aspnetcore/blob/main/LICENSE.txt
+
+License notice for Slicing-by-8
+-------------------------------
+
+http://sourceforge.net/projects/slicing-by-8/
+
+Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
+
+
+This software program is licensed subject to the BSD License, available at
+http://www.opensource.org/licenses/bsd-license.html.
+
+
+License notice for Unicode data
+-------------------------------
+
+https://www.unicode.org/license.html
+
+Copyright © 1991-2022 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that either
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software, or
+(b) this copyright and permission notice appear in associated
+Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
+
+License notice for Zlib
+-----------------------
+
+https://github.com/madler/zlib
+https://zlib.net/zlib_license.html
+
+/* zlib.h -- interface of the 'zlib' general purpose compression library
+ version 1.2.13, October 13th, 2022
+
+ Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jean-loup Gailly Mark Adler
+ jloup@gzip.org madler@alumni.caltech.edu
+
+*/
+
+License notice for Mono
+-------------------------------
+
+http://www.mono-project.com/docs/about-mono/
+
+Copyright (c) .NET Foundation Contributors
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for International Organization for Standardization
+-----------------------------------------------------------------
+
+Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+License notice for Intel
+------------------------
+
+"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Xamarin and Novell
+-------------------------------------
+
+Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Copyright (c) 2011 Novell, Inc (http://www.novell.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Third party notice for W3C
+--------------------------
+
+"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE
+Status: This license takes effect 13 May, 2015.
+This work is being provided by the copyright holders under the following license.
+License
+By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
+Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications:
+The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
+Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
+Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
+Disclaimers
+THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders."
+
+License notice for Bit Twiddling Hacks
+--------------------------------------
+
+Bit Twiddling Hacks
+
+By Sean Eron Anderson
+seander@cs.stanford.edu
+
+Individually, the code snippets here are in the public domain (unless otherwise
+noted) — feel free to use them however you please. The aggregate collection and
+descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are
+distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and
+without even the implied warranty of merchantability or fitness for a particular
+purpose.
+
+License notice for Brotli
+--------------------------------------
+
+Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+compress_fragment.c:
+Copyright (c) 2011, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+decode_fuzzer.c:
+Copyright (c) 2015 The Chromium Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+
+License notice for Json.NET
+-------------------------------
+
+https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md
+
+The MIT License (MIT)
+
+Copyright (c) 2007 James Newton-King
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for vectorized base64 encoding / decoding
+--------------------------------------------------------
+
+Copyright (c) 2005-2007, Nick Galbreath
+Copyright (c) 2013-2017, Alfred Klomp
+Copyright (c) 2015-2017, Wojciech Mula
+Copyright (c) 2016-2017, Matthieu Darbois
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+- Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for vectorized hex parsing
+--------------------------------------------------------
+
+Copyright (c) 2022, Geoff Langdale
+Copyright (c) 2022, Wojciech Mula
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+- Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for RFC 3492
+---------------------------
+
+The punycode implementation is based on the sample code in RFC 3492
+
+Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to
+others, and derivative works that comment on or otherwise explain it
+or assist in its implementation may be prepared, copied, published
+and distributed, in whole or in part, without restriction of any
+kind, provided that the above copyright notice and this paragraph are
+included on all such copies and derivative works. However, this
+document itself may not be modified in any way, such as by removing
+the copyright notice or references to the Internet Society or other
+Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for
+copyrights defined in the Internet Standards process must be
+followed, or as required to translate it into languages other than
+English.
+
+The limited permissions granted above are perpetual and will not be
+revoked by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an
+"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Copyright(C) The Internet Society 1997. All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others,
+and derivative works that comment on or otherwise explain it or assist in
+its implementation may be prepared, copied, published and distributed, in
+whole or in part, without restriction of any kind, provided that the above
+copyright notice and this paragraph are included on all such copies and
+derivative works.However, this document itself may not be modified in any
+way, such as by removing the copyright notice or references to the Internet
+Society or other Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for copyrights
+defined in the Internet Standards process must be followed, or as required
+to translate it into languages other than English.
+
+The limited permissions granted above are perpetual and will not be revoked
+by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an "AS IS"
+basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
+DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
+RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
+PARTICULAR PURPOSE.
+
+License notice for Algorithm from RFC 4122 -
+A Universally Unique IDentifier (UUID) URN Namespace
+----------------------------------------------------
+
+Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
+Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
+Digital Equipment Corporation, Maynard, Mass.
+Copyright (c) 1998 Microsoft.
+To anyone who acknowledges that this file is provided "AS IS"
+without any express or implied warranty: permission to use, copy,
+modify, and distribute this file for any purpose is hereby
+granted without fee, provided that the above copyright notices and
+this notice appears in all source code copies, and that none of
+the names of Open Software Foundation, Inc., Hewlett-Packard
+Company, Microsoft, or Digital Equipment Corporation be used in
+advertising or publicity pertaining to distribution of the software
+without specific, written prior permission. Neither Open Software
+Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital
+Equipment Corporation makes any representations about the
+suitability of this software for any purpose."
+
+License notice for The LLVM Compiler Infrastructure (Legacy License)
+--------------------------------------------------------------------
+
+Developed by:
+
+ LLVM Team
+
+ University of Illinois at Urbana-Champaign
+
+ http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimers.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimers in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the names of the LLVM Team, University of Illinois at
+ Urbana-Champaign, nor the names of its contributors may be used to
+ endorse or promote products derived from this Software without specific
+ prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+License notice for Bob Jenkins
+------------------------------
+
+By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
+code any way you wish, private, educational, or commercial. It's free.
+
+License notice for Greg Parker
+------------------------------
+
+Greg Parker gparker@cs.stanford.edu December 2000
+This code is in the public domain and may be copied or modified without
+permission.
+
+License notice for libunwind based code
+----------------------------------------
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for Printing Floating-Point Numbers (Dragon4)
+------------------------------------------------------------
+
+/******************************************************************************
+ Copyright (c) 2014 Ryan Juckett
+ http://www.ryanjuckett.com/
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source
+ distribution.
+******************************************************************************/
+
+License notice for Printing Floating-point Numbers (Grisu3)
+-----------------------------------------------------------
+
+Copyright 2012 the V8 project authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of Google Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for xxHash
+-------------------------
+
+xxHash - Extremely Fast Hash algorithm
+Header File
+Copyright (C) 2012-2021 Yann Collet
+
+BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php)
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+You can contact the author at:
+ - xxHash homepage: https://www.xxhash.com
+ - xxHash source repository: https://github.com/Cyan4973/xxHash
+
+License notice for Berkeley SoftFloat Release 3e
+------------------------------------------------
+
+https://github.com/ucb-bar/berkeley-softfloat-3
+https://github.com/ucb-bar/berkeley-softfloat-3/blob/master/COPYING.txt
+
+License for Berkeley SoftFloat Release 3e
+
+John R. Hauser
+2018 January 20
+
+The following applies to the whole of SoftFloat Release 3e as well as to
+each source file individually.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions, and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for xoshiro RNGs
+--------------------------------
+
+Written in 2018 by David Blackman and Sebastiano Vigna (vigna@acm.org)
+
+To the extent possible under law, the author has dedicated all copyright
+and related and neighboring rights to this software to the public domain
+worldwide. This software is distributed without any warranty.
+
+See .
+
+License for fastmod (https://github.com/lemire/fastmod), ibm-fpgen (https://github.com/nigeltao/parse-number-fxx-test-data) and fastrange (https://github.com/lemire/fastrange)
+--------------------------------------
+
+ Copyright 2018 Daniel Lemire
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+License for sse4-strstr (https://github.com/WojciechMula/sse4-strstr)
+--------------------------------------
+
+ Copyright (c) 2008-2016, Wojciech Mula
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for The C++ REST SDK
+-----------------------------------
+
+C++ REST SDK
+
+The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for MessagePack-CSharp
+-------------------------------------
+
+MessagePack for C#
+
+MIT License
+
+Copyright (c) 2017 Yoshifumi Kawai
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for lz4net
+-------------------------------------
+
+lz4net
+
+Copyright (c) 2013-2017, Milosz Krajewski
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Nerdbank.Streams
+-----------------------------------
+
+The MIT License (MIT)
+
+Copyright (c) Andrew Arnott
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for RapidJSON
+----------------------------
+
+Tencent is pleased to support the open source community by making RapidJSON available.
+
+Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
+
+Licensed under the MIT License (the "License"); you may not use this file except
+in compliance with the License. You may obtain a copy of the License at
+
+http://opensource.org/licenses/MIT
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for the
+specific language governing permissions and limitations under the License.
+
+License notice for DirectX Math Library
+---------------------------------------
+
+https://github.com/microsoft/DirectXMath/blob/master/LICENSE
+
+ The MIT License (MIT)
+
+Copyright (c) 2011-2020 Microsoft Corp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights to use, copy, modify,
+merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be included in all copies
+or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
+OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for ldap4net
+---------------------------
+
+The MIT License (MIT)
+
+Copyright (c) 2018 Alexander Chermyanin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for vectorized sorting code
+------------------------------------------
+
+MIT License
+
+Copyright (c) 2020 Dan Shechter
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for musl
+-----------------------
+
+musl as a whole is licensed under the following standard MIT license:
+
+Copyright © 2005-2020 Rich Felker, et al.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+License notice for "Faster Unsigned Division by Constants"
+------------------------------
+
+Reference implementations of computing and using the "magic number" approach to dividing
+by constants, including codegen instructions. The unsigned division incorporates the
+"round down" optimization per ridiculous_fish.
+
+This is free and unencumbered software. Any copyright is dedicated to the Public Domain.
+
+
+License notice for mimalloc
+-----------------------------------
+
+MIT License
+
+Copyright (c) 2019 Microsoft Corporation, Daan Leijen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for The LLVM Project
+-----------------------------------
+
+Copyright 2019 LLVM Project
+
+Licensed under the Apache License, Version 2.0 (the "License") with LLVM Exceptions;
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+https://llvm.org/LICENSE.txt
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+License notice for Apple header files
+-------------------------------------
+
+Copyright (c) 1980, 1986, 1993
+ The Regents of the University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+ must display the following acknowledgement:
+ This product includes software developed by the University of
+ California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+License notice for JavaScript queues
+-------------------------------------
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER.
+
+Statement of Purpose
+The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").
+Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
+For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:
+the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
+moral rights retained by the original author(s) and/or performer(s);
+publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
+rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
+rights protecting the extraction, dissemination, use and reuse of data in a Work;
+database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
+other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
+2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.
+3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.
+4. Limitations and Disclaimers.
+a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
+b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
+c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
+d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
+
+
+License notice for FastFloat algorithm
+-------------------------------------
+MIT License
+Copyright (c) 2021 csFastFloat authors
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for MsQuic
+--------------------------------------
+
+Copyright (c) Microsoft Corporation.
+Licensed under the MIT License.
+
+Available at
+https://github.com/microsoft/msquic/blob/main/LICENSE
+
+License notice for m-ou-se/floatconv
+-------------------------------
+
+Copyright (c) 2020 Mara Bos
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for code from The Practice of Programming
+-------------------------------
+
+Copyright (C) 1999 Lucent Technologies
+
+Excerpted from 'The Practice of Programming
+by Brian W. Kernighan and Rob Pike
+
+You may use this code for any purpose, as long as you leave the copyright notice and book citation attached.
+
+Notice for Euclidean Affine Functions and Applications to Calendar
+Algorithms
+-------------------------------
+
+Aspects of Date/Time processing based on algorithm described in "Euclidean Affine Functions and Applications to Calendar
+Algorithms", Cassio Neri and Lorenz Schneider. https://arxiv.org/pdf/2102.06959.pdf
+
+License notice for amd/aocl-libm-ose
+-------------------------------
+
+Copyright (C) 2008-2020 Advanced Micro Devices, Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+3. Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+License notice for fmtlib/fmt
+-------------------------------
+
+Formatting library for C++
+
+Copyright (c) 2012 - present, Victor Zverovich
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License for Jb Evain
+---------------------
+
+Copyright (c) 2006 Jb Evain (jbevain@gmail.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+--- Optional exception to the license ---
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into a machine-executable object form of such
+source code, you may redistribute such embedded portions in such object form
+without including the above copyright and permission notices.
+
+
+License for MurmurHash3
+--------------------------------------
+
+https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp
+
+MurmurHash3 was written by Austin Appleby, and is placed in the public
+domain. The author hereby disclaims copyright to this source
+
+License for Fast CRC Computation
+--------------------------------------
+
+https://github.com/intel/isa-l/blob/33a2d9484595c2d6516c920ce39a694c144ddf69/crc/crc32_ieee_by4.asm
+https://github.com/intel/isa-l/blob/33a2d9484595c2d6516c920ce39a694c144ddf69/crc/crc64_ecma_norm_by8.asm
+
+Copyright(c) 2011-2015 Intel Corporation All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of Intel Corporation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License for C# Implementation of Fast CRC Computation
+-----------------------------------------------------
+
+https://github.com/SixLabors/ImageSharp/blob/f4f689ce67ecbcc35cebddba5aacb603e6d1068a/src/ImageSharp/Formats/Png/Zlib/Crc32.cs
+
+Copyright (c) Six Labors.
+Licensed under the Apache License, Version 2.0.
+
+Available at
+https://github.com/SixLabors/ImageSharp/blob/f4f689ce67ecbcc35cebddba5aacb603e6d1068a/LICENSE
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/THIRD-PARTY-NOTICES.TXT.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/THIRD-PARTY-NOTICES.TXT.meta
new file mode 100644
index 0000000..3348c05
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/THIRD-PARTY-NOTICES.TXT.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4823c3dd187427d42af1060e93ae403b
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive.meta
new file mode 100644
index 0000000..eae42f9
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5514586d24163c44892e0c6deeaf7379
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net461.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net461.meta
new file mode 100644
index 0000000..f3fd3bb
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net461.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 72a8cba37052d094190f9351dcefab69
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net461/Microsoft.Bcl.TimeProvider.targets b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net461/Microsoft.Bcl.TimeProvider.targets
new file mode 100644
index 0000000..ddbc6be
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net461/Microsoft.Bcl.TimeProvider.targets
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net461/Microsoft.Bcl.TimeProvider.targets.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net461/Microsoft.Bcl.TimeProvider.targets.meta
new file mode 100644
index 0000000..8672280
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net461/Microsoft.Bcl.TimeProvider.targets.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ad185be609aabe44fb7fb6de5e47c1d6
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net462.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net462.meta
new file mode 100644
index 0000000..36e47e2
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net462.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ec8e6149af88ddd4e9656f94ccedb518
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net462/_._ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net462/_._
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net462/_._.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net462/_._.meta
new file mode 100644
index 0000000..e937753
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net462/_._.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: c9c878c7a360d8a40bb60caa24bb5963
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net6.0.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net6.0.meta
new file mode 100644
index 0000000..0df0480
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net6.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 26f8afa01dadd104c855a080054bcc21
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net6.0/_._ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net6.0/_._
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net6.0/_._.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net6.0/_._.meta
new file mode 100644
index 0000000..25740ae
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/net6.0/_._.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b564462455c8224498c27802408570e3
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/netcoreapp2.0.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/netcoreapp2.0.meta
new file mode 100644
index 0000000..e7c2232
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/netcoreapp2.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e15891ad50de7fb45a592e263d07d69a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/netcoreapp2.0/Microsoft.Bcl.TimeProvider.targets b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/netcoreapp2.0/Microsoft.Bcl.TimeProvider.targets
new file mode 100644
index 0000000..4cbeffb
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/netcoreapp2.0/Microsoft.Bcl.TimeProvider.targets
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/netcoreapp2.0/Microsoft.Bcl.TimeProvider.targets.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/netcoreapp2.0/Microsoft.Bcl.TimeProvider.targets.meta
new file mode 100644
index 0000000..ef97ce3
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/buildTransitive/netcoreapp2.0/Microsoft.Bcl.TimeProvider.targets.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9e3f227e7dc62e241af6ff8e61b11786
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib.meta
new file mode 100644
index 0000000..6870b6d
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f012c050821bec44c974842c2d9fa4da
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0.meta
new file mode 100644
index 0000000..c5e284b
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 19fc158fb3dcfcc4892f98a7954ff534
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll
new file mode 100644
index 0000000..d5b3444
Binary files /dev/null and b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll differ
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll.meta
new file mode 100644
index 0000000..487c76c
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.dll.meta
@@ -0,0 +1,29 @@
+fileFormatVersion: 2
+guid: d40725048a5ea8949874dd6b08586d61
+labels:
+- NuGetForUnity
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 3
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ Any:
+ enabled: 1
+ settings: {}
+ Editor:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.xml b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.xml
new file mode 100644
index 0000000..acba473
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.xml
@@ -0,0 +1,415 @@
+
+
+
+ Microsoft.Bcl.TimeProvider
+
+
+
+ Provides an abstraction for time.
+
+
+
+ Gets a that provides a clock based on ,
+ a time zone based on , a high-performance time stamp based on ,
+ and a timer based on .
+
+
+ If the changes after the object is returned, the change will be reflected in any subsequent operations that retrieve .
+
+
+
+
+ Initializes the .
+
+
+
+
+ Gets a value whose date and time are set to the current
+ Coordinated Universal Time (UTC) date and time and whose offset is Zero,
+ all according to this 's notion of time.
+
+
+ The default implementation returns .
+
+
+
+
+ Gets a value that is set to the current date and time according to this 's
+ notion of time based on , with the offset set to the 's offset from Coordinated Universal Time (UTC).
+
+
+
+
+ Gets a object that represents the local time zone according to this 's notion of time.
+
+
+ The default implementation returns .
+
+
+
+
+ Gets the frequency of of high-frequency value per second.
+
+
+ The default implementation returns . For a given TimeProvider instance, the value must be idempotent and remain unchanged.
+
+
+
+
+ Gets the current high-frequency value designed to measure small time intervals with high accuracy in the timer mechanism.
+
+ A long integer representing the high-frequency counter value of the underlying timer mechanism.
+
+ The default implementation returns .
+
+
+
+
+ Gets the elapsed time between two timestamps retrieved using .
+
+ The timestamp marking the beginning of the time period.
+ The timestamp marking the end of the time period.
+ A for the elapsed time between the starting and ending timestamps.
+
+
+
+ Gets the elapsed time since the value retrieved using .
+
+ The timestamp marking the beginning of the time period.
+ A for the elapsed time between the starting timestamp and the time of this call./>
+
+
+ Creates a new instance, using values to measure time intervals.
+
+ A delegate representing a method to be executed when the timer fires. The method specified for callback should be reentrant,
+ as it may be invoked simultaneously on two threads if the timer fires again before or while a previous callback is still being handled.
+
+ An object to be passed to the . This may be null.
+ The amount of time to delay before is invoked. Specify to prevent the timer from starting. Specify to start the timer immediately.
+ The time interval between invocations of . Specify to disable periodic signaling.
+
+ The newly created instance.
+
+ is null.
+ The number of milliseconds in the value of or is negative and not equal to , or is greater than .
+
+
+ The delegate specified by the callback parameter is invoked once after elapses, and thereafter each time the time interval elapses.
+
+
+ If is zero, the callback is invoked immediately. If is -1 milliseconds, is not invoked; the timer is disabled,
+ but can be re-enabled by calling the method.
+
+
+ If is 0 or -1 milliseconds and is positive, is invoked once; the periodic behavior of the timer is disabled,
+ but can be re-enabled using the method.
+
+
+ The return instance will be implicitly rooted while the timer is still scheduled.
+
+
+ captures the and stores that with the for use in invoking
+ each time it's called. That capture can be suppressed with .
+
+
+
+
+ Thin wrapper for a .
+
+ We don't return a TimerQueueTimer directly as it implements IThreadPoolWorkItem and we don't
+ want it exposed in a way that user code could directly queue the timer to the thread pool.
+ We also use this instead of Timer because CreateTimer needs to return a timer that's implicitly
+ rooted while scheduled.
+
+
+
+
+ Used to create a instance returned from and uses the default implementation
+ provided by which uses , , , and .
+
+
+
+ Initializes the instance.
+
+
+ Represents a timer that can have its due time and period changed.
+
+ Implementations of , , and
+ must all be thread-safe such that the timer instance may be accessed concurrently from multiple threads.
+
+
+
+ Changes the start time and the interval between method invocations for a timer, using values to measure time intervals.
+
+ A representing the amount of time to delay before invoking the callback method specified when the was constructed.
+ Specify to prevent the timer from restarting. Specify to restart the timer immediately.
+
+
+ The time interval between invocations of the callback method specified when the Timer was constructed.
+ Specify to disable periodic signaling.
+
+ if the timer was successfully updated; otherwise, .
+ The or parameter, in milliseconds, is less than -1 or greater than 4294967294.
+
+ It is the responsibility of the implementer of the ITimer interface to ensure thread safety.
+
+
+
+
+ Provide extensions methods for operations with .
+
+
+ The Microsoft.Bcl.TimeProvider library interfaces are intended solely for use in building against pre-.NET 8 surface area.
+ If your code is being built against .NET 8 or higher, then this library should not be utilized.
+
+
+
+ Creates a task that completes after a specified time interval.
+ The with which to interpret .
+ The to wait before completing the returned task, or to wait indefinitely.
+ A cancellation token to observe while waiting for the task to complete.
+ A task that represents the time delay.
+ The argument is null.
+ represents a negative time interval other than .
+
+
+
+ Gets a that will complete when this completes, when the specified timeout expires, or when the specified has cancellation requested.
+
+ The task for which to wait on until completion.
+ The timeout after which the should be faulted with a if it hasn't otherwise completed.
+ The with which to interpret .
+ The to monitor for a cancellation request.
+ The representing the asynchronous wait. It may or may not be the same instance as the current instance.
+ The argument is null.
+ The argument is null.
+ represents a negative time interval other than .
+
+
+
+ Gets a that will complete when this completes, when the specified timeout expires, or when the specified has cancellation requested.
+
+ The task for which to wait on until completion.
+ The timeout after which the should be faulted with a if it hasn't otherwise completed.
+ The with which to interpret .
+ The to monitor for a cancellation request.
+ The representing the asynchronous wait. It may or may not be the same instance as the current instance.
+ The argument is null.
+ The argument is null.
+ represents a negative time interval other than .
+
+
+ Initializes a new instance of the class that will be canceled after the specified .
+ The with which to interpret the .
+ The time interval to wait before canceling this .
+ The is negative and not equal to or greater than maximum allowed timer duration.
+ that will be canceled after the specified .
+
+
+ The countdown for the delay starts during the call to the constructor. When the delay expires,
+ the constructed is canceled if it has
+ not been canceled already.
+
+
+ If running on .NET versions earlier than .NET 8.0, there is a constraint when invoking on the resultant object.
+ This action will not terminate the initial timer indicated by . However, this restriction does not apply on .NET 8.0 and later versions.
+
+
+
+
+ '{0}' must be a non-negative and non-zero value.
+
+
+ '{0}' must be greater than or equal to '{1}'.
+
+
+ '{0}' must be less than or equal to '{1}'.
+
+
+ The operation cannot be performed when TimeProvider.LocalTimeZone is null.
+
+
+ The operation cannot be performed when TimeProvider.TimestampFrequency is zero or negative.
+
+
+
+ Attribute used to indicate a source generator should create a function for marshalling
+ arguments instead of relying on the runtime to generate an equivalent marshalling function at run-time.
+
+
+ This attribute is meaningless if the source generator associated with it is not enabled.
+ The current built-in source generator only supports C# and only supplies an implementation when
+ applied to static, partial, non-generic methods.
+
+
+
+
+ Initializes a new instance of the .
+
+ Name of the library containing the import.
+
+
+
+ Gets the name of the library containing the import.
+
+
+
+
+ Gets or sets the name of the entry point to be called.
+
+
+
+
+ Gets or sets how to marshal string arguments to the method.
+
+
+ If this field is set to a value other than ,
+ must not be specified.
+
+
+
+
+ Gets or sets the used to control how string arguments to the method are marshalled.
+
+
+ If this field is specified, must not be specified
+ or must be set to .
+
+
+
+
+ Gets or sets whether the callee sets an error (SetLastError on Windows or errno
+ on other platforms) before returning from the attributed method.
+
+
+
+
+ Specifies how strings should be marshalled for generated p/invokes
+
+
+
+
+ Indicates the user is suppling a specific marshaller in .
+
+
+
+
+ Use the platform-provided UTF-8 marshaller.
+
+
+
+
+ Use the platform-provided UTF-16 marshaller.
+
+
+
+ Specifies that null is allowed as an input even if the corresponding type disallows it.
+
+
+ Specifies that null is disallowed as an input even if the corresponding type allows it.
+
+
+ Specifies that an output may be null even if the corresponding type disallows it.
+
+
+ Specifies that an output will not be null even if the corresponding type allows it. Specifies that an input argument was not null when the call returns.
+
+
+ Specifies that when a method returns , the parameter may be null even if the corresponding type disallows it.
+
+
+ Initializes the attribute with the specified return value condition.
+
+ The return value condition. If the method returns this value, the associated parameter may be null.
+
+
+
+ Gets the return value condition.
+
+
+ Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it.
+
+
+ Initializes the attribute with the specified return value condition.
+
+ The return value condition. If the method returns this value, the associated parameter will not be null.
+
+
+
+ Gets the return value condition.
+
+
+ Specifies that the output will be non-null if the named parameter is non-null.
+
+
+ Initializes the attribute with the associated parameter name.
+
+ The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null.
+
+
+
+ Gets the associated parameter name.
+
+
+ Applied to a method that will never return under any circumstance.
+
+
+ Specifies that the method will not return if the associated Boolean parameter is passed the specified value.
+
+
+ Initializes the attribute with the specified parameter value.
+
+ The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to
+ the associated parameter matches this value.
+
+
+
+ Gets the condition parameter value.
+
+
+ Specifies that the method or property will ensure that the listed field and property members have not-null values.
+
+
+ Initializes the attribute with a field or property member.
+
+ The field or property member that is promised to be not-null.
+
+
+
+ Initializes the attribute with the list of field and property members.
+
+ The list of field and property members that are promised to be not-null.
+
+
+
+ Gets field or property member names.
+
+
+ Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition.
+
+
+ Initializes the attribute with the specified return value condition and a field or property member.
+
+ The return value condition. If the method returns this value, the associated parameter will not be null.
+
+
+ The field or property member that is promised to be not-null.
+
+
+
+ Initializes the attribute with the specified return value condition and list of field and property members.
+
+ The return value condition. If the method returns this value, the associated parameter will not be null.
+
+
+ The list of field and property members that are promised to be not-null.
+
+
+
+ Gets the return value condition.
+
+
+ Gets field or property member names.
+
+
+
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.xml.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.xml.meta
new file mode 100644
index 0000000..b8ffceb
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/lib/netstandard2.0/Microsoft.Bcl.TimeProvider.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ef2a4e5da91ae264e8fbe0d2079b387d
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/useSharedDesignerContext.txt b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/useSharedDesignerContext.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/useSharedDesignerContext.txt.meta b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/useSharedDesignerContext.txt.meta
new file mode 100644
index 0000000..a425a6c
--- /dev/null
+++ b/Assets/Packages/Microsoft.Bcl.TimeProvider.8.0.0/useSharedDesignerContext.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 436c32fb785f7de45aface98a5a28181
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/R3.1.3.0.meta b/Assets/Packages/R3.1.3.0.meta
new file mode 100644
index 0000000..7027386
--- /dev/null
+++ b/Assets/Packages/R3.1.3.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 140159100813a3849bd045660d339dfd
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/R3.1.3.0/.signature.p7s b/Assets/Packages/R3.1.3.0/.signature.p7s
new file mode 100644
index 0000000..61bf191
Binary files /dev/null and b/Assets/Packages/R3.1.3.0/.signature.p7s differ
diff --git a/Assets/Packages/R3.1.3.0/Icon.png b/Assets/Packages/R3.1.3.0/Icon.png
new file mode 100644
index 0000000..68d64b1
Binary files /dev/null and b/Assets/Packages/R3.1.3.0/Icon.png differ
diff --git a/Assets/Packages/R3.1.3.0/Icon.png.meta b/Assets/Packages/R3.1.3.0/Icon.png.meta
new file mode 100644
index 0000000..80a613b
--- /dev/null
+++ b/Assets/Packages/R3.1.3.0/Icon.png.meta
@@ -0,0 +1,117 @@
+fileFormatVersion: 2
+guid: 8beb10584d83d3f458c22880bd922099
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/R3.1.3.0/R3.nuspec b/Assets/Packages/R3.1.3.0/R3.nuspec
new file mode 100644
index 0000000..0c5aa2c
--- /dev/null
+++ b/Assets/Packages/R3.1.3.0/R3.nuspec
@@ -0,0 +1,36 @@
+
+
+
+ R3
+ 1.3.0
+ Cysharp
+ MIT
+ https://licenses.nuget.org/MIT
+ Icon.png
+ https://github.com/Cysharp/R3
+ The evolution of dotnet/reactive and UniRx.
+ © Cysharp, Inc.
+ rx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Packages/R3.1.3.0/R3.nuspec.meta b/Assets/Packages/R3.1.3.0/R3.nuspec.meta
new file mode 100644
index 0000000..7c93e07
--- /dev/null
+++ b/Assets/Packages/R3.1.3.0/R3.nuspec.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ddb4e297927c22d4f8b4451a2b5566ce
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/R3.1.3.0/lib.meta b/Assets/Packages/R3.1.3.0/lib.meta
new file mode 100644
index 0000000..a423522
--- /dev/null
+++ b/Assets/Packages/R3.1.3.0/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 89058d69edfe34d4c8747616b5bae9b9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/R3.1.3.0/lib/netstandard2.1.meta b/Assets/Packages/R3.1.3.0/lib/netstandard2.1.meta
new file mode 100644
index 0000000..0b748b3
--- /dev/null
+++ b/Assets/Packages/R3.1.3.0/lib/netstandard2.1.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b8de98676e1d60a47b55d5467801d673
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.dll b/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.dll
new file mode 100644
index 0000000..e6cfd80
Binary files /dev/null and b/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.dll differ
diff --git a/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.dll.meta b/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.dll.meta
new file mode 100644
index 0000000..6f55226
--- /dev/null
+++ b/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.dll.meta
@@ -0,0 +1,29 @@
+fileFormatVersion: 2
+guid: d87d4e2dc38e6544ea1607283a825142
+labels:
+- NuGetForUnity
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 3
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ Any:
+ enabled: 1
+ settings: {}
+ Editor:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.xml b/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.xml
new file mode 100644
index 0000000..7340164
--- /dev/null
+++ b/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.xml
@@ -0,0 +1,446 @@
+
+
+
+ R3
+
+
+
+ All values are queued, and the next value waits for the completion of the asynchronous method.
+
+
+ Drop new value when async operation is running.
+
+
+ If the previous asynchronous method is running, it is cancelled and the next asynchronous method is executed.
+
+
+ All values are sent immediately to the asynchronous method.
+
+
+ All values are sent immediately to the asynchronous method, but the results are queued and passed to the next operator in order.
+
+
+ Send the first value and the last value while the asynchronous method is running.
+
+
+ ObserveOn SynchronizationContext.Current
+
+
+ This option is only valid for AwaitOperation.Parallel and AwaitOperation.SequentialParallel. It sets the number of concurrent executions. If set to -1, there is no limit.
+
+
+ This option is only valid for AwaitOperation.Parallel and AwaitOperation.SequentialParallel. It sets the number of concurrent executions. If set to -1, there is no limit.
+
+
+ This option is only valid for AwaitOperation.Parallel and AwaitOperation.SequentialParallel. It sets the number of concurrent executions. If set to -1, there is no limit.
+
+
+ This option is only valid for AwaitOperation.Parallel and AwaitOperation.SequentialParallel. It sets the number of concurrent executions. If set to -1, there is no limit.
+
+
+ This option is only valid for AwaitOperation.Parallel and AwaitOperation.SequentialParallel. It sets the number of concurrent executions. If set to -1, there is no limit.
+
+
+ This option is only valid for AwaitOperation.Parallel and AwaitOperation.SequentialParallel. It sets the number of concurrent executions. If set to -1, there is no limit.
+
+
+
+ Similar as ObserveOn(CurrentThreadScheduler) in dotnet/reactive, place the execution order of recursive calls after the call is completed.
+
+
+
+ This option is only valid for AwaitOperation.Parallel and AwaitOperation.SequentialParallel. It sets the number of concurrent executions. If set to -1, there is no limit.
+
+
+
+ Convert INotifyPropertyChanged to Observable.
+ `propertySelector` must be a Func specifying a simple property. For example, it extracts "Foo" from `x => x.Foo`.
+
+
+
+
+ Convert INotifyPropertyChanged to Observable.
+ `propertySelector1` and `propertySelector2` must be a Func specifying a simple property. For example, it extracts "Foo" from `x => x.Foo`.
+
+
+
+
+ Convert INotifyPropertyChanged to Observable.
+ `propertySelector1`, `propertySelector2`, and `propertySelector3` must be a Func specifying a simple property. For example, it extracts "Foo" from `x => x.Foo`.
+
+
+
+
+ Convert INotifyPropertyChanging to Observable.
+ `propertySelector` must be a Func specifying a simple property. For example, it extracts "Foo" from `x => x.Foo`.
+
+
+
+
+ Convert INotifyPropertyChanging to Observable.
+ `propertySelector1` and `propertySelector2` must be a Func specifying a simple property. For example, it extracts "Foo" from `x => x.Foo`.
+
+
+
+
+ Convert INotifyPropertyChanging to Observable.
+ `propertySelector1`, `propertySelector2`, and `propertySelector3` must be a Func specifying a simple property. For example, it extracts "Foo" from `x => x.Foo`.
+
+
+
+
+ An attribute that allows parameters to receive the expression of other parameters.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The condition parameter value.
+
+
+
+ Gets the parameter name the expression is retrieved from.
+
+
+
+
+ Initialize the attribute to refer to the method on the type.
+
+ The type of the builder to use to construct the collection.
+ The name of the method on the builder to use to construct the collection.
+
+ must refer to a static method that accepts a single parameter of
+ type and returns an instance of the collection being built containing
+ a copy of the data from that span. In future releases of .NET, additional patterns may be supported.
+
+
+
+
+ Gets the type of the builder to use to construct the collection.
+
+
+
+
+ Gets the name of the method on the builder to use to construct the collection.
+
+
+ This should match the metadata name of the target method.
+ For example, this might be ".ctor" if targeting the type's constructor.
+
+
+
+
+ Indicates that compiler support for a particular feature is required for the location where this attribute is applied.
+
+
+
+
+ Creates a new instance of the type.
+
+ The name of the feature to indicate.
+
+
+
+ The name of the compiler feature.
+
+
+
+
+ If true, the compiler can choose to allow access to the location where this attribute is applied if it does not understand .
+
+
+
+
+ The used for the ref structs C# feature.
+
+
+
+
+ The used for the required members C# feature.
+
+
+
+
+ Indicates which arguments to a method involving an interpolated string handler should be passed to that handler.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name of the argument that should be passed to the handler.
+ may be used as the name of the receiver in an instance method.
+
+
+
+ Initializes a new instance of the class.
+
+ The names of the arguments that should be passed to the handler.
+ may be used as the name of the receiver in an instance method.
+
+
+
+ Gets the names of the arguments that should be passed to the handler.
+
+ may be used as the name of the receiver in an instance method.
+
+
+
+ Indicates the attributed type is to be used as an interpolated string handler.
+
+
+
+
+ Reserved to be used by the compiler for tracking metadata.
+ This class should not be used by developers in source code.
+
+
+
+
+ Used to indicate to the compiler that a method should be called
+ in its containing module's initializer.
+
+
+ When one or more valid methods
+ with this attribute are found in a compilation, the compiler will
+ emit a module initializer which calls each of the attributed methods.
+
+ Certain requirements are imposed on any method targeted with this attribute:
+ - The method must be `static`.
+ - The method must be an ordinary member method, as opposed to a property accessor, constructor, local function, etc.
+ - The method must be parameterless.
+ - The method must return `void`.
+ - The method must not be generic or be contained in a generic type.
+ - The method's effective accessibility must be `internal` or `public`.
+
+ The specification for module initializers in the .NET runtime can be found here:
+ https://github.com/dotnet/runtime/blob/main/docs/design/specs/Ecma-335-Augments.md#module-initializer
+
+
+
+
+ Specifies that a type has required members or that a member is required.
+
+
+
+
+ Reserved for use by a compiler for tracking metadata.
+ This attribute should not be used by developers in source code.
+
+
+
+
+ Used to indicate to the compiler that the .locals init flag should not be set in method headers.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class with the specified message.
+
+ An optional message associated with this attribute instance.
+
+
+
+ Returns the optional message associated with this attribute instance.
+
+
+
+
+ Returns the optional URL associated with this attribute instance.
+
+
+
+
+ Types and Methods attributed with StackTraceHidden will be omitted from the stack trace text shown in StackTrace.ToString()
+ and Exception.StackTrace
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Indicates that an API is experimental and it may change in the future.
+
+
+ This attribute allows call sites to be flagged with a diagnostic that indicates that an experimental
+ feature is used. Authors can use this attribute to ship preview features in their assemblies.
+
+
+
+
+ Initializes a new instance of the class,
+ specifying the ID that the compiler will use when reporting a use of the API the attribute applies to.
+
+ The ID that the compiler will use when reporting a use of the API the attribute applies to.
+
+
+
+ Gets the ID that the compiler will use when reporting a use of the API the attribute applies to.
+
+ The unique diagnostic ID.
+
+ The diagnostic ID is shown in build output for warnings and errors.
+ This property represents the unique ID that can be used to suppress the warnings or errors, if needed.
+
+
+
+
+ Gets or sets the URL for corresponding documentation.
+ The API accepts a format string instead of an actual URL, creating a generic URL that includes the diagnostic ID.
+
+ The format string that represents a URL to corresponding documentation.
+ An example format string is https://contoso.com/obsoletion-warnings/{0}.
+
+
+
+ Specifies that the method or property will ensure that the listed field and property members have not-null values.
+
+
+
+
+ Initializes the attribute with a field or property member.
+
+ The field or property member that is promised to be not-null.
+
+
+
+ Initializes the attribute with the list of field and property members.
+
+ The list of field and property members that are promised to be not-null.
+
+
+
+ Gets field or property member names.
+
+
+
+
+ Specifies that the method or property will ensure that the listed field and property
+ members have not-null values when returning with the specified return value condition.
+
+
+
+
+ Initializes the attribute with the specified return value condition and a field or property member.
+
+ The return value condition. If the method returns this value, the associated parameter will not be null.
+ The field or property member that is promised to be not-null.
+
+
+
+ Initializes the attribute with the specified return value condition and list of field and property members.
+
+ The return value condition. If the method returns this value, the associated parameter will not be null.
+ The list of field and property members that are promised to be not-null.
+
+
+
+ Gets the return value condition.
+
+
+
+
+ Gets field or property member names.
+
+
+
+
+ Specifies that this constructor sets all required members for the current type,
+ and callers do not need to set any required members themselves.
+
+
+
+
+ Specifies the syntax used in a string.
+
+
+
+
+ Initializes the with the identifier of the syntax used.
+
+ The syntax identifier.
+
+
+ Initializes the with the identifier of the syntax used.
+ The syntax identifier.
+ Optional arguments associated with the specific syntax employed.
+
+
+ Gets the identifier of the syntax used.
+
+
+ Optional arguments associated with the specific syntax employed.
+
+
+ The syntax identifier for strings containing composite formats for string formatting.
+
+
+ The syntax identifier for strings containing date format specifiers.
+
+
+ The syntax identifier for strings containing date and time format specifiers.
+
+
+ The syntax identifier for strings containing format specifiers.
+
+
+ The syntax identifier for strings containing format specifiers.
+
+
+ The syntax identifier for strings containing JavaScript Object Notation (JSON).
+
+
+ The syntax identifier for strings containing numeric format specifiers.
+
+
+ The syntax identifier for strings containing regular expressions.
+
+
+ The syntax identifier for strings containing time format specifiers.
+
+
+ The syntax identifier for strings containing format specifiers.
+
+
+ The syntax identifier for strings containing URIs.
+
+
+ The syntax identifier for strings containing XML.
+
+
+
+ Used to indicate a byref escapes and is not scoped.
+
+
+
+ There are several cases where the C# compiler treats a as implicitly
+ - where the compiler does not allow the to escape the method.
+
+
+ For example:
+
+ - for instance methods.
+ - parameters that refer to types.
+ - parameters.
+
+
+
+ This attribute is used in those instances where the should be allowed to escape.
+
+
+ Applying this attribute, in any form, has impact on consumers of the applicable API. It is necessary for
+ API authors to understand the lifetime implications of applying this attribute and how it may impact their users.
+
+
+
+
+
diff --git a/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.xml.meta b/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.xml.meta
new file mode 100644
index 0000000..54fe9ec
--- /dev/null
+++ b/Assets/Packages/R3.1.3.0/lib/netstandard2.1/R3.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8d02c8db51f055c4291ff6dd24b0bd28
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0.meta
new file mode 100644
index 0000000..aa00f46
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b14f732c0892285468986cc1f1a7c3cf
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/.signature.p7s b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/.signature.p7s
new file mode 100644
index 0000000..3249330
Binary files /dev/null and b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/.signature.p7s differ
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/Icon.png b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/Icon.png
new file mode 100644
index 0000000..a0f1fdb
Binary files /dev/null and b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/Icon.png differ
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/Icon.png.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/Icon.png.meta
new file mode 100644
index 0000000..a4e57e0
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/Icon.png.meta
@@ -0,0 +1,117 @@
+fileFormatVersion: 2
+guid: 3da43626b65eff34b8a6c405113665d7
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/LICENSE.TXT b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/LICENSE.TXT
new file mode 100644
index 0000000..984713a
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/LICENSE.TXT
@@ -0,0 +1,23 @@
+The MIT License (MIT)
+
+Copyright (c) .NET Foundation and Contributors
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/LICENSE.TXT.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/LICENSE.TXT.meta
new file mode 100644
index 0000000..e19cb1c
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/LICENSE.TXT.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a3d928bc76367c8449875e0b3dc45805
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/System.ComponentModel.Annotations.nuspec b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/System.ComponentModel.Annotations.nuspec
new file mode 100644
index 0000000..b449d58
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/System.ComponentModel.Annotations.nuspec
@@ -0,0 +1,70 @@
+
+
+
+ System.ComponentModel.Annotations
+ 5.0.0
+ System.ComponentModel.Annotations
+ Microsoft
+ microsoft,dotnetframework
+ false
+ MIT
+ https://licenses.nuget.org/MIT
+ Icon.png
+ https://github.com/dotnet/runtime
+ http://go.microsoft.com/fwlink/?LinkID=288859
+ Provides attributes that are used to define metadata for objects used as data sources.
+
+Commonly Used Types:
+System.ComponentModel.DataAnnotations.ValidationResult
+System.ComponentModel.DataAnnotations.IValidatableObject
+System.ComponentModel.DataAnnotations.ValidationAttribute
+System.ComponentModel.DataAnnotations.RequiredAttribute
+System.ComponentModel.DataAnnotations.StringLengthAttribute
+System.ComponentModel.DataAnnotations.DisplayAttribute
+System.ComponentModel.DataAnnotations.RegularExpressionAttribute
+System.ComponentModel.DataAnnotations.DataTypeAttribute
+System.ComponentModel.DataAnnotations.RangeAttribute
+System.ComponentModel.DataAnnotations.KeyAttribute
+
+When using NuGet 3.x this package requires at least version 3.4.
+ https://go.microsoft.com/fwlink/?LinkID=799421
+ © Microsoft Corporation. All rights reserved.
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/System.ComponentModel.Annotations.nuspec.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/System.ComponentModel.Annotations.nuspec.meta
new file mode 100644
index 0000000..f6855b2
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/System.ComponentModel.Annotations.nuspec.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 10f26b7be6f5ffb4490e1918bcbded2e
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/THIRD-PARTY-NOTICES.TXT b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/THIRD-PARTY-NOTICES.TXT
new file mode 100644
index 0000000..111dcf5
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/THIRD-PARTY-NOTICES.TXT
@@ -0,0 +1,884 @@
+.NET Runtime uses third-party libraries or other resources that may be
+distributed under licenses different than the .NET Runtime software.
+
+In the event that we accidentally failed to list a required notice, please
+bring it to our attention. Post an issue or email us:
+
+ dotnet@microsoft.com
+
+The attached notices are provided for information only.
+
+License notice for ASP.NET
+-------------------------------
+
+Copyright (c) .NET Foundation. All rights reserved.
+Licensed under the Apache License, Version 2.0.
+
+Available at
+https://github.com/aspnet/AspNetCore/blob/master/LICENSE.txt
+
+License notice for Slicing-by-8
+-------------------------------
+
+http://sourceforge.net/projects/slicing-by-8/
+
+Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
+
+
+This software program is licensed subject to the BSD License, available at
+http://www.opensource.org/licenses/bsd-license.html.
+
+
+License notice for Unicode data
+-------------------------------
+
+https://www.unicode.org/license.html
+
+Copyright © 1991-2020 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that either
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software, or
+(b) this copyright and permission notice appear in associated
+Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
+
+License notice for Zlib
+-----------------------
+
+https://github.com/madler/zlib
+http://zlib.net/zlib_license.html
+
+/* zlib.h -- interface of the 'zlib' general purpose compression library
+ version 1.2.11, January 15th, 2017
+
+ Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jean-loup Gailly Mark Adler
+ jloup@gzip.org madler@alumni.caltech.edu
+
+*/
+
+License notice for Mono
+-------------------------------
+
+http://www.mono-project.com/docs/about-mono/
+
+Copyright (c) .NET Foundation Contributors
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for International Organization for Standardization
+-----------------------------------------------------------------
+
+Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+License notice for Intel
+------------------------
+
+"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Xamarin and Novell
+-------------------------------------
+
+Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Copyright (c) 2011 Novell, Inc (http://www.novell.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Third party notice for W3C
+--------------------------
+
+"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE
+Status: This license takes effect 13 May, 2015.
+This work is being provided by the copyright holders under the following license.
+License
+By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
+Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications:
+The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
+Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
+Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
+Disclaimers
+THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders."
+
+License notice for Bit Twiddling Hacks
+--------------------------------------
+
+Bit Twiddling Hacks
+
+By Sean Eron Anderson
+seander@cs.stanford.edu
+
+Individually, the code snippets here are in the public domain (unless otherwise
+noted) — feel free to use them however you please. The aggregate collection and
+descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are
+distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and
+without even the implied warranty of merchantability or fitness for a particular
+purpose.
+
+License notice for Brotli
+--------------------------------------
+
+Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+compress_fragment.c:
+Copyright (c) 2011, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+decode_fuzzer.c:
+Copyright (c) 2015 The Chromium Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+
+License notice for Json.NET
+-------------------------------
+
+https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md
+
+The MIT License (MIT)
+
+Copyright (c) 2007 James Newton-King
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for vectorized base64 encoding / decoding
+--------------------------------------------------------
+
+Copyright (c) 2005-2007, Nick Galbreath
+Copyright (c) 2013-2017, Alfred Klomp
+Copyright (c) 2015-2017, Wojciech Mula
+Copyright (c) 2016-2017, Matthieu Darbois
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+- Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for RFC 3492
+---------------------------
+
+The punycode implementation is based on the sample code in RFC 3492
+
+Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to
+others, and derivative works that comment on or otherwise explain it
+or assist in its implementation may be prepared, copied, published
+and distributed, in whole or in part, without restriction of any
+kind, provided that the above copyright notice and this paragraph are
+included on all such copies and derivative works. However, this
+document itself may not be modified in any way, such as by removing
+the copyright notice or references to the Internet Society or other
+Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for
+copyrights defined in the Internet Standards process must be
+followed, or as required to translate it into languages other than
+English.
+
+The limited permissions granted above are perpetual and will not be
+revoked by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an
+"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+License notice for Algorithm from Internet Draft document "UUIDs and GUIDs"
+---------------------------------------------------------------------------
+
+Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
+Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
+Digital Equipment Corporation, Maynard, Mass.
+To anyone who acknowledges that this file is provided "AS IS"
+without any express or implied warranty: permission to use, copy,
+modify, and distribute this file for any purpose is hereby
+granted without fee, provided that the above copyright notices and
+this notice appears in all source code copies, and that none of
+the names of Open Software Foundation, Inc., Hewlett-Packard
+Company, or Digital Equipment Corporation be used in advertising
+or publicity pertaining to distribution of the software without
+specific, written prior permission. Neither Open Software
+Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital Equipment
+Corporation makes any representations about the suitability of
+this software for any purpose.
+
+Copyright(C) The Internet Society 1997. All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others,
+and derivative works that comment on or otherwise explain it or assist in
+its implementation may be prepared, copied, published and distributed, in
+whole or in part, without restriction of any kind, provided that the above
+copyright notice and this paragraph are included on all such copies and
+derivative works.However, this document itself may not be modified in any
+way, such as by removing the copyright notice or references to the Internet
+Society or other Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for copyrights
+defined in the Internet Standards process must be followed, or as required
+to translate it into languages other than English.
+
+The limited permissions granted above are perpetual and will not be revoked
+by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an "AS IS"
+basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
+DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
+RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
+PARTICULAR PURPOSE.
+
+License notice for Algorithm from RFC 4122 -
+A Universally Unique IDentifier (UUID) URN Namespace
+----------------------------------------------------
+
+Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
+Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
+Digital Equipment Corporation, Maynard, Mass.
+Copyright (c) 1998 Microsoft.
+To anyone who acknowledges that this file is provided "AS IS"
+without any express or implied warranty: permission to use, copy,
+modify, and distribute this file for any purpose is hereby
+granted without fee, provided that the above copyright notices and
+this notice appears in all source code copies, and that none of
+the names of Open Software Foundation, Inc., Hewlett-Packard
+Company, Microsoft, or Digital Equipment Corporation be used in
+advertising or publicity pertaining to distribution of the software
+without specific, written prior permission. Neither Open Software
+Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital
+Equipment Corporation makes any representations about the
+suitability of this software for any purpose."
+
+License notice for The LLVM Compiler Infrastructure
+---------------------------------------------------
+
+Developed by:
+
+ LLVM Team
+
+ University of Illinois at Urbana-Champaign
+
+ http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimers.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimers in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the names of the LLVM Team, University of Illinois at
+ Urbana-Champaign, nor the names of its contributors may be used to
+ endorse or promote products derived from this Software without specific
+ prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+License notice for Bob Jenkins
+------------------------------
+
+By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
+code any way you wish, private, educational, or commercial. It's free.
+
+License notice for Greg Parker
+------------------------------
+
+Greg Parker gparker@cs.stanford.edu December 2000
+This code is in the public domain and may be copied or modified without
+permission.
+
+License notice for libunwind based code
+----------------------------------------
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for Printing Floating-Point Numbers (Dragon4)
+------------------------------------------------------------
+
+/******************************************************************************
+ Copyright (c) 2014 Ryan Juckett
+ http://www.ryanjuckett.com/
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source
+ distribution.
+******************************************************************************/
+
+License notice for Printing Floating-point Numbers (Grisu3)
+-----------------------------------------------------------
+
+Copyright 2012 the V8 project authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of Google Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for xxHash
+-------------------------
+
+xxHash Library
+Copyright (c) 2012-2014, Yann Collet
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Berkeley SoftFloat Release 3e
+------------------------------------------------
+
+https://github.com/ucb-bar/berkeley-softfloat-3
+https://github.com/ucb-bar/berkeley-softfloat-3/blob/master/COPYING.txt
+
+License for Berkeley SoftFloat Release 3e
+
+John R. Hauser
+2018 January 20
+
+The following applies to the whole of SoftFloat Release 3e as well as to
+each source file individually.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions, and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Xorshift RNGs
+--------------------------------
+
+George Marsaglia
+2003-07-04
+Journal of Statistical Software
+License: http://creativecommons.org/licenses/by/3.0/
+
+https://www.jstatsoft.org/article/view/v008i14
+https://www.jstatsoft.org/index.php/jss/article/view/v008i14/xorshift.pdf
+
+License notice for Xorshift (Wikipedia)
+---------------------------------------
+
+https://en.wikipedia.org/wiki/Xorshift
+License: https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License
+
+License for fastmod (https://github.com/lemire/fastmod)
+--------------------------------------
+
+ Copyright 2018 Daniel Lemire
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+License notice for The C++ REST SDK
+-----------------------------------
+
+C++ REST SDK
+
+The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for MessagePack-CSharp
+-------------------------------------
+
+MessagePack for C#
+
+MIT License
+
+Copyright (c) 2017 Yoshifumi Kawai
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for lz4net
+-------------------------------------
+
+lz4net
+
+Copyright (c) 2013-2017, Milosz Krajewski
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Nerdbank.Streams
+-----------------------------------
+
+The MIT License (MIT)
+
+Copyright (c) Andrew Arnott
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for RapidJSON
+----------------------------
+
+Tencent is pleased to support the open source community by making RapidJSON available.
+
+Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
+
+Licensed under the MIT License (the "License"); you may not use this file except
+in compliance with the License. You may obtain a copy of the License at
+
+http://opensource.org/licenses/MIT
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for the
+specific language governing permissions and limitations under the License.
+
+License notice for DirectX Math Library
+---------------------------------------
+
+https://github.com/microsoft/DirectXMath/blob/master/LICENSE
+
+ The MIT License (MIT)
+
+Copyright (c) 2011-2020 Microsoft Corp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights to use, copy, modify,
+merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be included in all copies
+or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
+OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for ldap4net
+---------------------------
+
+The MIT License (MIT)
+
+Copyright (c) 2018 Alexander Chermyanin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for vectorized sorting code
+------------------------------------------
+
+MIT License
+
+Copyright (c) 2020 Dan Shechter
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/THIRD-PARTY-NOTICES.TXT.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/THIRD-PARTY-NOTICES.TXT.meta
new file mode 100644
index 0000000..51f64af
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/THIRD-PARTY-NOTICES.TXT.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1210e546f1c245146b6acf630a422d43
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib.meta
new file mode 100644
index 0000000..8b4bd0a
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0323abfdc619c2c4cb14438a693bca22
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1.meta
new file mode 100644
index 0000000..2624bc5
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e78cc7d6286f25f42a4d8e265064fb0b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.dll b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.dll
new file mode 100644
index 0000000..a5adedd
Binary files /dev/null and b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.dll differ
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.dll.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.dll.meta
new file mode 100644
index 0000000..d8ea633
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.dll.meta
@@ -0,0 +1,29 @@
+fileFormatVersion: 2
+guid: 0c6ee328192f3894ba57617dc1e5dae3
+labels:
+- NuGetForUnity
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 3
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ Any:
+ enabled: 1
+ settings: {}
+ Editor:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.xml b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.xml
new file mode 100644
index 0000000..9b05806
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.xml
@@ -0,0 +1,1210 @@
+
+
+
+ System.ComponentModel.Annotations
+
+
+
+ Extends the metadata information for a class by adding attributes and property information that is defined in an associated class.
+
+
+ Initializes a new instance of the class by using the specified type.
+ The type for which the metadata provider is created.
+
+
+ Initializes a new instance of the class by using the specified metadata provider type and associated type.
+ The type for which the metadata provider is created.
+ The associated type that contains the metadata.
+ The value of is .
+
+
+ Gets a type descriptor for the specified type and object.
+ The type of object to retrieve the type descriptor for.
+ An instance of the type.
+ The descriptor that provides metadata for the type.
+
+
+ Specifies that an entity member represents a data relationship, such as a foreign key relationship.
+
+
+ Initializes a new instance of the class.
+ The name of the association.
+ A comma-separated list of the property names of the key values on the side of the association.
+ A comma-separated list of the property names of the key values on the side of the association.
+
+
+ Gets or sets a value that indicates whether the association member represents a foreign key.
+
+ if the association represents a foreign key; otherwise, .
+
+
+ Gets the name of the association.
+ The name of the association.
+
+
+ Gets the property names of the key values on the OtherKey side of the association.
+ A comma-separated list of the property names that represent the key values on the OtherKey side of the association.
+
+
+ Gets a collection of individual key members that are specified in the property.
+ A collection of individual key members that are specified in the property.
+
+
+ Gets the property names of the key values on the ThisKey side of the association.
+ A comma-separated list of the property names that represent the key values on the ThisKey side of the association.
+
+
+ Gets a collection of individual key members that are specified in the property.
+ A collection of individual key members that are specified in the property.
+
+
+ Provides an attribute that compares two properties.
+
+
+ Initializes a new instance of the class.
+ The property to compare with the current property.
+
+
+ Applies formatting to an error message, based on the data field where the error occurred.
+ The name of the field that caused the validation failure.
+ The formatted error message.
+
+
+ Determines whether a specified object is valid.
+ The object to validate.
+ An object that contains information about the validation request.
+
+ if is valid; otherwise, .
+
+
+ Gets the property to compare with the current property.
+ The other property.
+
+
+ Gets the display name of the other property.
+ The display name of the other property.
+
+
+ Gets a value that indicates whether the attribute requires validation context.
+
+ if the attribute requires validation context; otherwise, .
+
+
+ Specifies that a property participates in optimistic concurrency checks.
+
+
+ Initializes a new instance of the class.
+
+
+ Specifies that a data field value is a credit card number.
+
+
+ Initializes a new instance of the class.
+
+
+ Determines whether the specified credit card number is valid.
+ The value to validate.
+
+ if the credit card number is valid; otherwise, .
+
+
+ Specifies a custom validation method that is used to validate a property or class instance.
+
+
+ Initializes a new instance of the class.
+ The type that contains the method that performs custom validation.
+ The method that performs custom validation.
+
+
+ Formats a validation error message.
+ The name to include in the formatted message.
+ The current attribute is malformed.
+ An instance of the formatted error message.
+
+
+ Gets the validation method.
+ The name of the validation method.
+
+
+ Gets the type that performs custom validation.
+ The type that performs custom validation.
+
+
+ Represents an enumeration of the data types associated with data fields and parameters.
+
+
+ Represents a credit card number.
+
+
+ Represents a currency value.
+
+
+ Represents a custom data type.
+
+
+ Represents a date value.
+
+
+ Represents an instant in time, expressed as a date and time of day.
+
+
+ Represents a continuous time during which an object exists.
+
+
+ Represents an email address.
+
+
+ Represents an HTML file.
+
+
+ Represents a URL to an image.
+
+
+ Represents multi-line text.
+
+
+ Represent a password value.
+
+
+ Represents a phone number value.
+
+
+ Represents a postal code.
+
+
+ Represents text that is displayed.
+
+
+ Represents a time value.
+
+
+ Represents file upload data type.
+
+
+ Represents a URL value.
+
+
+ Specifies the name of an additional type to associate with a data field.
+
+
+ Initializes a new instance of the class by using the specified type name.
+ The name of the type to associate with the data field.
+
+
+ Initializes a new instance of the class by using the specified field template name.
+ The name of the custom field template to associate with the data field.
+
+ is or an empty string ("").
+
+
+ Returns the name of the type that is associated with the data field.
+ The current attribute is ill-formed.
+ The name of the type associated with the data field.
+
+
+ Checks that the value of the data field is valid.
+ The data field value to validate.
+ The current attribute is ill-formed.
+
+ always.
+
+
+ Gets the name of custom field template that is associated with the data field.
+ The name of the custom field template that is associated with the data field.
+
+
+ Gets the type that is associated with the data field.
+ One of the values.
+
+
+ Gets a data-field display format.
+ The data-field display format.
+
+
+ Provides a general-purpose attribute that lets you specify localizable strings for types and members of entity partial classes.
+
+
+ Initializes a new instance of the class.
+
+
+ Returns the value of the property.
+ The value of if the property has been initialized; otherwise, .
+
+
+ Returns a value that indicates whether UI should be generated automatically in order to display filtering for this field.
+ The value of if the property has been initialized; otherwise, .
+
+
+ Returns the value of the property.
+ The property and the property are initialized, but a public static property that has a name that matches the value could not be found for the property.
+ The localized description, if the has been specified and the property represents a resource key; otherwise, the non-localized value of the property.
+
+
+ Returns the value of the property.
+ Both the property and properties were set, but a public static property with a name matching the value couldn't be found on the .
+ A value that will be used for grouping fields in the UI, if has been initialized; otherwise, . If the property has been specified and the property represents a resource key, a localized string is returned; otherwise, a non-localized string is returned.
+
+
+ Returns a value that is used for field display in the UI.
+ The property and the property are initialized, but a public static property that has a name that matches the value could not be found for the property.
+ The localized string for the property, if the property has been specified and the property represents a resource key; otherwise, the non-localized value of the property.
+
+
+ Returns the value of the property.
+ The value of the property, if it has been set; otherwise, .
+
+
+ Returns the value of the property.
+ Both the property and properties were set, but a public static property with a name matching the value couldn't be found on the .
+ The localized string for the property if the property has been specified and if the property represents a resource key; otherwise, the non-localized value of the property.
+
+
+ Returns the value of the property.
+ Both the property and properties were set,
+but a public static property with a name matching the value couldn't be found on the .
+ The localized string for the property if the property has been specified and if the property represents a resource key; otherwise, the non-localized value of the value property.
+
+
+ Gets or sets a value that indicates whether UI should be generated automatically in order to display this field.
+ An attempt was made to get the property value before it was set.
+
+ if UI should be generated automatically to display this field; otherwise, .
+
+
+ Gets or sets a value that indicates whether filtering UI is automatically displayed for this field.
+ An attempt was made to get the property value before it was set.
+
+ if UI should be generated automatically to display filtering for this field; otherwise, .
+
+
+ Gets or sets a value that is used to display a description in the UI.
+ The value that is used to display a description in the UI.
+
+
+ Gets or sets a value that is used to group fields in the UI.
+ A value that is used to group fields in the UI.
+
+
+ Gets or sets a value that is used for display in the UI.
+ A value that is used for display in the UI.
+
+
+ Gets or sets the order weight of the column.
+ The getter of this property has been invoked but its value has not been explicitly set using the setter.
+ The order weight of the column.
+
+
+ Gets or sets a value that will be used to set the watermark for prompts in the UI.
+ A value that will be used to display a watermark in the UI.
+
+
+ Gets or sets the type that contains the resources for the , , , and properties.
+ The type of the resource that contains the , , , and properties.
+
+
+ Gets or sets a value that is used for the grid column label.
+ A value that is for the grid column label.
+
+
+ Specifies the column that is displayed in the referred table as a foreign-key column.
+
+
+ Initializes a new instance of the class by using the specified column.
+ The name of the column to use as the display column.
+
+
+ Initializes a new instance of the class by using the specified display and sort columns.
+ The name of the column to use as the display column.
+ The name of the column to use for sorting.
+
+
+ Initializes a new instance of the class by using the specified display column, and the specified sort column and sort order.
+ The name of the column to use as the display column.
+ The name of the column to use for sorting.
+
+ to sort in descending order; otherwise, . The default is .
+
+
+ Gets the name of the column to use as the display field.
+ The name of the display column.
+
+
+ Gets the name of the column to use for sorting.
+ The name of the sort column.
+
+
+ Gets a value that indicates whether to sort in descending or ascending order.
+
+ if the column will be sorted in descending order; otherwise, .
+
+
+ Specifies how data fields are displayed and formatted by ASP.NET Dynamic Data.
+
+
+ Initializes a new instance of the class.
+
+
+ Returns the UI display string for .
+ Both the and properties are set, but a public static property with a name matching the value cannot be found on the .
+
+ The UI display string.
+ If has not been specified, the value of is returned.
+ If has been specified and represents a resource key within that resource type, the localized value is returned.
+ If and have not been set, returns .
+
+
+
+ Gets or sets a value that indicates whether the formatting string that is specified by the property is applied to the field value when the data field is in edit mode.
+
+ if the formatting string applies to the field value in edit mode; otherwise, . The default is .
+
+
+ Gets or sets a value that indicates whether empty string values ("") are automatically converted to when the data field is updated in the data source.
+
+ if empty string values are automatically converted to ; otherwise, . The default is .
+
+
+ Gets or sets the display format for the field value.
+ A formatting string that specifies the display format for the value of the data field. The default is an empty string (""), which indicates that no special formatting is applied to the field value.
+
+
+ Gets or sets a value that indicates whether the field should be HTML-encoded.
+
+ if the field should be HTML-encoded; otherwise, .
+
+
+ Gets or sets the text that is displayed for a field when the field's value is .
+ The text that is displayed for a field when the field's value is . The default is an empty string (""), which indicates that this property is not set.
+
+
+ Gets or sets the that contains the resources for .
+
+Using along with , allows the method to return localized values.
+
+
+ Indicates whether a data field is editable.
+
+
+ Initializes a new instance of the class.
+
+ to specify that field is editable; otherwise, .
+
+
+ Gets a value that indicates whether a field is editable.
+
+ if the field is editable; otherwise, .
+
+
+ Gets or sets a value that indicates whether an initial value is enabled.
+
+ if an initial value is enabled; otherwise, .
+
+
+ Validates an email address.
+
+
+ Initializes a new instance of the class.
+
+
+ Determines whether the specified value matches the pattern of a valid email address.
+ The value to validate.
+
+ if the specified value is valid or ; otherwise, .
+
+
+ Enables a .NET Framework enumeration to be mapped to a data column.
+
+
+ Initializes a new instance of the class.
+ The type of the enumeration.
+
+
+ Checks that the value of the data field is valid.
+ The data field value to validate.
+
+ if the data field value is valid; otherwise, .
+
+
+ Gets or sets the enumeration type.
+ The enumeration type.
+
+
+ Validates file name extensions.
+
+
+ Initializes a new instance of the class.
+
+
+ Applies formatting to an error message, based on the data field where the error occurred.
+ The name of the field that caused the validation failure.
+ The formatted error message.
+
+
+ Checks that the specified file name extension or extensions is valid.
+ A comma delimited list of valid file extensions.
+
+ if the file name extension is valid; otherwise, .
+
+
+ Gets or sets the file name extensions.
+ The file name extensions, or the default file extensions (".png", ".jpg", ".jpeg", and ".gif") if the property is not set.
+
+
+ Represents an attribute that is used to specify the filtering behavior for a column.
+
+
+ Initializes a new instance of the class by using the filter UI hint.
+ The name of the control to use for filtering.
+
+
+ Initializes a new instance of the class by using the filter UI hint and presentation layer name.
+ The name of the control to use for filtering.
+ The name of the presentation layer that supports this control.
+
+
+ Initializes a new instance of the class by using the filter UI hint, presentation layer name, and control parameters.
+ The name of the control to use for filtering.
+ The name of the presentation layer that supports this control.
+ The list of parameters for the control.
+
+
+ Returns a value that indicates whether this attribute instance is equal to a specified object.
+ The object to compare with this attribute instance.
+
+ if the passed object is equal to this attribute instance; otherwise, .
+
+
+ Returns the hash code for this attribute instance.
+ This attribute instance hash code.
+
+
+ Gets the name/value pairs that are used as parameters in the control's constructor.
+ The current attribute is ill-formed.
+ The name/value pairs that are used as parameters in the control's constructor.
+
+
+ Gets the name of the control to use for filtering.
+ The name of the control to use for filtering.
+
+
+ Gets the name of the presentation layer that supports this control.
+ The name of the presentation layer that supports this control.
+
+
+ Provides a way for an object to be validated.
+
+
+ Determines whether the specified object is valid.
+ The validation context.
+ A collection that holds failed-validation information.
+
+
+ Denotes one or more properties that uniquely identify an entity.
+
+
+ Initializes a new instance of the class.
+
+
+ Specifies the maximum length of array or string data allowed in a property.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class based on the parameter.
+ The maximum allowable length of array or string data.
+
+
+ Applies formatting to a specified error message.
+ The name to include in the formatted string.
+ A localized string to describe the maximum acceptable length.
+
+
+ Determines whether a specified object is valid.
+ The object to validate.
+ Length is zero or less than negative one.
+
+ if the value is null, or if the value is less than or equal to the specified maximum length; otherwise, .
+
+
+ Gets the maximum allowable length of the array or string data.
+ The maximum allowable length of the array or string data.
+
+
+ Specifies the metadata class to associate with a data model class.
+
+
+ Initializes a new instance of the class.
+ The metadata class to reference.
+
+ is .
+
+
+ Gets the metadata class that is associated with a data-model partial class.
+ The type value that represents the metadata class.
+
+
+ Specifies the minimum length of array or string data allowed in a property.
+
+
+ Initializes a new instance of the class.
+ The length of the array or string data.
+
+
+ Applies formatting to a specified error message.
+ The name to include in the formatted string.
+ A localized string to describe the minimum acceptable length.
+
+
+ Determines whether a specified object is valid.
+ The object to validate.
+ Length is less than zero.
+
+ if the specified object is valid; otherwise, .
+
+
+ Gets or sets the minimum allowable length of the array or string data.
+ The minimum allowable length of the array or string data.
+
+
+ Specifies that a data field value is a well-formed phone number.
+
+
+ Initializes a new instance of the class.
+
+
+ Determines whether the specified phone number is in a valid phone number format.
+ The value to validate.
+
+ if the phone number is valid; otherwise, .
+
+
+ Specifies the numeric range constraints for the value of a data field.
+
+
+ Initializes a new instance of the class by using the specified minimum and maximum values.
+ Specifies the minimum value allowed for the data field value.
+ Specifies the maximum value allowed for the data field value.
+
+
+ Initializes a new instance of the class by using the specified minimum and maximum values.
+ Specifies the minimum value allowed for the data field value.
+ Specifies the maximum value allowed for the data field value.
+
+
+ Initializes a new instance of the class by using the specified minimum and maximum values and the specific type.
+ Specifies the type of the object to test.
+ Specifies the minimum value allowed for the data field value.
+ Specifies the maximum value allowed for the data field value.
+
+ is .
+
+
+ Formats the error message that is displayed when range validation fails.
+ The name of the field that caused the validation failure.
+ The current attribute is ill-formed.
+ The formatted error message.
+
+
+ Checks that the value of the data field is in the specified range.
+ The data field value to validate.
+ The data field value was outside the allowed range.
+ The current attribute is ill-formed.
+
+ if the specified value is in the range; otherwise, .
+
+
+ Gets or sets a value that determines whether any conversions of the value being validated to as set by the type parameter of the constructor use the invariant culture or the current culture.
+
+ to use the invariant culture for any conversions; to use the culture that is current at the time of the validation.
+
+
+ Gets the maximum allowed field value.
+ The maximum value that is allowed for the data field.
+
+
+ Gets the minimum allowed field value.
+ The minimum value that is allowed for the data field.
+
+
+ Gets the type of the data field whose value must be validated.
+ The type of the data field whose value must be validated.
+
+
+ Gets or sets a value that determines whether string values for and are parsed using the invariant culture rather than the current culture.
+
+
+ Specifies that a data field value in ASP.NET Dynamic Data must match the specified regular expression.
+
+
+ Initializes a new instance of the class.
+ The regular expression that is used to validate the data field value.
+
+ is .
+
+
+ Formats the error message to display if the regular expression validation fails.
+ The name of the field that caused the validation failure.
+ The current attribute is ill-formed.
+ The is not a valid regular expression.
+ The formatted error message.
+
+
+ Checks whether the value entered by the user matches the regular expression pattern.
+ The data field value to validate.
+ The data field value did not match the regular expression pattern.
+ The current attribute is ill-formed.
+
+ is not a valid regular expression.
+
+ if validation is successful; otherwise, .
+
+
+ Gets or sets the amount of time in milliseconds to execute a single matching operation before the operation times out.
+ The amount of time in milliseconds to execute a single matching operation.
+
+
+ Gets the regular expression pattern.
+ The pattern to match.
+
+
+ Specifies that a data field value is required.
+
+
+ Initializes a new instance of the class.
+
+
+ Checks that the value of the required data field is not empty.
+ The data field value to validate.
+ The data field value was .
+
+ if validation is successful; otherwise, .
+
+
+ Gets or sets a value that indicates whether an empty string is allowed.
+
+ if an empty string is allowed; otherwise, . The default value is .
+
+
+ Specifies whether a class or data column uses scaffolding.
+
+
+ Initializes a new instance of using the property.
+ The value that specifies whether scaffolding is enabled.
+
+
+ Gets or sets the value that specifies whether scaffolding is enabled.
+
+ if scaffolding is enabled; otherwise, .
+
+
+ Represents the database column that a property is mapped to.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class.
+ The name of the column the property is mapped to.
+
+
+ Gets the name of the column the property is mapped to.
+ The name of the column the property is mapped to.
+
+
+ Gets or sets the zero-based order of the column the property is mapped to.
+ The order of the column.
+
+
+ Gets or sets the database provider specific data type of the column the property is mapped to.
+ The database provider specific data type of the column the property is mapped to.
+
+
+ Denotes that the class is a complex type. Complex types are non-scalar properties of entity types that enable scalar properties to be organized within entities. Complex types do not have keys and cannot be managed by the Entity Framework apart from the parent object.
+
+
+ Initializes a new instance of the class.
+
+
+ Specifies how the database generates values for a property.
+
+
+ Initializes a new instance of the class.
+ The database generated option.
+
+
+ Gets or sets the pattern used to generate values for the property in the database.
+ The database generated option.
+
+
+ Represents the pattern used to generate values for a property in the database.
+
+
+ The database generates a value when a row is inserted or updated.
+
+
+ The database generates a value when a row is inserted.
+
+
+ The database does not generate values.
+
+
+ Denotes a property used as a foreign key in a relationship.
+
+
+ Initializes a new instance of the class.
+ The name of the associated navigation property, or the name of one or more associated foreign keys.
+
+
+ Gets the name of the associated navigation property or of the associated foreign keys.
+ The name of the associated navigation property or of the associated foreign keys.
+
+
+ Specifies the inverse of a navigation property that represents the other end of the same relationship.
+
+
+ Initializes a new instance of the class using the specified property.
+ The navigation property representing the other end of the same relationship.
+
+
+ Gets the navigation property representing the other end of the same relationship.
+ The property of the attribute.
+
+
+ Denotes that a property or class should be excluded from database mapping.
+
+
+ Initializes a new instance of the class.
+
+
+ Specifies the database table that a class is mapped to.
+
+
+ Initializes a new instance of the class using the specified name of the table.
+ The name of the table the class is mapped to.
+
+
+ Gets the name of the table the class is mapped to.
+ The name of the table the class is mapped to.
+
+
+ Gets or sets the schema of the table the class is mapped to.
+ The schema of the table the class is mapped to.
+
+
+ Specifies the minimum and maximum length of characters that are allowed in a data field.
+
+
+ Initializes a new instance of the class by using a specified maximum length.
+ The maximum length of a string.
+
+
+ Applies formatting to a specified error message.
+ The name of the field that caused the validation failure.
+
+ is negative.
+
+ -or-
+
+ is less than .
+ The current attribute is ill-formed.
+ The formatted error message.
+
+
+ Determines whether a specified object is valid.
+ The object to validate.
+
+ is negative.
+
+ -or-
+
+ is less than .
+ The current attribute is ill-formed.
+
+ if the specified object is valid; otherwise, .
+
+
+ Gets or sets the maximum length of a string.
+ The maximum length a string.
+
+
+ Gets or sets the minimum length of a string.
+ The minimum length of a string.
+
+
+ Specifies the data type of the column as a row version.
+
+
+ Initializes a new instance of the class.
+
+
+ Specifies the template or user control that Dynamic Data uses to display a data field.
+
+
+ Initializes a new instance of the class by using a specified user control.
+ The user control to use to display the data field.
+
+
+ Initializes a new instance of the class using the specified user control and specified presentation layer.
+ The user control (field template) to use to display the data field.
+ The presentation layer that uses the class. Can be set to "HTML", "Silverlight", "WPF", or "WinForms".
+
+
+ Initializes a new instance of the class by using the specified user control, presentation layer, and control parameters.
+ The user control (field template) to use to display the data field.
+ The presentation layer that uses the class. Can be set to "HTML", "Silverlight", "WPF", or "WinForms".
+ The object to use to retrieve values from any data sources.
+
+ is or it is a constraint key.
+
+ -or-
+
+ The value of is not a string.
+
+
+ Gets a value that indicates whether this instance is equal to the specified object.
+ The object to compare with this instance, or a reference.
+
+ if the specified object is equal to this instance; otherwise, .
+
+
+ Gets the hash code for the current instance of the attribute.
+ The attribute instance hash code.
+
+
+ Gets or sets the object to use to retrieve values from any data source.
+ The current attribute is ill-formed.
+ A collection of key/value pairs.
+
+
+ Gets or sets the presentation layer that uses the class.
+ The presentation layer that is used by this class.
+
+
+ Gets or sets the name of the field template to use to display the data field.
+ The name of the field template that displays the data field.
+
+
+ Provides URL validation.
+
+
+ Initializes a new instance of the class.
+
+
+ Validates the format of the specified URL.
+ The URL to validate.
+
+ if the URL format is valid or ; otherwise, .
+
+
+ Serves as the base class for all validation attributes.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class by using the function that enables access to validation resources.
+ The function that enables access to validation resources.
+
+ is .
+
+
+ Initializes a new instance of the class by using the error message to associate with a validation control.
+ The error message to associate with a validation control.
+
+
+ Applies formatting to an error message, based on the data field where the error occurred.
+ The name to include in the formatted message.
+ The current attribute is malformed.
+ An instance of the formatted error message.
+
+
+ Checks whether the specified value is valid with respect to the current validation attribute.
+ The value to validate.
+ The context information about the validation operation.
+ The current attribute is malformed.
+
+ is .
+
+ has not been implemented by a derived class.
+ An instance of the class.
+
+
+ Determines whether the specified value of the object is valid.
+ The value of the object to validate.
+ The current attribute is malformed.
+ Neither overload of has been implemented by a derived class.
+
+ if the specified value is valid; otherwise, .
+
+
+ Validates the specified value with respect to the current validation attribute.
+ The value to validate.
+ The context information about the validation operation.
+ The current attribute is malformed.
+
+ has not been implemented by a derived class.
+ An instance of the class.
+
+
+ Validates the specified object.
+ The object to validate.
+ The object that describes the context where the validation checks are performed. This parameter cannot be .
+ Validation failed.
+ The current attribute is malformed.
+
+ has not been implemented by a derived class.
+
+
+ Validates the specified object.
+ The value of the object to validate.
+ The name to include in the error message.
+
+ is not valid.
+ The current attribute is malformed.
+
+
+ Gets or sets an error message to associate with a validation control if validation fails.
+ The error message that is associated with the validation control.
+
+
+ Gets or sets the error message resource name to use in order to look up the property value if validation fails.
+ The error message resource that is associated with a validation control.
+
+
+ Gets or sets the resource type to use for error-message lookup if validation fails.
+ The type of error message that is associated with a validation control.
+
+
+ Gets the localized validation error message.
+ The localized validation error message.
+
+
+ Gets a value that indicates whether the attribute requires validation context.
+
+ if the attribute requires validation context; otherwise, .
+
+
+ Describes the context in which a validation check is performed.
+
+
+ Initializes a new instance of the class using the specified object instance.
+ The object instance to validate. It cannot be .
+
+ is .
+
+
+ Initializes a new instance of the class using the specified object and an optional property bag.
+ The object instance to validate. It cannot be
+ An optional set of key/value pairs to make available to consumers.
+
+ is .
+
+
+ Initializes a new instance of the class using the service provider and dictionary of service consumers.
+ The object to validate. This parameter is required.
+ The object that implements the interface. This parameter is optional.
+ A dictionary of key/value pairs to make available to the service consumers. This parameter is optional.
+
+ is .
+
+
+ Returns the service that provides custom validation.
+ The type of the service to use for validation.
+ An instance of the service, or if the service is not available.
+
+
+ Initializes the using a service provider that can return service instances by type when is called.
+ The service provider.
+
+
+ Gets or sets the name of the member to validate.
+ The name of the member to validate.
+
+
+ Gets the dictionary of key/value pairs that is associated with this context.
+ The dictionary of the key/value pairs for this context.
+
+
+ Gets or sets the name of the member to validate.
+ The name of the member to validate.
+
+
+ Gets the object to validate.
+ The object to validate.
+
+
+ Gets the type of the object to validate.
+ The type of the object to validate.
+
+
+ Represents the exception that occurs during validation of a data field when the class is used.
+
+
+ Initializes a new instance of the class using an error message generated by the system.
+
+
+ Initializes a new instance of the class by using a validation result, a validation attribute, and the value of the current exception.
+ The list of validation results.
+ The attribute that caused the current exception.
+ The value of the object that caused the attribute to trigger the validation error.
+
+
+ Initializes a new instance of the class using serialized data.
+ The object that holds the serialized data.
+ Context information about the source or destination of the serialized object.
+
+
+ Initializes a new instance of the class using a specified error message.
+ A specified message that states the error.
+
+
+ Initializes a new instance of the class using a specified error message, a validation attribute, and the value of the current exception.
+ The message that states the error.
+ The attribute that caused the current exception.
+ The value of the object that caused the attribute to trigger validation error.
+
+
+ Initializes a new instance of the class using a specified error message and a collection of inner exception instances.
+ The error message.
+ The collection of validation exceptions.
+
+
+ Gets the instance of the class that triggered this exception.
+ An instance of the validation attribute type that triggered this exception.
+
+
+ Gets the instance that describes the validation error.
+ The instance that describes the validation error.
+
+
+ Gets the value of the object that causes the class to trigger this exception.
+ The value of the object that caused the class to trigger the validation error.
+
+
+ Represents a container for the results of a validation request.
+
+
+ Represents the success of the validation ( if validation was successful; otherwise, ).
+
+
+ Initializes a new instance of the class by using a object.
+ The validation result object.
+
+ is .
+
+
+ Initializes a new instance of the class by using an error message.
+ The error message.
+
+
+ Initializes a new instance of the class by using an error message and a list of members that have validation errors.
+ The error message.
+ The list of member names that have validation errors.
+
+
+ Returns a string representation of the current validation result.
+ The current validation result.
+
+
+ Gets the error message for the validation.
+ The error message for the validation.
+
+
+ Gets the collection of member names that indicate which fields have validation errors.
+ The collection of member names that indicate which fields have validation errors.
+
+
+ Defines a helper class that can be used to validate objects, properties, and methods when it is included in their associated attributes.
+
+
+ Determines whether the specified object is valid using the validation context and validation results collection.
+ The object to validate.
+ The context that describes the object to validate.
+ A collection to hold each failed validation.
+
+ is .
+
+ doesn't match the on .
+
+ if the object validates; otherwise, .
+
+
+ Determines whether the specified object is valid using the validation context, validation results collection, and a value that specifies whether to validate all properties.
+ The object to validate.
+ The context that describes the object to validate.
+ A collection to hold each failed validation.
+
+ to validate all properties; if , only required attributes are validated.
+
+ is .
+
+ doesn't match theon .
+
+ if the object validates; otherwise, .
+
+
+ Validates the property.
+ The value to validate.
+ The context that describes the property to validate.
+ A collection to hold each failed validation.
+
+ cannot be assigned to the property.
+
+ -or-
+
+ is .
+ The property of is not a valid property.
+
+ if the property validates; otherwise, .
+
+
+ Returns a value that indicates whether the specified value is valid with the specified attributes.
+ The value to validate.
+ The context that describes the object to validate.
+ A collection to hold failed validations.
+ The validation attributes.
+
+ if the object validates; otherwise, .
+
+
+ Determines whether the specified object is valid using the validation context.
+ The object to validate.
+ The context that describes the object to validate.
+ The object is not valid.
+
+ is .
+
+ doesn't match the on .
+
+
+ Determines whether the specified object is valid using the validation context, and a value that specifies whether to validate all properties.
+ The object to validate.
+ The context that describes the object to validate.
+
+ to validate all properties; otherwise, .
+
+ is not valid.
+
+ is .
+
+ doesn't match the on .
+
+
+ Validates the property.
+ The value to validate.
+ The context that describes the property to validate.
+
+ cannot be assigned to the property.
+ The parameter is not valid.
+
+
+ Validates the specified attributes.
+ The value to validate.
+ The context that describes the object to validate.
+ The validation attributes.
+ The parameter is .
+ The parameter does not validate with the parameter.
+
+
+
\ No newline at end of file
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.xml.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.xml.meta
new file mode 100644
index 0000000..8198f27
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/lib/netstandard2.1/System.ComponentModel.Annotations.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: c3c99a7c2b5ab104a9ad1558684218ee
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/useSharedDesignerContext.txt b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/useSharedDesignerContext.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/useSharedDesignerContext.txt.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/useSharedDesignerContext.txt.meta
new file mode 100644
index 0000000..db8f261
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/useSharedDesignerContext.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 725ca898bfa3d5841a3a1874e2519d64
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/version.txt b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/version.txt
new file mode 100644
index 0000000..0a6d216
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/version.txt
@@ -0,0 +1 @@
+cf258a14b70ad9069470a108f13765e0e5988f51
diff --git a/Assets/Packages/System.ComponentModel.Annotations.5.0.0/version.txt.meta b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/version.txt.meta
new file mode 100644
index 0000000..b1d2cf5
--- /dev/null
+++ b/Assets/Packages/System.ComponentModel.Annotations.5.0.0/version.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b274cda1d83000348b1c3f3be2743b57
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0.meta
new file mode 100644
index 0000000..b934e60
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: be3797ca309f19d468d77d06cb25181c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/.signature.p7s b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/.signature.p7s
new file mode 100644
index 0000000..cb60d89
Binary files /dev/null and b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/.signature.p7s differ
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/Icon.png b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/Icon.png
new file mode 100644
index 0000000..a0f1fdb
Binary files /dev/null and b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/Icon.png differ
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/Icon.png.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/Icon.png.meta
new file mode 100644
index 0000000..235fbfe
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/Icon.png.meta
@@ -0,0 +1,117 @@
+fileFormatVersion: 2
+guid: ffdc32e5f7003cc4b9fa9fac66513960
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/PACKAGE.md b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/PACKAGE.md
new file mode 100644
index 0000000..ba003b0
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/PACKAGE.md
@@ -0,0 +1,17 @@
+## About
+
+Provides the System.Runtime.CompilerServices.Unsafe class, which provides generic, low-level functionality for manipulating pointers and managed byrefs.
+
+## Main Types
+
+The main types provided by this library are:
+
+- System.Runtime.CompilerServices.Unsafe
+
+## Additional Documentation
+
+- API reference can be found in: https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.unsafe
+
+## License
+
+System.Runtime.CompilerServices.Unsafe is released as open source under the [MIT license](https://licenses.nuget.org/MIT).
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/PACKAGE.md.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/PACKAGE.md.meta
new file mode 100644
index 0000000..b8a226c
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/PACKAGE.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: fbc2821334272b44fb357bcbea8e4d46
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/System.Runtime.CompilerServices.Unsafe.nuspec b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/System.Runtime.CompilerServices.Unsafe.nuspec
new file mode 100644
index 0000000..8b9423b
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/System.Runtime.CompilerServices.Unsafe.nuspec
@@ -0,0 +1,29 @@
+
+
+
+ System.Runtime.CompilerServices.Unsafe
+ 6.1.0
+ Microsoft
+ true
+ MIT
+ https://licenses.nuget.org/MIT
+ Icon.png
+ PACKAGE.md
+ https://github.com/dotnet/maintenance-packages
+ Provides the System.Runtime.CompilerServices.Unsafe class, which provides generic, low-level functionality for manipulating pointers.
+
+Commonly Used Types:
+System.Runtime.CompilerServices.Unsafe
+ © Microsoft Corporation. All rights reserved.
+ true
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/System.Runtime.CompilerServices.Unsafe.nuspec.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/System.Runtime.CompilerServices.Unsafe.nuspec.meta
new file mode 100644
index 0000000..29323bd
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/System.Runtime.CompilerServices.Unsafe.nuspec.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4314ddc3fc0929b4580f654314b693c4
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive.meta
new file mode 100644
index 0000000..9b18e7a
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ed2be6cf9e024fd49ab947b7f4858f8e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net461.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net461.meta
new file mode 100644
index 0000000..507807b
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net461.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 37ceac7e7a2dab240a50931a86982e0c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets
new file mode 100644
index 0000000..84d8bef
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets.meta
new file mode 100644
index 0000000..ae9688c
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: dcfeaa69ceadcc94ab683add8a3e0ad5
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net462.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net462.meta
new file mode 100644
index 0000000..ad83b99
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net462.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3977bc2dcd738ab41a8b8b1578c354a5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net462/_._ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net462/_._
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net462/_._.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net462/_._.meta
new file mode 100644
index 0000000..af2ba9a
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net462/_._.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 10330418c18522449b0d0bfb0e6a0df5
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net6.0.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net6.0.meta
new file mode 100644
index 0000000..fa4d4bf
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net6.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 086e43d31ca22f04e8dbbc14f97d62a5
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net6.0/_._ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net6.0/_._
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net6.0/_._.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net6.0/_._.meta
new file mode 100644
index 0000000..8f6441b
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/net6.0/_._.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 094c826c3c5ed3c4f902f0957f9a1af0
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/netcoreapp2.0.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/netcoreapp2.0.meta
new file mode 100644
index 0000000..e66ac9e
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/netcoreapp2.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8cd29a19145ba014b9a9c56f6af6c68b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets
new file mode 100644
index 0000000..bd7830f
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets.meta
new file mode 100644
index 0000000..50a572d
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d889381e48770b141b2e3edfb3cfd3f4
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib.meta
new file mode 100644
index 0000000..bd8290a
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 27918f27292bfa64e808450d9fd4a979
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0.meta
new file mode 100644
index 0000000..45de104
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6dc0fcd25e68748478a42d5416bf69fe
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll
new file mode 100644
index 0000000..4faa705
Binary files /dev/null and b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll differ
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll.meta
new file mode 100644
index 0000000..b695270
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll.meta
@@ -0,0 +1,29 @@
+fileFormatVersion: 2
+guid: 548f10384e080334b9bcc679077bf90c
+labels:
+- NuGetForUnity
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 3
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ Any:
+ enabled: 1
+ settings: {}
+ Editor:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml
new file mode 100644
index 0000000..7acab80
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml
@@ -0,0 +1,353 @@
+
+
+
+ System.Runtime.CompilerServices.Unsafe
+
+
+
+
+ Contains generic, low-level functionality for manipulating pointers.
+
+
+
+
+ Reads a value of type from the given location.
+
+ The type to read.
+ The location to read from.
+ An object of type read from the given location.
+
+
+
+ Reads a value of type from the given location.
+
+ The type to read.
+ The location to read from.
+ An object of type read from the given location.
+
+
+
+ Reads a value of type from the given location.
+
+ The type to read.
+ The location to read from.
+ An object of type read from the given location.
+
+
+
+ Writes a value of type to the given location.
+
+ The type of value to write.
+ The location to write to.
+ The value to write.
+
+
+
+ Writes a value of type to the given location.
+
+ The type of value to write.
+ The location to write to.
+ The value to write.
+
+
+
+ Writes a value of type to the given location.
+
+ The type of value to write.
+ The location to write to.
+ The value to write.
+
+
+
+ Copies a value of type to the given location.
+
+ The type of value to copy.
+ The location to copy to.
+ A reference to the value to copy.
+
+
+
+ Copies a value of type to the given location.
+
+ The type of value to copy.
+ The location to copy to.
+ A pointer to the value to copy.
+
+
+
+ Returns a pointer to the given by-ref parameter.
+
+ The type of object.
+ The object whose pointer is obtained.
+ A pointer to the given value.
+
+
+
+ Returns the size of an object of the given type parameter.
+
+ The type of object whose size is retrieved.
+ The size of an object of type .
+
+
+
+ Casts the given object to the specified type, performs no dynamic type checking.
+
+ The type which the object will be cast to.
+ The object to cast.
+ The original object, casted to the given type.
+
+
+
+ Reinterprets the given location as a reference to a value of type .
+
+ The type of the interpreted location.
+ The location of the value to reference.
+ A reference to a value of type .
+
+
+
+ Reinterprets the given read-only reference as a reference.
+
+ The type of reference.
+ The read-only reference to reinterpret.
+ A reference to a value of type .
+
+
+
+ Reinterprets the given reference as a reference to a value of type .
+
+ The type of reference to reinterpret.
+ The desired type of the reference.
+ The reference to reinterpret.
+ A reference to a value of type .
+
+
+
+ Returns a reference to the value type contained with the specified box object.
+
+ The type of the value type contained within the box.
+ The boxed value type.
+ A reference to a value of type in the box object.
+
+
+
+ Adds an element offset to the given reference.
+
+ The type of reference.
+ The reference to add the offset to.
+ The offset to add.
+ A new reference that reflects the addition of offset to pointer.
+
+
+
+ Adds an element offset to the given pointer.
+
+ The type of reference.
+ The pointer to add the offset to.
+ The offset to add.
+ A new pointer that reflects the addition of offset to pointer.
+
+
+
+ Adds an element offset to the given reference.
+
+ The type of reference.
+ The reference to add the offset to.
+ The offset to add.
+ A new reference that reflects the addition of offset to pointer.
+
+
+
+ Adds an element offset to the given reference.
+
+ The type of reference.
+ The reference to add the offset to.
+ The offset to add.
+ A new reference that reflects the addition of offset to pointer.
+
+
+
+ Adds a byte offset to the given reference.
+
+ The type of reference.
+ The reference to add the offset to.
+ The offset to add.
+ A new reference that reflects the addition of byte offset to pointer.
+
+
+
+ Adds a byte offset to the given reference.
+
+ The type of reference.
+ The reference to add the offset to.
+ The offset to add.
+ A new reference that reflects the addition of byte offset to pointer.
+
+
+
+ Subtracts an element offset from the given reference.
+
+ The type of reference.
+ The reference to subtract the offset from.
+ The offset to subtract.
+ A new reference that reflects the subraction of offset from pointer.
+
+
+
+ Subtracts an element offset from the given reference.
+
+ The type of reference.
+ The reference to subtract the offset from.
+ The offset to subtract.
+ A new reference that reflects the subraction of offset from pointer.
+
+
+
+ Subtracts an element offset from the given reference.
+
+ The type of reference.
+ The reference to subtract the offset from.
+ The offset to subtract.
+ A new reference that reflects the subraction of offset from pointer.
+
+
+
+ Subtracts a byte offset from the given reference.
+
+ The type of reference.
+ The reference to subtract the offset from.
+ The offset to subtract.
+ A new reference that reflects the subraction of byte offset from pointer.
+
+
+
+ Subtracts a byte offset from the given reference.
+
+ The type of reference.
+ The reference to subtract the offset from.
+ The offset to subtract.
+ A new reference that reflects the subraction of byte offset from pointer.
+
+
+
+ Determines the byte offset from origin to target from the given references.
+
+ The type of reference.
+ The reference to origin.
+ The reference to target.
+ Byte offset from origin to target i.e. - .
+
+
+
+ Determines whether the specified references point to the same location.
+
+ The first reference to compare.
+ The second reference to compare.
+ true if and point to the same location; otherwise false.
+
+
+
+ Determines whether the memory address referenced by is greater than the memory address referenced by .
+
+ The first reference to compare.
+ The second reference to compare.
+ true if the memory address referenced by is greater than the memory address referenced by ; otherwise false.
+
+ This check is conceptually similar to "(void*)(&left) > (void*)(&right)". Both parameters must reference the same object, array, or span;
+ or the objects being referenced must both be pinned; or both references must represent unmanaged pointers; otherwise the result is undefined.
+
+
+
+
+ Determines whether the memory address referenced by is less than the memory address referenced by .
+
+ The first reference to compare.
+ The second reference to compare.
+ true if the memory address referenced by is less than the memory address referenced by ; otherwise false.
+
+ This check is conceptually similar to "(void*)(&left) < (void*)(&right)". Both parameters must reference the same object, array, or span;
+ or the objects being referenced must both be pinned; or both references must represent unmanaged pointers; otherwise the result is undefined.
+
+
+
+
+ Returns if a given reference to a value of type is a null reference.
+
+ The reference to check.
+ This check is conceptually similar to "(void*)(&source) == nullptr".
+
+
+
+ Returns a reference to a value of type that is a null reference.
+
+
+
+
+ Copies bytes from the source address to the destination address.
+
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+
+ Copies bytes from the source address to the destination address.
+
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+
+ Copies bytes from the source address to the destination address
+ without assuming architecture dependent alignment of the addresses.
+
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+
+ Copies bytes from the source address to the destination address
+ without assuming architecture dependent alignment of the addresses.
+
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+
+ Initializes a block of memory at the given location with a given initial value.
+
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+
+ Initializes a block of memory at the given location with a given initial value.
+
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+
+ Initializes a block of memory at the given location with a given initial value
+ without assuming architecture dependent alignment of the address.
+
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+
+ Initializes a block of memory at the given location with a given initial value
+ without assuming architecture dependent alignment of the address.
+
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+
diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml.meta
new file mode 100644
index 0000000..4710e92
--- /dev/null
+++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.6.1.0/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f3ec55fd6e48f0f4983349efb37dfdfa
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0.meta b/Assets/Packages/System.Threading.Channels.8.0.0.meta
new file mode 100644
index 0000000..c86b6ee
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cc42b87bd2b77ce42acc2a1b4809de18
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/.signature.p7s b/Assets/Packages/System.Threading.Channels.8.0.0/.signature.p7s
new file mode 100644
index 0000000..d0a2036
Binary files /dev/null and b/Assets/Packages/System.Threading.Channels.8.0.0/.signature.p7s differ
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/Icon.png b/Assets/Packages/System.Threading.Channels.8.0.0/Icon.png
new file mode 100644
index 0000000..a0f1fdb
Binary files /dev/null and b/Assets/Packages/System.Threading.Channels.8.0.0/Icon.png differ
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/Icon.png.meta b/Assets/Packages/System.Threading.Channels.8.0.0/Icon.png.meta
new file mode 100644
index 0000000..4467927
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/Icon.png.meta
@@ -0,0 +1,117 @@
+fileFormatVersion: 2
+guid: d7ec025d6b8b273459bd48b3588ed9b3
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/LICENSE.TXT b/Assets/Packages/System.Threading.Channels.8.0.0/LICENSE.TXT
new file mode 100644
index 0000000..984713a
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/LICENSE.TXT
@@ -0,0 +1,23 @@
+The MIT License (MIT)
+
+Copyright (c) .NET Foundation and Contributors
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/LICENSE.TXT.meta b/Assets/Packages/System.Threading.Channels.8.0.0/LICENSE.TXT.meta
new file mode 100644
index 0000000..5411580
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/LICENSE.TXT.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d400256c70c44ce47a845512acb1fc5a
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/PACKAGE.md b/Assets/Packages/System.Threading.Channels.8.0.0/PACKAGE.md
new file mode 100644
index 0000000..f022aaf
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/PACKAGE.md
@@ -0,0 +1,73 @@
+## About
+
+
+
+The `System.Threading.Channels` library provides types for passing data asynchronously between producers and consumers.
+
+## Key Features
+
+
+
+* Abstractions representing channels for one or more producers to publish data to one or more consumers
+* APIs focused on asynchronous production and consumption of data
+* Factory methods for producing multiple kinds of channels
+
+## How to Use
+
+
+
+```C#
+using System;
+using System.Threading.Channels;
+using System.Threading.Tasks;
+
+Channel channel = Channel.CreateUnbounded();
+
+Task producer = Task.Run(async () =>
+{
+ int i = 0;
+ while (true)
+ {
+ channel.Writer.TryWrite(i++);
+ await Task.Delay(TimeSpan.FromSeconds(1));
+ }
+});
+
+Task consumer = Task.Run(async () =>
+{
+ await foreach (int value in channel.Reader.ReadAllAsync())
+ {
+ Console.WriteLine(value);
+ }
+});
+
+await Task.WhenAll(producer, consumer);
+```
+
+## Main Types
+
+
+
+The main types provided by this library are:
+
+* `System.Threading.Channel`
+* `System.Threading.Channel`
+
+## Additional Documentation
+
+
+
+* [Overview](https://devblogs.microsoft.com/dotnet/an-introduction-to-system-threading-channels/)
+* [API documentation](https://learn.microsoft.com/dotnet/api/system.threading.channels)
+
+## Related Packages
+
+
+
+https://www.nuget.org/packages/System.Threading.Tasks.Dataflow/
+
+## Feedback & Contributing
+
+
+
+System.Threading.Channels is released as open source under the [MIT license](https://licenses.nuget.org/MIT). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/dotnet/runtime).
\ No newline at end of file
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/PACKAGE.md.meta b/Assets/Packages/System.Threading.Channels.8.0.0/PACKAGE.md.meta
new file mode 100644
index 0000000..b3b73e4
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/PACKAGE.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5d1b2bef15705ad4e917e76603a2b7c9
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/System.Threading.Channels.nuspec b/Assets/Packages/System.Threading.Channels.8.0.0/System.Threading.Channels.nuspec
new file mode 100644
index 0000000..25dabf1
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/System.Threading.Channels.nuspec
@@ -0,0 +1,34 @@
+
+
+
+ System.Threading.Channels
+ 8.0.0
+ Microsoft
+ MIT
+ https://licenses.nuget.org/MIT
+ Icon.png
+ PACKAGE.md
+ https://dot.net/
+ Provides types for passing data between producers and consumers.
+
+Commonly Used Types:
+System.Threading.Channel
+System.Threading.Channel<T>
+ https://go.microsoft.com/fwlink/?LinkID=799421
+ © Microsoft Corporation. All rights reserved.
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/System.Threading.Channels.nuspec.meta b/Assets/Packages/System.Threading.Channels.8.0.0/System.Threading.Channels.nuspec.meta
new file mode 100644
index 0000000..a5e533f
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/System.Threading.Channels.nuspec.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 00426af0ba47482439209ec502d2f34a
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/THIRD-PARTY-NOTICES.TXT b/Assets/Packages/System.Threading.Channels.8.0.0/THIRD-PARTY-NOTICES.TXT
new file mode 100644
index 0000000..4b40333
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/THIRD-PARTY-NOTICES.TXT
@@ -0,0 +1,1272 @@
+.NET Runtime uses third-party libraries or other resources that may be
+distributed under licenses different than the .NET Runtime software.
+
+In the event that we accidentally failed to list a required notice, please
+bring it to our attention. Post an issue or email us:
+
+ dotnet@microsoft.com
+
+The attached notices are provided for information only.
+
+License notice for ASP.NET
+-------------------------------
+
+Copyright (c) .NET Foundation. All rights reserved.
+Licensed under the Apache License, Version 2.0.
+
+Available at
+https://github.com/dotnet/aspnetcore/blob/main/LICENSE.txt
+
+License notice for Slicing-by-8
+-------------------------------
+
+http://sourceforge.net/projects/slicing-by-8/
+
+Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
+
+
+This software program is licensed subject to the BSD License, available at
+http://www.opensource.org/licenses/bsd-license.html.
+
+
+License notice for Unicode data
+-------------------------------
+
+https://www.unicode.org/license.html
+
+Copyright © 1991-2022 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that either
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software, or
+(b) this copyright and permission notice appear in associated
+Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
+
+License notice for Zlib
+-----------------------
+
+https://github.com/madler/zlib
+https://zlib.net/zlib_license.html
+
+/* zlib.h -- interface of the 'zlib' general purpose compression library
+ version 1.2.13, October 13th, 2022
+
+ Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jean-loup Gailly Mark Adler
+ jloup@gzip.org madler@alumni.caltech.edu
+
+*/
+
+License notice for Mono
+-------------------------------
+
+http://www.mono-project.com/docs/about-mono/
+
+Copyright (c) .NET Foundation Contributors
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the Software), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for International Organization for Standardization
+-----------------------------------------------------------------
+
+Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+
+License notice for Intel
+------------------------
+
+"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Xamarin and Novell
+-------------------------------------
+
+Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Copyright (c) 2011 Novell, Inc (http://www.novell.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Third party notice for W3C
+--------------------------
+
+"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE
+Status: This license takes effect 13 May, 2015.
+This work is being provided by the copyright holders under the following license.
+License
+By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
+Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications:
+The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
+Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
+Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
+Disclaimers
+THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders."
+
+License notice for Bit Twiddling Hacks
+--------------------------------------
+
+Bit Twiddling Hacks
+
+By Sean Eron Anderson
+seander@cs.stanford.edu
+
+Individually, the code snippets here are in the public domain (unless otherwise
+noted) — feel free to use them however you please. The aggregate collection and
+descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are
+distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and
+without even the implied warranty of merchantability or fitness for a particular
+purpose.
+
+License notice for Brotli
+--------------------------------------
+
+Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+compress_fragment.c:
+Copyright (c) 2011, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+decode_fuzzer.c:
+Copyright (c) 2015 The Chromium Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+
+License notice for Json.NET
+-------------------------------
+
+https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md
+
+The MIT License (MIT)
+
+Copyright (c) 2007 James Newton-King
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for vectorized base64 encoding / decoding
+--------------------------------------------------------
+
+Copyright (c) 2005-2007, Nick Galbreath
+Copyright (c) 2013-2017, Alfred Klomp
+Copyright (c) 2015-2017, Wojciech Mula
+Copyright (c) 2016-2017, Matthieu Darbois
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+- Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for vectorized hex parsing
+--------------------------------------------------------
+
+Copyright (c) 2022, Geoff Langdale
+Copyright (c) 2022, Wojciech Mula
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+- Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for RFC 3492
+---------------------------
+
+The punycode implementation is based on the sample code in RFC 3492
+
+Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+This document and translations of it may be copied and furnished to
+others, and derivative works that comment on or otherwise explain it
+or assist in its implementation may be prepared, copied, published
+and distributed, in whole or in part, without restriction of any
+kind, provided that the above copyright notice and this paragraph are
+included on all such copies and derivative works. However, this
+document itself may not be modified in any way, such as by removing
+the copyright notice or references to the Internet Society or other
+Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for
+copyrights defined in the Internet Standards process must be
+followed, or as required to translate it into languages other than
+English.
+
+The limited permissions granted above are perpetual and will not be
+revoked by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an
+"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Copyright(C) The Internet Society 1997. All Rights Reserved.
+
+This document and translations of it may be copied and furnished to others,
+and derivative works that comment on or otherwise explain it or assist in
+its implementation may be prepared, copied, published and distributed, in
+whole or in part, without restriction of any kind, provided that the above
+copyright notice and this paragraph are included on all such copies and
+derivative works.However, this document itself may not be modified in any
+way, such as by removing the copyright notice or references to the Internet
+Society or other Internet organizations, except as needed for the purpose of
+developing Internet standards in which case the procedures for copyrights
+defined in the Internet Standards process must be followed, or as required
+to translate it into languages other than English.
+
+The limited permissions granted above are perpetual and will not be revoked
+by the Internet Society or its successors or assigns.
+
+This document and the information contained herein is provided on an "AS IS"
+basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
+DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
+RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
+PARTICULAR PURPOSE.
+
+License notice for Algorithm from RFC 4122 -
+A Universally Unique IDentifier (UUID) URN Namespace
+----------------------------------------------------
+
+Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
+Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
+Digital Equipment Corporation, Maynard, Mass.
+Copyright (c) 1998 Microsoft.
+To anyone who acknowledges that this file is provided "AS IS"
+without any express or implied warranty: permission to use, copy,
+modify, and distribute this file for any purpose is hereby
+granted without fee, provided that the above copyright notices and
+this notice appears in all source code copies, and that none of
+the names of Open Software Foundation, Inc., Hewlett-Packard
+Company, Microsoft, or Digital Equipment Corporation be used in
+advertising or publicity pertaining to distribution of the software
+without specific, written prior permission. Neither Open Software
+Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital
+Equipment Corporation makes any representations about the
+suitability of this software for any purpose."
+
+License notice for The LLVM Compiler Infrastructure (Legacy License)
+--------------------------------------------------------------------
+
+Developed by:
+
+ LLVM Team
+
+ University of Illinois at Urbana-Champaign
+
+ http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimers.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimers in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the names of the LLVM Team, University of Illinois at
+ Urbana-Champaign, nor the names of its contributors may be used to
+ endorse or promote products derived from this Software without specific
+ prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+License notice for Bob Jenkins
+------------------------------
+
+By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
+code any way you wish, private, educational, or commercial. It's free.
+
+License notice for Greg Parker
+------------------------------
+
+Greg Parker gparker@cs.stanford.edu December 2000
+This code is in the public domain and may be copied or modified without
+permission.
+
+License notice for libunwind based code
+----------------------------------------
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for Printing Floating-Point Numbers (Dragon4)
+------------------------------------------------------------
+
+/******************************************************************************
+ Copyright (c) 2014 Ryan Juckett
+ http://www.ryanjuckett.com/
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source
+ distribution.
+******************************************************************************/
+
+License notice for Printing Floating-point Numbers (Grisu3)
+-----------------------------------------------------------
+
+Copyright 2012 the V8 project authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of Google Inc. nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for xxHash
+-------------------------
+
+xxHash - Extremely Fast Hash algorithm
+Header File
+Copyright (C) 2012-2021 Yann Collet
+
+BSD 2-Clause License (https://www.opensource.org/licenses/bsd-license.php)
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+You can contact the author at:
+ - xxHash homepage: https://www.xxhash.com
+ - xxHash source repository: https://github.com/Cyan4973/xxHash
+
+License notice for Berkeley SoftFloat Release 3e
+------------------------------------------------
+
+https://github.com/ucb-bar/berkeley-softfloat-3
+https://github.com/ucb-bar/berkeley-softfloat-3/blob/master/COPYING.txt
+
+License for Berkeley SoftFloat Release 3e
+
+John R. Hauser
+2018 January 20
+
+The following applies to the whole of SoftFloat Release 3e as well as to
+each source file individually.
+
+Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
+University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions, and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
+DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for xoshiro RNGs
+--------------------------------
+
+Written in 2018 by David Blackman and Sebastiano Vigna (vigna@acm.org)
+
+To the extent possible under law, the author has dedicated all copyright
+and related and neighboring rights to this software to the public domain
+worldwide. This software is distributed without any warranty.
+
+See .
+
+License for fastmod (https://github.com/lemire/fastmod), ibm-fpgen (https://github.com/nigeltao/parse-number-fxx-test-data) and fastrange (https://github.com/lemire/fastrange)
+--------------------------------------
+
+ Copyright 2018 Daniel Lemire
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+License for sse4-strstr (https://github.com/WojciechMula/sse4-strstr)
+--------------------------------------
+
+ Copyright (c) 2008-2016, Wojciech Mula
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for The C++ REST SDK
+-----------------------------------
+
+C++ REST SDK
+
+The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for MessagePack-CSharp
+-------------------------------------
+
+MessagePack for C#
+
+MIT License
+
+Copyright (c) 2017 Yoshifumi Kawai
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for lz4net
+-------------------------------------
+
+lz4net
+
+Copyright (c) 2013-2017, Milosz Krajewski
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for Nerdbank.Streams
+-----------------------------------
+
+The MIT License (MIT)
+
+Copyright (c) Andrew Arnott
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for RapidJSON
+----------------------------
+
+Tencent is pleased to support the open source community by making RapidJSON available.
+
+Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
+
+Licensed under the MIT License (the "License"); you may not use this file except
+in compliance with the License. You may obtain a copy of the License at
+
+http://opensource.org/licenses/MIT
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied. See the License for the
+specific language governing permissions and limitations under the License.
+
+License notice for DirectX Math Library
+---------------------------------------
+
+https://github.com/microsoft/DirectXMath/blob/master/LICENSE
+
+ The MIT License (MIT)
+
+Copyright (c) 2011-2020 Microsoft Corp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights to use, copy, modify,
+merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be included in all copies
+or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
+OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for ldap4net
+---------------------------
+
+The MIT License (MIT)
+
+Copyright (c) 2018 Alexander Chermyanin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License notice for vectorized sorting code
+------------------------------------------
+
+MIT License
+
+Copyright (c) 2020 Dan Shechter
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for musl
+-----------------------
+
+musl as a whole is licensed under the following standard MIT license:
+
+Copyright © 2005-2020 Rich Felker, et al.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+License notice for "Faster Unsigned Division by Constants"
+------------------------------
+
+Reference implementations of computing and using the "magic number" approach to dividing
+by constants, including codegen instructions. The unsigned division incorporates the
+"round down" optimization per ridiculous_fish.
+
+This is free and unencumbered software. Any copyright is dedicated to the Public Domain.
+
+
+License notice for mimalloc
+-----------------------------------
+
+MIT License
+
+Copyright (c) 2019 Microsoft Corporation, Daan Leijen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for The LLVM Project
+-----------------------------------
+
+Copyright 2019 LLVM Project
+
+Licensed under the Apache License, Version 2.0 (the "License") with LLVM Exceptions;
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+https://llvm.org/LICENSE.txt
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+License notice for Apple header files
+-------------------------------------
+
+Copyright (c) 1980, 1986, 1993
+ The Regents of the University of California. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+ must display the following acknowledgement:
+ This product includes software developed by the University of
+ California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+License notice for JavaScript queues
+-------------------------------------
+
+CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER.
+
+Statement of Purpose
+The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work").
+Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others.
+For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following:
+the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work;
+moral rights retained by the original author(s) and/or performer(s);
+publicity and privacy rights pertaining to a person's image or likeness depicted in a Work;
+rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below;
+rights protecting the extraction, dissemination, use and reuse of data in a Work;
+database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and
+other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof.
+2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose.
+3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose.
+4. Limitations and Disclaimers.
+a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document.
+b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law.
+c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
+d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
+
+
+License notice for FastFloat algorithm
+-------------------------------------
+MIT License
+Copyright (c) 2021 csFastFloat authors
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+License notice for MsQuic
+--------------------------------------
+
+Copyright (c) Microsoft Corporation.
+Licensed under the MIT License.
+
+Available at
+https://github.com/microsoft/msquic/blob/main/LICENSE
+
+License notice for m-ou-se/floatconv
+-------------------------------
+
+Copyright (c) 2020 Mara Bos
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License notice for code from The Practice of Programming
+-------------------------------
+
+Copyright (C) 1999 Lucent Technologies
+
+Excerpted from 'The Practice of Programming
+by Brian W. Kernighan and Rob Pike
+
+You may use this code for any purpose, as long as you leave the copyright notice and book citation attached.
+
+Notice for Euclidean Affine Functions and Applications to Calendar
+Algorithms
+-------------------------------
+
+Aspects of Date/Time processing based on algorithm described in "Euclidean Affine Functions and Applications to Calendar
+Algorithms", Cassio Neri and Lorenz Schneider. https://arxiv.org/pdf/2102.06959.pdf
+
+License notice for amd/aocl-libm-ose
+-------------------------------
+
+Copyright (C) 2008-2020 Advanced Micro Devices, Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+3. Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+License notice for fmtlib/fmt
+-------------------------------
+
+Formatting library for C++
+
+Copyright (c) 2012 - present, Victor Zverovich
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+License for Jb Evain
+---------------------
+
+Copyright (c) 2006 Jb Evain (jbevain@gmail.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+--- Optional exception to the license ---
+
+As an exception, if, as a result of your compiling your source code, portions
+of this Software are embedded into a machine-executable object form of such
+source code, you may redistribute such embedded portions in such object form
+without including the above copyright and permission notices.
+
+
+License for MurmurHash3
+--------------------------------------
+
+https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp
+
+MurmurHash3 was written by Austin Appleby, and is placed in the public
+domain. The author hereby disclaims copyright to this source
+
+License for Fast CRC Computation
+--------------------------------------
+
+https://github.com/intel/isa-l/blob/33a2d9484595c2d6516c920ce39a694c144ddf69/crc/crc32_ieee_by4.asm
+https://github.com/intel/isa-l/blob/33a2d9484595c2d6516c920ce39a694c144ddf69/crc/crc64_ecma_norm_by8.asm
+
+Copyright(c) 2011-2015 Intel Corporation All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of Intel Corporation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License for C# Implementation of Fast CRC Computation
+-----------------------------------------------------
+
+https://github.com/SixLabors/ImageSharp/blob/f4f689ce67ecbcc35cebddba5aacb603e6d1068a/src/ImageSharp/Formats/Png/Zlib/Crc32.cs
+
+Copyright (c) Six Labors.
+Licensed under the Apache License, Version 2.0.
+
+Available at
+https://github.com/SixLabors/ImageSharp/blob/f4f689ce67ecbcc35cebddba5aacb603e6d1068a/LICENSE
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/THIRD-PARTY-NOTICES.TXT.meta b/Assets/Packages/System.Threading.Channels.8.0.0/THIRD-PARTY-NOTICES.TXT.meta
new file mode 100644
index 0000000..85e35d5
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/THIRD-PARTY-NOTICES.TXT.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 2cff23f6286e29b40b777a1222de3583
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive.meta b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive.meta
new file mode 100644
index 0000000..b8d0e80
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 89ef0fa36e4dcae47b2c249c341a2abf
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net461.meta b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net461.meta
new file mode 100644
index 0000000..aa950ee
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net461.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 23c6db4ec3b023c42bedebec378425df
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net461/System.Threading.Channels.targets b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net461/System.Threading.Channels.targets
new file mode 100644
index 0000000..d44f701
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net461/System.Threading.Channels.targets
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net461/System.Threading.Channels.targets.meta b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net461/System.Threading.Channels.targets.meta
new file mode 100644
index 0000000..87a7c7e
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net461/System.Threading.Channels.targets.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1430380614f0ddc41abb856ae0a29593
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net462.meta b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net462.meta
new file mode 100644
index 0000000..e3efb8a
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net462.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ec552526edd57c0408978276e9e32512
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net462/_._ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net462/_._
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net462/_._.meta b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net462/_._.meta
new file mode 100644
index 0000000..51a6c16
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net462/_._.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 20f32eefca3ad43448a2e70a6936cf72
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net6.0.meta b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net6.0.meta
new file mode 100644
index 0000000..61e4015
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net6.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 248b1c2a9972b7e489898b5d7453216f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net6.0/_._ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net6.0/_._
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net6.0/_._.meta b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net6.0/_._.meta
new file mode 100644
index 0000000..cefce68
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/net6.0/_._.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7f31dfb5e4df018449331a9532b15814
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/netcoreapp2.0.meta b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/netcoreapp2.0.meta
new file mode 100644
index 0000000..e9eb541
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/netcoreapp2.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0bcb6e129cd6d8640807b6d87d0585c3
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/netcoreapp2.0/System.Threading.Channels.targets b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/netcoreapp2.0/System.Threading.Channels.targets
new file mode 100644
index 0000000..0010c2a
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/netcoreapp2.0/System.Threading.Channels.targets
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/netcoreapp2.0/System.Threading.Channels.targets.meta b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/netcoreapp2.0/System.Threading.Channels.targets.meta
new file mode 100644
index 0000000..d1cc66c
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/buildTransitive/netcoreapp2.0/System.Threading.Channels.targets.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: cacf307393d35ab4fadbf394ce33a8a6
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/lib.meta b/Assets/Packages/System.Threading.Channels.8.0.0/lib.meta
new file mode 100644
index 0000000..799ec21
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a1fa1c7fe599fb0489df338f78b04e98
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1.meta b/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1.meta
new file mode 100644
index 0000000..a9894e8
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2dba445c2ab596f489426a3f74e7b0eb
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.dll b/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.dll
new file mode 100644
index 0000000..60b45fb
Binary files /dev/null and b/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.dll differ
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.dll.meta b/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.dll.meta
new file mode 100644
index 0000000..172c97e
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.dll.meta
@@ -0,0 +1,29 @@
+fileFormatVersion: 2
+guid: daf8de50efcbb4041af1d075001ac968
+labels:
+- NuGetForUnity
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 3
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ Any:
+ enabled: 1
+ settings: {}
+ Editor:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.xml b/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.xml
new file mode 100644
index 0000000..20275dc
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.xml
@@ -0,0 +1,243 @@
+
+
+
+ System.Threading.Channels
+
+
+
+ Specifies the behavior to use when writing to a bounded channel that is already full.
+
+
+ Removes and ignores the newest item in the channel in order to make room for the item being written.
+
+
+ Removes and ignores the oldest item in the channel in order to make room for the item being written.
+
+
+ Drops the item being written.
+
+
+ Waits for space to be available in order to complete the write operation.
+
+
+ Provides options that control the behavior of bounded instances.
+
+
+ Initializes the options.
+ The maximum number of items the bounded channel may store.
+
+
+ Gets or sets the maximum number of items the bounded channel may store.
+
+
+ Gets or sets the behavior incurred by write operations when the channel is full.
+
+
+ Provides static methods for creating channels.
+
+
+ Creates a channel with the specified maximum capacity.
+ The maximum number of items the channel may store.
+ Specifies the type of data in the channel.
+ The created channel.
+
+
+ Creates a channel with the specified maximum capacity.
+ Options that guide the behavior of the channel.
+ Specifies the type of data in the channel.
+ The created channel.
+
+
+ Creates a channel subject to the provided options.
+ Options that guide the behavior of the channel.
+ Delegate that will be called when item is being dropped from channel. See .
+ Specifies the type of data in the channel.
+ The created channel.
+
+
+ Creates an unbounded channel usable by any number of readers and writers concurrently.
+ The type of data in the channel.
+ The created channel.
+
+
+ Creates an unbounded channel subject to the provided options.
+ Options that guide the behavior of the channel.
+ Specifies the type of data in the channel.
+ The created channel.
+
+
+ Provides a base class for channels that support reading and writing elements of type .
+ Specifies the type of data readable and writable in the channel.
+
+
+ Initializes an instance of the class.
+
+
+ Provides a base class for channels that support reading elements of type and writing elements of type .
+ Specifies the type of data that may be written to the channel.
+ Specifies the type of data that may be read from the channel.
+
+
+ Initializes an instance of the class.
+
+
+ Implicit cast from a to its readable half.
+ The being cast.
+ The readable half.
+
+
+ Implicit cast from a to its writable half.
+ The being cast.
+ The writable half.
+
+
+ Gets the readable half of this channel.
+
+
+ Gets the writable half of this channel.
+
+
+ Exception thrown when a channel is used after it's been closed.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class.
+ The exception that is the cause of this exception.
+
+
+ Initializes a new instance of the class with serialized data.
+ The object that holds the serialized object data.
+ The contextual information about the source or destination.
+
+
+ Initializes a new instance of the class.
+ The message that describes the error.
+
+
+ Initializes a new instance of the class.
+ The message that describes the error.
+ The exception that is the cause of this exception.
+
+
+ Provides options that control the behavior of channel instances.
+
+
+ Initializes an instance of the class.
+
+
+
+ if operations performed on a channel may synchronously invoke continuations subscribed to
+ notifications of pending async operations; if all continuations should be invoked asynchronously.
+
+
+
+ readers from the channel guarantee that there will only ever be at most one read operation at a time;
+ if no such constraint is guaranteed.
+
+
+
+ if writers to the channel guarantee that there will only ever be at most one write operation
+ at a time; if no such constraint is guaranteed.
+
+
+ Provides a base class for reading from a channel.
+ Specifies the type of data that may be read from the channel.
+
+
+ Initializes an instance of the class.
+
+
+ Creates an that enables reading all of the data from the channel.
+ The cancellation token to use to cancel the enumeration. If data is immediately ready for reading, then that data may be yielded even after cancellation has been requested.
+ The created async enumerable.
+
+
+ Asynchronously reads an item from the channel.
+ A used to cancel the read operation.
+ A that represents the asynchronous read operation.
+
+
+ Attempts to peek at an item from the channel.
+ The peeked item, or a default value if no item could be peeked.
+
+ if an item was read; otherwise, .
+
+
+ Attempts to read an item from the channel.
+ The read item, or a default value if no item could be read.
+
+ if an item was read; otherwise, .
+
+
+ Returns a that will complete when data is available to read.
+ A used to cancel the wait operation.
+
+ A that will complete with a result when data is available to read
+ or with a result when no further data will ever be available to be read due to the channel completing successfully.
+ If the channel completes with an exception, the task will also complete with an exception.
+
+
+
+ Gets a value that indicates whether is available for use on this instance.
+
+
+ Gets a value that indicates whether is available for use on this instance.
+
+ if peeking is supported by this channel instance; otherwise.
+
+
+ Gets a that completes when no more data will ever
+ be available to be read from this channel.
+
+
+ Gets the current number of items available from this channel reader.
+ Counting is not supported on this instance.
+
+
+ Provides a base class for writing to a channel.
+ Specifies the type of data that may be written to the channel.
+
+
+ Initializes an instance of the class.
+
+
+ Mark the channel as being complete, meaning no more items will be written to it.
+ Optional Exception indicating a failure that's causing the channel to complete.
+ The channel has already been marked as complete.
+
+
+ Attempts to mark the channel as being completed, meaning no more data will be written to it.
+ An indicating the failure causing no more data to be written, or null for success.
+
+ if this operation successfully completes the channel; otherwise, if the channel could not be marked for completion,
+ for example due to having already been marked as such, or due to not supporting completion.
+ .
+
+
+ Attempts to write the specified item to the channel.
+ The item to write.
+
+ if the item was written; otherwise, .
+
+
+ Returns a that will complete when space is available to write an item.
+ A used to cancel the wait operation.
+ A that will complete with a result when space is available to write an item
+ or with a result when no further writing will be permitted.
+
+
+ Asynchronously writes an item to the channel.
+ The value to write to the channel.
+ A used to cancel the write operation.
+ A that represents the asynchronous write operation.
+
+
+ Provides options that control the behavior of unbounded instances.
+
+
+ Initializes a new instance of the class.
+
+
+
\ No newline at end of file
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.xml.meta b/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.xml.meta
new file mode 100644
index 0000000..85eeb70
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/lib/netstandard2.1/System.Threading.Channels.xml.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4732708bfdc14994b95ed9b2c9d6591e
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/useSharedDesignerContext.txt b/Assets/Packages/System.Threading.Channels.8.0.0/useSharedDesignerContext.txt
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Packages/System.Threading.Channels.8.0.0/useSharedDesignerContext.txt.meta b/Assets/Packages/System.Threading.Channels.8.0.0/useSharedDesignerContext.txt.meta
new file mode 100644
index 0000000..02557a3
--- /dev/null
+++ b/Assets/Packages/System.Threading.Channels.8.0.0/useSharedDesignerContext.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9ce0812328a12f148a4881ee8acea964
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/ZLinq.0.7.2.meta b/Assets/Packages/ZLinq.0.7.2.meta
new file mode 100644
index 0000000..89c9575
--- /dev/null
+++ b/Assets/Packages/ZLinq.0.7.2.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2e239ee8ff60de5408d8df0122c82b25
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/ZLinq.0.7.2/.signature.p7s b/Assets/Packages/ZLinq.0.7.2/.signature.p7s
new file mode 100644
index 0000000..2e91922
Binary files /dev/null and b/Assets/Packages/ZLinq.0.7.2/.signature.p7s differ
diff --git a/Assets/Packages/ZLinq.0.7.2/Icon.png b/Assets/Packages/ZLinq.0.7.2/Icon.png
new file mode 100644
index 0000000..68d64b1
Binary files /dev/null and b/Assets/Packages/ZLinq.0.7.2/Icon.png differ
diff --git a/Assets/Packages/ZLinq.0.7.2/Icon.png.meta b/Assets/Packages/ZLinq.0.7.2/Icon.png.meta
new file mode 100644
index 0000000..b9294d3
--- /dev/null
+++ b/Assets/Packages/ZLinq.0.7.2/Icon.png.meta
@@ -0,0 +1,117 @@
+fileFormatVersion: 2
+guid: 207af616ea3b68540be43204c73e0007
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/ZLinq.0.7.2/README.md b/Assets/Packages/ZLinq.0.7.2/README.md
new file mode 100644
index 0000000..1ba18f1
--- /dev/null
+++ b/Assets/Packages/ZLinq.0.7.2/README.md
@@ -0,0 +1,393 @@
+ZLinq
+===
+Zero allocation LINQ with Span and LINQ to SIMD, LINQ to Tree (FileSystem, Json, GameObject, etc.) for all .NET platforms(netstandard2.0, 2.1, net8, net9) and Unity, Godot.
+
+> [!IMPORTANT]
+> This library is currently in preview. All methods have been implemented, but testing is not complete so operation is not guaranteed.
+The official release will be soon, but please wait until then for official use in production.
+
+
+
+```csharp
+using ZLinq;
+
+var seq = source
+ .AsValueEnumerable() // only add this line
+ .Where(x => x % 2 == 0)
+ .Select(x => x * 3);
+
+foreach (var item in seq) { }
+```
+
+* **99% compatibility** with .NET 10's LINQ (including new `Shuffle`, `RightJoin`, `LeftJoin` operators)
+* **Zero allocation** for method chains through struct-based Enumerable via `ValueEnumerable`
+* Full support for LINQ operations on **Span** using .NET 9/C# 13's `allows ref struct`
+* **LINQ to Tree** to extend tree-structured objects (built-in support for FileSystem, JSON, GameObject)
+* Automatic application of SIMD where possible and customizable **LINQ to SIMD** for arbitrary operations
+* Optional **Drop-in replacement** Source Generator to automatically accelerate all LINQ methods
+* Fusion of my past LINQ ([linq.js](https://github.com/neuecc/linq.js/), [SimdLinq](https://github.com/Cysharp/SimdLinq/), [UniRx](https://github.com/neuecc/UniRx), [R3](https://github.com/Cysharp/R3)) and zero alloc ([ZString](https://github.com/Cysharp/ZString), [ZLogger](https://github.com/Cysharp/ZLogger)) impls
+
+I aimed to create not just an experimental library but a practical one. It's also designed to handle high-load requirements, such as those found in games.
+
+You can install it from [NuGet/ZLinq](https://www.nuget.org/packages/ZLinq). For Unity usage, refer to the [Unity section](#unity). For Godot usage, refer to the [Godot section](#godot).
+
+```bash
+dotnet add package ZLinq
+```
+
+ZLinq chains internally use the following interface:
+
+```csharp
+public readonly ref struct ValueEnumerable(TEnumerator enumerator)
+ where TEnumerator : struct, IValueEnumerator, allows ref struct
+{
+ public readonly TEnumerator Enumerator = enumerator;
+}
+
+public interface IValueEnumerator : IDisposable
+{
+ bool TryGetNext(out T current); // as MoveNext + Current
+
+ // Optimization helper
+ bool TryGetNonEnumeratedCount(out int count);
+ bool TryGetSpan(out ReadOnlySpan span);
+ bool TryCopyTo(Span destination, Index offset);
+}
+```
+
+Besides changing to a struct-based approach, we've integrated MoveNext and Current to reduce the number of iterator calls. Also, since structs automatically copy internal state, we've simplified the type complexity by unifying Enumerable and Enumerator(almostly types only implements custom enumerator).
+
+```csharp
+public static ValueEnumerable, TSource> Where(in this ValueEnumerable source, Func predicate)
+ where TEnumerator : struct, IValueEnumerator, allows ref struct
+````
+
+Operators have this method signature. C# cannot infer types from generic constraints([dotnet/csharplang#6930](https://github.com/dotnet/csharplang/discussions/6930)). Therefore, the traditional Struct LINQ approach required implementing all operator combinations as instance methods, resulting in [100,000+ methods and massive assembly sizes](https://kevinmontrose.com/2018/01/17/linqaf-replacing-linq-and-not-allocating/). However, in ZLinq, we've successfully avoided all the boilerplate method implementations by devising an approach that properly conveys types to C# compiler. There are approaches focusing on instance methods to aim for local maximum performance, or generating everything with Source Generator, but ZLinq style has been chosen to balance usability with assembly size and other factors.
+
+Additionally, `TryGetNonEnumeratedCount(out int count)`, `TryGetSpan(out ReadOnlySpan span)`, and `TryCopyTo(Span destination)` defined in the interface itself enable flexible optimizations. For example, Take+Skip can be expressed entirely as Span slices, so if the original source can be converted to a Span, Span slices are passed through TryGetSpan chains. For ToArray, if the sequence length can be calculated, a fixed-length array is prepared in advance, and operators that can write directly to the final array via TryCopyTo will do so. Some methods automatically use SIMD-based optimization if a Span can be obtained.
+
+Gettting Started
+---
+Use `using ZLinq;` and call `AsValueEnumerable()` on any iterable type to use ZLinq's zero-allocation LINQ. Also, `Range`, `Repeat`, and `Empty` are defined in `ValueEnumerable`.
+
+```csharp
+using ZLinq;
+
+var source = new int[] { 1, 2, 3, 4, 5 };
+
+// Call AsValueEnumerable to apply ZLinq
+var seq1 = source.AsValueEnumerable().Where(x => x % 2 == 0);
+
+// Can also be applied to Span (only in .NET 9/C# 13 environments that support allows ref struct)
+Span span = stackalloc int[5] { 1, 2, 3, 4, 5 };
+var seq2 = span.AsValueEnumerable().Select(x => x * x);
+```
+
+Drop-in replacement
+---
+When introducing `ZLinq.DropInGenerator`, you can automatically use ZLinq for all LINQ methods without calling `AsValueEnumerable()`.
+
+```bash
+dotnet add package ZLinq.DropInGenerator
+```
+
+
+
+It works by using a Source Generator to add extension methods for each type that take priority, making `ZLinq` methods be selected instead of System.Linq when the same name and arguments are used.
+After installing the package, you need to configure it with an assembly attribute.
+
+```csharp
+[assembly: ZLinq.ZLinqDropInAttribute("ZLinq.DropIn", ZLinq.DropInGenerateTypes.Array)]
+```
+
+`generateNamespace` is the namespace for the generated code, and `DropInGenerateTypes` selects the target types.
+`DropInGenerateTypes` allows you to choose from `Array`, `Span` (Span/ReadOnlySpan), `Memory` (Memory/ReadOnlyMemory), `List`, and `Enumerable` (IEnumerable).
+These are Flags, so you can combine them, such as `DropInGenerateTypes.Array | DropInGenerateTypes.Span`.
+There are also predefined combinations: `Collection = Array | Span | Memory | List` and `Everything = Array | Span | Memory | List | Enumerable`.
+
+You can enable it for all files by global using the generated namespace:
+
+```csharp
+global using ZLinq.Dropin;
+```
+
+When using `DropInGenerateTypes.Enumerable`, which generates extension methods for `IEnumerable`, you need to make `generateNamespace` global as a namespace priority.
+For example:
+
+```csharp
+[assembly: ZLinq.ZLinqDropInAttribute("", ZLinq.DropInGenerateTypes.Everything)]
+```
+
+This is the most aggressive configuration, causing all LINQ methods to be processed by ZLinq, and making it impossible to use normal LINQ methods (if Enumerable is not included, you can call AsEnumerable() to execute with System.Linq).
+
+While ZLinq offers superior performance, there are some differences from System.Linq.
+For instance, be aware that you cannot store it in fields or pass it as method arguments.
+For example, you cannot pass LINQ operations to `string.Join`.
+In such cases, you need to use `ToArray` (if you want to minimize allocations, you can use `ToArrayPool` and return it to the Pool after the Join operation).
+
+> I recommend considering `Everything` to have too strong of side effects, so it would be better to try using namespaces and `DropInGenerateTypes.Collection`.
+
+Other options for `ZLinqDropInAttribute` include `GenerateAsPublic`, `ConditionalCompilationSymbols`, and `DisableEmitSource`.
+
+LINQ to Tree
+---
+LINQ to XML introduced the concept of querying around axes to C#. Even if you don't use XML, similar APIs are incorporated into Roslyn and effectively used for exploring SyntaxTrees. ZLinq extends this concept to make it applicable to anything that can be considered a Tree, allowing `Ancestors`, `Children`, `Descendants`, `BeforeSelf`, and `AfterSelf` to be applied.
+
+
+
+Specifically, by defining a struct that implements the following interface, it becomes iterable:
+
+```csharp
+public interface ITraverser : IDisposable
+ where TTraverser : struct, ITraverser // self
+{
+ T Origin { get; }
+ TTraverser ConvertToTraverser(T next); // for Descendants
+ bool TryGetHasChild(out bool hasChild); // optional: optimize use for Descendants
+ bool TryGetChildCount(out int count); // optional: optimize use for Children
+ bool TryGetParent(out T parent); // for Ancestors
+ bool TryGetNextChild(out T child); // for Children | Descendants
+ bool TryGetNextSibling(out T next); // for AfterSelf
+ bool TryGetPreviousSibling(out T previous); // BeforeSelf
+}
+```
+
+Standard packages are available for FileSystemInfo and JsonNode. For Unity, it's applicable to GameObject and Transform.
+
+### FileSystem
+
+```bash
+dotnet add package ZLinq.FileSystem
+```
+
+```csharp
+using ZLinq;
+
+var root = new DirectoryInfo("C:\\Program Files (x86)\\Steam");
+
+// FileSystemInfo(FileInfo/DirectoryInfo) can call `Ancestors`, `Children`, `Descendants`, `BeforeSelf`, `AfterSelf`
+var allDlls = root
+ .Descendants()
+ .OfType()
+ .Where(x => x.Extension == ".dll");
+
+var grouped = allDlls
+ .GroupBy(x => x.Name)
+ .Select(x => new { FileName = x.Key, Count = x.Count() })
+ .OrderByDescending(x => x.Count);
+
+foreach (var item in grouped)
+{
+ Console.WriteLine(item);
+}
+```
+
+### JSON(System.Text.Json)
+
+```bash
+dotnet add package ZLinq.Json
+```
+
+```csharp
+using ZLinq;
+
+// System.Text.Json's JsonNode is the target of LINQ to JSON(not JsonDocument/JsonElement).
+var json = JsonNode.Parse("""
+{
+ "nesting": {
+ "level1": {
+ "description": "First level of nesting",
+ "value": 100,
+ "level2": {
+ "description": "Second level of nesting",
+ "flags": [true, false, true],
+ "level3": {
+ "description": "Third level of nesting",
+ "coordinates": {
+ "x": 10.5,
+ "y": 20.75,
+ "z": -5.0
+ },
+ "level4": {
+ "description": "Fourth level of nesting",
+ "metadata": {
+ "created": "2025-02-15T14:30:00Z",
+ "modified": null,
+ "version": 2.1
+ },
+ "level5": {
+ "description": "Fifth level of nesting",
+ "settings": {
+ "enabled": true,
+ "threshold": 0.85,
+ "options": ["fast", "accurate", "balanced"],
+ "config": {
+ "timeout": 30000,
+ "retries": 3,
+ "deepSetting": {
+ "algorithm": "advanced",
+ "parameters": [1, 1, 2, 3, 5, 8, 13]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+""");
+
+// JsonNode
+var origin = json!["nesting"]!["level1"]!["level2"]!;
+
+// JsonNode axis, Children, Descendants, Anestors, BeforeSelf, AfterSelf and ***Self.
+foreach (var item in origin.Descendants().Select(x => x.Node).OfType())
+{
+ // [true, false, true], ["fast", "accurate", "balanced"], [1, 1, 2, 3, 5, 8, 13]
+ Console.WriteLine(item.ToJsonString(JsonSerializerOptions.Web));
+}
+```
+
+### GameObject/Transfrom(Unity)
+
+see: [unity](#unity) section.
+
+LINQ to SIMD
+---
+WIP
+
+Unity
+---
+The minimum supported Unity version will be `2022.3.12f1`, as it is necessary to support C# Incremental Source Generator(Compiler Version, 4.3.0).
+
+There are two installation steps required to use it in Unity.
+
+1. Install `ZLinq` from NuGet using [NuGetForUnity](https://github.com/GlitchEnzo/NuGetForUnity)
+Open Window from NuGet -> Manage NuGet Packages, Search "ZLinq" and Press Install.
+
+2. Install the `ZLinq.Unity` package by referencing the git URL
+
+```bash
+https://github.com/Cysharp/ZLinq.git?path=src/ZLinq.Unity/Assets/ZLinq.Unity
+```
+
+With the help of the Unity package, in addition to the standard ZLinq, LINQ to GameObject functionality becomes available for exploring GameObject/Transform.
+
+
+
+```csharp
+using ZLinq;
+
+public class SampleScript : MonoBehaviour
+{
+ public Transform Origin;
+
+ void Start()
+ {
+ Debug.Log("Ancestors--------------"); // Container, Root
+ foreach (var item in Origin.Ancestors()) Debug.Log(item.name);
+
+ Debug.Log("Children--------------"); // Sphere_A, Sphere_B, Group, Sphere_A, Sphere_B
+ foreach (var item in Origin.Children()) Debug.Log(item.name);
+
+ Debug.Log("Descendants--------------"); // Sphere_A, Sphere_B, Group, P1, Group, Sphere_B, P2, Sphere_A, Sphere_B
+ foreach (var item in Origin.Descendants()) Debug.Log(item.name);
+
+ Debug.Log("BeforeSelf--------------"); // C1, C2
+ foreach (var item in Origin.BeforeSelf()) Debug.Log(item.name);
+
+ Debug.Log("AfterSelf--------------"); // C3, C4
+ foreach (var item in Origin.AfterSelf()) Debug.Log(item.name);
+ }
+}
+```
+
+You can chain query(LINQ to Objects). Also, you can filter by component using the `OfComponent` helper.
+
+```csharp
+// all filtered(tag == "foobar") objects
+var foobars = root.Descendants().Where(x => x.tag == "foobar");
+
+// get FooScript under self childer objects and self
+var fooScripts = root.ChildrenAndSelf().OfComponent();
+```
+
+In .NET 9, `ValueEnumerable` is a `ref struct`, so it cannot be converted to `IEnumerable`. However, in Unity it's a regular `struct`, making it possible to convert to `IEnumerable`. You can improve interoperability by preparing an extension method like this:
+
+```csharp
+public static class ZLinqExtensions
+{
+ public static IEnumerable AsEnumerable(this ValueEnumerable valueEnumerable)
+ where TEnumerator : struct, IValueEnumerator
+ {
+ using (var e = valueEnumerable.Enumerator)
+ {
+ while (e.TryGetNext(out var current))
+ {
+ yield return current;
+ }
+ }
+ }
+}
+```
+
+Godot
+---
+The minimum supported Godot version will be `4.0.0`.
+You can install ZLinq.Godot package via NuGet.
+
+```bash
+dotnet add package ZLinq.Godot
+```
+
+In addition to the standard ZLinq, LINQ to Node functionality is available.
+
+
+
+```csharp
+using Godot;
+using ZLinq;
+
+public partial class SampleScript : Node2D
+{
+ public override void _Ready()
+ {
+ var origin = GetNode("Container/Origin");
+
+ GD.Print("Ancestors--------------"); // Container, Root, root (Root Window)
+ foreach (var item in origin.Ancestors()) GD.Print(item.Name);
+
+ GD.Print("Children--------------"); // Sphere_A, Sphere_B, Group, Sphere_A, Sphere_B
+ foreach (var item in origin.Children()) GD.Print(item.Name);
+
+ GD.Print("Descendants--------------"); // Sphere_A, Sphere_B, Group, P1, Group, Sphere_B, P2, Sphere_A, Sphere_B
+ foreach (var item in origin.Descendants()) GD.Print(item.Name);
+
+ GD.Print("BeforeSelf--------------"); // C1, C2
+ foreach (var item in origin.BeforeSelf()) GD.Print(item.Name);
+
+ GD.Print("AfterSelf--------------"); // C3, C4
+ foreach (var item in origin.AfterSelf()) GD.Print(item.Name);
+ }
+}
+
+```
+
+You can chain query(LINQ to Objects). Also, you can filter by node type using the `OfType()`.
+
+```csharp
+// get ancestors under a Window
+var ancestors = root.Ancestors().TakeWhile(x => x is not Window);
+// get FooScript under self childer objects and self
+var fooScripts = root.ChildrenAndSelf().OfType(default(FooScript));
+```
+
+Acknowledgement
+---
+Since the preview version release, we have received multiple ideas for fundamental interface revisions leading to performance improvements from [@Akeit0](https://github.com/Akeit0), and test and benchmark infrastructure from [@filzrev](https://github.com/filzrev). We are grateful for their many contributions.
+
+License
+---
+This library is under MIT License.
diff --git a/Assets/Packages/ZLinq.0.7.2/README.md.meta b/Assets/Packages/ZLinq.0.7.2/README.md.meta
new file mode 100644
index 0000000..d3c885e
--- /dev/null
+++ b/Assets/Packages/ZLinq.0.7.2/README.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: cb910fd8873d693438b9e3fb7ea7732d
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/ZLinq.0.7.2/ZLinq.nuspec b/Assets/Packages/ZLinq.0.7.2/ZLinq.nuspec
new file mode 100644
index 0000000..a5d3ea9
--- /dev/null
+++ b/Assets/Packages/ZLinq.0.7.2/ZLinq.nuspec
@@ -0,0 +1,30 @@
+
+
+
+ ZLinq
+ 0.7.2
+ Cysharp
+ MIT
+ https://licenses.nuget.org/MIT
+ Icon.png
+ README.md
+ https://github.com/Cysharp/ZLinq
+ Zero allocation LINQ with Span and LINQ to SIMD, LINQ to Tree (FileSystem, Json, GameObject, etc.) for all .NET platforms and Unity.
+ © Cysharp, Inc.
+ linq
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Packages/ZLinq.0.7.2/ZLinq.nuspec.meta b/Assets/Packages/ZLinq.0.7.2/ZLinq.nuspec.meta
new file mode 100644
index 0000000..12b19f6
--- /dev/null
+++ b/Assets/Packages/ZLinq.0.7.2/ZLinq.nuspec.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0d009b889ab0156408cc95c747ee0de1
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/ZLinq.0.7.2/lib.meta b/Assets/Packages/ZLinq.0.7.2/lib.meta
new file mode 100644
index 0000000..5b26656
--- /dev/null
+++ b/Assets/Packages/ZLinq.0.7.2/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 216ee23634200884184c8bb1f1463e1a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/ZLinq.0.7.2/lib/netstandard2.1.meta b/Assets/Packages/ZLinq.0.7.2/lib/netstandard2.1.meta
new file mode 100644
index 0000000..acd425a
--- /dev/null
+++ b/Assets/Packages/ZLinq.0.7.2/lib/netstandard2.1.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6b5e5d302850ceb438afffb3c7afc143
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/ZLinq.0.7.2/lib/netstandard2.1/ZLinq.dll b/Assets/Packages/ZLinq.0.7.2/lib/netstandard2.1/ZLinq.dll
new file mode 100644
index 0000000..3ba5fc7
Binary files /dev/null and b/Assets/Packages/ZLinq.0.7.2/lib/netstandard2.1/ZLinq.dll differ
diff --git a/Assets/Packages/ZLinq.0.7.2/lib/netstandard2.1/ZLinq.dll.meta b/Assets/Packages/ZLinq.0.7.2/lib/netstandard2.1/ZLinq.dll.meta
new file mode 100644
index 0000000..b64a5be
--- /dev/null
+++ b/Assets/Packages/ZLinq.0.7.2/lib/netstandard2.1/ZLinq.dll.meta
@@ -0,0 +1,29 @@
+fileFormatVersion: 2
+guid: e480b8594db187c44bf93a008da3e5a2
+labels:
+- NuGetForUnity
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 3
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ Any:
+ enabled: 1
+ settings: {}
+ Editor:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ WindowsStoreApps:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta
new file mode 100644
index 0000000..4101c07
--- /dev/null
+++ b/Assets/Plugins.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2c6680365ad973245bd1620347e5e49f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Borodar.meta b/Assets/Plugins/Borodar.meta
new file mode 100644
index 0000000..9df19e3
--- /dev/null
+++ b/Assets/Plugins/Borodar.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 021b37bf285b08d499dc9bccf02dcf4a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Borodar/RainbowFolders.meta b/Assets/Plugins/Borodar/RainbowFolders.meta
new file mode 100644
index 0000000..840e4d3
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 5c801c8e8717c834ebad879261ad5584
+folderAsset: yes
+timeCreated: 1445441003
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor.meta
new file mode 100644
index 0000000..54ba6ed
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: fc6c22ab2ea5043bf8788e4a41ef31a3
+folderAsset: yes
+timeCreated: 1445169651
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/Data.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/Data.meta
new file mode 100644
index 0000000..1b6a42a
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/Data.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 0ecb47ca86e1a3d4e870b90b8cd607f6
+folderAsset: yes
+timeCreated: 1481210654
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/Data/RainbowFoldersRuleset.asset b/Assets/Plugins/Borodar/RainbowFolders/Editor/Data/RainbowFoldersRuleset.asset
new file mode 100644
index 0000000..ef5f617
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/Data/RainbowFoldersRuleset.asset
@@ -0,0 +1,363 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a8d342d38ae103540966b0e54b202c36, type: 3}
+ m_Name: RainbowFoldersRuleset
+ m_EditorClassIdentifier:
+ Rules:
+ - Type: 0
+ Key: Animations
+ Ordinal: 0
+ Priority: 0
+ IconType: 2010
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Audio
+ Ordinal: 1
+ Priority: 0
+ IconType: 2020
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Editor
+ Ordinal: 2
+ Priority: 0
+ IconType: 2030
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Data
+ Ordinal: 3
+ Priority: 0
+ IconType: 2140
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 1
+ Key: Assets/Editor Default Resources
+ Ordinal: 4
+ Priority: 0
+ IconType: 2140
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Extensions
+ Ordinal: 5
+ Priority: 0
+ IconType: 2040
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Fonts
+ Ordinal: 6
+ Priority: 0
+ IconType: 2060
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Icons
+ Ordinal: 7
+ Priority: 0
+ IconType: 2190
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Materials
+ Ordinal: 8
+ Priority: 0
+ IconType: 2070
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Meshes
+ Ordinal: 9
+ Priority: 0
+ IconType: 2080
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Plugins
+ Ordinal: 10
+ Priority: 0
+ IconType: 2100
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Prefabs
+ Ordinal: 11
+ Priority: 0
+ IconType: 2110
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Project
+ Ordinal: 12
+ Priority: 0
+ IconType: 2120
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Resources
+ Ordinal: 13
+ Priority: 0
+ IconType: 2140
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Scenes
+ Ordinal: 14
+ Priority: 0
+ IconType: 2150
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Scripts
+ Ordinal: 15
+ Priority: 0
+ IconType: 2160
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Shaders
+ Ordinal: 16
+ Priority: 0
+ IconType: 2170
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Terrains
+ Ordinal: 17
+ Priority: 0
+ IconType: 2180
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Textures
+ Ordinal: 18
+ Priority: 0
+ IconType: 2190
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Physics
+ Ordinal: 19
+ Priority: 0
+ IconType: 2090
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Flares
+ Ordinal: 20
+ Priority: 0
+ IconType: 2050
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Android
+ Ordinal: 21
+ Priority: 0
+ IconType: 3000
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: iOS
+ Ordinal: 22
+ Priority: 0
+ IconType: 3010
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Windows
+ Ordinal: 23
+ Priority: 0
+ IconType: 3040
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: Mac
+ Ordinal: 24
+ Priority: 0
+ IconType: 3020
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 0
+ Key: WebGL
+ Ordinal: 25
+ Priority: 0
+ IconType: 3030
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 1
+ Key: Assets/Plugins/Borodar
+ Ordinal: 26
+ Priority: 0
+ IconType: 2130
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 0
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 1
+ Key: Assets/RebootKit
+ Ordinal: 27
+ Priority: 0
+ IconType: 2690
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 200
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
+ - Type: 1
+ Key: Assets/jelycho
+ Ordinal: 28
+ Priority: 0
+ IconType: 30
+ SmallIcon: {fileID: 0}
+ LargeIcon: {fileID: 0}
+ IsIconRecursive: 0
+ BackgroundType: 30
+ BackgroundTexture: {fileID: 0}
+ IsBackgroundRecursive: 0
+ IsHidden: 0
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/Data/RainbowFoldersRuleset.asset.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/Data/RainbowFoldersRuleset.asset.meta
new file mode 100644
index 0000000..a66cf81
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/Data/RainbowFoldersRuleset.asset.meta
@@ -0,0 +1,15 @@
+fileFormatVersion: 2
+guid: fa7356be190e0474a9cf0e33962c531e
+timeCreated: 1465749632
+licenseType: Store
+NativeFormatImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 143526
+ packageName: Rainbow Folders 2
+ packageVersion: 2.4.2
+ assetPath: Assets/Plugins/Borodar/RainbowFolders/Editor/Data/RainbowFoldersRuleset.asset
+ uploadId: 716027
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList.meta
new file mode 100644
index 0000000..5ee6063
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 6e1ef84b148a0024fb82f4e5d1b6db9e
+folderAsset: yes
+timeCreated: 1466769344
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/LICENSE b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/LICENSE
new file mode 100644
index 0000000..e348cd8
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Chris Foulston
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/LICENSE.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/LICENSE.meta
new file mode 100644
index 0000000..4d67603
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/LICENSE.meta
@@ -0,0 +1,14 @@
+fileFormatVersion: 2
+guid: ab74623b8b4c7774cb7ce95730a03f28
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 143526
+ packageName: Rainbow Folders 2
+ packageVersion: 2.4.2
+ assetPath: Assets/Plugins/Borodar/RainbowFolders/Editor/RList/LICENSE
+ uploadId: 716027
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableArray.cs b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableArray.cs
new file mode 100644
index 0000000..dd2d206
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableArray.cs
@@ -0,0 +1,110 @@
+using UnityEngine;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Borodar.RainbowFolders.RList {
+
+ [Serializable]
+ public abstract class ReorderableArray : ICloneable, IList, ICollection, IEnumerable {
+
+ [SerializeField]
+ private List array = new List();
+
+ public ReorderableArray()
+ : this(0) {
+ }
+
+ public ReorderableArray(int length) {
+
+ array = new List(length);
+ }
+
+ public T this[int index] {
+
+ get { return array[index]; }
+ set { array[index] = value; }
+ }
+
+ public int Length {
+
+ get { return array.Count; }
+ }
+
+ public bool IsReadOnly {
+
+ get { return false; }
+ }
+
+ public int Count {
+
+ get { return array.Count; }
+ }
+
+ public object Clone() {
+
+ return new List(array);
+ }
+
+ public void CopyFrom(IEnumerable value) {
+
+ array.Clear();
+ array.AddRange(value);
+ }
+
+ public bool Contains(T value) {
+
+ return array.Contains(value);
+ }
+
+ public int IndexOf(T value) {
+
+ return array.IndexOf(value);
+ }
+
+ public void Insert(int index, T item) {
+
+ array.Insert(index, item);
+ }
+
+ public void RemoveAt(int index) {
+
+ array.RemoveAt(index);
+ }
+
+ public void Add(T item) {
+
+ array.Add(item);
+ }
+
+ public void Clear() {
+
+ array.Clear();
+ }
+
+ public void CopyTo(T[] array, int arrayIndex) {
+
+ this.array.CopyTo(array, arrayIndex);
+ }
+
+ public bool Remove(T item) {
+
+ return array.Remove(item);
+ }
+
+ public T[] ToArray() {
+
+ return array.ToArray();
+ }
+
+ public IEnumerator GetEnumerator() {
+
+ return array.GetEnumerator();
+ }
+
+ IEnumerator IEnumerable.GetEnumerator() {
+
+ return array.GetEnumerator();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableArray.cs.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableArray.cs.meta
new file mode 100644
index 0000000..8692e6e
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableArray.cs.meta
@@ -0,0 +1,19 @@
+fileFormatVersion: 2
+guid: 5132fa5788b8a7347b370fa5d071c913
+timeCreated: 1436466574
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 143526
+ packageName: Rainbow Folders 2
+ packageVersion: 2.4.2
+ assetPath: Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableArray.cs
+ uploadId: 716027
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableAttribute.cs b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableAttribute.cs
new file mode 100644
index 0000000..bdc2996
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableAttribute.cs
@@ -0,0 +1,53 @@
+using UnityEngine;
+using System;
+
+namespace Borodar.RainbowFolders.RList {
+
+ public class ReorderableAttribute : PropertyAttribute {
+
+ public bool add;
+ public bool remove;
+ public bool draggable;
+ public bool singleLine;
+ public bool paginate;
+ public bool sortable;
+ public int pageSize;
+ public string elementNameProperty;
+ public string elementNameOverride;
+ public string elementIconPath;
+ public Type surrogateType;
+ public string surrogateProperty;
+
+ public ReorderableAttribute()
+ : this(null) {
+ }
+
+ public ReorderableAttribute(string elementNameProperty)
+ : this(true, true, true, elementNameProperty, null, null) {
+ }
+
+ public ReorderableAttribute(string elementNameProperty, string elementIconPath)
+ : this(true, true, true, elementNameProperty, null, elementIconPath) {
+ }
+
+ public ReorderableAttribute(string elementNameProperty, string elementNameOverride, string elementIconPath)
+ : this(true, true, true, elementNameProperty, elementNameOverride, elementIconPath) {
+ }
+
+ public ReorderableAttribute(bool add, bool remove, bool draggable, string elementNameProperty = null, string elementIconPath = null)
+ : this(add, remove, draggable, elementNameProperty, null, elementIconPath) {
+ }
+
+ public ReorderableAttribute(bool add, bool remove, bool draggable, string elementNameProperty = null, string elementNameOverride = null, string elementIconPath = null) {
+
+ this.add = add;
+ this.remove = remove;
+ this.draggable = draggable;
+ this.elementNameProperty = elementNameProperty;
+ this.elementNameOverride = elementNameOverride;
+ this.elementIconPath = elementIconPath;
+
+ sortable = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableAttribute.cs.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableAttribute.cs.meta
new file mode 100644
index 0000000..8c78ec3
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableAttribute.cs.meta
@@ -0,0 +1,19 @@
+fileFormatVersion: 2
+guid: af18777bcf6ae2c47a02c3ff8adabb0e
+timeCreated: 1434664597
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 143526
+ packageName: Rainbow Folders 2
+ packageVersion: 2.4.2
+ assetPath: Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableAttribute.cs
+ uploadId: 716027
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableDrawer.cs b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableDrawer.cs
new file mode 100644
index 0000000..0d3135e
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableDrawer.cs
@@ -0,0 +1,141 @@
+using System;
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+using Object = UnityEngine.Object;
+
+namespace Borodar.RainbowFolders.RList {
+
+ [CustomPropertyDrawer(typeof(ReorderableAttribute))]
+ public class ReorderableDrawer : PropertyDrawer {
+
+ public const string ARRAY_PROPERTY_NAME = "array";
+
+ private static Dictionary lists = new Dictionary();
+
+ [Obsolete("CanCacheInspectorGUI has been deprecated and is no longer used.", false)]
+ public override bool CanCacheInspectorGUI(SerializedProperty property) {
+
+ return false;
+ }
+
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label) {
+
+ ReorderableList list = GetList(property, attribute as ReorderableAttribute, ARRAY_PROPERTY_NAME);
+
+ return list != null ? list.GetHeight() : EditorGUIUtility.singleLineHeight;
+ }
+
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
+
+ ReorderableList list = GetList(property, attribute as ReorderableAttribute, ARRAY_PROPERTY_NAME);
+
+ if (list != null) {
+
+ list.DoList(EditorGUI.IndentedRect(position), label);
+ }
+ else {
+
+ GUI.Label(position, "Array must extend from ReorderableArray", EditorStyles.label);
+ }
+ }
+
+ public static int GetListId(SerializedProperty property) {
+
+ if (property != null) {
+
+ int h1 = property.serializedObject.targetObject.GetHashCode();
+ int h2 = property.propertyPath.GetHashCode();
+
+ return (((h1 << 5) + h1) ^ h2);
+ }
+
+ return 0;
+ }
+
+ public static ReorderableList GetList(SerializedProperty property, string arrayPropertyName) {
+
+ return GetList(property, null, GetListId(property), arrayPropertyName);
+ }
+
+ public static ReorderableList GetList(SerializedProperty property, ReorderableAttribute attrib, string arrayPropertyName) {
+
+ return GetList(property, attrib, GetListId(property), arrayPropertyName);
+ }
+
+ public static ReorderableList GetList(SerializedProperty property, int id, string arrayPropertyName) {
+
+ return GetList(property, null, id, arrayPropertyName);
+ }
+
+ public static ReorderableList GetList(SerializedProperty property, ReorderableAttribute attrib, int id, string arrayPropertyName) {
+
+ if (property == null) {
+
+ return null;
+ }
+
+ ReorderableList list = null;
+ SerializedProperty array = property.FindPropertyRelative(arrayPropertyName);
+
+ if (array != null && array.isArray) {
+
+ if (!lists.TryGetValue(id, out list)) {
+
+ if (attrib != null) {
+
+ Texture icon = !string.IsNullOrEmpty(attrib.elementIconPath) ? AssetDatabase.GetCachedIcon(attrib.elementIconPath) : null;
+
+ ReorderableList.ElementDisplayType displayType = attrib.singleLine ? ReorderableList.ElementDisplayType.SingleLine : ReorderableList.ElementDisplayType.Auto;
+
+ list = new ReorderableList(array, attrib.add, attrib.remove, attrib.draggable, displayType, attrib.elementNameProperty, attrib.elementNameOverride, icon);
+ list.paginate = attrib.paginate;
+ list.pageSize = attrib.pageSize;
+ list.sortable = attrib.sortable;
+
+ //handle surrogate if any
+
+ if (attrib.surrogateType != null) {
+
+ SurrogateCallback callback = new SurrogateCallback(attrib.surrogateProperty);
+
+ list.surrogate = new ReorderableList.Surrogate(attrib.surrogateType, callback.SetReference);
+ }
+ }
+ else {
+
+ list = new ReorderableList(array, true, true, true);
+ }
+
+ lists.Add(id, list);
+ }
+ else {
+
+ list.List = array;
+ }
+ }
+
+ return list;
+ }
+
+ private struct SurrogateCallback {
+
+ private string property;
+
+ internal SurrogateCallback(string property) {
+
+ this.property = property;
+ }
+
+ internal void SetReference(SerializedProperty element, Object objectReference, ReorderableList list) {
+
+ SerializedProperty prop = !string.IsNullOrEmpty(property) ? element.FindPropertyRelative(property) : null;
+
+ if (prop != null && prop.propertyType == SerializedPropertyType.ObjectReference) {
+
+ prop.objectReferenceValue = objectReference;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableDrawer.cs.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableDrawer.cs.meta
new file mode 100644
index 0000000..cd0e93b
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableDrawer.cs.meta
@@ -0,0 +1,19 @@
+fileFormatVersion: 2
+guid: 3b5cb2f0917b1f34f8aceb725a71bfe7
+timeCreated: 1491846866
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 143526
+ packageName: Rainbow Folders 2
+ packageVersion: 2.4.2
+ assetPath: Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableDrawer.cs
+ uploadId: 716027
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableList.cs b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableList.cs
new file mode 100644
index 0000000..6be41d9
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableList.cs
@@ -0,0 +1,2684 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using UnityEditor;
+using UnityEngine;
+
+namespace Borodar.RainbowFolders.RList {
+
+ public class ReorderableList {
+
+ private const float ELEMENT_EDGE_TOP = 1;
+ private const float ELEMENT_EDGE_BOT = 3;
+ private const float ELEMENT_HEIGHT_OFFSET = ELEMENT_EDGE_TOP + ELEMENT_EDGE_BOT;
+
+ private static int selectionHash = "ReorderableListSelection".GetHashCode();
+ private static int dragAndDropHash = "ReorderableListDragAndDrop".GetHashCode();
+
+ private const string EMPTY_LABEL = "List is Empty";
+ private const string ARRAY_ERROR = "{0} is not an Array!";
+
+ public enum ElementDisplayType {
+ Auto,
+ Expandable,
+ SingleLine
+ }
+
+ public delegate void DrawHeaderDelegate(Rect rect, GUIContent label);
+ public delegate void DrawFooterDelegate(Rect rect);
+ public delegate void DrawElementDelegate(Rect rect, SerializedProperty element, GUIContent label, bool selected, bool focused);
+ public delegate void ActionDelegate(ReorderableList list);
+ public delegate bool ActionBoolDelegate(ReorderableList list);
+ public delegate void AddDropdownDelegate(Rect buttonRect, ReorderableList list);
+ public delegate Object DragDropReferenceDelegate(Object[] references, ReorderableList list);
+ public delegate void DragDropAppendDelegate(Object reference, ReorderableList list);
+ public delegate float GetElementHeightDelegate(SerializedProperty element);
+ public delegate float GetElementsHeightDelegate(ReorderableList list);
+ public delegate string GetElementNameDelegate(SerializedProperty element);
+ public delegate GUIContent GetElementLabelDelegate(SerializedProperty element);
+ public delegate void SurrogateCallback(SerializedProperty element, Object objectReference, ReorderableList list);
+
+ public event DrawHeaderDelegate drawHeaderCallback;
+ public event DrawFooterDelegate drawFooterCallback;
+ public event DrawElementDelegate drawElementCallback;
+ public event DrawElementDelegate drawElementBackgroundCallback;
+ public event GetElementHeightDelegate getElementHeightCallback;
+ public event GetElementsHeightDelegate getElementsHeightCallback;
+ public event GetElementNameDelegate getElementNameCallback;
+ public event GetElementLabelDelegate getElementLabelCallback;
+ public event DragDropReferenceDelegate onValidateDragAndDropCallback;
+ public event DragDropAppendDelegate onAppendDragDropCallback;
+ public event ActionDelegate onReorderCallback;
+ public event ActionDelegate onSelectCallback;
+ public event ActionDelegate onAddCallback;
+ public event AddDropdownDelegate onAddDropdownCallback;
+ public event ActionDelegate onRemoveCallback;
+ public event ActionDelegate onMouseUpCallback;
+ public event ActionBoolDelegate onCanRemoveCallback;
+ public event ActionDelegate onChangedCallback;
+
+ public bool canAdd;
+ public bool canRemove;
+ public bool draggable;
+ public bool sortable;
+ public bool expandable;
+ public bool multipleSelection;
+ public GUIContent label;
+ public float headerHeight;
+ public float paginationHeight;
+ public float footerHeight;
+ public float slideEasing;
+ public float verticalSpacing;
+ public bool showDefaultBackground;
+ public ElementDisplayType elementDisplayType;
+ public string elementNameProperty;
+ public string elementNameOverride;
+ public bool elementLabels;
+ public Texture elementIcon;
+ public Surrogate surrogate;
+
+ public bool paginate {
+ get { return pagination.enabled; }
+ set { pagination.enabled = value; }
+ }
+
+ public int pageSize {
+ get { return pagination.pageSize; }
+ set { pagination.pageSize = value; }
+ }
+
+ internal readonly int id;
+
+ private SerializedProperty list;
+ private int controlID = -1;
+ private Rect[] elementRects;
+ private GUIContent elementLabel;
+ private GUIContent pageInfoContent;
+ private GUIContent pageSizeContent;
+ private ListSelection selection;
+ private SlideGroup slideGroup;
+ private int pressIndex;
+
+ private bool doPagination {
+
+ get { return pagination.enabled && !list.serializedObject.isEditingMultipleObjects; }
+ }
+
+ private float elementSpacing {
+
+ get { return Mathf.Max(0, verticalSpacing - 2); }
+ }
+
+ private bool dragging;
+ private float pressPosition;
+ private float dragPosition;
+ private int dragDirection;
+ private DragList dragList;
+ private ListSelection beforeDragSelection;
+ private Pagination pagination;
+
+ private int dragDropControlID = -1;
+
+ public ReorderableList(SerializedProperty list)
+ : this(list, true, true, true) {
+ }
+
+ public ReorderableList(SerializedProperty list, bool canAdd, bool canRemove, bool draggable)
+ : this(list, canAdd, canRemove, draggable, ElementDisplayType.Auto, null, null, null) {
+ }
+
+ public ReorderableList(SerializedProperty list, bool canAdd, bool canRemove, bool draggable, ElementDisplayType elementDisplayType, string elementNameProperty, Texture elementIcon)
+ : this(list, canAdd, canRemove, draggable, elementDisplayType, elementNameProperty, null, elementIcon) {
+ }
+
+ public ReorderableList(SerializedProperty list, bool canAdd, bool canRemove, bool draggable, ElementDisplayType elementDisplayType, string elementNameProperty, string elementNameOverride, Texture elementIcon) {
+
+ if (list == null) {
+
+ throw new MissingListExeption();
+ }
+ else if (!list.isArray) {
+
+ //check if user passed in a ReorderableArray, if so, that becomes the list object
+
+ SerializedProperty array = list.FindPropertyRelative("array");
+
+ if (array == null || !array.isArray) {
+
+ throw new InvalidListException();
+ }
+
+ this.list = array;
+ }
+ else {
+
+ this.list = list;
+ }
+
+ this.canAdd = canAdd;
+ this.canRemove = canRemove;
+ this.draggable = draggable;
+ this.elementDisplayType = elementDisplayType;
+ this.elementNameProperty = elementNameProperty;
+ this.elementNameOverride = elementNameOverride;
+ this.elementIcon = elementIcon;
+
+ id = GetHashCode();
+ list.isExpanded = true;
+ label = new GUIContent(list.displayName);
+ pageInfoContent = new GUIContent();
+ pageSizeContent = new GUIContent();
+
+ verticalSpacing = EditorGUIUtility.standardVerticalSpacing;
+
+ headerHeight = 18f;
+ paginationHeight = 20f;
+ footerHeight = 13f;
+ slideEasing = 0.15f;
+ expandable = true;
+ elementLabels = true;
+ showDefaultBackground = true;
+ multipleSelection = true;
+ pagination = new Pagination();
+ elementLabel = new GUIContent();
+
+ dragList = new DragList(0);
+ selection = new ListSelection();
+ slideGroup = new SlideGroup();
+ elementRects = new Rect[0];
+ }
+
+ //
+ // -- PROPERTIES --
+ //
+
+ public SerializedProperty List {
+
+ get { return list; }
+ internal set { list = value; }
+ }
+
+ public bool HasList {
+
+ get { return list != null && list.isArray; }
+ }
+
+ public int Length {
+
+ get {
+
+ if (!HasList) {
+
+ return 0;
+ }
+ else if (!list.hasMultipleDifferentValues) {
+
+ return list.arraySize;
+ }
+
+ //When multiple objects are selected, because of a Unity bug, list.arraySize is never guranteed to actually be the smallest
+ //array size. So we have to find it. Not that great since we're creating SerializedObjects here. There has to be a better way!
+
+ int smallerArraySize = list.arraySize;
+
+ foreach (Object targetObject in list.serializedObject.targetObjects) {
+
+ SerializedObject serializedObject = new SerializedObject(targetObject);
+ SerializedProperty property = serializedObject.FindProperty(list.propertyPath);
+
+ smallerArraySize = Mathf.Min(property.arraySize, smallerArraySize);
+ }
+
+ return smallerArraySize;
+ }
+ }
+
+ public int VisibleLength {
+
+ get { return pagination.GetVisibleLength(Length); }
+ }
+
+ public int[] Selected {
+
+ get { return selection.ToArray(); }
+ set { selection = new ListSelection(value); }
+ }
+
+ public int Index {
+
+ get { return selection.First; }
+ set { selection.Select(value); }
+ }
+
+ public bool IsDragging {
+
+ get { return dragging; }
+ }
+
+ //
+ // -- PUBLIC --
+ //
+
+ public float GetHeight()
+ {
+ if (HasList) {
+ var topHeight = doPagination ? headerHeight + paginationHeight : headerHeight;
+ return list.isExpanded ? topHeight + GetElementsHeight() + footerHeight : headerHeight;
+ }
+
+ return EditorGUIUtility.singleLineHeight;
+ }
+
+ public void DoLayoutList() {
+
+ Rect position = EditorGUILayout.GetControlRect(false, GetHeight(), EditorStyles.largeLabel);
+
+ DoList(EditorGUI.IndentedRect(position), label);
+ }
+
+ public void DoList(Rect rect, GUIContent label) {
+
+ int indent = EditorGUI.indentLevel;
+ EditorGUI.indentLevel = 0;
+
+ Rect headerRect = rect;
+ headerRect.height = headerHeight;
+
+ if (!HasList) {
+ DrawEmpty(headerRect, string.Format(ARRAY_ERROR, label.text), GUIStyle.none, EditorStyles.helpBox);
+ }
+ else
+ {
+ controlID = GUIUtility.GetControlID(selectionHash, FocusType.Keyboard, rect);
+ dragDropControlID = GUIUtility.GetControlID(dragAndDropHash, FocusType.Passive, rect);
+
+ DrawHeader(headerRect, label);
+
+ if (list.isExpanded) {
+ if (doPagination) {
+ Rect paginateHeaderRect = headerRect;
+ paginateHeaderRect.y += headerRect.height;
+ paginateHeaderRect.height = paginationHeight;
+
+ DrawPaginationHeader(paginateHeaderRect);
+
+ headerRect.yMax = paginateHeaderRect.yMax - 1;
+ }
+
+ Rect elementBackgroundRect = rect;
+ elementBackgroundRect.yMin = headerRect.yMax;
+ elementBackgroundRect.yMax = rect.yMax - footerHeight;
+
+ Event evt = Event.current;
+
+ if (selection.Length > 1) {
+ if (evt.type == EventType.ContextClick && CanSelect(evt.mousePosition)) {
+ HandleMultipleContextClick(evt);
+ }
+ }
+
+ if (Length > 0) {
+ //update element rects if not dragging. Dragging caches draw rects so no need to update
+ if (!dragging) {
+ UpdateElementRects(elementBackgroundRect, evt);
+ }
+
+ if (elementRects.Length > 0) {
+ int start, end;
+
+ pagination.GetVisibleRange(elementRects.Length, out start, out end);
+
+ Rect selectableRect = elementBackgroundRect;
+ selectableRect.yMin = elementRects[start].yMin;
+ selectableRect.yMax = elementRects[end - 1].yMax;
+
+ HandlePreSelection(selectableRect, evt);
+ DrawElements(elementBackgroundRect, evt);
+ HandlePostSelection(selectableRect, evt);
+ }
+ }
+ else {
+ DrawEmpty(elementBackgroundRect, EMPTY_LABEL, Style.boxBackground, Style.verticalLabel);
+ }
+
+ Rect footerRect = rect;
+ footerRect.yMin = elementBackgroundRect.yMax;
+ footerRect.xMin = rect.xMax - 58;
+
+ DrawFooter(footerRect);
+ }
+ }
+
+ EditorGUI.indentLevel = indent;
+ }
+
+ public SerializedProperty AddItem(T item) where T : Object {
+
+ SerializedProperty property = AddItem();
+
+ if (property != null) {
+
+ property.objectReferenceValue = item;
+ }
+
+ return property;
+ }
+
+ public SerializedProperty AddItem() {
+
+ if (HasList) {
+
+ //TODO Validate add on multiple selected objects
+
+ list.arraySize++;
+ selection.Select(list.arraySize - 1);
+
+ SetPageByIndex(list.arraySize - 1);
+ DispatchChange();
+
+ return list.GetArrayElementAtIndex(selection.Last);
+ }
+ else {
+
+ throw new InvalidListException();
+ }
+ }
+
+ public void Remove(int[] selection) {
+
+ System.Array.Sort(selection);
+
+ int i = selection.Length;
+
+ while (--i > -1) {
+
+ RemoveItem(selection[i]);
+ }
+ }
+
+ public void RemoveItem(int index) {
+
+ if (index >= 0 && index < Length) {
+
+ SerializedProperty property = list.GetArrayElementAtIndex(index);
+
+ if (property.propertyType == SerializedPropertyType.ObjectReference && property.objectReferenceValue) {
+
+ property.objectReferenceValue = null;
+ }
+
+ list.DeleteArrayElementAtIndex(index);
+ selection.Remove(index);
+
+ //TODO Validate removal on multiple selected objects
+
+ if (Length > 0) {
+ selection.Select(Mathf.Max(0, index - 1));
+ }
+
+ DispatchChange();
+ }
+ }
+
+ public SerializedProperty GetItem(int index) {
+
+ if (index >= 0 && index < Length) {
+
+ return list.GetArrayElementAtIndex(index);
+ }
+ else {
+
+ return null;
+ }
+ }
+
+ public int IndexOf(SerializedProperty element) {
+
+ if (element != null) {
+
+ int i = Length;
+
+ while (--i > -1) {
+
+ if (SerializedProperty.EqualContents(element, list.GetArrayElementAtIndex(i))) {
+
+ return i;
+ }
+ }
+ }
+
+ return -1;
+ }
+
+ public void GrabKeyboardFocus() {
+
+ GUIUtility.keyboardControl = id;
+ }
+
+ public bool HasKeyboardControl() {
+
+ return GUIUtility.keyboardControl == id;
+ }
+
+ public void ReleaseKeyboardFocus() {
+
+ if (GUIUtility.keyboardControl == id) {
+
+ GUIUtility.keyboardControl = 0;
+ }
+ }
+
+ public void SetPage(int page) {
+
+ if (doPagination) {
+
+ pagination.page = page;
+ }
+ }
+
+ public void SetPageByIndex(int index) {
+
+ if (doPagination) {
+
+ pagination.page = pagination.GetPageForIndex(index);
+ }
+ }
+
+ public int GetPage(int index) {
+
+ return doPagination ? pagination.page : 0;
+ }
+
+ public int GetPageByIndex(int index) {
+
+ return doPagination ? pagination.GetPageForIndex(index) : 0;
+ }
+
+ //
+ // -- PRIVATE --
+ //
+
+ private float GetElementsHeight() {
+
+ if (getElementsHeightCallback != null) {
+
+ return getElementsHeightCallback(this);
+ }
+
+ int i, len = Length;
+
+ if (len == 0) {
+
+ return 28;
+ }
+
+ float totalHeight = 0;
+ float spacing = elementSpacing;
+
+ int start, end;
+
+ pagination.GetVisibleRange(len, out start, out end);
+
+ for (i = start; i < end; i++) {
+
+ totalHeight += GetElementHeight(list.GetArrayElementAtIndex(i)) + spacing;
+ }
+
+ return totalHeight + 7 - spacing;
+ }
+
+ private float GetElementHeight(SerializedProperty element) {
+
+ if (getElementHeightCallback != null) {
+
+ return getElementHeightCallback(element) + ELEMENT_HEIGHT_OFFSET;
+ }
+ else
+ {
+ var height = EditorGUI.GetPropertyHeight(element, GetElementLabel(element, elementLabels),IsElementExpandable(element));
+ height = (height > 0) ? height + ELEMENT_HEIGHT_OFFSET : height;
+ return height;
+ }
+ }
+
+ private Rect GetElementDrawRect(int index, Rect desiredRect) {
+
+ if (slideEasing <= 0) {
+
+ return desiredRect;
+ }
+ else {
+
+ //lerp the drag easing toward slide easing, this creates a stronger easing at the start then slower at the end
+ //when dealing with large lists, we can
+
+ return dragging ? slideGroup.GetRect(dragList[index].startIndex, desiredRect, slideEasing) : slideGroup.SetRect(index, desiredRect);
+ }
+ }
+
+ /*
+ private Rect GetElementHeaderRect(SerializedProperty element, Rect elementRect) {
+
+ Rect rect = elementRect;
+ rect.height = EditorGUIUtility.singleLineHeight + verticalSpacing;
+
+ return rect;
+ }
+ */
+
+ private Rect GetElementRenderRect(SerializedProperty element, Rect elementRect) {
+
+ float offset = draggable ? 20 : 5;
+
+ Rect rect = elementRect;
+ rect.xMin += IsElementExpandable(element) ? offset + 10 : offset;
+ rect.xMax -= 6;
+ rect.yMin += ELEMENT_EDGE_TOP;
+ rect.yMax -= ELEMENT_EDGE_BOT;
+
+ return rect;
+ }
+
+ private void DrawHeader(Rect rect, GUIContent label) {
+
+ if (showDefaultBackground && Event.current.type == EventType.Repaint) {
+
+ Style.headerBackground.Draw(rect, false, false, false, false);
+ }
+
+ HandleDragAndDrop(rect, Event.current);
+
+ bool multiline = elementDisplayType != ElementDisplayType.SingleLine;
+
+ Rect titleRect = rect;
+ titleRect.xMin += 6f;
+ titleRect.xMax -= multiline ? 95f : 55f;
+ titleRect.height -= 2f;
+ titleRect.y++;
+
+ label = EditorGUI.BeginProperty(titleRect, label, list);
+
+ if (drawHeaderCallback != null) {
+
+ drawHeaderCallback(titleRect, label);
+ }
+ else if (expandable) {
+
+ titleRect.xMin += 10;
+
+ EditorGUI.BeginChangeCheck();
+
+ bool isExpanded = EditorGUI.Foldout(titleRect, list.isExpanded, label, true);
+
+ if (EditorGUI.EndChangeCheck()) {
+
+ list.isExpanded = isExpanded;
+ }
+ }
+ else {
+ GUI.Label(titleRect, label, EditorStyles.label);
+ }
+
+ EditorGUI.EndProperty();
+
+ if (multiline) {
+
+ Rect bRect1 = rect;
+ bRect1.xMin = rect.xMax - 25;
+ bRect1.xMax = rect.xMax - 5;
+
+ if (GUI.Button(bRect1, Style.expandButton, Style.preButton)) {
+
+ ExpandElements(true);
+ }
+
+ Rect bRect2 = rect;
+ bRect2.xMin = bRect1.xMin - 20;
+ bRect2.xMax = bRect1.xMin;
+
+ if (GUI.Button(bRect2, Style.collapseButton, Style.preButton)) {
+
+ ExpandElements(false);
+ }
+
+ rect.xMax = bRect2.xMin + 5;
+ }
+
+ //draw sorting options
+
+ if (sortable) {
+
+ Rect sortRect1 = rect;
+ sortRect1.xMin = rect.xMax - 25;
+ sortRect1.xMax = rect.xMax;
+
+ Rect sortRect2 = rect;
+ sortRect2.xMin = sortRect1.xMin - 20;
+ sortRect2.xMax = sortRect1.xMin;
+
+ if (EditorGUI.DropdownButton(sortRect1, Style.sortAscending, FocusType.Passive, Style.preButton)) {
+
+ SortElements(sortRect1, false);
+ }
+
+ if (EditorGUI.DropdownButton(sortRect2, Style.sortDescending, FocusType.Passive, Style.preButton)) {
+
+ SortElements(sortRect2, true);
+ }
+ }
+ }
+
+ private void ExpandElements(bool expand) {
+
+ if (!list.isExpanded && expand) {
+
+ list.isExpanded = true;
+ }
+
+ int i, len = Length;
+
+ for (i = 0; i < len; i++) {
+
+ list.GetArrayElementAtIndex(i).isExpanded = expand;
+ }
+ }
+
+ private void SortElements(Rect rect, bool descending) {
+
+ int total = Length;
+
+ //no point in sorting a list with 1 element!
+
+ if (total <= 1) {
+
+ return;
+ }
+
+ //the first property tells us what type of items are in the list
+ //if generic, then we give the user a list of properties to sort on
+
+ SerializedProperty prop = list.GetArrayElementAtIndex(0);
+
+ if (prop.propertyType == SerializedPropertyType.Generic) {
+
+ GenericMenu menu = new GenericMenu();
+
+ SerializedProperty property = prop.Copy();
+ SerializedProperty end = property.GetEndProperty();
+
+ bool enterChildren = true;
+
+ while (property.NextVisible(enterChildren) && !SerializedProperty.EqualContents(property, end)) {
+
+ menu.AddItem(new GUIContent(property.name), false, userData => {
+
+ //sort based on the property selected then apply the changes
+
+ ListSort.SortOnProperty(list, total, descending, (string)userData);
+
+ ApplyReorder();
+
+ HandleUtility.Repaint();
+
+ }, property.name);
+
+ enterChildren = false;
+ }
+
+ menu.DropDown(rect);
+ }
+ else {
+
+ //list is not generic, so we just sort directly on the type then apply the changes
+
+ ListSort.SortOnType(list, total, descending, prop.propertyType);
+
+ ApplyReorder();
+ }
+ }
+
+ private void DrawEmpty(Rect rect, string label, GUIStyle backgroundStyle, GUIStyle labelStyle) {
+
+ if (showDefaultBackground && Event.current.type == EventType.Repaint) {
+
+ backgroundStyle.Draw(rect, false, false, false, false);
+ }
+
+ EditorGUI.LabelField(rect, label, labelStyle);
+ }
+
+ private void UpdateElementRects(Rect rect, Event evt) {
+
+ //resize array if elements changed
+
+ int i, len = Length;
+
+ if (len != elementRects.Length) {
+
+ System.Array.Resize(ref elementRects, len);
+ }
+
+ if (evt.type == EventType.Repaint) {
+
+ //start rect
+
+ Rect elementRect = rect;
+ elementRect.yMin = elementRect.yMax = rect.yMin + 2;
+
+ float spacing = elementSpacing;
+
+ int start, end;
+
+ pagination.GetVisibleRange(len, out start, out end);
+
+ for (i = start; i < end; i++) {
+
+ SerializedProperty element = list.GetArrayElementAtIndex(i);
+
+ //update the elementRects value for this object. Grab the last elementRect for startPosition
+
+ elementRect.y = elementRect.yMax;
+ elementRect.height = GetElementHeight(element);
+ elementRects[i] = elementRect;
+
+ elementRect.yMax += spacing;
+ }
+ }
+ }
+
+ private void DrawElements(Rect rect, Event evt) {
+
+ //draw list background
+
+ if (showDefaultBackground && evt.type == EventType.Repaint) {
+
+ Style.boxBackground.Draw(rect, false, false, false, false);
+ }
+
+ //if not dragging, draw elements as usual
+
+ if (!dragging) {
+
+ int start, end;
+
+ pagination.GetVisibleRange(Length, out start, out end);
+
+ for (int i = start; i < end; i++) {
+
+ bool selected = selection.Contains(i);
+
+ DrawElement(list.GetArrayElementAtIndex(i), GetElementDrawRect(i, elementRects[i]), selected, selected && GUIUtility.keyboardControl == controlID);
+ }
+ }
+ else if (evt.type == EventType.Repaint) {
+
+ //draw dragging elements only when repainting
+
+ int i, s, len = dragList.Length;
+ int sLen = selection.Length;
+
+ //first, find the rects of the selected elements, we need to use them for overlap queries
+
+ for (i = 0; i < sLen; i++) {
+
+ DragElement element = dragList[i];
+
+ //update the element desiredRect if selected. Selected elements appear first in the dragList, so other elements later in iteration will have rects to compare
+
+ element.desiredRect.y = dragPosition - element.dragOffset;
+ dragList[i] = element;
+ }
+
+ //draw elements, start from the bottom of the list as first elements are the ones selected, so should be drawn last
+
+ i = len;
+
+ while (--i > -1) {
+
+ DragElement element = dragList[i];
+
+ //draw dragging elements last as the loop is backwards
+
+ if (element.selected) {
+
+ DrawElement(element.property, element.desiredRect, true, true);
+ continue;
+ }
+
+ //loop over selection and see what overlaps
+ //if dragging down we start from the bottom of the selection
+ //otherwise we start from the top. This helps to cover multiple selected objects
+
+ Rect elementRect = element.rect;
+ int elementIndex = element.startIndex;
+
+ int start = dragDirection > 0 ? sLen - 1 : 0;
+ int end = dragDirection > 0 ? -1 : sLen;
+
+ for (s = start; s != end; s -= dragDirection) {
+
+ DragElement selected = dragList[s];
+
+ if (selected.Overlaps(elementRect, elementIndex, dragDirection)) {
+
+ elementRect.y -= selected.rect.height * dragDirection;
+ elementIndex += dragDirection;
+ }
+ }
+
+ //draw the element with the new rect
+
+ DrawElement(element.property, GetElementDrawRect(i, elementRect), false, false);
+
+ //reassign the element back into the dragList
+
+ element.desiredRect = elementRect;
+ dragList[i] = element;
+ }
+ }
+ }
+
+ private void DrawElement(SerializedProperty element, Rect rect, bool selected, bool focused)
+ {
+ // Dont draw nothing for "hidden" elements
+ if (rect.height < 1) return;
+
+ Event evt = Event.current;
+
+ if (drawElementBackgroundCallback != null)
+ {
+ drawElementBackgroundCallback(rect, element, null, selected, focused);
+ }
+ else if (evt.type == EventType.Repaint)
+ {
+ Style.elementBackground.Draw(rect, false, selected, selected, focused);
+
+ // Separator
+ var separatorRect = new Rect(rect.x + 1, rect.y + rect.height - 2, rect.width - 3, 1);
+ EditorGUI.DrawRect(separatorRect, new Color(0f, 0f, 0f, 0.2f));
+ }
+
+ if (evt.type == EventType.Repaint && draggable)
+ {
+ Style.draggingHandle.Draw(new Rect(rect.x + 5, rect.y + 14, 10, rect.height - (rect.height - 6)), false, false, false, false);
+ }
+
+ GUIContent label = GetElementLabel(element, elementLabels);
+ Rect renderRect = GetElementRenderRect(element, rect);
+
+ if (drawElementCallback != null)
+ {
+ drawElementCallback(renderRect, element, label, selected, focused);
+ }
+ else
+ {
+ EditorGUI.PropertyField(renderRect, element, label, true);
+ }
+
+ //handle context click
+
+ int controlId = GUIUtility.GetControlID(label, FocusType.Passive, rect);
+
+ switch (evt.GetTypeForControl(controlId)) {
+ case EventType.ContextClick:
+ if (rect.Contains(evt.mousePosition))
+ HandleSingleContextClick(evt, element);
+
+ break;
+ }
+ }
+
+ private GUIContent GetElementLabel(SerializedProperty element, bool allowElementLabel) {
+
+ if (!allowElementLabel) {
+
+ return GUIContent.none;
+ }
+ else if (getElementLabelCallback != null) {
+
+ return getElementLabelCallback(element);
+ }
+
+ string name;
+
+ if (getElementNameCallback != null) {
+
+ name = getElementNameCallback(element);
+ }
+ else {
+
+ name = GetElementName(element, elementNameProperty, elementNameOverride);
+ }
+
+ elementLabel.text = !string.IsNullOrEmpty(name) ? name : element.displayName;
+ elementLabel.tooltip = element.tooltip;
+ elementLabel.image = elementIcon;
+
+ return elementLabel;
+ }
+
+ private static string GetElementName(SerializedProperty element, string nameProperty, string nameOverride) {
+
+ if (!string.IsNullOrEmpty(nameOverride)) {
+
+ string path = element.propertyPath;
+
+ const string arrayEndDelimeter = "]";
+ const char arrayStartDelimeter = '[';
+
+ if (path.EndsWith(arrayEndDelimeter)) {
+
+ int startIndex = path.LastIndexOf(arrayStartDelimeter) + 1;
+
+ return string.Format("{0} {1}", nameOverride, path.Substring(startIndex, path.Length - startIndex - 1));
+ }
+
+ return nameOverride;
+ }
+ else if (string.IsNullOrEmpty(nameProperty)) {
+
+ return null;
+ }
+ else if (element.propertyType == SerializedPropertyType.ObjectReference && nameProperty == "name") {
+
+ return element.objectReferenceValue ? element.objectReferenceValue.name : null;
+ }
+
+ SerializedProperty prop = element.FindPropertyRelative(nameProperty);
+
+ if (prop != null) {
+
+ switch (prop.propertyType) {
+
+ case SerializedPropertyType.ObjectReference:
+
+ return prop.objectReferenceValue ? prop.objectReferenceValue.name : null;
+
+ case SerializedPropertyType.Enum:
+
+ return prop.enumDisplayNames[prop.enumValueIndex];
+
+ case SerializedPropertyType.Integer:
+ case SerializedPropertyType.Character:
+
+ return prop.intValue.ToString();
+
+ case SerializedPropertyType.LayerMask:
+
+ return GetLayerMaskName(prop.intValue);
+
+ case SerializedPropertyType.String:
+
+ return prop.stringValue;
+
+ case SerializedPropertyType.Float:
+
+ return prop.floatValue.ToString();
+ }
+
+ return prop.displayName;
+ }
+
+ return null;
+ }
+
+ private static string GetLayerMaskName(int mask) {
+
+ if (mask == 0) {
+
+ return "Nothing";
+ }
+ else if (mask < 0) {
+
+ return "Everything";
+ }
+
+ string name = string.Empty;
+ int n = 0;
+
+ for (int i = 0; i < 32; i++) {
+
+ if (((1 << i) & mask) != 0) {
+
+ if (n == 4) {
+
+ return "Mixed ...";
+ }
+
+ name += (n > 0 ? ", " : string.Empty) + LayerMask.LayerToName(i);
+ n++;
+ }
+ }
+
+ return name;
+ }
+
+ private void DrawFooter(Rect rect) {
+
+ if (drawFooterCallback != null) {
+
+ drawFooterCallback(rect);
+ return;
+ }
+
+ if (Event.current.type == EventType.Repaint) {
+
+ Style.footerBackground.Draw(rect, false, false, false, false);
+ }
+
+ Rect addRect = new Rect(rect.xMin + 4f, rect.y - 1f, 25f, 13f);
+ Rect subRect = new Rect(rect.xMax - 29f, rect.y - 1f, 25f, 13f);
+
+ EditorGUI.BeginDisabledGroup(!canAdd);
+
+ if (GUI.Button(addRect, onAddDropdownCallback != null ? Style.iconToolbarPlusMore : Style.iconToolbarPlus, Style.preButton)) {
+
+ if (onAddDropdownCallback != null) {
+
+ onAddDropdownCallback(addRect, this);
+ }
+ else if (onAddCallback != null) {
+
+ onAddCallback(this);
+ }
+ else {
+
+ AddItem();
+ }
+ }
+
+ EditorGUI.EndDisabledGroup();
+
+ EditorGUI.BeginDisabledGroup(!CanSelect(selection) || !canRemove || (onCanRemoveCallback != null && !onCanRemoveCallback(this)));
+
+ if (GUI.Button(subRect, Style.iconToolbarMinus, Style.preButton)) {
+
+ if (onRemoveCallback != null) {
+
+ onRemoveCallback(this);
+ }
+ else {
+ Remove(selection.ToArray());
+
+ list.serializedObject.ApplyModifiedProperties();
+ list.serializedObject.Update();
+ }
+ }
+
+ EditorGUI.EndDisabledGroup();
+ }
+
+ private void DrawPaginationHeader(Rect rect) {
+
+ int total = Length;
+ int pages = pagination.GetPageCount(total);
+ int page = Mathf.Clamp(pagination.page, 0, pages - 1);
+
+ //some actions may have reduced the page count, so we need to check the current page against the clamped one
+ //if different, we need to change and repaint
+
+ if (page != pagination.page) {
+
+ pagination.page = page;
+ HandleUtility.Repaint();
+ }
+
+ var prevRect = new Rect(rect.xMin + 4f, rect.y + 1f, 17f, 14f);
+ var popupRect = new Rect(prevRect.xMax, rect.y + 1f, 17f, 14f);
+ var nextRect = new Rect(popupRect.xMax, rect.y + 1f, 17f, 14f);
+
+ if (Event.current.type == EventType.Repaint) {
+
+ Style.paginationHeader.Draw(rect, false, true, true, false);
+ }
+
+ pageInfoContent.text = string.Format(Style.PAGE_INFO_FORMAT, pagination.page + 1, pages);
+
+ Rect pageInfoRect = rect;
+ pageInfoRect.width = Style.paginationText.CalcSize(pageInfoContent).x;
+ pageInfoRect.x = rect.xMax - pageInfoRect.width - 7;
+ pageInfoRect.y += 2;
+
+ //draw page info
+
+ GUI.Label(pageInfoRect, pageInfoContent, Style.paginationText);
+
+ //draw page buttons and page popup
+
+ if (GUI.Button(prevRect, Style.iconPagePrev, Style.preButton)) {
+
+ pagination.page = Mathf.Max(0, pagination.page - 1);
+ }
+
+ if (EditorGUI.DropdownButton(popupRect, Style.iconPagePopup, FocusType.Passive, Style.preButton)) {
+
+ GenericMenu menu = new GenericMenu();
+
+ for (int i = 0; i < pages; i++) {
+
+ int pageIndex = i;
+
+ menu.AddItem(new GUIContent(string.Format("Page {0}", i + 1)), i == pagination.page, OnPageDropDownSelect, pageIndex);
+ }
+
+ menu.DropDown(popupRect);
+ }
+
+ if (GUI.Button(nextRect, Style.iconPageNext, Style.preButton)) {
+
+ pagination.page = Mathf.Min(pages - 1, pagination.page + 1);
+ }
+
+ //if we're allowed to control the page size manually, show an editor
+
+ pageSizeContent.text = total.ToString();
+
+ GUIStyle style = Style.pageSizeTextField;
+ Texture icon = Style.listIcon.image;
+
+ float min = nextRect.xMax + 5;
+ float max = pageInfoRect.xMin - 5;
+ float space = max - min;
+ float labelWidth = icon.width + 2;
+ float width = style.CalcSize(pageSizeContent).x + 50 + labelWidth;
+
+ Rect pageSizeRect = rect;
+ pageSizeRect.y += 2f;
+ pageSizeRect.x = min + (space - width) / 2;
+ pageSizeRect.width = width - labelWidth;
+
+ var iconRect = pageSizeRect;
+ iconRect.y -= 2f;
+ iconRect.width = 18f;
+
+ pageSizeRect.x += 18f;
+ pageSizeRect.width -= 18f;
+
+ EditorGUI.BeginChangeCheck();
+
+ EditorGUIUtility.labelWidth = labelWidth;
+ EditorGUIUtility.SetIconSize(new Vector2(icon.width, icon.height));
+
+ GUI.Label(iconRect, Style.listIcon);
+ int newPageSize = EditorGUI.DelayedIntField(pageSizeRect, GUIContent.none, pagination.pageSize, style);
+
+ EditorGUIUtility.labelWidth = 0;
+ EditorGUIUtility.SetIconSize(Vector2.zero);
+
+ if (EditorGUI.EndChangeCheck()) {
+
+ pagination.pageSize = Mathf.Clamp(newPageSize, 0, total);
+ pagination.page = Mathf.Min(pagination.GetPageCount(total) - 1, pagination.page);
+ }
+ }
+
+ private void OnPageDropDownSelect(object userData) {
+ pagination.page = (int)userData;
+ }
+
+ private void DispatchChange() {
+ if (onChangedCallback != null) onChangedCallback(this);
+ }
+
+ private void HandleSingleContextClick(Event evt, SerializedProperty element) {
+
+ selection.Select(IndexOf(element));
+
+ GenericMenu menu = new GenericMenu();
+
+ if (element.isInstantiatedPrefab) {
+
+ menu.AddItem(new GUIContent("Revert " + GetElementLabel(element, true).text + " to Prefab"), false, selection.RevertValues, list);
+ menu.AddSeparator(string.Empty);
+ }
+
+ HandleSharedContextClick(evt, menu, "Duplicate Array Element", "Delete Array Element", "Move Array Element");
+ }
+
+ private void HandleMultipleContextClick(Event evt) {
+
+ GenericMenu menu = new GenericMenu();
+
+ if (selection.CanRevert(list)) {
+
+ menu.AddItem(new GUIContent("Revert Values to Prefab"), false, selection.RevertValues, list);
+ menu.AddSeparator(string.Empty);
+ }
+
+ HandleSharedContextClick(evt, menu, "Duplicate Array Elements", "Delete Array Elements", "Move Array Elements");
+ }
+
+ private void HandleSharedContextClick(Event evt, GenericMenu menu, string duplicateLabel, string deleteLabel, string moveLabel) {
+
+ menu.AddItem(new GUIContent(duplicateLabel), false, HandleDuplicate, list);
+ menu.AddItem(new GUIContent(deleteLabel), false, HandleDelete, list);
+
+ if (doPagination) {
+
+ int pages = pagination.GetPageCount(Length);
+
+ if (pages > 1) {
+
+ for (int i = 0; i < pages; i++) {
+
+ string label = string.Format("{0}/Page {1}", moveLabel, i + 1);
+
+ menu.AddItem(new GUIContent(label), i == pagination.page, HandleMoveElement, i);
+ }
+ }
+ }
+
+ menu.ShowAsContext();
+
+ evt.Use();
+ }
+
+ private void HandleMoveElement(object userData) {
+
+ int toPage = (int)userData;
+ int fromPage = pagination.page;
+ int size = pagination.pageSize;
+ int offset = (toPage * size) - (fromPage * size);
+ int direction = offset > 0 ? 1 : -1;
+ int total = Length;
+
+ //We need to find the actually positions things will move to and not clamp the index
+ //because sometimes something wants to move to a negative index, or beyond the length
+ //we need to find this overlow and adjust the move offsets based on that
+
+ int overflow = 0;
+
+ for (int i = 0; i < selection.Length; i++) {
+
+ int desiredIndex = selection[i] + offset;
+
+ overflow = direction < 0 ? Mathf.Min(overflow, desiredIndex) : Mathf.Max(overflow, desiredIndex - total);
+ }
+
+ offset -= overflow;
+
+ //copy the current list to prepare for moving
+
+ UpdateDragList(0, 0, total);
+
+ //create a list that will act as our new order
+
+ List orderedList = new List(dragList.Elements.Where(t => !selection.Contains(t.startIndex)));
+
+ //go through the selection and insert them into the new order based on the page offset
+
+ selection.Sort();
+
+ for (int i = 0; i < selection.Length; i++) {
+
+ int selIndex = selection[i];
+ int oldIndex = dragList.GetIndexFromSelection(selIndex);
+ int newIndex = Mathf.Clamp(selIndex + offset, 0, orderedList.Count);
+
+ orderedList.Insert(newIndex, dragList[oldIndex]);
+ }
+
+ //finally, perform the re-order
+
+ dragList.Elements = orderedList.ToArray();
+
+ ReorderDraggedElements(direction, 0, null);
+
+ //assume we still want to view these items
+
+ pagination.page = toPage;
+ }
+
+ private void HandleDelete(object userData) {
+
+ selection.Delete(userData as SerializedProperty);
+
+ DispatchChange();
+ }
+
+ private void HandleDuplicate(object userData) {
+
+ selection.Duplicate(userData as SerializedProperty);
+
+ DispatchChange();
+ }
+
+ private void HandleDragAndDrop(Rect rect, Event evt) {
+
+ switch (evt.GetTypeForControl(dragDropControlID)) {
+
+ case EventType.DragUpdated:
+ case EventType.DragPerform:
+
+ if (GUI.enabled && rect.Contains(evt.mousePosition)) {
+
+ Object[] objectReferences = DragAndDrop.objectReferences;
+ Object[] references = new Object[1];
+
+ bool acceptDrag = false;
+
+ foreach (Object object1 in objectReferences) {
+
+ references[0] = object1;
+ Object object2 = ValidateObjectDragAndDrop(references);
+
+ if (object2 != null) {
+
+ DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
+
+ if (evt.type == EventType.DragPerform) {
+
+ AppendDragAndDropValue(object2);
+
+ acceptDrag = true;
+ DragAndDrop.activeControlID = 0;
+ }
+ else {
+
+ DragAndDrop.activeControlID = dragDropControlID;
+ }
+ }
+ }
+
+ if (acceptDrag) {
+
+ GUI.changed = true;
+ DragAndDrop.AcceptDrag();
+ }
+ }
+
+ break;
+
+ case EventType.DragExited:
+
+ if (GUI.enabled) {
+
+ HandleUtility.Repaint();
+ }
+
+ break;
+ }
+ }
+
+ private Object ValidateObjectDragAndDrop(Object[] references) {
+
+ if (onValidateDragAndDropCallback != null) {
+
+ return onValidateDragAndDropCallback(references, this);
+ }
+ else if (surrogate.HasType) {
+
+ //if we have a surrogate type, then validate using the surrogate type rather than the list
+
+ return Internals.ValidateObjectDragAndDrop(references, null, surrogate.type, surrogate.exactType);
+ }
+
+ return Internals.ValidateObjectDragAndDrop(references, list, null, false);
+ }
+
+ private void AppendDragAndDropValue(Object obj) {
+
+ if (onAppendDragDropCallback != null) {
+
+ onAppendDragDropCallback(obj, this);
+ }
+ else {
+
+ //check if we have a surrogate type. If so use that for appending
+
+ if (surrogate.HasType) {
+
+ surrogate.Invoke(AddItem(), obj, this);
+ }
+ else {
+
+ Internals.AppendDragAndDropValue(obj, list);
+ }
+ }
+
+ DispatchChange();
+ }
+
+ private void HandlePreSelection(Rect rect, Event evt) {
+
+ if (evt.type == EventType.MouseDrag && draggable && GUIUtility.hotControl == controlID) {
+
+ if (selection.Length > 0 && UpdateDragPosition(evt.mousePosition, rect, dragList)) {
+
+ GUIUtility.keyboardControl = controlID;
+ dragging = true;
+ }
+
+ evt.Use();
+ }
+
+ /* TODO This is buggy. The reason for this is to allow selection and dragging of an element using the header, or top row (if any)
+ * The main issue here is determining whether the element has an "expandable" drop down arrow, which if it does, will capture the mouse event *without* the code below
+ * Because of property drawers and certain property types, it's impossible to know this automatically (without dirty reflection)
+ * So if the below code is active and we determine that the property is expandable but isn't actually. Then we'll accidently capture the mouse focus and prevent anything else from receiving it :(
+ * So for now, in order to drag or select a row, the user must select empty space on the row. Not a huge deal, and doesn't break functionality.
+ * What needs to happen is the drag event needs to occur independent of the event type. But that's messy too, as some controls have horizontal drag sliders :(
+ if (evt.type == EventType.MouseDown) {
+
+ //check if we contain the mouse press
+ //we also need to check what has current focus. If nothing we can assume control
+ //if there's something, check if the header has been pressed if the element is expandable
+ //if we did press the header, then override the control
+
+ if (rect.Contains(evt.mousePosition) && IsSelectionButton(evt)) {
+
+ int index = GetSelectionIndex(evt.mousePosition);
+
+ if (CanSelect(index)) {
+
+ SerializedProperty element = list.GetArrayElementAtIndex(index);
+
+ if (IsElementExpandable(element)) {
+
+ Rect elementHeaderRect = GetElementHeaderRect(element, elementRects[index]);
+ Rect elementRenderRect = GetElementRenderRect(element, elementRects[index]);
+
+ Rect elementExpandRect = elementHeaderRect;
+ elementExpandRect.xMin = elementRenderRect.xMin - 10;
+ elementExpandRect.xMax = elementRenderRect.xMin;
+
+ if (elementHeaderRect.Contains(evt.mousePosition) && !elementExpandRect.Contains(evt.mousePosition)) {
+
+ DoSelection(index, true, evt);
+ HandleUtility.Repaint();
+ }
+ }
+ }
+ }
+ }
+ */
+ }
+
+ private void HandlePostSelection(Rect rect, Event evt) {
+
+ switch (evt.GetTypeForControl(controlID)) {
+
+ case EventType.MouseDown:
+
+ if (rect.Contains(evt.mousePosition) && IsSelectionButton(evt)) {
+
+ int index = GetSelectionIndex(evt.mousePosition);
+
+ if (CanSelect(index)) {
+
+ DoSelection(index, GUIUtility.keyboardControl == 0 || GUIUtility.keyboardControl == controlID || evt.button == 2, evt);
+ }
+ else {
+
+ selection.Clear();
+ }
+
+ HandleUtility.Repaint();
+ }
+
+ break;
+
+ case EventType.MouseUp:
+
+ if (!draggable) {
+
+ //select the single object if no selection modifier is being performed
+
+ selection.SelectWhenNoAction(pressIndex, evt);
+
+ if (onMouseUpCallback != null && IsPositionWithinElement(evt.mousePosition, selection.Last)) {
+
+ onMouseUpCallback(this);
+ }
+ }
+ else if (GUIUtility.hotControl == controlID) {
+
+ evt.Use();
+
+ if (dragging) {
+
+ dragging = false;
+
+ //move elements in list
+
+ ReorderDraggedElements(dragDirection, dragList.StartIndex, () => dragList.SortByPosition());
+ }
+ else {
+
+ //if we didn't drag, then select the original pressed object
+
+ selection.SelectWhenNoAction(pressIndex, evt);
+
+ if (onMouseUpCallback != null) {
+
+ onMouseUpCallback(this);
+ }
+ }
+
+ GUIUtility.hotControl = 0;
+ }
+
+ HandleUtility.Repaint();
+
+ break;
+
+ case EventType.KeyDown:
+
+ if (GUIUtility.keyboardControl == controlID) {
+
+ if (evt.keyCode == KeyCode.DownArrow && !dragging) {
+
+ selection.Select(Mathf.Min(selection.Last + 1, Length - 1));
+ evt.Use();
+ }
+ else if (evt.keyCode == KeyCode.UpArrow && !dragging) {
+
+ selection.Select(Mathf.Max(selection.Last - 1, 0));
+ evt.Use();
+ }
+ else if (evt.keyCode == KeyCode.Escape && GUIUtility.hotControl == controlID) {
+
+ GUIUtility.hotControl = 0;
+
+ if (dragging) {
+
+ dragging = false;
+ selection = beforeDragSelection;
+ }
+
+ evt.Use();
+ }
+ }
+
+ break;
+ }
+ }
+
+ private bool IsSelectionButton(Event evt) {
+
+ return evt.button == 0 || evt.button == 2;
+ }
+
+ private void DoSelection(int index, bool setKeyboardControl, Event evt) {
+
+ //append selections based on action, this may be a additive (ctrl) or range (shift) selection
+
+ if (multipleSelection) {
+
+ selection.AppendWithAction(pressIndex = index, evt);
+ }
+ else {
+
+ selection.Select(pressIndex = index);
+ }
+
+ if (onSelectCallback != null) {
+
+ onSelectCallback(this);
+ }
+
+ if (draggable) {
+
+ dragging = false;
+ dragPosition = pressPosition = evt.mousePosition.y;
+
+ int start, end;
+
+ pagination.GetVisibleRange(Length, out start, out end);
+
+ UpdateDragList(dragPosition, start, end);
+
+ selection.Trim(start, end);
+
+ beforeDragSelection = selection.Clone();
+
+ GUIUtility.hotControl = controlID;
+ }
+
+ if (setKeyboardControl) {
+
+ GUIUtility.keyboardControl = controlID;
+ }
+
+ evt.Use();
+ }
+
+ private void UpdateDragList(float dragPosition, int start, int end) {
+
+ dragList.Resize(start, end - start);
+
+ for (int i = start; i < end; i++) {
+
+ SerializedProperty property = list.GetArrayElementAtIndex(i);
+ Rect elementRect = elementRects[i];
+
+ DragElement dragElement = new DragElement() {
+ property = property,
+ dragOffset = dragPosition - elementRect.y,
+ rect = elementRect,
+ desiredRect = elementRect,
+ selected = selection.Contains(i),
+ startIndex = i
+ };
+
+ dragList[i - start] = dragElement;
+ }
+
+ //finally, sort the dragList by selection, selected objects appear first in the list
+ //selection order is preserved as well
+
+ dragList.SortByIndex();
+ }
+
+ private bool UpdateDragPosition(Vector2 position, Rect bounds, DragList dragList) {
+
+ //find new drag position
+
+ int startIndex = 0;
+ int endIndex = selection.Length - 1;
+
+ float minOffset = dragList[startIndex].dragOffset;
+ float maxOffset = dragList[endIndex].rect.height - dragList[endIndex].dragOffset;
+
+ dragPosition = Mathf.Clamp(position.y, bounds.yMin + minOffset, bounds.yMax - maxOffset);
+
+ if (Mathf.Abs(dragPosition - pressPosition) > 1) {
+
+ dragDirection = (int)Mathf.Sign(dragPosition - pressPosition);
+ return true;
+ }
+
+ return false;
+ }
+
+ private void ReorderDraggedElements(int direction, int offset, System.Action sortList) {
+
+ //save the current expanded states on all elements. I don't see any other way to do this
+ //MoveArrayElement does not move the foldout states, so... fun.
+
+ dragList.RecordState();
+
+ if (sortList != null) {
+
+ sortList();
+ }
+
+ selection.Sort((a, b) => {
+
+ int d1 = dragList.GetIndexFromSelection(a);
+ int d2 = dragList.GetIndexFromSelection(b);
+
+ return direction > 0 ? d1.CompareTo(d2) : d2.CompareTo(d1);
+ });
+
+ //swap the selected elements in the List
+
+ int s = selection.Length;
+
+ while (--s > -1) {
+
+ int newIndex = dragList.GetIndexFromSelection(selection[s]);
+ int listIndex = newIndex + offset;
+
+ selection[s] = listIndex;
+
+ list.MoveArrayElement(dragList[newIndex].startIndex, listIndex);
+ }
+
+ //restore expanded states on items
+
+ dragList.RestoreState(list);
+
+ //apply and update
+
+ ApplyReorder();
+ }
+
+ private void ApplyReorder() {
+ list.serializedObject.ApplyModifiedProperties();
+ list.serializedObject.Update();
+
+ if (onReorderCallback != null) {
+
+ onReorderCallback(this);
+ }
+
+ DispatchChange();
+ }
+
+ private int GetSelectionIndex(Vector2 position) {
+
+ int start, end;
+
+ pagination.GetVisibleRange(elementRects.Length, out start, out end);
+
+ for (int i = start; i < end; i++) {
+
+ Rect rect = elementRects[i];
+
+ if (rect.Contains(position) || (i == 0 && position.y <= rect.yMin) || (i == end - 1 && position.y >= rect.yMax)) {
+
+ return i;
+ }
+ }
+
+ return -1;
+ }
+
+ private bool CanSelect(ListSelection selection) {
+
+ return selection.Length > 0 ? selection.All(s => CanSelect(s)) : false;
+ }
+
+ private bool CanSelect(int index) {
+
+ return index >= 0 && index < Length;
+ }
+
+ private bool CanSelect(Vector2 position) {
+
+ return selection.Length > 0 ? selection.Any(s => IsPositionWithinElement(position, s)) : false;
+ }
+
+ private bool IsPositionWithinElement(Vector2 position, int index) {
+
+ return CanSelect(index) ? elementRects[index].Contains(position) : false;
+ }
+
+ private bool IsElementExpandable(SerializedProperty element) {
+
+ switch (elementDisplayType) {
+
+ case ElementDisplayType.Auto:
+
+ return element.hasVisibleChildren && IsTypeExpandable(element.propertyType);
+
+ case ElementDisplayType.Expandable: return true;
+ case ElementDisplayType.SingleLine: return false;
+ }
+
+ return false;
+ }
+
+ private bool IsTypeExpandable(SerializedPropertyType type) {
+
+ switch (type) {
+
+ case SerializedPropertyType.Generic:
+ case SerializedPropertyType.Vector4:
+ case SerializedPropertyType.Quaternion:
+ case SerializedPropertyType.ArraySize:
+
+ return true;
+
+ default:
+
+ return false;
+ }
+ }
+
+ //
+ // -- LIST STYLE --
+ //
+
+ static class Style {
+
+ internal const string PAGE_INFO_FORMAT = "{0} / {1}";
+
+ internal static GUIContent iconToolbarPlus;
+ internal static GUIContent iconToolbarPlusMore;
+ internal static GUIContent iconToolbarMinus;
+ internal static GUIContent iconPagePrev;
+ internal static GUIContent iconPageNext;
+ internal static GUIContent iconPagePopup;
+
+ internal static GUIStyle paginationText;
+ internal static GUIStyle pageSizeTextField;
+ internal static GUIStyle draggingHandle;
+ internal static GUIStyle headerBackground;
+ internal static GUIStyle footerBackground;
+ internal static GUIStyle paginationHeader;
+ internal static GUIStyle boxBackground;
+ internal static GUIStyle preButton;
+ internal static GUIStyle elementBackground;
+ internal static GUIStyle verticalLabel;
+ internal static GUIContent expandButton;
+ internal static GUIContent collapseButton;
+ internal static GUIContent sortAscending;
+ internal static GUIContent sortDescending;
+
+ internal static GUIContent listIcon;
+
+ static Style() {
+
+ iconToolbarPlus = EditorGUIUtility.IconContent("Toolbar Plus", "| Add to list");
+ iconToolbarPlusMore = EditorGUIUtility.IconContent("Toolbar Plus More", "| Choose to add to list");
+ iconToolbarMinus = EditorGUIUtility.IconContent("Toolbar Minus", "| Remove selection from list");
+ iconPagePrev = EditorGUIUtility.IconContent("Animation.PrevKey", "| Previous page");
+ iconPageNext = EditorGUIUtility.IconContent("Animation.NextKey", "| Next page");
+ iconPagePopup = EditorGUIUtility.IconContent("UnityEditor.SceneHierarchyWindow", "| Select page");
+
+ paginationText = new GUIStyle();
+ paginationText.margin = new RectOffset(2, 2, 0, 0);
+ paginationText.fontSize = EditorStyles.miniTextField.fontSize;
+ paginationText.font = EditorStyles.miniFont;
+ paginationText.normal.textColor = EditorStyles.miniTextField.normal.textColor;
+ paginationText.alignment = TextAnchor.UpperLeft;
+ paginationText.clipping = TextClipping.Clip;
+
+ pageSizeTextField = new GUIStyle(EditorStyles.miniTextField);
+ pageSizeTextField.alignment = TextAnchor.MiddleLeft;
+ pageSizeTextField.clipping = TextClipping.Clip;
+// pageSizeTextField.fixedHeight = 0;
+ pageSizeTextField.padding = new RectOffset(3, 0, 0, 0);
+// pageSizeTextField.overflow = new RectOffset(0, 0, -2, -3);
+// pageSizeTextField.contentOffset = new Vector2(0, -1);
+ pageSizeTextField.font = EditorStyles.miniFont;
+ pageSizeTextField.fontSize = EditorStyles.miniTextField.fontSize;
+ pageSizeTextField.fontStyle = FontStyle.Normal;
+ pageSizeTextField.wordWrap = false;
+ pageSizeTextField.normal.textColor = EditorStyles.miniTextField.normal.textColor;
+
+
+ draggingHandle = new GUIStyle("RL DragHandle");
+ headerBackground = new GUIStyle("RL Header");
+ footerBackground = new GUIStyle("RL Footer");
+ paginationHeader = new GUIStyle("RL Header");
+ paginationHeader.border = new RectOffset(2, 3, 2, 3);
+ elementBackground = new GUIStyle("RL Element");
+ elementBackground.border = new RectOffset(2, 3, 2, 3);
+ verticalLabel = new GUIStyle(EditorStyles.label);
+ verticalLabel.alignment = TextAnchor.UpperLeft;
+ verticalLabel.contentOffset = new Vector2(10, 3);
+ boxBackground = new GUIStyle("RL Background");
+ boxBackground.border = new RectOffset(6, 3, 3, 6);
+ preButton = new GUIStyle("RL FooterButton");
+
+ expandButton = EditorGUIUtility.IconContent("align_vertically_center_active");
+ expandButton.tooltip = "Expand All Elements";
+
+ collapseButton = EditorGUIUtility.IconContent("winbtn_win_min");
+ collapseButton.tooltip = "Collapse All Elements";
+
+ sortAscending = EditorGUIUtility.IconContent("align_vertically_bottom");
+ sortAscending.tooltip = "Sort Ascending";
+
+ sortDescending = EditorGUIUtility.IconContent("align_vertically_top");
+ sortDescending.tooltip = "Sort Descending";
+
+ listIcon = EditorGUIUtility.IconContent("align_horizontally_right");
+ }
+ }
+
+ //
+ // -- DRAG LIST --
+ //
+
+ struct DragList {
+
+ private int startIndex;
+ private DragElement[] elements;
+ private int length;
+
+ internal DragList(int length) {
+
+ this.length = length;
+
+ startIndex = 0;
+ elements = new DragElement[length];
+ }
+
+ internal int StartIndex {
+
+ get { return startIndex; }
+ }
+
+ internal int Length {
+
+ get { return length; }
+ }
+
+ internal DragElement[] Elements {
+
+ get { return elements; }
+ set { elements = value; }
+ }
+
+ internal DragElement this[int index] {
+
+ get { return elements[index]; }
+ set { elements[index] = value; }
+ }
+
+ internal void Resize(int start, int length) {
+
+ startIndex = start;
+
+ this.length = length;
+
+ if (elements.Length != length) {
+
+ System.Array.Resize(ref elements, length);
+ }
+ }
+
+ internal void SortByIndex() {
+
+ System.Array.Sort(elements, (a, b) => {
+
+ if (b.selected) {
+
+ return a.selected ? a.startIndex.CompareTo(b.startIndex) : 1;
+ }
+ else if (a.selected) {
+
+ return b.selected ? b.startIndex.CompareTo(a.startIndex) : -1;
+ }
+
+ return a.startIndex.CompareTo(b.startIndex);
+ });
+ }
+
+ internal void RecordState() {
+
+ for (int i = 0; i < length; i++) {
+
+ elements[i].RecordState();
+ }
+ }
+
+ internal void RestoreState(SerializedProperty list) {
+
+ for (int i = 0; i < length; i++) {
+
+ elements[i].RestoreState(list.GetArrayElementAtIndex(i + startIndex));
+ }
+ }
+
+ internal void SortByPosition() {
+
+ System.Array.Sort(elements, (a, b) => a.desiredRect.center.y.CompareTo(b.desiredRect.center.y));
+ }
+
+ internal int GetIndexFromSelection(int index) {
+
+ return System.Array.FindIndex(elements, t => t.startIndex == index);
+ }
+ }
+
+ //
+ // -- DRAG ELEMENT --
+ //
+
+ struct DragElement {
+
+ internal SerializedProperty property;
+ internal int startIndex;
+ internal float dragOffset;
+ internal bool selected;
+ internal Rect rect;
+ internal Rect desiredRect;
+
+ private bool isExpanded;
+ private Dictionary states;
+
+ internal bool Overlaps(Rect value, int index, int direction) {
+
+ if (direction < 0 && index < startIndex) {
+
+ return desiredRect.yMin < value.center.y;
+ }
+ else if (direction > 0 && index > startIndex) {
+
+ return desiredRect.yMax > value.center.y;
+ }
+
+ return false;
+ }
+
+ internal void RecordState() {
+
+ states = new Dictionary();
+ isExpanded = property.isExpanded;
+
+ Iterate(this, property, (DragElement e, SerializedProperty p, int index) => {
+
+ e.states[index] = p.isExpanded;
+ });
+ }
+
+ internal void RestoreState(SerializedProperty property) {
+
+ property.isExpanded = isExpanded;
+
+ Iterate(this, property, (DragElement e, SerializedProperty p, int index) => {
+
+ p.isExpanded = e.states[index];
+ });
+ }
+
+ private static void Iterate(DragElement element, SerializedProperty property, System.Action action) {
+
+ SerializedProperty copy = property.Copy();
+ SerializedProperty end = copy.GetEndProperty();
+
+ int index = 0;
+
+ while (copy.NextVisible(true) && !SerializedProperty.EqualContents(copy, end)) {
+
+ if (copy.hasVisibleChildren) {
+
+ action(element, copy, index);
+ index++;
+ }
+ }
+ }
+ }
+
+ //
+ // -- SLIDE GROUP --
+ //
+
+ class SlideGroup {
+
+ private Dictionary animIDs;
+
+ public SlideGroup() {
+
+ animIDs = new Dictionary();
+ }
+
+ public Rect GetRect(int id, Rect r, float easing) {
+
+ if (Event.current.type != EventType.Repaint) {
+
+ return r;
+ }
+
+ if (!animIDs.ContainsKey(id)) {
+
+ animIDs.Add(id, r);
+ return r;
+ }
+ else {
+
+ Rect rect = animIDs[id];
+
+ if (rect.y != r.y) {
+
+ float delta = r.y - rect.y;
+ float absDelta = Mathf.Abs(delta);
+
+ //if the distance between current rect and target is too large, then move the element towards the target rect so it reaches the destination faster
+
+ if (absDelta > (rect.height * 2)) {
+
+ r.y = delta > 0 ? r.y - rect.height : r.y + rect.height;
+ }
+ else if (absDelta > 0.5) {
+
+ r.y = Mathf.Lerp(rect.y, r.y, easing);
+ }
+
+ animIDs[id] = r;
+ HandleUtility.Repaint();
+ }
+
+ return r;
+ }
+ }
+
+ public Rect SetRect(int id, Rect rect) {
+
+ if (animIDs.ContainsKey(id)) {
+
+ animIDs[id] = rect;
+ }
+ else {
+
+ animIDs.Add(id, rect);
+ }
+
+ return rect;
+ }
+ }
+
+ //
+ // -- PAGINATION --
+ //
+
+ struct Pagination {
+
+ internal bool enabled;
+ internal int pageSize;
+ internal int page;
+
+ internal bool usePagination {
+ get { return enabled && pageSize > 0; }
+ }
+
+ internal int GetVisibleLength(int total) {
+
+ int start, end;
+
+ if (GetVisibleRange(total, out start, out end)) {
+
+ return end - start;
+ }
+
+ return total;
+ }
+
+ internal int GetPageForIndex(int index) {
+
+ return usePagination ? Mathf.FloorToInt(index / (float) pageSize) : 0;
+ }
+
+ internal int GetPageCount(int total) {
+
+ return usePagination ? Mathf.CeilToInt(total / (float) pageSize) : 1;
+ }
+
+ internal bool GetVisibleRange(int total, out int start, out int end) {
+
+ if (usePagination) {
+
+ int size = pageSize;
+
+ start = Mathf.Clamp(page * size, 0, total - 1);
+ end = Mathf.Min(start + size, total);
+ return true;
+ }
+
+ start = 0;
+ end = total;
+ return false;
+ }
+ }
+
+ //
+ // -- SELECTION --
+ //
+
+ class ListSelection : IEnumerable {
+
+ private List indexes;
+
+ internal int? firstSelected;
+
+ public ListSelection() {
+
+ indexes = new List();
+ }
+
+ public ListSelection(int[] indexes) {
+
+ this.indexes = new List(indexes);
+ }
+
+ public int First {
+
+ get { return indexes.Count > 0 ? indexes[0] : -1; }
+ }
+
+ public int Last {
+
+ get { return indexes.Count > 0 ? indexes[indexes.Count - 1] : -1; }
+ }
+
+ public int Length {
+
+ get { return indexes.Count; }
+ }
+
+ public int this[int index] {
+
+ get { return indexes[index]; }
+ set {
+
+ int oldIndex = indexes[index];
+
+ indexes[index] = value;
+
+ if (oldIndex == firstSelected) {
+
+ firstSelected = value;
+ }
+ }
+ }
+
+ public bool Contains(int index) {
+
+ return indexes.Contains(index);
+ }
+
+ public void Clear() {
+
+ indexes.Clear();
+ firstSelected = null;
+ }
+
+ public void SelectWhenNoAction(int index, Event evt) {
+
+ if (!EditorGUI.actionKey && !evt.shift) {
+
+ Select(index);
+ }
+ }
+
+ public void Select(int index) {
+
+ indexes.Clear();
+ indexes.Add(index);
+
+ firstSelected = index;
+ }
+
+ public void Remove(int index) {
+
+ if (indexes.Contains(index)) {
+
+ indexes.Remove(index);
+ }
+ }
+
+ public void AppendWithAction(int index, Event evt) {
+
+ if (EditorGUI.actionKey) {
+
+ if (Contains(index)) {
+
+ Remove(index);
+ }
+ else {
+
+ Append(index);
+ firstSelected = index;
+ }
+ }
+ else if (evt.shift && indexes.Count > 0 && firstSelected.HasValue) {
+
+ indexes.Clear();
+
+ AppendRange(firstSelected.Value, index);
+ }
+ else if (!Contains(index)) {
+
+ Select(index);
+ }
+ }
+
+ public void Sort() {
+
+ if (indexes.Count > 0) {
+
+ indexes.Sort();
+ }
+ }
+
+ public void Sort(System.Comparison comparison) {
+
+ if (indexes.Count > 0) {
+
+ indexes.Sort(comparison);
+ }
+ }
+
+ public int[] ToArray() {
+
+ return indexes.ToArray();
+ }
+
+ public ListSelection Clone() {
+
+ ListSelection clone = new ListSelection(ToArray());
+ clone.firstSelected = firstSelected;
+
+ return clone;
+ }
+
+ internal void Trim(int min, int max) {
+
+ int i = indexes.Count;
+
+ while (--i > -1) {
+
+ int index = indexes[i];
+
+ if (index < min || index >= max) {
+
+ if (index == firstSelected && i > 0) {
+
+ firstSelected = indexes[i - 1];
+ }
+
+ indexes.RemoveAt(i);
+ }
+ }
+ }
+
+ internal bool CanRevert(SerializedProperty list) {
+
+ if (list.serializedObject.targetObjects.Length == 1) {
+
+ for (int i = 0; i < Length; i++) {
+
+ if (list.GetArrayElementAtIndex(this[i]).isInstantiatedPrefab) {
+
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ internal void RevertValues(object userData) {
+
+ SerializedProperty list = userData as SerializedProperty;
+
+ for (int i = 0; i < Length; i++) {
+
+ SerializedProperty property = list.GetArrayElementAtIndex(this[i]);
+
+ if (property.isInstantiatedPrefab) {
+
+ property.prefabOverride = false;
+ }
+ }
+
+ list.serializedObject.ApplyModifiedProperties();
+ list.serializedObject.Update();
+
+ HandleUtility.Repaint();
+ }
+
+ internal void Duplicate(SerializedProperty list) {
+
+ int offset = 0;
+
+ for (int i = 0; i < Length; i++) {
+
+ this[i] += offset;
+
+ list.GetArrayElementAtIndex(this[i]).DuplicateCommand();
+ list.serializedObject.ApplyModifiedProperties();
+ list.serializedObject.Update();
+
+ offset++;
+ }
+ }
+
+ internal void Delete(SerializedProperty list) {
+
+ Sort();
+
+ int i = Length;
+
+ while (--i > -1) {
+
+ list.GetArrayElementAtIndex(this[i]).DeleteCommand();
+ }
+
+ Clear();
+
+ list.serializedObject.ApplyModifiedProperties();
+ list.serializedObject.Update();
+ }
+
+ private void Append(int index) {
+
+ if (index >= 0 && !indexes.Contains(index)) {
+
+ indexes.Add(index);
+ }
+ }
+
+ private void AppendRange(int from, int to) {
+
+ int dir = (int)Mathf.Sign(to - from);
+
+ if (dir != 0) {
+
+ for (int i = from; i != to; i += dir) {
+
+ Append(i);
+ }
+ }
+
+ Append(to);
+ }
+
+ public IEnumerator GetEnumerator() {
+
+ return ((IEnumerable)indexes).GetEnumerator();
+ }
+
+ IEnumerator IEnumerable.GetEnumerator() {
+
+ return ((IEnumerable)indexes).GetEnumerator();
+ }
+ }
+
+ //
+ // -- SORTING --
+ //
+
+ static class ListSort {
+
+ private delegate int SortComparision(SerializedProperty p1, SerializedProperty p2);
+
+ internal static void SortOnProperty(SerializedProperty list, int length, bool descending, string propertyName) {
+
+ BubbleSort(list, length, (p1, p2) => {
+
+ SerializedProperty a = p1.FindPropertyRelative(propertyName);
+ SerializedProperty b = p2.FindPropertyRelative(propertyName);
+
+ if (a != null && b != null && a.propertyType == b.propertyType) {
+
+ int comparison = Compare(a, b, descending, a.propertyType);
+
+ return descending ? -comparison : comparison;
+ }
+
+ return 0;
+ });
+ }
+
+ internal static void SortOnType(SerializedProperty list, int length, bool descending, SerializedPropertyType type) {
+
+ BubbleSort(list, length, (p1, p2) => {
+
+ int comparision = Compare(p1, p2, descending, type);
+
+ return descending ? -comparision : comparision;
+ });
+ }
+
+ //
+ // -- PRIVATE --
+ //
+
+ private static void BubbleSort(SerializedProperty list, int length, SortComparision comparision) {
+
+ for (int i = 0; i < length; i++) {
+
+ SerializedProperty p1 = list.GetArrayElementAtIndex(i);
+
+ for (int j = i + 1; j < length; j++) {
+
+ SerializedProperty p2 = list.GetArrayElementAtIndex(j);
+
+ if (comparision(p1, p2) > 0) {
+
+ list.MoveArrayElement(j, i);
+ }
+ }
+ }
+ }
+
+ private static int Compare(SerializedProperty p1, SerializedProperty p2, bool descending, SerializedPropertyType type) {
+
+ if (p1 == null || p2 == null) {
+
+ return 0;
+ }
+
+ switch (type) {
+
+ case SerializedPropertyType.Boolean:
+
+ return p1.boolValue.CompareTo(p2.boolValue);
+
+ case SerializedPropertyType.Character:
+ case SerializedPropertyType.Enum:
+ case SerializedPropertyType.Integer:
+ case SerializedPropertyType.LayerMask:
+
+ return p1.longValue.CompareTo(p2.longValue);
+
+ case SerializedPropertyType.Color:
+
+ return p1.colorValue.grayscale.CompareTo(p2.colorValue.grayscale);
+
+ case SerializedPropertyType.ExposedReference:
+
+ return CompareObjects(p1.exposedReferenceValue, p2.exposedReferenceValue, descending);
+
+ case SerializedPropertyType.Float:
+
+ return p1.doubleValue.CompareTo(p2.doubleValue);
+
+ case SerializedPropertyType.ObjectReference:
+
+ return CompareObjects(p1.objectReferenceValue, p2.objectReferenceValue, descending);
+
+ case SerializedPropertyType.String:
+
+ return p1.stringValue.CompareTo(p2.stringValue);
+
+ default:
+
+ return 0;
+ }
+ }
+
+ private static int CompareObjects(Object obj1, Object obj2, bool descending) {
+
+ if (obj1 && obj2) {
+
+ return obj1.name.CompareTo(obj2.name);
+ }
+ else if (obj1) {
+
+ return descending ? 1 : -1;
+ }
+
+ return descending ? -1 : 1;
+ }
+ }
+
+ //
+ // -- SURROGATE --
+ //
+
+ public struct Surrogate {
+
+ public System.Type type;
+ public bool exactType;
+ public SurrogateCallback callback;
+
+ internal bool enabled;
+
+ public bool HasType {
+
+ get { return enabled && type != null; }
+ }
+
+ public Surrogate(System.Type type)
+ : this(type, null) {
+ }
+
+ public Surrogate(System.Type type, SurrogateCallback callback) {
+
+ this.type = type;
+ this.callback = callback;
+
+ enabled = true;
+ exactType = false;
+ }
+
+ public void Invoke(SerializedProperty element, Object objectReference, ReorderableList list) {
+
+ if (element != null && callback != null) {
+
+ callback.Invoke(element, objectReference, list);
+ }
+ }
+ }
+
+ //
+ // -- EXCEPTIONS --
+ //
+
+ class InvalidListException : System.InvalidOperationException {
+
+ public InvalidListException() : base("ReorderableList serializedProperty must be an array") {
+ }
+ }
+
+ class MissingListExeption : System.ArgumentNullException {
+
+ public MissingListExeption() : base("ReorderableList serializedProperty is null") {
+ }
+ }
+
+ //
+ // -- INTERNAL --
+ //
+
+ static class Internals {
+
+ private static MethodInfo dragDropValidation;
+ private static object[] dragDropValidationParams;
+ private static MethodInfo appendDragDrop;
+ private static object[] appendDragDropParams;
+
+ static Internals() {
+
+ dragDropValidation = System.Type.GetType("UnityEditor.EditorGUI, UnityEditor").GetMethod("ValidateObjectFieldAssignment", BindingFlags.NonPublic | BindingFlags.Static);
+ appendDragDrop = typeof(SerializedProperty).GetMethod("AppendFoldoutPPtrValue", BindingFlags.NonPublic | BindingFlags.Instance);
+ }
+
+ internal static Object ValidateObjectDragAndDrop(Object[] references, SerializedProperty property, System.Type type, bool exactType) {
+
+ dragDropValidationParams = GetParams(ref dragDropValidationParams, 4);
+ dragDropValidationParams[0] = references;
+ dragDropValidationParams[1] = type;
+ dragDropValidationParams[2] = property;
+ dragDropValidationParams[3] = exactType ? 1 : 0;
+
+ return dragDropValidation.Invoke(null, dragDropValidationParams) as Object;
+ }
+
+ internal static void AppendDragAndDropValue(Object obj, SerializedProperty list) {
+
+ appendDragDropParams = GetParams(ref appendDragDropParams, 1);
+ appendDragDropParams[0] = obj;
+ appendDragDrop.Invoke(list, appendDragDropParams);
+ }
+
+ private static object[] GetParams(ref object[] parameters, int count) {
+
+ if (parameters == null) {
+
+ parameters = new object[count];
+ }
+
+ return parameters;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableList.cs.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableList.cs.meta
new file mode 100644
index 0000000..6dd0a04
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableList.cs.meta
@@ -0,0 +1,19 @@
+fileFormatVersion: 2
+guid: 7524a33cc4881484f94d10e60833382b
+timeCreated: 1434688391
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 143526
+ packageName: Rainbow Folders 2
+ packageVersion: 2.4.2
+ assetPath: Assets/Plugins/Borodar/RainbowFolders/Editor/RList/ReorderableList.cs
+ uploadId: 716027
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts.meta
new file mode 100644
index 0000000..13cf323
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: e7cecb36fe285424fab945efb19f4734
+folderAsset: yes
+timeCreated: 1480454499
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers.meta
new file mode 100644
index 0000000..45c5986
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: eb7b01a9c5d465f42bf993fb7bff64d8
+folderAsset: yes
+timeCreated: 1480684206
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ColorHelper.cs b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ColorHelper.cs
new file mode 100644
index 0000000..8acda19
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ColorHelper.cs
@@ -0,0 +1,49 @@
+using System.Diagnostics.CodeAnalysis;
+using UnityEditor;
+using UnityEngine;
+
+namespace Borodar.RainbowFolders
+{
+ [SuppressMessage("ReSharper", "ConvertIfStatementToNullCoalescingExpression")]
+ public static class ColorHelper
+ {
+ public static readonly Color POPUP_BORDER_CLR_FREE = new Color(0.51f, 0.51f, 0.51f);
+ public static readonly Color POPUP_BORDER_CLR_PRO = new Color(0.13f, 0.13f, 0.13f);
+
+ public static readonly Color POPUP_BACKGROUND_CLR_FREE = new Color(0.83f, 0.83f, 0.83f);
+ public static readonly Color POPUP_BACKGROUND_CLR_PRO = new Color(0.18f, 0.18f, 0.18f);
+
+ public static readonly Color SEPARATOR_CLR_1_FREE = new Color(0.65f, 0.65f, 0.65f, 1f);
+ public static readonly Color SEPARATOR_CLR_2_FREE = new Color(0.9f, 0.9f, 0.9f, 1f);
+ public static readonly Color SEPARATOR_CLR_1_PRO = new Color(0.13f, 0.13f, 0.13f, 1f);
+ public static readonly Color SEPARATOR_CLR_2_PRO = new Color(0.22f, 0.22f, 0.22f, 1f);
+
+ private static readonly Color BG_COLOR_FREE = new Color(0.7607f, 0.7607f, 0.7607f);
+ private static readonly Color BG_COLOR_PRO = new Color(0.2196f, 0.2196f, 0.2196f);
+
+ private static readonly Color SELECTION_COLOR_FREE = new Color(0.2275f, 0.4471f, 0.6902f);
+ private static readonly Color SELECTION_COLOR_PRO = new Color(0.1725f, 0.3647f, 0.5294f);
+
+ private static readonly Color SELECTION_GRAY_COLOR_FREE = new Color(0.6824f, 0.6824f, 0.6824f);
+ private static readonly Color SELECTION_GRAY_COLOR_PRO = new Color(0.302f, 0.302f, 0.302f);
+
+ //---------------------------------------------------------------------
+ // Public
+ //---------------------------------------------------------------------
+
+ public static Color GetBackgroundColor()
+ {
+ return EditorGUIUtility.isProSkin ? BG_COLOR_PRO : BG_COLOR_FREE;
+ }
+
+ public static Color GetSelectionColor(bool focused)
+ {
+ if (focused)
+ {
+ return EditorGUIUtility.isProSkin ? SELECTION_COLOR_PRO : SELECTION_COLOR_FREE;
+ }
+
+ return EditorGUIUtility.isProSkin ? SELECTION_GRAY_COLOR_PRO : SELECTION_GRAY_COLOR_FREE;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ColorHelper.cs.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ColorHelper.cs.meta
new file mode 100644
index 0000000..5f46ed7
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ColorHelper.cs.meta
@@ -0,0 +1,19 @@
+fileFormatVersion: 2
+guid: d7068adf899c0ee488198f77200b8353
+timeCreated: 1445259431
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 143526
+ packageName: Rainbow Folders 2
+ packageVersion: 2.4.2
+ assetPath: Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ColorHelper.cs
+ uploadId: 716027
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ProjectEditorUtility.cs b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ProjectEditorUtility.cs
new file mode 100644
index 0000000..459039a
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ProjectEditorUtility.cs
@@ -0,0 +1,217 @@
+using System;
+using System.Diagnostics.CodeAnalysis;
+using System.IO;
+using System.Linq;
+using UnityEditor;
+using UnityEngine;
+
+namespace Borodar.RainbowFolders
+{
+ [SuppressMessage("ReSharper", "ConvertIfStatementToNullCoalescingExpression")]
+ public static class ProjectEditorUtility
+ {
+ private static Texture2D _defaultFolderIcon;
+
+ private static Texture2D _editIconSmall;
+ private static Texture2D _editIconLarge;
+
+ private static Texture2D _previewGradientPopup;
+ private static Texture2D _previewGradientDrawer;
+
+ private static Texture2D _settingsIcon;
+ private static Texture2D _filterIcon;
+ private static Texture2D _deleteIcon;
+
+ private static Texture2D _foldoutIcon;
+ private static Texture2D _foldoutLevelsIcon;
+
+ private static string _projectName;
+
+ //---------------------------------------------------------------------
+ // Project
+ //---------------------------------------------------------------------
+
+ [SuppressMessage("ReSharper", "InvertIf")]
+ public static string ProjectName
+ {
+ get
+ {
+ if (_projectName == null)
+ {
+ var path = Application.dataPath.Split('/');
+ _projectName = path[path.Length - 2];
+ }
+
+ return _projectName;
+ }
+ }
+
+ //---------------------------------------------------------------------
+ // Assets
+ //---------------------------------------------------------------------
+
+ ///
+ /// Creates .asset file of the specified
+ ///
+ public static string CreateAsset(string baseName, string forcedPath = "") where T : ScriptableObject
+ {
+ if (baseName.Contains("/"))
+ throw new ArgumentException("Base name should not contain slashes");
+
+ var asset = ScriptableObject.CreateInstance();
+
+ string path;
+ if (!string.IsNullOrEmpty(forcedPath))
+ {
+ path = forcedPath;
+ Directory.CreateDirectory(forcedPath);
+ }
+ else
+ {
+ path = AssetDatabase.GetAssetPath(Selection.activeObject);
+
+ if (string.IsNullOrEmpty(path))
+ {
+ path = "Assets";
+ }
+ else if (Path.GetExtension(path) != string.Empty)
+ {
+ path = path.Replace(Path.GetFileName(path), string.Empty);
+ }
+ }
+
+ var assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(path + "/" + baseName + ".asset");
+
+ AssetDatabase.CreateAsset(asset, assetPathAndName);
+ AssetDatabase.SaveAssets();
+
+ EditorUtility.FocusProjectWindow();
+ Selection.activeObject = asset;
+
+ return assetPathAndName;
+ }
+
+ public static string[] FindPathsForAllRulesets()
+ {
+ var filter = $"t:{nameof(ProjectRuleset)}";
+ var rulesetGUIDs = AssetDatabase.FindAssets(filter);
+ return rulesetGUIDs.Select(AssetDatabase.GUIDToAssetPath).ToArray();
+ }
+
+ //---------------------------------------------------------------------
+ // GUI
+ //---------------------------------------------------------------------
+
+ public static bool SearchField(ref string query, ref Enum filter, Enum defaultFilter, params GUILayoutOption[] options)
+ {
+ var queryBefore = query;
+ var filterBefore = filter;
+ var changed = false;
+
+ GUILayout.BeginHorizontal();
+
+ var queryRect = GUILayoutUtility.GetRect(GUIContent.none, "ToolbarSearchTextFieldPopup", options);
+ queryRect.x += 2f;
+ queryRect.width -= 13f;
+
+ var filterRect = queryRect;
+ filterRect.width = 20f;
+
+ filter = EditorGUI.EnumPopup(filterRect, filter, "label");
+ if (!Equals(filter, filterBefore)) changed = true;
+
+ query = EditorGUI.TextField(queryRect, GUIContent.none, query, "ToolbarSearchTextFieldPopup");
+ if (query != null && !query.Equals(queryBefore)) changed = true;
+
+ var cancelRect = queryRect;
+ cancelRect.x += queryRect.width;
+ cancelRect.width = 12f;
+ if (GUI.Button(cancelRect, GUIContent.none, "ToolbarSearchCancelButton"))
+ {
+ query = string.Empty;
+ filter = defaultFilter;
+ changed = true;
+ // workaround for bug with selected text
+ GUIUtility.keyboardControl = 0;
+ }
+
+ GUILayout.EndHorizontal();
+
+ return changed;
+ }
+
+ //---------------------------------------------------------------------
+ // Textures
+ //---------------------------------------------------------------------
+
+ public static Texture2D GetDefaultFolderIcon()
+ {
+ if (_defaultFolderIcon == null)
+ _defaultFolderIcon = EditorGUIUtility.FindTexture("Folder Icon");
+
+ return _defaultFolderIcon;
+ }
+
+ public static Texture2D GetEditFolderIcon(bool isSmall)
+ {
+ return (isSmall) ? GetEditIconSmall() : GetEditIconLarge();
+ }
+
+ public static Texture2D GetSettingsButtonIcon()
+ {
+ return GetTexture(ref _settingsIcon, ProjectEditorTexture.IcnSettings);
+ }
+
+ public static Texture2D GetFilterButtonIcon()
+ {
+ return GetTexture(ref _filterIcon, ProjectEditorTexture.IcnFilter);
+ }
+
+ public static Texture2D GetDeleteButtonIcon()
+ {
+ return GetTexture(ref _deleteIcon, ProjectEditorTexture.IcnDelete);
+ }
+
+ public static Texture2D GetFoldoutIcon()
+ {
+ return GetTexture(ref _foldoutIcon, ProjectEditorTexture.IcnFoldoutMiddle);
+ }
+
+ public static Texture2D GetFoldoutLevelsIcon()
+ {
+ return GetTexture(ref _foldoutLevelsIcon, ProjectEditorTexture.IcnFoldoutLevels);
+ }
+
+ public static Texture2D GetPreviewGradientPopup()
+ {
+ return GetTexture(ref _previewGradientPopup, ProjectEditorTexture.IcnPreviewGradientPopup);
+ }
+
+ public static Texture2D GetPreviewGradientDrawer()
+ {
+ return GetTexture(ref _previewGradientDrawer, ProjectEditorTexture.IcnPreviewGradientDrawer);
+ }
+
+ //---------------------------------------------------------------------
+ // Helpers
+ //---------------------------------------------------------------------
+
+ private static Texture2D GetEditIconSmall()
+ {
+ return GetTexture(ref _editIconSmall, ProjectEditorTexture.IcnEditSmall);
+ }
+
+ private static Texture2D GetEditIconLarge()
+ {
+ return GetTexture(ref _editIconLarge, ProjectEditorTexture.IcnEditLarge);
+ }
+
+ private static Texture2D GetTexture(ref Texture2D texture, ProjectEditorTexture type)
+ {
+ if (texture == null)
+ texture = ProjectEditorTexturesStorage.GetTexture(type);
+
+ return texture;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ProjectEditorUtility.cs.meta b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ProjectEditorUtility.cs.meta
new file mode 100644
index 0000000..48e27da
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ProjectEditorUtility.cs.meta
@@ -0,0 +1,19 @@
+fileFormatVersion: 2
+guid: f11d0c1aa21b9964f8bfec1515dc0f44
+timeCreated: 1445259431
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 143526
+ packageName: Rainbow Folders 2
+ packageVersion: 2.4.2
+ assetPath: Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ProjectEditorUtility.cs
+ uploadId: 716027
diff --git a/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ProjectWindowAdapter.cs b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ProjectWindowAdapter.cs
new file mode 100644
index 0000000..b507a6d
--- /dev/null
+++ b/Assets/Plugins/Borodar/RainbowFolders/Editor/Scripts/Helpers/ProjectWindowAdapter.cs
@@ -0,0 +1,356 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Reflection;
+using UnityEditor;
+using UnityEditor.IMGUI.Controls;
+using UnityEngine;
+
+namespace Borodar.RainbowFolders
+{
+ public static class ProjectWindowAdapter
+ {
+ private const string EDITOR_WINDOW_TYPE = "UnityEditor.ProjectBrowser";
+
+ private const BindingFlags STATIC_PRIVATE = BindingFlags.Static | BindingFlags.NonPublic;
+ private const BindingFlags STATIC_PUBLIC = BindingFlags.Static | BindingFlags.Public;
+ private const BindingFlags INSTANCE_PRIVATE = BindingFlags.Instance | BindingFlags.NonPublic;
+ private const BindingFlags INSTANCE_PUBLIC = BindingFlags.Instance | BindingFlags.Public;
+
+ // Project Browser
+ private static readonly MethodInfo ALL_PROJECT_BROWSERS_METHOD;
+ private static readonly MethodInfo PROJECT_BROWSER_INITIALIZED_METHOD;
+ // First Column
+ private static readonly FieldInfo PROJECT_VIEW_MODE_FIELD;
+ private static readonly FieldInfo PROJECT_ASSET_TREE_FIELD;
+ private static readonly FieldInfo PROJECT_FOLDER_TREE_FIELD;
+ private static readonly FieldInfo CONTROLLER_DRAG_SELECTION_FIELD;
+ #if UNITY_2021_1_OR_NEWER
+ private static readonly FieldInfo INTEGER_CACHE_LIST_FIELD;
+ #endif
+ private static readonly PropertyInfo CONTROLLER_DATA_PROPERTY;
+ private static readonly PropertyInfo CONTROLLER_STATE_PROPERTY;
+ private static readonly PropertyInfo CONTROLLER_GUI_CALLBACK_PROPERTY;
+ private static readonly MethodInfo CONTROLLER_HAS_FOCUS_METHOD;
+ private static readonly PropertyInfo STATE_SELECTED_IDS_PROPERTY;
+ private static readonly MethodInfo TWO_COLUMN_ITEMS_METHOD;
+ private static readonly MethodInfo ONE_COLUMN_ITEMS_METHOD;
+ // Second Column
+ private static readonly FieldInfo PROJECT_OBJECT_LIST_FIELD;
+ private static readonly FieldInfo PROJECT_LOCAL_ASSETS_FIELD;
+ private static readonly PropertyInfo OBJECT_LIST_REPAINT_CALLBACK;
+ private static readonly FieldInfo OBJECT_LIST_ICON_EVENT;
+ private static readonly PropertyInfo ASSETS_LIST_MODE_PROPERTY;
+ private static readonly FieldInfo LIST_FILTERED_HIERARCHY_FIELD;
+ private static readonly PropertyInfo FILTERED_HIERARCHY_RESULTS_METHOD;
+ // Filter Result
+ private static readonly FieldInfo FILTER_RESULT_ID_FIELD;
+ private static readonly FieldInfo FILTER_RESULT_IS_FOLDER_FIELD;
+ private static readonly PropertyInfo FILTER_RESULT_ICON_PROPERTY;
+
+ //---------------------------------------------------------------------
+ // Ctor
+ //---------------------------------------------------------------------
+
+ static ProjectWindowAdapter()
+ {
+ // Reflections
+
+ var assembly = Assembly.GetAssembly(typeof(EditorWindow));
+
+ // Project Browser
+
+ var projectWindowType = assembly.GetType(EDITOR_WINDOW_TYPE);
+ ALL_PROJECT_BROWSERS_METHOD = projectWindowType.GetMethod("GetAllProjectBrowsers", STATIC_PUBLIC);
+ PROJECT_BROWSER_INITIALIZED_METHOD = projectWindowType.GetMethod("Initialized", INSTANCE_PUBLIC);
+
+ // First Column
+
+ PROJECT_VIEW_MODE_FIELD = projectWindowType.GetField("m_ViewMode", INSTANCE_PRIVATE);
+ PROJECT_ASSET_TREE_FIELD = projectWindowType.GetField("m_AssetTree", INSTANCE_PRIVATE);
+ PROJECT_FOLDER_TREE_FIELD = projectWindowType.GetField("m_FolderTree", INSTANCE_PRIVATE);
+
+ var treeViewControllerType = assembly.GetType("UnityEditor.IMGUI.Controls.TreeViewController");
+ CONTROLLER_DRAG_SELECTION_FIELD = treeViewControllerType.GetField("m_DragSelection", INSTANCE_PRIVATE);
+ #if UNITY_2021_1_OR_NEWER
+ INTEGER_CACHE_LIST_FIELD = treeViewControllerType.GetNestedType("IntegerCache", INSTANCE_PRIVATE).GetField("m_List", INSTANCE_PRIVATE);
+ #endif
+ CONTROLLER_DATA_PROPERTY = treeViewControllerType.GetProperty("data", INSTANCE_PUBLIC);
+ CONTROLLER_STATE_PROPERTY = treeViewControllerType.GetProperty("state", INSTANCE_PUBLIC);
+ CONTROLLER_GUI_CALLBACK_PROPERTY = treeViewControllerType.GetProperty("onGUIRowCallback", INSTANCE_PUBLIC);
+ CONTROLLER_HAS_FOCUS_METHOD = treeViewControllerType.GetMethod("HasFocus", INSTANCE_PUBLIC);
+
+ var treeViewState = assembly.GetType("UnityEditor.IMGUI.Controls.TreeViewState");
+ STATE_SELECTED_IDS_PROPERTY = treeViewState.GetProperty("selectedIDs", INSTANCE_PUBLIC);
+
+ var oneColumnTreeViewDataType = assembly.GetType("UnityEditor.ProjectBrowserColumnOneTreeViewDataSource");
+ TWO_COLUMN_ITEMS_METHOD = oneColumnTreeViewDataType.GetMethod("GetRows", INSTANCE_PUBLIC);
+
+ var twoColumnTreeViewDataType = assembly.GetType("UnityEditor.AssetsTreeViewDataSource");
+ ONE_COLUMN_ITEMS_METHOD = twoColumnTreeViewDataType.GetMethod("GetRows", INSTANCE_PUBLIC);
+
+ // Second Column
+
+ PROJECT_OBJECT_LIST_FIELD = projectWindowType.GetField("m_ListArea", INSTANCE_PRIVATE);
+
+ var objectListType = assembly.GetType("UnityEditor.ObjectListArea");
+ PROJECT_LOCAL_ASSETS_FIELD = objectListType.GetField("m_LocalAssets", INSTANCE_PRIVATE);
+ OBJECT_LIST_REPAINT_CALLBACK = objectListType.GetProperty("repaintCallback", INSTANCE_PUBLIC);
+ OBJECT_LIST_ICON_EVENT = objectListType.GetField("postAssetIconDrawCallback", STATIC_PRIVATE);
+
+ var localGroupType = objectListType.GetNestedType("LocalGroup", INSTANCE_PRIVATE);
+ ASSETS_LIST_MODE_PROPERTY = localGroupType.GetProperty("ListMode", INSTANCE_PUBLIC);
+ LIST_FILTERED_HIERARCHY_FIELD = localGroupType.GetField("m_FilteredHierarchy", INSTANCE_PRIVATE);
+
+ var filteredHierarchyType = assembly.GetType("UnityEditor.FilteredHierarchy");
+ FILTERED_HIERARCHY_RESULTS_METHOD = filteredHierarchyType.GetProperty("results", INSTANCE_PUBLIC);
+
+ // Filter Result
+
+ var filterResultType = filteredHierarchyType.GetNestedType("FilterResult");
+ FILTER_RESULT_ID_FIELD = filterResultType.GetField("instanceID", INSTANCE_PUBLIC);
+ FILTER_RESULT_IS_FOLDER_FIELD = filterResultType.GetField("isFolder", INSTANCE_PUBLIC);
+ FILTER_RESULT_ICON_PROPERTY = filterResultType.GetProperty("icon", INSTANCE_PUBLIC);
+
+ // Callbacks
+
+ ProjectRuleset.OnRulesetChange += ApplyDefaultIconsToSecondColumn;
+ }
+
+ //---------------------------------------------------------------------
+ // Public
+ //---------------------------------------------------------------------
+
+ [SuppressMessage("ReSharper", "ReturnTypeCanBeEnumerable.Global")]
+ public static IReadOnlyList GetAllProjectWindows()
+ {
+ var browsersList = ALL_PROJECT_BROWSERS_METHOD.Invoke(null, null);
+ return (IReadOnlyList) browsersList;
+ }
+
+ public static EditorWindow GetFirstProjectWindow()
+ {
+ return GetAllProjectWindows().FirstOrDefault();
+ }
+
+ public static object GetAssetTreeController(EditorWindow window)
+ {
+ return PROJECT_ASSET_TREE_FIELD.GetValue(window);
+ }
+
+ public static object GetFolderTreeController(EditorWindow window)
+ {
+ return PROJECT_FOLDER_TREE_FIELD.GetValue(window);
+ }
+
+ public static object GetTreeViewState(object treeViewController)
+ {
+ return CONTROLLER_STATE_PROPERTY.GetValue(treeViewController);
+ }
+
+ public static bool HasChildren(EditorWindow window, int assetId)
+ {
+ var treeViewItems = GetFirstColumnItems(window);
+ if (treeViewItems == null) return false;
+
+ var treeViewItem = treeViewItems.FirstOrDefault(item => item.id == assetId);
+ return treeViewItem != null && treeViewItem.hasChildren;
+ }
+
+ public static bool IsItemSelected(object treeViewController, object state, int assetId)
+ {
+ #if UNITY_2021_1_OR_NEWER
+ var dragSelectionField = CONTROLLER_DRAG_SELECTION_FIELD.GetValue(treeViewController);
+ var dragSelection = (List) INTEGER_CACHE_LIST_FIELD.GetValue(dragSelectionField);
+ #else
+ var dragSelection = (List) CONTROLLER_DRAG_SELECTION_FIELD.GetValue(treeViewController);
+ #endif
+
+ if (dragSelection != null && dragSelection.Count > 0)
+ {
+ return dragSelection.Contains(assetId);
+ }
+ else
+ {
+ var selectedIds = (List) STATE_SELECTED_IDS_PROPERTY.GetValue(state);
+ return selectedIds.Contains(assetId);
+ }
+ }
+
+ public static bool HasFocus(object treeViewController)
+ {
+ return (bool) CONTROLLER_HAS_FOCUS_METHOD.Invoke(treeViewController, null);
+ }
+
+ public static ViewMode GetProjectViewMode(EditorWindow window)
+ {
+ return (ViewMode) PROJECT_VIEW_MODE_FIELD.GetValue(window);
+ }
+
+ public static bool ProjectWindowInitialized(EditorWindow window)
+ {
+ return (bool) PROJECT_BROWSER_INITIALIZED_METHOD.Invoke(window, null);
+ }
+
+ public static object GetObjectListArea(EditorWindow window)
+ {
+ return PROJECT_OBJECT_LIST_FIELD.GetValue(window);
+ }
+
+ public static void ReplaceIconsInListArea(object objectListArea, ProjectRuleset ruleset)
+ {
+ var localAssets = PROJECT_LOCAL_ASSETS_FIELD.GetValue(objectListArea);
+ var inListMode = InListMode(localAssets);
+ var filteredHierarchy = LIST_FILTERED_HIERARCHY_FIELD.GetValue(localAssets);
+ var items = FILTERED_HIERARCHY_RESULTS_METHOD.GetValue(filteredHierarchy, null);
+
+ foreach (var item in (IEnumerable