Cleaned up top10 command

Cleaned up top10 command

--- Modules/Wow/WowCommands.cs
+++ Modules/Wow/WowCommands.cs
@@ -55,7 +55,7 @@
             var embed = new EmbedBuilder();
             StringBuilder sb = new StringBuilder();
             if (string.IsNullOrEmpty(args))
-            {
+            {
                 embed.Title = $"WoW Armory Command Reference";
                 sb.AppendLine($"Usage examples:");
                 sb.AppendLine($":black_small_square: **{Config.Prefix}armory** charactername");
@@ -860,33 +860,38 @@
         [Summary("Get the top 10 dps or hps for the latest raid in World of Warcraft (via warcraftlogs.com)")]
         public async Task GetTop10([Remainder] string args = null)
         {
+            var embed = new EmbedBuilder();
             StringBuilder sb = new StringBuilder();
             string fightName = string.Empty;
             string guildOnly = string.Empty;
             string difficulty = string.Empty;
             string metric = string.Empty;
-            int encounterID = 0;
-            var fightList = WarcraftLogs.Zones.Where(z => z.id == 13).Select(z => z.encounters).FirstOrDefault();
-            var embed = new EmbedBuilder();
-
-            //Get Guild Information for Discord Server, start embed
+            string raidName = string.Empty;
             string thumbUrl = string.Empty;
             var guildInfo = Context.Guild;
             string discordGuildName = string.Empty;
-            if (guildInfo == null)
+            int encounterID = 0;
+
+            //Attempt to get guild info
+            NinjaObjects.GuildObject guildObject = await GetGuildName();
+            string realmName = guildObject.realmName.Replace("'", string.Empty);
+            string guildName = guildObject.guildName;
+            string region = guildObject.regionName;
+
+            var fightList = WarcraftLogs.Zones.Where(z => z.id == 13).Select(z => z.encounters).FirstOrDefault();
+            raidName = WarcraftLogs.Zones.Where(z => z.id == 13).Select(z => z.name).FirstOrDefault();
+
+            //Get Guild Information for Discord Server (or channel for DM)
+            if (Context.Channel is IDMChannel)
             {
                 discordGuildName = Context.User.Username;
                 thumbUrl = Context.User.GetAvatarUrl();
             }
-            else
+            else if (Context.Channel is IGuildChannel)
             {
                 discordGuildName = Context.Guild.Name;
                 thumbUrl = Context.Guild.IconUrl;
             }
-            NinjaObjects.GuildObject guildObject = await GetGuildName();
-
-            string realmName = guildObject.realmName.Replace("'", string.Empty);
-            string guildName = guildObject.guildName;
             //Argument logic
             if (args == null || args.Split(',')[0] == "help")
             {
@@ -921,7 +926,7 @@
                     //list fights here
                     if (fightList != null)
                     {
-                        embed.Title = "__Fight names for **The Nighthold**__";
+                        embed.Title = $"__Fight names for **{raidName}**__";
                         int j = 1;
                         foreach (var fight in fightList)
                         {
@@ -951,6 +956,7 @@
                             metric = splitArgs[1].Trim();
                             break;
                         }
+                    //Name + metric + guild/all
                     case 3:
                         {
                             fightName = splitArgs[0].Trim();
@@ -958,8 +964,9 @@
                             metric = splitArgs[2].Trim();
                             break;
                         }
+                    //Name + metric + guild/all + difficulty
                     case 4:
-                        {
+                        {
                             fightName = splitArgs[0].Trim();
                             guildOnly = splitArgs[1].Trim();
                             metric = splitArgs[2].Trim();
@@ -1094,7 +1101,7 @@
                 if (string.IsNullOrEmpty(fightName))
                 {
                     sb.AppendLine($"{Context.User.Username}, please specify a fight name!");
-                    sb.AppendLine($"**Example:** !top10 Skorpyron");
+                    sb.AppendLine($"**Example:** !top10 Goroth");
                     sb.AppendLine($"**Encounter Lists:** !top10 list");
                     await _cc.Reply(Context, sb.ToString());
                     return;
@@ -1393,7 +1400,7 @@
             NinjaObjects.GuildObject guildObject = new NinjaObjects.GuildObject();
             string guildName = string.Empty;
             string realmName = string.Empty;
-            string regionName = "us";
+            string regionName = "us";
             if (string.IsNullOrEmpty(args))
             {
                 guildObject = await GetGuildName();


Fixed a bug where CommonPhasorService.PhasorDataSourceValidation failed to create statistic measurement under new database schema. Updated sample database scripts to have correct node setting for openPDC service.

git-tfs-id: [https://tfs.codeplex.com/tfs/TFS07]$/openPG/Main;C71379

--- Source/Applications/openPGManager/MainWindow.xaml.cs
+++ Source/Applications/openPGManager/MainWindow.xaml.cs
@@ -78,8 +78,8 @@
 #if DEBUG
             const string hostService = "openPG";

-            if (Process.GetProcessesByName(hostService).Length == 0)
-                Process.Start(hostService + ".exe");
+            if (System.Diagnostics.Process.GetProcessesByName(hostService).Length == 0)
+                System.Diagnostics.Process.Start(hostService + ".exe");
 #endif

             InitializeComponent();


Fixed displayed value for +/-Infinity

Fixed displayed value for +/-Infinity

--- NodeVsDebugger/Property.cs
+++ NodeVsDebugger/Property.cs
@@ -105,7 +105,7 @@
                     break;
                 case "number":
                 case "boolean":
-                    m_value = JsonConvert.SerializeObject(val["value"]);
+                    m_value = ((string)val["text"]) ?? JsonConvert.SerializeObject(val["value"]);
                     break;
                 case "string":
                     m_fullString = (string)val["value"];


Moved the layout xml file from AppData\Roaming to AppData\Local\AGS

--- Editor/AGS.Editor/GUI/WindowsLayoutManager.cs
+++ Editor/AGS.Editor/GUI/WindowsLayoutManager.cs
@@ -23,6 +23,9 @@
         public void SaveLayout()
         {
             string configFile = GetLayoutFile();
+            string folder = Path.GetDirectoryName(configFile);
+            Directory.CreateDirectory(folder);
+            File.SetAttributes(folder, FileAttributes.Normal);
             _dockPanel.SaveAsXml(configFile);
         }

@@ -51,9 +54,9 @@

         private string GetLayoutFile()
         {
-            return Path.Combine(
-                Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
-                LAYOUT_FILENAME);
+            string baseFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
+            const string agsFolder = "AGS";
+            return Path.Combine(Path.Combine(baseFolder, agsFolder), LAYOUT_FILENAME);
         }

         private IDockContent DeserializeContents(string type)


Decreased period of Backup Packages job now that it only starts async copies

--- Source/NuGetGallery.Worker/Jobs/BackupPackagesJob.cs
+++ Source/NuGetGallery.Worker/Jobs/BackupPackagesJob.cs
@@ -12,7 +12,7 @@
         {
             get
             {
-                return TimeSpan.FromHours(1);
+                return TimeSpan.FromMinutes(10);
             }
         }

@@ -20,7 +20,7 @@
         {
             get
             {
-                return TimeSpan.FromMinutes(30);
+                return TimeSpan.FromMinutes(1);
             }
         }


項目6を開始

項目6を開始

--- EffectiveCSharp4/EffectiveCSharp4/Chapter1.cs
+++ EffectiveCSharp4/EffectiveCSharp4/Chapter1.cs
@@ -174,3 +174,8 @@
 		}
 	}
 }
+
+namespace EffectiveCSharp4.Chapter1.Topic6
+{
+
+}


Need this too, obviously

Need this too, obviously

--- Source/StickEmApp/StickEmApp/Entities/SalesResult.cs
+++ Source/StickEmApp/StickEmApp/Entities/SalesResult.cs
@@ -11,5 +11,6 @@
         public ResultType Status { get; set; }
         public Money Difference { get; set; }
         public int NumberOfStickersSold { get; set; }
+        public int NumberOfStickersReceived { get; set; }
     }
 }


基地航空隊：コピー時の書式を改善

基地航空隊：コピー時の書式を改善

--- ElectronicObserver/Window/FormBaseAirCorps.cs
+++ ElectronicObserver/Window/FormBaseAirCorps.cs
@@ -340,9 +340,10 @@

 			foreach ( var corps in baseaircorps ) {

-				sb.AppendFormat( "{0}\t[{1}] 制空戦力{2}\r\n",
+				sb.AppendFormat( "{0}\t[{1}] 制空戦力{2}/戦闘行動半径{3}\r\n",
 					corps.Name, Constants.GetBaseAirCorpsActionKind( corps.ActionKind ),
-					Calculator.GetAirSuperiority( corps ) );
+					Calculator.GetAirSuperiority( corps ),
+					corps.Distance );

 				var sq = corps.Squadrons.Values.ToArray();

@@ -373,7 +374,7 @@
 					}
 				}

-				sb.AppendLine().AppendLine();
+				sb.AppendLine();
 			}

 			Clipboard.SetData( DataFormats.StringFormat, sb.ToString() );


修改Jetty远程调试的命令，兼容高版本JDK，修改一些小的文字描述。去除多余的命名空间

--- Monitor/MainWindow.xaml.cs
+++ Monitor/MainWindow.xaml.cs
@@ -50,7 +50,7 @@
             this.notifyIcon.Visible = false;
             this.notifyIcon.Click += notifyIcon_Click;

-            ContextMenu contextMenu = new System.Windows.Forms.ContextMenu();
+            ContextMenu contextMenu = new ContextMenu();
             MenuItem menuItemStart = new MenuItem("启动Jetty");
             menuItemStart.Click += menuItemStart_Click;
             contextMenu.MenuItems.Add(menuItemStart);
@@ -99,7 +99,7 @@

         void menuItemExit_Click(object sender, EventArgs e)
         {
-            if (System.Windows.MessageBox.Show("确定要退出吗？这将停止Jetty。", "退出确认", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == System.Windows.MessageBoxResult.Yes)
+            if (System.Windows.MessageBox.Show("确定要退出吗？这将停止Jetty。", "退出确认", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
             {
                 this.StopJetty();
                 this.notifyIcon.Visible = false;
@@ -111,15 +111,15 @@

         void notifyIcon_Click(object sender, EventArgs e)
         {
-            if (this.WindowState == System.Windows.WindowState.Normal)
-            {
-                this.WindowState = System.Windows.WindowState.Minimized;
+            if (this.WindowState == WindowState.Normal)
+            {
+                this.WindowState = WindowState.Minimized;
                 this.ShowInTaskbar = false;
                 this.notifyIcon.Visible = true;
             }
             else
             {
-                this.WindowState = System.Windows.WindowState.Normal;
+                this.WindowState = WindowState.Normal;
                 this.ShowInTaskbar = true;
                 this.notifyIcon.Visible = false;
             }
@@ -307,7 +307,7 @@
                             {
                                 sbCommand.AppendLine(@"cd /d " + this.txtJettyBase.Text);
                                 sbCommand.AppendLine("\"" + this.txtJavaHome.Text + "\\bin\\java.exe\" -jar " + this.txtJettyHome.Text + @"\start.jar --add-to-startd=http,deploy,spring,servlet,servlets,webapp,jsp,jstl,server");
-                                sbCommand.AppendLine("\"" + this.txtJavaHome.Text + "\\bin\\java.exe\" -Xdebug -agentlib:jdwp=transport=dt_socket,address=" + this.txtRemotePort.Text + ",server=y,suspend=n -jar " + this.txtJettyHome.Text + @"\start.jar jetty.http.port=" + this.txtLocalPort.Text);
+                                sbCommand.AppendLine("\"" + this.txtJavaHome.Text + "\\bin\\java.exe\" -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=" + this.txtRemotePort.Text + " -jar " + this.txtJettyHome.Text + @"\start.jar jetty.http.port=" + this.txtLocalPort.Text);
                             }

                             this.txtCommand.Text = sbCommand.ToString();
@@ -387,7 +387,7 @@
             {
                 if (startProcess == null)
                 {
-                    this.labMessage.Content = "请先启动服务！";
+                    this.labMessage.Content = "请先启动Jetty！";
                 }
                 else
                 {
@@ -430,7 +430,7 @@
         {
             if (!IsExit)
             {
-                this.WindowState = System.Windows.WindowState.Minimized;
+                this.WindowState = WindowState.Minimized;
                 this.ShowInTaskbar = false;
                 this.notifyIcon.Visible = true;


Configuring coins restarted mining twice

--- MultiMiner.Win/MainForm.cs
+++ MultiMiner.Win/MainForm.cs
@@ -255,8 +255,8 @@
             {
                 engineConfiguration.SaveCoinConfigurations();
                 RefreshCoinComboBox();
+                //SaveChanges() will restart mining if needed
                 SaveChanges();
-                RestartMiningIfMining();
             }
             else
                 engineConfiguration.LoadCoinConfigurations();
@@ -308,6 +308,7 @@

         private void saveButton_Click(object sender, EventArgs e)
         {
+            //SaveChanges() will restart mining if needed
             SaveChanges();
         }

@@ -495,6 +496,9 @@
             if (!MiningConfigurationValid())
                 return;

+            if (miningEngine.Mining)
+                return;
+
             startButton.Enabled = false; //immediately disable, update after
             startMenuItem.Enabled = false;


Refresh details area after stopping mining

--- MultiMiner.Win/MainForm.cs
+++ MultiMiner.Win/MainForm.cs
@@ -1389,6 +1389,7 @@
             ClearAllMinerStats();
             RefreshIncomeSummary();
             AutoSizeListViewColumns();
+            RefreshDetailsAreaIfVisible();
         }

         private void startButton_Click(object sender, EventArgs e)


Removed simulator from NetworkManager.Simulators if given up on RegionHandshake

--- OpenMetaverse/Simulator.cs
+++ OpenMetaverse/Simulator.cs
@@ -627,6 +627,10 @@
                 {
                     Logger.Log("Giving up on waiting for RegionHandshake for " + this.ToString(),
                         Helpers.LogLevel.Warning, Client);
+                    //Remove the simulator from the list, not useful if we haven't recieved the RegionHandshake
+                    lock (Client.Network.Simulators) {
+                        Client.Network.Simulators.Remove(this);
+                    }
                 }

                 if (Client.Settings.SEND_AGENT_THROTTLE)


CSharp: Add [Flags] attribute to ImGui.WindowFlags.

--- Source/Urho3D/CSharp/ThirdParty/ImGui/WindowFlags.cs
+++ Source/Urho3D/CSharp/ThirdParty/ImGui/WindowFlags.cs
@@ -1,8 +1,11 @@
-namespace ImGui
+using System;
+
+namespace ImGui
 {
     /// <summary>
     /// Flags for ImGui::Begin()
     /// </summary>
+    [Flags]
     public enum WindowFlags : int
     {
         Default = 0,


Fix equality comparison tests (test problem; though the "correct" behavior is fuzzy anyhow since this is designed to help find buggy code that's not obviously wrong so much as unusual.)

--- ExpressionToCodeTest/EqualityComparingTest.cs
+++ ExpressionToCodeTest/EqualityComparingTest.cs
@@ -1,60 +1,70 @@
 using System;
 using System.Collections.Generic;
+using System.Globalization;
 using System.Linq;
-using System.Text;
+using ExpressionToCodeLib;
 using NUnit.Framework;
-using ExpressionToCodeLib;

 #pragma warning disable 252,253
 // ReSharper disable NegativeEqualityExpression
 // ReSharper disable EqualExpressionComparison
 // ReSharper disable ConvertToConstant.Local
 // ReSharper disable RedundantCast
+
 namespace ExpressionToCodeTest {
 	[TestFixture]
 	public class EqualityComparingTest {
 		static readonly string bla = "bla";
 		static readonly object bla2object = "bla2object";
 		static readonly string bla2string = "bla2string";
+
 		[Test]
 		public void EqualsOpDetected() {
 			Assert.AreEqual(EqualityExpressionClass.EqualsOp, EqualityExpressions.CheckForEquality(() => bla == bla2object));
 			Assert.AreEqual(EqualityExpressionClass.EqualsOp, EqualityExpressions.CheckForEquality(() => new DateTime(2011, 05, 17) == DateTime.Today));
 		}
+
 		[Test]
 		public void NotEqualsOpDetected() {
 			Assert.AreEqual(EqualityExpressionClass.NotEqualsOp, EqualityExpressions.CheckForEquality(() => bla != bla2object));
 			Assert.AreEqual(EqualityExpressionClass.NotEqualsOp, EqualityExpressions.CheckForEquality(() => new DateTime(2011, 05, 17) != DateTime.Today));
 		}
+
 		[Test]
 		public void EquatableDetected() { //TODO: makes interesting expressiontocode test too
 			Assert.AreEqual(EqualityExpressionClass.EquatableEquals, EqualityExpressions.CheckForEquality(() => ((IEquatable<string>)bla).Equals(bla2string)));
 			Assert.AreEqual(EqualityExpressionClass.EquatableEquals, EqualityExpressions.CheckForEquality(() => bla.Equals(bla2string)));
 			Assert.AreEqual(EqualityExpressionClass.EquatableEquals, EqualityExpressions.CheckForEquality(() => new DateTime(2011, 05, 17).Equals(DateTime.Today)));
 		}
+
 		[Test]
 		public void NoneDetected() {
 			Assert.AreEqual(EqualityExpressionClass.None, EqualityExpressions.CheckForEquality(() => bla.StartsWith("bla")));
 			Assert.AreEqual(EqualityExpressionClass.None, EqualityExpressions.CheckForEquality(() => !(bla == bla2object)));
-			Assert.AreEqual(EqualityExpressionClass.None, EqualityExpressions.CheckForEquality(() => DateTime.Equals(new DateTime(2011, 05, 17), DateTime.Today)));// no match since specific method
+			Assert.AreEqual(EqualityExpressionClass.None, EqualityExpressions.CheckForEquality(() => DateTime.Equals(new DateTime(2011, 05, 17), DateTime.Today)));
+			// no match since specific method
 			Assert.AreEqual(EqualityExpressionClass.None, EqualityExpressions.CheckForEquality(() => !ReferenceEquals(null, null)));
 		}
+
 		[Test]
 		public void ObjectEqualsDetected() {
 			Assert.AreEqual(EqualityExpressionClass.ObjectEquals, EqualityExpressions.CheckForEquality(() => bla2object.Equals(bla2object)));
 			var anon = new { X = bla, Y = bla2object };
 			Assert.AreEqual(EqualityExpressionClass.ObjectEquals, EqualityExpressions.CheckForEquality(() => anon.Equals(anon)));
 		}
+
 		[Test]
 		public void ObjectEqualsStaticDetected() {
 			Assert.AreEqual(EqualityExpressionClass.ObjectEqualsStatic, EqualityExpressions.CheckForEquality(() => Equals(bla, null)));
 			Assert.AreEqual(EqualityExpressionClass.ObjectEqualsStatic, EqualityExpressions.CheckForEquality(() => Equals(null, 42)));
 		}
+
 		[Test]
 		public void ObjectReferenceEqualsDetected() {
 			Assert.AreEqual(EqualityExpressionClass.ObjectReferenceEquals, EqualityExpressions.CheckForEquality(() => ReferenceEquals(bla2object, bla2object)));
 			Assert.AreEqual(EqualityExpressionClass.ObjectReferenceEquals, EqualityExpressions.CheckForEquality(() => ReferenceEquals(null, null)));
 		}
+
 		[Test]
 		public void SequenceEqualsDetected() {
 			Assert.AreEqual(EqualityExpressionClass.SequenceEqual, EqualityExpressions.CheckForEquality(() => bla.AsEnumerable().SequenceEqual(bla2string)));
@@ -68,32 +78,35 @@
 		[Test]
 		public void StringEqDisagreement() {
 			Assert.That(
-				EqualityExpressions.DisagreeingEqualities(() => object.ReferenceEquals(1000.ToString(), 10 + "00")).ToArray(),
+				EqualityExpressions.DisagreeingEqualities(() => ReferenceEquals(1000.ToString(CultureInfo.InvariantCulture), 10 + "00")).ToArray(),
 				Is.EquivalentTo(eqclasses(
-					EqualityExpressionClass.EqualsOp, EqualityExpressionClass.NotEqualsOp, EqualityExpressionClass.ObjectEquals, EqualityExpressionClass.ObjectEqualsStatic,
-					EqualityExpressionClass.EquatableEquals,
-					EqualityExpressionClass.SequenceEqual
+					EqualityExpressionClass.EqualsOp, EqualityExpressionClass.NotEqualsOp, EqualityExpressionClass.ObjectEquals,
+					EqualityExpressionClass.ObjectEqualsStatic, EqualityExpressionClass.EquatableEquals, EqualityExpressionClass.SequenceEqual
 #if DOTNET40
 , EqualityExpressionClass.StructuralEquals
 #endif
 )));
 			Assert.That(
-				EqualityExpressions.DisagreeingEqualities(() => 1000.ToString().Equals(10 + "00")).ToArray(),
+				EqualityExpressions.DisagreeingEqualities(() => 1000.ToString(CultureInfo.InvariantCulture).Equals(10 + "00")).ToArray(),
 				Is.EquivalentTo(eqclasses(EqualityExpressionClass.ObjectReferenceEquals)));
 		}

 		[Test]
 		public void DtRefEqDisagreement() {
 			Assert.That(
-				EqualityExpressions.DisagreeingEqualities(() => object.ReferenceEquals(new DateTime(2011, 05, 17), new DateTime(2011, 05, 17))).ToArray(),
+				EqualityExpressions.DisagreeingEqualities(
+				// ReSharper disable ReferenceEqualsWithValueType
+					() => ReferenceEquals(new DateTime(2011, 05, 17), new DateTime(2011, 05, 17))).ToArray(),
+				// ReSharper restore ReferenceEqualsWithValueType
 				Is.EquivalentTo(eqclasses(
-					EqualityExpressionClass.EqualsOp, EqualityExpressionClass.NotEqualsOp, EqualityExpressionClass.ObjectEquals, EqualityExpressionClass.ObjectEqualsStatic,
-					EqualityExpressionClass.EquatableEquals
+					EqualityExpressionClass.ObjectEquals, EqualityExpressionClass.ObjectEqualsStatic
 #if DOTNET40
 , EqualityExpressionClass.StructuralEquals
 #endif
 )));
+			//EqualityExpressionClass.EqualsOp, EqualityExpressionClass.NotEqualsOp, EqualityExpressionClass.EquatableEquals: these are equivalent because syntax-type sensitive.
 		}
+
 		[Test]
 		public void DtEqDisagreement() {
 			Assert.That(
@@ -101,4 +114,4 @@
 				Is.EquivalentTo(eqclasses(EqualityExpressionClass.ObjectReferenceEquals)));
 		}
 	}
-}
+}


Fixed: wrong currency values show after clicking Start & coins adjusting

--- MultiMiner.Win/MainForm.cs
+++ MultiMiner.Win/MainForm.cs
@@ -484,6 +484,8 @@

             //to get changes from strategy config
             LoadGridValuesFromConfiguration();
+            //to get updated coin stats for coin changes
+            LoadGridValuesFromCoinStats();

             UpdateMiningButtons();
         }


Ensured that exceptions that implement IEnumerable<T> are still formatted as exceptions. Fixes #122.

--- FluentAssertions.Core/Formatting/Formatter.cs
+++ FluentAssertions.Core/Formatting/Formatter.cs
@@ -22,8 +22,8 @@
             new NumericValueFormatter(),
             new StringValueFormatter(),
             new ExpressionValueFormatter(),
+            new ExceptionValueFormatter(),
             new EnumerableValueFormatter(),
-            new ExceptionValueFormatter(),
             new DefaultValueFormatter(),
         };


Reused constant to avoid duplicate string

--- FoundationV3/Properties/DetectionConstants.cs
+++ FoundationV3/Properties/DetectionConstants.cs
@@ -226,7 +226,9 @@
                 "x-Device-User-Agent",
                 "X-Device-User-Agent",
                 "X-OperaMini-Phone-UA",
-                "User-Agent"
+#pragma warning disable 618
+                UserAgentHeader
+#pragma warning restore 618
             };

         /// <summary>


Set PublicHoliday as type of GoodFriday

Set PublicHoliday as type of GoodFriday

--- Src/Nager.Date/PublicHolidays/NetherlandsProvider.cs
+++ Src/Nager.Date/PublicHolidays/NetherlandsProvider.cs
@@ -40,7 +40,7 @@

             var items = new List<PublicHoliday>();
             items.Add(new PublicHoliday(year, 1, 1, "Nieuwjaarsdag", "New Year's Day", countryCode, 1967));
-            items.Add(this._catholicProvider.GoodFriday("Goede Vrijdag", year, countryCode).SetType(PublicHolidayType.Authorities | PublicHolidayType.School));
+            items.Add(this._catholicProvider.GoodFriday("Goede Vrijdag", year, countryCode).SetType(PublicHolidayType.Authorities | PublicHolidayType.PublicHoliday | PublicHolidayType.School));
             items.Add(this._catholicProvider.EasterSunday("Eerste Paasdag", year, countryCode));
             items.Add(this._catholicProvider.EasterMonday("Tweede Paasdag", year, countryCode).SetLaunchYear(1642));
             items.Add(new PublicHoliday(year, 4, kingsDay, "Koningsdag", "King's Day", countryCode));


Update NetworkConnectivityServiceBase.cs

--- TIKSN.Core/Network/NetworkConnectivityServiceBase.cs
+++ TIKSN.Core/Network/NetworkConnectivityServiceBase.cs
@@ -4,7 +4,7 @@

 namespace TIKSN.Network
 {
-    public abstract class NetworkConnectivityServiceBase : INetworkConnectivityService
+    public abstract class NetworkConnectivityServiceBase : INetworkConnectivityService, IDisposable
     {
         private readonly Subject<InternetConnectivityState> manualChecks;
         protected IObservable<InternetConnectivityState> internetConnectivityStateInternal;
@@ -31,5 +31,7 @@

             return result;
         }
+
+        public void Dispose() => throw new NotImplementedException();
     }
 }


Renamed InteropUSB to InteropDevices as it's more generic

--- NUSB/Interop/InteropUSB.cs
+++ NUSB/Interop/InteropUSB.cs
@@ -1,67 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace NUSB.Interop
-{
-    internal sealed class InteropUSB
-    {
-        /// <summary>
-        /// Known Win32 Messages that we will handle
-        /// </summary>
-        [Flags]
-        public enum Win32Error
-        {
-            ERROR_IO_PENDING = 997
-        }
-
-        /// <summary>
-        /// SetupDiGetClassDevs Flags from SetupAPI.h
-        /// </summary>
-        [Flags]
-        public enum DIGCFFlags
-        {
-            DIGCF_DEFAULT = 0x00000001,
-            DIGCF_PRESENT = 0x00000002,
-            DIGCF_ALLCLASSES = 0x00000004,
-            DIGCF_PROFILE = 0x00000008,
-            DIGCF_DEVICEINTERFACE = 0x00000010
-        }
-
-        [StructLayout(LayoutKind.Sequential)]
-        public struct DEVICE_ATTRIBUTES
-        {
-            public Int32 Size;
-            public Int16 VendorID;
-            public Int16 ProductID;
-            public Int16 VersionNumber;
-        }
-
-        [StructLayout(LayoutKind.Sequential)]
-        public struct SP_DEVICE_INTERFACE_DATA
-        {
-            public Int32 cbSize;
-            public Guid InterfaceClassGuid;
-            public Int32 Flags;
-            public IntPtr Reserved;
-        }
-
-        [StructLayout(LayoutKind.Sequential)]
-        public struct SP_DEVICE_INTERFACE_DETAIL_DATA
-        {
-            public Int32 cbSize;
-            public String DevicePath;
-        }
-
-        [StructLayout(LayoutKind.Sequential)]
-        public struct SP_DEVINFO_DATA
-        {
-            public Int32 cbSize;
-            public Guid ClassGuid;
-            public Int32 DevInst;
-            public Int32 Reserved;
-        }
-    }
-}


incremented version to 1.0.13

incremented version to 1.0.13

--- Archimedes.Patterns.WPF/Properties/AssemblyInfo.cs
+++ Archimedes.Patterns.WPF/Properties/AssemblyInfo.cs
@@ -32,4 +32,5 @@
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.13.0")]
 [assembly: AssemblyFileVersion("1.0.0.0")]


16k seems to be the magic number

16k seems to be the magic number

--- Assets/UniHttp/Support/Response/ResponseBuilder.cs
+++ Assets/UniHttp/Support/Response/ResponseBuilder.cs
@@ -17,7 +17,7 @@
 		CacheHandler cacheHandler;
 		int bufferSize;

-		internal ResponseBuilder(CacheHandler cacheHandler, int bufferSize = 1024)
+		internal ResponseBuilder(CacheHandler cacheHandler, int bufferSize = 16 * 1024)
 		{
 			this.cacheHandler = cacheHandler;
 			this.bufferSize = bufferSize;


Disable NetworkPlayer extensions in WebGL

As noted in Unity's docs, these APIs are unavailable when building for
WebGL. See https://docs.unity3d.com/Manual/webgl-networking.html.

--- NetworkPlayerExtensions.cs
+++ NetworkPlayerExtensions.cs
@@ -1,3 +1,5 @@
+#if !UNITY_WEBGL
+
 using UnityEngine;

 namespace Extensions
@@ -18,3 +20,5 @@
         }
     }
 }
+
+#endif


Updated Attest.Testing.SpecFlow assembly version.

--- Attest.Testing.SpecFlow/Properties/AssemblyInfo.cs
+++ Attest.Testing.SpecFlow/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.1")]
-[assembly: AssemblyFileVersion("1.2.1")]
+[assembly: AssemblyVersion("1.2.2")]
+[assembly: AssemblyFileVersion("1.2.2")]


Fix to not include aynchronous methods.

Fix to not include aynchronous methods.

--- Uiml/Gummy/Kernel/Services/ApplicationGlueService.cs
+++ Uiml/Gummy/Kernel/Services/ApplicationGlueService.cs
@@ -54,7 +54,23 @@

             foreach (MethodInfo m in t.GetMethods(BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.Static | BindingFlags.Instance))
             {
-                DesignerKernel.Instance.CurrentDocument.Methods.AddMethod(new ReflectionMethodModel(m));
+                // ignore asynchronous methods
+                bool asyncOutput = false;
+                bool asyncParams = false;
+                bool async = false;
+
+                asyncOutput = m.ReturnType.Equals(typeof(IAsyncResult));
+
+                foreach (ParameterInfo param in m.GetParameters())
+                {
+                    if (param.ParameterType.Equals(typeof(IAsyncResult)))
+                        asyncParams = true;
+                }
+
+                async = asyncOutput || asyncParams;
+
+                if (!async)
+                    DesignerKernel.Instance.CurrentDocument.Methods.AddMethod(new ReflectionMethodModel(m));
             }
             layout.Controls.Add(new ConnectedMethodsView(DesignerKernel.Instance.CurrentDocument.Methods));
         }


Modified FlattenStringsTest

Modified FlattenStringsTest

--- UnitTests/ForIEnumerablesTests/FlattenStringsTest.cs
+++ UnitTests/ForIEnumerablesTests/FlattenStringsTest.cs
@@ -21,6 +21,7 @@
 using CustomExtensions.ForIEnumerable;
 using NUnit.Framework;
 using Ploeh.AutoFixture;
+using Ploeh.AutoFixture.AutoMoq;

 namespace UnitTests.ForIEnumerablesTests
 {
@@ -32,20 +33,26 @@
             [Test]
             public void FlattenStrings_OnEmptyStringSequence_ReturnsEmptyString()
             {
-                Assert.That(EmptyStringSequence.FlattenStrings(), Is.Empty);
+                var emptyStringSequence = string.Empty.ToEnumerable();
+
+                Assert.That(emptyStringSequence.FlattenStrings(), Is.Empty);
             }

             [Test]
             public void FlattenStrings_OnNullStringSequence_ReturnsEmptyString()
             {
-                Assert.That(NullStringSequence.FlattenStrings(), Is.Empty);
+                var nullStringSequence = ((string)null).ToEnumerable();
+
+                Assert.That(nullStringSequence.FlattenStrings(), Is.Empty);
             }

             [Test]
             public void FlattenStrings_OnValidEnumerable_ReturnsCorrectString()
             {
-                var testStrings = Fixture.CreateMany<string>(5).ToList();
+                var fixture = new Fixture().Customize(new CompositeCustomization(new MultipleCustomization(), new AutoMoqCustomization()));
+                var testStrings = fixture.CreateMany<string>(5).ToList();
                 var expected = testStrings.Aggregate((result, current) => result + current);
+
                 Assert.That(testStrings.FlattenStrings(), Is.EqualTo(expected));
             }
         }


update license

update license

--- Unity/ConversationManager/DataIO/JSONParseUtility.cs
+++ Unity/ConversationManager/DataIO/JSONParseUtility.cs
@@ -2,7 +2,7 @@

 MIT License

-Copyright (c) 2017 NDark
+Copyright (c) 2017 - 2018 NDark

 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal


add default thickness

add default thickness

--- WalletWasabi.Fluent/Controls/ProgressRingArc.xaml.cs
+++ WalletWasabi.Fluent/Controls/ProgressRingArc.xaml.cs
@@ -20,7 +20,7 @@
 			AvaloniaProperty.Register<ProgressRingArc, IBrush>(nameof(SegmentColor));

 		public static readonly StyledProperty<int> StrokeThicknessProperty =
-			AvaloniaProperty.Register<ProgressRingArc, int>(nameof(StrokeThickness));
+			AvaloniaProperty.Register<ProgressRingArc, int>(nameof(StrokeThickness), 15);

 		public static readonly StyledProperty<double> PercentageProperty =
 			AvaloniaProperty.Register<ProgressRingArc, double>(


Simplify firefox title with version selector.

Add ability to get win32 package variant.

--- WebDriverManager/DriverConfigs/Impl/FirefoxConfig.cs
+++ WebDriverManager/DriverConfigs/Impl/FirefoxConfig.cs
@@ -16,7 +16,8 @@

         public virtual string GetUrl32()
         {
-            return GetUrl64();
+            return
+                "https://github.com/mozilla/geckodriver/releases/download/v<version>/geckodriver-v<version>-win32.zip";
         }

         public virtual string GetUrl64()
@@ -38,7 +39,7 @@
                 var htmlCode = client.DownloadString("https://github.com/mozilla/geckodriver/releases");
                 var parser = new HtmlParser(Configuration.Default.WithDefaultLoader());
                 var document = parser.Parse(htmlCode);
-                var version = document.QuerySelectorAll("[class~='release-title'] a")
+                var version = document.QuerySelectorAll(".release-title > a")
                     .Select(element => element.TextContent)
                     .FirstOrDefault()
                     ?.Remove(0, 1);
@@ -46,4 +47,4 @@
             }
         }
     }
-}+}


Code Coverage 95.60%

Code Coverage 95.60%

--- PcapDotNet/src/PcapDotNet.Packets.Test/IpV6Tests.cs
+++ PcapDotNet/src/PcapDotNet.Packets.Test/IpV6Tests.cs
@@ -862,5 +862,64 @@
             Packet invalidPacket = new Packet(packet.Buffer, DateTime.Now, DataLinkKind.Ethernet);
             Assert.IsFalse(invalidPacket.IsValid);
         }
+
+        [TestMethod]
+        public void IpV6MobilityOptionMobileNodeIdentifierCreateInstanceDataTooShort()
+        {
+            Packet packet = PacketBuilder.Build(
+                DateTime.Now,
+                new EthernetLayer(),
+                new IpV6Layer
+                    {
+                        ExtensionHeaders =
+                            new IpV6ExtensionHeaders(
+                            new IpV6ExtensionHeaderMobilityBindingError(
+                                IpV4Protocol.Skip, 0, IpV6BindingErrorStatus.UnrecognizedMhTypeValue, IpV6Address.Zero,
+                                new IpV6MobilityOptions(new IpV6MobilityOptionMobileNodeIdentifier((IpV6MobileNodeIdentifierSubtype)2, DataSegment.Empty))))
+
+                    });
+            Assert.IsTrue(packet.IsValid);
+            --packet.Buffer[14 + 40 + 24 + 1];
+            Packet invalidPacket = new Packet(packet.Buffer, DateTime.Now, DataLinkKind.Ethernet);
+            Assert.IsFalse(invalidPacket.IsValid);
+        }
+
+        [TestMethod]
+        public void IpV6MobilityOptionMobileNodeIdentifierCreateInstanceNetworkAccessIdentifierTooShort()
+        {
+            Packet packet = PacketBuilder.Build(
+                DateTime.Now,
+                new EthernetLayer(),
+                new IpV6Layer
+                    {
+                        ExtensionHeaders =
+                            new IpV6ExtensionHeaders(
+                            new IpV6ExtensionHeaderMobilityBindingError(
+                                IpV4Protocol.Skip, 0, IpV6BindingErrorStatus.UnrecognizedMhTypeValue, IpV6Address.Zero,
+                                new IpV6MobilityOptions(new IpV6MobilityOptionMobileNodeIdentifier(IpV6MobileNodeIdentifierSubtype.NetworkAccessIdentifier,
+                                                                                new DataSegment(new byte[1])))))
+
+                    });
+            Assert.IsTrue(packet.IsValid);
+            --packet.Buffer[14 + 40 + 24 + 1];
+            Packet invalidPacket = new Packet(packet.Buffer, DateTime.Now, DataLinkKind.Ethernet);
+            Assert.IsFalse(invalidPacket.IsValid);
+        }
+
+        [TestMethod]
+        public void IpV6MobilityOptionMobileNodeIdentifierEquals()
+        {
+            Assert.AreEqual(new IpV6MobilityOptionMobileNodeIdentifier(IpV6MobileNodeIdentifierSubtype.NetworkAccessIdentifier, new DataSegment(new byte[1])),
+                            new IpV6MobilityOptionMobileNodeIdentifier(IpV6MobileNodeIdentifierSubtype.NetworkAccessIdentifier, new DataSegment(new byte[1])));
+            Assert.AreNotEqual(
+                new IpV6MobilityOptionMobileNodeIdentifier(IpV6MobileNodeIdentifierSubtype.NetworkAccessIdentifier, new DataSegment(new byte[1])),
+                new IpV6MobilityOptionMobileNodeIdentifier((IpV6MobileNodeIdentifierSubtype)2, new DataSegment(new byte[1])));
+            Assert.AreNotEqual(
+                new IpV6MobilityOptionMobileNodeIdentifier(IpV6MobileNodeIdentifierSubtype.NetworkAccessIdentifier, new DataSegment(new byte[1])),
+                new IpV6MobilityOptionMobileNodeIdentifier(IpV6MobileNodeIdentifierSubtype.NetworkAccessIdentifier, new DataSegment(new byte[2])));
+            Assert.IsFalse(
+                new IpV6MobilityOptionMobileNodeIdentifier(IpV6MobileNodeIdentifierSubtype.NetworkAccessIdentifier, new DataSegment(new byte[1])).Equals(
+                    null as IpV6MobilityOptionMobileNodeIdentifier));
+        }
     }
 }


Trivial update of Parseq/EitherExtensions.cs

--- Parseq/EitherExtensions.cs
+++ Parseq/EitherExtensions.cs
@@ -37,10 +37,12 @@
                     left = self.Left.Value;
                     right = default(TRight);
                     return Hand.Left;
-                default: // case Hand.Right:
+                case Hand.Right:
                     left = default(TLeft);
                     right = self.Right.Value;
                     return Hand.Right;
+                default:
+                    throw new ArgumentOutOfRangeException("Hand");
             }
         }

@@ -51,9 +53,11 @@
                 case Hand.Left:
                     value = self.Left.Value;
                     return true;
-                default: // case Hand.Right:
+                case Hand.Right:
                     value = default(TLeft);
                     return false;
+                default:
+                    throw new ArgumentOutOfRangeException("Hand");
             }
         }


fixed vessel turning pitch black when going deep underwater, by forcing altitude calculation to a minimum of +1

--- PlanetShine/PlanetShine.cs
+++ PlanetShine/PlanetShine.cs
@@ -200,7 +200,7 @@
         private void UpdateAlbedoLights()
         {
             // reminder: "body" means celestial body, which is the currently orbiting planet/moon/sun
-            // to avoid number rounding issues, we assume the body is 0.1% smaller
+            // to avoid number rounding issues, we shamelessly assume the body is 0.1% smaller
             bodyRadius = (float) body.Radius * 0.999f;
             // direction from the center of the body to the current vessel
             bodyVesselDirection = (FlightGlobals.ActiveVessel.transform.position - body.position).normalized;
@@ -211,7 +211,7 @@
             // distance between the current vessel and the center of the body
             vesselBodyDistance = (float) (FlightGlobals.ActiveVessel.transform.position - body.position).magnitude;
             // altitude of the vessel, based on the radius of the body
-            vesselAltitude = vesselBodyDistance - bodyRadius;
+            vesselAltitude = Math.Max(vesselBodyDistance - bodyRadius, 1.0f);
             // visible surface of the body as seen from the vessel, in % of the hemisphere's radius
             visibleSurface = vesselAltitude / (float) (FlightGlobals.ActiveVessel.transform.position - body.position).magnitude;
             // angle between the sun and the vessel, relative to the center of the body
@@ -246,8 +246,8 @@
             atmosphereAmbientEffect = bodyAtmosphereAmbient * config.baseGroundAmbient * atmosphereAmbientRatio;
             // approximation of the angle corresponding to the visible size of the enlightened aread of the body, relative to the vessel
             areaSpreadAngle = Math.Min(45f, (visibleLightRatio * (1f - (sunAngle / 180f)))
-                                       * Mathf.Rad2Deg * (float) Math.Acos(Math.Sqrt((vesselBodyDistance * vesselBodyDistance)
-                                                                                - (bodyRadius * bodyRadius))
+                                       * Mathf.Rad2Deg * (float) Math.Acos(Math.Sqrt(Math.Max((vesselBodyDistance * vesselBodyDistance)
+                                                                                - (bodyRadius * bodyRadius), 1.0f))
                                                                            / vesselBodyDistance));
             // % of the area spread angle, from 0 degrees to 45 degrees
             areaSpreadAngleRatio = Mathf.Clamp01(areaSpreadAngle / 45f);


Update AssemblyInfo.cs

Update AssemblyInfo.cs

--- Properties/AssemblyInfo.cs
+++ Properties/AssemblyInfo.cs
@@ -5,11 +5,11 @@
 // Управление общими сведениями о сборке осуществляется с помощью
 // набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
 // связанные со сборкой.
-[assembly: AssemblyTitle("Yodle")]
+[assembly: AssemblyTitle("Juggle")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Yodle")]
+[assembly: AssemblyProduct("Juggle")]
 [assembly: AssemblyCopyright("Copyright ©  2015")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]


Updated version.

Updated version.

--- Properties/AssemblyInfo.cs
+++ Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.0.0.0")]
-[assembly: AssemblyFileVersion("2.0.0.0")]
+[assembly: AssemblyVersion("2.1.0.0")]
+[assembly: AssemblyFileVersion("2.1.0.0")]


- release 3.39.2704

- release 3.39.2704

--- Properties/AssemblyInfo.cs
+++ Properties/AssemblyInfo.cs
@@ -9,7 +9,7 @@
 //      Revision -.Net framework

 //---------------------------- WinForms Viewer -------------------------------------------------
-[assembly: AssemblyInformationalVersion("3.38.2704")]  //Should be equal to save property of Patagames.Pdf assembly
+[assembly: AssemblyInformationalVersion("3.39.2704")]  //Should be equal to save property of Patagames.Pdf assembly
 [assembly: AssemblyVersion("3.15.12." +
 #if DOTNET20
 "20"


Updated copyright

Updated copyright

--- Properties/AssemblyInfo.cs
+++ Properties/AssemblyInfo.cs
@@ -9,7 +9,7 @@
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
 [assembly: AssemblyProduct("PhotoNamer")]
-[assembly: AssemblyCopyright("Copyright © CultureBMo 2014")]
+[assembly: AssemblyCopyright("Copyright © CultureBMo 2015")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]


Prepare 1.8.12 release

Prepare 1.8.12 release

--- Properties/AssemblyInfo.cs
+++ Properties/AssemblyInfo.cs
@@ -11,7 +11,7 @@
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("Xibo Digital Signage")]
 [assembly: AssemblyProduct("Xibo")]
-[assembly: AssemblyCopyright("Copyright Dan Garner ©  2008-2018")]
+[assembly: AssemblyCopyright("Copyright Xibo Signage Ltd ©  2008-2019")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]

@@ -30,6 +30,6 @@
 //      Build Number
 //      Revision
 //
-[assembly: AssemblyVersion("10.8.10.0")]
-[assembly: AssemblyFileVersion("10.8.10.0")]
+[assembly: AssemblyVersion("10.8.12.0")]
+[assembly: AssemblyFileVersion("10.8.12.0")]
 [assembly: NeutralResourcesLanguageAttribute("en-GB")]


-release 4.45.2704

-release 4.45.2704

--- Properties/AssemblyInfo.cs
+++ Properties/AssemblyInfo.cs
@@ -11,7 +11,7 @@
 //      Revision -.Net framework

 //---------------------------- WPF Viewer -------------------------------------------------
-[assembly: AssemblyInformationalVersion("4.44.2704")]  //Should be equal to the same property of Patagames.Pdf assembly
+[assembly: AssemblyInformationalVersion("4.45.2704")]  //Should be equal to the same property of Patagames.Pdf assembly
 [assembly: AssemblyVersion("4.15.15." +
 #if DOTNET20
 "20"


Version bump to 2.4.

Version bump to 2.4.

Signed-off-by: V10lator <fd1911a80a45064cec08d87c592168c9000a1489@myway.de>

--- Properties/AssemblyInfo.cs
+++ Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.3.1.0")]
-[assembly: AssemblyFileVersion("2.3.1.0")]
+[assembly: AssemblyVersion("2.4.0.0")]
+[assembly: AssemblyFileVersion("2.4.0.0")]


Updated assembly version

Updated assembly version

--- Properties/AssemblyInfo.cs
+++ Properties/AssemblyInfo.cs
@@ -11,6 +11,6 @@
 [assembly: AssemblyCulture("")]
 [assembly: ComVisible(false)]
 [assembly: Guid("aef92250-d8f9-4ce1-81ca-18c47b565d14")]
-[assembly: AssemblyVersion("4.0.1.0")]
-[assembly: AssemblyFileVersion("4.0.1.0")]
-[assembly: AssemblyInformationalVersion("4.0.1")]
+[assembly: AssemblyVersion("4.0.2.0")]
+[assembly: AssemblyFileVersion("4.0.2.0")]
+[assembly: AssemblyInformationalVersion("4.0.2")]


change version to 0.8.0

change version to 0.8.0

--- Properties/AssemblyInfo.cs
+++ Properties/AssemblyInfo.cs
@@ -33,6 +33,6 @@
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.7.0")]
-[assembly: AssemblyFileVersion("0.7.0")]
+[assembly: AssemblyVersion("0.8.0")]
+[assembly: AssemblyFileVersion("0.8.0")]
 [assembly: NeutralResourcesLanguageAttribute("en-GB")]


version update

version update

--- Properties/AssemblyInfo.cs
+++ Properties/AssemblyInfo.cs
@@ -26,5 +26,5 @@
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.0.3.0")]
-[assembly: AssemblyFileVersion("0.0.3.0")]
+[assembly: AssemblyVersion("0.0.3.1")]
+[assembly: AssemblyFileVersion("0.0.3.1")]


Fix build break.

Fix build break.

--- GCL.Syntax/CodeParserWithSupportForCodeGeneration.cs
+++ GCL.Syntax/CodeParserWithSupportForCodeGeneration.cs
@@ -96,7 +96,6 @@
             }
             if (stringGrammar.TokenDictionary.ContainsKey(token.Type) == false)
             {
-                OnLexicalError?.Invoke(token.Message);
             }
             else
             {
@@ -135,7 +134,6 @@
                         ParseToken(token, actionCounts);
                         break;
                     case ActionType.Error:
-                        OnSintacticalError?.Invoke($@"Syntax error at line {token.Message}, token {token.Lexeme}.");
                         Console.WriteLine(@"Syntax error at line {0}, near token {1}.", token.Message, token.Lexeme);
                         Console.Write(@"Expecting token:");
                         var first = true;


Fixed comment

Fixed comment

--- Automate/Machines/Objects/SlimeIncubatorMachine.cs
+++ Automate/Machines/Objects/SlimeIncubatorMachine.cs
@@ -8,8 +8,8 @@
     internal class SlimeIncubatorMachine : GenericMachine
     {
         /*********
-       ** Properties
-       *********/
+        ** Properties
+        *********/
         /// <summary>The recipes to process.</summary>
         private readonly Recipe[] Recipes;


Fixes a variable value to be more relevant to what's being tested.

--- ProjectHekate.Grammar.Tests/THekateScriptVisitor.cs
+++ ProjectHekate.Grammar.Tests/THekateScriptVisitor.cs
@@ -109,7 +109,7 @@
             public void ShouldThrowExceptionForExistingEmitterVariable()
             {
                 // Setup: create codeblock with existing emitter variable, mock scope out
-                const string variableName = "someNumericalVariable";
+                const string variableName = "someEmitterVariable";
                 var expression = String.Format("{0} = 3.5", variableName);
                 var codeBlock = new CodeBlock();
                 codeBlock.AddEmitterVariable(variableName);


Players now always instantly pick up rocks.

--- GipsyKings/Assets/Scripts/PlayerController.cs
+++ GipsyKings/Assets/Scripts/PlayerController.cs
@@ -51,7 +51,7 @@
 	}

 	public float boulderChargeAmount;
-	public float boulderPickupAmount;
+	private float boulderPickupAmount = 0.001f;
 	public float boulderThrowForce = 2000.0f;
 	public GameObject detectedCollisionBoulder;

@@ -95,8 +95,6 @@
 		chargeBar.maxCharge = boulderPickupAmount;
 		chargeBar.objectToNotify = this.gameObject;

-		LoadInstantStatus();
-
 		// hide end game text view
 		endGameScreen.gameObject.SetActive(false);

@@ -657,76 +655,4 @@
 		}

 	}
-
-	public void PickupModeToggle(bool status)
-	{
-
-		if (status == true)
-		{
-			SetInstantPickup();
-		}
-		else
-		{
-			SetNormalPickup();
-		}
-
-	}
-
-	void SetInstantPickup()
-	{
-
-		boulderPickupAmount = 0.001f;
-
-		if (heldBoulder == null)
-		{
-			chargeBar.maxCharge = boulderPickupAmount;
-		}
-
-		SaveInstantStatus(true);
-
-	}
-
-	void SetNormalPickup()
-	{
-
-		boulderPickupAmount = boulderChargeAmount;
-
-		if (heldBoulder == null)
-		{
-			chargeBar.maxCharge = boulderPickupAmount;
-		}
-
-
-		SaveInstantStatus(false);
-
-	}
-
-	void LoadInstantStatus()
-	{
-
-		int status = 0;
-		if (PlayerPrefs.HasKey("instantPickupOn") == true)
-		{
-			status = PlayerPrefs.GetInt("instantPickupOn");
-		}
-
-		if (status == 1)
-		{
-			SetInstantPickup();
-		}
-		else
-		{
-			SetNormalPickup();
-		}
-
-	}
-
-	void SaveInstantStatus(bool status)
-	{
-
-		PlayerPrefs.SetInt("instantPickupOn", (status == true) ? 1 : 0);
-		PlayerPrefs.Save();
-
-	}
-
 }


remove unnecessary suppression

remove unnecessary suppression

--- RelhaxModpack/RelhaxModpack/Common/InstallEngine.cs
+++ RelhaxModpack/RelhaxModpack/Common/InstallEngine.cs
@@ -127,7 +127,6 @@
         /// <summary>
         /// A list of all current trigger event names
         /// </summary>
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly")]
         public static readonly string[] CompleteTriggerList = new string[]
         {
             TriggerContouricons,


correctif contraintes de validation

correctif contraintes de validation

--- Google.HashCode.ConsoleApplication/Program.cs
+++ Google.HashCode.ConsoleApplication/Program.cs
@@ -208,9 +208,7 @@
                         {
                             if (!productsQuantity[whOrCustNumberInt].ContainsKey(pdNumberInt))
                             {
-                                var productTypeAndQuantity = new Dictionary<int, int>();
-                                productTypeAndQuantity.Add(pdNumberInt, pdQuantityInt);
-                                productsQuantity[whOrCustNumberInt] = productTypeAndQuantity;
+                                productsQuantity[whOrCustNumberInt].Add(pdNumberInt, pdQuantityInt);
                             }
                             else
                             {


Simplify tests.

Simplify tests.

--- Gu.Persist.Core.Tests/Backup/BackuperTests.cs
+++ Gu.Persist.Core.Tests/Backup/BackuperTests.cs
@@ -9,36 +9,31 @@

     using NUnit.Framework;

-    public class BackuperTests
+    public static class BackuperTests
     {
-        private readonly DirectoryInfo directory;
-
-        public BackuperTests()
-        {
-            this.directory = Directories.TempDirectory
-                                        .CreateSubdirectory("Gu.Persist.Tests")
-                                        .CreateSubdirectory(this.GetType().FullName);
-        }
+        private static readonly DirectoryInfo Directory = Directories.TempDirectory
+                                                                     .CreateSubdirectory("Gu.Persist.Tests")
+                                                                     .CreateSubdirectory(typeof(BackuperTests).FullName);

         [SetUp]
-        public void SetUp()
-        {
-            this.directory.Refresh();
-            this.directory.CreateIfNotExists();
+        public static void SetUp()
+        {
+            Directory.Refresh();
+            Directory.CreateIfNotExists();
         }

         [TearDown]
-        public void TearDown()
-        {
-            this.directory.DeleteIfExists(true);
-        }
-
-        [Test]
-        public void BeforeSaveWhenFileDoesNotNotExists()
-        {
-            var file = this.CreateFile();
-            var backup = this.CreateBackupFile();
-            var backuper = Backuper.Create(new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, null, 1, 3));
+        public static void TearDown()
+        {
+            Directory.DeleteIfExists(true);
+        }
+
+        [Test]
+        public static void BeforeSaveWhenFileDoesNotNotExists()
+        {
+            var file = CreateFile();
+            var backup = CreateBackupFile();
+            var backuper = Backuper.Create(new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, null, 1, 3));
             AssertFile.Exists(false, file);
             AssertFile.Exists(false, backup);

@@ -49,12 +44,12 @@
         }

         [Test]
-        public void BeforeSaveWhenFileExists()
-        {
-            var file = this.CreateFile();
+        public static void BeforeSaveWhenFileExists()
+        {
+            var file = CreateFile();
             file.CreateFileOnDisk("abc");
-            var backup = this.CreateBackupFile();
-            var backuper = Backuper.Create(new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, null, 1, 3));
+            var backup = CreateBackupFile();
+            var backuper = Backuper.Create(new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, null, 1, 3));
             AssertFile.Exists(true, file);
             AssertFile.Exists(false, backup);

@@ -65,13 +60,13 @@
         }

         [Test]
-        public void TryRestoreWhenHasSoftDelete()
+        public static void TryRestoreWhenHasSoftDelete()
         {
             var dummy = new DummySerializable(1);
-            var file = this.CreateFile();
-            var backup = this.CreateBackupFile();
-            var softDelete = file.GetSoftDeleteFileFor();
-            var backuper = Backuper.Create(new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));
+            var file = CreateFile();
+            var backup = CreateBackupFile();
+            var softDelete = file.GetSoftDeleteFileFor();
+            var backuper = Backuper.Create(new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));
             softDelete.Save(dummy);
             AssertFile.Exists(false, file);
             AssertFile.Exists(true, softDelete);
@@ -86,11 +81,11 @@
         }

         [Test]
-        public void TryRestoreWhenHasSoftDeleteAndBackup()
+        public static void TryRestoreWhenHasSoftDeleteAndBackup()
         {
             var dummy = new DummySerializable(1);
-            var file = this.CreateFile();
-            var backup = this.CreateBackupFile();
+            var file = CreateFile();
+            var backup = CreateBackupFile();
             var softDelete = file.GetSoftDeleteFileFor();
             backup.Save(dummy);
             dummy.Value++;
@@ -100,7 +95,7 @@
             AssertFile.Exists(true, softDelete);
             AssertFile.Exists(true, backup);

-            var backuper = Backuper.Create(new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));
+            var backuper = Backuper.Create(new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));

             Assert.IsTrue(backuper.CanRestore(file));
             Assert.IsTrue(backuper.TryRestore(file));
@@ -112,11 +107,11 @@
         }

         [Test]
-        public void TryRestoreWhenHasBackupAndOriginal()
+        public static void TryRestoreWhenHasBackupAndOriginal()
         {
             var dummy = new DummySerializable(-1);
-            var file = this.CreateFile();
-            var backup = this.CreateBackupFile();
+            var file = CreateFile();
+            var backup = CreateBackupFile();
             var softDelete = file.GetSoftDeleteFileFor();
             file.WriteAllText("File");
             backup.Save(dummy);
@@ -125,7 +120,7 @@
             AssertFile.Exists(false, softDelete);
             AssertFile.Exists(true, backup);

-            var backuper = Backuper.Create(new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));
+            var backuper = Backuper.Create(new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));

             var exception = Assert.Throws<InvalidOperationException>(() => backuper.TryRestore(file));
             StringAssert.IsMatch(@"Expected file .*BackuperTests\\TryRestoreWhenHasBackupAndOriginal.cfg to not exist.", exception.Message);
@@ -136,11 +131,11 @@
         }

         [Test]
-        public void TryRestoreWhenHasBackup()
+        public static void TryRestoreWhenHasBackup()
         {
             var dummy = new DummySerializable(-1);
-            var file = this.CreateFile();
-            var backup = this.CreateBackupFile();
+            var file = CreateFile();
+            var backup = CreateBackupFile();
             var softDelete = file.GetSoftDeleteFileFor();
             backup.Save(dummy);

@@ -148,7 +143,7 @@
             AssertFile.Exists(false, softDelete);
             AssertFile.Exists(true, backup);

-            var backuper = Backuper.Create(new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));
+            var backuper = Backuper.Create(new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));
             Assert.IsTrue(backuper.CanRestore(file));
             Assert.IsTrue(backuper.TryRestore(file));

@@ -159,16 +154,16 @@
         }

         [Test]
-        public void TryRestoreWhenNoFiles()
-        {
-            var file = this.CreateFile();
-            var backup = this.CreateBackupFile();
-            var softDelete = file.GetSoftDeleteFileFor();
-            AssertFile.Exists(false, file);
-            AssertFile.Exists(false, softDelete);
-            AssertFile.Exists(false, backup);
-
-            var backuper = Backuper.Create(new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));
+        public static void TryRestoreWhenNoFiles()
+        {
+            var file = CreateFile();
+            var backup = CreateBackupFile();
+            var softDelete = file.GetSoftDeleteFileFor();
+            AssertFile.Exists(false, file);
+            AssertFile.Exists(false, softDelete);
+            AssertFile.Exists(false, backup);
+
+            var backuper = Backuper.Create(new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 3));
             Assert.IsFalse(backuper.TryRestore(file));

             AssertFile.Exists(false, file);
@@ -177,16 +172,16 @@
         }

         [Test]
-        public void PurgeAll()
+        public static void PurgeAll()
         {
             Assert.Inconclusive("do we want this?");
         }

         [Test]
-        public void AfterSaveWhenNoFiles()
-        {
-            var file = this.CreateFile();
-            var backuper = Backuper.Create(new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 2));
+        public static void AfterSaveWhenNoFiles()
+        {
+            var file = CreateFile();
+            var backuper = Backuper.Create(new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 2, 2));

             using (var lockedFile = Core.LockedFile.CreateIfExists(file, x => x.OpenRead()))
             {
@@ -195,11 +190,11 @@
         }

         [Test]
-        public void AfterSavePurgeNumberOfFiles()
-        {
-            var settings = new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 3, int.MaxValue);
-            var file = this.CreateFile();
-            var backup = this.CreateBackupFile();
+        public static void AfterSavePurgeNumberOfFiles()
+        {
+            var settings = new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, 3, int.MaxValue);
+            var file = CreateFile();
+            var backup = CreateBackupFile();
             var softDelete = file.GetSoftDeleteFileFor();
             softDelete.CreateFileOnDisk();
             var backupOneMinuteOld = backup.WithTimeStamp(DateTime.Now.AddMinutes(-1), settings);
@@ -228,11 +223,11 @@
         }

         [Test]
-        public void AfterSavePurgeOld()
-        {
-            var settings = new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, int.MaxValue, 2);
-            var file = this.CreateFile();
-            var backup = this.CreateBackupFile();
+        public static void AfterSavePurgeOld()
+        {
+            var settings = new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, int.MaxValue, 2);
+            var file = CreateFile();
+            var backup = CreateBackupFile();
             var softDelete = file.GetSoftDeleteFileFor();
             softDelete.CreateFileOnDisk();
             var backupOneMinuteOld = backup.WithTimeStamp(DateTime.Now.AddMinutes(-1), settings);
@@ -261,11 +256,11 @@
         }

         [Test]
-        public void AfterSaveDeletesSoftDeletesWhenNoPurgeOfBackups()
-        {
-            var settings = new BackupSettings(this.directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, int.MaxValue, int.MaxValue);
-            var file = this.CreateFile();
-            var backup = this.CreateBackupFile();
+        public static void AfterSaveDeletesSoftDeletesWhenNoPurgeOfBackups()
+        {
+            var settings = new BackupSettings(Directory.FullName, BackupSettings.DefaultExtension, BackupSettings.DefaultTimeStampFormat, int.MaxValue, int.MaxValue);
+            var file = CreateFile();
+            var backup = CreateBackupFile();
             var softDelete = file.GetSoftDeleteFileFor();
             softDelete.CreateFileOnDisk();
             var backupOneMinuteOld = backup.WithTimeStamp(DateTime.Now.AddMinutes(-1), settings);
@@ -294,13 +289,13 @@
         }

         [Test]
-        public void Rename()
+        public static void Rename()
         {
             Assert.Inconclusive("Backups must be renamed when original file is renamed");
         }

-        private FileInfo CreateFile([CallerMemberName] string name = null) => this.directory.CreateFileInfoInDirectory(name + ".cfg");
-
-        private FileInfo CreateBackupFile([CallerMemberName] string name = null) => this.directory.CreateFileInfoInDirectory(name + ".bak");
+        private static FileInfo CreateFile([CallerMemberName] string name = null) => Directory.CreateFileInfoInDirectory(name + ".cfg");
+
+        private static FileInfo CreateBackupFile([CallerMemberName] string name = null) => Directory.CreateFileInfoInDirectory(name + ".bak");
     }
 }


TSI-3960 : Update

TSI-3960 : Update

--- Sdl.Web.Tridion/Providers/DefaultContentProvider.cs
+++ Sdl.Web.Tridion/Providers/DefaultContentProvider.cs
@@ -49,9 +49,10 @@
                         () =>
                         {
                             PageModel pageModel = LoadPageModel(ref urlPath, addIncludes, localization);
-                            if (pageModel.NoCache || pageModel.IsVolatile || pageModel.HasNoCacheAttribute)
+                            if (pageModel.NoCache || pageModel.HasNoCacheAttribute)
                             {
                                 result = pageModel;
+                                pageModel.IsVolatile = true;
                                 return null;
                             }
                             return pageModel;
@@ -99,9 +100,10 @@
                         () =>
                         {
                             PageModel pageModel = LoadPageModel(pageId, addIncludes, localization);
-                            if (pageModel.NoCache)
+                            if (pageModel.NoCache || pageModel.HasNoCacheAttribute)
                             {
                                 result = pageModel;
+                                pageModel.IsVolatile = true;
                                 return null;
                             }
                             return pageModel;
@@ -148,7 +150,7 @@
                         () =>
                         {
                             EntityModel entityModel = LoadEntityModel(id, localization);
-                            if (entityModel.IsVolatile || entityModel.HasNoCacheAttribute)
+                            if (entityModel.HasNoCacheAttribute)
                             {
                                 // this entity has been marked for no caching so we return null to prevent a cache write
                                 entityModel.IsVolatile = true;


Make pm server tests pass on windows

Make pm server tests pass on windows

--- test/dotnet-projectmodel-server.Tests/DthTests.cs
+++ test/dotnet-projectmodel-server.Tests/DthTests.cs
@@ -436,7 +436,7 @@
                 {
                     dependencies.RetrieveDependency(each)
                                 .AssertProperty("Type", LibraryType.MSBuildProject.ToString())
-                                .AssertProperty("MSBuildProjectPath", Path.Combine("..", "..", each, $"{each}.csproj"))
+                                .AssertProperty("MSBuildProjectPath", AssertPathsEqual(Path.Combine("..", "..", each, $"{each}.csproj")))
                                 .AssertProperty<bool>("Resolved", true)
                                 .AssertProperty("Name", each)
                                 .AssertProperty<JArray>("Errors", array => array.Count == 0)
@@ -455,18 +455,36 @@

                     Assert.True(classLibraries.Contains(name));
                     projectRef.AssertProperty<string>("Path", path => path.Contains(Path.Combine("BasicCase01", name)))
-                              .AssertProperty("MSBuildProjectPath", Path.Combine("..", "..", name, $"{name}.csproj"));
+                              .AssertProperty("MSBuildProjectPath", AssertPathsEqual(Path.Combine("..", "..", name, $"{name}.csproj")));
                 }

                 var fileReferences = references.RetrievePropertyAs<JArray>("FileReferences")
                                                .Select(each => each.Value<string>())
                                                .ToArray();
-                Assert.Equal(3, fileReferences.Length);
+                Assert.Equal(7, fileReferences.Length);
                 foreach (var each in classLibraries)
                 {
                     fileReferences.Contains(Path.Combine("BasicCase01", "ClassLibrary1", "bin", "Debug", $"{each}.dll"));
                 }
             }
+        }
+
+        private static Func<string, bool> AssertPathsEqual(string expectedString)
+        {
+            return
+                (string t) =>
+                {
+                    if (t.Contains('/'))
+                    {
+                        t = t.Replace('/', Path.DirectorySeparatorChar);
+                    }
+                    else if (t.Contains('\\'))
+                    {
+                        t = t.Replace('\\', Path.DirectorySeparatorChar);
+                    }
+
+                    return string.Equals(t, expectedString);
+                };
         }
     }
 }


'Wildcard' selfhosting seems to be more reliable than domain-specific selfhosting

--- letsencrypt-win-simple/Plugins/ValidationPlugins/Http/SelfHosting.cs
+++ letsencrypt-win-simple/Plugins/ValidationPlugins/Http/SelfHosting.cs
@@ -31,9 +31,10 @@
         {
             try
             {
+                var prefix = $"http://+:80/.well-known/acme-challenge/";
                 _files = new Dictionary<string, string>();
                 _listener = new HttpListener();
-                _listener.Prefixes.Add($"http://{new IdnMapping().GetUnicode(identifier)}:80/.well-known/acme-challenge/");
+                _listener.Prefixes.Add(prefix);
                 _listener.Start();
                 _listeningTask = Task.Run(RecieveRequests);
             }


fix reference to old status property in cloning API

--- Server/src/HetsApi/Controllers/ProjectController.cs
+++ Server/src/HetsApi/Controllers/ProjectController.cs
@@ -346,7 +346,7 @@
             // *Can't clone into an Agreement if it isn't Active
             // *Can't clone into an Agreement if it has existing time records
             // ******************************************************************
-            if (!agreements[newRentalAgreementIndex].Status
+            if (!agreements[newRentalAgreementIndex].RentalAgreementStatusType.Description
                 .Equals("Active", StringComparison.InvariantCultureIgnoreCase))
             {
                 // (RENTAL AGREEMENT) is not active


LastAuthRulesImportDN TimeZone fixes

LastAuthRulesImportDN TimeZone fixes

--- Signum.Engine.Extensions/Authorization/AuthLogic.cs
+++ Signum.Engine.Extensions/Authorization/AuthLogic.cs
@@ -389,7 +389,7 @@
                 new XDeclaration("1.0", "utf-8", "yes"),
                 new XElement("Auth",
                     imported == null ? null : new XElement("Imported", new XAttribute("On", imported.Date.ToString("s"))),
-                    new XElement("Exported", new XAttribute("On", DateTime.Now.ToString("s"))),
+                    new XElement("Exported", new XAttribute("On", TimeZoneManager.Now.ToString("s"))),
                     new XElement("Roles",
                         RolesInOrder().Select(r => new XElement("Role",
                             new XAttribute("Name", r.ToString()),
@@ -481,7 +481,7 @@
                 return table.DeleteSqlSync(last);
             }

-            DateTime dt = DateTime.ParseExact(exported.Attribute("On").Value, "s", null);
+            DateTime dt =  DateTime.ParseExact(exported.Attribute("On").Value, "s", null).FromUserInterface();

             if (last == null)
                 return table.InsertSqlSync(new LastAuthRulesImportDN { Date = dt });


fix BindAdditionalField

fix BindAdditionalField

--- Signum.Engine/Linq/ExpressionVisitor/QueryBinder.cs
+++ Signum.Engine/Linq/ExpressionVisitor/QueryBinder.cs
@@ -3001,12 +3001,13 @@
             var parentEntity = new EntityExpression(af.Route.RootType, af.BackID, af.ExternalPeriod, null, null, null, null, false);

             Expression expression;
-            {
-                map[lambda.Parameters[0]] = parentEntity;
-                map[lambda.Parameters[1]] = af.MListRowId ?? NullId(typeof(int?));
-                expression = Visit(lambda.Body);
-                map.Remove(lambda.Parameters[1]);
-                map.Remove(lambda.Parameters[0]);
+            using (SetCurrentSource(null!))
+            {
+                map[cleanLambda.Parameters[0]] = parentEntity;
+                map[cleanLambda.Parameters[1]] = af.MListRowId ?? NullId(typeof(int?));
+                expression = Visit(cleanLambda.Body);
+                map.Remove(cleanLambda.Parameters[1]);
+                map.Remove(cleanLambda.Parameters[0]);
             }

             if(expression is MethodCallExpression mce)


ignored bot in ExpansionWhenhandler

ignored bot in ExpansionWhenhandler

--- OutcastBot/EventHandler.cs
+++ OutcastBot/EventHandler.cs
@@ -147,7 +147,7 @@
             var match = new Regex(@"\be?\s?x\s?p\s?a\s?((n\s?s\s?i\s?o\s?n)|c)\s?w\s?h\s?e\s?n\b")
                 .Match(e.Message.Content.ToLower());

-            if (match.Success)
+            if (match.Success && !e.Author.IsBot)
             {
                 await e.Message.RespondAsync("October 11th!\n\nhttps://youtu.be/03VZ9cUB3vg");
             }


Increased TCP read timeout even more

Increased TCP read timeout even more

--- Hermod/Services/CSV/PersistentCSVTCPServer.cs
+++ Hermod/Services/CSV/PersistentCSVTCPServer.cs
@@ -159,7 +159,7 @@
                                                       OnNewConnection(this, DateTime.Now, newTCPConnection.RemoteHost, newTCPConnection.RemotePort);

                                                   newTCPConnection.NoDelay = true;
-                                                  newTCPConnection.ReadTimeout = 300000;
+                                                  newTCPConnection.ReadTimeout = 3000000;
                                                   newTCPConnection.WriteToResponseStream(this.ServiceBanner);
                                                   newTCPConnection.WriteToResponseStream("\r\n");
                                                   newTCPConnection.WriteToResponseStream(0x00);


hit the doule rotation!

hit the doule rotation!

--- test/ImTools.UnitTests/Experimental2.ImMap.Tests.cs
+++ test/ImTools.UnitTests/Experimental2.ImMap.Tests.cs
@@ -128,12 +128,11 @@
         [Test]
         public void Test_double_rotation_in_tree_when_adding_to_the_right()
         {
-            //            10                            10
-            //      5           15                5           15
-            //   3     7    12      20     =>  3     7    12      23
-            //                          25                      20   25
-            //                        23
-
+            //            10                            10                            10
+            //      5           15                5           15                5            20
+            //   3     7    12      20     =>  3     7    12       23    =>  3     7    12       23
+            //                          25                      20    25                  15   21   25
+            //                        23                          21
             var t = ImMap<int>.Empty
                 .AddOrUpdate(10, 10)

@@ -146,7 +145,8 @@
                 .AddOrUpdate(12, 12)
                 .AddOrUpdate(25, 25)

-                .AddOrUpdate(23, 23) // <- here
+                .AddOrUpdate(23, 23)
+                .AddOrUpdate(21, 21) // here ?

                 .To<ImMapTree<int>>();

@@ -156,11 +156,12 @@
             Assert.AreEqual(3,  t.To<ImMapTree<int>>().Left .To<ImMapTree<int>>().Left .To<ImMapData<int>>().Key);
             Assert.AreEqual(7,  t.To<ImMapTree<int>>().Left .To<ImMapTree<int>>().Right.To<ImMapData<int>>().Key);

-            Assert.AreEqual(15, t.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Data.Key);
-            Assert.AreEqual(12, t.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Left .To<ImMapData<int>>().Key);
+            Assert.AreEqual(20, t.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Data.Key);
+            Assert.AreEqual(12, t.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Left .To<ImMapBranch<int>>().Data.Key);
+            Assert.AreEqual(15, t.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Left .To<ImMapBranch<int>>().RightData.Key);

             Assert.AreEqual(23, t.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Data.Key);
-            Assert.AreEqual(20, t.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Left .To<ImMapData<int>>().Key);
+            Assert.AreEqual(21, t.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Left .To<ImMapData<int>>().Key);
             Assert.AreEqual(25, t.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Right.To<ImMapTree<int>>().Right.To<ImMapData<int>>().Key);
         }


Minor - add sic to message processor label

--- test/WpfRuntime/SidcSymbolViewer/MainWindow.xaml.cs
+++ test/WpfRuntime/SidcSymbolViewer/MainWindow.xaml.cs
@@ -117,7 +117,7 @@
             msg.Add("_action", "update");
             msg.Add("_wkid", "3857");
             msg.Add("sic", sic);
-            msg.Add("UniqueDesignation", "1");
+            msg.Add("uniquedesignation", sic);

             SymbolProperties code = null;


GameCacheServer: Implement image scaling and access to pre-scaled images on GameCacheServer

The syntax is as follows:

For pre-scaled images (@10, @25, @50, @75), simply prepend the respective scale string to the end of the image name, ex. BoxartFront@25 will return the prescaled 25% sized image. If multiple scales strings are appended, only the smallest will be processed.

For screenshots that do not pre-scale, and to scale GameMediaCache images on-the-fly, append the scale factor as the GET parameter 'scale' to the URL. For example, ?scale=50 will scale the image half. To prevent memory leaks GameCacheServer will only scale down images, and never scale over 100%.

--- Snowflake.Service/Service/Server/GameCacheServer.cs
+++ Snowflake.Service/Service/Server/GameCacheServer.cs
@@ -46,6 +46,44 @@
                     string filePath = Path.Combine(mediaCache.RootPath, mediaCache.CacheKey, _fileName);
                     input = new FileStream(filePath, FileMode.Open);
                 }
+                if (fileName.StartsWith("screenshot"))
+                {
+                    context.Response.AddHeader("Content-Type", "image/png");
+                    int index;
+                    Int32.TryParse(fileName.Split('~')[1], out index);
+                    IGameScreenshotCache screenCache = new GameScreenshotCache(gameUUID);
+                    string _fileName = screenCache.ScreenshotCollection[index];
+                    string filePath = Path.Combine(screenCache.RootPath, screenCache.CacheKey, _fileName);
+                    if (context.Request.QueryString["scale"] != null)
+                    {
+                        string _scalePercentage = context.Request.QueryString["scale"];
+                        int scalePercentage;
+                        if (Int32.TryParse(_scalePercentage, out scalePercentage))
+                        {
+                            if (scalePercentage <= 100 && scalePercentage > 0)
+                            {
+                                double trueScalePercentage = scalePercentage / 100D;
+                                using (Image initialImage = Image.FromFile(Path.Combine(filePath)))
+                                {
+                                    using (Image resizedImage = GameMediaCache.ResizeImage(initialImage, trueScalePercentage))
+                                    {
+                                        using (MemoryStream _input = new MemoryStream())
+                                        {
+                                            resizedImage.Save(_input, ImageFormat.Png);
+                                            input = new MemoryStream(_input.ToArray());
+                                        }
+                                    }
+                                }
+
+                            }
+
+                        }
+                    }
+                    else
+                    {
+                        input = new FileStream(filePath, FileMode.Open);
+                    }
+                }
                 if (fileName.StartsWith("BoxartBack") || fileName.StartsWith("BoxartFront") || fileName.StartsWith("BoxartFull") || fileName.StartsWith("GameFanart"))
                 {
                     StringBuilder imageFileName = new StringBuilder();
@@ -85,7 +123,35 @@

                     context.Response.AddHeader("Content-Type", "image/png");
                     IGameMediaCache mediaCache = new GameMediaCache(gameUUID);
+                    if (context.Request.QueryString["scale"] != null)
+                    {
+                        string _scalePercentage = context.Request.QueryString["scale"];
+                        int scalePercentage;
+                        if (Int32.TryParse(_scalePercentage, out scalePercentage))
+                        {
+                            if (scalePercentage <= 100 && scalePercentage > 0){
+                                double trueScalePercentage = scalePercentage / 100D ;
+                                using (Image initialImage = Image.FromFile(Path.Combine(mediaCache.RootPath, mediaCache.CacheKey, imageFileName.ToString())))
+                                {
+                                  using (Image resizedImage = GameMediaCache.ResizeImage(initialImage, trueScalePercentage))
+                                  {
+                                      using (MemoryStream _input = new MemoryStream())
+                                      {
+                                          resizedImage.Save(_input, ImageFormat.Png);
+                                          input = new MemoryStream(_input.ToArray());
+                                      }
+                                  }
+                                }

+                            }
+
+                        }
+                    }
+                    else
+                    {
+                       input = new FileStream(Path.Combine(mediaCache.RootPath, mediaCache.CacheKey, imageFileName.ToString()), FileMode.Open);
+                    }
+
                 }
             }
             catch (FileNotFoundException)


Removed device name from signal reference

--- Source/Applications/openMIC/openMIC/ModbusPoller.cs
+++ Source/Applications/openMIC/openMIC/ModbusPoller.cs
@@ -511,6 +511,10 @@
                 return null;

             DerivedValue derivedValue;
+
+            // Remove device name from signal reference
+            if (signalReference.StartsWith(Name, StringComparison.OrdinalIgnoreCase))
+                signalReference = signalReference.Substring(Name.Length);

             int indexOfType = signalReference.IndexOf("-DV!", StringComparison.OrdinalIgnoreCase);


Label renderer- added a check to allow rendering a label without an associated animation

--- Source/Engine/AGS.Engine/UI/Text/GLLabelRenderer.cs
+++ Source/Engine/AGS.Engine/UI/Text/GLLabelRenderer.cs
@@ -132,7 +132,7 @@
 				_labelMatrixRenderTarget.Width = _glText.Width;
 				_labelMatrixRenderTarget.Height = _glText.Height;
 			}
-			IGLMatrices matrices = _matrixBuilder.Build(_labelMatrixRenderTarget, obj.Animation.Sprite, tree.TreeNode.Parent,
+			IGLMatrices matrices = _matrixBuilder.Build(_labelMatrixRenderTarget, obj.Animation == null ? null : obj.Animation.Sprite, tree.TreeNode.Parent,
                 drawable.IgnoreViewport ? Matrix4.Identity : _viewport.GetViewport(drawable.RenderLayer.Z).GetMatrix(viewport, drawable.RenderLayer.ParallaxSpeed),
 				areaScaling);
 			_matrixContainer.Matrices = matrices;
@@ -171,7 +171,7 @@

 				case AutoFit.TextShouldFitLabel:
 					_boundingBoxBuilder.Build(_labelBoundingBoxes, BaseSize.Width, BaseSize.Height, matrices);
-                    updateText(_glText.Width > BaseSize.Width ? GLText.EmptySize : new SizeF(BaseSize.Width, GLText.EmptySize.Height), null);
+                    updateText(_glText.Width > BaseSize.Width ? GLText.EmptySize : new SizeF(BaseSize.Width, GLText.EmptySize.Height), null);

 					float textWidth = _glText.Width < BaseSize.Width ? _glText.BitmapWidth : MathUtils.Lerp(0f, 0f, _glText.Width, BaseSize.Width,  _glText.BitmapWidth);
 					float textHeight = _glText.Height < BaseSize.Height ? _glText.BitmapHeight : MathUtils.Lerp(0f, 0f, _glText.Height, BaseSize.Height, _glText.BitmapHeight);


* Clean Code

* Clean Code

--- Source/Nelibur.Sword/Extensions/OptionExtensions.cs
+++ Source/Nelibur.Sword/Extensions/OptionExtensions.cs
@@ -47,8 +47,7 @@
             return func(value.Value).ToOption();
         }

-        public static Option<TResult> Map<TInput, TResult>(
-            this Option<TInput> value, Func<TInput, bool> predicate, Func<TInput, TResult> func)
+        public static Option<TResult> Map<TInput, TResult>(this Option<TInput> value, Func<TInput, bool> predicate, Func<TInput, TResult> func)
         {
             if (value.HasNoValue)
             {


Fix spacing.

Fix spacing.

--- algorithm/count_ones.cs
+++ algorithm/count_ones.cs
@@ -53,7 +53,7 @@
             }
         }

-        private static  int _count = 1;
+        private static int _count = 1;
         static void runCase(Func<int, int> func, string valStr, int expected)
         {
             int val = Convert.ToInt32(valStr, 2);


PR fixes

PR fixes

--- tests/Valit.Tests/String/String_Required_Tests.cs
+++ tests/Valit.Tests/String/String_Required_Tests.cs
@@ -18,19 +18,43 @@
         }

-        [Theory]
-        [InlineData(false, true)]
-        [InlineData(true, false)]
-        public void Int64_Required_Returns_Proper_Results_For_Nullable_Value(bool useNullValue,  bool expected)
+        [Fact]
+        public void String_Required_Fails_For_Null_Value()
         {
             IValitResult result = ValitRules<Model>
                 .Create()
-                .Ensure(m => useNullValue? m.NullValue : m.Value, _=>_
+                .Ensure(m => m.NullValue, _=>_
                     .Required())
                 .For(_model)
                 .Validate();

-            Assert.Equal(result.Succeeded, expected);
+            Assert.False(result.Succeeded);
+        }
+
+        [Fact]
+        public void String_Required_Fails_For_Empty_Value()
+        {
+            IValitResult result = ValitRules<Model>
+                .Create()
+                .Ensure(m => m.NullValue, _=>_
+                    .Required())
+                .For(_model)
+                .Validate();
+
+            Assert.False(result.Succeeded);
+        }
+
+        [Fact]
+        public void String_Required_Succeeds_For_Not_Empty_Value()
+        {
+            IValitResult result = ValitRules<Model>
+                .Create()
+                .Ensure(m => m.Value, _=>_
+                    .Required())
+                .For(_model)
+                .Validate();
+
+            Assert.True(result.Succeeded);
         }

 #region ARRANGE


port rev. 2690:
Issue 1673 assert about division algorithm state to avoid strange infinite loop situation

git-tfs-id: [https://tfs.codeplex.com/tfs/TFS05/]$/ZXingNet/trunk;C86189

--- Source/lib/common/reedsolomon/ReedSolomonDecoder.cs
+++ Source/lib/common/reedsolomon/ReedSolomonDecoder.cs
@@ -99,7 +99,7 @@
          return true;
       }

-      private GenericGFPoly[] runEuclideanAlgorithm(GenericGFPoly a, GenericGFPoly b, int R)
+      internal GenericGFPoly[] runEuclideanAlgorithm(GenericGFPoly a, GenericGFPoly b, int R)
       {
          // Assume a's degree is >= b's
          if (a.Degree < b.Degree)
@@ -142,6 +142,12 @@
             }

             t = q.multiply(tLast).addOrSubtract(tLastLast);
+
+            if (r.Degree >= rLast.Degree)
+            {
+               // throw new IllegalStateException("Division algorithm failed to reduce polynomial?");
+               return null;
+            }
          }

          int sigmaTildeAtZero = t.getCoefficient(0);


Kinect: support for all ColorImageFormats

git-tfs-id: [https://tfs.codeplex.com/tfs/TFS05/]$/ZXingNet/trunk;C90181

--- Source/lib/kinect/ColorImageFrameLuminanceSource.cs
+++ Source/lib/kinect/ColorImageFrameLuminanceSource.cs
@@ -55,19 +55,17 @@
          switch (bitmap.Format)
          {
             case ColorImageFormat.InfraredResolution640x480Fps30:
-               // not sure, what BitmapFormat should be selected
+               bitmapFormat = BitmapFormat.Gray16;
                break;
-            case ColorImageFormat.RawBayerResolution1280x960Fps12:
-            case ColorImageFormat.RawBayerResolution640x480Fps30:
-               // not sure, what BitmapFormat should be selected
-               break;
-            case ColorImageFormat.RgbResolution1280x960Fps12:
-            case ColorImageFormat.RgbResolution640x480Fps30:
+            case ColorImageFormat.RawBayerResolution1280x960Fps12: // 32-bit, linear X8R8G8B8-formatted
+            case ColorImageFormat.RawBayerResolution640x480Fps30: // 32-bit, linear X8R8G8B8-formatted
+            case ColorImageFormat.RgbResolution1280x960Fps12: // 32-bit, linear X8R8G8B8-formatted
+            case ColorImageFormat.RgbResolution640x480Fps30: // 32-bit, linear X8R8G8B8-formatted
+            case ColorImageFormat.YuvResolution640x480Fps15: // 32-bit, linear X8R8G8B8-formatted
                bitmapFormat = BitmapFormat.BGR32;
                break;
-            case ColorImageFormat.RawYuvResolution640x480Fps15:
-            case ColorImageFormat.YuvResolution640x480Fps15:
-               // not sure, what BitmapFormat should be selected
+            case ColorImageFormat.RawYuvResolution640x480Fps15: // 16-bit, gamma-corrected linear UYVY-formatted
+               bitmapFormat = BitmapFormat.UYVY;
                break;
             default:
                break;


Validation can be started automatically with command line arguments

--- SqlServerValidationToolkit.Configurator/App.xaml.cs
+++ SqlServerValidationToolkit.Configurator/App.xaml.cs
@@ -23,6 +23,7 @@

         protected override void OnStartup(StartupEventArgs e)
         {
+
             using (var ctx = SqlServerValidationToolkitContext.Create())
             {
                 if (!ctx.Databases.Any())
@@ -43,6 +44,16 @@
                         SetDbConnectionString();
                     }
                 }
+            }
+
+            if (e.Args.Count()==1 && e.Args[0]=="-v")
+            {
+                _log.Info("Starting validation");
+                var validator = new Validator();
+                validator.ExecuteValidation();
+                _log.Info("Executed validation");
+                Application.Current.Shutdown();
+                return;
             }

             base.OnStartup(e);


Protected set command

Protected set command

--- Src/Wide/Interfaces/Controls/AbstractCommandable.cs
+++ Src/Wide/Interfaces/Controls/AbstractCommandable.cs
@@ -36,7 +36,7 @@
         /// Gets the command.
         /// </summary>
         /// <value>The command.</value>
-        public virtual ICommand Command { get; internal set; }
+        public virtual ICommand Command { get; protected internal set; }

         /// <summary>
         /// Gets or sets the command parameter.


Updated TableCreationScript for SQL Azure

The TableCreationScript didn't have a clustered primary key on the
MiniProfilers table, and would fail when used in SQL Azure. By adding
the unused RowId column profiling can now be saved to SQL Azure. An
additional unique index IX_MiniProfilers_Id has been added to replace
the loss of the PK constraint on the Id column.
See http://stackoverflow.com/a/14775721/495964

--- StackExchange.Profiling/Storage/SqlServerStorage.cs
+++ StackExchange.Profiling/Storage/SqlServerStorage.cs
@@ -520,7 +520,8 @@
                 @"
                 create table MiniProfilers
                   (
-                     Id                                   uniqueidentifier not null constraint PK_MiniProfilers primary key nonclustered, -- don't cluster on a guid
+                     RowId                                integer not null identity constraint PK_MiniProfilers primary key clustered, -- Need a clustered primary key for SQL Azure
+                     Id                                   uniqueidentifier not null, -- don't cluster on a guid
                      Name                                 nvarchar(200) not null,
                      Started                              datetime not null,
                      MachineName                          nvarchar(100) null,
@@ -597,6 +598,7 @@
                 );

                 -- displaying results selects everything based on the main MiniProfilers.Id column
+                create unique nonclustered index IX_MiniProfilers_Id on MiniProfilers (Id)
                 create nonclustered index IX_MiniProfilerTimings_MiniProfilerId on MiniProfilerTimings (MiniProfilerId)
                 create nonclustered index IX_MiniProfilerSqlTimings_MiniProfilerId on MiniProfilerSqlTimings (MiniProfilerId)
                 create nonclustered index IX_MiniProfilerSqlTimingParameters_MiniProfilerId on MiniProfilerSqlTimingParameters (MiniProfilerId)