Removed debug log messages.

Removed debug log messages.

Menu Starter and Simulation Starter are now totally different things.

--- Assets/simulation/scripts/SimulationStarter.cs
+++ Assets/simulation/scripts/SimulationStarter.cs
@@ -82,12 +82,10 @@
 		}

 		public void StartSimulation() {
-			Debug.Log("Starting simulation");
 			this.gameMatchStart = true;
 		}

 		public void StopSimulation() {
-			Debug.Log("Stopping simulation");
 			this.gameMatchStart = false;
 			this.ClearSimulation();
 			this.InitializeSimulation();
@@ -102,8 +100,6 @@
 				this.timePauseCounter -= Time.deltaTime;
 				return;
 			}
-
-			Debug.Log("Simulation should be running.");

 			if (this.yellowTeamAI != null) {
 				if (this.yellowTeamUnits.transform.childCount > 0) {


small fix for inserting to close playlist

--- Azimuth/Services/Concrete/UserTracksService.cs
+++ Azimuth/Services/Concrete/UserTracksService.cs
@@ -215,6 +215,8 @@
         {
             _socialNetworkApi = SocialNetworkApiFactory.GetSocialNetworkApi(provider);

+            bool tracksToEnd = index == -1;
+
             using (_unitOfWork)
             {
                 //get checked tracks
@@ -278,13 +280,16 @@
                     playlist.PlaylistTracks.Add(playlistTrack);
                 }

-                playlist.PlaylistTracks.ForEach((item, n) =>
-                {
-                    if (n < playlist.PlaylistTracks.Count - i && item.TrackPosition >= index)
-                    {
-                        item.TrackPosition += i;
-                    }
-                });
+                if (tracksToEnd == false)
+                {
+                    playlist.PlaylistTracks.ForEach((item, n) =>
+                    {
+                        if (n < playlist.PlaylistTracks.Count - i && item.TrackPosition >= index)
+                        {
+                            item.TrackPosition += i;
+                        }
+                    });
+                }

                 _unitOfWork.Commit();
             }


Copy C Batt

Copy C Batt

--- Battery-Commander.Web/Jobs/PERSTATReportJob.cs
+++ Battery-Commander.Web/Jobs/PERSTATReportJob.cs
@@ -16,6 +16,7 @@
         private static IList<Address> Recipients => new List<Address>(new Address[]
         {
             FROM,
+            new Address { Name = "C-2-116 FA", EmailAddress = "ng.fl.flarng.list.2-116-fa-bn-c-btry@mail.mil" },
             new Address { Name = "2-116 FA BN TOC", EmailAddress = "ng.fl.flarng.list.ngfl-2-116-fa-bn-toc@mail.mil" }
         });


Delete GoogleDriveProtocol.cs

Delete GoogleDriveProtocol.cs

--- Belka/GoogleCloudPlugin/GoogleDriveProtocol.cs
+++ Belka/GoogleCloudPlugin/GoogleDriveProtocol.cs
@@ -1,83 +0,0 @@
-namespace BelkaCloudDownloader.Gui
-{
-    using System;
-    using System.Collections.Generic;
-    using System.Diagnostics;
-    using System.IO;
-    using System.Threading;
-    using System.Threading.Tasks;
-    using System.Windows.Forms;
-    using Google.Drive;
-    using Utils;
-
-    /// <summary>
-    /// Protocol for downloading Google Drive information and documents.
-    /// </summary>
-    internal sealed class GoogleDriveProtocol : Protocol
-    {
-        public override IList<string> AuthenticationMethods { get; } = new List<string>
-        {
-            "Google Drive consent screen"
-        };
-
-        public override IList<string> Capabilities { get; } = new List<string>
-        {
-            "Meta-information about files",
-            "Files from Google Drive"
-        };
-
-        public override Control AuthenticationControl(string authenticationMethod)
-        {
-            switch (authenticationMethod)
-            {
-                case "Google Drive consent screen":
-                    return new ConsentScreenControl(
-                        token => GoogleDriveDownloader.AuthenticateManually(token, this.Log));
-            }
-
-            Debug.Assert(false, "Unknown authentication method passed to protocol");
-            return null;
-        }
-
-        /// <summary>
-        /// Starts downloading process.
-        /// </summary>
-        /// <param name="targetDirectory">A directory where downloaded artifacts shall be stored.</param>
-        /// <param name="authenticationControl">A control with filled authentication information.</param>
-        /// <param name="selectedCapabilities">A list of capabilities that shall be downloaded.</param>
-        /// <param name="cancellationToken">A token that allows to cancel an operation.</param>
-        /// <returns>Downloaded data as protocol-specific object that can be analyzed and shown
-        ///         via reflection.</returns>
-        /// <exception cref="InternalErrorException">Incorrect authentication control for Google Drive protocol.
-        /// </exception>
-        /// <exception cref="OperationCanceledException">The token has had cancellation requested.</exception>
-        public override async Task<object> Execute(
-            string targetDirectory,
-            Control authenticationControl,
-            IList<string> selectedCapabilities,
-            CancellationToken cancellationToken,
-            ProgressBar currentOperationProgressBar)
-        {
-            var downloader = new GoogleDriveDownloader(cancellationToken);
-            this.AddDownloader(downloader);
-
-            var consentScreenControl = authenticationControl as ConsentScreenControl;
-            if (consentScreenControl == null)
-            {
-                throw new InternalErrorException("Incorrect authentication control for Google Drive protocol.");
-            }
-
-            var token = consentScreenControl.RefreshToken;
-            var settings = new DriveDownloaderSettings
-            {
-                RefreshToken = token,
-                TargetDirectory = targetDirectory + Path.DirectorySeparatorChar + "GoogleDrive",
-                DoDownloadFiles = selectedCapabilities.Contains("Files from Google Drive")
-            };
-
-            this.Settings.SetProtocolSettings(this.GetType().FullName, settings);
-
-            return await downloader.Download(settings);
-        }
-    }
-}


Update dictator.

Update dictator.

--- src/Arango/Arango.Client/ExternalLibraries/dictator/DictionaryExtensions.cs
+++ src/Arango/Arango.Client/ExternalLibraries/dictator/DictionaryExtensions.cs
@@ -951,13 +951,6 @@
         /// <summary>
         /// Checks if specified field has given type value.
         /// </summary>
-        public static bool IsType<T>(this Dictionary<string, object> dictionary, string fieldPath)
-        {
-            return IsType(dictionary, fieldPath, typeof(T));
-        }
-        /// <summary>
-        /// Checks if specified field has given type value.
-        /// </summary>
         public static bool IsType(this Dictionary<string, object> dictionary, string fieldPath, Type type)
         {
             var isValid = false;
@@ -984,6 +977,46 @@
             return isValid;
         }
         /// <summary>
+        /// Checks if specified field has given type value.
+        /// </summary>
+        public static bool IsType<T>(this Dictionary<string, object> dictionary, string fieldPath)
+        {
+            return IsType(dictionary, fieldPath, typeof(T));
+        }
+        /// <summary>
+        /// Checks if specified field has integer value. Applicable integer types are byte, sbyte, short, ushort, int, uint, long and ulong.
+        /// </summary>
+        public static bool IsInteger(this Dictionary<string, object> dictionary, string fieldPath)
+        {
+            var isValid = false;
+
+            try
+            {
+                var fieldValue = GetFieldValue(dictionary, fieldPath);
+
+                if (fieldValue != null)
+                {
+                    if ((fieldValue is byte) ||
+                        (fieldValue is sbyte) ||
+                        (fieldValue is short) ||
+                        (fieldValue is ushort) ||
+                        (fieldValue is int) ||
+                        (fieldValue is uint) ||
+                        (fieldValue is long) ||
+                        (fieldValue is ulong))
+                    {
+                        isValid = true;
+                    }
+                }
+            }
+            catch (Exception)
+            {
+                isValid = false;
+            }
+
+            return isValid;
+        }
+        /// <summary>
         /// Checks if specified field equals to given value. Object's Equals method is used for value comparison.
         /// </summary>
         public static bool IsEqual(this Dictionary<string, object> dictionary, string fieldPath, object compareValue)
@@ -994,16 +1027,16 @@
             {
                 var fieldValue = GetFieldValue(dictionary, fieldPath);

-                if (fieldValue != null)
-                {
-                    if (fieldValue.Equals(compareValue))
+                if ((fieldValue == null) && (compareValue == null))
+                {
+                    isValid = true;
+                }
+                else if ((fieldValue != null) && (compareValue != null))
+                {
+                    if ((fieldValue.GetType() == compareValue.GetType()) && fieldValue.Equals(compareValue))
                     {
                         isValid = true;
                     }
-                }
-                else if (fieldValue == null && compareValue == null)
-                {
-                    isValid = true;
                 }
             }
             catch (Exception)


More tests

More tests

--- src/EditorFeatures/CSharpTest/AddDebuggerDisplay/AddDebuggerDisplayTests.cs
+++ src/EditorFeatures/CSharpTest/AddDebuggerDisplay/AddDebuggerDisplayTests.cs
@@ -31,6 +31,47 @@
 class C
 {
     public override string ToString() => ""Foo"";
+}");
+        }
+
+        [Fact]
+        public async Task NotOfferedWhenToStringIsNotOverriddenInSameClass()
+        {
+            await TestMissingAsync(@"
+class A
+{
+    public override string ToString() => ""Foo"";
+}
+
+[||]class B : A
+{
+}");
+        }
+
+        [Fact]
+        public async Task OfferedOnStructWithOverriddenToString()
+        {
+            await TestInRegularAndScriptAsync(@"
+[||]struct Foo
+{
+    public override string ToString() => ""Foo"";
+}", @"
+using System.Diagnostics;
+
+[DebuggerDisplay(""{ToString(),nq}"")]
+struct Foo
+{
+    public override string ToString() => ""Foo"";
+}");
+        }
+
+        [Fact]
+        public async Task NotOfferedWhenToStringIsNotOverriddenInStruct()
+        {
+            await TestMissingAsync(@"
+[||]struct Foo
+{
+    public int Bar { get; }
 }");
         }


Workaround razors active brace completion to not insert a new line if one is already present.

--- src/Features/CSharp/Portable/BraceCompletion/CurlyBraceCompletionService.cs
+++ src/Features/CSharp/Portable/BraceCompletion/CurlyBraceCompletionService.cs
@@ -95,17 +95,23 @@
                 return null;
             }

-            // Insert a new line between the braces.
-            var newLineEdit = new TextChange(new TextSpan(closingPoint - 1, 0), Environment.NewLine);
-            var textWithNewLine = originalDocumentText.WithChanges(newLineEdit);
-
+
+            // If there is not already an empty line inserted between the braces, insert one.
+            TextChange? newLineEdit = null;
+            var textToFormat = originalDocumentText;
+            if (!HasExistingEmptyLineBetweenBraces(openingPoint, closingPoint, originalDocumentText))
+            {
+                newLineEdit = new TextChange(new TextSpan(closingPoint - 1, 0), Environment.NewLine);
+                textToFormat = originalDocumentText.WithChanges(newLineEdit.Value);
+            }
+
             // Modify the closing point location to adjust for the newly inserted line.
             closingPoint += Environment.NewLine.Length;

             // Format the text that contains the newly inserted line.
             var documentOptions = await document.GetOptionsAsync(cancellationToken).ConfigureAwait(false);
             var (formattingChanges, newClosingPoint) = await FormatTrackingSpanAsync(
-                document.WithText(textWithNewLine),
+                document.WithText(textToFormat),
                 documentOptions,
                 openingPoint,
                 closingPoint,
@@ -113,7 +119,7 @@
                 braceFormattingIndentationRules: GetBraceIndentationFormattingRules(documentOptions),
                 cancellationToken).ConfigureAwait(false);
             closingPoint = newClosingPoint;
-            var formattedText = textWithNewLine.WithChanges(formattingChanges);
+            var formattedText = textToFormat.WithChanges(formattingChanges);

             // Get the empty line between the curly braces.
             var desiredCaretLine = GetLineBetweenCurlys(closingPoint, formattedText);
@@ -127,8 +133,18 @@
             // The new line edit is calculated against the original text, d0, to get text d1.
             // The formatting edits are calculated against d1 to get text d2.
             // Merge the formatting and new line edits into a set of whitespace only text edits that all apply to d0.
-            var overallChanges = MergeFormatChangesIntoNewLineChange(newLineEdit, formattingChanges);
+            var overallChanges = newLineEdit != null ? MergeFormatChangesIntoNewLineChange(newLineEdit.Value, formattingChanges) : formattingChanges;
             return new BraceCompletionResult(overallChanges, caretPosition);
+
+            static bool HasExistingEmptyLineBetweenBraces(int openingPoint, int closingPoint, SourceText sourceText)
+            {
+                // Check if there is an empty new line between the braces already.  If not insert one.
+                // This handles razor cases where they insert an additional empty line before calling brace completion.
+                var openingPointLine = sourceText.Lines.GetLineFromPosition(openingPoint).LineNumber;
+                var closingPointLine = sourceText.Lines.GetLineFromPosition(closingPoint).LineNumber;
+
+                return closingPointLine - 1 > openingPointLine && sourceText.Lines[closingPointLine - 1].IsEmptyOrWhitespace();
+            }

             static TextLine GetLineBetweenCurlys(int closingPosition, SourceText text)
             {


Make `Stop-Service` only request needed privileges when not setting SDDL. (#16663)

* code changes to select permission based on input

* make the code more readable

--- src/Microsoft.PowerShell.Commands.Management/commands/management/Service.cs
+++ src/Microsoft.PowerShell.Commands.Management/commands/management/Service.cs
@@ -1756,10 +1756,14 @@
                         return;
                     }

+                    var access = NativeMethods.SERVICE_CHANGE_CONFIG;
+                    if (!string.IsNullOrEmpty(SecurityDescriptorSddl))
+                        access |= NativeMethods.WRITE_DAC | NativeMethods.WRITE_OWNER;
+
                     hService = NativeMethods.OpenServiceW(
                         hScManager,
                         Name,
-                        NativeMethods.SERVICE_CHANGE_CONFIG | NativeMethods.WRITE_DAC | NativeMethods.WRITE_OWNER
+                        access
                         );

                     if (hService == IntPtr.Zero)


GPII-2844: Handle process dying during information retrieval.

--- gpii/node_modules/processReporter/dotNetProcesses.csx
+++ gpii/node_modules/processReporter/dotNetProcesses.csx
@@ -120,5 +120,6 @@
         }
         // Process no longer running -- nothing to add.
         catch (ArgumentException e) { }
+        catch (InvalidOperationException e) { }
     }
 }


2087.1: fixed

2087.1: fixed

--- src/PixelFarm/PixelFarm.Painter/4_CpuBlit_VertexProcessing/VectorToolBox.cs
+++ src/PixelFarm/PixelFarm.Painter/4_CpuBlit_VertexProcessing/VectorToolBox.cs
@@ -462,7 +462,7 @@
                         pw.Curve3(x1, y1, x2, y2);
                         for (int i = 3; i < coordCount; ++i)
                         {
-                            points.GetCoord(3, out double x, out double y);
+                            points.GetCoord(i, out double x, out double y);
                             pw.SmoothCurve3(x, y);
                         }


Fixes nullpointer exception

Fixes nullpointer exception

--- Core.ApplicationServices/DriveReportService.cs
+++ Core.ApplicationServices/DriveReportService.cs
@@ -20,6 +20,10 @@

        public void AddFullName(DriveReport driveReport)
        {
+           if (driveReport == null)
+           {
+               return;
+           }
            driveReport.Fullname = driveReport.Person.FirstName;

            if (!string.IsNullOrEmpty(driveReport.Person.MiddleName))


Updated documentation

Updated documentation

--- SnittListan/Models/User.cs
+++ SnittListan/Models/User.cs
@@ -13,11 +13,18 @@
 		/// <summary>
 		/// The salt needs to be initialized lazily.
 		/// This allows it to be set when it is first needed (new user),
-		/// and also when reconstituting.
+		/// and also when reconstituting (loading an existing user).
 		/// </summary>
 		private Guid passwordSalt;
 		private string activationKey;

+		/// <summary>
+		/// Initializes a new instance of the User class.
+		/// </summary>
+		/// <param name="firstName">First name of the user.</param>
+		/// <param name="lastName">Last name of the user.</param>
+		/// <param name="email">Email address.</param>
+		/// <param name="password">User password.</param>
 		public User(string firstName, string lastName, string email, string password)
 		{
 			FirstName = firstName;


[extract] fix crash extracting hero voice

--- DataTool/ToolLogic/Extract/ExtractHeroVoice.cs
+++ DataTool/ToolLogic/Extract/ExtractHeroVoice.cs
@@ -100,6 +100,8 @@
                     }

                     foreach (var defaultUnlocks in progression.LevelUnlocks) {
+                        if (defaultUnlocks.Unlocks == null) continue; // wot??
+
                         foreach (Unlock unlock in defaultUnlocks.Unlocks) {
                             ProcessUnlock(unlock, flags, basePath, heroFileName, hero, baseComponent, baseInfo);
                         }


Minor tweaks and comments

Minor tweaks and comments

--- Source/PlanetaryIndices.cs
+++ Source/PlanetaryIndices.cs
@@ -1,5 +1,5 @@
 /* DMagic Orbital Science - Planetary Index
- * Class and enum to setup limit experiments to certain planets
+ * Class and enum to limit experiments to certain planets
  *
  * Copyright (c) 2014, David Grandy
  * All rights reserved.
@@ -28,6 +28,7 @@

 namespace DMModuleScienceAnimateGeneric
 {
+    //Enum allows the user to select any combination of planets to allow science on
     [Flags]
     internal enum PlanetaryIndices
     {
@@ -54,6 +55,7 @@

     internal class planetaryScience
     {
+        //Need to convert our current celestial body into a value from the enum, special cases for asteroids and mod planets
         internal static PlanetaryIndices planetIndex(int flightGlobalsIndex)
         {
             switch (flightGlobalsIndex)
@@ -100,13 +102,15 @@
         }

         //A simple check to see if the specified planets match the active vessel's current planet
-        internal static bool planetConfirm(int pMask)
+        internal static bool planetConfirm(int pMask, bool t)
         {
-            DMModuleScienceAnimateGeneric obj = new DMModuleScienceAnimateGeneric();
             PlanetaryIndices index = new PlanetaryIndices();
-            if (obj.asteroidReports && AsteroidScience.asteroidGrappled() || obj.asteroidReports && AsteroidScience.asteroidNear()) index = planetIndex(100);
+
+            if (t && AsteroidScience.asteroidGrappled() || t && AsteroidScience.asteroidNear()) index = planetIndex(100);
             else index = planetIndex(FlightGlobals.ActiveVessel.mainBody.flightGlobalsIndex);
+
             PlanetaryIndices mask = (PlanetaryIndices)pMask;
+
             if ((mask & index) == index) return true;
             else return false;
         }


Getting rid of stupid async warning in core

--- source/Core/Connect/Services/DefaultClaimsProvider.cs
+++ source/Core/Connect/Services/DefaultClaimsProvider.cs
@@ -46,7 +46,7 @@
             return outputClaims;
         }

-        public virtual async Task<IEnumerable<Claim>> GetAccessTokenClaimsAsync(ClaimsPrincipal subject, Client client, IEnumerable<Scope> scopes, ICoreSettings settings, IUserService users, NameValueCollection request)
+        public virtual Task<IEnumerable<Claim>> GetAccessTokenClaimsAsync(ClaimsPrincipal subject, Client client, IEnumerable<Scope> scopes, ICoreSettings settings, IUserService users, NameValueCollection request)
         {
             var claims = new List<Claim>
             {
@@ -63,7 +63,7 @@
                 claims.AddRange(GetStandardSubjectClaims(subject));
             }

-            return claims;
+            return Task.FromResult<IEnumerable<Claim>>(claims);
         }

         protected virtual IEnumerable<Claim> GetStandardSubjectClaims(ClaimsPrincipal subject)


Fix SolutionSerializer to handle empty lines

--- source/Nuke.Common/ProjectModel/SolutionSerializer.cs
+++ source/Nuke.Common/ProjectModel/SolutionSerializer.cs
@@ -23,20 +23,22 @@

         public static Solution Deserialize(string solutionFile, string[] content)
         {
+            var trimmedContent = content.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
+
             var solution = new Solution
                            {
                                Path = (PathConstruction.AbsolutePath) solutionFile,
                                Header = content.TakeWhile(x => !x.StartsWith("Project")).ToArray(),
-                               Properties = content.GetGlobalSection("SolutionProperties"),
-                               ExtensibilityGlobals = content.GetGlobalSection("ExtensibilityGlobals"),
-                               Configurations = content.GetGlobalSection("SolutionConfigurationPlatforms")
+                               Properties = trimmedContent.GetGlobalSection("SolutionProperties"),
+                               ExtensibilityGlobals = trimmedContent.GetGlobalSection("ExtensibilityGlobals"),
+                               Configurations = trimmedContent.GetGlobalSection("SolutionConfigurationPlatforms")
                            };

-            var primitiveProjects = GetPrimitiveProjects(solution, content).ToList();
+            var primitiveProjects = GetPrimitiveProjects(solution, trimmedContent).ToList();
             foreach (var primitiveProject in primitiveProjects)
                 solution.AddPrimitiveProject(primitiveProject);

-            var projectToSolutionFolder = GetProjectToSolutionFolder(content);
+            var projectToSolutionFolder = GetProjectToSolutionFolder(trimmedContent);
             if (projectToSolutionFolder != null)
             {
                 var solutionFolders = primitiveProjects.OfType<SolutionFolder>().ToList();


Fix SDL2 desktop windows not updating `Position` on other window modes

--- osu.Framework/Platform/SDL2DesktopWindow.cs
+++ osu.Framework/Platform/SDL2DesktopWindow.cs
@@ -881,11 +881,13 @@
                     SDL.SDL_GetWindowPosition(SDLWindowHandle, out int x, out int y);
                     var newPosition = new Point(x, y);

-                    if (WindowMode.Value == Configuration.WindowMode.Windowed && !newPosition.Equals(Position))
+                    if (!newPosition.Equals(Position))
                     {
                         position = newPosition;
-                        storeWindowPositionToConfig();
                         ScheduleEvent(() => Moved?.Invoke(newPosition));
+
+                        if (WindowMode.Value == Configuration.WindowMode.Windowed)
+                            storeWindowPositionToConfig();
                     }

                     break;


Remove unnecessary scale size helper method

--- osu.Framework/Platform/SDL2DesktopWindow.cs
+++ osu.Framework/Platform/SDL2DesktopWindow.cs
@@ -364,7 +364,7 @@
         private void storeWindowSizeToConfig()
         {
             windowStateChanging = true;
-            sizeWindowed.Value = scaleSize(Size, 1 / Scale);
+            sizeWindowed.Value = (Size / Scale).ToSize();
             windowStateChanging = false;
         }

@@ -978,7 +978,7 @@
             switch (windowState)
             {
                 case WindowState.Normal:
-                    Size = scaleSize(sizeWindowed.Value, Scale);
+                    Size = (sizeWindowed.Value * Scale).ToSize();

                     SDL.SDL_SetWindowBordered(SDLWindowHandle, SDL.SDL_bool.SDL_TRUE);
                     SDL.SDL_SetWindowFullscreen(SDLWindowHandle, (uint)SDL.SDL_bool.SDL_FALSE);
@@ -1270,8 +1270,6 @@
             SDL.SDL_PixelFormatEnumToMasks(mode.format, out var bpp, out _, out _, out _, out _);
             return new DisplayMode(SDL.SDL_GetPixelFormatName(mode.format), new Size(mode.w, mode.h), bpp, mode.refresh_rate, modeIndex, displayIndex);
         }
-
-        private static Size scaleSize(Size size, float scale) => new Size((int)(size.Width * scale), (int)(size.Height * scale));

         #endregion


The arrange mod is not ranked I think.

The arrange mod is not ranked I think.

--- osu.Game.Rulesets.Osu/Mods/OsuModArrange.cs
+++ osu.Game.Rulesets.Osu/Mods/OsuModArrange.cs
@@ -17,7 +17,6 @@
         public override FontAwesome Icon => FontAwesome.fa_arrows;
         public override ModType Type => ModType.DifficultyIncrease;
         public override string Description => "Everything rotates. EVERYTHING";
-        public override bool Ranked => true;
         public override double ScoreMultiplier => 1.05;

         public void ApplyToDrawableHitObjects(IEnumerable<DrawableHitObject> drawables)


Remove Extraneous Using Statement - System.Collections.Generic was leftover from a previous attempt

--- osu.Game/Rulesets/Scoring/ScoreProcessor.cs
+++ osu.Game/Rulesets/Scoring/ScoreProcessor.cs
@@ -3,7 +3,6 @@

 using System;
 using System.Diagnostics;
-using System.Collections.Generic;
 using osu.Framework.Configuration;
 using osu.Game.Beatmaps;
 using osu.Game.Rulesets.Judgements;


hide unnecessary lines on empty BeatmapInfoWedge

adding back deleted line

ooops
meh

--- osu.Game/Screens/Select/BeatmapInfoWedge.cs
+++ osu.Game/Screens/Select/BeatmapInfoWedge.cs
@@ -95,7 +95,7 @@

                 List<InfoLabel> labels = new List<InfoLabel>();

-                if (beatmap != null)
+                if (beatmap != null && !(working is DummyWorkingBeatmap))
                 {
                     HitObject lastObject = beatmap.HitObjects.LastOrDefault();
                     double endTime = (lastObject as IHasEndTime)?.EndTime ?? lastObject?.StartTime ?? 0;
@@ -200,21 +200,7 @@
                                 Margin = new MarginPadding { Top = 10 },
                                 Direction = FillDirection.Horizontal,
                                 AutoSizeAxes = Axes.Both,
-                                Children = new[]
-                                {
-                                    new OsuSpriteText
-                                    {
-                                        Font = @"Exo2.0-Medium",
-                                        Text = "mapped by ",
-                                        TextSize = 15,
-                                    },
-                                    new OsuSpriteText
-                                    {
-                                        Font = @"Exo2.0-Bold",
-                                        Text = metadata.Author.Username,
-                                        TextSize = 15,
-                                    },
-                                }
+                                Children = working is DummyWorkingBeatmap ? Array.Empty<Drawable>() : getMapper(metadata)
                             },
                             new FillFlowContainer
                             {
@@ -227,6 +213,22 @@
                     },
                 };
             }
+
+            private OsuSpriteText[] getMapper(BeatmapMetadata metadata) => new[]
+            {
+                new OsuSpriteText
+                {
+                    Font = @"Exo2.0-Medium",
+                    Text = "mapped by ",
+                    TextSize = 15,
+                },
+                new OsuSpriteText
+                {
+                    Font = @"Exo2.0-Bold",
+                    Text = metadata.Author.Username,
+                    TextSize = 15,
+                }
+            };

             private string getBPMRange(Beatmap beatmap)
             {


Update sizing as early as possible in addition to scheduling (to handle any dependent edge cases)

--- osu.Game/Tests/Visual/SkinnableTestScene.cs
+++ osu.Game/Tests/Visual/SkinnableTestScene.cs
@@ -112,7 +112,15 @@
                 }
             };

-            Schedule(() =>
+            // run this once initially to bring things into a sane state as early as possible.
+            updateSizing();
+
+            // run this once after construction to handle the case the changes are made in a BDL/LoadComplete call.
+            Schedule(updateSizing);
+
+            return children;
+
+            void updateSizing()
             {
                 var autoSize = created.RelativeSizeAxes == Axes.None;

@@ -123,9 +131,7 @@
                 }

                 outlineBox.Alpha = autoSize ? 1 : 0;
-            });
-
-            return children;
+            }
         }

         /// <summary>


minor

minor

--- sources/NUnit.That.Resharper_v10.Plugin/ExpectedExceptionToConstrainBased.cs
+++ sources/NUnit.That.Resharper_v10.Plugin/ExpectedExceptionToConstrainBased.cs
@@ -19,8 +19,7 @@
 {
     [ContextAction(Group = "C#",
         Name = "Replace ExpectedException attribute with constraint-based syntax.",
-        Description =
-            "Replace ExpectedException attribute with constraint-based syntax; e.g., changes [ExpectedException] to Assert.That(<expression>, Throws.InstanceOf<Exception>())",
+        Description = "Replace ExpectedException attribute with constraint-based syntax; e.g., changes [ExpectedException] to Assert.That(<expression>, Throws.InstanceOf<Exception>())",
         Priority = 15)]
     public class ExpectedExceptionToConstrainBased : BulbActionBase, IContextAction
     {


Update EN_ZAHolidayStrategy.cs

Update EN_ZAHolidayStrategy.cs

Error occurs where the key already exists, this happens with the 26th December, as the 25th in on a Sunday, the holiday if forfeited if the next Day is also a public holiday as in this case. SO we need to check if this occurs and if it does we just update the value of the key to the correct name. This was you will not end up with two Christmas's etc...

--- src/DateTimeExtensions/WorkingDays/CultureStrategies/EN_ZAHolidayStrategy.cs
+++ src/DateTimeExtensions/WorkingDays/CultureStrategies/EN_ZAHolidayStrategy.cs
@@ -50,16 +50,21 @@
             IDictionary<DateTime, Holiday> holidayMap = new Dictionary<DateTime, Holiday>();
             foreach (var innerHoliday in InnerHolidays)
             {
-                var date = innerHoliday.GetInstance(year);
-                if (date.HasValue)
-                {
-                    holidayMap.Add(date.Value, innerHoliday);
-                    //if the holiday is a sunday, the holiday is observed on next monday
-                    if (date.Value.DayOfWeek == DayOfWeek.Sunday)
+                 var date = innerHoliday.GetInstance(year);
+                    if (date.HasValue)
                     {
-                        holidayMap.AddIfInexistent(date.Value.AddDays(1), innerHoliday);
+                        if (holidayMap.ContainsKey(date.Value))
+                            // Check to see if holiday falling on the Sunday then moves to the monday, and there is another holiday scheduled for the monday
+                            // Update the Holiday Name of the Monday
+                            holidayMap[date.Value] = innerHoliday;
+                        else
+                            holidayMap.Add(date.Value, innerHoliday);
+                            //if the holiday is a sunday, the holiday is observed on next monday
+                            if (date.Value.DayOfWeek == DayOfWeek.Sunday)
+                            {
+                                holidayMap.AddIfInexistent(date.Value.AddDays(1), innerHoliday);
+                            }
                     }
-                }
             }
             return holidayMap;
         }
@@ -184,4 +189,4 @@
             }
         }
     }
-}+}


Always enable breakable range LSP handler (#59997)

--- src/EditorFeatures/Core/LanguageServer/AlwaysActivateInProcLanguageClient.cs
+++ src/EditorFeatures/Core/LanguageServer/AlwaysActivateInProcLanguageClient.cs
@@ -71,6 +71,7 @@
             }

             serverCapabilities.ProjectContextProvider = true;
+            serverCapabilities.BreakableRangeProvider = true;

             var isPullDiagnostics = GlobalOptions.IsPullDiagnostics(InternalDiagnosticsOptions.NormalDiagnosticMode);
             if (isPullDiagnostics)


OptionsSettingsProviderBase.GetSettings returns null if the options service is not registered.

--- src/Kephas.Extensions.Configuration/Providers/OptionsSettingsProviderBase.cs
+++ src/Kephas.Extensions.Configuration/Providers/OptionsSettingsProviderBase.cs
@@ -53,10 +53,10 @@
         /// <returns>
         /// The settings.
         /// </returns>
-        public virtual object GetSettings(Type settingsType)
+        public virtual object? GetSettings(Type settingsType)
         {
-            var options = this.compositionContext.GetExport(typeof(IOptions<>).MakeGenericType(settingsType));
-            return options.GetPropertyValue(nameof(IOptions<CoreSettings>.Value));
+            var options = this.compositionContext.TryGetExport(typeof(IOptions<>).MakeGenericType(settingsType));
+            return options?.GetPropertyValue(nameof(IOptions<CoreSettings>.Value));
         }

         /// <summary>


Use aka.ms links

Use aka.ms links

--- src/Microsoft.IdentityModel.Clients.ActiveDirectory/AuthenticationContext.cs
+++ src/Microsoft.IdentityModel.Clients.ActiveDirectory/AuthenticationContext.cs
@@ -234,8 +234,8 @@
         /// <param name="resource">Identifier of the target resource that is the recipient of the requested token.</param>
         /// <param name="clientId">Identifier of the client requesting the token.</param>
         /// <returns>It contains Device Code, its expiration time, User Code.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-            "To migrate an app using Device Code flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-public-client?tabs=devicecode")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate an app using Device Code flow, see https://aka.ms/adal-to-msal-net/device-code")]
         public async Task<DeviceCodeResult> AcquireDeviceCodeAsync(string resource, string clientId)
         {
             return await AcquireDeviceCodeAsync(resource, clientId, null).ConfigureAwait(false);
@@ -248,8 +248,8 @@
         /// <param name="clientId">Identifier of the client requesting the token.</param>
         /// <param name="extraQueryParameters">This parameter will be appended as is to the query string in the HTTP authentication request to the authority. The parameter can be null.</param>
         /// <returns>It contains Device Code, its expiration time, User Code.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-            "To migrate an app using Device Code flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-public-client?tabs=devicecode")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate an app using Device Code flow, see https://aka.ms/adal-to-msal-net/device-code")]
         public async Task<DeviceCodeResult> AcquireDeviceCodeAsync(string resource, string clientId,
             string extraQueryParameters)
         {
@@ -263,8 +263,8 @@
         /// </summary>
         /// <param name="deviceCodeResult">The device code result received from calling AcquireDeviceCodeAsync.</param>
         /// <returns>It contains Access Token, its expiration time, user information.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-            "To migrate an app using Device Code flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-public-client?tabs=devicecode")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate an app using Device Code flow, see https://aka.ms/adal-to-msal-net/device-code")]
         public Task<AuthenticationResult> AcquireTokenByDeviceCodeAsync(DeviceCodeResult deviceCodeResult)
         {
             return AcquireTokenByDeviceCodeAsync(deviceCodeResult, CancellationToken.None);
@@ -277,8 +277,8 @@
         /// <param name="deviceCodeResult">The device code result received from calling AcquireDeviceCodeAsync.</param>
         /// <param name="cancellationToken">A CancellationToken which can be triggered to cancel the operation in progress.</param>
         /// <returns>It contains Access Token, its expiration time, user information.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-            "To migrate an app using Device Code flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-public-client?tabs=devicecode")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate an app using Device Code flow, see https://aka.ms/adal-to-msal-net/device-code")]
         public async Task<AuthenticationResult> AcquireTokenByDeviceCodeAsync(
             DeviceCodeResult deviceCodeResult,
             CancellationToken cancellationToken)
@@ -317,8 +317,8 @@
         /// <param name="claims">Additional claims that are needed for authentication. Acquired from the AdalClaimChallengeException</param>
         /// <param name="synchronizationContext">Optional SynchronizationContext for ensuring interactive calls are executed on the UI thread.</param>
         /// <returns>It contains Access Token and the Access Token's expiration time.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-            "To migrate an app using Interactive flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-public-client?tabs=interactive")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate an app using Interactive flow, see https://aka.ms/adal-to-msal-net/interactive")]
         public async Task<AuthenticationResult> AcquireTokenAsync(
             string resource,
             string clientId,
@@ -357,7 +357,8 @@
         /// <param name="resource">Identifier of the target resource that is the recipient of the requested token.</param>
         /// <param name="clientId">Identifier of the client requesting the token.</param>
         /// <returns>It contains Access Token, its expiration time, user information. If acquiring token without user credential is not possible, the method throws AdalException.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. To migrate, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration ")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate, see https://aka.ms/adal-to-msal-net/interactive")]
         public async Task<AuthenticationResult> AcquireTokenSilentAsync(string resource, string clientId)
         {
             return await AcquireTokenSilentAsync(resource, clientId, UserIdentifier.AnyUser).ConfigureAwait(false);
@@ -370,7 +371,8 @@
         /// <param name="clientId">Identifier of the client requesting the token.</param>
         /// <param name="userId">Identifier of the user token is requested for. This parameter can be <see cref="UserIdentifier"/>.Any.</param>
         /// <returns>It contains Access Token, its expiration time, user information. If acquiring token without user credential is not possible, the method throws AdalException.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. To migrate, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration ")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate, see https://aka.ms/adal-to-msal-net/interactive")]
         public async Task<AuthenticationResult> AcquireTokenSilentAsync(string resource, string clientId,
             UserIdentifier userId)
         {
@@ -386,7 +388,8 @@
         /// <param name="userId">Identifier of the user token is requested for. This parameter can be <see cref="UserIdentifier"/>.Any.</param>
         /// <param name="parameters">Instance of PlatformParameters containing platform specific arguments and information.</param>
         /// <returns>It contains Access Token, its expiration time, user information. If acquiring token without user credential is not possible, the method throws AdalException.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. To migrate, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration ")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate, see https://aka.ms/adal-to-msal-net/interactive ")]
         public async Task<AuthenticationResult> AcquireTokenSilentAsync(string resource, string clientId,
             UserIdentifier userId, IPlatformParameters parameters)
         {
@@ -402,8 +405,8 @@
         /// <param name="redirectUri">Address to return to upon receiving a response from the authority.</param>
         /// <param name="parameters">An object of type PlatformParameters which may pass additional parameters used for authorization.</param>
         /// <returns>It contains Access Token, its expiration time, user information.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate an app using Interactive flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-public-client?tabs=interactive")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate an app using Interactive flow, see https://aka.ms/adal-to-msal-net/interactive")]
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource, string clientId, Uri redirectUri,
             IPlatformParameters parameters)
         {
@@ -421,8 +424,8 @@
         /// <param name="userId">Identifier of the user token is requested for. If created from DisplayableId, this parameter will be used to pre-populate the username field in the authentication form. Please note that the end user can still edit the username field and authenticate as a different user.
         /// If you want to be notified of such change with an exception, create UserIdentifier with type RequiredDisplayableId. This parameter can be <see cref="UserIdentifier"/>.Any.</param>
         /// <returns>It contains Access Token, its expiration time, user information.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate an app using Interactive flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-public-client?tabs=interactive")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate an app using Interactive flow, see https://aka.ms/adal-to-msal-net/interactive")]
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource, string clientId, Uri redirectUri,
             IPlatformParameters parameters, UserIdentifier userId)
         {
@@ -441,8 +444,8 @@
         /// <param name="parameters">Parameters needed for interactive flow requesting authorization code. Pass an instance of PlatformParameters.</param>
         /// <param name="extraQueryParameters">This parameter will be appended as is to the query string in the HTTP authentication request to the authority. The parameter can be null.</param>
         /// <returns>It contains Access Token, its expiration time, user information.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate an app using Interactive flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-public-client?tabs=interactive")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate an app using Interactive flow, see https://aka.ms/adal-to-msal-net/interactive")]
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource, string clientId, Uri redirectUri,
             IPlatformParameters parameters, UserIdentifier userId, string extraQueryParameters)
         {
@@ -645,8 +648,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("This API should is only relevant for confidential client use in .NET Framework 4.5 and .NET Core. You should not use it to build against the chosen platform. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+            "To migrate a web application, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<Uri> GetAuthorizationRequestUrlAsync(string resource,
             string clientId, Uri redirectUri,
@@ -670,8 +673,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("This API should is only relevant for confidential client use in .NET Framework 4.5 and .NET Core. You should not use it to build against the chosen platform. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<Uri> GetAuthorizationRequestUrlAsync(string resource,
             string clientId, Uri redirectUri,
@@ -691,8 +694,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenSilentAsync(string resource,
             ClientCredential clientCredential, UserIdentifier userId)
@@ -711,8 +714,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenSilentAsync(string resource,
             IClientAssertionCertificate clientCertificate, UserIdentifier userId)
@@ -731,8 +734,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenSilentAsync(string resource,
             ClientAssertion clientAssertion, UserIdentifier userId)
@@ -752,8 +755,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenByAuthorizationCodeAsync(string authorizationCode,
             Uri redirectUri, ClientCredential clientCredential)
@@ -774,8 +777,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenByAuthorizationCodeAsync(string authorizationCode,
             Uri redirectUri, ClientCredential clientCredential, string resource)
@@ -795,8 +798,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenByAuthorizationCodeAsync(string authorizationCode,
             Uri redirectUri, ClientAssertion clientAssertion)
@@ -818,8 +821,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenByAuthorizationCodeAsync(string authorizationCode,
             Uri redirectUri, ClientAssertion clientAssertion, string resource)
@@ -845,8 +848,8 @@
         /// (either via portal or powershell/CLI operation)</param>
         /// <returns>It contains Access Token, its expiration time, user information.</returns>

-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
         public async Task<AuthenticationResult> AcquireTokenByAuthorizationCodeAsync(string authorizationCode,
             Uri redirectUri, IClientAssertionCertificate clientCertificate, string resource, bool sendX5c)
         {
@@ -866,8 +869,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenByAuthorizationCodeAsync(string authorizationCode,
             Uri redirectUri, IClientAssertionCertificate clientCertificate)
@@ -888,8 +891,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenByAuthorizationCodeAsync(string authorizationCode,
             Uri redirectUri, IClientAssertionCertificate clientCertificate, string resource)
@@ -908,8 +911,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource, ClientCredential clientCredential,
             UserAssertion userAssertion)
@@ -929,8 +932,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource,
             IClientAssertionCertificate clientCertificate, UserAssertion userAssertion)
@@ -955,8 +958,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource,
             IClientAssertionCertificate clientCertificate, UserAssertion userAssertion, bool sendX5c)
@@ -975,8 +978,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource, ClientAssertion clientAssertion,
             UserAssertion userAssertion)
@@ -996,8 +999,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource, string clientId,
             UserAssertion userAssertion)
@@ -1014,8 +1017,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a web application or a web api, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration#why-migrate-to-msalnet-or-microsoftidentityweb")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a web application or a web api, see https://aka.ms/adal-to-msal-net/msal-or-idweb")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource,
             IClientAssertionCertificate clientCertificate)
@@ -1037,8 +1040,8 @@
         /// This saves the application admin from the need to explicitly manage the certificate rollover
         /// (either via portal or powershell/CLI operation)</param>
         /// <returns>It contains Access Token and the Access Token's expiration time. Refresh Token property will be null for this overload.</returns>
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a service to service flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-confidential-client?tabs=daemon")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a service to service flow, see https://aka.ms/adal-to-msal-net/daemon")]
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource,
             IClientAssertionCertificate clientCertificate, bool sendX5c)
         {
@@ -1056,8 +1059,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-"To migrate a service to service flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-confidential-client?tabs=daemon")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+"To migrate a service to service flow, see https://aka.ms/adal-to-msal-net/daemon")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource, ClientAssertion clientAssertion)
         {
@@ -1074,8 +1077,8 @@
 #if ANDROID || iOS || WINDOWS_APP
         [Obsolete("As a security hygiene, this confidential flow API should not be used on this platform which only supports public client applications. For details please see https://aka.ms/AdalNetConfFlows")]
 #else
-        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory has been deprecated and replaced with Microsoft.Identity.Client. " +
-    "To migrate a service to service flow, see https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-net-migration-confidential-client?tabs=daemon")]
+        [Obsolete("Microsoft.IdentityModel.Clients.ActiveDirectory is deprecated and replaced with Microsoft.Identity.Client. " +
+    "To migrate a service to service flow, see https://aka.ms/adal-to-msal-net/daemon")]
 #endif
         public async Task<AuthenticationResult> AcquireTokenAsync(string resource, ClientCredential clientCredential)
         {


Changed logic in .Equals to be better. Cosmetic changes to Encode/Decode

svn path=/trunk/bitsharp/; revision=95948

--- src/MonoTorrent/MonoTorrent.Client/Messages/StandardMessages/PieceMessage.cs
+++ src/MonoTorrent/MonoTorrent.Client/Messages/StandardMessages/PieceMessage.cs
@@ -155,20 +155,21 @@
         public override int Encode(byte[] buffer, int offset)
         {
             int bytesRead = 0;
-            int written = Write(buffer, offset, messageLength + requestLength);
-            written += Write(buffer, offset + 4, MessageId);
-            written += Write(buffer, offset + 5, pieceIndex);
-            written += Write(buffer, offset + 9, startOffset);
+            int written = offset;
+            written += Write(buffer, written, messageLength + requestLength);
+            written += Write(buffer, written, MessageId);
+            written += Write(buffer, written, pieceIndex);
+            written += Write(buffer, written, startOffset);

             long pieceOffset = (long)this.PieceIndex * this.manager.FileManager.PieceLength + this.startOffset;
-            bytesRead = this.manager.FileManager.Read(buffer, offset + 13, pieceOffset, this.RequestLength);
+            bytesRead = this.manager.FileManager.Read(buffer, written, pieceOffset, this.RequestLength);

             if (bytesRead != this.RequestLength)
                 throw new MessageException("Could not read required data");
             written += bytesRead;

-            CheckWritten(written);
-            return written;
+            CheckWritten(written - offset);
+            return written - offset;
         }

         /// <summary>
@@ -181,9 +182,7 @@
             PieceMessage msg = obj as PieceMessage;
             return (msg == null) ? false : (this.pieceIndex == msg.pieceIndex
                                             && this.startOffset == msg.startOffset
-                                            && this.requestLength == msg.requestLength
-                                            && this.dataOffset == msg.dataOffset
-                                            && this.manager == msg.manager);
+                                            && this.requestLength == msg.requestLength);
         }


Don't open an editable invisible editor when locating nodes

We implement GetStartPoint in a two step process: locate the point
directly from the tree, and then take that point and get an
EnvDTE.TextPoint from it. In the first step we were opening an editable
invisible editor for for no good reason, which was causing us to check
out files from source control. The second step does require an invisible
editor (since EnvDTE.TextPoint is implemented by the shims) but that we
were already opting out of an editable editor for.

Going through source control, we used to open an editor for the first
step because at the time we were grabbing tab settings which required
the editor to be open, but that's no longer the case.

--- src/VisualStudio/Core/Impl/CodeModel/InternalElements/AbstractCodeElement.cs
+++ src/VisualStudio/Core/Impl/CodeModel/InternalElements/AbstractCodeElement.cs
@@ -152,7 +152,7 @@
         {
             get
             {
-                var point = FileCodeModel.EnsureEditor(() => CodeModelService.GetStartPoint(LookupNode()));
+                var point = CodeModelService.GetStartPoint(LookupNode());
                 if (point == null)
                 {
                     return null;
@@ -178,7 +178,7 @@

         public virtual EnvDTE.TextPoint GetStartPoint(EnvDTE.vsCMPart part)
         {
-            var point = FileCodeModel.EnsureEditor(() => CodeModelService.GetStartPoint(LookupNode(), part));
+            var point = CodeModelService.GetStartPoint(LookupNode(), part);
             if (point == null)
             {
                 return null;


[macdoc] Fix links not showing in WebView because of casing (fun fun)

--- samples/macdoc/DocTools.cs
+++ samples/macdoc/DocTools.cs
@@ -23,6 +23,8 @@
 			if (helpSource != null)
 				htmlContent = helpSource.GetText (url, out match);
 			if (htmlContent == null){
+				// the displayed url have a lower case type code (e.g. t: instead of T:) which confuse monodoc
+				url = char.ToUpperInvariant (url[0]) + url.Substring (1);
 				htmlContent = AppDelegate.Root.RenderUrl (url, out match);
 				if (htmlContent != null && match != null && match.tree != null){
 					helpSource = match.tree.HelpSource;


Don't make blocking calls to GetRoot

Don't make blocking calls to GetRoot

--- src/Workspaces/Core/Portable/Simplification/AbstractSimplificationService.cs
+++ src/Workspaces/Core/Portable/Simplification/AbstractSimplificationService.cs
@@ -56,7 +56,7 @@
                 // Hence make sure we always start working off of the actual SemanticModel instead of a speculative SemanticModel.
                 Contract.Assert(!semanticModel.IsSpeculativeSemanticModel);

-                var root = semanticModel.SyntaxTree.GetRoot(cancellationToken);
+                var root = await semanticModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);

 #if DEBUG
                 bool originalDocHasErrors = await document.HasAnyErrorsAsync(cancellationToken).ConfigureAwait(false);
@@ -92,7 +92,7 @@
                 !spansTree.GetOverlappingIntervals(nodeOrToken.FullSpan.Start, nodeOrToken.FullSpan.Length).Any();

             var semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);
-            var root = semanticModel.SyntaxTree.GetRoot(cancellationToken);
+            var root = await semanticModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);

             // prep namespace imports marked for simplification
             var removeIfUnusedAnnotation = new SyntaxAnnotation();
@@ -104,7 +104,7 @@
             {
                 document = document.WithSyntaxRoot(root);
                 semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);
-                root = semanticModel.SyntaxTree.GetRoot(cancellationToken);
+                root = await semanticModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
             }

             // Get the list of syntax nodes and tokens that need to be reduced.
@@ -280,7 +280,7 @@
             CancellationToken cancellationToken)
         {
             var model = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);
-            var root = model.SyntaxTree.GetRoot();
+            var root = await model.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
             var addedImports = root.GetAnnotatedNodes(removeIfUnusedAnnotation);
             var unusedImports = new HashSet<SyntaxNode>();
             this.GetUnusedNamespaceImports(model, unusedImports, cancellationToken);


Make DUPLICATI__PARSED_RESULT consistent with OperationAbortReason.

Previously, any exception, including OperationAbortExceptions thrown due
to run-script-before exit codes, would result in a Fatal parsed result.

This fixes #4222.

--- Duplicati/Library/Modules/Builtin/RunScript.cs
+++ Duplicati/Library/Modules/Builtin/RunScript.cs
@@ -180,7 +180,25 @@
                 return;

             ParsedResultType level;
-            if (result is Exception)
+            if (result is OperationAbortException oae)
+            {
+                switch (oae.AbortReason)
+                {
+                    case OperationAbortReason.Error:
+                        level = ParsedResultType.Error;
+                        break;
+                    case OperationAbortReason.Normal:
+                        level = ParsedResultType.Success;
+                        break;
+                    case OperationAbortReason.Warning:
+                        level = ParsedResultType.Warning;
+                        break;
+                    default:
+                        level = ParsedResultType.Unknown;
+                        break;
+                }
+            }
+            else if (result is Exception)
                 level = ParsedResultType.Fatal;
             else if (result != null && result is IBasicResults results)
                 level = results.ParsedResult;


regular backup

regular backup

--- SteamBot/KeyUserHandler.cs
+++ SteamBot/KeyUserHandler.cs
@@ -20,6 +20,7 @@
 		public TF2Value UserMetalAdded, NonTradeInventoryMetal, InventoryMetal, BotMetalAdded, ExcessRefined, KeysToScrap, AdditionalRefined, ChangeAdded, LeftoverMetal;
 		public static TF2Value SellPricePerKey = TF2Value.FromRef(19.11); //high
 		public static TF2Value BuyPricePerKey = TF2Value.FromRef(18.77); //low
+        //test

 		int KeysCanBuy, NonTradeKeysCanBuy, ValidateMetaltoKey, PreviousKeys, UserKeysAdded, BotKeysAdded, InventoryKeys, NonTradeInventoryKeys, IgnoringBot, ScamAttempt, NonTradeScrap, Scrap, ScrapAdded, NonTradeReclaimed, Reclaimed, ReclaimedAdded, NonTradeRefined, Refined, RefinedAdded, InvalidItem, NumKeys, TradeFrequency;


Fixes to data enums

Fixes to data enums

--- SubstrateCS/Source/Data.cs
+++ SubstrateCS/Source/Data.cs
@@ -267,7 +267,7 @@
         HEAD = 0x08,
     }

-    public enum RepeaterOriengation
+    public enum RepeaterOrientation
     {
         EAST = 0,
         SOUTH = 1,
@@ -298,8 +298,15 @@
         NORTH = 3,
     }

+    [Flags]
+    public enum TrapdoorState
+    {
+        SWUNG = 0x04,
+    }
+
     public enum PistonOrientation
     {
+        DOWN = 0,
         UP = 1,
         EAST = 2,
         WEST = 3,


fix window positions reload

fix window positions reload

--- TCC.Core/WindowSettings.cs
+++ TCC.Core/WindowSettings.cs
@@ -235,10 +235,10 @@
             xe.Add(new XAttribute(nameof(ShowAlways), ShowAlways));
             xe.Add(new XAttribute(nameof(Enabled), Enabled));
             xe.Add(new XAttribute(nameof(AllowOffScreen), AllowOffScreen));
-            xe.Add(BuildClassWindowPositionsXElement());
+            xe.Add(BuildWindowPositionsXElement());
             return xe;
         }
-        private XElement BuildClassWindowPositionsXElement()
+        private XElement BuildWindowPositionsXElement()
         {
             var ret = new XElement(nameof(Positions));


Update AzureFileStorageTests.cs

Update AzureFileStorageTests.cs

--- File-Repository-Tests/AzureFileStorageTests.cs
+++ File-Repository-Tests/AzureFileStorageTests.cs
@@ -22,7 +22,7 @@
 using System.Collections.Generic;
 using System.Text;

-namespace ile_Repository_Tests
+namespace File_Repository_Tests
 {
     [TestClass]
     public class AzureFileStorageTests


Add CheckInjection method

Add CheckInjection method

--- FonctionsUtiles.Fred.Csharp/FunctionsString.cs
+++ FonctionsUtiles.Fred.Csharp/FunctionsString.cs
@@ -3280,5 +3280,32 @@
     {
       return myString.EndsWith("\\") ? myString : myString + "\\";
     }
+
+    public static bool CheckInjection(string input)
+    {
+      try
+      {
+        for (int i = 0; i < input.Length; i++)
+        {
+          string oneChar = input[i].ToString();
+          if ((oneChar == "\"") || (oneChar == "'") || (oneChar == "&"))
+          {
+            return false;
+          }
+        }
+
+        int position = input.IndexOf("<script>", StringComparison.InvariantCultureIgnoreCase);
+        if (position > -1)
+        {
+          return false;
+        }
+
+        return true;
+      }
+      catch (Exception)
+      {
+        return false;
+      }
+    }
   }
 }


Mute warnings.

Mute warnings.

--- Gu.Wpf.Reactive.UiTests/Helpers/WindowTests.cs
+++ Gu.Wpf.Reactive.UiTests/Helpers/WindowTests.cs
@@ -55,6 +55,7 @@
             Keyboard.ReleaseScanCode((ushort)ScanCodeShort.CONTROL, isExtendedKey: false);
             Keyboard.ReleaseScanCode((ushort)ScanCodeShort.SHIFT, isExtendedKey: false);

+            //// ReSharper disable once EmptyGeneralCatchClause solving problems on appveyor
             try
             {
                 this.application?.WaitWhileBusy();
@@ -81,6 +82,7 @@
             this.disposed = true;
             if (disposing)
             {
+                //// ReSharper disable once EmptyGeneralCatchClause solving problems on appveyor
                 try
                 {
                     this.application?.WaitWhileBusy();


using NSB's "self managed container" feature requires all our DI to register interfaces ourselves.  Something the NSB container adapters were doing for us previously

--- src/Aggregates.NET.StructureMap/Internal/Container.cs
+++ src/Aggregates.NET.StructureMap/Internal/Container.cs
@@ -1,7 +1,9 @@
 using Aggregates.Contracts;
+using StructureMap.Pipeline;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
+using System.Linq;
 using System.Text;

 namespace Aggregates.Internal
@@ -38,40 +40,134 @@

         public void Register(Type concrete, Contracts.Lifestyle lifestyle)
         {
-            _container.Configure(x => x.For(concrete).Use(concrete).SetLifecycleTo(ConvertLifestyle(lifestyle)));
+            lock (configuredInstances)
+            {
+                if (configuredInstances.ContainsKey(concrete))
+                {
+                    return;
+                }
+            }
+            ConfiguredInstance configuredInstance = null;
+            _container.Configure(x =>
+            {
+                configuredInstance = x.For(concrete).Use(concrete);
+                configuredInstance.SetLifecycleTo(ConvertLifestyle(lifestyle));
+
+                foreach (var implementedInterface in GetAllInterfacesImplementedBy(concrete))
+                {
+                    x.For(implementedInterface).Use(c => c.GetInstance(concrete));
+                }
+            });
+            lock (configuredInstances)
+            {
+                configuredInstances.Add(concrete, configuredInstance);
+            }
         }
         public void Register(Type serviceType, object instance, Contracts.Lifestyle lifestyle)
         {
-            _container.Configure(x => x.For(serviceType).Use(instance).SetLifecycleTo(ConvertLifestyle(lifestyle)));
-        }
-        public void Register<TInterface>(TInterface instance, Contracts.Lifestyle lifestyle)
-        {
-            _container.Configure(x => x.For<TInterface>().Use(() => instance).SetLifecycleTo(ConvertLifestyle(lifestyle)));
+            lock (configuredInstances)
+            {
+                if (configuredInstances.ContainsKey(serviceType))
+                {
+                    return;
+                }
+            }
+            ObjectInstance configuredInstance = null;
+            _container.Configure(x =>
+            {
+                configuredInstance = x.For(serviceType).Use(instance);
+                configuredInstance.SetLifecycleTo(ConvertLifestyle(lifestyle));
+
+                foreach (var implementedInterface in GetAllInterfacesImplementedBy(serviceType))
+                {
+                    x.For(implementedInterface).Use(c => c.GetInstance(serviceType));
+                }
+            });
+            lock (configuredInstances)
+            {
+                configuredInstances.Add(serviceType, configuredInstance);
+            }
+        }
+        public void Register<TInterface>(TInterface instance, Contracts.Lifestyle lifestyle)
+        {
+            lock (configuredInstances)
+            {
+                if (configuredInstances.ContainsKey(typeof(TInterface)))
+                {
+                    return;
+                }
+            }
+            LambdaInstance<TInterface, TInterface> configuredInstance = null;
+            _container.Configure(x =>
+            {
+                configuredInstance = x.For<TInterface>().Use(() => instance);
+                configuredInstance.SetLifecycleTo(ConvertLifestyle(lifestyle));
+
+                foreach (var implementedInterface in GetAllInterfacesImplementedBy(typeof(TInterface)))
+                {
+                    x.For(implementedInterface).Use(c => c.GetInstance<TInterface>());
+                }
+            });
+            lock (configuredInstances)
+            {
+                configuredInstances.Add(typeof(TInterface), configuredInstance);
+            }
         }

         public void Register<TInterface>(Func<IContainer, TInterface> factory, Contracts.Lifestyle lifestyle, string name = null)
         {
-            _container.Configure(x =>
-            {
-                var use = x.For<TInterface>().Use(y => factory(this));
+            lock (configuredInstances)
+            {
+                if (configuredInstances.ContainsKey(typeof(TInterface)))
+                {
+                    return;
+                }
+            }
+
+
+            LambdaInstance<TInterface, TInterface> configuredInstance = null;
+            _container.Configure(x =>
+            {
+                var use = configuredInstance = x.For<TInterface>().Use(y => factory(this));
                 if (!string.IsNullOrEmpty(name))
                     use.Named(name);
                 use.SetLifecycleTo(ConvertLifestyle(lifestyle));
-            });
+
+                foreach (var implementedInterface in GetAllInterfacesImplementedBy(typeof(TInterface)))
+                {
+                    x.For(implementedInterface).Use(c => c.GetInstance<TInterface>());
+                }
+            });
+            lock (configuredInstances)
+            {
+                configuredInstances.Add(typeof(TInterface), configuredInstance);
+            }
         }
         public void Register<TInterface, TConcrete>(Contracts.Lifestyle lifestyle, string name = null)
         {
-            _container.Configure(x =>
-            {
-                var use = x.For(typeof(TInterface)).Use(typeof(TConcrete));
+            lock (configuredInstances)
+            {
+                if (configuredInstances.ContainsKey(typeof(TInterface)))
+                {
+                    return;
+                }
+            }
+            ConfiguredInstance configuredInstance = null;
+            _container.Configure(x =>
+            {
+                var use = configuredInstance = x.For(typeof(TInterface)).Use(typeof(TConcrete));
                 if (!string.IsNullOrEmpty(name))
                     use.Named(name);
                 use.SetLifecycleTo(ConvertLifestyle(lifestyle));
             });
-        }
-        public bool HasService(Type service)
-        {
-            return _container.GetInstance(service) != null;
+            lock (configuredInstances)
+            {
+                configuredInstances.Add(typeof(TInterface), configuredInstance);
+            }
+        }
+        public bool HasService(Type componentType)
+        {
+            return _container.Model.PluginTypes.Any(t => t.PluginType == componentType);
         }

         public object Resolve(Type resolve)
@@ -98,10 +194,15 @@
         {
             return _container.TryGetInstance<TResolve>();
         }
+        static IEnumerable<Type> GetAllInterfacesImplementedBy(Type t)
+        {
+            return t.GetInterfaces().Where(x => !x.FullName.StartsWith("System."));
+        }

         public IContainer GetChildContainer()
         {
             return new Container(_container.GetNestedContainer());
         }
+        Dictionary<Type, Instance> configuredInstances = new Dictionary<Type, Instance>();
     }
 }


Removed cached Random factory when initializing a dice roller.

--- src/AppBrix.Backgammon/Game/Impl/DefaultDiceRoller.cs
+++ src/AppBrix.Backgammon/Game/Impl/DefaultDiceRoller.cs
@@ -15,7 +15,7 @@
         public void Initialize(IInitializeContext context)
         {
             this.app = context.App;
-            this.random = new ThreadLocal<Random>(this.app.GetFactory().Get<Random>);
+            this.random = new ThreadLocal<Random>(() => this.app.GetFactory().Get<Random>());
         }

         public void Uninitialize()


Fixed bug where some category paths would be invalid (#1004)

--- src/ArcGISRuntime.Samples.Shared/Models/SampleInfo.cs
+++ src/ArcGISRuntime.Samples.Shared/Models/SampleInfo.cs
@@ -32,7 +32,11 @@
         {
             get
             {
-                string formalCategory = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Category).Replace(" ", "");
+                string formalCategory = Category;
+                if (formalCategory.Contains(' '))
+                {
+                    formalCategory = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Category).Replace(" ", "");
+                }
                 return System.IO.Path.Combine(_pathStub, "Samples", formalCategory, FormalName);
             }
         }


Fix OrderRecursivelyAsync bug with OrderByDescending

--- src/ChessVariantsTraining/ViewModels/CommentSorter.cs
+++ src/ChessVariantsTraining/ViewModels/CommentSorter.cs
@@ -26,12 +26,12 @@
         {
             List<Comment> result = new List<Comment>();

-            IEnumerable<Task<Comment>> currentTopLevel = list.Where(x => x.ParentID == parent)
-                .Select(async x => new Comment(x, indentLevel, await voteRepo.GetScoreForCommentAsync(x.ID), x.Deleted, (await userRepo.FindByIdAsync(x.Author)).Username))
-                .OrderByDescending(async x => (await x).Score);
-            foreach (Task<Comment> commentTask in currentTopLevel)
+            IEnumerable<Task<Comment>> currentTopLevelTask = list.Where(x => x.ParentID == parent)
+                .Select(async x => new Comment(x, indentLevel, await voteRepo.GetScoreForCommentAsync(x.ID), x.Deleted, (await userRepo.FindByIdAsync(x.Author)).Username));
+            IEnumerable<Comment> currentTopLevel = await Task.WhenAll(currentTopLevelTask);
+            currentTopLevel = currentTopLevel.OrderByDescending(x => x.Score);
+            foreach (Comment comment in currentTopLevel)
             {
-                Comment comment = await commentTask;
                 result.Add(comment);
                 result.AddRange(await OrderRecursivelyAsync(list, comment.ID, indentLevel + 1));
             }


Add publication to backend

Add publication to backend

--- src/CommunityHeart.Shared/ViewModels/MainViewModel.cs
+++ src/CommunityHeart.Shared/ViewModels/MainViewModel.cs
@@ -1,4 +1,5 @@
-using CommunityHeart.Services;
+using CommunityHeart.Models;
+using CommunityHeart.Services;
 using CommunityHeart.Tools;
 using Microsoft.Band;
 using System;
@@ -21,6 +22,7 @@
         private bool _started;
         private ICommand _startStopCommand;
         private ICommand _settingsCommand;
+        private Timer _timer;
         public MainViewModel()
         {
         }
@@ -41,6 +43,11 @@
                     _client.SensorManager.HeartRate.ReadingChanged += HeartRate_ReadingChanged;
                 }
             }
+        }
+
+        private async void TimerCallback(object state)
+        {
+            await IoC.Instance.Resolve<IDataService>().SendDataAsync(new DeviceData() { HeartRate = this.HeartRate });
         }
         public ICommand StartStopCommand
         {
@@ -89,10 +96,17 @@
                 return;
             if (_client.SensorManager.HeartRate.IsSupported)
                 await _client.SensorManager.HeartRate.StartReadingsAsync(new CancellationToken());
+            var init = new DeviceInit();
+            init.HeartRateMin = SettingsViewModel.Instance.HeartRateMin;
+            init.HeartRateMax = SettingsViewModel.Instance.HeartRateMax;
+            await IoC.Instance.Resolve<IDataService>().InitAsync(init);
+            _timer = new Timer(new TimerCallback(TimerCallback), null, 0, 1000);
             Started = true;
         }
         public async Task Stop()
         {
+            _timer.Dispose();
+            _timer = null;
             if (_client == null)
                 return;
             if (_client.SensorManager.HeartRate.IsSupported)


Fixed Project status filter.

Fixed Project status filter.

--- src/CompetitionPlatform/Controllers/HomeController.cs
+++ src/CompetitionPlatform/Controllers/HomeController.cs
@@ -38,7 +38,7 @@
             var projects = await _projectRepository.GetProjectsAsync();

             if (!string.IsNullOrEmpty(projectStatusFilter))
-                projects = projects.Where(x => x.Status.ToString() == projectStatusFilter);
+                projects = projects.Where(x => x.ProjectStatus == projectStatusFilter);

             if (!string.IsNullOrEmpty(projectCategoryFilter))
                 projects = projects.Where(x => x.Category == projectCategoryFilter);


DefaultSiteTemplate design time data update

--- src/DefaultSiteTemplate/DesignTimeDocModelProvider.cs
+++ src/DefaultSiteTemplate/DesignTimeDocModelProvider.cs
@@ -38,7 +38,7 @@
                 Summary = "A sample summary for the method."
             };

-            var sampleMethodOverload1 = new DocMethod("M:SamplePackage.SampleAssembly.SampleClass.SampleMethod(System.String)", "SampleMethod")
+            var sampleMethodOverload1 = new DocMethod("M:SamplePackage.SampleAssembly.SampleClass.SampleMethod(System.String)", "SampleMethod(System.String name)")
             {
                 Summary = "A sample summary for the method."
             };


fix access level bug.

fix access level bug.

--- src/DotNetCore.CAP.RabbitMQ/CAP.Options.Extensions.cs
+++ src/DotNetCore.CAP.RabbitMQ/CAP.Options.Extensions.cs
@@ -4,7 +4,7 @@
 // ReSharper disable once CheckNamespace
 namespace Microsoft.Extensions.DependencyInjection
 {
-    internal static class CapOptionsExtensions
+    public static class CapOptionsExtensions
     {
         public static CapOptions UseRabbitMQ(this CapOptions options, string hostName)
         {


apply responsecache to the whole controller

--- src/FilterLists.Api/V1/Controllers/ListsController.cs
+++ src/FilterLists.Api/V1/Controllers/ListsController.cs
@@ -5,6 +5,7 @@
 {
     [ApiVersion("1.0")]
     [Produces("application/json")]
+    [ResponseCache(CacheProfileName = "Long-Lived")]
     public class ListsController : Controller
     {
         private readonly IFilterListService filterListService;
@@ -15,7 +16,6 @@
         }

         [HttpGet]
-        [ResponseCache(CacheProfileName = "Long-Lived")]
         public IActionResult Get()
         {
             return Json(filterListService.GetAllSummaries());


ensure call base onmodelcreating

ensure call base onmodelcreating

--- src/FilterLists.Data/Contexts/FilterListsDbContext.cs
+++ src/FilterLists.Data/Contexts/FilterListsDbContext.cs
@@ -24,6 +24,7 @@
             modelBuilder.ApplyConfiguration(new MaintainerTypeConfiguration());
             modelBuilder.ApplyConfiguration(new LanguageTypeConfiguration());
             modelBuilder.ApplyConfiguration(new FilterListLanguageTypeConfiguration());
+            base.OnModelCreating(modelBuilder);
         }
     }
 }


Removed the hard-coded "ret" variable.

Removed the hard-coded "ret" variable.

Signed-off-by: Dimitar Dobrev <ca751a5c976abad79158718440750fc638d19ebc@yahoo.com>

--- src/Generator/Generators/CSharp/CSharpTextTemplate.cs
+++ src/Generator/Generators/CSharp/CSharpTextTemplate.cs
@@ -28,7 +28,7 @@

         public static string GeneratedIdentifier(string id)
         {
-            return "_" + id;
+            return "__" + id;
         }

         public static string SafeIdentifier(string id)
@@ -1637,7 +1637,7 @@

                 Class retClass = null;
                 hiddenParam.Type.Desugar().IsTagDecl(out retClass);
-                WriteLine("var __ret = new {0}.Internal();", QualifiedIdentifier(retClass));
+                WriteLine("var {0} = new {1}.Internal();", GeneratedIdentifier("ret"), QualifiedIdentifier(retClass));
             }

             var names = new List<string>();
@@ -1654,7 +1654,7 @@

             if (function.HasHiddenStructParameter)
             {
-                var name = string.Format("new IntPtr(&__ret)");
+                var name = string.Format("new IntPtr(&{0})", GeneratedIdentifier("ret"));
                 names.Insert(0, name);
             }

@@ -1673,7 +1673,7 @@
             }

             if (needsReturn && !function.HasHiddenStructParameter)
-                Write("var __ret = ");
+                Write("var {0} = ", GeneratedIdentifier("ret"));

             WriteLine("{0}({1});", functionName, string.Join(", ", names));

@@ -1704,8 +1704,8 @@
             {
                 var ctx = new CSharpMarshalContext(Driver)
                 {
-                    ArgName = "__ret",
-                    ReturnVarName = "__ret",
+                    ArgName = GeneratedIdentifier("ret"),
+                    ReturnVarName = GeneratedIdentifier("ret"),
                     ReturnType = retType
                 };


Checks to ensure that backgroundModes is not null before using it.

--- src/Geolocator.Plugin.iOS/GeolocatorImplementation.cs
+++ src/Geolocator.Plugin.iOS/GeolocatorImplementation.cs
@@ -149,7 +149,7 @@
 				if (UIDevice.CurrentDevice.CheckSystemVersion(9, 0))
 				{
 					NSArray backgroundModes = NSBundle.MainBundle.InfoDictionary[(NSString)"UIBackgroundModes"] as NSArray;
-					m.AllowsBackgroundLocationUpdates = backgroundModes.Contains((NSString)"Location") || backgroundModes.Contains((NSString)"location");
+					m.AllowsBackgroundLocationUpdates = backgroundModes != null && (backgroundModes.Contains((NSString)"Location") || backgroundModes.Contains((NSString)"location"));
 				}

                 // always prevent location update pausing since we're only listening for a single update.


Treating the pull request id as a string leads to a better user experience

# Conflicts:
#	src/GitHub.App/ViewModels/PullRequestListViewModel.cs

--- src/GitHub.App/ViewModels/PullRequestListViewModel.cs
+++ src/GitHub.App/ViewModels/PullRequestListViewModel.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.ComponentModel.Composition;
+using System.Globalization;
 using System.Linq;
 using System.Reactive.Linq;
 using System.Windows.Input;
@@ -149,10 +150,16 @@

             filText = filText?.Trim();

-            var hasFilterText = !string.IsNullOrWhiteSpace(filText);
+            var hasFilterText = !string.IsNullOrEmpty(filText);

             var filterPullRequestNumber = 0;
             var filterTextIsNumber = hasFilterText && int.TryParse(filText, out filterPullRequestNumber);
+
+            string filterPullRequestNumberAsString = null;
+            if (filterTextIsNumber)
+            {
+                filterPullRequestNumberAsString = filterPullRequestNumber.ToString(CultureInfo.InvariantCulture);
+            }

             var filterTextIsString = hasFilterText && !filterTextIsNumber;

@@ -160,7 +167,7 @@
                 (!state.IsOpen.HasValue || state.IsOpen == pullRequest.IsOpen) &&
                 (ass == null || ass.Equals(pullRequest.Assignee)) &&
                 (aut == null || aut.Equals(pullRequest.Author)) &&
-                (filterTextIsNumber == false || pullRequest.Number == filterPullRequestNumber) &&
+                (filterTextIsNumber == false || pullRequest.Number.ToString(CultureInfo.InvariantCulture).StartsWith(filterPullRequestNumberAsString, StringComparison.OrdinalIgnoreCase)) &&
                 (filterTextIsString == false || pullRequest.Title.ToUpperInvariant().Contains(filText.ToUpperInvariant()));
         }


Changing OnIsBusyChanged event raise count

--- src/IntegrationTests/Events/RepositoryManagerTests.cs
+++ src/IntegrationTests/Events/RepositoryManagerTests.cs
@@ -396,7 +396,7 @@
                 repositoryManagerListener.Received().OnRepositoryChanged(Args.GitStatus);
                 result.AssertEqual(expected);

-                repositoryManagerListener.ReceivedWithAnyArgs(2).OnIsBusyChanged(Args.Bool);
+                repositoryManagerListener.ReceivedWithAnyArgs(6).OnIsBusyChanged(Args.Bool);
                 repositoryManager.IsBusy.Should().BeFalse();

                 repositoryManagerListener.Received(1).OnActiveBranchChanged();