diff --git a/build.cake b/build.cake index 2b55c074..4b23efdc 100644 --- a/build.cake +++ b/build.cake @@ -103,7 +103,7 @@ Task("Default") Task("Appveyor") .IsDependentOn("SetVersion") - .IsDependentOn("Pack") - .IsDependentOn("MazeRunner"); + .IsDependentOn("Pack"); + //.IsDependentOn("MazeRunner"); RunTarget(target); diff --git a/src/Bugsnag.AspNet.Core/Bugsnag.AspNet.Core.csproj b/src/Bugsnag.AspNet.Core/Bugsnag.AspNet.Core.csproj index b72d8cbd..54ae2741 100644 --- a/src/Bugsnag.AspNet.Core/Bugsnag.AspNet.Core.csproj +++ b/src/Bugsnag.AspNet.Core/Bugsnag.AspNet.Core.csproj @@ -3,7 +3,7 @@ Bugsnag.AspNet.Core Bugsnag .NET ASP.NET Core Notifier The Bugsnag Notifier for ASP.NET Core gives you instant notification of exceptions thrown from your ASP.NET Core applications. Any uncaught exceptions will trigger a notification to be sent to your Bugsnag project. - netstandard1.3;netstandard2.0 + netstandard2.0 false @@ -13,15 +13,6 @@ - - - - - - - - - diff --git a/src/Bugsnag.AspNet.Mvc/AutoLoad.cs b/src/Bugsnag.AspNet.Mvc/AutoLoad.cs index cc43efb8..bc7d7d16 100644 --- a/src/Bugsnag.AspNet.Mvc/AutoLoad.cs +++ b/src/Bugsnag.AspNet.Mvc/AutoLoad.cs @@ -1,4 +1,3 @@ -#if NET45 || NET40 using System.Web.Mvc; namespace Bugsnag.AspNet.Mvc @@ -11,4 +10,4 @@ public static void Attach() } } } -#endif + diff --git a/src/Bugsnag.AspNet.Mvc/Bugsnag.AspNet.Mvc.csproj b/src/Bugsnag.AspNet.Mvc/Bugsnag.AspNet.Mvc.csproj index e3412b54..973ae764 100644 --- a/src/Bugsnag.AspNet.Mvc/Bugsnag.AspNet.Mvc.csproj +++ b/src/Bugsnag.AspNet.Mvc/Bugsnag.AspNet.Mvc.csproj @@ -3,7 +3,7 @@ Bugsnag.AspNet.Mvc Bugsnag .NET ASP.NET MVC Notifier The Bugsnag Notifier for ASP.NET MVC gives you instant notification of exceptions thrown from your ASP.NET MVC applications. Any uncaught exceptions will trigger a notification to be sent to your Bugsnag project. - net35;net40;net45 + net462 @@ -15,15 +15,7 @@ - - - all - - - - - - + diff --git a/src/Bugsnag.AspNet.Mvc/Properties/AssemblyInfo.cs b/src/Bugsnag.AspNet.Mvc/Properties/AssemblyInfo.cs index c08826ac..0a480cd9 100644 --- a/src/Bugsnag.AspNet.Mvc/Properties/AssemblyInfo.cs +++ b/src/Bugsnag.AspNet.Mvc/Properties/AssemblyInfo.cs @@ -2,6 +2,5 @@ using System.Web; [assembly: CLSCompliant(true)] -#if NET45 || NET40 [assembly: PreApplicationStartMethod(typeof(Bugsnag.AspNet.Mvc.AutoLoad), "Attach")] -#endif + diff --git a/src/Bugsnag.AspNet.WebApi/Bugsnag.AspNet.WebApi.csproj b/src/Bugsnag.AspNet.WebApi/Bugsnag.AspNet.WebApi.csproj index 654b8a23..3d64b995 100644 --- a/src/Bugsnag.AspNet.WebApi/Bugsnag.AspNet.WebApi.csproj +++ b/src/Bugsnag.AspNet.WebApi/Bugsnag.AspNet.WebApi.csproj @@ -3,7 +3,7 @@ Bugsnag.AspNet.WebApi Bugsnag .NET ASP.NET WebApi Notifier The Bugsnag Notifier for ASP.NET WebApi gives you instant notification of exceptions thrown from your ASP.NET WebApi applications. Any uncaught exceptions will trigger a notification to be sent to your Bugsnag project. - net40;net45 + net462 @@ -14,10 +14,7 @@ - - - - + diff --git a/src/Bugsnag.AspNet.WebApi/ExceptionLogger.cs b/src/Bugsnag.AspNet.WebApi/ExceptionLogger.cs index 68aaede3..6dbb29d2 100644 --- a/src/Bugsnag.AspNet.WebApi/ExceptionLogger.cs +++ b/src/Bugsnag.AspNet.WebApi/ExceptionLogger.cs @@ -1,4 +1,3 @@ -#if NET45 using System.Web.Http.ExceptionHandling; namespace Bugsnag.AspNet.WebApi @@ -23,4 +22,4 @@ public override void Log(ExceptionLoggerContext context) } } } -#endif + diff --git a/src/Bugsnag.AspNet.WebApi/HttpConfigurationExtensions.cs b/src/Bugsnag.AspNet.WebApi/HttpConfigurationExtensions.cs index 038184fc..d25c1450 100644 --- a/src/Bugsnag.AspNet.WebApi/HttpConfigurationExtensions.cs +++ b/src/Bugsnag.AspNet.WebApi/HttpConfigurationExtensions.cs @@ -7,17 +7,7 @@ public static class HttpConfigurationExtensions public static void UseBugsnag(this HttpConfiguration httpConfiguration, IConfiguration configuration) { httpConfiguration.MessageHandlers.Add(new DelegatingHandler(configuration)); - -#if NET40 - // here we are being added to a webapi 1 application which does not - // support the IExceptionLogger - httpConfiguration.Filters.Add(new ExceptionFilterAttribute()); -#elif NET45 - // here we are being added to a webapi 2 application, we do not add the - // ExceptionFilterAttribute as well as that could result in double - // sending the exception httpConfiguration.Services.Add(typeof(System.Web.Http.ExceptionHandling.IExceptionLogger), new ExceptionLogger()); -#endif } } } diff --git a/src/Bugsnag.AspNet/Bugsnag.AspNet.csproj b/src/Bugsnag.AspNet/Bugsnag.AspNet.csproj index 33f56ffb..636a59ac 100644 --- a/src/Bugsnag.AspNet/Bugsnag.AspNet.csproj +++ b/src/Bugsnag.AspNet/Bugsnag.AspNet.csproj @@ -3,15 +3,12 @@ Bugsnag.AspNet Bugsnag .NET ASP.NET Notifier The Bugsnag Notifier for ASP.NET gives you instant notification of exceptions thrown from your ASP.NET applications. Any uncaught exceptions will trigger a notification to be sent to your Bugsnag project. - net35;net40;net45 + net462 - - - diff --git a/src/Bugsnag.AspNet/HttpModuleAutoLoad.cs b/src/Bugsnag.AspNet/HttpModuleAutoLoad.cs index 026e3847..9de71c64 100644 --- a/src/Bugsnag.AspNet/HttpModuleAutoLoad.cs +++ b/src/Bugsnag.AspNet/HttpModuleAutoLoad.cs @@ -4,11 +4,7 @@ public static class HttpModuleAutoLoad { public static void Attach() { -#if NET45 System.Web.HttpApplication.RegisterModule(typeof(HttpModule)); -#elif NET40 - Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(HttpModule)); -#endif } } } diff --git a/src/Bugsnag.AspNet/Properties/AssemblyInfo.cs b/src/Bugsnag.AspNet/Properties/AssemblyInfo.cs index 874c42b6..8286bed7 100644 --- a/src/Bugsnag.AspNet/Properties/AssemblyInfo.cs +++ b/src/Bugsnag.AspNet/Properties/AssemblyInfo.cs @@ -2,7 +2,5 @@ using System.Web; [assembly: CLSCompliant(true)] - -#if NET45 || NET40 [assembly: PreApplicationStartMethod(typeof(Bugsnag.AspNet.HttpModuleAutoLoad), "Attach")] -#endif + diff --git a/src/Bugsnag.ConfigurationSection/Bugsnag.ConfigurationSection.csproj b/src/Bugsnag.ConfigurationSection/Bugsnag.ConfigurationSection.csproj index de88f7de..e12b132f 100644 --- a/src/Bugsnag.ConfigurationSection/Bugsnag.ConfigurationSection.csproj +++ b/src/Bugsnag.ConfigurationSection/Bugsnag.ConfigurationSection.csproj @@ -3,7 +3,7 @@ Bugsnag.ConfigurationSection Bugsnag .NET Configuration The Bugsnag .NET configuration library is used to configure your Bugsnag integration using a Web.config or App.config - net35;net45 + net462 diff --git a/src/Bugsnag.ConfigurationSection/Configuration.cs b/src/Bugsnag.ConfigurationSection/Configuration.cs index 1d94ffca..99dfc945 100644 --- a/src/Bugsnag.ConfigurationSection/Configuration.cs +++ b/src/Bugsnag.ConfigurationSection/Configuration.cs @@ -428,7 +428,7 @@ public IWebProxy Proxy { try { - if (Polyfills.String.IsNullOrWhiteSpace(ProxyAddress)) return null; + if (String.IsNullOrWhiteSpace(ProxyAddress)) return null; // we should probably store this so we don't try to create a new one each time this is accessed if (!string.IsNullOrEmpty(ProxyUsername) && !string.IsNullOrEmpty(ProxyPassword)) diff --git a/src/Bugsnag/Bugsnag.csproj b/src/Bugsnag/Bugsnag.csproj index 509d649e..f61590b1 100644 --- a/src/Bugsnag/Bugsnag.csproj +++ b/src/Bugsnag/Bugsnag.csproj @@ -1,31 +1,18 @@ - + Bugsnag Bugsnag .NET Notifier The Bugsnag Notifier for .NET gives you instant notification of exceptions thrown from your .NET applications. Any uncaught exceptions will trigger a notification to be sent to your Bugsnag project. - net35;net40;net45;netstandard1.3;netstandard2.0 + net462;netstandard2.0 - - - - - - - - - - - + - - - - + diff --git a/src/Bugsnag/Middleware.cs b/src/Bugsnag/Middleware.cs index 76511b45..0a85d2de 100644 --- a/src/Bugsnag/Middleware.cs +++ b/src/Bugsnag/Middleware.cs @@ -66,7 +66,7 @@ public static class InternalMiddleware { foreach (var stackTraceLine in exception.StackTrace) { - if (!Polyfills.String.IsNullOrWhiteSpace(stackTraceLine.FileName)) + if (!String.IsNullOrWhiteSpace(stackTraceLine.FileName)) { foreach (var filePrefix in projectRoots) { @@ -93,7 +93,7 @@ public static class InternalMiddleware { foreach (var stackTraceLine in exception.StackTrace) { - if (!Polyfills.String.IsNullOrWhiteSpace(stackTraceLine.MethodName)) + if (!String.IsNullOrWhiteSpace(stackTraceLine.MethodName)) { foreach (var @namespace in report.Configuration.ProjectNamespaces) { diff --git a/src/Bugsnag/Payload/Device.cs b/src/Bugsnag/Payload/Device.cs index 14ccabb8..5fbabe47 100644 --- a/src/Bugsnag/Payload/Device.cs +++ b/src/Bugsnag/Payload/Device.cs @@ -37,7 +37,7 @@ private static string OsName { get { -#if NETSTANDARD1_3 || NETSTANDARD2_0 +#if NETSTANDARD2_0 return System.Runtime.InteropServices.RuntimeInformation.OSDescription; #else return Environment.OSVersion.VersionString; diff --git a/src/Bugsnag/Payload/Exception.cs b/src/Bugsnag/Payload/Exception.cs index 99fa88d8..6af1b5d9 100644 --- a/src/Bugsnag/Payload/Exception.cs +++ b/src/Bugsnag/Payload/Exception.cs @@ -49,7 +49,6 @@ IEnumerator IEnumerable.GetEnumerator() } } break; -#if !NET35 case System.AggregateException aggregateException: foreach (var exception in aggregateException.InnerExceptions) { @@ -59,7 +58,6 @@ IEnumerator IEnumerable.GetEnumerator() } } break; -#endif default: foreach (var item in FlattenAndReverseExceptionTree(ex.InnerException)) { diff --git a/src/Bugsnag/Payload/PayloadExtensions.cs b/src/Bugsnag/Payload/PayloadExtensions.cs index 0ba8945b..5a7bc0a3 100644 --- a/src/Bugsnag/Payload/PayloadExtensions.cs +++ b/src/Bugsnag/Payload/PayloadExtensions.cs @@ -24,8 +24,8 @@ public static void AddToPayload(this Dictionary dictionary, string switch (value) { - case System.String s: - if (!Polyfills.String.IsNullOrWhiteSpace(s)) + case String s: + if (!String.IsNullOrWhiteSpace(s)) { dictionary[key] = value; } diff --git a/src/Bugsnag/Payload/StackTraceLine.cs b/src/Bugsnag/Payload/StackTraceLine.cs index f5e3a341..126c19ee 100644 --- a/src/Bugsnag/Payload/StackTraceLine.cs +++ b/src/Bugsnag/Payload/StackTraceLine.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; @@ -27,7 +28,6 @@ public IEnumerator GetEnumerator() var exceptionStackTrace = true; var stackFrames = new System.Diagnostics.StackTrace(_originalException, true).GetFrames(); -#if !NETSTANDARD1_3 if (stackFrames == null || stackFrames.Length == 0) { // this usually means that the exception has not been thrown so we need @@ -36,7 +36,6 @@ public IEnumerator GetEnumerator() exceptionStackTrace = false; stackFrames = new System.Diagnostics.StackTrace(true).GetFrames(); } -#endif if (stackFrames == null) { @@ -53,7 +52,7 @@ public IEnumerator GetEnumerator() { // if the exception has not come from a stack trace then we need to // skip the frames that originate from inside the notifier code base - var currentStackFrameIsNotify = !Polyfills.String.IsNullOrWhiteSpace(stackFrame.MethodName) && stackFrame.MethodName.StartsWith("Bugsnag.Client.Notify"); + var currentStackFrameIsNotify = !String.IsNullOrWhiteSpace(stackFrame.MethodName) && stackFrame.MethodName.StartsWith("Bugsnag.Client.Notify"); seenBugsnagFrames = seenBugsnagFrames || currentStackFrameIsNotify; if (!seenBugsnagFrames || currentStackFrameIsNotify) { diff --git a/src/Bugsnag/Polyfills.cs b/src/Bugsnag/Polyfills.cs index ccdb36e9..5fccc1ee 100644 --- a/src/Bugsnag/Polyfills.cs +++ b/src/Bugsnag/Polyfills.cs @@ -10,9 +10,6 @@ public static class FileExtensions { public static IEnumerable ReadLines(string file) { -#if NET35 - return Enumerable.Empty(); -#else try { return File.ReadLines(file); @@ -22,61 +19,6 @@ public static IEnumerable ReadLines(string file) Trace.WriteLine(exception); return Enumerable.Empty(); } -#endif } } - - public static class String - { - public static bool IsNullOrWhiteSpace(string s) - { -#if NET35 - if (s == null) return true; - - for (int i = 0; i < s.Length; i++) - { - if (!Char.IsWhiteSpace(s[i])) return false; - } - - return true; -#else - return System.String.IsNullOrWhiteSpace(s); -#endif - } - } -} - -#if NET35 || NET40 -namespace System.Reflection -{ - public static class IntrospectionExtensions - { - public static TypeInfo GetTypeInfo(this Type type) - { - return new TypeInfo(); - } - } - - public class TypeInfo - { - public Type[] GenericTypeArguments { get; } = new Type[0]; - - public bool IsGenericType => false; - } -} - -namespace Microsoft.Extensions.FileProviders -{ - public interface IFileProvider - { - IFileInfo GetFileInfo(string path); - } - - public interface IFileInfo - { - string PhysicalPath { get; } - bool Exists { get; } - Stream CreateReadStream(); - } } -#endif diff --git a/src/Bugsnag/Properties/AssemblyInfo.cs b/src/Bugsnag/Properties/AssemblyInfo.cs index ea893a8b..0270020d 100644 --- a/src/Bugsnag/Properties/AssemblyInfo.cs +++ b/src/Bugsnag/Properties/AssemblyInfo.cs @@ -1,6 +1,3 @@ using System; -#if NET45 -using System.Security; -#endif [assembly: CLSCompliant(true)] diff --git a/src/Bugsnag/Reflection.cs b/src/Bugsnag/Reflection.cs index edbd74ec..ab05a3b3 100644 --- a/src/Bugsnag/Reflection.cs +++ b/src/Bugsnag/Reflection.cs @@ -11,32 +11,20 @@ public static class Reflection { public static Assembly GetAssembly(this Type type) { -#if (NET35 || NET40 || NET45) - return type.Assembly; -#else return type.GetTypeInfo().Assembly; -#endif } public static bool IsGenericType(this Type type) { -#if (NET35 || NET40 || NET45) - return type.IsGenericType; -#else return type.GetTypeInfo().IsGenericType; -#endif } public static Type[] GetGenericArguments(this Type type) { -#if NET35 || NET40 - return type.GetGenericArguments(); -#else var typeInfo = type.GetTypeInfo(); return typeInfo.IsGenericTypeDefinition ? typeInfo.GenericTypeParameters : typeInfo.GenericTypeArguments; -#endif } } } diff --git a/src/Bugsnag/UnhandledException.cs b/src/Bugsnag/UnhandledException.cs index 4793a3d0..ae356972 100644 --- a/src/Bugsnag/UnhandledException.cs +++ b/src/Bugsnag/UnhandledException.cs @@ -55,9 +55,7 @@ public void ConfigureClient(IClient client, IConfiguration configuration) /// private bool DetermineUnobservedTerminates() { -#if NET35 || NET40 - return true; -#elif NET45 +#if NET462 System.Xml.Linq.XElement configFile = null; if(System.IO.File.Exists(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile)) configFile = System.Xml.Linq.XElement.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); @@ -66,7 +64,7 @@ private bool DetermineUnobservedTerminates() bool value; var success = bool.TryParse(configValue, out value); return success && value; -#else //NETSTANDARD1_3 || NETSTANDARD2_0 +#else // NETSTANDARD2_0 return false; #endif } @@ -112,57 +110,3 @@ private void HandleEvent(Exception exception, bool runtimeEnding) } } -#if NET35 -namespace System.Threading.Tasks -{ - public class TaskScheduler - { - public static event EventHandler UnobservedTaskException { add {} remove {} } - } - - public class UnobservedTaskExceptionEventArgs : EventArgs - { - public Exception Exception { get; set; } - - public bool Observed { get; set; } - } -} -#endif - -#if NETSTANDARD1_3 || NET35 -namespace System.Runtime.ExceptionServices -{ - public class HandleProcessCorruptedStateExceptionsAttribute : Attribute {} -} -#endif - -#if NETSTANDARD1_3 -namespace System -{ - public class AppDomain - { - private static readonly AppDomain _dummyAppDomain = new AppDomain(); - - public static AppDomain CurrentDomain - { - get - { - return _dummyAppDomain; - } - } - - public event UnhandledExceptionEventHandler UnhandledException { add {} remove {} } - - public event EventHandler ProcessExit { add {} remove {} } - - public delegate void UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs args); - } - - public class UnhandledExceptionEventArgs : EventArgs - { - public Exception ExceptionObject { get; set; } - - public bool IsTerminating { get; set; } - } -} -#endif diff --git a/src/Bugsnag/WebRequest.cs b/src/Bugsnag/WebRequest.cs index 0a0c0b58..f86aa470 100644 --- a/src/Bugsnag/WebRequest.cs +++ b/src/Bugsnag/WebRequest.cs @@ -58,9 +58,7 @@ public WebRequestAsyncResult(IAsyncResult innerAsyncResult, WebRequestState webR public IAsyncResult BeginSend(Uri endpoint, IWebProxy proxy, KeyValuePair[] headers, byte[] report, AsyncCallback callback, object state) { var request = (HttpWebRequest)System.Net.WebRequest.Create(endpoint); -#if !NETSTANDARD1_3 request.KeepAlive = false; -#endif request.Method = "POST"; request.ContentType = "application/json"; if (proxy != null) diff --git a/src/Directory.build.props b/src/Directory.build.props index b166658b..b0f02bf7 100644 --- a/src/Directory.build.props +++ b/src/Directory.build.props @@ -9,10 +9,10 @@ bugsnag.png true true + NU1901;NU1902;NU1903;NU1904 7.1 - 1591 - $(MSBuildStartupDirectory)\Bugsnag.snk + $(MSBuildThisFileDirectory)..\Bugsnag.snk true diff --git a/tests/Bugsnag.AspNet.Core.Tests/Bugsnag.AspNet.Core.Tests.csproj b/tests/Bugsnag.AspNet.Core.Tests/Bugsnag.AspNet.Core.Tests.csproj index 780c1ae0..69d29e56 100644 --- a/tests/Bugsnag.AspNet.Core.Tests/Bugsnag.AspNet.Core.Tests.csproj +++ b/tests/Bugsnag.AspNet.Core.Tests/Bugsnag.AspNet.Core.Tests.csproj @@ -1,11 +1,9 @@ - net461;netcoreapp3.1;net5.0;net6.0 + net462;netcoreapp3.1;net6.0;net8.0 win10-x64 false - true 7.1 - false diff --git a/tests/Bugsnag.AspNet.Tests/Bugsnag.AspNet.Tests.csproj b/tests/Bugsnag.AspNet.Tests/Bugsnag.AspNet.Tests.csproj index ecfe72a7..c5d5e3f4 100644 --- a/tests/Bugsnag.AspNet.Tests/Bugsnag.AspNet.Tests.csproj +++ b/tests/Bugsnag.AspNet.Tests/Bugsnag.AspNet.Tests.csproj @@ -1,11 +1,9 @@ - net461 + net462 win10-x64 false - true 7.1 - diff --git a/tests/Bugsnag.AspNet.WebApi.Tests/Bugsnag.AspNet.WebApi.Tests.csproj b/tests/Bugsnag.AspNet.WebApi.Tests/Bugsnag.AspNet.WebApi.Tests.csproj index 02b7b5c0..201997db 100644 --- a/tests/Bugsnag.AspNet.WebApi.Tests/Bugsnag.AspNet.WebApi.Tests.csproj +++ b/tests/Bugsnag.AspNet.WebApi.Tests/Bugsnag.AspNet.WebApi.Tests.csproj @@ -1,11 +1,9 @@ - + - net461 + net462 win10-x64 false - true 7.1 - diff --git a/tests/Bugsnag.ConfigurationSection.Tests/Bugsnag.ConfigurationSection.Tests.csproj b/tests/Bugsnag.ConfigurationSection.Tests/Bugsnag.ConfigurationSection.Tests.csproj index 4891e6a6..1a66d3d1 100644 --- a/tests/Bugsnag.ConfigurationSection.Tests/Bugsnag.ConfigurationSection.Tests.csproj +++ b/tests/Bugsnag.ConfigurationSection.Tests/Bugsnag.ConfigurationSection.Tests.csproj @@ -1,11 +1,9 @@ - net461 + net462 win10-x64 false - true 7.1 - diff --git a/tests/Bugsnag.Tests.Server/Bugsnag.Tests.Server.csproj b/tests/Bugsnag.Tests.Server/Bugsnag.Tests.Server.csproj index 6149a17f..1b0693da 100644 --- a/tests/Bugsnag.Tests.Server/Bugsnag.Tests.Server.csproj +++ b/tests/Bugsnag.Tests.Server/Bugsnag.Tests.Server.csproj @@ -3,9 +3,7 @@ netstandard2.0 win10-x64 false - true 7.1 - diff --git a/tests/Bugsnag.Tests/Bugsnag.Tests.csproj b/tests/Bugsnag.Tests/Bugsnag.Tests.csproj index abdbd97b..28e344f9 100644 --- a/tests/Bugsnag.Tests/Bugsnag.Tests.csproj +++ b/tests/Bugsnag.Tests/Bugsnag.Tests.csproj @@ -1,11 +1,9 @@ - net461;netcoreapp3.1;net5.0;net6.0 + net462;netcoreapp3.1;net6.0;net8.0 win10-x64 false - true 7.1 - false diff --git a/tests/Directory.build.props b/tests/Directory.build.props index fca93c58..982e1a01 100644 --- a/tests/Directory.build.props +++ b/tests/Directory.build.props @@ -2,5 +2,7 @@ false + true + NU1901;NU1902;NU1903;NU1904