From b3266b0e53bbc78e10cb2964ff01246d040ae067 Mon Sep 17 00:00:00 2001 From: erwan-joly Date: Thu, 15 Jan 2026 17:25:00 +1300 Subject: [PATCH 01/10] remove old gui --- .../PathfinderGuiConfiguration.cs | 17 -- .../Database/DataAccessHelper.cs | 47 ---- src/NosCore.PathFinder.Gui/Database/Map.cs | 31 --- .../Database/MapMonsters.cs | 26 -- src/NosCore.PathFinder.Gui/Database/MapNpc.cs | 26 -- .../Database/NosCoreContext.cs | 40 --- src/NosCore.PathFinder.Gui/Dtos/MapDto.cs | 74 ------ .../Dtos/MapMonsterDto.cs | 21 -- src/NosCore.PathFinder.Gui/Dtos/MapNpcDto.cs | 21 -- .../GuiObject/CharacterGo.cs | 40 --- .../GuiObject/IMovableEntity.cs | 183 ------------- .../GuiObject/MapMonsterGo.cs | 52 ---- .../GuiObject/MapNpcGo.cs | 57 ---- src/NosCore.PathFinder.Gui/GuiWindow.cs | 249 ------------------ .../I18N/LogLanguage.cs | 49 ---- .../I18N/LogLanguageKey.cs | 19 -- .../NosCore.PathFinder.Gui.csproj | 58 ---- src/NosCore.PathFinder.Gui/PathfinderGui.cs | 68 ----- .../Resource/LocalizedResources.Designer.cs | 99 ------- .../Resource/LocalizedResources.cs.resx | 132 ---------- .../Resource/LocalizedResources.de.resx | 132 ---------- .../Resource/LocalizedResources.es.resx | 132 ---------- .../Resource/LocalizedResources.fr.resx | 132 ---------- .../Resource/LocalizedResources.it.resx | 132 ---------- .../Resource/LocalizedResources.pl.resx | 132 ---------- .../Resource/LocalizedResources.resx | 132 ---------- .../Resource/LocalizedResources.ru.resx | 132 ---------- .../Resource/LocalizedResources.tr.resx | 132 ---------- 28 files changed, 2365 deletions(-) delete mode 100644 src/NosCore.PathFinder.Gui/Configuration/PathfinderGuiConfiguration.cs delete mode 100644 src/NosCore.PathFinder.Gui/Database/DataAccessHelper.cs delete mode 100644 src/NosCore.PathFinder.Gui/Database/Map.cs delete mode 100644 src/NosCore.PathFinder.Gui/Database/MapMonsters.cs delete mode 100644 src/NosCore.PathFinder.Gui/Database/MapNpc.cs delete mode 100644 src/NosCore.PathFinder.Gui/Database/NosCoreContext.cs delete mode 100644 src/NosCore.PathFinder.Gui/Dtos/MapDto.cs delete mode 100644 src/NosCore.PathFinder.Gui/Dtos/MapMonsterDto.cs delete mode 100644 src/NosCore.PathFinder.Gui/Dtos/MapNpcDto.cs delete mode 100644 src/NosCore.PathFinder.Gui/GuiObject/CharacterGo.cs delete mode 100644 src/NosCore.PathFinder.Gui/GuiObject/IMovableEntity.cs delete mode 100644 src/NosCore.PathFinder.Gui/GuiObject/MapMonsterGo.cs delete mode 100644 src/NosCore.PathFinder.Gui/GuiObject/MapNpcGo.cs delete mode 100644 src/NosCore.PathFinder.Gui/GuiWindow.cs delete mode 100644 src/NosCore.PathFinder.Gui/I18N/LogLanguage.cs delete mode 100644 src/NosCore.PathFinder.Gui/I18N/LogLanguageKey.cs delete mode 100644 src/NosCore.PathFinder.Gui/NosCore.PathFinder.Gui.csproj delete mode 100644 src/NosCore.PathFinder.Gui/PathfinderGui.cs delete mode 100644 src/NosCore.PathFinder.Gui/Resource/LocalizedResources.Designer.cs delete mode 100644 src/NosCore.PathFinder.Gui/Resource/LocalizedResources.cs.resx delete mode 100644 src/NosCore.PathFinder.Gui/Resource/LocalizedResources.de.resx delete mode 100644 src/NosCore.PathFinder.Gui/Resource/LocalizedResources.es.resx delete mode 100644 src/NosCore.PathFinder.Gui/Resource/LocalizedResources.fr.resx delete mode 100644 src/NosCore.PathFinder.Gui/Resource/LocalizedResources.it.resx delete mode 100644 src/NosCore.PathFinder.Gui/Resource/LocalizedResources.pl.resx delete mode 100644 src/NosCore.PathFinder.Gui/Resource/LocalizedResources.resx delete mode 100644 src/NosCore.PathFinder.Gui/Resource/LocalizedResources.ru.resx delete mode 100644 src/NosCore.PathFinder.Gui/Resource/LocalizedResources.tr.resx diff --git a/src/NosCore.PathFinder.Gui/Configuration/PathfinderGuiConfiguration.cs b/src/NosCore.PathFinder.Gui/Configuration/PathfinderGuiConfiguration.cs deleted file mode 100644 index 604b4b6..0000000 --- a/src/NosCore.PathFinder.Gui/Configuration/PathfinderGuiConfiguration.cs +++ /dev/null @@ -1,17 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System.ComponentModel.DataAnnotations; -using NosCore.Shared.Configuration; - -namespace NosCore.PathFinder.Gui.Configuration -{ - public class PathfinderGuiConfiguration : LanguageConfiguration - { - [Required] - public SqlConnectionConfiguration? Database { get; set; } - } -} \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Database/DataAccessHelper.cs b/src/NosCore.PathFinder.Gui/Database/DataAccessHelper.cs deleted file mode 100644 index 8f5fd2a..0000000 --- a/src/NosCore.PathFinder.Gui/Database/DataAccessHelper.cs +++ /dev/null @@ -1,47 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System; -using Microsoft.EntityFrameworkCore; -using NosCore.Dao.Interfaces; -using NosCore.PathFinder.Gui.I18N; -using Serilog; - -namespace NosCore.PathFinder.Gui.Database -{ - public class DataAccessHelper - { - private static readonly ILogger Logger = Shared.I18N.Logger.GetLoggerConfiguration().CreateLogger(); - - private DbContextOptions? _option; - - /// - /// Creates new instance of database context. - /// - public DbContext CreateContext() - { - return new NosCoreContext(_option); - } - - public void Initialize(DbContextOptions option) - { - _option = option; - using var context = CreateContext(); - try - { - context.Database.Migrate(); - context.Database.GetDbConnection().Open(); - Logger.Information(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.DATABASE_INITIALIZED)); - } - catch (Exception ex) - { - Logger.Error("Database Error", ex); - Logger.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.DATABASE_NOT_UPTODATE)); - throw; - } - } - } -} \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Database/Map.cs b/src/NosCore.PathFinder.Gui/Database/Map.cs deleted file mode 100644 index 80040f6..0000000 --- a/src/NosCore.PathFinder.Gui/Database/Map.cs +++ /dev/null @@ -1,31 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace NosCore.PathFinder.Gui.Database -{ - public class Map - { - public virtual ICollection MapMonster { get; set; } - - public virtual ICollection MapNpc { get; set; } - - public Map() - { - MapMonster = new HashSet(); - MapNpc = new HashSet(); - } - - public byte[] Data { get; set; } = null!; - - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.None)] - public short MapId { get; set; } - } -} diff --git a/src/NosCore.PathFinder.Gui/Database/MapMonsters.cs b/src/NosCore.PathFinder.Gui/Database/MapMonsters.cs deleted file mode 100644 index e4ba303..0000000 --- a/src/NosCore.PathFinder.Gui/Database/MapMonsters.cs +++ /dev/null @@ -1,26 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace NosCore.PathFinder.Gui.Database -{ - public class MapMonster - { - public virtual Map Map { get; set; } = null!; - - public short MapId { get; set; } - - [DatabaseGenerated(DatabaseGeneratedOption.None)] - [Key] - public int MapMonsterId { get; set; } - - public short MapX { get; set; } - - public short MapY { get; set; } - } -} diff --git a/src/NosCore.PathFinder.Gui/Database/MapNpc.cs b/src/NosCore.PathFinder.Gui/Database/MapNpc.cs deleted file mode 100644 index d52952e..0000000 --- a/src/NosCore.PathFinder.Gui/Database/MapNpc.cs +++ /dev/null @@ -1,26 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace NosCore.PathFinder.Gui.Database -{ - public class MapNpc - { - public virtual Map Map { get; set; } = null!; - - public short MapId { get; set; } - - [DatabaseGenerated(DatabaseGeneratedOption.None)] - [Key] - public int MapNpcId { get; set; } - - public short MapX { get; set; } - - public short MapY { get; set; } - } -} diff --git a/src/NosCore.PathFinder.Gui/Database/NosCoreContext.cs b/src/NosCore.PathFinder.Gui/Database/NosCoreContext.cs deleted file mode 100644 index e2ae8ce..0000000 --- a/src/NosCore.PathFinder.Gui/Database/NosCoreContext.cs +++ /dev/null @@ -1,40 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using Microsoft.EntityFrameworkCore; -using NosCore.Dao.Extensions; - -namespace NosCore.PathFinder.Gui.Database -{ - public class NosCoreContext : DbContext - { - public NosCoreContext(DbContextOptions? options) : base(options) - { - } - - public virtual DbSet? Map { get; set; } = null!; - - public virtual DbSet? MapMonster { get; set; } = null!; - - public virtual DbSet? MapNpc { get; set; } = null!; - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - // remove automatic pluralization - modelBuilder.RemovePluralizingTableNameConvention(); - - modelBuilder.Entity() - .HasMany(e => e.MapMonster) - .WithOne(e => e.Map) - .OnDelete(DeleteBehavior.Restrict); - - modelBuilder.Entity() - .HasMany(e => e.MapMonster) - .WithOne(e => e.Map) - .OnDelete(DeleteBehavior.Restrict); - } - } -} \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Dtos/MapDto.cs b/src/NosCore.PathFinder.Gui/Dtos/MapDto.cs deleted file mode 100644 index 0dbc209..0000000 --- a/src/NosCore.PathFinder.Gui/Dtos/MapDto.cs +++ /dev/null @@ -1,74 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using NosCore.PathFinder.Brushfire; -using NosCore.PathFinder.Gui.GuiObject; -using NosCore.PathFinder.Interfaces; -using NosCore.Shared.Helpers; - -namespace NosCore.PathFinder.Gui.Dtos -{ - public class MapDto : IMapGrid - { - public byte[] Data { get; set; } = null!; - - public short MapId { get; set; } - - private short _xLength; - - private short _yLength; - - public short Width - { - get - { - if (_xLength == 0) - { - _xLength = BitConverter.ToInt16(Data.AsSpan().Slice(0, 2).ToArray(), 0); - } - - return _xLength; - } - } - - public short Height - { - get - { - if (_yLength == 0) - { - _yLength = BitConverter.ToInt16(Data.AsSpan().Slice(2, 2).ToArray(), 0); - } - - return _yLength; - } - } - - public ConcurrentDictionary Players { get; set; } = - new ConcurrentDictionary(); - - public byte this[short x, short y] => Data.AsSpan().Slice(4 + y * Width + x, 1)[0]; - - public bool IsWalkable(short mapX, short mapY) - { - if ((mapX >= Width) || (mapX < 0) || (mapY >= Height) || (mapY < 0)) - { - return false; - } - - return IsWalkable(this[mapX, mapY]); - } - - private static bool IsWalkable(byte value) - { - return (value == 0) || (value == 2) || ((value >= 16) && (value <= 19)); - } - } -} diff --git a/src/NosCore.PathFinder.Gui/Dtos/MapMonsterDto.cs b/src/NosCore.PathFinder.Gui/Dtos/MapMonsterDto.cs deleted file mode 100644 index 6e88fe7..0000000 --- a/src/NosCore.PathFinder.Gui/Dtos/MapMonsterDto.cs +++ /dev/null @@ -1,21 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -namespace NosCore.PathFinder.Gui.Dtos -{ - public class MapMonsterDto - { - public int Speed { get; set; } - - public short MapId { get; set; } - - public int MapMonsterId { get; set; } - - public short MapX { get; set; } - - public short MapY { get; set; } - } -} diff --git a/src/NosCore.PathFinder.Gui/Dtos/MapNpcDto.cs b/src/NosCore.PathFinder.Gui/Dtos/MapNpcDto.cs deleted file mode 100644 index 0d9ba6c..0000000 --- a/src/NosCore.PathFinder.Gui/Dtos/MapNpcDto.cs +++ /dev/null @@ -1,21 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -namespace NosCore.PathFinder.Gui.Dtos -{ - public class MapNpcDto - { - public int Speed { get; set; } - - public short MapId { get; set; } - - public int MapNpcId { get; set; } - - public short MapX { get; set; } - - public short MapY { get; set; } - } -} diff --git a/src/NosCore.PathFinder.Gui/GuiObject/CharacterGo.cs b/src/NosCore.PathFinder.Gui/GuiObject/CharacterGo.cs deleted file mode 100644 index 9c334f2..0000000 --- a/src/NosCore.PathFinder.Gui/GuiObject/CharacterGo.cs +++ /dev/null @@ -1,40 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using NosCore.PathFinder.Gui.Dtos; -using NosCore.Shared.Enumerations; - -namespace NosCore.PathFinder.Gui.GuiObject -{ - public class CharacterGo : IAliveEntity - { - public long VisualId { get; set; } - - public short MapX { get; set; } - - public short MapY { get; set; } - - public int Speed { get; set; } - - public long? TargetVisualId { get; set; } - - public VisualType? TargetVisualType { get; set; } - - public short PositionX - { - get => MapX; - set => MapX = value; - } - - public short PositionY - { - get => MapY; - set => MapY = value; - } - - public MapDto Map { get; set; } = default!; - } -} diff --git a/src/NosCore.PathFinder.Gui/GuiObject/IMovableEntity.cs b/src/NosCore.PathFinder.Gui/GuiObject/IMovableEntity.cs deleted file mode 100644 index 4586e8c..0000000 --- a/src/NosCore.PathFinder.Gui/GuiObject/IMovableEntity.cs +++ /dev/null @@ -1,183 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using NosCore.PathFinder.Brushfire; -using NosCore.PathFinder.Gui.Dtos; -using NosCore.PathFinder.Interfaces; -using NosCore.PathFinder.Pathfinder; -using NosCore.Shared.Enumerations; -using NosCore.Shared.Helpers; - -namespace NosCore.PathFinder.Gui.GuiObject -{ - public interface IMovableEntity : IAliveEntity - { - public const int RefreshRate = 200; - DateTime NextMove { get; set; } - } - - public interface IAliveEntity : IVisualEntity - { - long VisualId { get; } - - short MapX { get; set; } - - short MapY { get; set; } - - int Speed { get; set; } - - long? TargetVisualId { get; set; } - - public VisualType? TargetVisualType { get; set; } - } - - public interface IVisualEntity - { - short PositionX { get; set; } - - short PositionY { get; set; } - - MapDto Map { get; set; } - } - - public static class MovableEntityExtension - { - static IEnumerable<(short X, short Y)?> GetCellsInRadius(short firstX, short firstY, byte xradius, byte yradius) - { - for (var y = -yradius; y <= yradius; y++) - { - var projectedY = (short)Math.Clamp(y + firstY, 0, short.MaxValue); - for (var x = -xradius; x <= xradius; x++) - { - if ((x != firstX) || (y != firstY)) - { - yield return ((short)Math.Clamp(x + firstX, 0, short.MaxValue), projectedY); - } - } - } - } - - public static async Task MoveAsync(this IMovableEntity nonPlayableEntity, IHeuristic distanceCalculator) - { - var cellPerSec = 2.5 * nonPlayableEntity.Speed; - var mapX = nonPlayableEntity.PositionX; - var mapY = nonPlayableEntity.PositionY; - - if (nonPlayableEntity.TargetVisualId == null && nonPlayableEntity.TargetVisualType != VisualType.Map) - { - nonPlayableEntity.NextMove = DateTime.Now.AddMilliseconds(RandomHelper.Instance.RandomNumber(IMovableEntity.RefreshRate, 2500 + IMovableEntity.RefreshRate)); - - var freeCell = GetCellsInRadius(mapX, mapY, - (byte)RandomHelper.Instance.RandomNumber(0, 3), - (byte)RandomHelper.Instance.RandomNumber(0, 3)).OrderBy(_ => RandomHelper.Instance.RandomNumber(0, int.MaxValue)) - .FirstOrDefault(c => - { - var fromGrid = (c!.Value.X, c!.Value.Y); - while (fromGrid.X != mapX || fromGrid.Y != mapY) - { - var dX = mapX - fromGrid.X; - var dY = mapY - fromGrid.Y; - - var nDx = 0; - var nDy = 0; - if (dX != 0) - { - nDx = (dX / Math.Abs(dX)); - } - if (dY != 0) - { - nDy = (dY / Math.Abs(dY)); - } - - if (!nonPlayableEntity.Map.IsWalkable(fromGrid.X, fromGrid.Y)) - { - return false; - } - fromGrid.X += (short)nDx; - fromGrid.Y += (short)nDy; - } - - return true; - }); - if (freeCell == null) - { - return 0; - } - - mapX = freeCell.Value.X; - mapY = freeCell.Value.Y; - } - else - { - IPathfinder pathfinder = new JumpPointSearchPathfinder(nonPlayableEntity.Map, distanceCalculator); - List<(short X, short Y)>? path = null; - if (nonPlayableEntity.TargetVisualId != null && nonPlayableEntity.Map.Players.TryGetValue((long)nonPlayableEntity.TargetVisualId, out var target) && distanceCalculator.GetDistance((target.PositionX, target.PositionY), (nonPlayableEntity.PositionX, nonPlayableEntity.PositionY)) < 20) - { - if (path?.LastOrDefault() != (target.PositionX, target.PositionY)) - { - var goalPathFinder = new GoalBasedPathfinder(nonPlayableEntity.Map, distanceCalculator); - path = goalPathFinder.FindPath((nonPlayableEntity.PositionX, nonPlayableEntity.PositionY), - (target.PositionX, target.PositionY)).ToList(); - } - } - else if (nonPlayableEntity.TargetVisualType != VisualType.Map) - { - var targetFound = false; - for (var i = 0; i < 10; i++) - { - if (nonPlayableEntity.TargetVisualId != null && nonPlayableEntity.Map.Players.TryGetValue((long)nonPlayableEntity.TargetVisualId, out target) && distanceCalculator.GetDistance((target.PositionX, target.PositionY), - (nonPlayableEntity.PositionX, nonPlayableEntity.PositionY)) < 20) - { - targetFound = true; - break; - } - await Task.Delay(500); - } - - if (targetFound == false) - { - - nonPlayableEntity.TargetVisualType = (nonPlayableEntity.MapX, nonPlayableEntity.MapY) != - (nonPlayableEntity.PositionX, nonPlayableEntity.PositionY) ? VisualType.Map : (VisualType?)null; - - nonPlayableEntity.TargetVisualId = null; - } - } - else - { - path = pathfinder.FindPath((nonPlayableEntity.PositionX, nonPlayableEntity.PositionY), - (nonPlayableEntity.MapX, nonPlayableEntity.MapY)).ToList(); - - if (path.Count <= cellPerSec && path.LastOrDefault() == (nonPlayableEntity.MapX, nonPlayableEntity.MapY)) - { - nonPlayableEntity.TargetVisualType = null; - } - } - - - if (path?.Count > 1) - { - var refreshRate = TimeSpan.FromMilliseconds(IMovableEntity.RefreshRate).TotalSeconds; - var cellPerRefresh = (int)(cellPerSec * refreshRate); - var (x, y) = path.Count > cellPerRefresh ? path.Skip(cellPerRefresh).First() : path.SkipLast(1).Last(); - mapX = x; - mapY = y; - } - } - - var distance = distanceCalculator.GetDistance((nonPlayableEntity.PositionX, nonPlayableEntity.PositionY), (mapX, mapY)); - nonPlayableEntity.NextMove = DateTime.Now.AddMilliseconds(distance / cellPerSec); - await Task.Delay(TimeSpan.FromSeconds(distance / cellPerSec)); - nonPlayableEntity.PositionX = mapX; - nonPlayableEntity.PositionY = mapY; - return (int)TimeSpan.FromSeconds(distance / cellPerSec).TotalMilliseconds; - } - } -} \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/GuiObject/MapMonsterGo.cs b/src/NosCore.PathFinder.Gui/GuiObject/MapMonsterGo.cs deleted file mode 100644 index ca20763..0000000 --- a/src/NosCore.PathFinder.Gui/GuiObject/MapMonsterGo.cs +++ /dev/null @@ -1,52 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System; -using System.Threading; -using System.Threading.Tasks; -using NosCore.PathFinder.Gui.Dtos; -using NosCore.PathFinder.Heuristic; -using NosCore.Shared.Enumerations; -using Serilog; - -namespace NosCore.PathFinder.Gui.GuiObject -{ - public class MapMonsterGo : MapMonsterDto, IMovableEntity - { - private static readonly ILogger Logger = Shared.I18N.Logger.GetLoggerConfiguration().CreateLogger(); - public long VisualId => MapMonsterId; - public short PositionX { get; set; } - - public short PositionY { get; set; } - - public DateTime NextMove { get; set; } - - public long? TargetVisualId { get; set; } - - public VisualType? TargetVisualType { get; set; } - - public MapDto Map { get; set; } = null!; - - public async Task StartLife(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - var secondsWalking = await this.MoveAsync(new OctileDistanceHeuristic()); - await Task.Delay( - secondsWalking < IMovableEntity.RefreshRate - ? IMovableEntity.RefreshRate - secondsWalking - : secondsWalking, cancellationToken); - } - catch (Exception ex) - { - Logger.Error(ex, ex.Message); - } - } - } - } -} diff --git a/src/NosCore.PathFinder.Gui/GuiObject/MapNpcGo.cs b/src/NosCore.PathFinder.Gui/GuiObject/MapNpcGo.cs deleted file mode 100644 index a3680eb..0000000 --- a/src/NosCore.PathFinder.Gui/GuiObject/MapNpcGo.cs +++ /dev/null @@ -1,57 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System; -using System.Threading; -using System.Threading.Tasks; -using NosCore.PathFinder.Gui.Dtos; -using NosCore.PathFinder.Heuristic; -using NosCore.Shared.Enumerations; -using Serilog; - -namespace NosCore.PathFinder.Gui.GuiObject -{ - public class MapNpcGo : MapNpcDto, IMovableEntity - { - private static readonly ILogger Logger = Shared.I18N.Logger.GetLoggerConfiguration().CreateLogger(); - public long VisualId => MapNpcId; - - public short PositionX { get; set; } - - public short PositionY { get; set; } - - public DateTime NextMove { get; set; } - - public MapDto Map - { - get; - set; - } = null!; - - public long? TargetVisualId { get; set; } - - public VisualType? TargetVisualType { get; set; } - - public async Task StartLife(CancellationToken cancellationToken) - { - while (!cancellationToken.IsCancellationRequested) - { - try - { - var secondsWalking = await this.MoveAsync(new OctileDistanceHeuristic()); - await Task.Delay( - secondsWalking < IMovableEntity.RefreshRate - ? IMovableEntity.RefreshRate - secondsWalking - : secondsWalking, cancellationToken); - } - catch (Exception ex) - { - Logger.Error(ex, ex.Message); - } - } - } - } -} diff --git a/src/NosCore.PathFinder.Gui/GuiWindow.cs b/src/NosCore.PathFinder.Gui/GuiWindow.cs deleted file mode 100644 index 80531a8..0000000 --- a/src/NosCore.PathFinder.Gui/GuiWindow.cs +++ /dev/null @@ -1,249 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Mapster; -using NosCore.PathFinder.Gui.Database; -using Serilog; -using NosCore.Dao; -using NosCore.PathFinder.Brushfire; -using NosCore.PathFinder.Gui.Dtos; -using NosCore.PathFinder.Gui.GuiObject; -using NosCore.PathFinder.Heuristic; -using NosCore.Shared.Enumerations; -using OpenTK; -using OpenTK.Graphics; -using OpenTK.Graphics.OpenGL; -using OpenTK.Input; -using Color = OpenTK.Color; - -namespace NosCore.PathFinder.Gui -{ - public class GuiWindow : GameWindow - { - private static readonly ILogger Logger = Shared.I18N.Logger.GetLoggerConfiguration().CreateLogger(); - private readonly MapDto _map; - - private readonly List _monsters; - private readonly List _npcs; - private readonly int _originalCellSize; - - private float _cellSize; - private readonly CharacterGo _mouseCharacter; - private readonly int _originalWidth; - - private readonly Vector2[] _wallPixels; - - private int _vertexBufferObject; - private Dictionary? _brushFirePixels; - - public GuiWindow(MapDto map, int width, int height, string title, DataAccessHelper dbContextBuilder) - : base(width, (height < width / map.Width * map.Height) ? width / map.Width * map.Height : height, - GraphicsMode.Default, title) - { - var dbContextBuilder1 = dbContextBuilder; - var mapMonsterDao = new Dao(Logger, dbContextBuilder1.CreateContext); - var mapNpcDao = new Dao(Logger, dbContextBuilder1.CreateContext); - _originalWidth = Width; - _originalCellSize = Width / map.Width; - _cellSize = Width / map.Width; - - _monsters = mapMonsterDao.Where(s => s.MapId == map.MapId)?.Adapt>() ?? - new List(); - _map = map; - _mouseCharacter = new CharacterGo() - { - VisualId = 1 - }; - _map.Players.TryAdd(1, _mouseCharacter); - - foreach (var mapMonster in _monsters) - { - mapMonster.PositionX = mapMonster.MapX; - mapMonster.PositionY = mapMonster.MapY; - mapMonster.Speed = 10; - mapMonster.Map = _map; - } - - _npcs = mapNpcDao.Where(s => s.MapId == map.MapId)?.Adapt>() ?? new List(); - foreach (var mapNpc in _npcs) - { - mapNpc.PositionX = mapNpc.MapX; - mapNpc.PositionY = mapNpc.MapY; - mapNpc.Speed = 10; - mapNpc.Map = _map; - } - - Parallel.ForEach(_monsters, monster => _ = monster.StartLife(CancellationToken.None)); - Parallel.ForEach(_npcs, npc => _ = npc.StartLife(CancellationToken.None)); - - var wallpixels = new List(); - for (short y = 0; y < _map.Height; y++) - { - for (short x = 0; x < _map.Width; x++) - { - if (_map[x, y] > 0) - { - wallpixels.Add(GenerateSquare(x, y)); - } - } - } - - _wallPixels = wallpixels.SelectMany(s => s).ToArray(); - } - - protected override void OnUpdateFrame(FrameEventArgs e) - { - base.OnUpdateFrame(e); - - var input = Keyboard.GetState(); - - if (input.IsKeyDown(Key.Escape)) - { - Exit(); - } - } - - protected override void OnResize(EventArgs e) - { - _cellSize = (float)_originalCellSize * Width / _originalWidth; - GL.Viewport(0, 0, Width, Height); - base.OnResize(e); - } - - protected override void OnMouseMove(MouseMoveEventArgs e) - { - base.OnMouseMove(e); - - var mapX = (short)(e.X / _cellSize); - var mapY = (short)(e.Y / _cellSize); - - if (mapX != _mouseCharacter.MapX || _mouseCharacter.MapY != mapY) - { - _mouseCharacter.MapX = mapX; - _mouseCharacter.MapY = mapY; - var distance = new OctileDistanceHeuristic(); - var brushfire = _map.LoadBrushFire((_mouseCharacter.MapX, _mouseCharacter.MapY), distance); - - _brushFirePixels = brushfire.Grid.Values.Where(s => s?.Value != null).GroupBy(s => (int)s!.Value!) - .ToDictionary(s => - { - var alpha = 255 - (s.Key * 10); - if (alpha < 0) - { - alpha = 0; - } - return Color.FromArgb((int)(alpha), 0, 255, 0); - }, s => s!.ToList().SelectMany(s => GenerateSquare(s!.Position.X, s.Position.Y)).ToArray()); - - foreach (var monster in _monsters.Where(s => - distance.GetDistance((mapX, mapY), (s.PositionX, s.PositionY)) < 5)) - { - monster.TargetVisualId = 1; - monster.TargetVisualType = VisualType.Player; - } - } - } - - protected override void OnLoad(EventArgs e) - { - base.OnLoad(e); - GL.ClearColor(Color.LightSkyBlue.A, Color.LightSkyBlue.R, Color.LightSkyBlue.G, Color.LightSkyBlue.B); - var world = Matrix4.CreateOrthographicOffCenter(0, ClientRectangle.Width, ClientRectangle.Height, 0, 0, 1); - GL.LoadMatrix(ref world);//deprecated - GL.EnableVertexAttribArray(0); - GL.Enable(EnableCap.Blend); - GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha); - _vertexBufferObject = GL.GenBuffer(); - } - - protected override void OnUnload(EventArgs e) - { - GL.BindBuffer(BufferTarget.ArrayBuffer, 0); - GL.DeleteBuffer(_vertexBufferObject); - base.OnUnload(e); - } - - protected override void OnRenderFrame(FrameEventArgs e) - { - base.OnRenderFrame(e); - GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); - - DrawShapes(_wallPixels, Color.Blue, PrimitiveType.Quads); - foreach (var pixel in _brushFirePixels ?? new Dictionary()) - { - DrawShapes(pixel.Value, pixel.Key, PrimitiveType.Quads); - } - - var circle = GenerateDisk(_mouseCharacter.MapX, _mouseCharacter.MapY); - DrawShapes(circle, Color.BlueViolet, PrimitiveType.TriangleFan); - - var monstersDisk = _monsters.Where(s => s.TargetVisualId != null).SelectMany(s => GenerateDisk(s.PositionX, s.PositionY)).ToArray(); - DrawShapes(monstersDisk, Color.Red, PrimitiveType.TriangleFan); - - var npcDisk = _npcs.Where(s => s.TargetVisualId != null).SelectMany(s => GenerateDisk(s.PositionX, s.PositionY)).ToArray(); - DrawShapes(npcDisk, Color.Yellow, PrimitiveType.TriangleFan); - - var monstersCircle = _monsters.Where(s => s.TargetVisualId == null).SelectMany(s => GenerateCircle(s.PositionX, s.PositionY)).ToArray(); - DrawShapes(monstersCircle, Color.Red, PrimitiveType.LineLoop); - - var npcCircle = _npcs.Where(s => s.TargetVisualId == null).SelectMany(s => GenerateCircle(s.PositionX, s.PositionY)).ToArray(); - DrawShapes(npcCircle, Color.Yellow, PrimitiveType.LineLoop); - - SwapBuffers(); - } - - private Vector2[] GenerateSquare(short x, short y) - { - return new[] - { - new Vector2((float)(x * _cellSize), (float)(y * _cellSize)), - new Vector2((float)(_cellSize * (x + 1)), (float)(y * _cellSize)), - new Vector2((float)(_cellSize * (x + 1)), (float)(_cellSize * (y + 1))), - new Vector2((float)(x * _cellSize),(float)( _cellSize * (y + 1))) - }; - } - - private Vector2[] GenerateDisk(short x, short y) - { - return Enumerable.Range(0, 36).Select(i => new Vector2((float)((x + Math.Cos(i)) * _cellSize), - (float)((y + Math.Sin(i)) * _cellSize))).ToArray(); - } - - private Vector2[] GenerateCircle(short x, short y) - { - return Enumerable.Range(0, 36).Select(i => - { - var theta = 3.1415926f * i / 18; - return new Vector2((float)((x + Math.Cos(theta)) * _cellSize), - (float)((y + Math.Sin(theta)) * _cellSize)); - }).ToArray(); - } - - private void DrawShapes(Vector2[] vector, Color color, PrimitiveType type) - { - var shapeSize = type == PrimitiveType.Quads ? 4 : type == PrimitiveType.LineLoop ? 36 : 36; - var count = vector.Length / shapeSize; - var counts = Enumerable.Repeat(shapeSize, count).ToArray(); - var first = counts.Select((s, i) => s * i).ToArray(); - - - GL.BindBuffer(BufferTarget.ArrayBuffer, _vertexBufferObject); - GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(Vector2.SizeInBytes * vector.Length), vector, BufferUsageHint.StaticDraw); - - GL.VertexAttribPointer(0, 2, VertexAttribPointerType.Float, false, Vector2.SizeInBytes, 0); - GL.Color4(color); //deprecated - GL.MultiDrawArrays(type, first, counts, count); - - GL.BindBuffer(BufferTarget.ArrayBuffer, 0); - } - } -} \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/I18N/LogLanguage.cs b/src/NosCore.PathFinder.Gui/I18N/LogLanguage.cs deleted file mode 100644 index 34def5b..0000000 --- a/src/NosCore.PathFinder.Gui/I18N/LogLanguage.cs +++ /dev/null @@ -1,49 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System.Globalization; -using System.Resources; -using NosCore.Shared.Enumerations; - -namespace NosCore.PathFinder.Gui.I18N -{ - public sealed class LogLanguage - { - private static LogLanguage? _instance; - - private static readonly CultureInfo ResourceCulture = new CultureInfo(Language.ToString()); - - private readonly ResourceManager _manager; - - private LogLanguage() - { - var assem = typeof(LogLanguageKey).Assembly; - _manager = new ResourceManager( - assem.GetName().Name + ".Resource.LocalizedResources", - assem); - } - - public static RegionType Language { get; set; } - - public static LogLanguage Instance => _instance ??= new LogLanguage(); - - public string GetMessageFromKey(LogLanguageKey messageKey) - { - return GetMessageFromKey(messageKey, null); - } - - public string GetMessageFromKey(LogLanguageKey messageKey, string? culture) - { - var cult = culture != null ? new CultureInfo(culture) : ResourceCulture; - var resourceMessage = (_manager != null) - ? _manager.GetResourceSet(cult, true, - cult.TwoLetterISOLanguageName == default(RegionType).ToString().ToLower(cult)) - ?.GetString(messageKey.ToString()) : string.Empty; - - return !string.IsNullOrEmpty(resourceMessage) ? resourceMessage : $"#<{messageKey}>"; - } - } -} \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/I18N/LogLanguageKey.cs b/src/NosCore.PathFinder.Gui/I18N/LogLanguageKey.cs deleted file mode 100644 index a339a22..0000000 --- a/src/NosCore.PathFinder.Gui/I18N/LogLanguageKey.cs +++ /dev/null @@ -1,19 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System.Diagnostics.CodeAnalysis; - -namespace NosCore.PathFinder.Gui.I18N -{ - [SuppressMessage("ReSharper", "InconsistentNaming")] - public enum LogLanguageKey - { - WRONG_SELECTED_MAPID, - SELECT_MAPID, - DATABASE_INITIALIZED, - DATABASE_NOT_UPTODATE - } -} \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/NosCore.PathFinder.Gui.csproj b/src/NosCore.PathFinder.Gui/NosCore.PathFinder.Gui.csproj deleted file mode 100644 index ca74c23..0000000 --- a/src/NosCore.PathFinder.Gui/NosCore.PathFinder.Gui.csproj +++ /dev/null @@ -1,58 +0,0 @@ - - - - Exe - net7.0 - true - latest - enable - - - - ../../build - - - - - - - - - - - - - - - - - - - - PreserveNewest - - - PreserveNewest - - - - - - - - - - True - True - LocalizedResources.resx - - - - - - PublicResXFileCodeGenerator - LocalizedResources.Designer.cs - - - - \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/PathfinderGui.cs b/src/NosCore.PathFinder.Gui/PathfinderGui.cs deleted file mode 100644 index f8b9c4b..0000000 --- a/src/NosCore.PathFinder.Gui/PathfinderGui.cs +++ /dev/null @@ -1,68 +0,0 @@ -// __ _ __ __ ___ __ ___ ___ -// | \| |/__\ /' _/ / _//__\| _ \ __| -// | | ' | \/ |`._`.| \_| \/ | v / _| -// |_|\__|\__/ |___/ \__/\__/|_|_\___| -// ----------------------------------- - -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using NosCore.PathFinder.Gui.Configuration; -using NosCore.PathFinder.Gui.Database; -using NosCore.PathFinder.Gui.I18N; -using NosCore.Dao; -using NosCore.PathFinder.Gui.Dtos; -using NosCore.Shared.Configuration; - -namespace NosCore.PathFinder.Gui -{ - public static class PathFinderGui - { - private const string Title = "NosCore - Pathfinder GUI"; - private const string ConsoleText = "PATHFINDER GUI - NosCoreIO"; - private static readonly PathfinderGuiConfiguration PathfinderGuiConfiguration = new PathfinderGuiConfiguration(); - private static readonly Dictionary GuiWindows = new Dictionary(); - private static readonly DataAccessHelper DbContextBuilder = new DataAccessHelper(); - - public static async Task Main(string[] args) - { - try { Console.Title = Title; } catch (PlatformNotSupportedException) { } - ConfiguratorBuilder.InitializeConfiguration(args, new[] { "pathfinder.yml", "logger.yml" }).Bind(PathfinderGuiConfiguration); - Shared.I18N.Logger.PrintHeader(ConsoleText); - var logger = Shared.I18N.Logger.GetLoggerConfiguration().CreateLogger(); - LogLanguage.Language = PathfinderGuiConfiguration.Language; - var optionsBuilder = new DbContextOptionsBuilder(); - optionsBuilder.UseNpgsql(PathfinderGuiConfiguration.Database!.ConnectionString); - DbContextBuilder.Initialize(optionsBuilder.Options); - var mapDao = new Dao(logger, DbContextBuilder.CreateContext); - - while (true) - { - logger.Information(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.SELECT_MAPID)); - var input = Console.ReadLine(); - if ((input == null) || !short.TryParse(input, out var askMapId)) - { - logger.Error(LogLanguage.Instance.GetMessageFromKey(LogLanguageKey.WRONG_SELECTED_MAPID)); - continue; - } - var map = await mapDao.FirstOrDefaultAsync(m => m.MapId == askMapId).ConfigureAwait(false); - - if ((!(map?.Width > 0)) || (map.Height <= 0)) - { - continue; - } - - if (GuiWindows.ContainsKey(map.MapId) && GuiWindows[map.MapId]!.Exists) - { - GuiWindows[map.MapId]!.Close(); - } - - GuiWindows[map.MapId] = new GuiWindow(map,1024, 768, - $"NosCore Pathfinder GUI - Map {map.MapId}", DbContextBuilder); - GuiWindows[map.MapId]!.Run(30); - } - } - } -} \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.Designer.cs b/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.Designer.cs deleted file mode 100644 index f7b3624..0000000 --- a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.Designer.cs +++ /dev/null @@ -1,99 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace NosCore.PathFinder.Gui.Resource { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - public class LocalizedResources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal LocalizedResources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - public static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("NosCore.PathFinder.Gui.Resource.LocalizedResources", typeof(LocalizedResources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - public static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized string similar to Database has been initialized.. - /// - public static string DATABASE_INITIALIZED { - get { - return ResourceManager.GetString("DATABASE_INITIALIZED", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Database may not be up to date. Please consider updating your database.. - /// - public static string DATABASE_NOT_UPTODATE { - get { - return ResourceManager.GetString("DATABASE_NOT_UPTODATE", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Please, Select a MapId:. - /// - public static string SELECT_MAPID { - get { - return ResourceManager.GetString("SELECT_MAPID", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to Wrong MapId!. - /// - public static string WRONG_SELECTED_MAPID { - get { - return ResourceManager.GetString("WRONG_SELECTED_MAPID", resourceCulture); - } - } - } -} diff --git a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.cs.resx b/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.cs.resx deleted file mode 100644 index 78b0804..0000000 --- a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.cs.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Databáze byla Initializována - - - Databáze nemusí být aktuální. Zvažte aktualizaci - - - Prosím vybere ID Mapy - - - Špatně vybrané ID Mapy - - \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.de.resx b/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.de.resx deleted file mode 100644 index 28b9ff5..0000000 --- a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.de.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Datenbank wurde initialisiert. - - - Datenbank befindet sich nicht auf dem neusten Stand. - - - Bitte wähle eine MapId - - - Falsche MapId! - - \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.es.resx b/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.es.resx deleted file mode 100644 index 91457dd..0000000 --- a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.es.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - La base de datos ha sido inicializada. - - - La base de datos puede ser que no este actualizada. Por favor, considere actualizarla. - - - Por favor, seleccione una MapId: - - - ¡La Id del Mapa (IdMap) es incorrecta! - - \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.fr.resx b/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.fr.resx deleted file mode 100644 index e20010b..0000000 --- a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.fr.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - La base de donnée a été initialisée. - - - La base de donnée n'est pas a jour. - - - Veuillez séléctionner un MapID. - - - Mauvais MapID. - - \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.it.resx b/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.it.resx deleted file mode 100644 index e777d20..0000000 --- a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.it.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Il Database è stato avviato! - - - Il database non sembra aggiornato. Per favore considera di aggiornare il tuo database. - - - Seleziona un MapId: - - - MapId errato! - - \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.pl.resx b/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.pl.resx deleted file mode 100644 index 9c59ada..0000000 --- a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.pl.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Baza danych została zainicjowana. - - - Baza danych może nie być aktualna. Rozważ aktualizację bazy danych. - - - Proszę wybrać MapId: - - - Błędny MapId! - - \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.resx b/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.resx deleted file mode 100644 index 87fb79c..0000000 --- a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Database has been initialized. - - - Database may not be up to date. Please consider updating your database. - - - Please, Select a MapId: - - - Wrong MapId! - - \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.ru.resx b/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.ru.resx deleted file mode 100644 index 4b4e083..0000000 --- a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.ru.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - База данных инициализирована. - - - База данных могла устареть. Пожалуйста, проверьте обновления для БД. - - - Пожалуйста, выберите ID локации: - - - Некорректный MapId! - - \ No newline at end of file diff --git a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.tr.resx b/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.tr.resx deleted file mode 100644 index 2be5473..0000000 --- a/src/NosCore.PathFinder.Gui/Resource/LocalizedResources.tr.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Veritabanı başarıyla yüklendi. - - - Veritabanı güncel olmayabilir. Lütfen sağlayıcıyla konuşun. - - - Lütfen bir harita kodu gir: - - - Hatalı Harita Kodu! - - \ No newline at end of file From 62baaacb3ea12b44718ba9eaad556cffb72af917 Mon Sep 17 00:00:00 2001 From: erwan-joly Date: Thu, 15 Jan 2026 17:26:32 +1300 Subject: [PATCH 02/10] performance improvement --- src/NosCore.PathFinder/Brushfire/BrushFire.cs | 9 +- src/NosCore.PathFinder/Brushfire/FlowField.cs | 31 +++++ .../Brushfire/IMapGridExtension.cs | 127 ++++++++++++------ .../Pathfinder/GoalBasedPathfinder.cs | 95 +++++++------ 4 files changed, 167 insertions(+), 95 deletions(-) create mode 100644 src/NosCore.PathFinder/Brushfire/FlowField.cs diff --git a/src/NosCore.PathFinder/Brushfire/BrushFire.cs b/src/NosCore.PathFinder/Brushfire/BrushFire.cs index cfcc9dd..4deeca1 100644 --- a/src/NosCore.PathFinder/Brushfire/BrushFire.cs +++ b/src/NosCore.PathFinder/Brushfire/BrushFire.cs @@ -10,24 +10,23 @@ namespace NosCore.PathFinder.Brushfire { public readonly struct BrushFire { - - public BrushFire((short X, short Y) origin, Dictionary<(short X, short Y), Node?> brushFireGrid, short width, + public BrushFire((short X, short Y) origin, Dictionary<(short X, short Y), double> distances, short width, short length) { Origin = origin; - Grid = brushFireGrid; + Distances = distances; Length = length; Width = width; } public (short X, short Y) Origin { get; } - public Dictionary<(short X, short Y), Node?> Grid { get; } + public Dictionary<(short X, short Y), double> Distances { get; } public short Length { get; } public short Width { get; } - public double? this[short x, short y] => Grid.ContainsKey((x, y)) ? Grid[(x, y)]?.Value : null; + public double? this[short x, short y] => Distances.TryGetValue((x, y), out var d) ? d : null; } } diff --git a/src/NosCore.PathFinder/Brushfire/FlowField.cs b/src/NosCore.PathFinder/Brushfire/FlowField.cs new file mode 100644 index 0000000..901b4d4 --- /dev/null +++ b/src/NosCore.PathFinder/Brushfire/FlowField.cs @@ -0,0 +1,31 @@ +// __ _ __ __ ___ __ ___ ___ +// | \| |/__\ /' _/ / _//__\| _ \ __| +// | | ' | \/ |`._`.| \_| \/ | v / _| +// |_|\__|\__/ |___/ \__/\__/|_|_\___| +// ----------------------------------- + +using System.Collections.Generic; + +namespace NosCore.PathFinder.Brushfire +{ + public readonly struct FlowField + { + public FlowField((short X, short Y) origin, Dictionary<(short X, short Y), (float X, float Y)> vectors, short width, short height) + { + Origin = origin; + Vectors = vectors; + Width = width; + Height = height; + } + + public (short X, short Y) Origin { get; } + + public Dictionary<(short X, short Y), (float X, float Y)> Vectors { get; } + + public short Width { get; } + + public short Height { get; } + + public (float X, float Y)? this[short x, short y] => Vectors.TryGetValue((x, y), out var vector) ? vector : null; + } +} diff --git a/src/NosCore.PathFinder/Brushfire/IMapGridExtension.cs b/src/NosCore.PathFinder/Brushfire/IMapGridExtension.cs index 3ba20e3..cf72425 100644 --- a/src/NosCore.PathFinder/Brushfire/IMapGridExtension.cs +++ b/src/NosCore.PathFinder/Brushfire/IMapGridExtension.cs @@ -4,14 +4,16 @@ // |_|\__|\__/ |___/ \__/\__/|_|_\___| // ----------------------------------- +using System; using System.Collections.Generic; -using System.Linq; using NosCore.PathFinder.Interfaces; namespace NosCore.PathFinder.Brushfire { public static class IMapGridExtension { + private static readonly float Sqrt2Inv = 1f / (float)Math.Sqrt(2); + private static readonly List<(short X, short Y)> Neighbours = new List<(short, short)> { (-1, -1), (0, -1), (1, -1), (-1, 0), (1, 0), @@ -20,15 +22,18 @@ public static class IMapGridExtension public static IEnumerable<(short X, short Y)> GetNeighbors(this IMapGrid grid, (short X, short Y) cell, bool includeWalls = false) { - return Neighbours.Where(delta => + for (int i = 0; i < Neighbours.Count; i++) { + var delta = Neighbours[i]; var currentX = (short)(cell.X + delta.X); var currentY = (short)(cell.Y + delta.Y); - return currentX >= 0 && currentX < grid.Width && - currentY >= 0 && currentY < grid.Height && - (includeWalls || grid.IsWalkable(currentX, currentY) - ); - }).Select(delta => ((short)(cell.X + delta.X), (short)(cell.Y + delta.Y))); + if (currentX >= 0 && currentX < grid.Width && + currentY >= 0 && currentY < grid.Height && + (includeWalls || grid.IsWalkable(currentX, currentY))) + { + yield return (currentX, currentY); + } + } } public static BrushFire LoadBrushFire(this IMapGrid mapGrid, (short X, short Y) user, IHeuristic heuristic, short maxDistance = 22) @@ -36,53 +41,93 @@ public static BrushFire LoadBrushFire(this IMapGrid mapGrid, (short X, short Y) if (user.X < 0 || user.X >= mapGrid.Width || user.Y < 0 || user.Y >= mapGrid.Height) { - return new BrushFire(user, new Dictionary<(short X, short Y), Node?>(), mapGrid.Width, mapGrid.Height); + return new BrushFire(user, new Dictionary<(short X, short Y), double>(), mapGrid.Width, mapGrid.Height); } - var path = new PriorityQueue(); - var cellGrid = new Dictionary<(short X, short Y), Node?>(); - var grid = new Node?[mapGrid.Width, mapGrid.Height]; - grid[user.X, user.Y] = new Node(user, mapGrid[user.X, user.Y]) + var queue = new PriorityQueue<(short X, short Y, double D), double>(); + var distances = new Dictionary<(short X, short Y), double>(); + + queue.Enqueue((user.X, user.Y, 0), 0); + distances[user] = 0; + + while (queue.Count > 0) { - Closed = true - }; - path.Enqueue(grid[user.X, user.Y]!, 0); - cellGrid[user] = new Node(user, null); + var cell = queue.Dequeue(); + var cellPos = (cell.X, cell.Y); + + if (distances.TryGetValue(cellPos, out var existingDist) && existingDist < cell.D) + { + continue; + } - // while the open list is not empty - while (path.Count > 0) + foreach (var neighborPos in mapGrid.GetNeighbors(cellPos)) + { + var distance = heuristic.GetDistance(neighborPos, cellPos) + cell.D; + if (distance > maxDistance) + { + continue; + } + + if (!distances.TryGetValue(neighborPos, out var neighborDist) || distance < neighborDist) + { + distances[neighborPos] = distance; + queue.Enqueue((neighborPos.X, neighborPos.Y, distance), distance); + } + } + } + return new BrushFire(user, distances, mapGrid.Width, mapGrid.Height); + } + + public static FlowField GetFlowField(this BrushFire brushFire, IMapGrid mapGrid, double stopDistance = 0) + { + var vectors = new Dictionary<(short X, short Y), (float X, float Y)>(); + + foreach (var kvp in brushFire.Distances) { - // pop the position of Cell which has the minimum `f` value. - var cell = path.Dequeue(); - cellGrid[cell.Position] ??= new Node(cell.Position, mapGrid[cell.Position.X, cell.Position.Y]); - grid[cell.Position.X, cell.Position.Y] ??= new Node(cell.Position, mapGrid[cell.Position.X, cell.Position.Y]); - grid[cell.Position.X, cell.Position.Y]!.Closed = true; + var pos = kvp.Key; + var currentDistance = kvp.Value; - // get neigbours of the current Cell if the neighbor has not been inspected yet, or can be reached with - var neighbors = mapGrid.GetNeighbors(cell.Position).Select(s => grid[s.X, s.Y] ?? new Node(s, mapGrid[s.X, s.Y])).Where(neighbor => !neighbor.Closed).ToList(); + if (pos == brushFire.Origin || currentDistance <= stopDistance) + { + continue; + } - for (int i = 0, l = neighbors.Count; i < l; ++i) + var bestNeighbor = pos; + var bestDistance = currentDistance; + + foreach (var neighbor in mapGrid.GetNeighbors(pos)) { - if (Equals(neighbors[i]!.F, 0d)) + if (neighbor == brushFire.Origin) { - var distance = heuristic.GetDistance(neighbors[i]!.Position, cell.Position) + cell.F; - if (distance > maxDistance) - { - //too far count as a wall - neighbors[i]!.Value = null; - continue; - } - - cellGrid[neighbors[i]!.Position] = new Node(neighbors[i]!.Position, distance); - neighbors[i]!.F = distance; - grid[neighbors[i]!.Position.X, neighbors[i]!.Position.Y] = neighbors[i]; + bestDistance = 0; + bestNeighbor = neighbor; + break; } - path.Enqueue(neighbors[i]!, neighbors[i]!.F); - neighbors[i]!.Closed = true; + if (brushFire.Distances.TryGetValue(neighbor, out var neighborDistance) && neighborDistance < bestDistance) + { + bestDistance = neighborDistance; + bestNeighbor = neighbor; + } + } + + if (bestNeighbor != pos) + { + var dx = bestNeighbor.X - pos.X; + var dy = bestNeighbor.Y - pos.Y; + + if (dx != 0 && dy != 0) + { + vectors[pos] = (dx * Sqrt2Inv, dy * Sqrt2Inv); + } + else + { + vectors[pos] = (dx, dy); + } } } - return new BrushFire(user, cellGrid, mapGrid.Width, mapGrid.Height); + + return new FlowField(brushFire.Origin, vectors, brushFire.Width, brushFire.Length); } } diff --git a/src/NosCore.PathFinder/Pathfinder/GoalBasedPathfinder.cs b/src/NosCore.PathFinder/Pathfinder/GoalBasedPathfinder.cs index 5fc6e7b..1204b70 100644 --- a/src/NosCore.PathFinder/Pathfinder/GoalBasedPathfinder.cs +++ b/src/NosCore.PathFinder/Pathfinder/GoalBasedPathfinder.cs @@ -1,4 +1,4 @@ -// __ _ __ __ ___ __ ___ ___ +// __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| @@ -27,68 +27,65 @@ public GoalBasedPathfinder(IMapGrid mapGrid, IHeuristic heuristic) public GoalBasedPathfinder(IMapGrid mapGrid, IHeuristic heuristic, BrushFire brushfire) : this(mapGrid, heuristic) { - CacheBrushFire(brushfire, brushfire.Origin); + BrushFirecache.Set(brushfire.Origin, brushfire, DateTimeOffset.Now.AddSeconds(10)); } - - private BrushFire CacheBrushFire(BrushFire brushFire, (short X, short Y) start) + public IEnumerable<(short X, short Y)> FindPath((short X, short Y) start, (short X, short Y) end) { - Node? GetParent((short X, short Y) currentnode) + var list = new List<(short X, short Y)>(); + + if (!_mapGrid.IsWalkable(start.X, start.Y) || !_mapGrid.IsWalkable(end.X, end.Y)) { - var neighbor = _mapGrid.GetNeighbors(currentnode).Select(s => new Node((s.X, s.Y), brushFire.Grid.ContainsKey((s.X, s.Y)) ? brushFire.Grid[(s.X, s.Y)]?.Value ?? 0 : 0)).OrderBy(s => s.Value).FirstOrDefault(); - if (!(neighbor is { } neighborCell)) - { - return null; - } + return list; + } - if (!brushFire.Grid.ContainsKey((neighborCell.Position.X, neighborCell.Position.Y))) - { - brushFire.Grid.Add((neighborCell.Position.X, neighborCell.Position.Y), new Node(neighborCell.Position, null)); - } + if (!BrushFirecache.TryGetValue(end, out BrushFire brushFire)) + { + brushFire = _mapGrid.LoadBrushFire(end, _heuristic); + BrushFirecache.Set(end, brushFire, DateTimeOffset.Now.AddSeconds(10)); + } + + if (!brushFire.Distances.ContainsKey(start)) + { + return list; + } - brushFire.Grid[(neighborCell.Position.X, neighborCell.Position.Y)] ??= new Node(neighborCell.Position, null); + var current = start; + var visited = new HashSet<(short X, short Y)> { current }; - if (neighborCell.Value > 0 && brushFire.Grid[(neighborCell.Position.X, neighborCell.Position.Y)]!.Closed == false) + while (current != end) + { + var bestNeighbor = current; + var bestDistance = brushFire.Distances.TryGetValue(current, out var currentDist) ? currentDist : double.MaxValue; + + foreach (var neighbor in _mapGrid.GetNeighbors(current)) { - var parent = GetParent(neighborCell.Position); - if (parent != null) + if (visited.Contains(neighbor)) { - brushFire.Grid[(neighborCell.Position.X, neighborCell.Position.Y)]!.Parent ??= parent; - brushFire.Grid[(parent.Position.X, parent.Position.Y)] = parent; + continue; } - } - - brushFire.Grid[(neighborCell.Position.X, neighborCell.Position.Y)]!.Closed = true; - return brushFire.Grid[(neighborCell.Position.X, neighborCell.Position.Y)]; - } - - brushFire.Grid[(start.X, start.Y)] = new Node((start.X, start.Y), brushFire.Grid[(start.X, start.Y)]?.Value ?? 0) { Parent = GetParent((start.X, start.Y)), Closed = true }; - BrushFirecache.Set(brushFire.Origin, brushFire, DateTimeOffset.Now.AddSeconds(10)); - return brushFire; - } - - public IEnumerable<(short X, short Y)> FindPath((short X, short Y) start, (short X, short Y) end) - { - List<(short X, short Y)> list = new(); - BrushFirecache.TryGetValue(end, out BrushFire? brushFireOut); + if (neighbor == end) + { + bestNeighbor = neighbor; + break; + } - if (!_mapGrid.IsWalkable(start.X, start.Y) || !_mapGrid.IsWalkable(end.X, end.Y) || (brushFireOut != null && !brushFireOut.Value.Grid.ContainsKey((start.X, start.Y)))) - { - return list; - } + if (brushFire.Distances.TryGetValue(neighbor, out var neighborDist) && neighborDist < bestDistance) + { + bestDistance = neighborDist; + bestNeighbor = neighbor; + } + } - if (brushFireOut?.Grid[(start.X, start.Y)]?.Parent == null) - { - var brushFire = brushFireOut ?? _mapGrid.LoadBrushFire(end, _heuristic); - brushFireOut = CacheBrushFire(brushFire, start); - } + if (bestNeighbor == current) + { + break; + } - if (!(brushFireOut?.Grid[(start.X, start.Y)] is { } currentnode)) return list; - while (currentnode.Parent != null && currentnode.Parent.Position != (start)) - { - list.Add(currentnode.Parent.Position); - currentnode = (Node)currentnode.Parent; + current = bestNeighbor; + visited.Add(current); + list.Add(current); } return list; From f879c4c46980e31b6aa8b2ac0c50928de486f487 Mon Sep 17 00:00:00 2001 From: erwan-joly Date: Thu, 15 Jan 2026 17:27:19 +1300 Subject: [PATCH 03/10] add api/ui to test and doc --- NosCore.PathFinder.sln | 53 +- NosCore.PathFinder.sln.DotSettings | 3 +- configuration/pathfinder.yml | 2 +- .../FlowFieldTests.Test_FlowField.approved.md | 5 + ...sts.Test_FlowField_MonsterPath.approved.md | 5 + documentation/brushfire.png | Bin 95639 -> 96548 bytes documentation/flow-field-path.png | Bin 0 -> 64628 bytes documentation/flow-field.png | Bin 0 -> 63376 bytes documentation/goal-based-pathfinder.png | Bin 95405 -> 96258 bytes .../jump-point-search-pathfinder.png | Bin 21497 -> 21190 bytes src/NosCore.PathFinder.Api/Database/Map.cs | 23 + .../Database/MapMonster.cs | 27 + src/NosCore.PathFinder.Api/Database/MapNpc.cs | 27 + .../Database/PathFinderContext.cs | 39 ++ src/NosCore.PathFinder.Api/MapStore.cs | 276 +++++++++ .../NosCore.PathFinder.Api.csproj | 27 + .../PerformanceTracker.cs | 110 ++++ src/NosCore.PathFinder.Api/Program.cs | 295 ++++++++++ src/NosCore.PathFinder.Api/appsettings.json | 11 + src/NosCore.PathFinder.Api/wwwroot/app.js | 548 ++++++++++++++++++ src/NosCore.PathFinder.Api/wwwroot/index.html | 313 ++++++++++ .../FlowFieldTests.cs | 145 +++++ test/NosCore.PathFinder.Tests/TestHelper.cs | 28 + 23 files changed, 1929 insertions(+), 8 deletions(-) create mode 100644 documentation/FlowFieldTests.Test_FlowField.approved.md create mode 100644 documentation/FlowFieldTests.Test_FlowField_MonsterPath.approved.md create mode 100644 documentation/flow-field-path.png create mode 100644 documentation/flow-field.png create mode 100644 src/NosCore.PathFinder.Api/Database/Map.cs create mode 100644 src/NosCore.PathFinder.Api/Database/MapMonster.cs create mode 100644 src/NosCore.PathFinder.Api/Database/MapNpc.cs create mode 100644 src/NosCore.PathFinder.Api/Database/PathFinderContext.cs create mode 100644 src/NosCore.PathFinder.Api/MapStore.cs create mode 100644 src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj create mode 100644 src/NosCore.PathFinder.Api/PerformanceTracker.cs create mode 100644 src/NosCore.PathFinder.Api/Program.cs create mode 100644 src/NosCore.PathFinder.Api/appsettings.json create mode 100644 src/NosCore.PathFinder.Api/wwwroot/app.js create mode 100644 src/NosCore.PathFinder.Api/wwwroot/index.html create mode 100644 test/NosCore.PathFinder.Tests/FlowFieldTests.cs diff --git a/NosCore.PathFinder.sln b/NosCore.PathFinder.sln index e181676..dbff829 100644 --- a/NosCore.PathFinder.sln +++ b/NosCore.PathFinder.sln @@ -7,36 +7,77 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.PathFinder", "src\N EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.PathFinder.Tests", "test\NosCore.PathFinder.Tests\NosCore.PathFinder.Tests.csproj", "{BEEC67B8-A63B-43DE-87A5-73341AEFD62F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.PathFinder.Gui", "src\NosCore.PathFinder.Gui\NosCore.PathFinder.Gui.csproj", "{FA7E228B-399D-4E03-994C-3C3D057E134E}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosCore.PathFinder.Benchmark", "test\NosCore.PathFinder.Benchmark\NosCore.PathFinder.Benchmark\NosCore.PathFinder.Benchmark.csproj", "{159A99CE-A97C-4215-8FA8-38BC7C8D382D}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosCore.PathFinder.Api", "src\NosCore.PathFinder.Api\NosCore.PathFinder.Api.csproj", "{6642B6A1-6EBE-4E38-A812-435286A0E04E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Debug|x64.ActiveCfg = Debug|Any CPU + {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Debug|x64.Build.0 = Debug|Any CPU + {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Debug|x86.ActiveCfg = Debug|Any CPU + {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Debug|x86.Build.0 = Debug|Any CPU {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Release|Any CPU.ActiveCfg = Release|Any CPU {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Release|Any CPU.Build.0 = Release|Any CPU + {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Release|x64.ActiveCfg = Release|Any CPU + {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Release|x64.Build.0 = Release|Any CPU + {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Release|x86.ActiveCfg = Release|Any CPU + {8DC7839A-EB02-4E71-95DC-2D2BD9651E19}.Release|x86.Build.0 = Release|Any CPU {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Debug|x64.ActiveCfg = Debug|Any CPU + {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Debug|x64.Build.0 = Debug|Any CPU + {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Debug|x86.ActiveCfg = Debug|Any CPU + {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Debug|x86.Build.0 = Debug|Any CPU {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Release|Any CPU.ActiveCfg = Release|Any CPU {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Release|Any CPU.Build.0 = Release|Any CPU - {FA7E228B-399D-4E03-994C-3C3D057E134E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA7E228B-399D-4E03-994C-3C3D057E134E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA7E228B-399D-4E03-994C-3C3D057E134E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA7E228B-399D-4E03-994C-3C3D057E134E}.Release|Any CPU.Build.0 = Release|Any CPU + {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Release|x64.ActiveCfg = Release|Any CPU + {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Release|x64.Build.0 = Release|Any CPU + {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Release|x86.ActiveCfg = Release|Any CPU + {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Release|x86.Build.0 = Release|Any CPU {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|x64.ActiveCfg = Debug|Any CPU + {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|x64.Build.0 = Debug|Any CPU + {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|x86.ActiveCfg = Debug|Any CPU + {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|x86.Build.0 = Debug|Any CPU {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|Any CPU.ActiveCfg = Release|Any CPU {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|Any CPU.Build.0 = Release|Any CPU + {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|x64.ActiveCfg = Release|Any CPU + {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|x64.Build.0 = Release|Any CPU + {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|x86.ActiveCfg = Release|Any CPU + {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|x86.Build.0 = Release|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Debug|x64.ActiveCfg = Debug|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Debug|x64.Build.0 = Debug|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Debug|x86.ActiveCfg = Debug|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Debug|x86.Build.0 = Debug|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Release|Any CPU.Build.0 = Release|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Release|x64.ActiveCfg = Release|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Release|x64.Build.0 = Release|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Release|x86.ActiveCfg = Release|Any CPU + {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {6642B6A1-6EBE-4E38-A812-435286A0E04E} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} + EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D9A2E4CB-2146-4D11-8C4B-3955720D5844} EndGlobalSection diff --git a/NosCore.PathFinder.sln.DotSettings b/NosCore.PathFinder.sln.DotSettings index 53bb462..6e70b1b 100644 --- a/NosCore.PathFinder.sln.DotSettings +++ b/NosCore.PathFinder.sln.DotSettings @@ -8,4 +8,5 @@ ----------------------------------- True False - True \ No newline at end of file + True + True \ No newline at end of file diff --git a/configuration/pathfinder.yml b/configuration/pathfinder.yml index f6e8edb..47e592e 100644 --- a/configuration/pathfinder.yml +++ b/configuration/pathfinder.yml @@ -2,6 +2,6 @@ Language: en Database: Host: localhost Port: 5432 - Database: postgres + Database: noscore Username: postgres Password: password diff --git a/documentation/FlowFieldTests.Test_FlowField.approved.md b/documentation/FlowFieldTests.Test_FlowField.approved.md new file mode 100644 index 0000000..bed1792 --- /dev/null +++ b/documentation/FlowFieldTests.Test_FlowField.approved.md @@ -0,0 +1,5 @@ +# NosCore.Pathfinder's Documentation +## Flow Field (Vector Field Pathfinding) +- Filename: flow-field.png +- Checksum: 7dcc6fcc2533ffe40798dcd1771c3c1d28d10fdf10bed8a4b2cad8ef8bc4009b +![brushfire](./flow-field.png) diff --git a/documentation/FlowFieldTests.Test_FlowField_MonsterPath.approved.md b/documentation/FlowFieldTests.Test_FlowField_MonsterPath.approved.md new file mode 100644 index 0000000..d286c04 --- /dev/null +++ b/documentation/FlowFieldTests.Test_FlowField_MonsterPath.approved.md @@ -0,0 +1,5 @@ +# NosCore.Pathfinder's Documentation +## Flow Field Path (Monster following vectors to Player) +- Filename: flow-field-path.png +- Checksum: 508c4ed1101bab0cc5f36e6e785a69b6e7892a9a511ebe23b338e4edf1cebc6a +![brushfire](./flow-field-path.png) diff --git a/documentation/brushfire.png b/documentation/brushfire.png index 5eabab5abad102d27fb771670876c2bb95719806..13b0a58fa6ae304a61a82ecdac8375eea07733c4 100644 GIT binary patch literal 96548 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%0Agq?nM70c79Pop;SmnaiNUZx;?Q)i?bLc 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 literal 95639 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%0A0c7I6 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 literal 0 HcmV?d00001 diff --git a/documentation/goal-based-pathfinder.png b/documentation/goal-based-pathfinder.png index 9a93149a3121995b6cf9dfb9220a9c51169e4018..d46ee009b562b02b6e353d7dcf818810a586046e 100644 GIT binary patch literal 96258 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 literal 95405 zcmeFa2V7Ix-{(Iwj-rBOK%__;MMb3z(xnY5Vxg$0h@l7w2!t*WTB6dV4;GNFFoFn3 zXrY59RB0kD5Q-rbrPojb$(|cPo!>am{+@mIzx&@^UoSNGrrdJw_nv#s`};Yc6L>*e zW7p2TJAe4$hh1mSoVxVG4_mO%zwO(=J3TARPr%EM&X+V!{P3!Y?-N-0*-}kQ?S~(- z!YG#{R|4AAX=eKYL2;GSX7Utt zWHNUoFmXFL-2CO8Uk520Lk4_epq-$T%StRNzHIK|JCyZ8$mz2CT))6Zk zPki_3_VIY_)K=&vjGNW<^NMz=*Oj6QrElPH@u$(-tv zS@mpR-|#>D2HJ1SHa^W9XE)01?0$*R1-;?OUK2|z(Xen$t*k%(@jy4Xcm1x9)k>Df zxo1&&)vI)Au(L%M#+ht>;a^TPd6)c?7mBi88|V8E-!jV=by0Tstrt^1hd!MWd7j+$ zVA9&i^V?}8Hy1x}u zn|oJ1?mDtcqytZ1F&-loplp;&Ctb!!q4ox_JiF8L`cg?#56jyMIj{r5lHgML28 z!2#txluHscJUuT&xSv#ce}BvUj>h{cHmB!%<&tc(*}%5{{`dW4zhBwEMe_gNFisO! zo_P7rb7=%WcY`O5x}<+gIB_(`RsvS0;U!zTJu;#=Jkbwz`+2b!HOs$`tA?&)(#1Ng1pZcITxY$fCQ_2EUIa%x&+QCX6$ z<4f~N)x+$%hRC-zC+u4nNctF2j}CHwY#CD*`J8sqAA)cub<>y5;pp=p`Mt~ve~wgN ztC>GHtWi*@Po7OF!q>IlBAU%=Nq9RHwl5J$E;ewTy}u zj+4(GXCl2e!XgB`>}0@pWhWM^-cjqO{De&OZx5>V*BUuf3UT}Ys9XB62chvUopv&Ll05QE(D2AB`Kj>SP8n)|DLr7YHoWp< zINn`v+WBRY;F}|_yt*gH7aC}!KDvqOY_f7Ue}d~l)zqUw4=l>L#FeZ?lXg}Jim&eS z(01ksZ0z9|?^EK;_mc|I71og%Jya?N?N=pK>#cWT@)!P<+qZ6bhr*~n6$HxnO6Lk62O@rpNOAdJ| zFYM13#EEcX)$^LR6H!arKilT*HKBfNOsqGmkHaW`O82Sx<77ombK3p=l2w5Ly-&&# ztQ<#o5cglR^tDy>(nxZ}qhgm7u3TKNjZF>LqC1r?iTGRh*667zE*G!Ro84(b$pf&^ z;_$3{sN3x_vs)axVO1ipm^EI9;|7Z6EVPH83chg(UHvtYf?s>v>?=gl@R;dwm(q8> z@JM=wmy3p?6dy`X<2HV$xli46cUI|AW7k-G2*K1#O{yTzPD^xb?P>FM!}RI3r&B1y zbPN=9;D!G5Oh&q@F7FnXa|FAFHk6XVH6vG2P4I|pbkXxO88$aLUC$A;nfnKdYWh`X zmx>Rwj~)Ff|MZ`n`$|ukD6(hh;wc)W$}O`sUXn_CqvTFTT+>6R$Zi|W!-zGug*Ck6 zBquV*3L5Us3f!Olil%An6j%MR>>#3gsQto$4jJ~0R-9`qKfcCGi0}4bHS+PVukLl9 z+sWi|m|euPZv>AwdzwI5B;~n3yS_Lh^G>@whs#@5X+P~Xfs&1}?PCS67$n z5%e4I0i znk=c!?zL8Onbpr~!%GhG{o+GmGj33!=He**Bck^H`?GUqO{xM=GJG-gkw=(Nsp8uN zM+3_1M!G_F2B;U_YOiV+qFK7P*z^2sorzgVLQa0#UIVzjPYk$G3G5DWVF zj*{vA2><<(TD=zx<1zeK76YnBeJ5V%t8!S1)mJj-Au8OR^wsButCvzjs2evvl zEp-p(1RXy2;0jAxU$mT-xDBXt^s6uv@eA#B=DS*o55fniYKi&M^=qhiZmNw=1t3nf zb9>gn^CL!K=J?6DY(vVk+AT*wlsfgZv-UZ{M6<%cAv``)CKpHfL&;y2x9JnTEQl*S zW;ZsxNr=2gy0hD!N9ongU#c5H4H~@%i#K1JyA==-OIOaj&K3TW7d!LIATQoT`2DQM zVfNMrR$^#Z?~#E0Q*Kiq$u>#Ya|NXW4IggA(3ty>cayU!=5Yb}<(8e(Q=nW^KH;wJ z2ETu8rOH8`y#ga5&kW}YPC72X^tE;TIM(k=|FJ$;WbTy*fiqx#g=*;!kz9J`j21A4 z-#W?g09&Ovg?;zy!BMnrCpynD^X|Hb4Smsg5gfK)+DvKp8y5Q}E^Kbr{WvT6hvy@n zSezzQpNu4v-af4}sZ|K7lwQEe8X-n$0c+e*o$BCoZNl)|0P!dpr3zUM+sBAN=sF%y zbhDI@keGdc4Q+1M#qSzfJ+M^UcKakppj9zu0_VDAZM$}^wh6pEv*DJetwH52$$jb( zgvx4L)M>ISIq8x=#;}iZi3|y@CM9=4*`Fh@CQ6~y(tZY;co|^pxG#;99JybzG4705 zQ+io}^dvKJ;3r-3kBV`1jWSThtf{*XL9G^NzhZF2eVHqK?~C2oiKdQWsPtjPPkQQh zt|;5E?xXF;Jb&}~+(k`^&5jRpo!vM{^|Mlrkq+;pxmaPLdweIVGbaAb6&DbADY~6# z4%Kw$Tm5Xgupr7?+jbEtNwOLdPY%uS5#Ntbd@$&h1_x?!%DS|+t@4;Lp^1ZxeUl*u z0_>J_jDd8G=9NLL<+jSwQoCl-BFY^)-w&;u-H$S&&^ zJkCOpg@_DJ^bZh>0+;wK3(+8ixUFCnG(e=3FKO6KNS*h24GOFER|K!J+Z`y#F>BWH zR$ltFKr#I8rktvKt$HaN))_=pop8+hlA9aZg3~#Qm;Z z?N?L+O2Pnn+3K{z&8~6Jm$D#0Cnp_dhTpSH)aG<87TN}Ni1p6)L5)lONvLsY6Zaf&EY}-C`c}B3Py~zpO>n}js9KR+X$+pw5sq& zYEVyW1m|@V_1M(U?ygb~JZ&erdy7c!9lR0PfEEW=;NGGk9hSZ-KL5C67aLQ3&_e5Y zFStBoKYT{kV`!AX~+LR&NrdPYMul)I-^4)_SV%7+)vULm->m_54 zZ?;og{W6atq^iPkI~pxiouG;~PH-}MKx4(%BKM*KXm6$%XWZ(xwe0>qg3vG@tTCke z`$yT|ZJ)Z>SSWn!(0>7ST5?ZO&p;QT$lmT&!+Jn>Qkg(FOvS--el3ZhGjzz#L%|JU6X|=?+sO z7AZ;TGo`rV!{=f|8n>Tjj^P0;AXcRD9au~QOdy6x{l>AWfG9M*ILD2{W=T84Z^`Nc zV35+K@t4(TL9Dk>0j*9ZHVwLKFEbP0_$AvRCS+CFz%jdx16VVf z=CM>|Yyjgjzz8Hv`z~O-sUGq(l?%Ub#wNg-^U3x1Q9tuue8dfKX-hFri)G{ea_Tp* z>pF}5OsxPQRV@zrsDWWq4}_3sW-Oa`N65z#`){Drb(s2nr{9bBOI-aw7f4S=qlxs2 zcZvhW)0Y4&9S+E$_W_m)^Rs+Uwg!x4A&$R--9y9sP$^5~o`ktKjS^RNNKt)`drTq;~p*TW%-Xz0MOS z4*2R}cH%U#VySyP-}vh6tLaN$BiDQrd$j7ul79cPvNEuLmt~6a#1vE39do~W)d!h+ zfMROkhUN=nAQ0;`ntoymBjG!OJ9cStCKoh1kE82(PfWez#hGJ7i^nr6>iPf~J_v6b zsp)`d>W-S#iy!&tA3OXg8oUzz>2ZU**A+lZUHO(L-+4|qlFnj6diR8lw|ldKcCE{3 z3M`<{$8MM64Sl`wD3H467_LwQ#w)vTR>=+-FD3!a?%(akp#lYvM^+ z%b>3?V6M8@0l4bsCmqwy5@hg+YH>`FqQQJ^wqT%Nfp4&pHh`$8pXHq03UAL5!YMdj z{Byk)=a}TfR@R;5`X6ORXG)e7v@RZyU3ecq^prneimKA;9Fyc?W6cA#J7e^lpuR_= zsHG>g)1Wz;yk~qa9xGTbbdeW8sHvSOZBQ~t5~!7K=2@v8FFL$emB4z?jrhITMc-Uj z{$1T{a66xo%b?3SaIaN0vMfRWnTLja3SXX(3a55+lHIIAJ7~Nj-`BZwvmy9>leD#)@)f1yt2&&`w#S^$M_lWy6&-(siRUb@at<#t z8=P^uc%b9T&(@)5#7-dnaIOcgrTR~JlL$;h;YE^hLG`iEHc9YxLZpSYhQ+Pm83})U zL1eW}662FtzEnvMd*%T0to4h`KcQ}5cFz8*Qbbh_Z1eUuZVWL|p?sW5O4Asuk7?|V zBxA7PQ$-bS*9PcQ#RRGHaZl1n*xM+X*!<^$hM(+qhQ~{`vcVQT5!fvP#vL30n=C$d zpoB!HBA14`Bw_$|1)WIACx|kIj zgzzf3Dz5FRxMBTVZ3z!!tU&XQScx)EC;gKg2eletX;pE=vjA?bVhkIKu%Gh`IR{Z7 zjuR1qL=iwkPn#_ae|0R5eT%}8SJWe}U5Rs7UU&eYanr7LkofQcM<=hV_{6Hr_B5gC zdL&O%x3~y`j2M&DujROVof_9Q6ae6?vXchQt$ohCJ{%tEj38@Hr08zIS}ivnaU1C5 z0YCU9oh~VaK=ZMpU(bKE1=pAH=5u^>=W!FyCEK-;MGAeNMAqHzmk|uw@@?UX2EnIAhP!eXE%%>H zcbR!nY{Cmuqg|IDymj3OmVc#q2;xw!^TyNF%zWN!&$(1G7L-f;(FFjdHHIKV14MP0 ziG^P6cv*oQB{2lxw>yXf@5(D!n*)Zb9&6|+BZ5zg^>Z2h3=r;{y*OFD%C;w4RWNL;!`+IAxSM$LNz{m_r1ap zfSy7z-Z)ju{)cMsux$Advz-%?NzhY#LTX&bxl;B-NbRz8Is%a6b|SLYNy&gmT7g9Y zJV{cF2-U$_y;FbCaYHT_;RoTSFbjv@>Y94H>g$6`r8|tH;jRJk&$H!Kj>+_bY(tDV zLQevb8*k%C3~3Pz=H;@|Z-A+Ys8Czb9MC<$hP0(F}7}4h(=pSLo`}?O;7px zyLyq<6Js5fInXtb$&CXK@WojDCQ1;4@l9fEC9EOx$KISR*4W3|)UI_Bg64l# z2Wx7H&iPGfO4{)@bYB9e!j9$3s>-~#w`Uf@gP|B(z%%c6AMIj?2y|evGor*9!Sqo> zk5|^>gcCkJ?0QqSSl5&2x4W`_N>`|%)RSh`uEjX1C2{LA%V#~@FWDQ~RV@?Vd4%hJ zkYmZ6IfPa3d$B1fg~>~yK!IXQAVPJEbgu%o8xvZvWQAOE6FVO%y#^(p)dVpTnb^5zf!k4fS6E(tEY^ z73E5VMq`lPI`Cc0TnD~z2>g|*v#e0ZA6BM#(Fo`rhL?JC@#T2k3BDSL8#uM zAD;_lGJ8X8b@S{#b(mMXxt&@L zr05N^X$Sy=C^;%%r^JboM5d}_?O$nWKjql+I0AmFQt*%Ht$ZC($%1bH0Di+$^!)6q zTB81IlSlwq56OyOmgdy0Qi#8;(+=_%v4ld0wrf3{BZT+LcCnukam=+2=%QM8!1^MQMPcslVKYT8~|}KjT~%>&$D~8tS%;)S9Vit6h4_Hc%-5I84?oX*|mdplo2Sude6~*WWZE2%2&E@i-?z;z1~* z0+=zQF362z)CB+mAKCAEBDbrX4;+N|K14wMu$2Sy7+6sV*w2-VZ2*_t5sPW8#D}IL z-(@dqsicD3qO>zkcDJQ%;DoE{jI63{f^lpz_5luR%u3JUu~|=wLYGR3AWsivg33*Y zWe4W$#=sM*@v((c($+?=Q}aTFMekWI=RJ*naX;zLUAKdy)f-qqFV*%boF;0TA`9B_ z_&)IT&h6;wql0HrMNwG=qe@mqP=lh0_nS*HgF#XJ598$Sl180V-^s{#GV=d08DXIF z?=bOi8HE2S*mSO1&Od*eT2Ud;N5L*k3!`%cXaf=*c+bAvO=6sFGY_xG7eJBaI`F~9 zr2+{H84C_GRb!+c=T5wtV2J?M&JgxBuY=g{zld(vkM*1Xe^t9dy!l^rv+G#-oBw~` zB~UYevq;z9{9dp&Uuw<2N6`O?;bV(@qu*RlTRRw=wJXcFCf{#=_AUvPk*=;W35Au1 zBnIU@fF%`(Q{%@MRFelK@aI1`+CCF}W4jbjr^SrttCkH);2twz@Si37l!_MTx@;22 zOLX48`^`F_-#2-l)YI3R(|NpRN2jkGd9Jmk_&J=RzmXjW^cPa--ljO`bQ>ynN# z2(qp+HALjZRBf}bh>1R_OV4ubvGOYi7o@E6t3v?JR!qOp^Y0T<;WFA@f2Oyl`2?W9 z_Z}Madcdfrg?y3fQL2;PU7mj^zZx85Udna>?Rbw_NAxcqO#R&A{^l3yl4TDR!m~iD zyj?$hHTRw3v<>M9fWtfjUFlT5(?EJl#M2MWQ|K1*Op!xP3ZzzOW81us$2qXB(_vu& zC#{dl(-h3E$UWFz0Rck2fSyxr;536=^SgYoJTa9zxwA$`l&U6=i4u!tN`&v)$ivA3 zT!fsv*2dY#CyqL(oC^BS7L%+xsve@&%=X)L(0dqfr5MdZI#`d@^8oY$ppo**%XFEE z`a;;KuGuOm>3|^@RtqY|ER13GBEUA$P(P$52|Hcw@af8Y9B7B@8Z77ac8$gHW7nqn z1G{gzA+J+ZT7bM4XoGQybtjValrN8|pnzh7Lmi{Nizw(@ql}Qgr4hF(hSYWeG*}$f z5Rls`C34vwR`b}$wK4#2mh&Rki}6{4( zb5i7%yK|o11bh`jVu0_iJq3zf1{#JGxePSihWxeTQl<59NIIT}Az$Tb7BHriP3H;C znKxS49svSk(g;q-^r_0IJwAEZ4-%^W4pgs0#w@U4HP2a9--mPbN=#^O{uFa~iI-Q` z>3NlL$4#j&S3g6l+mp&9mBWoyWeHc1NAoo{R7dyd1PF(RbON1omu`7v75+DE!R4aS zfIW!|MKottr3IUG$HTJ<{Vdd)r`}6ZIJ~9*L`AbcRM6%__#jx(5xxh1(ds7CoHsZx zT5lC&ES`e&4v zw;A>Q6ja$!HlUNUP>ZAVNX*P~zAMhRllV-tz_#_gj}p-hPab<;6xjQP2M1mWtsd>P z@U;!mQ%RH+sP-CcEeGHWD3Mj#q_R*=l&L{IH$zu!^aT}|}^$Hmw1dzJ2SlUMI z0mOZwPuoDoX`bR=+G1q1WfQF&>fS?PF}9v*PB45{U}GvxwbUW_(ZhhKvF@n9 z?NmmV_7_#{++)CWL9S~SPUjAbb~!vtu25Q8iUir8)2I=07psTUaGHGEY#?10ybJP? zA_B8375LnoW=Yi)P`SERo%|zfXLH?&yMnEJneY-y6BN=Q+XIF4RY`=WCE6Tf>0hy4 zsdCw(43Mpob~)+df^%()L&ooGB8XEj4BmxA-bLtNSWyiy6L(NcTD?3qT1INyGRI9b zkWZ&C9t8wLn_x%1L|LI98b{;gn8HPPd>ug@1fgUHeY#S&$>1;=mf2C2JnC<&^z(AP zN$X5rsepC*?fNkQol-tkd1YziC{2pCYF+hPE7=o+B+;t|^M!gP}07 zeXDWlISa_^@+1W}(kvE)m6bgMj39RO!-6Vr&wvg4alL^y+=1Dk%caclkV+mJ>RH~i&Bn2B9_r<$bW>VW1`N(cc6@{EJ|yTRWE zA;98c!Yd)Wpc{({sUHKHWNam*Nq!Jtk{cDpq^n^qCg+KXtt4WEZjpC=cR2b|Er>`wrJ~=m6_f=#MqfVYl_V%J!y=}iiJaO@TOqqkY z<*5h)c(t=VHP#VR20=|mN)lA)K&|+&sr)wbg%cMR618^e;jv{5W%XI58mzRZqP(8m zE>O%o5ql+$$z(ThVWj|v{mll5tW(YroJu(hc3Q7fSs5I*%GpN9I{oJPaS(Ecu0M1} zoR_t*bH=A1fHSCYQRA+x2N@ew7#Z($_XT$WGtlOueomzpOjpvv=ZsTWs55ZM>iQk-vY4-E@AUr@?u3L%{va@>V zCB|^v`w~$5V$HG_GxQw^gVy^Ns z{6Ei)OB4-Ci=BYz&d~kIi|R2E7U0MYnq02P(DAeu7@ivrtZHNF*%#Wf6PVZaMdU zbT`n?72LJ6%DKPJkbRi;Md<&?UIc37ZfQEBY1%4J%`H{krvaY6!%~|GJyR9_@LJ8NHG^Mv|aADX+F0X9mDf4$5AG zLSuJ<;Q{bw$U=KxW2TRxGXwr(tugg9V-U17G(=$i@3Z5=KlvrBJ19)>K8IvgEs%_S z{qM8i!arF#-VB>GoTH+s#AsB8EE#(&(BTc|)kIlbLV~KyXg;+s-QD^HC1ESuLy8)G* z^q-b017q~(_=F91_xY~l;9$~`GGNGXye1IMMf)K!5p>=5*i(rPm!|5v#`+xk(myzg zfz4GZs_fOCoM5Xs5IKnuu##T6E=JaZ#(;haqv<`V!(##apOdgk_V7wOnFPD9s@ z{+mDpTnL6b&Y1x|qPgH}Mms#ux^k}Yhrf6|D292teNwHJ68>!Qjw0^rwW|aV4dm|1j*y+op(y?U)2$)dNeKBRjEic5B7L36=EyXfe-$frr zJqB4ecnm@inqAyOfkB)(^x_t4zVPDDZV&($_XwAZcq+F;;AjMl?7aB%SR1BHIL_rG zaBv_v@hYVr2N0Pnj+PCi%{$u_agsojJd^F`U9VaUKK(V2+*p=^BZ;$$#w!t{z~(zOA32HY09tsk!7A`c|Fe61il3l;>gav z_hO3D7`MSo&?tcP`go43`u2;fmLKE@3@sgR&h3oV7^m-uqE9kD>`9m|8LBDp-R~%A zI$thT$_E)E6mm;?(B)STiQD@Fo$&jH549mTBx$qL_X-|YLyEvNRw=GG{juEi{OKgO zN8qioj@k!(>+vQ#GaKCZV9irl2n!4zAW@j1(3|68h^#_!z90WBQ2dazI-4`6s;^YQ z(3BYpwooi5aSE0Pk-i}%rH8VW!vKFWI-t*afQdT^kG3EuD{Wb zAF9#X21(F}ZhA<{4xg^>#5$DHtXT}W>-r5zMZ&BWHi@&bd8Lp%sE=|l$}%eo<{VnD z?eWI#P$U4(gi1xDd7CbqA$%A)=b`a@e4shVM#yAmY=qakvRH~2rh`IovXCJ^hm4H- z?G2Q0-w6gPrql!f2h}*YQ{@?5(6D9m=Cu>@qT5E(I(>CVK9gc|Ip33J@9dUu5+2Zn z{cYni*J2$y%*pk#NsI4tC!^Or9k{#>@^Sc3o}dL9YE22W-{MdgX!0@90MpU=5`J4Z zb$H(QxJztYl6V`XAftKr$*fv2c*!5HXRRT>)4%MqCAxvZGmndmps-1E8~4u-fE_cy?(^*G8A zDyk?8!6*uMsjIMu&#Bl}U>G;)_X;y=Bd7w3mTtvOY7DgPL z00uS>%T`-S5xExTiS*7c^awLfNTPThJ40-^Q3@wpEt06i3o}z0DBTn!%g=d?9$fD4 zkK=_B93UYFDRqBq^&o~oDqE?ze8a1R>aGs6oIj5I^qCBM4u-8xy&S2J6fD>~La2`J z)=C{lH}B}=eiI9+mI1_0?QUy^j+y+>NxZ-L9kxApo|7D%M~mf%aE^tK-P}Evu<^Vpe`mtx;X2nAj z%~Ibm+A9G87P?7-!B7X00oR6mP0*-j>?f_}Cb}^tky%)YDsIpR6#TMlZ=BIm@bEcY zU~?IBRDoa80evO=xzd7N_jZa7U^)S<%|QxG==LAqZh*NDhMwoy)kOjpiIwkSUj!xc zY2aBcnm+*sRK*A3pS8#02ub$V0|07&P%7Q`Pr6teK5J|C9*p(U+IgJKv){H zDYQBqih_j95NfW$KURCVKFWR6&$g7%w#K?FVPM2H!TV6m5uNZKnLcP~RUDl)Wt^<6 z%-YM^U;Ya*$bEAiol- zxPTE9Fyld(l4Vts9ZMW9rimjg!6nI+2$+~wAagxB_d6h|zy^csfwiO^q;C#v8z}7- zd|d5q0ynr}t#l(ms;G#O1++TqYumrRbqV^w#Vsy4Y%dTQPVnlAIYXzisTdY|k}dW{ z1ROy)^#u-t4A8hAfV7`qAKY|)mB%Y_HSa#W;lhDKvCcze^g&&}^r07wm#E zc0id659=Jbs#ueY3;gL) zHbsXJi!`blap1O%QwJ>##8YsyKzvv(V`??A%zck2 zNSply3a|5F1{8)YAU2@z#RqoC?ERiVs;<$6cMY6kvJHl+CZGL|7Y9hS>8^ka=MK0q z3@Q3|0_`pqZigRA0|zV(fzd_S z{_H*YIU6o-nZf((i#i6=?SBXbJvbc{%pO|x=+nT(q5*~vL^1NR-C3v{K?nC=5%d27 zCGln}y0KE9ctmtDTg<{X^^e{f*}h>*`#7N8J%cz|+SuGD59*AI?=Qz4JP<@&W2w@I zCl&TKzdN?s{*zi8xY%m9rENq1t9xo37*sHBD(VRWYgA+Fhv}OjPMulR#Vu^3$5gOn z1TdHg;MJLVYBmK_6T3jH4*S|3YU*YuPM`*CQQeTC%|;&{v88v`l8wP#c|S&~20ww! zABevJA@+d%+-?w>CJv+*RsF-lNr$b}9Z5;IB&B>Hz<%0p?IFBD6Ur4avISTIxE4TL zYzwr-5TWyaGiRJGbY@c<3A3}MU9e-Ix5h$TOE5e-! zAVdZ(H)04Tt}yE<;6L%bNB#e4k9w2-01WgU0DX}ley3djS5YqaW>4JprLhVlnBdAg zk0oM-AJcX>u$WCLE&dB3C8p3tGnekK36g=-4+l6=8p z-gv*_rfL^7G^wUbU46O`x{a)0wyzpV1&yaFqAI8MsIsJIFK-iCM(Gs*a+$~x4cw73 zAnC0j-Rpc!z7Di4Z6&XeXDP*Qnlld^s!EpJwE&J|H*ovSw!P zCBVZj@1LQ$JYc2DN_!*s2zYxUZ$L!%neZEivqt{%Yn_0;wTj)^an~q54mTv=vM`kb zFqZjpEQM#C6~4oqiK%7)olt-LP80xvJ?~-`4kvBT%=kN`a0Y>^8s7ac}ZsB!(wS4=7qY z!S9)gT5c?YbD<9JB6!JH?iKFbcw~JM=h|WChH9iwMi9zNaC2A|3mY`$C_}!x+a68I zf>^C$7+|%e&#cxsj(&%MYITjgMk;|i_*~4gSK)7oJ9<{0O^X|pa{~`&FL8rM%?$}F zZ>9yn8+mq(q9Yr(;f9j~B9ZNdNSF_1Q3*$gAUT$ z1Q%}tV6ud7d9hc?7Y1v3*;((aQSVDwB(CY3P^X+D zA?IWLWz4|IioL9VA-5lf>2d4iRv0DRqq=S4ZUGB}+{*L0(%;O%dNk|Plh0&~*G~B* zhNzYF^P5!g+}+DS=X5_Gl+!Wf7$Ztkh((G$?Az!)IiA8{mgjMk@y|!{?(ENY$y$0i zULnFvbgrmeXSnHo37Hz4SXHVzL&^&gTcuBd&)nYE;E0aP1K_4Bkt$t!I;``bX6%Oq1J{Qu6`|>>~-;n_G*PX+ZeRMAMQrj>mAP$_4%!B-*t);KpC$M29 zjh4N-k=%1^Bi?9+h8cM6cG^Y_q0we`z|+Nx|NkHEyWVC(=ersB=+z%<9XxA)omm7j zc-YYBx=V@K1NvMtu&*|YrP))2u~s~WUtT6vGyHCes;kJ?&NDA0e3@tQp;QQy7ND1A z?u-sx%&JF=PHcx~Exo&uf*HhhzF9YU;6+JzHiomNme2e6L=ztb_x%8d4rIcG&U>f= z_fk7|Do{p!WiJsc9CZcsiBs%eywWCw#q7?Ks^lS>3kE6u!H#u2v?xaUz`yu<78sVd zUJh*Y#9P7Y%$9OVakTz)z~U5uA-U4AK0#LbnaKa1#Y4FypX+`x5aVEAIIxcCjdwac zi&_j*DL>RLmjdsDNVwIC1d_Zptep0qS+HXz!4O{oB?waFR7YNpSBzMZd`Eix>WLt4 zl~SNG^|;GJ=^(rQfuF^%RWfvYH)oW(nQ0Ec6y9KiP}8}XC*E88 z8tz%J9$}At;;lXi7M-km!4Pi<#sSs``Lsu~WzGCCWCe!CyO{(7=UGVvnbfdD4In*; z3ns)G6K?&IXM2hFZ<`kD$tH+`a{>QL z-9^>$n!-{DM}T3}dMdYzGJr-;p=F85tQ3KF_AT?a5Ib7Y(hNiAek8 z4|qtfn}rRqLYU}MWPq2OLIq1a3^DG_H&w}}?PjFbEgHgtHTLLz;D@D<8cgiir2IhQ zg+uR@0K?A#tZ!PeZ#w=%4zDmG$+=qM@MFlJb^#+MexTj72XM{k-Dy?s`HPYNHsA%a zxn&bYK%g4|jBY8HY(KULc%Nn~x?Oi?S?Mt>50Rnl-BkESJV7))4kuS7b2>t92>|eV z@kt2e--pvKJQCFmN!!}Me(8X?CV;99-S3OV8h-jhc_IJT|Ef0xBlaNvy!Q&@0wpAvd^;-3eGb}bN0Lxr@LPC9DKy)&w z4h*fyErdAwrwy+OaF+lN=>N&?z?9HW9YcJ?9%yPF%J3Boh>L6jwId9)L~Bf^;EEvK z+`E8xwiyDNMuGfE6W*+MHo()m>ZT__960aWI)b{05#E2*_zwM>8ed3XZNl4}8SnbU z$)Nn0N$h&o3Jhn;M9#^Oe9LYFa|Xae?bk{$<`VqCWA_YVpnYV-WDHmc+lbfVJAkJz ziRA{x?2`+owD6CXx1e%~iIzvQ~y5hbp*2bn18~(fVR4VNglejvo8Ule-z3DAn+e>7lSK+BSQqiA9($8 zqGJ;wpbnV;i&;Pn7Ex83iFOK(222>T8|L8Tl#&9*nLrd=Bqj=d!^OsKszQ)KAvC4_ zCwWAC!*X~tFYpy2`3@?-gUZdRtiB5?zh_APVfM7YNMuElE9lgPX&49LHhK_baqkUV_lo)-rqlbbn}+5b{I@D<$zCpeGbI5i9!ChXZluhm)!U$nyOawH(Dkr1 z&+^1KmvIVovI8+{-`WGit}#>t2haicH8$G-ewJ2IJR1cZEMFW!DHts4t(G1-e6D*@ zg7m(x?%Cpt3RXdY`9M;8s(6~YZ1)L!A{8It_<6WFL*sBcDsJWFJH>HkQqe!dUD_h# zx^Ry3mwCc*pypL}sh{%iduF_|`Hp#uR1*qK>CUZrjBr1yiUo-8vW}7~knPTkkWO6V zTo7y(iJn_}32A`c+e%JMz0L{{#vh}^J6z71bmj(3xRtf!_`JY;=Jd5|k)Gp@iICN> zy26vRO-U37wuI;;$5zM$i0?$k^~eprc88v<&G!5MUOQED~KYOyjZmF~<$ITR5Ai zbfcfU&$ph-C+SZu!KM5W%dtTi5mvEU)OCCb?+V5=Gn&I-Vzs##4eP24nbf7DVB)mV z=C2WI$(Z=;?72^xDCN+*-M=G2cJeNIo*=uRp z%ffZ6ozz?CB?-c18Br*o7_B_9g_H#$@ke>Xi*tf^gab6zx{XU<>Zq})n`4eA2$b1H zu+|s6AI}~^PKZ$cKy^iqh^>M9N^%q-41E<2S?!|!IM9Ff5kOxee znhG;>t|UDi(DVvWqZ!Z_hNlD!hbKpO$v>nc&35ANN@|C%oB-~< z&8sKq3QP&J3&6d1IlF%+EJ)3hP+{Ir0@Szni(dDQF^p-1t^ll9L&W)A`J&e5BR1z? z3tL-+{Ck;tj&Jz)z61Wf=+|t(*8!kvR%-b4ZpmBdl~?0s(E@;Q3tL*yjgiwjn%nFR zp?1cb+lp=haNLJPxa(Bq4B{-IEO$PR^TGk_?&e)r4lxG$bzx0GaNl zv#+Z4`owBqph>q--|7L6gU2Ly`{zJ}3p_;prk%g0 zxxc&2yy&b@0E~7A+}LU1#xQnp#25w`E$ENidzevT1ovo{%x+<@+y0-S_s=@_vsO@E zh{ojzqAU98#J$*lR*C*dLDZ@uDRZqN)1+h(!eqd96KM7}=XLwauJ?v^Y11#3h$!#F zv%dp*cXUrL=@}8d9m)Y{>K?o_wJVkHNzF7DE_$s(Z)V`4Gmesnt~a8$1D&q7&2-@d zHExh;0M?>F^u-^SsG%6rvpV&x9cbKofr|B4v<#nz=)Z7X9r~^L85w{Bft+|92fpEz zaF}0+GFrlPEROG`^#ZZ9Y}tZ)Rs+p5fgP(f1ys6`pf)^^ph0y;|F)sQg#_f~`<*P* zq>8>?Jg8MQCoi$KCO-@md`1%zr7~d(cvs*9ZyOARvvgpLZy^W(n7s3eUpA)b`n;UR zhSh11KuB-zmSxN?W`X*%dd`|js#F2YC+~e<_IaQCkfc>?w9O} z6A`Ql)({(jB&y82fixEKIp173Sf?`GNxI0bnS)uIrs8E;uIUrRXCNGza}b(#wskz+ zglNPt)A-NN_4e_@JRrt^ud`vr65!CJQqlZa^|mmHM5p}0;#>Vs5P{S=$mXHh8IiTp zRb{lJ2%+=~?-3jYhO@C0D+rkQDeH-5M4^0eiRm%*voDdgV+PFIfpYk=Pyr>{{KvcJ z$0Dtxp@3?20j)tZsG*<>%ss?Vdj(J%`G9KpsjiB9|s|6o zMr-aX-N~tLs>tct-|a}gOK6xLxHtw}9fIm8m{2{C1#T;R)Klf)Qy4d!5PG#z-!@J&r5Lu z7fWPahY~{A(p>IUWT{B$VDD#;`?hr!6Cd}uxA6L`M1TnWZD1V*wQvkT!@CfrKK`AsMBO(gq7i zw~Qbn5J5sGW1^r^qS6AP7+Mqvy$8tu**l;(Iy3Km-*wmhuX|nVtT~Wi%1-vq&iD6u zK3}`BFy!MV@mp}0(N5;_lgPPq)L-g;VHc=a z#uy5`TiQlaD~sxLF_WA>16mG}U7vOkBj}zsa;b|laU3_2aMXNO7v1!N2GyI7A|Yj7 zonqky#U1OfTpe?>Hd~W!#wj4CBi7}Tg?(@jiINI&DNmR$5EfVBig`ujj(R_ASp(>N zg;W#U_LMcNPR5HN4`nF>yuq7Dj2TcrJoW;c_}n^OPQvMXeKv*1(Ko|i#I+ev?q-5O zxsh~pyDk#(CZM=?e)qGWpVaNCD^b9vA#VU7Ahk_uG!Z$;f2$G>b@;+t$C57iN}do~ zQKR=Y6M-Y&0?6*upXa}Ad=0NZ5R(gk_)6LSUq#v8UPz(-uc!}Ld!?5-Tm%F+JIO+* z-ij>cSmdJBbfMb&78)GA9!`?3qbSb2@xGO}V=BERbUcX|!Ujgm^ofLYyC#Q_^Q?ZOKSMmdOd$^dhsW7X4=H^!S!04j5r220`=sCMd zvp9Ft2&q`dJggj=P)L9ZXgn z5uDJYFD<8AFbC$KTp68So7=gqIBN~La-7aoHqXneB2k>cvnVsuBit!e$R?9n6 zRtvh^H4k!w+spT8v~?5PS9$ZiyiK#OQ8d>n*ao@gt~DocBp#SFBTY9(D+Wn#TULfE z@Ued-3o#N8@C*!9@<|nc;pfdpvE|PjlOT98Tn($GXFgifVjYcgB6$#8uX2ZYuxq4~=dJAtRi!hTNHG^8{Dx$q?=EQ zr<3%gTIcJ}ZZas}#Ho~~ee1Gj?$rG0=9XEC6>YZIm+oTj{)V5d{OBR*JZ!b4 z@!Cl-&E9UFs^}K0n`ZW8ac6P^aO7G1`0eLTJ~)z8Sx~jrpmxLU=Rii2SWosTUv%jj z$faoLl``PVb02BoLD``=#Cnh^NZ7rjMetPag>oNY9APQUq=6?=u+@2*+rb5qC&q!h zIo_=S!Ev=l9{OxXtH2sIsRsE&GD~3pthbgrmPl-WJMFSlSsZgdb2%%VC)^FRS}GK_ z$EO#wm?!0BNXP1g+uB0?6^0_LU)lo&cD<>pf&QmoNzEwwi<$~Be5fQy#a~xoVIV$w zAdeUDGA6_1q=H<$Cq@D5ZNd9Nz>A$MwU@Y3G(#d<2{Z=#ZPLWr(p$7J2m*fNhL9}& zxhiGv5H}tuOucA9z?=KH1Jb-YwJe(w@jelM75+l}t-56l?y}$(r-A83f+@)4{Ylb$ z9g5-8TYi67Fuy^~6CD-3Tze^K97&>tX@IP&zB#(NtkJI~hzX%8H) zwRVsq>2SR)Oa22K;+7<12kkPFuVwnU1mmY!wRm{Vtcl$ZL~CE-+d={=E@K0epS6gRF$e4sS>SEqg!i` z^P-9cp+ayvK<1ow1tMURnFvv9PW!+B$1tJ=T!bgrVC?yh?vD3L7bXR>B5&#sY84gD zs~1iZYPMtJ5*!Y4N&zO;p}qb2j)gUC;NDtpZ^Ihz!p(Zwgs}jNiT?d?OzfL-#^du` zP-pF!kdD+5;K4?nsw{_XD0R{1S~v6MCnxKvC}`W1OU-mD7t+C7Oi*WA>xji#MQtO~ z1MT%exuaamXvhwN^#j?)&4TEMkX8H(zkQw+X^#G#m7ocA8bre-c_%cj{Bu5=8{qHJ zv}O7QA|YQ{GBH@jOtsLf8!-!B~2RVT0RTWuUyKw zHvD|Tgx>#-vG|{4yvfe*lt9J{Hv}#AHtrrTZ$B5Bc>S*3;m+Ti7yb;~Zng!xLG~>K zgH3Mp$}!|p=i=G3P9Zi!M87hpvpvd7?(6Cu2Uu_yVG3p~gf6*9f+WGsq0-V9VUr=W zL)hd$d3T!}vboFo=Eb{!SIXcw`^@;?!fixb!k~DweRdOaLFKM6G^&}56r-g{Rt$9c zT5E8wJdX)N(qlVNL~EW=m&y=`l|T^1Lq>|&_Gig`9`6Xup#ok2Vm|q*GYbr!T^|F) zhI|blFR#ex(kWTj@;+kr&b4Lw$;smIDXwxpB#9TEx|?f0$lEZ)OIAZ}=HG(|3To9D z_gt*$Ygx4|mSP^kI2d6rUSR}{M_U!X&k<>hs!Nym8Aj4jh*yy`^!I=-8y7&++xFuz z`BE^(e4gqOj*E>$>US}9@E6Idj;>f_qXPR4c07WxML8A*sd!W zu?VYbAVb)t$IDT@!C~$R!>uDjFHLN*DNh}WJZm-}8ic& z4(0tiqQix7oE>REwEve*@GU9qvl|;5(h2MY(~|ttOAA@u<}bFmZ61_hyy<1XHE%}T zt;Ym)tFHeyu6eEPMRbp3+kn~S%gOG- zmbWj<8QL%2gk@`V zxjHG|+Km4^!BwVxEYU=lMe^-SVtpToLX!Xo|!67Z9KAKUDo6gZ4Gokm|UsoMjAXQp-l! zVN_NPWpaW>;pN7gvC8PY0@AN~**GaFI2}k@s%S$CEJ0g)xmc&3&{^%ZZJ3RJc_w&6 z*^$`u{4s43G_XCa%P?|8WeeTbg{V;k21MbF22O?#QLi2tg$p~)rdG3>GC(Er#h*Rt z1{jUiUU_mMq1R-hZU7YA9lQaf=d^sM{d;i89t9G=*vU*2?Nqc)u*F8B0zvVuC>{GC zM88?oGHVwAw5APVX`A|&DSCNKs>9kF)=GqQ;^_6?8F^ucoH#zzUH8t4izs-*Icn^X zE0VxFwv)7r%ZfC7iymWv%B3yIobp8er5gyG=hy;p>wdZD%|g=M{Mej+x03GIREP1M zEDii!Ta097^7+NH+E^d^N%c`!v;b4?Sc&rp-ivOa&6TFv%@>pG-Dv%jo&+WJ>u%!Y5Zr6!=u*Me_j8^qm#iaVUo(BE383; zWu(&`bvpUaAee=-{~NZB{3yV?ih;)Io8XdVaEWLrtkla^HUZLWBn|?tTy*IYUBOxT zg>5m28-xaN__SB(BT=f!g62`&|G5HU*mXYiNBKcS^v0xd+; z-dXJtDNi3Y$*463WGzi1g7W?*&nt7&8v3Kx)sXO=STLy;4JEuUW-g z?cwT;5l~t5ld!n5KUcY^u&B40>#A0AGv-I68OYY&O0>n;a;(HyuuMeR^&qc59i2M- z1lH|a$IF4&Ts*b$SjY;?+eG<)=ji>uc74&0KqT9T?U(=2Gmzr`J(9rtF(+n*%bHe@ zm_xR}3X3hROSSf~QnMvbD_IGep*?cY17~k@3lt4+4zZsL;FM-32cB0SYzO4Kt~M$4 zaCr5);#Pr(rwgcFYY#zb*MpwVSAObp5bpOK%(UfNYJ*xi&-6?Jc8Ebqquo?NGFhuNv%Y7FBv)^G-`4x~9&=Yx zqPf&YhcXAp1d}?XTt>~z=cp&!?OM6bNaAFpnG9Had!ih@kZ<*XK*$!pm1W*q_qc3& z7!7-anIj)kTGl`SFQwJ!PagPfT}qse8Ax+owHbt}y#|GLAkD=O)n`kmQPs4%`4KI{ zF#ilo!t-UlF=!bQT9@!WRnwZDf?@@(p zVp)y$IwbBrY$X_H8^ms2;BY7r6MV7IzWa6~cdn%^!Pz*EAkesotd7#W?auTWKAO%z zB#-6|pRk;GvF`rON zZ!(`D&K&nN(3bV-N($^bH|bpGK1y{*w>2-B0GgNKT_Ft8*^8$*@eQ5Gcj#tcgISN- z;j`rtW?`<__CxHWm@a~`mKA9_uU4(>OW`k*F~{u&6FfeIzj355N_WYs8?jtv&7q6c zcXPo!2wsTBJ=X;>mOTONjpPObzW)#DfgvEBc=>U0t~FgnqdsaZEKJT0@ssW=q$DyA z%Fi}r%Z|7o4z=a>E-f5rjSPaZUlGc8f97{pi~Ln`)7{Q z&;KArtq*3;!@KT`67Y7(n~p#u03yEHu-ONgr^2( zUrB|Y&xu}j3HN{hiRk^Wm>O=%CF=V;krw>7h+G@W=Lu(L{u*!k3PEa(28$ZYTh^9! zSaVpJFY7QX9*2ZNTKnQh-zh~(xM_AU5+^=&Bdo28-xbGLk~x6qbjE8j-?iSRgyN#2 z=Lc7nGw4D@n#l% ztu-f@xhp%0L3O`qd?&=$MHMfWN$33|u_6mYoc8SRpwj>5;) z2S+QdGWRW|IDeEZj*&`5P~dxe-Xd0vzx>5+1t~011F)vSn(q-~x0M7O&1d~R}1_opKhln`<*s5)0_}F*~qh(Gs2;V-(N=>Y{`|ELKkbY z4U|a-(PD_O)gqV0Ld}*Q1z|~w9Y-vnls)e$Lz8xbTLaB>=YNdI%T3Z zbBX6+s1C%5kf1XS;dMEb!4Cy&+|}Vah12mcz{9&niPJe(%~l_1Q?*4WWo}ii9d!a1 zd)5G>Ov(t7KydXnq)vYQuxB`zaQWtT((ZZV)k56Y&bZ|Xiu?Le!0(bxs&F~c;c0zG zeXX;a9MX?@`#${Wxg*`IpmT2c>yR?*NXO~AsQf+~jSPMU@_GZ4T=|q5mI5CKoXtr_ zFwPRI4iP?bN&n3cmw>l7oAlJZFv&A6Nri?e)DfUw94g`-*7(h(?Pf|)hSqc%ty6<$ zwcJ2n(#y`aT$4Y~{~o<6XBmGk5f%nKAKmvlsfCS36zU)$Q#yPD3Ku_Cttns&iOtAv z^HQC3FNX2sT*um{fAp6HZ1B9g0@?p+9!hxu(D7H2^DD{uwZw{N9QfjY|KG`F|NC`h zW4%iqm<2s`)G*Zyz9}WAk(vI?VCh-sIY;liNt%!YGa7HF^~&eW2tRp69Yt3pJvc=R zr*))POl#_O4>LfxZV`_9`#+YcjYx@pPVK)|IrPt+X#J62*wMe<<-CI9>xNzEZ~k0V z^ncCUC(gTmjpB>hW{qS|#Lk7t7FIDnmo4xp-`0{d$jbjf9tl>cnbn#3&^a$8IoRtl zY{U5B=o^xdHh1>6M_p1tkF_b%4>iUVnLYC^VL04*ksN{nGsa5)0Rx^ZPjl-VbXr>M z?<5fYN7jArP0JVYWyZS5Hb4EKOmZgtmBzc|f#aX>!3l0PNx>}_t@v4#g(3#!a8E0RTWc(MzY#d#bf$nwlt%l_o-Eq2v2_-(;`ztDR4X_j=*j88+B*Fb*ltGT02oOg5J2gAZV%nRA; zN0^tF&z{qt%V#&?3TBrZR$7vEuuc=uY&SX(%x*#alE7Zxyt4#}5e?OPUcJ60`KVLH zlgIEjxVVjZ+Xi;CnG;aumbbe%FCfuKvREJ154R>3u=}$Ktq+eBZmg0?q|GilH6a4bjP2gdftzIUB9wF`*m@j z7o?4qOAmJv*ZkSJAay(uX-HcwsB>?pr7*O$f!(1)E$p?AkLR}l>XNKce>}Z{MGc&+ z=&ch9^x!@J%6_in7`gTZ^C)?&K5K8JlaMhk2~AuHvPCvX;tJ(QSoU1vde>t{~TIrz}s~x`qK`GWMQIy)>X>)O=X(PmLbvHpqbOJ9H-9HcPeB16SIp%L6h(@ zc#ZT0*D;G2DIjpi|D*P4C0ZOAL2%u<48Dt}WU*XX319M);c>#ZP>F_Y=>?T&32KS* zOA9@s602e6U9V;IHW5fAejQr52qcD*ox}FUEV{vtKz0tZVe(;bIC)7@awpZ)>>v#4 zKVcEJb2-9|$Q-KTwDat^j{V%6`-ha(NaLnmF;0(Obt+14}L2L(ET?C;;NNt&{ z80p}YIY7Z{FlG^W^VxApWr}+gb2w@pqD8o$Jw#4RR5Zgk*~i-;-UPLcpTM{7)pgVT z>P)eXp4H9Q%1`|eX>uYyRq|;!0lwc$2UDfDYk4!~F5LItxhuzjuH7~^JM6>Z{uW*T z1A_>(ZF40;+pc%We*FbcLWkRAm6tx<`&sZ}<=jmoC4y3|us+vSB8g`oon)4g#qnhB zcmdKZrnL=A?shk6kA^twGgbqdyW1yphHXFIJA zZj8+Q&p8H+D;MiSby+^dWv=?8M878T8E*3jT((Q!UNh5uJ2lP~TFcNMh6CBXvKugB zRUJsu1rXM6ot}9+&YefBo=S&{iD4pf1+7oGf#p4Sa3)!s9Fb>qhSk^G*{N$O){|Kw zUr4QbVh0k-cBeOxgp`U{?M->Ql4?yW**`=yZJ^i-&scf>LIVOQPAn_b~Azu-0Cr;>oS z)xYOr1wCc|l?0SQ1o*Yj)_MCp{JO*zi@D-b_=~9-7-^*^dIq)#(0A=FBklCzgnIk| zLFXz)&cuCWa43zRu^R@&b8MAK{4I!6HC3F%)pJL_x2yn+Jxu5 z<=lZ^8*_Kga0KV`PUQ`|{wn?aat#@S2x?;Fp}vOTRinBs1Ed8v?K|qUv*rHdymghx z=2G^*5nz`d3(nc^BtcDZ^i75Ww&#|cL-cm+cn&PHd{7p^8^)C-*iL#PPk5(wAU8A7 zMq@Sl8|)f~B5Dvg_6>5QpZ>CQ2}6%22`dyvo3KuTW#NjliqUfd0|xOz58!!@Case? zKEvBgkfb$pKEQMZYSrBoaL;VNv7Edj+{YJNl&X^b`wU30W9^}=i{@UA%hQBT0&pdW zJBdF={jw}%j$QISazRa?yx!?p1#F1y=1gyT=~;(0B$)lT9Z#3kpFhALcGm*%50G5( zl7AOl&IOfQ?2JW7Zm$Y*4#L3^3VZ+BMX)W9eHC8ge4B;XDxj(|AEV5F%r0>^(PC22 zpCe}-bA&4Sd-K5zlt86xGt^1qxufrKFp8GUgHQ#GEsXF6(B>HTt8$KyGEnXxb`+TO zM>gDF$q44Hvgk>bUEfWm1#u>a$WHBK)xeBHGQXK2y+tIvL2+I=t03X3$755G)DI0< zd!F3|5}xD+U1#%W4*NBmJg=l1&p8MdhLUqhr0!3J;2`j?OGl4Yuw@ay#iuo44ff4t z?q0~jSP72QpGKA7Cy)Rs!D+Hh-(R+eF}9;M=hy|t0qvd>kw~)0iz8pOJ-gHO9&G`1 zN46Ha_=^P6NFXU-%|H~gJL6Je3}^>>fDHUoEP3MNpCGZW5Thj0jN1`gi9oG(4+7bs zu4OkvE7{!Zx?uYL^NO36jbDIU8iRiN$2uPL!F^V*^Yt$0yMw-N*gFf7pv%b5JeTMe zGy(Yf_E~7c`2YESStX;rvW~*i0r5bAomP`e86q0!F5bW?$^7P&>P7&3EWFN|@IyHm zpLaxPBBzPCHgU3I^oK_dC{$Xd>8cff{-yV=uSbWkM~97HKU@&j3;Eywo@3x?qkgaV znP<3t`i6tD%zOPz)~-Fka`aFXM+}w}GHZ;b5sK_{SlT0Fyttqbtz zz^|;L2m~IzO7fcs)DiV&6>V(#S9v3xiS}j*U=QkPYVM`seyvN#`E<_Q;#LL#&S`PJ zJMG7QqGA99g~!GRv*Dz)VBmUvKudBDHT!4Nk%whuRZc5X#oiXuJDH~=Q0z~ZP`LC7o@%N;;{_mUjY(OZWWwuoSL(OVxDB~K9Nu7zicO-UqBwu zdKn5@4(3+l&s876cV{?HKh5%?_>l)Q^t}gozTHG7&`DEqS`eU=!dSl zfktJ-7T~J=9nCHr9H^?(EnW>hR#alxyUFEnI&YU*EImTL0ksBKSlWXY4dlPo!NRc= zHms)B;+`5}u}r+zb6`!?nDbescZGgdy|V0avShd{LYM}WojD4kEW|hvU+8A|S7l&F z_5IfS$b&!eY36dNy@He4Iw?@NzPe1OR~EzuYg6DW{4f4coKe}d($d>ribxh|`2~co z2os8*bj@}f3S^gAjfQ??LM>+vQ6}^>Frhh_0{yazKCQCB?IAJw_qNy_B-n0`*y2D> zG!qk#rqR118cvEie3NcwHrCBK+PF9lMKrxCH|Cs1nvozQo?|(eGQwgSBZB$M%N3?Q z2b-Y28(ld;c+RkkyEkEzEGug8+cfVL^=?ht_J!&znnIcr+!EGHjNX6ad6@S&uC?#f>(8Ye%_|a{J7}F&PU08oRL)MpZ!hAT zV?n1h8n`EA0&t21GLHq7QpVY;RCSc>o__z_6TTuUruc&X?jraww zmO6UstH~^`;kR0AnHLT{+6>WCQLsxrI$IptFfUjZx;(lq!Ct1nnYp zZ(%H?Ri53_>TG9TpVonyLoC~e+Mcuv@wuvM&GHGCKe&TNwpl4$Gqvv*vzI0JR91k1ld#NCidXmLN?t1%>f&9)dLVt$ zw~jSMQ+MvEN9w+^$)aNsdpHB)6e=c&?ZJ|B0@p&;koB`*UwKZ(At8p^-GjlBWoLE# zY6u3rcCq&UWjbs8$DXu`eQTdioXH#@CW&cspXk3H>OLpFIne*Td!Jx#z!RO^-j>Vl z4OfXinD^@Pkbrk+Nmt;V&sh7sW_cn_T%@}n2K@g-dDa1@Xgd%nUB#U(8(q#&b2wPO z3fSzN>*IGHFL!))bqokLq>;-=@dbCbs|k@1@18?0W9pnLmoQArcTi0kH z;gDcbxTTTnV?lv8qV@*Ot`oUWhLE&wQx&~YP*=*NomeSdJ*4|P1Vv{B7@cfnyt`(3 zZS7LVQP(!NAT^u9-ALmNl4#k&UPu6c-5h}JTF!NdBe$$j!b9g;-q z__-}iA`5i*F;#O(q=OjAMO;}C?*Kh45Hm&RAp~o7L@-V>UVZ(q<&Z9sp3;y==PCGM zm1Vwlfg+_?F>6l8G)3?8Ao9PEKTf3v&xj~whLEgZMCBoo^3{aG?C59_FT0229l5=N z8V7A$e9zbyfS+db71<3De7(+_Rdauhfjm#|%CJ4z0-eBLpIW>k7bF(qQg<}*ds5dz zo_A1!bmG;pI1-mBVx#lX=b;!pKZ)Oe^ubv)#`~+`{EEvp5N`sPSpp4O+jmJ3sWDCF z*J2ohKO8b%kL8pqtU6)7)oW5DLhQaUiCtCKbxs_#qKsw%!Q}Vk?yZ5AmZDEW*@r$1 z+f)067~6lYe}@jqcM_JBgJ=L--v*Q##Cp4yGomo|8zC-DZwO^yLSfOdT6D~QL~4^+ z8xoow{_@zpt={jYA%_mj!KQ{g6R&7QGy$tf5}D7^FNrll|B}+-Fd}ZSsqr1xslSD6 zo4Rb#44LpGwEb2of6I}*n&($`{Q6Y*Nsp=Lc<2VbtaYL5ZEt_?ttOzPa41M|@Aum* z^}?je7>ACx;k+)#K9{(AS@5nN-;Mp(Jxj&+U#M8ODJE$w_d#pR=t&P9KSp6U8z1Xe zHzntnR&cv#1b(+RHh#S>3LDt&_?^h+##{aLs+!i1v-?v2j^6M{Rmsr@^{Zmq^+{X1pZO4{-V6A7)!=5Gw3HDl@m=x*U*FM+#1ji(iIW9n*JYD<9ND2+tQw7!O&FFmRK-pN^N+yx?o$Q_RCRmy1!~;9h!Q z9jH?o++MVP%Ligkb2MUV@ttZMkj*0E`Y@bJgAX-X_8MJto>ZAQ{8mdcx`J)eXeAl()1=} zvMT+1Y%BNDR82b`%BGg<{*-%wuHa8fH+w_0SPA#*5f738zL)vww4Lb3esYX7X>jZZ z_1w`Iga{9X=i*VGJ7QPj>eJ?pRBahW2KSIkq^fS3)Psz*AnA%ZDr3C?tmxBA*5dts z45r=lU1C7K+(v>}Gs-=oOsf0&lkP107m7=xXYDxZ&A0aVCbBh18o8qlQ#Tx_DP}$H zfMxE<8>(irE`YOIAEpB;@24NVejyDCUC%KJPEg!MA#m$khiF$hzcz~TB2C+1wih*~ zQTq-FI{9qtLfKU~ztZ}C^ZniJOydXOVQp!Ht<$uUGB)P?#-fLqU`}?;>ENz3@Wyh~ z%i*Nt0!U6+A8<@gj)es%W0ejq69ER+_Hv52;o!hQCnoFc9eBXt+^u{l?`pnA-Exb4 zxRilm@`o1}d6c|6a?f*246VNQ9*q-~WwF6MT`$zM(CK=k$T(B8u7U`*ni>6M+xt?Z zrqSOSGD+Fr!mHp)A+5sTF0YCzJGSZmw2qEb z=lg&1E4F(@6n}on*))(eZh0!K|PGnb8_?j>&W@&g3ZAD`Rhyh^`-nj zwO6v9M-o?-3pRcJ9mmZOD3+goE@qhcoXdyv^Q8~ z(X))#nKO;Ho~6nv)OKmIXqB3c@+%N^Acy6@Jvw~YJs17}K=?l%$#}=JKm8Z+Z^MV! z-|niP96RQZBM4#pPluJyp-<#k^Yux7;aL0O#r*n8E?DPT__joU{vW?x^IKeB-0n{D z>slR5*#u!`C!D9Xh)`W~rPh+925%2onp+In;TkA zty@&G8ZTZKc~)A7A81NeB3_riyRV$N!9+jGZ(0s+C9!y1h*~!@YdmrI<7M7M1VOX$ z5~X;)o;$-;Q~O6_?n~95A2OPJR1V))M<=xUmza%D+p7Jm=gt!w(y1;@{86~6F|C0a z>mJ8eL5{U#p}eNELj!9&^g;*~_RCP~lv?>YKU?5h6BSSN?-^Y;a*v3S)^S>i{IjO^ zOln<%p~WT5wU)JLLXmsX?~jwH;E}UnDO!qhnli=?rp!LE z(c4J!>MM$AQHL)RS#kaP!{b}@Bl8|c{+zIu6z#iSbIFFe>$j|m-gVO}eWTlxBNk(W zA-DFM*Ztg;6JGNjvTYPEZE!L5kE!2%OhlmetTcJam8WNy+ad$;OBo3d*oE?CBn6o{?F3G&0tNe2U#Z5j(T)1)dX_yOa)i}^kn9}Va$^GiykBUGa^`H`(*pC=n;INFF`kD6 z?u(Sj6*)IkNtbJ1UUa2CnIfco3uEK{#$lO-DiYc`meHyX2N_Yg@A~z91XS+sH#ZSZ zyWuA-#IZ&G%#W;H(kH`wFZ7_kvl4Oyh2C89YN-{AMnesQl)D1Evm&hi4O%^gsq<)OT|$Aa$~Dfj5~wNGr?hw>Z^h^zBJ+sDjsoN1dwhnhg0J;(q1_`p zM|vqHLAAtD#=GCI&QPXK{>layYrYcEK2d*nnn*6@j1m^cg!3>nYO#p@)k+{j+O$OC z%F{qL*FDcHw3@GlIAQmUqp=j?I0_SiIu!R3aP?@6HsT>i59P#8AdunH2AnV-+63wCXA5!*rKW&?l)uKKJHSP?-O;ld?FajCsPU{e zPBUzBk0JL3{29zgZ>uUwbivOI=dyy34ZRrtwymP)JuRJ}y<7EowBIy*DHU0Ru^iVf zoSh`lmLnS;e8jpi3(tqqj}o^6o7o(ROnUiX)i zq;sWO9|3SW?q@PH9Pb>q(zjLGFr(*R$ekTxyFZ+5hnO|mxhWx8-$?{anP+u5!^;#7 zUD$pcr!vKQ{)Fh}eA;f5^?dB&S^X`mvWup|YIVjdh~rlyaI_{;{II>JFI+x6^PlOK zjosA|nM<9-ri-@1LpUEH#L1Y@en``gq(`gSIB2Z#VoU|I@0&vXm&GQ_Bi(=Oy4JIH zAEQp*hMwVwic?Pl_iB7u7sCvh*)8gP+_X~Op-uZ?_|qZ z`zaDt4Qcj)$6>BIA;sPfbCAJx{cT6n7)i#?*0E3cTf8pb%_NUff^+a4ZwFX{N51d6 z>8IOqzz{Ky=C_U8CvlSV4oQ*vJ#}-m7<(9)nz}8kdD!1)Q%+i#{wok1ht-EY@fbO`DURoU^d?_ys9{nn7&V=Gg zn+o?=b?5J*p$HUO_18Mm2I_eB(;F3tk#(msMI|vy!q9lJddm8GL~k01zGzuo=h30= z4Nmgn*oxOwjaHn4JaC*G54wuT)y6<5mg;R8Slv0u zf4~jcRI^Rk=sobdSkW`iBd<$x0B$J*@m=;k2cXly?XC9tJ*nTq?`wq^T|XX^L~W+( zk&V8YW32Sf5+ZIsJUvxafrw7OqqzUvyWwc%jjQ!6*vw75&778a>>WF7Wd*$oxW!-| ztT}tc^V`L}i~Y(-yL^0}X#DKA`N~trQR$prSFSqVAX+TOndPcrOGzx0H(W*9g!Mpx zzPmvDggnMAi8HF-Jk$cz~f=r^jrrioPn|%cX z=gY=fYs_z+^DnW{Fd}@MGxuHs8@c6a9-E1DVI^G7op}F#q+JCb1nvkus-Lca^_8eH zDzPyuu_=U??eJ1F9AX(glZbDEAPdM$2PH>k1mwJF>-~E;Vk`~)LlV*|QR}$TCLFTi zmNJ}zwc2|cd+Ik~Rl77uIo5vl1b39WEWT`fNWoeI0(YkjA1k*%-YsKv;YlKR!FmrQ zC5>B6s!H1su_Fivdn)4B&2Dom&b*@eVE#pd3<&=I(;#vaR%uoBnWuIzLtX$gvZ zdpr*}h~z&?&FRdm#cp(is+WDxw{#@0LkrClANi2_!S_>#aX?O4)7>;gu6pD1+6u;8 z3*bICR@L;`!X9{_Ajj025$~wEmZ;>JqV2TjF|K)=bs-!uck(BGycD+nhezuUQ2v+F zM82PcFU^V!{4hz#?#oi934BcT7=Sz`uhnTb248i7$b-jF-pC4qj;A8s6Z_>2QsLv1?lcNF*Q1 zo2D^l9$eV%l|C7@9I$1L!R z#T3ZQ{XgZFpQLZ|N!)!@*3!lk{pT9oIFQkt7L;@ys5#zOkrLYP`dgit5gdx{X83wm4dMU%KjJAuiX7|y!i(lV|U*CscKN~*mTA%;$KmGvheOjn3Wx((@AMK|PR-`dq zBw^)q^kO+a#k)D;W}64)tn^!68p#!4IVG$h;U{O9!g<=#x~D~EJ0{1|X8X*fMq36< zJG`(@0Y29pfksd2H5;qz8&< zPwCd`kUOKbr4@q9+ya4=fMrM))MFv4urm*Ysm`16P91+;p~cSMDPw~wSBw)l6u$froWEmMHS z?%D@_lSE@$I@BGM`5gu7R<_psBe<_fcD09=;-y1NyogYir2qD!pnNA zJ_%pg&BXS9L5i{#=&>vMCo8xf}NbbxRU_O(f|!J+wRf4 z5037}1hfAGElMih2R%=&**g*sF-CIU$RC7MOIj~cGN6BdjUIQCMBeqJ>@7e_if9cs z*Y=odB3Xten#0-{ z@EvVUywGTMG82=(Uov3eDh)vzbcI3g>As>wc#n9xK3#iS#Oc0ec|1|;eHXjzHyZ+l zX1Zc7NIxAlpTT)hLt1N3wE!=nnHx}Ukhy5gjX9cE0(6_j)YEc8cH?F%I)3cIa9X{& zZZBN`r|i#}ra{?~?CMSG?zW4$HhHAtzDBN^c?<2(dfn6EcSZWsEgiIiLiMoOMJX|6 zjUC zx=dDC+!;hO3-if#3&q*y z?xgY*$uhT;;)%M;Zu#(T@!hJKk{F{kLuD>Pw_Ac&k8B#5D@;)&PtRl-MUq7_ylWoE zG^kzkIXiJJva|WtmY+m0d`aRNv(p_@>r640GtKBNRa*!P3YH2b#)PHFNEg|kw@_## zT}boMDJ`=GjOGH!M-!El#SIPdBm6S;op*R~rLxYds`!;qZBO%kGEu-4PIU7vR&c6| zf*|qm!;@ova=mfLwc}a@-)2L~MZVgeAzK{GQ@X#7rn)E{G2|Xs^Rv9Kz?s-|1QO0m znSq?AfQ2eEuTK$BER>IGqqxp0SGaiGt9L%3WHqhs1Nt(c2TdrsTYC$Q=Mu{L;B5UU zMc9_sh6Uq-SaEh3i4BpZ!(;|QO(H#9r$3WR&k?L^-G zctt4D8X@J2R`AnOR(n9c7q?x?YiEt2&7IWW^(p)LK^af@KJM%N3e;d7_ zM^o3JG>XO)>DScqF8qO0Dks~BBujVvna>CAsSv^?1kCtkqD~UR1uzGZprB8d88iC6 z)W83=;6@MUsX-O6&RKE`x_9Yph{rbs=VBbq5{JEcai*V6(R6fAbp%LycTad3A#7-i zqGtDl{wGtut2g;wRt|6=Y#X{{UFh~U_Jv!_ImXl*7Dq{2kY(CD3!e!MaLwpDCu9@D zxAXZ}bN8^>T&y{NNu$SbN5OYF?b~Ttw+pnbHSBrSQO17ThDhkxdoZTVdtFdrAzD^1^Uu6xUJgL)r0?#+~Tj}mq^bw2IK>SUbN2pvX}FC;iXpJ(o@*SQ%5 zsholtukS>XMT_1hh^S3XnJN03^ymu;5|Cz_tO>0~Oo^9<^B!pk6Su5#tti=W{$2`_ zGnxv|k@3%$=QS-vJK}@Pq0&BUO&?7*Z~Kc` zYHfL1NKp=!sH89CL<o|xZc7_DwT-T=x&Urs^5VvO6owtIxb#A0x9+tWwUi!DS#&(c;b{%-p z<2rc%1o}KG-y$VWW2N&YPRFGYz_IsmC_@T4s$KJIn_)&P{jB;*A37 zvdsf)mYvIJg;{rayYlGLhdjDe8M(`9IfO2)Ouw`PLQPKT8Cf*Ky|a8W94Ab25;Ufr zauQ-lWqz1uA3;2w#g|!*`?E1K$pjDJ#SeUuOak7qJGT?H9+-!T;U^z6U>bs_SneS3}@>L70sc)R4R%N6~5 zK+LM%lB{4|sMPu>eR)seY<8US6F}`$VW&w(T$<;XB85yo!wus>`Y#}-ByV5vgB!rGB(z+t7W}!GacJT`9LR zG@VWH6QM9ym2$doBDcKP;xTT}1?EmT{s;8U@^vIWB7B(WjIjZ|t!}u7Z80Av?>#4-(b+ zY_?Ag2JeNgyP7500pke!P8aI(?9#}ED!}Rn16`>MMuAei_M;3pls?Vh;q7qiXeXq) zC;=MPh47VW1)eqX%&cl)Fyn7D=bswt4=C4ug*Q-z&m9aW904~;$QgV?T|ol>PYKc) zQ$T3KNx+Mhn8hB-ckEYRR*wzY7uGZ+v)JigaP@DHeX5@v#Xm0lSs50AD|PSaIZg`u z=O)25NIVWXs@%^u0|tIAm*6qWc@_+s{89QgVXEl6Fuv0T8nEW}#oSid+G>saU78tk zwAA>K-XdjCbWoCXt;ZuH%GXbA@bz4#+e>WD-(O?WlmP+lNdW{(>be5H%=3jwT@b4p zkbBqSEn(rIZ>geGZAIgbvJ;W*ftS19F)x_F31l@WMA#}nSlq%L%q@VW`W9HKA3g*| z-p7o8xm|=^I-Z!mbEU?5Clb1T1IcXcuL-}Ynwg2i0)R&VQ8FV=rhViL93or|bRBJR zF+JL(cC57-LaVw&3p*wGR;@x_r=^So&OE7uQ16b3I2SL3|F=`3DErd zY&{#RRj4-7g`!_fvfkY)=iS6y3_4Y@I_(oM9$u+0zCe5ydXE=^Aa`F2%elf-0 z{cgvdg&euI^0QCD*S`QoU+;-t`3XiIv-RXBRQz8pj|mop@>twEyrn7Hp+}!W@t5_! zc#OXA>MSoxpL=!uY_HUQvStT2_r*0Xe}#>oi~}eeJ^Yljy|eO*G^6AN(bo&70g_@) ze@esy(m#jSEm$2m5c>5c1Wx(?)Ju3;re*Afb9Y@sE!n0_Ipb29TL1)(Il+P_Gdae| zYU>0o%4y{=H(#t6G)yvBYKHOM?z_641*g(2e~x>95@~UHGFaPxq`YK25Q-}-Zu@5_ zNFX%i6vO6aK68m?hAc3UboRK-NPk5Lz^a*Q+!M7r+)Gj8L3`(5)n^ffL~pjd&+Iny zr4c>L{A>%5c-V)4#>2UNo6FMDod>p|!Ld<-Yh$f-4_-B(^%u9-PMS==S`{QsWlP|D z0j@IA>ik_bDBXsuGQI6#$l{0w`Km*axL{J|xLl~^)R=lGM7WF}&wA6vT zO<@sRd6)p>L~t5m>|BjXqRS#38E`vh)N96Ff-zNg94+mR`y$GGirYi|j{S?+;I#8I zH%MqNyt?7g_H*vNOn==*l4hEh&b$5!7$mB{E%Vsly+&AY(DnS$@4F^l)SPH0H7b_k zRfSg*uSIApdu1%;WBRqCjHwnz(gK3t1B~q#-ikrv3xu?Xi3ZCVT=7I_GWb1R8a>{s zhrsu&!88p1vA0(CkE0ys@9wX{C(fx28^7mWHBz0KW=T6AxqAt77e8b3DNF!_!ZMds zPDK#?I{dlG-pI^+4Vi%#$ft3cEV(6Rt7TBsL0s|2nNYL9aT>8b(s zZ>R8p-o3x8Sa`p2Gl7n8>m-}v{1vg8g>93y4jFgsuzJK8rJ}b}k!2o%f(2RTZjPhg zJxXUr-jZTgzPHm0CdrpQXo(nGhlQ`fov(b-2#%7EGMBN)r=f)1pYt0n!1%FrD`dbD z#);#N-J=F`;q6pK$IUS>$Jx6l4foJ<00Vubd?424VG?&8LYO`|gcGRQYF(&o#Ch** z;M1(0#V8mQ(>o7dv3b7u4`kv%y~Ta7`~g8B$z7s8!Fy0h zrVcXDis8J1ufu7Oz8Xq9;B`YTU^Ri?A?c)V5}AKIbwQfS z$rYMqU3Lo*YgN3$q+H+#1>dd3r+!9!UeFN`N%D55?;gFz#O0L$$vx36q{gd=3uaU>Z(#jPdHNDRCojqY7bl5K=+tLvsTX~wr6GMt7Rgf(Lo zu{Zo&B*jF6v{*Bq=Pfo*Rg6$qlc@E(*>YEz57`AkXr?wN+Rapj5)*PVcEsmcoPcdr zcP;T4S5u(o9$C3?3bBF;;mv1;@3cnabR4xx5QnGq!1E~<;_RIGhP!=X_DO&td!1lD zF5~@cM&RJgY0?@tl7YQ`;(TV}Se%Z&U{Jch@WC`4eOq7FSuaTG9GB4U8>&kAM!2ub z_pgq~O;wN@ja5CKIcZF3*(=?gn2+-sb9g(5?33gE16j(za#~5YXihYUky?cmxt&uZ z?Z!d5g7_9Bmkcfo_A~aCu4CQx&yaJ{Sv@9H`rFo&4dWNCY`~d~PZ5v|P&17I+sW4J z8HTdgHsQ*2fK#Y;$;Q=}U#t~iq?a}C%vTVGLwD}5U#<3O=iI~GhzqbRRbBCCxHF7N zS0*g$5kZ=6BKOajs?A8b2@tkwIt~o)hIVa`ln$lU_HcjBW9*G^{2wHs5-oz}ugYNb z6%G*4b7cPBZgcboCF5yJwwF_QdAzka+1Ll~_Md{{58&rFwU~Xi?{3MO3Fq2)7oFaQ zGsCzK&fJ{PD1Ssj5<=2u$Fh-;86?Oo@Z2`Up@hJI@4Yi-bW%ygDMrA3Tq!ZJR1SiG z%huwC7=tBkD)95c0Jc##zc`K$CxRl4$~wo|$L(`5o(?6%1O!6uLh6?g9Lvx&JVn+& z9ugC_ixPuJGM?cwyE|)jTTZFaZ{7`-5tQiZgleOhEvv4DHML=Q45p+=gnh=Zn&@=< zDQRSd$~3mWcJ@||`8rbNxIMY`RG%QDi=tb&!U*}qnK}{4nZ)D5Na?bLldwK$7JC9| zxOY7aokKdUnd$J6L(i|IoonhdKmJmLRN1gjzAul>y%kx@nBpYJXQ+0Q2)7FDYZf{X*o>ZwmLoj$66bazM}|>9SzK z`JG2Kw5yf=zxK`qs;TSW_y2!wMMc4?h|E>0s0fte05a7oQYR=yLFOU~DzgY-Fi;1e zfIzJS4h$BmsK_Lc0AZ+!f&+tygh&V>hB<@)0)d1i@3#}cvAy@bd)IpRy`{^gkOXpa zPR`ERpZy)6WXK83Mr}w>Xc1J`|QHj9=p+< zHJ9s)sZdAayO()v?W2fHEvj^*UM;5y-w6Os(LsTu*K|EmanrfH&R}mJxeNYJ)5c7u zkIUh$6>iisY=&Rc-O;f;HrT;oC3ristIM8*9}-7^B51m@JVv*Pq~#9pDq8YsV(>F6 ziR*QQ8rsMdFD|^iz@dbz8@VpbwbouJ2dY`l%b&gua`ouKZ7kb)PiTnSY8+k{Cg*}l zbh+{?0%tSkdAO$8F`sG=GT684kXEXrfY5_yyvYH0c!b^8ULx(}%@sN2;ZDRLH_*2# zkud^~O}VGQn(PxibZZY3!946(gtLYRmy*t~13A+C`L2eXup|EE#$I73Ob@TCyN5*Y zu&6+5IYPe?&oXn}^{V&LK-LP|(8*-(4Ne?29;_M7)mY-|cmbK61F2OrtS88QxhtXH(&JqO=8xhF?!BX5uedpmB|;Q2?+ zr^G66J@Q2B;8jlWB?ap3De9#boelfI`^i~$A}J*74I{<6|Gq&!npr>LV}2lKd^CnO z>HH0B#KeD$NqI+uJ06shB~SgNC;Q~~i%@MO{@}Jlc=KU)-zzJ8)Yh;WOnTq%R*PwZ zi4G_oxM19mP5+u!=Y0@2R<7gNY>y9Mq<2Sa=6ITBD#5Ad)=ji>lPWik;3nX-Xnk#o zWOdmr=F<3G~jJx`z+1@4UCZ;7m=xz7Bm) zLo>?){X%a$o00H#`W0A1Nrl@Y878<{Gw8H__a%4oC4-z;BageWq00);xDSyhr6J#f zD<3wzdv6Eak7|$Vmf|h~{au0y>#2XoYya4uHsDbtCe#|+eFWAl4-lQcW4D)V*Km>h zJS9QR{O!k|HGNUqX_;obsB2x&rhQI?5UH;*nZ$UJRYy|dgyS>jaV-|m?eEl?G{=__{ zoUxynhdAIM{lTxFu+=nqeEo-PWc=W5OYhmSP8s!BAH5R{>1&LqE^YIV4<3fRj)pM0 z(#Fpqt^+b&%13Uvs-xPXvhK)uzdD0!j2O$-`H7(~+^>Haz#&P%0In#>rhp%xio zhvUNp4vCB#9U@6M1te2Qa(dqj;`m4ehuB7s*rFt8M6%f*N#gi0gF}KZVX%}WjiA&= zNg~F35y2k`;SgJ>5nq%W- z62uRfSQ0jZcCBQ;z89?Wk?@9X2u34NEJ+)I*C*Mp?+0CeI;8)j59x#BE(k^~l`p=!Dh(Q5i%(-5`W$9SEW z@vE&2l2{?jtymcD&FaVttdb(7F?a|A4qWwHSoL6Trs_QNp^4r>x;m(g23U;84)u40 zB>~ANoPv!_OreX1rX;Kw9po<&pYxadN-|x(#3k^L70;2F@5{}d43Ays8M1~jNIKHj zzgQ+ZJB+rZ?qpy?yRL&)fNCYEIQM#}h*I+cxz|YNe^%kU>W5ER=rie}3|E#meQsh@ zV3B!RFm_aRZ{n8b=*4Qa^$wqdlJ za9n9AE_agIH=3~Bn`!65=spP7aHCf}te$LrdeC}b-Yr*GUEj*J}aD8ZKmsl?_roNp+ zCCU|>)CYg%?l}$fwgx|r@YLeWflFQo(jVo4e^o3mo88O>Jy^Y1JMjw^4onUQrbkI8 zlVLh{agWt-5kV8a`=~!lQ|%6nq$(w}^Nhq}33>tov9s7j77o(U&;FFWNHCW>vwm>; z2I*;6^ceT;e66YgguV9<*XwHlViU- zd>l-MR4hrguCGZIG6w(cNC$UfU0LtdK5maI9-ZZv0hiQrd1OnJ)3>Sz|oq5$>sU4 zN5%8GvL1=+Tx8%esmB9~!_GD`EAN59+yi@PFqx1R^g1*-cCv?ahVbBexhS3?)FX|V z2aplG-On$4v-8m#PBOrl=?uu+21PXn$W z?7*fLde(-BY8+V8sTi-!Wl@jFCq09)Qb5|g#6&V^U>LJcl(W_=Z8FfA{_oJlQX~i+ zG{kB0%0WlFH#x*uP%>I?K4ms9H!lJI_gKVnmI$5w#kc;ul$hU`gdcKfD0a9X86y*= zPD*N-G&uH+mrC+}dx60{G&c)nDyiaSx}BR#Q((^Yj;#z$ooDCU;KLxE9)dK4MC* zQNV#@vvTZGaSg-(5`N?BR4i@A90IrUJu&Y}a*kkJY^v#E|QwRyr`yao;hfmgDT~)RBGYbi6@ma5rH|_7sLB z6c`qOfb_vZb^N#j;fK9|L#x3gJC*T?Cs!lCctY1y=TP>jF6u(RG2zUXwSOAvN(H5+ zRCecB9xVlovhfdZ+n|Wg{LCA>{sQuvRN_ZlUWL)V*K;GCPBB97`l=dSv6Hy%UkCz2EYEZ~IPZNm2be;|FtuVZUGGP=?)>Lh}}W;44>$IR9(@Pt|}OHL3@q z>Y{_6BOrY?uQqf50qnRl>{`a3LxJqk>YN=EpPF}~HVF+JtYRj)wK4eJL%8FW55A%nZRsp||l-Yae4&AF2j1VXz#paP`M zz9`lZ&m?T7tn$*-RK#c^3vvEp--$TCC)z1dj-b7B%spYFf*a#gWIPVy+ZH;{VqKHo zl`Xjah@|i`yE(F%#Oosd#0p8ysfEujS^e zoJ0wLhPspC-gMio2{6pBpYA{RSr9!&b~QB6BtXRFX~wf6Nt7n-?^Ktz#2_nRT64=N zmJt&3gvI^uH<(G3qI+ldRP9{_Y6_KiHkV%V+Y1e1#oGSuX?T4J{VO+44o=$a zr2(m%S`$3KR~giLJIMWnP9g$u#{6O@5>WVM2x#?xUshZ1a{{t0&t2B6YgzOZa$g&v zcRZ}eMl6?Hhdk+T#FG%$uteo}pzAPsoj_5HVhIaML!HHj{~D@N2+Hi@ONP)a1S((=2iD5+M)ExFz&`y%^x*fex~1 zky!iq;6(Nn>UL8xo~xLN*~|}H=_PL_1r0_OetSjui5T&0wx2i_nZc{9wcN(B5@T7E z;Xu`fC$sASQ8oM?0C{jt-6gXKH|x!}kZvGzww0H8X_K|mr+MTjH1Nj!{s|3yqCGQ7 zlK)lOGufLK6^{ym@)NzIOhvD2{W>1GkN10Qng!xO6{DqDuj?@I0Df>roQ{kV10U`Q zlE|tah59*4jG;uR^hnNE_z0Do4#qwHY@b-H$7W7R?0WRv-h?)O$mC{naZl%n#d?R; ze5Xma!W(1xM~Ixb$O>)paXGQxk{>)Hz+5(?l>W##I-QE!b3IF}w`{4Nj(_#2`lnNF zCf``fNvyYQFln25xQX7IfZ&fDokeK7K+m|jXRTOoIW{!)@R2LJQ;JFelOK{eNfj07 z8MoMq^_GQ+o2CVrXW!^uKSZm5z9p(wnNo?~5?eMSz=Rr;sl)Q=5WtNZkiDb?H&>I6I3#8{ zixNDX7bLRgnC-~nIv%?fO7pPrU+p-o8tyCuORN#0y}Rx-^B=8oUZkCEk~C7LT*dm`09Q&C8n(N7l{sT<~nVL!#s2Lf@pf37#&918gu&kHl#HV5BMp7ka7~! z1$M5!zt%LL$>yKXa)e+^X;uDxaU^Hwg;|r7LvXwC`KjKGt21P&H+kmH z#A?>>*2vk64~=JYg{^*PRGUFOx0kOvE(8grZ?qsUfwok&xTrs18Nj}18uz>_>oO-2 zo0o(0txvkcy%9Q}_YK{Lh@G$vX2m0Ytfk%-j zEs%pGki%Rgfvn%1)0_4>+=L0!)g^q(iLAarZTZ`$7djW@d8Y@8gF9Co&KR9TwNB)R zj@oyfVW;}~nntxU)g}z2U(wxGiZNQ^vU1LRo$66w0sJpBxZaF;$c3%D%kyT?!6=-a z@Sfig)&8j=_y?!8ks{jQD@@TP%$fAB>&0hY@Nz+2>she;9D7N~^1h`$);CyY%UYOQ&u^@iW(Dq~3_wNDD&@nuhJ#nSO2k5(r;0T%s=foP2mzfDDyc2b+!wsR zuzYmq$d$+69&$W-fcs)A<1qX#Kw~zLJh<)XVxs2~+?44YBD2&2tb>>3Am6h@MR~-P zdiA!-l|Q^MMHnk%j(Se~E~aKvv{BlkEj1hazUC^wnS9OHlY8{>saLS$=ESsD zJg9Z=w5#QBk#aJ4)k`?u;_rwTz4Fu`XQz1*?}yS~G@fLyho?L6mqlHTaBFZ|%=!D& zi(?hEv*7lYKcUsCF`K<6ZEofZQ5+;3dYUd%4Ff|uNFD3lA~xsyz?4hckW=NySyrea z3e+zVy3D8QJMho>kwciQpmc7Vhu}EC!XCZz>a+Vhg5^Xc8&lEp1o++jN|k}7%#o9u z)`i;-RVabJ)l*55Eh*AeqoMo6JWiy+}a6)3qm3D2f^YidB zw*xA~V#&*$mZpnTouk<$5hM^#QZF4c<4CC-zoDc$f8f~su@!Y4{lm8#VYhZgdz;dW zZeUMbl2b_nEB@NL7e4ic;TY6+ZVP?q056%qBzLp8s6r_4A}A+$XW0D(-|{A9Aq@iA zzGYh>61RtYh??k-$U!zhzR6u-h(&SLoC;2&MswgV;8pj(8DwZ9^50Go?$RHyXw1M% zGnuwHxp;(1dVao@7`R=iY_JR`W3et(*kedejB4NCSnIqZFn-A%%BqYM*T@St&vYln=5XhAu%k!O7q>+W{ShN@OrwHh zy>nlhj7HsNxru%yb2a+8F}iI<6WVbwC(hM-pg`T17F*^mv5Yr^X2!td&;!peMh4aJ z@UgUR(QQ-N%+~A#h7z&jemx7Qm4Pci@7kSa(PO`wRF3yQX(j&&Q3l_a1A<78Jn!NM z?~i$~n9+8ufn!S@dg1rP4A0=@{P^{%IC=)QioyQt3oLSI|FC;$r8&Q5ldqI^4-+&? zW;+sI+O}tptPl9%4bOaz>)hXjPRz$w?dk$D2Rf89m)8@fo#?2ok%y3*a%Y)i;Fa28Bi8yQHZvZMWqdoM}bB&>39%?IQy~ zsxuVrUGZeJOP-pO$+sI)VpilE67(D(Us6IE-w{)O0cAiX59=vr=~p#Z8fvRHIiAEA zU5?U=E;4bSw`NhmdfRQPvJ}Q{pX|ixm=MtR*##`W)Iz~DPXCON`{Z?8;KObc6zwsi ztbACRp?!C_7|a%Xc2Z>0^q}Mjg>L>t3>r`F`wQD~>ZiFdlJqAmM6%6@w*O#+qSw2TZ-_&<6vUF%vvi%dQ{0U)NlhrpxG_%QwXH+IBsF1daS%o&9A~hY?u7+)=;*3ev;b40AUi9Z{ z(#AH`)hIOdna8T?k)fmU95=%iorMRe09*qdHbqA7x$Eg9&Ku1++opJUZ%HD1j`)fx zhQamZS129>Z}XckFW(Rwwy$cd?(@`Mv|%Y8mWXI5YCL-HA+M!=-F;;!@%{+tDAB&2 zn`BZZgSy#MvQ|PjyFFIhJS{0vtf@rTiQlqc?S!8%^4Yh3qnNga<6sr4x-K%K>J@Gx zL5s%R=rXC22gBAo3d$KZC8!tIFn*{=1v5L}u=2Wxy1F%|o_ zPV=DUZCxIlDqPTT@*Yrq$PSN!6wmzDflPz)z?mG;%PS$h^dU*7JTfgQ2B-BjR(u$m zl$U%41U9Hbr-s)8^9Cb-a?reoST9=?T6*^_mw5qky3CxRVN>!X$ZGk%^kZx`~ zNWH-N{5TAL|By1OC{VE>{Y_EFC(QA8X{ett$KSQWd?HnU7rp!c6RBz&!{vP`WJS>C zbFduu@xP=tlFUu+DVPX{YQKYE(Mr$lBQH0FvK%(e0z{h1EzA2doZY;URMPDem6b)$ z-s4BMb5&0cYI#R*iM-n?pDS6-FhS1MFR^0?<-OshZzlr0%~?V3xOvXT^cm1f-=NOx zN6hmL{*tIMCI7y?*Z|tY;|smE&7e=o#v=+j!xZ1{KYE)*!un0mSCn68U}Sjn*`5M1 z+MNNlGhwyx#oK@v$t<_zeQ7pLcm+8M4IXp^HD}Q23=M}b-bSuS@_71Z_1J0V%5&07 zudhJ(bB0IH5Ky%9-YR%Qic+cj+m}p(>=Asck%gF|+Jb6YU+z2^ULu8mS z`xxIw)HZzO6t%6^Ad+xnwz(12Cry!(6PLZ1Fd6=gV_({YHR&lx^9f`k8;P^OFzZh9 zi7ijVNXsF`RD9C^t)eoK{yHHqu--RnR-U$^k$cvmI;K2a*!SsHi*`^-`FNtWSZP_Y zdBA=EeCPgll@3QlInUi%RQJUs3Them9Chat2A_qAxDXVocE3`KfhHE>vEd8hQE}*l@<1UlQy9>Qv z+6;>K#v)t^xB^u|iC;9a4q56yfZu|~kq1k<`}x~O>#xb(F`a{q>JLDG5YQu5U;4M7 zwcMBMVRNf((HOcXlc*pixo7A?x%r*u0>?jPz7LKk1v%fr))yL)3iUxB`nlL^-uaxnSJb-sfQy1qpeA9T<4*_8+0_`h zrhK}Kb-yryVmiMvytZx_`iLH=Gp>#?4ZoLi68tK4jx#Tb$ul~>ur)FGN72}z6v!~m zc3dLYv_CrgbHU{BV0z!b0y|JFW6kp^qA7A7XJZP1+Db0ac}^_z$~0MCKR1Iu1ZuLU ze{gMbM^8P;B2MH|?AmJDO*-@#a%fw`1Ljl3k0?0bO87L!pEU}%gDBCXp9RMJ;Qf8@ z0@BzPk|^8bV6T7C=7ZGAX4Vqi=_~I9dy01I3%>+wIY|GI>)gP?Z6sVnIgusb7@pWE z_Dv-$%R8@EU^-7EJoC7n4IoEygJ@y6-~qY;uG={{KgMHfftqDSGV=Pi1D6eF{Xs3T zvJ}h$S!nv#)ebJlLqjzUl^4 zid1frY<%y80RpXqwSM)>3d1Uj#g8fQt1@Ou9wRsqJo#uCJZ#$iYv}VZiTqaw+CiwuK9Ilr35Ewv~9L&m_s63#btZsyQA;tCDOzi3~w@_wip~VmX<| z?k0dbY#M)_&Z%<}=Jbu)O2t|VHv@E4`5ZGK+ve%|tI=dU=#R7x(y~a~T z&bH?4&0^zvLQ@*##zn|f(?dc>Kzk)YtUIIia-W`I578BjB3Sa_PgqGmR^n6a|3><` zNamHP`U0~9mrQw2k4AsP+}k0DFytZerh7@(5BmP(+m9^E{6}Cp;dGAALu+2neEEu0 z(1*&LBFI_hPo5rhh}g{{Y_a-%AZl=gH$uM8-571PPh|9>`(Z2)CPA*>_4g4i01G$~ z$pa@~oTg{f6mn62(JMX1@&XI9aN?%zkOt9Go#{Y>-E`pU2XUL?8#r^gMof>qa9}t` zmd3nDi!8_Fx{do1-DaES`clZI&7w+~=Ar7M3{1AWm$}%)c%OSX`kaHvsL)wH(H>$9 z*E|AtpSq2eWL=4;+0l?d^2ltR;O;LHDuiTdH8StqX;K=H_{-TbR9$1NSYI{sB`B9d z1(CKk)WN%c!;y%tKHK7#Bpk;JueT&*Mn?#gAWcH>L^6?CYOllgI2O#5Js4 zYg#r+g*tAIlprVY2;Kypeb0U3K}h%VYOzXVBNvKD5-o8Os0#M;m(8}K0rqwF3bElC zgrLVyZ3m&htCGVoks$Rv~0$3E>l_xYEiWf zo97IG!gG7m>YcwAY42U{ZNaFFdg#RvHz30Lyl-e`Yh)c%+*w4%+GntBD$xbs*ILu4Dx{!2o3bA_+0sF&ta zeLOrpN5iNW_laef?t^zSmxPA7eXfVw^CF?X&Z5Nrm@Rw=BEPwzq1bN@=XyU8)3gF! zM2+?d%s1()cWmt5NfpSWHh?h)i) z2D_$V8+*LJ|3cPE42+GBZGs(Pt#H+lIQo;#>AMN-e;-$kk`28)N9zO2s?yy0$%)w! zLD4hKM@Z+k!pm^d$9pfFuy$h2Zp_9`LtKP|;70S%=FZQopr3s_6|}geN~Fb7Z`}f) z37x|l%>`-#C%eLUI5&r-EVDf_c!cMkN@hFmt@^V~F(;4#3 zG99vlf!Z*^v@z7&O0n zoD?Vb5>T|!6IGmK|0@yrX#Z~t!odEAr3(i`Hlfg8&=L*$)9RJ5dEXK@wrzX_92d6* zMSUij!CK&9w_>u$G&Rc6I?CG-Zw2uTTk8nE>|$Oy`$cROZ5~ok?zVOJ3IMT)hI53I zen^r9D+{(mLpZKO+=}U4{}io@Xr?(wUl5t#B7(20dI`AsPOv0W>6t?5MDJ_E{HN%B zUApH=z7x2yp#|(szY^3s1ynjz+^~F|Lfs%s?Inx$cGx>ERo?`g6cEK82d{eeBxHI* z_(m{?Dr31dr-{Rkl4Q;VX)6O#t;Klts^TZ${oC)Te{`MCH4f#uvCnI?y-{>q7QZhY zCb*abNd8 zHaF7qZ-ljWWuSQ}l&|Tb_IL%CN(jk?y!Y-xi5Zpui0ss}mfQ{v{6aj48lb?;miZ*0fkGCnS28c~|+I zaLL{-b>Hb%yza|*jx3Z!9eZf^eR?si{znMcjHL?ZXTL)4Pbd@+zdtDu&9Fk(GPx+_ zdw(@5WT8!a(U0WJC{zs~4EhDR1+tP0A+-~7LxTuu!PnBXD_tDoIDAQr&otnK^@@`| z6OGlNCKYQ?7w!__Yk%$es#uyTU)3wxxav!@9U51q<;{>o9W){{8J{z=4EZ2F`f!I0 zgb#NLaZorCG8G;{itn3lrmiS&Eujzx2l@&r=w~F8ohofQ z;7S1f?10bf#SgjIStwp%#*6rAV*ZJ^d?GGW1w)@u+6+zmFQc@wfk0RFvfe${PRiJv zZJVg89UQ>;Mwtp4-y*Ka2@SKq?qn!+(o4-(NS*Ac&5IDZ2Y0A%B0bjdojpS!*&XqJ z1N6W<`5&CYh9P3t^+!fJaLE5N3~aDyLy-j^gQj3~|7Uzzcz#p*$1yMRtN$}_{q%Bs zB)Im|(S2_L;Q!8>*(tceP5X{;LQ7WYIF3cIQ-dBUZ#qEi8^!leWcdL()dXi!q;0b3 zPT#1@v*9+sIZ)dKQy^kiDkgBWrQS0HQ#>DTf~#*AS<9BtpwX+{`n{FW&5YNLupZ2} z4}Lv;*5^dKn#kk_RYT|QtcOZF)GuHuAX<#&$ zoUaze#9zY7z%00kbCM(LfZ+#GWLXq%#z}{#CeiQ&o0-M3(b)tcXK??1+pzu}q70r2 zlrRa+^?UOt%gkVY)Dl*i7@h4_p``i+v^0f2lE2gJU_2YU+^EA!@_@~Z)U*W-qAs$Z z;$6?=AkXnl4oyt^fsoHY&-Wfz(oGZva^$g6zbUE1G2_HX{J z0v#qW+toX4iKq;qw00hKA7UJ7o^njN_=h1j1)}TX%j{Tr}&nthXbAoV zS=j<6g#m3p3Ia6LadvHuHCpVB0LPFvPhiF&3!ks!^j4NNZn3?z73z|Fu|JOA@e^tW zUD~9#LUv+zuo;q$o^D^4R89yjAKk)hVua+j02}==WxRLr4uY{(&l8u~i8hqYN0#+| z^RsQ3D8yw8y#+m7bk)92lLylb)2Fdjnu>7&caMs;h>7!|4JS*t{kd^@*>+dz2QK&> zm~6Gzqkgj`x>V?oSH$6?qm`{qyOdmYJ}y?(G8!xdYrI4*drdi0H?&es^%s`>)~PkT z-CPVqcPcS6qyZ8$3(s3(tb<$6itede>V&n%p(3NxIm$!7_#L~+G-pgk?^gXTC{pHB zz=K&MkFR7#%&9l@AN~bl92!4*P)WnPUdE*NP$8;EeSZuN@ZpMiU`a4jT?xIhk}M5=S*hhd5|OaMGW!pu#3OxH{evCXMGE^ z(u4`ASiuPlK!|`EQ$J2O;mneiDPb=ovYjL3ezN2tuqu(e9yNrLq$kbbl|M|~jF(0n z45Wr=zGq;w!MS07GPGyQzQs#{hk7)b>hQ2H$CzZMA ztqN0>ME<5%9h;#;9+k55+1U}Pi*s~Oak$LKfv`LPru*BpgrVqIM6 zeiWZ^T>o|HZi-1e|8%!6Z8R-du;}por}xqkC|j&D-#kjEXd;2I>_?hvTxBy-G|p_GxxnWOT# zM@Um9DQ0xd#YT%FBYsr_EI2@g^w5Q7(UR~Co^e-o2gs1#QocUJ1$tr-HH9rf#G&Bs z;j;96edx)Can=%FDi&VGZR@Ki9zh&blW|v~EQM;KZpH;dlkSPFluhFyD$tRk;Z;8# z3Wj*)fzaoows6O%LCfGQ-mRzM#SPC0tyPn)HtHZy6FpzbFd@wKh_@<9XynWo2P2?EK?Hdpl&K znxe)PtHT+^jctx%aEYvtQ=JHzVxl*1mro2pf2`~5n zCddOSNvPx$S{P79t>(3e1lJeE4#ifzQqF3LcxGbKv{tOvtciKi6;@>GsU;ufjdD8i zAIa%-2i|n@wxmbt7?Q0vu3LzkB`H}dw9y}BPJ zOIQDMb?=j>se9{X#xR{UkgevFO|B6*&n=lsRDE|PIsPGpp9`dbhjjxwD7wWA9iw0NJ*N`fS1}|MIn7{Bp~_8R04vlv8Nj)8Wm~B7-Ot?2z2U z>jrkEy%{f2bio1;?rE-~0z}mfp^-M`P;ceMXD;ui;e%k%x3gJ4U?W~{EJfEm#T&L7 z-qTJ^ui+Ngni)X-~w8i5=@Jb)nGqAk_-MDi!w&3 z-!L-rXLz$7Xjj5I;-#D#SfG|xvtVicIA~ihWp0 zt`J52c5>%?G<1538-NV?C7qV@+rmL8+hAb=ahr+f95z0fb!n$;<~fx23rf-bRWeJj zaqc!4s{eKUK0WrN!`SGx)rI2+#<6u3xfP({2?Ai+Qjr^_+<*%_kVHpA zYyKTHw8HfY8d|IGj7?p_LLt{;xE47-U?0uy;DK~il<4=|ZOV>s=Nc9k{AfmEDo@<1 z+7w=Q46Vn=d_Y8hol*#0_TW9txJjFROSMw2B1+0 zy?wF7SiHPay3kh>{Q2E?VXJ3Us@^Q3k9dE3Y(VST-FCIXW^VqeP5q`4i38N0X-Mkm zVVq~5uebXQ=&nKLifV`k(C=D~w>0sX3#S-_H>`xr04h8Dm3Me4#2>^@Z)5I;txBWo z!BB5u;=-!TGdC6_jlnd#^gH~s9=9&_^waIy&$RaNF2}?|Gi)CAk9480CUXAIC{m}l zkQ_-9Q)g*{G5S#V~qLkeZ$OX6j(BaXlp^8e{a8oqG6d@EV0;vZi|zOzlK3QV%|Dp;oK)=#sc zK={~(T-rzX*33(}SIYi>_l@#@;jKT%D^jH9*eB=NkpI)If5D#}W)|CWzW@2u{{o6m BlWqV2 diff --git a/documentation/jump-point-search-pathfinder.png b/documentation/jump-point-search-pathfinder.png index 1474272fbafaaee63d763cc80dac81af5c5cd6d4..ab1f2fd693c2a6a94f39843ffdfdba592a9c602e 100644 GIT binary patch literal 21190 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 MapMonster { get; set; } = new HashSet(); + + public virtual ICollection MapNpc { get; set; } = new HashSet(); +} diff --git a/src/NosCore.PathFinder.Api/Database/MapMonster.cs b/src/NosCore.PathFinder.Api/Database/MapMonster.cs new file mode 100644 index 0000000..796ea70 --- /dev/null +++ b/src/NosCore.PathFinder.Api/Database/MapMonster.cs @@ -0,0 +1,27 @@ +// __ _ __ __ ___ __ ___ ___ +// | \| |/__\ /' _/ / _//__\| _ \ __| +// | | ' | \/ |`._`.| \_| \/ | v / _| +// |_|\__|\__/ |___/ \__/\__/|_|_\___| +// ----------------------------------- + +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace NosCore.PathFinder.Api.Database; + +public class MapMonster +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + public int MapMonsterId { get; set; } + + public short MapId { get; set; } + + public short MapX { get; set; } + + public short MapY { get; set; } + + public short VNum { get; set; } + + public virtual Map Map { get; set; } = null!; +} diff --git a/src/NosCore.PathFinder.Api/Database/MapNpc.cs b/src/NosCore.PathFinder.Api/Database/MapNpc.cs new file mode 100644 index 0000000..6598de7 --- /dev/null +++ b/src/NosCore.PathFinder.Api/Database/MapNpc.cs @@ -0,0 +1,27 @@ +// __ _ __ __ ___ __ ___ ___ +// | \| |/__\ /' _/ / _//__\| _ \ __| +// | | ' | \/ |`._`.| \_| \/ | v / _| +// |_|\__|\__/ |___/ \__/\__/|_|_\___| +// ----------------------------------- + +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace NosCore.PathFinder.Api.Database; + +public class MapNpc +{ + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.None)] + public int MapNpcId { get; set; } + + public short MapId { get; set; } + + public short MapX { get; set; } + + public short MapY { get; set; } + + public short VNum { get; set; } + + public virtual Map Map { get; set; } = null!; +} diff --git a/src/NosCore.PathFinder.Api/Database/PathFinderContext.cs b/src/NosCore.PathFinder.Api/Database/PathFinderContext.cs new file mode 100644 index 0000000..307d065 --- /dev/null +++ b/src/NosCore.PathFinder.Api/Database/PathFinderContext.cs @@ -0,0 +1,39 @@ +// __ _ __ __ ___ __ ___ ___ +// | \| |/__\ /' _/ / _//__\| _ \ __| +// | | ' | \/ |`._`.| \_| \/ | v / _| +// |_|\__|\__/ |___/ \__/\__/|_|_\___| +// ----------------------------------- + +using Microsoft.EntityFrameworkCore; + +namespace NosCore.PathFinder.Api.Database; + +public class PathFinderContext : DbContext +{ + public PathFinderContext(DbContextOptions options) : base(options) + { + } + + public virtual DbSet Map { get; set; } = null!; + public virtual DbSet MapMonster { get; set; } = null!; + public virtual DbSet MapNpc { get; set; } = null!; + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity().ToTable("Map"); + modelBuilder.Entity().ToTable("MapMonster"); + modelBuilder.Entity().ToTable("MapNpc"); + + modelBuilder.Entity() + .HasMany(e => e.MapMonster) + .WithOne(e => e.Map) + .HasForeignKey(e => e.MapId) + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasMany(e => e.MapNpc) + .WithOne(e => e.Map) + .HasForeignKey(e => e.MapId) + .OnDelete(DeleteBehavior.Restrict); + } +} diff --git a/src/NosCore.PathFinder.Api/MapStore.cs b/src/NosCore.PathFinder.Api/MapStore.cs new file mode 100644 index 0000000..c7cd4d9 --- /dev/null +++ b/src/NosCore.PathFinder.Api/MapStore.cs @@ -0,0 +1,276 @@ +// __ _ __ __ ___ __ ___ ___ +// | \| |/__\ /' _/ / _//__\| _ \ __| +// | | ' | \/ |`._`.| \_| \/ | v / _| +// |_|\__|\__/ |___/ \__/\__/|_|_\___| +// ----------------------------------- + +using Microsoft.EntityFrameworkCore; +using NosCore.PathFinder.Api.Database; +using NosCore.PathFinder.Interfaces; + +namespace NosCore.PathFinder.Api; + +public class MapStore +{ + private readonly Dictionary _sampleMaps = new(); + private readonly Dictionary _databaseMaps = new(); + private readonly Dictionary> _monsters = new(); + private readonly Dictionary> _npcs = new(); + private readonly IServiceProvider? _serviceProvider; + private readonly ILogger? _logger; + private bool _databaseLoaded; + + public MapStore() + { + InitializeSampleMaps(); + } + + public MapStore(IServiceProvider serviceProvider, ILogger logger) + { + _serviceProvider = serviceProvider; + _logger = logger; + InitializeSampleMaps(); + } + + private void InitializeSampleMaps() + { + _sampleMaps[-1] = new SimpleMap(new byte[][] + { + new byte[] {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1}, + new byte[] {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} + }); + + _sampleMaps[-2] = new SimpleMap(GenerateMaze(51, 51)); + } + + public async Task LoadFromDatabaseAsync() + { + if (_serviceProvider == null || _databaseLoaded) return; + + try + { + using var scope = _serviceProvider.CreateScope(); + var context = scope.ServiceProvider.GetService(); + if (context == null) return; + + var maps = await context.Map.ToListAsync(); + foreach (var map in maps) + { + try + { + var dbMap = new DatabaseMap(map.Data); + if (dbMap.Width > 0 && dbMap.Height > 0) + { + _databaseMaps[map.MapId] = dbMap; + } + } + catch (Exception ex) + { + _logger?.LogWarning(ex, "Failed to load map {MapId}", map.MapId); + } + } + + var monsters = await context.MapMonster.ToListAsync(); + foreach (var monster in monsters) + { + if (!_monsters.ContainsKey(monster.MapId)) + _monsters[monster.MapId] = new List(); + _monsters[monster.MapId].Add(new EntityPosition(monster.MapMonsterId, monster.MapX, monster.MapY, monster.VNum)); + } + + var npcs = await context.MapNpc.ToListAsync(); + foreach (var npc in npcs) + { + if (!_npcs.ContainsKey(npc.MapId)) + _npcs[npc.MapId] = new List(); + _npcs[npc.MapId].Add(new EntityPosition(npc.MapNpcId, npc.MapX, npc.MapY, npc.VNum)); + } + + _databaseLoaded = true; + _logger?.LogInformation("Loaded {MapCount} maps, {MonsterCount} monsters, {NpcCount} NPCs from database", + _databaseMaps.Count, monsters.Count, npcs.Count); + } + catch (Exception ex) + { + _logger?.LogError(ex, "Failed to connect to database - using sample maps only"); + } + } + + public IMapGrid? GetMap(int mapId) + { + if (_databaseMaps.TryGetValue(mapId, out var dbMap)) + return dbMap; + return _sampleMaps.GetValueOrDefault(mapId); + } + + public List GetMonsters(int mapId) => _monsters.GetValueOrDefault(mapId) ?? new List(); + + public List GetNpcs(int mapId) => _npcs.GetValueOrDefault(mapId) ?? new List(); + + public IEnumerable GetMapList() + { + var result = new List(); + + foreach (var (id, map) in _databaseMaps) + { + result.Add(new { Id = id, map.Width, map.Height, Source = "database" }); + } + + foreach (var (id, map) in _sampleMaps) + { + result.Add(new { Id = id, map.Width, map.Height, Source = "sample" }); + } + + return result.OrderBy(m => ((dynamic)m).Id); + } + + public bool HasDatabaseMaps => _databaseMaps.Count > 0; + + private static byte[][] GenerateMaze(int width, int height) + { + var maze = new byte[height][]; + var random = new Random(42); + + for (var y = 0; y < height; y++) + { + maze[y] = new byte[width]; + for (var x = 0; x < width; x++) + { + if (x == 0 || y == 0 || x == width - 1 || y == height - 1) + { + maze[y][x] = 1; + } + else if (x % 4 == 0 && y % 2 == 0 && random.NextDouble() > 0.3) + { + maze[y][x] = 1; + } + else if (y % 4 == 0 && x % 2 == 0 && random.NextDouble() > 0.3) + { + maze[y][x] = 1; + } + else + { + maze[y][x] = 0; + } + } + } + + return maze; + } +} + +public record EntityPosition(int Id, short X, short Y, short VNum); + +public class SimpleMap : IMapGrid +{ + private readonly byte[][] _data; + private byte[]? _walkabilityGrid; + + public SimpleMap(byte[][] data) + { + _data = data; + Height = (short)data.Length; + Width = (short)data[0].Length; + } + + public short Width { get; } + public short Height { get; } + + public byte this[short x, short y] => _data[y][x]; + + public bool IsWalkable(short x, short y) + { + if (x < 0 || x >= Width || y < 0 || y >= Height) return false; + return _data[y][x] == 0; + } + + public byte[] GetWalkabilityGrid() + { + if (_walkabilityGrid != null) return _walkabilityGrid; + + var size = Width * Height; + var bytesNeeded = (size + 7) / 8; + _walkabilityGrid = new byte[bytesNeeded]; + + for (var y = 0; y < Height; y++) + { + for (var x = 0; x < Width; x++) + { + var idx = y * Width + x; + if (!IsWalkable((short)x, (short)y)) + { + _walkabilityGrid[idx / 8] |= (byte)(1 << (idx % 8)); + } + } + } + + return _walkabilityGrid; + } +} + +public class DatabaseMap : IMapGrid +{ + private readonly byte[] _data; + private readonly short _width; + private readonly short _height; + private byte[]? _walkabilityGrid; + + public DatabaseMap(byte[] data) + { + _data = data; + _width = BitConverter.ToInt16(data, 0); + _height = BitConverter.ToInt16(data, 2); + } + + public short Width => _width; + public short Height => _height; + + public byte this[short x, short y] => _data[4 + y * _width + x]; + + public bool IsWalkable(short x, short y) + { + if (x < 0 || x >= Width || y < 0 || y >= Height) return false; + var value = this[x, y]; + return value == 0 || value == 2 || (value >= 16 && value <= 19); + } + + public byte[] GetWalkabilityGrid() + { + if (_walkabilityGrid != null) return _walkabilityGrid; + + var size = _width * _height; + var bytesNeeded = (size + 7) / 8; + _walkabilityGrid = new byte[bytesNeeded]; + + for (var y = 0; y < _height; y++) + { + for (var x = 0; x < _width; x++) + { + var idx = y * _width + x; + if (!IsWalkable((short)x, (short)y)) + { + _walkabilityGrid[idx / 8] |= (byte)(1 << (idx % 8)); + } + } + } + + return _walkabilityGrid; + } +} diff --git a/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj b/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj new file mode 100644 index 0000000..b582a9a --- /dev/null +++ b/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj @@ -0,0 +1,27 @@ + + + + net7.0 + enable + enable + latest + + + + ../../build + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + diff --git a/src/NosCore.PathFinder.Api/PerformanceTracker.cs b/src/NosCore.PathFinder.Api/PerformanceTracker.cs new file mode 100644 index 0000000..7c5ad45 --- /dev/null +++ b/src/NosCore.PathFinder.Api/PerformanceTracker.cs @@ -0,0 +1,110 @@ +// __ _ __ __ ___ __ ___ ___ +// | \| |/__\ /' _/ / _//__\| _ \ __| +// | | ' | \/ |`._`.| \_| \/ | v / _| +// |_|\__|\__/ |___/ \__/\__/|_|_\___| +// ----------------------------------- + +using System.Collections.Concurrent; +using System.Diagnostics; + +namespace NosCore.PathFinder.Api; + +public class PerformanceTracker +{ + private readonly ConcurrentQueue _brushfireEntries = new(); + private readonly ConcurrentQueue _flowfieldEntries = new(); + private const int MaxEntries = 1000; + + private readonly Process _process = Process.GetCurrentProcess(); + private TimeSpan _lastCpuTime = TimeSpan.Zero; + private DateTime _lastCpuCheck = DateTime.UtcNow; + private double _cpuUsage = 0; + + public void RecordBrushfire(TimeSpan elapsed, int cellCount) + { + _brushfireEntries.Enqueue(new PerformanceEntry(DateTime.UtcNow, elapsed, cellCount)); + TrimQueue(_brushfireEntries); + } + + public void RecordFlowField(TimeSpan elapsed, int vectorCount) + { + _flowfieldEntries.Enqueue(new PerformanceEntry(DateTime.UtcNow, elapsed, vectorCount)); + TrimQueue(_flowfieldEntries); + } + + public object GetStats() + { + var brushfireStats = CalculateStats(_brushfireEntries.ToArray()); + var flowfieldStats = CalculateStats(_flowfieldEntries.ToArray()); + UpdateCpuUsage(); + + _process.Refresh(); + var memoryMb = _process.WorkingSet64 / 1024.0 / 1024.0; + + return new + { + Brushfire = brushfireStats, + FlowField = flowfieldStats, + TotalRequests = _brushfireEntries.Count + _flowfieldEntries.Count, + CpuPercent = Math.Round(_cpuUsage, 1), + MemoryMb = Math.Round(memoryMb, 1) + }; + } + + private void UpdateCpuUsage() + { + var now = DateTime.UtcNow; + var elapsed = now - _lastCpuCheck; + if (elapsed.TotalMilliseconds < 500) return; + + _process.Refresh(); + var cpuTime = _process.TotalProcessorTime; + var cpuDelta = cpuTime - _lastCpuTime; + _cpuUsage = cpuDelta.TotalMilliseconds / elapsed.TotalMilliseconds / Environment.ProcessorCount * 100; + + _lastCpuTime = cpuTime; + _lastCpuCheck = now; + } + + private static object CalculateStats(PerformanceEntry[] entries) + { + if (entries.Length == 0) + { + return new { Count = 0, AvgMs = 0.0, MinMs = 0.0, MaxMs = 0.0, AvgCells = 0.0, CellsPerSecond = 0.0 }; + } + + var times = entries.Select(e => e.Elapsed.TotalMilliseconds).ToArray(); + var cells = entries.Select(e => e.CellCount).ToArray(); + var avgMs = times.Average(); + var avgCells = cells.Average(); + + return new + { + Count = entries.Length, + AvgMs = Math.Round(avgMs, 3), + MinMs = Math.Round(times.Min(), 3), + MaxMs = Math.Round(times.Max(), 3), + P95Ms = Math.Round(Percentile(times, 95), 3), + AvgCells = Math.Round(avgCells, 1), + CellsPerSecond = avgMs > 0 ? Math.Round(avgCells / avgMs * 1000, 0) : 0 + }; + } + + private static double Percentile(double[] values, int percentile) + { + if (values.Length == 0) return 0; + var sorted = values.OrderBy(v => v).ToArray(); + var index = (int)Math.Ceiling(percentile / 100.0 * sorted.Length) - 1; + return sorted[Math.Max(0, index)]; + } + + private static void TrimQueue(ConcurrentQueue queue) + { + while (queue.Count > MaxEntries) + { + queue.TryDequeue(out _); + } + } + + private record PerformanceEntry(DateTime Timestamp, TimeSpan Elapsed, int CellCount); +} diff --git a/src/NosCore.PathFinder.Api/Program.cs b/src/NosCore.PathFinder.Api/Program.cs new file mode 100644 index 0000000..0f08d3d --- /dev/null +++ b/src/NosCore.PathFinder.Api/Program.cs @@ -0,0 +1,295 @@ +// __ _ __ __ ___ __ ___ ___ +// | \| |/__\ /' _/ / _//__\| _ \ __| +// | | ' | \/ |`._`.| \_| \/ | v / _| +// |_|\__|\__/ |___/ \__/\__/|_|_\___| +// ----------------------------------- + +using System.Diagnostics; +using System.Net.WebSockets; +using System.Text; +using System.Text.Json; +using Microsoft.EntityFrameworkCore; +using NosCore.PathFinder.Api; +using NosCore.PathFinder.Api.Database; +using NosCore.PathFinder.Brushfire; +using NosCore.PathFinder.Heuristic; +using NosCore.PathFinder.Interfaces; +using YamlDotNet.Serialization; +using YamlDotNet.Serialization.NamingConventions; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.ConfigureHttpJsonOptions(options => +{ + options.SerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; +}); +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); + +var connectionString = LoadConnectionString(builder.Configuration); +if (!string.IsNullOrEmpty(connectionString)) +{ + builder.Services.AddDbContext(options => + options.UseNpgsql(connectionString)); + builder.Services.AddSingleton(sp => + new MapStore(sp, sp.GetRequiredService>())); + Console.WriteLine("Database configured - will load maps from PostgreSQL"); +} +else +{ + builder.Services.AddSingleton(); + Console.WriteLine("No database configured - using sample maps only"); +} + +var app = builder.Build(); + +var mapStore = app.Services.GetRequiredService(); +await mapStore.LoadFromDatabaseAsync(); + +app.UseDefaultFiles(); +app.UseStaticFiles(); +app.UseWebSockets(); + +var jsonOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; + +app.MapGet("/api/maps", (MapStore store) => +{ + return Results.Ok(store.GetMapList()); +}); + +app.MapGet("/api/maps/{mapId}", (int mapId, MapStore store) => +{ + var map = store.GetMap(mapId); + if (map == null) return Results.NotFound(); + + byte[] gridData; + if (map is DatabaseMap dbMap) + gridData = dbMap.GetWalkabilityGrid(); + else if (map is SimpleMap simpleMap) + gridData = simpleMap.GetWalkabilityGrid(); + else + gridData = Array.Empty(); + + var monsters = store.GetMonsters(mapId).Select(m => new { id = m.Id, x = m.X, y = m.Y, vNum = m.VNum, type = "monster" }); + var npcs = store.GetNpcs(mapId).Select(n => new { id = n.Id, x = n.X, y = n.Y, vNum = n.VNum, type = "npc" }); + + return Results.Ok(new + { + width = map.Width, + height = map.Height, + grid = Convert.ToBase64String(gridData), + entities = monsters.Concat(npcs) + }); +}); + +app.MapGet("/api/maps/{mapId}/entities", (int mapId, MapStore store) => +{ + var monsters = store.GetMonsters(mapId).Select(m => new { m.Id, m.X, m.Y, m.VNum, Type = "monster" }); + var npcs = store.GetNpcs(mapId).Select(n => new { n.Id, n.X, n.Y, n.VNum, Type = "npc" }); + return Results.Ok(new { Monsters = monsters, Npcs = npcs }); +}); + +app.MapGet("/api/maps/{mapId}/brushfire", (int mapId, short x, short y, short maxDistance, string? heuristic, MapStore store, HeuristicProvider heuristicProvider, PerformanceTracker perf) => +{ + var map = store.GetMap(mapId); + if (map == null) return Results.NotFound(); + + var h = heuristicProvider.Get(heuristic); + var sw = Stopwatch.StartNew(); + var brushfire = map.LoadBrushFire((x, y), h, maxDistance); + sw.Stop(); + + perf.RecordBrushfire(sw.Elapsed, brushfire.Distances.Count); + + var cells = brushfire.Distances + .Select(kvp => new { X = kvp.Key.X, Y = kvp.Key.Y, Distance = kvp.Value }) + .ToList(); + + return Results.Ok(new + { + Origin = new { x, y }, + Cells = cells, + Performance = new { ElapsedMs = sw.Elapsed.TotalMilliseconds, CellCount = cells.Count } + }); +}); + +app.MapGet("/api/maps/{mapId}/flowfield", (int mapId, short x, short y, short maxDistance, double stopDistance, string? heuristic, MapStore store, HeuristicProvider heuristicProvider, PerformanceTracker perf) => +{ + var map = store.GetMap(mapId); + if (map == null) return Results.NotFound(); + + var h = heuristicProvider.Get(heuristic); + var sw = Stopwatch.StartNew(); + var brushfire = map.LoadBrushFire((x, y), h, maxDistance); + var flowfield = brushfire.GetFlowField(map, stopDistance); + sw.Stop(); + + perf.RecordFlowField(sw.Elapsed, flowfield.Vectors.Count); + + var vectors = flowfield.Vectors + .Select(kvp => new { X = kvp.Key.X, Y = kvp.Key.Y, Dx = kvp.Value.X, Dy = kvp.Value.Y }) + .ToList(); + + return Results.Ok(new + { + Origin = new { x, y }, + Vectors = vectors, + Performance = new { ElapsedMs = sw.Elapsed.TotalMilliseconds, VectorCount = vectors.Count } + }); +}); + +app.MapGet("/api/performance", (PerformanceTracker perf) => +{ + return Results.Ok(perf.GetStats()); +}); + +app.Map("/ws", async (HttpContext context, MapStore store, HeuristicProvider heuristicProvider, PerformanceTracker perf) => +{ + if (!context.WebSockets.IsWebSocketRequest) + { + context.Response.StatusCode = 400; + return; + } + + using var ws = await context.WebSockets.AcceptWebSocketAsync(); + var buffer = new byte[4096]; + + while (ws.State == WebSocketState.Open) + { + var result = await ws.ReceiveAsync(buffer, CancellationToken.None); + if (result.MessageType == WebSocketMessageType.Close) + { + await ws.CloseAsync(WebSocketCloseStatus.NormalClosure, null, CancellationToken.None); + break; + } + + var message = Encoding.UTF8.GetString(buffer, 0, result.Count); + var request = JsonSerializer.Deserialize(message, jsonOptions); + + if (request == null) continue; + + var map = store.GetMap(request.MapId); + if (map == null) continue; + + var heuristic = heuristicProvider.Get(request.Heuristic); + var sw = Stopwatch.StartNew(); + var brushfire = map.LoadBrushFire((request.X, request.Y), heuristic, request.MaxDistance); + var flowfield = brushfire.GetFlowField(map, request.StopDistance); + sw.Stop(); + + perf.RecordFlowField(sw.Elapsed, flowfield.Vectors.Count); + + var monsters = store.GetMonsters(request.MapId); + var npcs = store.GetNpcs(request.MapId); + + var response = new + { + Type = "flowfield", + Origin = new { request.X, request.Y }, + Vectors = flowfield.Vectors.Select(kvp => new { X = kvp.Key.X, Y = kvp.Key.Y, Dx = kvp.Value.X, Dy = kvp.Value.Y }), + Distances = brushfire.Distances.Select(kvp => new { X = kvp.Key.X, Y = kvp.Key.Y, D = kvp.Value }), + Monsters = monsters.Select(m => new { m.X, m.Y }), + Npcs = npcs.Select(n => new { n.X, n.Y }), + Performance = new { ElapsedMs = sw.Elapsed.TotalMilliseconds, VectorCount = flowfield.Vectors.Count } + }; + + var responseJson = JsonSerializer.Serialize(response, jsonOptions); + var responseBytes = Encoding.UTF8.GetBytes(responseJson); + await ws.SendAsync(responseBytes, WebSocketMessageType.Text, true, CancellationToken.None); + } +}); + +app.Run(); + +static string? LoadConnectionString(IConfiguration configuration) +{ + var baseDir = AppContext.BaseDirectory; + var currentDir = Directory.GetCurrentDirectory(); + + var yamlPaths = new[] + { + Path.Combine(baseDir, "..", "..", "configuration", "pathfinder.yml"), + Path.Combine(baseDir, "configuration", "pathfinder.yml"), + Path.Combine(currentDir, "configuration", "pathfinder.yml"), + Path.Combine(currentDir, "..", "..", "configuration", "pathfinder.yml"), + @"C:\dev\NosCore.PathFinder\configuration\pathfinder.yml" + }; + + Console.WriteLine($"Base directory: {baseDir}"); + Console.WriteLine($"Current directory: {currentDir}"); + Console.WriteLine("Searching for pathfinder.yml..."); + + foreach (var yamlPath in yamlPaths) + { + var fullPath = Path.GetFullPath(yamlPath); + Console.WriteLine($" Checking: {fullPath}"); + if (File.Exists(fullPath)) + { + try + { + var yaml = File.ReadAllText(fullPath); + var deserializer = new DeserializerBuilder() + .WithNamingConvention(PascalCaseNamingConvention.Instance) + .IgnoreUnmatchedProperties() + .Build(); + var config = deserializer.Deserialize(yaml); + if (config?.Database != null) + { + var db = config.Database; + var connStr = $"Host={db.Host};Port={db.Port};Database={db.Database};Username={db.Username};Password={db.Password}"; + Console.WriteLine($"Loaded database config from: {fullPath}"); + return connStr; + } + } + catch (Exception ex) + { + Console.WriteLine($"Failed to parse {fullPath}: {ex.Message}"); + } + } + } + + var jsonConnStr = configuration.GetConnectionString("NosCore"); + if (!string.IsNullOrEmpty(jsonConnStr)) + { + Console.WriteLine("Using connection string from appsettings.json"); + return jsonConnStr; + } + + Console.WriteLine("No database configuration found"); + return null; +} + +record WsRequest(int MapId, short X, short Y, short MaxDistance = 22, double StopDistance = 0, string? Heuristic = null); + +class HeuristicProvider +{ + private readonly Dictionary _heuristics = new(StringComparer.OrdinalIgnoreCase) + { + ["octile"] = new OctileDistanceHeuristic(), + ["manhattan"] = new ManhattanDistanceHeuristic(), + ["euclidean"] = new EuclideanDistanceHeuristic(), + ["chebyshev"] = new ChebyshevDistanceHeuristic() + }; + + public IHeuristic Get(string? name) => + string.IsNullOrEmpty(name) || !_heuristics.TryGetValue(name, out var h) + ? _heuristics["octile"] + : h; + + public IEnumerable GetNames() => _heuristics.Keys; +} + +class PathfinderConfig +{ + public string? Language { get; set; } + public DatabaseConfig? Database { get; set; } +} + +class DatabaseConfig +{ + public string Host { get; set; } = "localhost"; + public int Port { get; set; } = 5432; + public string Database { get; set; } = "postgres"; + public string Username { get; set; } = "postgres"; + public string Password { get; set; } = ""; +} diff --git a/src/NosCore.PathFinder.Api/appsettings.json b/src/NosCore.PathFinder.Api/appsettings.json new file mode 100644 index 0000000..208400a --- /dev/null +++ b/src/NosCore.PathFinder.Api/appsettings.json @@ -0,0 +1,11 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "ConnectionStrings": { + "NosCore": "Host=localhost;Port=5432;Database=postgres;Username=postgres;Password=password" + } +} diff --git a/src/NosCore.PathFinder.Api/wwwroot/app.js b/src/NosCore.PathFinder.Api/wwwroot/app.js new file mode 100644 index 0000000..baae659 --- /dev/null +++ b/src/NosCore.PathFinder.Api/wwwroot/app.js @@ -0,0 +1,548 @@ +// __ _ __ __ ___ __ ___ ___ +// | \| |/__\ /' _/ / _//__\| _ \ __| +// | | ' | \/ |`._`.| \_| \/ | v / _| +// |_|\__|\__/ |___/ \__/\__/|_|_\___| +// ----------------------------------- + +const canvas = document.getElementById('canvas'); +const ctx = canvas.getContext('2d'); + +let currentMap = null; +let mapData = null; +let flowFieldData = null; +let cellSize = 20; +let mode = 'flowfield'; +let showArrows = true; +let showEntities = true; +let maxDistance = 22; +let stopDistance = 0; +let ws = null; +let lastMousePos = { x: -1, y: -1 }; + +let entities = []; +let lastFrameTime = 0; +const MOVE_SPEED = 3; +const RETURN_SPEED = 2; + +let returnFlowFields = new Map(); + +let zoomLevel = 1; +let panX = 0; +let panY = 0; +let isDragging = false; +let dragStart = { x: 0, y: 0 }; +let gridBytes = null; +let wallCanvas = null; +let wallCtx = null; + +async function init() { + const maps = await fetch('/api/maps').then(r => r.json()); + const select = document.getElementById('mapSelect'); + + const dbMaps = maps.filter(m => m.source === 'database'); + const sampleMaps = maps.filter(m => m.source === 'sample'); + + if (dbMaps.length > 0) { + const dbGroup = document.createElement('optgroup'); + dbGroup.label = 'Database Maps'; + dbMaps.forEach(m => { + const opt = document.createElement('option'); + opt.value = m.id; + opt.textContent = `Map ${m.id} (${m.width}x${m.height})`; + dbGroup.appendChild(opt); + }); + select.appendChild(dbGroup); + } + + if (sampleMaps.length > 0) { + const sampleGroup = document.createElement('optgroup'); + sampleGroup.label = 'Sample Maps'; + sampleMaps.forEach(m => { + const opt = document.createElement('option'); + opt.value = m.id; + opt.textContent = `Sample ${Math.abs(m.id)} (${m.width}x${m.height})`; + sampleGroup.appendChild(opt); + }); + select.appendChild(sampleGroup); + } + + select.addEventListener('change', () => loadMap(parseInt(select.value))); + + document.querySelectorAll('.toggle').forEach(btn => { + btn.addEventListener('click', () => { + document.querySelectorAll('.toggle').forEach(b => b.classList.remove('active')); + btn.classList.add('active'); + mode = btn.dataset.mode; + render(); + }); + }); + + document.getElementById('maxDistance').addEventListener('input', (e) => { + maxDistance = parseInt(e.target.value); + document.getElementById('distanceValue').textContent = maxDistance; + }); + + document.getElementById('stopDistance').addEventListener('input', (e) => { + stopDistance = parseFloat(e.target.value); + document.getElementById('stopDistanceValue').textContent = stopDistance; + }); + + document.getElementById('showArrows').addEventListener('change', (e) => { + showArrows = e.target.checked; + render(); + }); + + document.getElementById('showEntities').addEventListener('change', (e) => { + showEntities = e.target.checked; + render(); + }); + + canvas.addEventListener('mousemove', onMouseMove); + canvas.addEventListener('wheel', onWheel, { passive: false }); + canvas.addEventListener('mousedown', onMouseDown); + canvas.addEventListener('mouseup', onMouseUp); + canvas.addEventListener('mouseleave', onMouseUp); + + connectWebSocket(); + + if (maps.length > 0) { + loadMap(maps[0].id); + } + + setInterval(updateAggregateStats, 2000); + requestAnimationFrame(animate); +} + +function connectWebSocket() { + const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:'; + ws = new WebSocket(`${protocol}//${location.host}/ws`); + + ws.onmessage = (event) => { + const data = JSON.parse(event.data); + if (data.type === 'flowfield') { + flowFieldData = data; + updatePerfStats(data.performance); + render(); + } + }; + + ws.onclose = () => setTimeout(connectWebSocket, 1000); +} + +async function loadMap(mapId) { + currentMap = mapId; + mapData = await fetch(`/api/maps/${mapId}`).then(r => r.json()); + flowFieldData = null; + + const container = canvas.parentElement; + const maxWidth = container.clientWidth - 40; + const maxHeight = container.clientHeight - 40; + + cellSize = Math.min( + Math.floor(maxWidth / mapData.width), + Math.floor(maxHeight / mapData.height), + 30 + ); + cellSize = Math.max(cellSize, 4); + + zoomLevel = 1; + panX = 0; + panY = 0; + + gridBytes = mapData.grid ? Uint8Array.from(atob(mapData.grid), c => c.charCodeAt(0)) : null; + + preRenderWalls(); + updateCanvasSize(); + initEntities(); + updateEntityCount(); + render(); +} + +function preRenderWalls() { + wallCanvas = document.createElement('canvas'); + wallCanvas.width = mapData.width * cellSize; + wallCanvas.height = mapData.height * cellSize; + wallCtx = wallCanvas.getContext('2d'); + + if (!gridBytes) return; + + wallCtx.fillStyle = '#21262d'; + for (let y = 0; y < mapData.height; y++) { + for (let x = 0; x < mapData.width; x++) { + const idx = y * mapData.width + x; + if (gridBytes[idx >> 3] & (1 << (idx & 7))) { + wallCtx.fillRect(x * cellSize, y * cellSize, cellSize, cellSize); + } + } + } +} + +function updateCanvasSize() { + const container = canvas.parentElement; + const mapWidth = mapData.width * cellSize * zoomLevel; + const mapHeight = mapData.height * cellSize * zoomLevel; + + canvas.width = Math.min(mapWidth, container.clientWidth - 40); + canvas.height = Math.min(mapHeight, container.clientHeight - 40); +} + +function initEntities() { + entities = []; + returnFlowFields.clear(); + if (!mapData?.entities) return; + + let id = 0; + for (const e of mapData.entities) { + entities.push({ + id: id++, + type: e.type, + homeX: e.x, + homeY: e.y, + x: e.x, + y: e.y, + vnum: e.vNum, + needsReturnPath: false + }); + } +} + +function updateEntityCount() { + const monsterCount = mapData?.entities?.filter(e => e.type === 'monster').length || 0; + const npcCount = mapData?.entities?.filter(e => e.type === 'npc').length || 0; + document.getElementById('entityCount').textContent = `${monsterCount} monsters, ${npcCount} NPCs`; +} + +function animate(timestamp) { + const deltaTime = (timestamp - lastFrameTime) / 1000; + lastFrameTime = timestamp; + + if (mapData && entities.length > 0) { + updateEntities(deltaTime); + render(); + } + + requestAnimationFrame(animate); +} + +function isWalkable(x, y) { + if (x < 0 || y < 0 || x >= mapData.width || y >= mapData.height) return false; + if (!gridBytes) return true; + const ix = Math.floor(x); + const iy = Math.floor(y); + const idx = iy * mapData.width + ix; + return !(gridBytes[idx >> 3] & (1 << (idx & 7))); +} + +function updateEntities(deltaTime) { + const vectorMap = new Map(); + if (flowFieldData?.vectors) { + for (const v of flowFieldData.vectors) { + vectorMap.set(`${v.x},${v.y}`, { dx: v.dx, dy: v.dy }); + } + } + + for (const entity of entities) { + const cellX = Math.floor(entity.x); + const cellY = Math.floor(entity.y); + const key = `${cellX},${cellY}`; + const vector = vectorMap.get(key); + + if (vector) { + returnFlowFields.delete(entity.id); + entity.needsReturnPath = false; + + const newX = entity.x + vector.dx * MOVE_SPEED * deltaTime; + const newY = entity.y + vector.dy * MOVE_SPEED * deltaTime; + if (isWalkable(newX, newY)) { + entity.x = newX; + entity.y = newY; + } else if (isWalkable(newX, entity.y)) { + entity.x = newX; + } else if (isWalkable(entity.x, newY)) { + entity.y = newY; + } + } else { + const dx = entity.homeX - entity.x; + const dy = entity.homeY - entity.y; + const dist = Math.sqrt(dx * dx + dy * dy); + + if (dist < 0.1) { + entity.x = entity.homeX; + entity.y = entity.homeY; + returnFlowFields.delete(entity.id); + entity.needsReturnPath = false; + continue; + } + + if (!entity.needsReturnPath && dist > 0.5) { + entity.needsReturnPath = true; + requestReturnPath(entity); + } + + const returnField = returnFlowFields.get(entity.id); + if (returnField) { + const returnVector = returnField.get(key); + if (returnVector) { + const newX = entity.x + returnVector.dx * RETURN_SPEED * deltaTime; + const newY = entity.y + returnVector.dy * RETURN_SPEED * deltaTime; + if (isWalkable(newX, newY)) { + entity.x = newX; + entity.y = newY; + } else if (isWalkable(newX, entity.y)) { + entity.x = newX; + } else if (isWalkable(entity.x, newY)) { + entity.y = newY; + } + continue; + } + } + + const nx = dx / dist; + const ny = dy / dist; + const move = Math.min(dist, RETURN_SPEED * deltaTime); + const newX = entity.x + nx * move; + const newY = entity.y + ny * move; + + if (isWalkable(newX, newY)) { + entity.x = newX; + entity.y = newY; + } else if (isWalkable(newX, entity.y)) { + entity.x = newX; + } else if (isWalkable(entity.x, newY)) { + entity.y = newY; + } + } + } +} + +async function requestReturnPath(entity) { + try { + const dx = Math.abs(entity.x - entity.homeX); + const dy = Math.abs(entity.y - entity.homeY); + const pathDistance = Math.max(dx, dy) + 10; + const res = await fetch(`/api/maps/${currentMap}/flowfield?x=${entity.homeX}&y=${entity.homeY}&maxDistance=${pathDistance}&stopDistance=0`); + if (!res.ok) return; + + const data = await res.json(); + const vectorMap = new Map(); + for (const v of data.vectors) { + vectorMap.set(`${v.x},${v.y}`, { dx: v.dx, dy: v.dy }); + } + returnFlowFields.set(entity.id, vectorMap); + } catch (e) {} +} + +function onMouseMove(e) { + if (!mapData) return; + + const rect = canvas.getBoundingClientRect(); + + if (isDragging) { + panX += e.clientX - dragStart.x; + panY += e.clientY - dragStart.y; + dragStart = { x: e.clientX, y: e.clientY }; + render(); + return; + } + + const scale = cellSize * zoomLevel; + const x = Math.floor((e.clientX - rect.left - panX) / scale); + const y = Math.floor((e.clientY - rect.top - panY) / scale); + + if (x === lastMousePos.x && y === lastMousePos.y) return; + if (x < 0 || x >= mapData.width || y < 0 || y >= mapData.height) return; + + lastMousePos = { x, y }; + + if (ws && ws.readyState === WebSocket.OPEN) { + ws.send(JSON.stringify({ + mapId: currentMap, + x: x, + y: y, + maxDistance: maxDistance, + stopDistance: stopDistance + })); + } +} + +function onWheel(e) { + if (!mapData) return; + e.preventDefault(); + + const rect = canvas.getBoundingClientRect(); + const mouseX = e.clientX - rect.left; + const mouseY = e.clientY - rect.top; + + const worldX = (mouseX - panX) / (cellSize * zoomLevel); + const worldY = (mouseY - panY) / (cellSize * zoomLevel); + + const zoomFactor = e.deltaY < 0 ? 1.15 : 0.87; + const newZoom = Math.max(0.5, Math.min(5, zoomLevel * zoomFactor)); + + panX = mouseX - worldX * cellSize * newZoom; + panY = mouseY - worldY * cellSize * newZoom; + zoomLevel = newZoom; + + render(); +} + +function onMouseDown(e) { + if (e.button === 0 || e.button === 1) { + isDragging = true; + dragStart = { x: e.clientX, y: e.clientY }; + canvas.style.cursor = 'grabbing'; + e.preventDefault(); + } +} + +function onMouseUp() { + isDragging = false; + canvas.style.cursor = 'default'; +} + +function render() { + if (!mapData) return; + + const scale = cellSize * zoomLevel; + + ctx.fillStyle = '#0d1117'; + ctx.fillRect(0, 0, canvas.width, canvas.height); + + ctx.save(); + ctx.translate(panX, panY); + ctx.scale(zoomLevel, zoomLevel); + + if (wallCanvas) { + ctx.drawImage(wallCanvas, 0, 0); + } + + if (flowFieldData) { + const maxDist = Math.max(...flowFieldData.distances.map(d => d.d), 1); + + for (const cell of flowFieldData.distances) { + const intensity = 1 - (cell.d / maxDist); + const r = Math.floor(88 + 100 * intensity); + const g = Math.floor(166 + 60 * intensity); + const b = Math.floor(255 * intensity); + ctx.fillStyle = `rgba(${r},${g},${b},0.6)`; + ctx.fillRect(cell.x * cellSize, cell.y * cellSize, cellSize, cellSize); + } + + if (showArrows && mode === 'flowfield') { + ctx.strokeStyle = 'rgba(255,255,255,0.8)'; + ctx.fillStyle = 'rgba(255,255,255,0.8)'; + ctx.lineWidth = 1 / zoomLevel; + + for (const v of flowFieldData.vectors) { + drawArrow(v.x, v.y, v.dx, v.dy); + } + } + + ctx.fillStyle = '#58a6ff'; + ctx.beginPath(); + ctx.arc( + flowFieldData.origin.x * cellSize + cellSize / 2, + flowFieldData.origin.y * cellSize + cellSize / 2, + cellSize / 2.5, + 0, Math.PI * 2 + ); + ctx.fill(); + ctx.strokeStyle = '#fff'; + ctx.lineWidth = 2 / zoomLevel; + ctx.stroke(); + } + + if (showEntities) { + for (const e of entities) { + if (e.type === 'monster') { + drawEntity(e.x, e.y, '#f85149', '#ff7b72'); + } else { + drawEntity(e.x, e.y, '#d29922', '#e3b341'); + } + } + } + + ctx.strokeStyle = 'rgba(255,255,255,0.05)'; + ctx.lineWidth = 0.5 / zoomLevel; + for (let x = 0; x <= mapData.width; x++) { + ctx.beginPath(); + ctx.moveTo(x * cellSize, 0); + ctx.lineTo(x * cellSize, mapData.height * cellSize); + ctx.stroke(); + } + for (let y = 0; y <= mapData.height; y++) { + ctx.beginPath(); + ctx.moveTo(0, y * cellSize); + ctx.lineTo(mapData.width * cellSize, y * cellSize); + ctx.stroke(); + } + + ctx.restore(); +} + +function drawEntity(x, y, fillColor, strokeColor) { + ctx.fillStyle = fillColor; + ctx.beginPath(); + ctx.arc( + x * cellSize + cellSize / 2, + y * cellSize + cellSize / 2, + cellSize / 3, + 0, Math.PI * 2 + ); + ctx.fill(); + ctx.strokeStyle = strokeColor; + ctx.lineWidth = 1.5 / zoomLevel; + ctx.stroke(); +} + +function drawArrow(x, y, dx, dy) { + const cx = x * cellSize + cellSize / 2; + const cy = y * cellSize + cellSize / 2; + const len = cellSize * 0.35; + const headLen = cellSize * 0.15; + + const ex = cx + dx * len; + const ey = cy + dy * len; + + ctx.beginPath(); + ctx.moveTo(cx, cy); + ctx.lineTo(ex, ey); + ctx.stroke(); + + const angle = Math.atan2(dy, dx); + ctx.beginPath(); + ctx.moveTo(ex, ey); + ctx.lineTo(ex - headLen * Math.cos(angle - 0.5), ey - headLen * Math.sin(angle - 0.5)); + ctx.lineTo(ex - headLen * Math.cos(angle + 0.5), ey - headLen * Math.sin(angle + 0.5)); + ctx.closePath(); + ctx.fill(); +} + +function updatePerfStats(perf) { + document.getElementById('lastMs').textContent = perf.elapsedMs.toFixed(2) + ' ms'; + document.getElementById('vectorCount').textContent = perf.vectorCount.toLocaleString(); + + const cellsPerSec = perf.elapsedMs > 0 ? Math.round(perf.vectorCount / perf.elapsedMs * 1000) : 0; + document.getElementById('cellsPerSec').textContent = cellsPerSec.toLocaleString(); + + const barWidth = Math.min(100, perf.elapsedMs * 10); + document.getElementById('perfBar').style.width = barWidth + '%'; +} + +async function updateAggregateStats() { + try { + const stats = await fetch('/api/performance').then(r => r.json()); + document.getElementById('totalReqs').textContent = stats.totalRequests.toLocaleString(); + + const ff = stats.flowField; + if (ff.count > 0) { + document.getElementById('avgMs').textContent = ff.avgMs.toFixed(2) + ' ms'; + document.getElementById('p95Ms').textContent = ff.p95Ms.toFixed(2) + ' ms'; + } + + document.getElementById('cpuPercent').textContent = stats.cpuPercent.toFixed(1) + '%'; + document.getElementById('memoryMb').textContent = stats.memoryMb.toFixed(1) + ' MB'; + } catch (e) {} +} + +init(); diff --git a/src/NosCore.PathFinder.Api/wwwroot/index.html b/src/NosCore.PathFinder.Api/wwwroot/index.html new file mode 100644 index 0000000..831e243 --- /dev/null +++ b/src/NosCore.PathFinder.Api/wwwroot/index.html @@ -0,0 +1,313 @@ + + + + + + NosCore PathFinder Visualizer + + + +
+ + +
+
+ +
+
+
Wall
+
Player (Origin)
+
Monster
+
NPC
+
Distance gradient
+
Flow direction
+
+
+
+ + + + diff --git a/test/NosCore.PathFinder.Tests/FlowFieldTests.cs b/test/NosCore.PathFinder.Tests/FlowFieldTests.cs new file mode 100644 index 0000000..b97d5de --- /dev/null +++ b/test/NosCore.PathFinder.Tests/FlowFieldTests.cs @@ -0,0 +1,145 @@ +// __ _ __ __ ___ __ ___ ___ +// | \| |/__\ /' _/ / _//__\| _ \ __| +// | | ' | \/ |`._`.| \_| \/ | v / _| +// |_|\__|\__/ |___/ \__/\__/|_|_\___| +// ----------------------------------- + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using NosCore.PathFinder.Brushfire; +using NosCore.PathFinder.Heuristic; + +namespace NosCore.PathFinder.Tests +{ + [TestClass] + public class FlowFieldTests + { + private readonly TestMap _map = TestHelper.SimpleMap; + + [TestMethod] + public void Test_FlowField() + { + (short X, short Y) characterPosition = (6, 10); + var brushFire = _map.LoadBrushFire(characterPosition, new OctileDistanceHeuristic()); + var flowField = brushFire.GetFlowField(_map); + + var bitmap = new Bitmap(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); + var listPixel = new List(); + TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, bitmap, (0, 0), characterPosition); + using var graphics = Graphics.FromImage(bitmap); + + for (short y = 0; y < _map.Height; y++) + { + for (short x = 0; x < _map.Width; x++) + { + var rectangle = new Rectangle(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); + if ((x, y) != characterPosition) + { + if (brushFire[x, y] != null) + { + graphics.FillRectangle(new Pen(Color.White).Brush, rectangle); + var color = Color.FromArgb((int)((brushFire[x, y] * 12 > 255 ? 255 : (brushFire[x, y] ?? 0) * 12)), 0, 0, 255); + graphics.FillRectangle(new Pen(color).Brush, rectangle); + listPixel.Add(color); + + var vector = flowField[x, y]; + if (vector != null) + { + TestHelper.DrawArrow(graphics, x, y, vector.Value.X, vector.Value.Y, TestHelper.Scale, Color.White); + } + } + } + } + } + + TestHelper.VerifyFile("flow-field.png", bitmap, listPixel, "Flow Field (Vector Field Pathfinding)"); + } + + [TestMethod] + public void Test_FlowField_MonsterPath() + { + (short X, short Y) characterPosition = (6, 10); + (short X, short Y) monsterPosition = (15, 16); + + var brushFire = _map.LoadBrushFire(characterPosition, new OctileDistanceHeuristic()); + var flowField = brushFire.GetFlowField(_map); + + var path = TraceFlowFieldPath(flowField, monsterPosition, characterPosition); + + var bitmap = new Bitmap(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); + var listPixel = new List(); + TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, bitmap, monsterPosition, characterPosition); + using var graphics = Graphics.FromImage(bitmap); + + for (short y = 0; y < _map.Height; y++) + { + for (short x = 0; x < _map.Width; x++) + { + var rectangle = new Rectangle(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); + if ((x, y) != characterPosition && (x, y) != monsterPosition) + { + if (brushFire[x, y] != null) + { + graphics.FillRectangle(new Pen(Color.White).Brush, rectangle); + var color = Color.FromArgb((int)((brushFire[x, y] * 12 > 255 ? 255 : (brushFire[x, y] ?? 0) * 12)), 0, 0, 255); + graphics.FillRectangle(new Pen(color).Brush, rectangle); + listPixel.Add(color); + + var vector = flowField[x, y]; + if (vector != null) + { + TestHelper.DrawArrow(graphics, x, y, vector.Value.X, vector.Value.Y, TestHelper.Scale, Color.White); + } + } + } + } + } + + var pathArray = path.ToArray(); + for (var i = 0; i < pathArray.Length; i++) + { + var (x, y) = pathArray[i]; + if ((x, y) != monsterPosition && (x, y) != characterPosition) + { + var rectangle = new Rectangle(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); + var color = Color.LightPink; + graphics.FillRectangle(new Pen(color).Brush, rectangle); + graphics.DrawString(i.ToString(), new Font("Arial", 16), Brushes.Black, rectangle, TestHelper.StringFormat); + listPixel.Add(color); + } + } + + TestHelper.VerifyFile("flow-field-path.png", bitmap, listPixel, "Flow Field Path (Monster following vectors to Player)"); + } + + private static List<(short X, short Y)> TraceFlowFieldPath(FlowField flowField, (short X, short Y) start, (short X, short Y) target, int maxSteps = 100) + { + var path = new List<(short X, short Y)>(); + var current = start; + + for (var step = 0; step < maxSteps; step++) + { + var vector = flowField[current.X, current.Y]; + if (vector == null) + break; + + var nextX = (short)(current.X + Math.Sign(vector.Value.X)); + var nextY = (short)(current.Y + Math.Sign(vector.Value.Y)); + + if ((nextX, nextY) == current) + break; + + current = (nextX, nextY); + path.Add(current); + + if (current == target) + break; + } + + return path; + } + } +} diff --git a/test/NosCore.PathFinder.Tests/TestHelper.cs b/test/NosCore.PathFinder.Tests/TestHelper.cs index f638f30..d2b9348 100644 --- a/test/NosCore.PathFinder.Tests/TestHelper.cs +++ b/test/NosCore.PathFinder.Tests/TestHelper.cs @@ -4,8 +4,10 @@ // |_|\__|\__/ |___/ \__/\__/|_|_\___| // ----------------------------------- +using System; using System.Collections.Generic; using System.Drawing; +using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; using System.Linq; @@ -101,5 +103,31 @@ public static void DrawMap(TestMap map, int scale, List listPixel, Bitmap } } } + + public static void DrawArrow(Graphics graphics, int cellX, int cellY, float dirX, float dirY, int scale, Color color) + { + var centerX = cellX * scale + scale / 2f; + var centerY = cellY * scale + scale / 2f; + + var arrowLength = scale * 0.35f; + var headLength = scale * 0.15f; + var headWidth = scale * 0.12f; + + var endX = centerX + dirX * arrowLength; + var endY = centerY + dirY * arrowLength; + + using var pen = new Pen(color, 2f); + graphics.DrawLine(pen, centerX, centerY, endX, endY); + + var angle = (float)Math.Atan2(dirY, dirX); + var head1X = endX - headLength * (float)Math.Cos(angle - 0.5f) ; + var head1Y = endY - headLength * (float)Math.Sin(angle - 0.5f); + var head2X = endX - headLength * (float)Math.Cos(angle + 0.5f); + var head2Y = endY - headLength * (float)Math.Sin(angle + 0.5f); + + using var brush = new SolidBrush(color); + var headPoints = new PointF[] { new(endX, endY), new(head1X, head1Y), new(head2X, head2Y) }; + graphics.FillPolygon(brush, headPoints); + } } } From bd9e7f0f89063be1c85d491ca6a21b50f8fe7107 Mon Sep 17 00:00:00 2001 From: erwan-joly Date: Thu, 15 Jan 2026 17:28:12 +1300 Subject: [PATCH 04/10] fix --- src/NosCore.PathFinder/NosCore.PathFinder.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NosCore.PathFinder/NosCore.PathFinder.csproj b/src/NosCore.PathFinder/NosCore.PathFinder.csproj index 1ae42b2..5f13811 100644 --- a/src/NosCore.PathFinder/NosCore.PathFinder.csproj +++ b/src/NosCore.PathFinder/NosCore.PathFinder.csproj @@ -12,7 +12,7 @@ https://github.com/NosCoreIO/NosCore.PathFinder.git nostale, noscore, nostale private server source, nostale emulator - 2.0.1 + 2.1.0 false NosCore's PathFinder From c83697a432505b40de4e1689189e7099abc6d2e0 Mon Sep 17 00:00:00 2001 From: erwan-joly Date: Thu, 15 Jan 2026 17:35:52 +1300 Subject: [PATCH 05/10] Upgrade --- .../NosCore.PathFinder.Api.csproj | 6 +- src/NosCore.PathFinder.Api/Program.cs | 3 - src/NosCore.PathFinder.Api/wwwroot/app.js | 77 +++++++++++-------- .../NosCore.PathFinder.csproj | 6 +- .../NosCore.PathFinder.Benchmark.csproj | 2 +- .../NosCore.PathFinder.Tests.csproj | 4 +- 6 files changed, 54 insertions(+), 44 deletions(-) diff --git a/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj b/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj index b582a9a..12eb056 100644 --- a/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj +++ b/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj @@ -1,7 +1,7 @@ - net7.0 + net10.0 enable enable latest @@ -12,8 +12,8 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/NosCore.PathFinder.Api/Program.cs b/src/NosCore.PathFinder.Api/Program.cs index 0f08d3d..d66e5cd 100644 --- a/src/NosCore.PathFinder.Api/Program.cs +++ b/src/NosCore.PathFinder.Api/Program.cs @@ -266,9 +266,6 @@ class HeuristicProvider private readonly Dictionary _heuristics = new(StringComparer.OrdinalIgnoreCase) { ["octile"] = new OctileDistanceHeuristic(), - ["manhattan"] = new ManhattanDistanceHeuristic(), - ["euclidean"] = new EuclideanDistanceHeuristic(), - ["chebyshev"] = new ChebyshevDistanceHeuristic() }; public IHeuristic Get(string? name) => diff --git a/src/NosCore.PathFinder.Api/wwwroot/app.js b/src/NosCore.PathFinder.Api/wwwroot/app.js index baae659..0b6d457 100644 --- a/src/NosCore.PathFinder.Api/wwwroot/app.js +++ b/src/NosCore.PathFinder.Api/wwwroot/app.js @@ -271,45 +271,58 @@ function updateEntities(deltaTime) { entity.y = entity.homeY; returnFlowFields.delete(entity.id); entity.needsReturnPath = false; + entity.stuckFrames = 0; continue; } - if (!entity.needsReturnPath && dist > 0.5) { - entity.needsReturnPath = true; - requestReturnPath(entity); - } - - const returnField = returnFlowFields.get(entity.id); - if (returnField) { - const returnVector = returnField.get(key); - if (returnVector) { - const newX = entity.x + returnVector.dx * RETURN_SPEED * deltaTime; - const newY = entity.y + returnVector.dy * RETURN_SPEED * deltaTime; - if (isWalkable(newX, newY)) { - entity.x = newX; - entity.y = newY; - } else if (isWalkable(newX, entity.y)) { - entity.x = newX; - } else if (isWalkable(entity.x, newY)) { - entity.y = newY; - } - continue; - } - } - const nx = dx / dist; const ny = dy / dist; const move = Math.min(dist, RETURN_SPEED * deltaTime); - const newX = entity.x + nx * move; - const newY = entity.y + ny * move; + const directX = entity.x + nx * move; + const directY = entity.y + ny * move; + + let moved = false; + if (isWalkable(directX, directY)) { + entity.x = directX; + entity.y = directY; + moved = true; + entity.stuckFrames = 0; + returnFlowFields.delete(entity.id); + entity.needsReturnPath = false; + } else if (isWalkable(directX, entity.y)) { + entity.x = directX; + moved = true; + entity.stuckFrames = 0; + } else if (isWalkable(entity.x, directY)) { + entity.y = directY; + moved = true; + entity.stuckFrames = 0; + } - if (isWalkable(newX, newY)) { - entity.x = newX; - entity.y = newY; - } else if (isWalkable(newX, entity.y)) { - entity.x = newX; - } else if (isWalkable(entity.x, newY)) { - entity.y = newY; + if (!moved) { + entity.stuckFrames = (entity.stuckFrames || 0) + 1; + + if (entity.stuckFrames > 5 && !entity.needsReturnPath) { + entity.needsReturnPath = true; + requestReturnPath(entity); + } + + const returnField = returnFlowFields.get(entity.id); + if (returnField) { + const returnVector = returnField.get(key); + if (returnVector) { + const pathX = entity.x + returnVector.dx * RETURN_SPEED * deltaTime; + const pathY = entity.y + returnVector.dy * RETURN_SPEED * deltaTime; + if (isWalkable(pathX, pathY)) { + entity.x = pathX; + entity.y = pathY; + } else if (isWalkable(pathX, entity.y)) { + entity.x = pathX; + } else if (isWalkable(entity.x, pathY)) { + entity.y = pathY; + } + } + } } } } diff --git a/src/NosCore.PathFinder/NosCore.PathFinder.csproj b/src/NosCore.PathFinder/NosCore.PathFinder.csproj index 5f13811..6ed75a6 100644 --- a/src/NosCore.PathFinder/NosCore.PathFinder.csproj +++ b/src/NosCore.PathFinder/NosCore.PathFinder.csproj @@ -1,7 +1,7 @@  - net7.0 + net10.0 latest favicon.ico true @@ -30,8 +30,8 @@ - - + + diff --git a/test/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark.csproj b/test/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark.csproj index 5d489e5..a496211 100644 --- a/test/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark.csproj +++ b/test/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark.csproj @@ -1,7 +1,7 @@ Exe - net7.0 + net10.0 enable diff --git a/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj b/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj index 066585c..cf96f30 100644 --- a/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj +++ b/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj @@ -1,14 +1,14 @@  - net7.0 + net10.0 enable false - + From fadb0058697604191eb8c23165b9d4addb7a1f9f Mon Sep 17 00:00:00 2001 From: erwan-joly Date: Thu, 15 Jan 2026 17:48:49 +1300 Subject: [PATCH 06/10] Upgrade --- .github/workflows/dotnet.yml | 9 +++++++-- .../NosCore.PathFinder.Api.csproj | 4 ++-- src/NosCore.PathFinder/NosCore.PathFinder.csproj | 8 ++++---- .../NosCore.PathFinder.Benchmark.csproj | 2 +- .../NosCore.PathFinder.Tests.csproj | 14 +++++++------- 5 files changed, 21 insertions(+), 16 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 890fe59..977b0c5 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -16,8 +16,13 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v3 with: - dotnet-version: 7.0.x - + dotnet-version: 10.0.x + + - name: Install libgdiplus + run: | + sudo apt-get update + sudo apt-get install -y libgdiplus + - name: Check Tag id: check-tag run: | diff --git a/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj b/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj index 12eb056..d239a20 100644 --- a/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj +++ b/src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj @@ -13,11 +13,11 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/src/NosCore.PathFinder/NosCore.PathFinder.csproj b/src/NosCore.PathFinder/NosCore.PathFinder.csproj index 6ed75a6..0619ca7 100644 --- a/src/NosCore.PathFinder/NosCore.PathFinder.csproj +++ b/src/NosCore.PathFinder/NosCore.PathFinder.csproj @@ -29,10 +29,10 @@ - - - - + + + + diff --git a/test/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark.csproj b/test/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark.csproj index a496211..8980ad1 100644 --- a/test/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark.csproj +++ b/test/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark.csproj @@ -6,7 +6,7 @@ - + diff --git a/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj b/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj index cf96f30..9a053ce 100644 --- a/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj +++ b/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj @@ -7,13 +7,13 @@ - - - - - - - + + + + + + + From c298104242f6aff766949568a69d7f4d98d4d3ef Mon Sep 17 00:00:00 2001 From: erwan-joly Date: Thu, 15 Jan 2026 17:50:46 +1300 Subject: [PATCH 07/10] Upgrade --- .github/workflows/dotnet.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 977b0c5..2181b11 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -22,6 +22,7 @@ jobs: run: | sudo apt-get update sudo apt-get install -y libgdiplus + sudo ln -sf /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll - name: Check Tag id: check-tag From a21aea29cd428b858ae0108d6479792341f71984 Mon Sep 17 00:00:00 2001 From: erwan-joly Date: Thu, 15 Jan 2026 18:16:50 +1300 Subject: [PATCH 08/10] Upgrade --- .github/workflows/dotnet.yml | 22 ++- NosCore.PathFinder.sln | 23 +--- .../BrushFireTests.Test_BrushFire.approved.md | 4 +- .../FlowFieldTests.Test_FlowField.approved.md | 2 +- ...sts.Test_FlowField_MonsterPath.approved.md | 2 +- ...Tests.Test_GoalBasedPathfinder.approved.md | 2 +- ...Test_JumpPointSearchPathfinder.approved.md | 2 +- documentation/brushfire.png | Bin 96548 -> 72664 bytes documentation/flow-field-path.png | Bin 64628 -> 54837 bytes documentation/flow-field.png | Bin 63376 -> 52621 bytes documentation/goal-based-pathfinder.png | Bin 96258 -> 74393 bytes .../jump-point-search-pathfinder.png | Bin 21190 -> 10022 bytes src/NosCore.PathFinder.Api/LogLanguageKey.cs | 29 ++++ .../NosCore.PathFinder.Api.csproj | 2 + src/NosCore.PathFinder.Api/Program.cs | 93 ++++++++++--- .../Resource/LocalizedResources.cs | 11 ++ .../Resource/LocalizedResources.fr.resx | 106 ++++++++++++++ .../Resource/LocalizedResources.resx | 106 ++++++++++++++ .../NosCore.PathFinder.csproj | 4 + .../BrushFireTests.cs | 65 +++++---- .../FlowFieldTests.cs | 130 +++++++++++------- .../GoalBasedPathfinderTests.cs | 92 ++++++++----- .../JumpPointSearchPathfinderTests.cs | 53 ++++--- .../NosCore.PathFinder.Tests.csproj | 4 +- test/NosCore.PathFinder.Tests/TestHelper.cs | 119 +++++++++------- 25 files changed, 635 insertions(+), 236 deletions(-) create mode 100644 src/NosCore.PathFinder.Api/LogLanguageKey.cs create mode 100644 src/NosCore.PathFinder.Api/Resource/LocalizedResources.cs create mode 100644 src/NosCore.PathFinder.Api/Resource/LocalizedResources.fr.resx create mode 100644 src/NosCore.PathFinder.Api/Resource/LocalizedResources.resx diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 2181b11..f619f3e 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -18,25 +18,19 @@ jobs: with: dotnet-version: 10.0.x - - name: Install libgdiplus - run: | - sudo apt-get update - sudo apt-get install -y libgdiplus - sudo ln -sf /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll - - name: Check Tag id: check-tag run: | if [[ v${{ github.event.ref }} =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo ::set-output name=match::true + echo "match=true" >> $GITHUB_OUTPUT fi - + - name: Run Unit Tests run: | dotnet restore dotnet build dotnet test test/NosCore.PathFinder.Tests -v m - + - name: Build Artifact if: steps.check-tag.outputs.match == 'true' id: build_artifact @@ -45,23 +39,23 @@ jobs: dotnet build -c Release dotnet pack -c Release -o /tmp/nupkgs -v m -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg dotnet nuget push /tmp/nupkgs/NosCore.PathFinder.${{github.event.ref}}.nupkg -s https://api.nuget.org/v3/index.json -k ${{secrets.NUGET_API_KEY}} - echo ::set-output name=ARTIFACT_PATH::/tmp/nupkgs/NosCore.PathFinder.${{github.event.ref}}.nupkg - echo ::set-output name=ARTIFACT_NAME::NosCore.PathFinder.${{github.event.ref}}.nupkg - + echo "ARTIFACT_PATH=/tmp/nupkgs/NosCore.PathFinder.${{github.event.ref}}.nupkg" >> $GITHUB_OUTPUT + echo "ARTIFACT_NAME=NosCore.PathFinder.${{github.event.ref}}.nupkg" >> $GITHUB_OUTPUT + - name: Gets Latest Release if: steps.check-tag.outputs.match == 'true' id: latest_release_info uses: jossef/action-latest-release-info@v1.1.0 env: GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }} - + - name: Upload Release Asset if: steps.check-tag.outputs.match == 'true' uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }} with: - upload_url: ${{ steps.latest_release_info.outputs.upload_url }} + upload_url: ${{ steps.latest_release_info.outputs.upload_url }} asset_path: ${{ steps.build_artifact.outputs.ARTIFACT_PATH }} asset_name: ${{ steps.build_artifact.outputs.ARTIFACT_NAME }} asset_content_type: application/zip diff --git a/NosCore.PathFinder.sln b/NosCore.PathFinder.sln index dbff829..51774cc 100644 --- a/NosCore.PathFinder.sln +++ b/NosCore.PathFinder.sln @@ -1,16 +1,12 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28527.54 +# Visual Studio Version 18 +VisualStudioVersion = 18.2.11408.102 d18.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.PathFinder", "src\NosCore.PathFinder\NosCore.PathFinder.csproj", "{8DC7839A-EB02-4E71-95DC-2D2BD9651E19}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.PathFinder.Tests", "test\NosCore.PathFinder.Tests\NosCore.PathFinder.Tests.csproj", "{BEEC67B8-A63B-43DE-87A5-73341AEFD62F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosCore.PathFinder.Benchmark", "test\NosCore.PathFinder.Benchmark\NosCore.PathFinder.Benchmark\NosCore.PathFinder.Benchmark.csproj", "{159A99CE-A97C-4215-8FA8-38BC7C8D382D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosCore.PathFinder.Api", "src\NosCore.PathFinder.Api\NosCore.PathFinder.Api.csproj", "{6642B6A1-6EBE-4E38-A812-435286A0E04E}" EndProject Global @@ -47,18 +43,6 @@ Global {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Release|x64.Build.0 = Release|Any CPU {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Release|x86.ActiveCfg = Release|Any CPU {BEEC67B8-A63B-43DE-87A5-73341AEFD62F}.Release|x86.Build.0 = Release|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|x64.ActiveCfg = Debug|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|x64.Build.0 = Debug|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|x86.ActiveCfg = Debug|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Debug|x86.Build.0 = Debug|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|Any CPU.Build.0 = Release|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|x64.ActiveCfg = Release|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|x64.Build.0 = Release|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|x86.ActiveCfg = Release|Any CPU - {159A99CE-A97C-4215-8FA8-38BC7C8D382D}.Release|x86.Build.0 = Release|Any CPU {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Debug|Any CPU.Build.0 = Debug|Any CPU {6642B6A1-6EBE-4E38-A812-435286A0E04E}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -75,9 +59,6 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {6642B6A1-6EBE-4E38-A812-435286A0E04E} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} - EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D9A2E4CB-2146-4D11-8C4B-3955720D5844} EndGlobalSection diff --git a/documentation/BrushFireTests.Test_BrushFire.approved.md b/documentation/BrushFireTests.Test_BrushFire.approved.md index 9d0b862..8e12a52 100644 --- a/documentation/BrushFireTests.Test_BrushFire.approved.md +++ b/documentation/BrushFireTests.Test_BrushFire.approved.md @@ -1,5 +1,5 @@ -# NosCore.Pathfinder's Documentation +# NosCore.Pathfinder's Documentation ## Brushfire - Filename: brushfire.png -- Checksum: 7dcc6fcc2533ffe40798dcd1771c3c1d28d10fdf10bed8a4b2cad8ef8bc4009b +- Checksum: 29051db500b2fac5499053f08f66418ad3d6d43efb4af774d07e5ef6e0c9abaf ![brushfire](./brushfire.png) diff --git a/documentation/FlowFieldTests.Test_FlowField.approved.md b/documentation/FlowFieldTests.Test_FlowField.approved.md index bed1792..308b784 100644 --- a/documentation/FlowFieldTests.Test_FlowField.approved.md +++ b/documentation/FlowFieldTests.Test_FlowField.approved.md @@ -1,5 +1,5 @@ # NosCore.Pathfinder's Documentation ## Flow Field (Vector Field Pathfinding) - Filename: flow-field.png -- Checksum: 7dcc6fcc2533ffe40798dcd1771c3c1d28d10fdf10bed8a4b2cad8ef8bc4009b +- Checksum: 29051db500b2fac5499053f08f66418ad3d6d43efb4af774d07e5ef6e0c9abaf ![brushfire](./flow-field.png) diff --git a/documentation/FlowFieldTests.Test_FlowField_MonsterPath.approved.md b/documentation/FlowFieldTests.Test_FlowField_MonsterPath.approved.md index d286c04..c3a7144 100644 --- a/documentation/FlowFieldTests.Test_FlowField_MonsterPath.approved.md +++ b/documentation/FlowFieldTests.Test_FlowField_MonsterPath.approved.md @@ -1,5 +1,5 @@ # NosCore.Pathfinder's Documentation ## Flow Field Path (Monster following vectors to Player) - Filename: flow-field-path.png -- Checksum: 508c4ed1101bab0cc5f36e6e785a69b6e7892a9a511ebe23b338e4edf1cebc6a +- Checksum: c7697a4c6a7405866a41bab1bc4cb58ad5fa501be81ab3ecf80e72d4d78788ff ![brushfire](./flow-field-path.png) diff --git a/documentation/GoalBasedPathfinderTests.Test_GoalBasedPathfinder.approved.md b/documentation/GoalBasedPathfinderTests.Test_GoalBasedPathfinder.approved.md index 6288f47..c689cf6 100644 --- a/documentation/GoalBasedPathfinderTests.Test_GoalBasedPathfinder.approved.md +++ b/documentation/GoalBasedPathfinderTests.Test_GoalBasedPathfinder.approved.md @@ -1,5 +1,5 @@ # NosCore.Pathfinder's Documentation ## Goal Based Pathfinder - Filename: goal-based-pathfinder.png -- Checksum: 508c4ed1101bab0cc5f36e6e785a69b6e7892a9a511ebe23b338e4edf1cebc6a +- Checksum: c7697a4c6a7405866a41bab1bc4cb58ad5fa501be81ab3ecf80e72d4d78788ff ![brushfire](./goal-based-pathfinder.png) diff --git a/documentation/JumpPointSearchPathfinderTests.Test_JumpPointSearchPathfinder.approved.md b/documentation/JumpPointSearchPathfinderTests.Test_JumpPointSearchPathfinder.approved.md index d48274c..a5a9f1c 100644 --- a/documentation/JumpPointSearchPathfinderTests.Test_JumpPointSearchPathfinder.approved.md +++ b/documentation/JumpPointSearchPathfinderTests.Test_JumpPointSearchPathfinder.approved.md @@ -1,5 +1,5 @@ # NosCore.Pathfinder's Documentation ## Jump Point Search Pathfinder (break at walls) - Filename: jump-point-search-pathfinder.png -- Checksum: 0944988268fb7f1f6601bf1516aaccaca25a43bb583c5a92b1da3d6cd4f8ccc7 +- Checksum: c255a02a91718ee50823cc1f4070d782e7a06f9e79cabcd1aaad780882b4c165 ![brushfire](./jump-point-search-pathfinder.png) diff --git a/documentation/brushfire.png b/documentation/brushfire.png index 13b0a58fa6ae304a61a82ecdac8375eea07733c4..540b68d2eddd9d7d35a4ecdd979fb83ca50ffdab 100644 GIT binary patch literal 72664 zcmd43byStzzV?rRgwlu-ix5GiBvrbkySp2tq`L({Iu;?_-Hnuhq%_h3N_Q`s-&{V= z-skLhoc-5tyyx9xER0)R-1l6wuFvy_-jNl!~DIAOYqX3jUfKgXEU$r@z_)cTOpE$?FF8;B<__oha}GJ zot71^gq<|n-2E6T3Gfm;mHzXG`=}@6#fmg>_}Sh>x$+mb@1ys zBN$fH@C%tl(~|HDLTnZB@NfL^fBy~m#r3(nA1URisA^EBy8Lw8?8N4mj+Ntc<64P& zJ9d3MoF2ioRp2=Pz9$!rK}_R+e)ag+#-Y}Y%kg_PttG!3i&xW4+G|`-tC`aE$n}CP zydm{G=-Bi{!V;%RbyRd;OEMdCn$k&-H0A6!{GVU9Z?btRbd17ZjnU?(#9(o4WUwC( zvgM1Bd$B)R8)O?E+)sC&wXj(J@Z{yKzj{O!c(K<)B6-i$XN@9xW2Um-x$^$E_r6nr zmeKXRz_!wJUH(wB;5?W6uDs>-Zqs(z=3eu@EclBv*X{Z5akF$U=o)B+la*MxyfKY` zysyiGlbWVks?!)cO-j@kGJd}D|JD#Y{QYAptAwk5yVMEVF>7fadyYRe%yK~!a+YWQ zbl)x=2Q84G>vcNGz8r|3#|xWhiyyL&>;9i#*S4Z=`d14si@7(jMgBYGk3+OeCDlX8 zHmw(HC*R*J=KOtEe?9ZR{(AR4@~k2K%}>{7cfw}>bGw2z5setG{NL(a|G&F;IJy;V zcDs23xy3zKv;tycA<60fI;WeMmFm^krH(>e&>c}QCByaq@w7+hzZVqo*^Lulz=zXi zA?yFzIQsXGy4$6u=M~?2eKf#+Hf>bzbqBhJM2q{Wq)`})C>_!2`L9n*V;sN3#?NkE zth%nJx{M*?OGh=i?DNfgXy;?|Uo(gE-=164jEYK8dtB|-j|bw*P8)FYoi7Dw4~-2d zT!1b-_Sv>IXK^-*(*0Z ze{qrQdAXT?(Yjdz!Sy_wF}v`vQH!u`yK&yQ%3V~eQEBmjVfpZyyKIuo#vAoUJ-rBa zu0PoxCBU%aZeKcxk$TzpW=Qj0>8trG$H4q_Z+A`i&D`-6hoK}%kpM?9nAaXu?KN#< z!T7?D`e@QqpgPVo?67%37%b%l)`F?(DhV?71zLl6Qym4#TTg zW<8`X(%F%Gmm^a|C3;|PxVY&DQ&LK~Lw_VP8@h5cOcN177TjWWAAMQhki{9n2*GN-Z)lcVE zqW-j_-K_kx>#vYwC))4L`>mg^BEU4mS}#%Bkgp3K1wJRNEYc(y$FOggR6iz?k3Mk& z&ou4{etr$)WD^M$Yv0Mc4s8q^9lAhaY{Bo<=tWnH9xz~xpZE8ls3N0-DwzIts zlb9NXe3_FG`Oms4%GuN-l- zi+adB7&ouO7NN9xy-17n1Bbb}B7~d0`kz5gSw4w5Qp$yDCbTk@;!vbf^Kl z+D?-yZc*Y#!5$$3t6863_6ttg4=^T39)Wc&pTzb{<*vtO<@u=Oo)xfS11`5pT2 z!LS&{6bjjxAXMiC3zo%JVg8Utrz*z$CPkmGEcb5BMXksa9riaiVEBr$Ac^#Ml%OJM zRt+wwd8h{RUTx9?Osk7QqX? zR|>|8c0^jlR-^vPQBe}i?@er4&0slSO{%^BM4MRz=k)JkA%uU4jd%=SPKTGGg!K`o zLw%w4taGA1Sp97J?Y=y&Ow<+Bqp}&_y}qs+f6F5nm`!@0om%vbp@i}oZWph*q`nj< zAwTZ4Ec>XiThve77~H|Uga+zB>I~0%WG^dfiVh_)JE00e1Vy^7*Yr{iSjZw&qFW6< zc`5e&+Drmtfs2J&xfu{o+1aO;ZI+WNANW$c4CoQX{IzE1owY=o5O0uRkJ8hLjQ8%i z@E%eX7ZI73p~A>J%KUbHt||N&Q_)iIS0^h!rt5wh42emIg*Z(pY&QIkkjkYTka!+? z4^;!!v|ZlDmtYO%yI~VLf&eTi3o`=GdWu7k#~tXT5@0;L4|S2-wcjfg-ciW5XOrrr z$l;UE5jysMC0@eJk$26mO}$f{@q5X^rhdV>k#7QZ4@1(m?I*h8%e{KVeg!cxp#_`o z;^RxK4Ow9ik`nG^#{W6LmGa}$lRu-$3WHbb`FUW^t>;$vAG^t6>=j-FxZ-z zh*~rxyg+pdSRLC%)an-)5o8`dHF6I3&7ne;KrUdID?PiOT3mNBwG`B$R5$x9D{-#v zIb2ef!*kkRx3GvWFt%6sa(&;@bE<~>1UoKYM_+33XR>leDdni*(FKYQE_TFGJ2Z?d zm299G^ycl#{no3z0Bk-E7hm`WP&K<(*DaZtS?08gB$!aA9hN z7|*Cz1zXAq7H`#FF6&;)t};>o2AyOlOGmZFy)^ATeJR9=J@0f|=2M_@ZK*X+|(hUo7sT?CR?eZ{3ff+aYDZt@fAp%;1_Yia3K-RUo&{e(pb| zkkITOQ^Vu3(z*xp(ouPhNP~xg+%#yTXqI?QYmyhcAA5EGS+#p00n#;p3GoZ`(*%7I z($gs_qVww#_RR7Oo!?w>nrcmSWDu}(Bz{*CEz7wY=QtvWy81bN)#TBCZF1dcRSW%g zKN6?@Y#Eq)HY$tX&yqE)Zc?@tOsd?Lz`8-K@VfLerIanGv<>^E<3X<#rU#`4R6Nx* zC?F!m>h(R9M+|dD zH+&xVHd{Tfm+aL0#*lBXnCpFly&b~ykW%M-jf9WBDH$Q-L(QnR<%tF~3X0SO;;eR$ z5w7-$P{rIaNTei+dFuvM@ugYbiQ5sDe*Z=GjM>V?MqqP;=KSZ3u0WPwd&&xumM#ZL zLD$W^4#A&}FScU0!=E2|M2PT1-nQlR$0k_f20XOY%ep19$L>N!A2TFbSQnh9N-pNh zH4eAFQ`v1#TsWvJ0>AX&wZ* zRt)l9cyA)xy#KV|lP3RG@|f-`%xVjWt|-n|yq&Q#q1!j=_d6b7VW}CRTLcQEdetIJ zraaOuJo956sGBzYlslFlubs&^W!7JORg`Q(uk)%?cM(yD6Rk=e{ZZj}!~6JGsUd<* zPM=_5T9@dE8keVA$81{P_q$X}h6qP3{mHe|x&webTV0#+xw|=*`>>IM$f~|#mnS}O zrTmhPo#3+=dkqT3wd{urJ}KoUyvU@bYWo*xG+3(VEp$d9=83L+kYUdiTn37VJs|

pk%bY`pNWZkI16J?|hvlia2Yw;-hDbiX#pXMN5Z5KX4UQ;lAKSSPkq+@EX1>;loP|ZeOSD`Fxy@LuP z!IVRW-S#lNp872}bfn4X6_Syw`Gje!w9WDAmK8gx@SJC#=3oeI(*b z*g;+)-ZgtDN?`TWJcJ`=a^s2P=X)^BK2p`hsD`yxO1qp0yHZMOV($%C<{zoFlO+wm zLft|-qs7RQV3i{qtR#4=xQy{Ys&krEVewxdq%@i`-LF=Hm@3nuP#Wi63_=v-^t*j6 zKU>$KPi|H!2T?ae1c&(uxE@qZ>|oMbTgaJ#Cz}mX=byCz`T`kj9d}0X>l^F0fHKd= z2@simk=7`s_^I=E;whEE*BytPE;%JT-f8Y$wh`Ng<)9SxCBA3pOQ+)EUGFyt`Z)IJ z&$6nuQ*K#_FNL-oU>R5S7e9;F-yd7qnBEp6y(}J&JH6{B+r4h*_?VgP$M|Lj>>wW- zVv~6&aS=}|Vx>h+HFcE>d$u|O_1&;7SmzG5>4PLAeGD&aMuZw!UOHV6B)ul1RUv1t zsveH@h}1~6xzF_McXg$nf6~1($0Hsd|6)Eb!(DmuIeYfD0j-~GRCP+kYcQzu!9lM%e*S#qKj`=! z>N+7>7<_fGpcE{2LK^GH;I{eFW7W-A_QvD6g@~fxdM=)PW%q|ENz5WNO*eMso8xH6 z)6H)&UQl(1yF;ZduWlG>T2!$ z{Y-zyK$5bBu_QdFGXd-V4vJPsptxp91b+`G4xkM%ZlZB>MMv6?NT?1&Kl$F{Jf)D- z*+5&>$LW?c9xWGB+7eTmrDxB)Thiz_T}Q3{5|b`ItvWJlMHH|cLmoRGiePLE4TPpK zKebR#HIozA1PL|L>^Fp=EY^3z11vv`d0B723ZPmChaOA`-@jXOmhoaeu*pkVgHWF~I2zPfye&6hz=!u324MZDW|JXG;!i@-bZUY~9}K&c}o2Ez2Uo$jUU01l*o#}TX|jbPl^pM>GS_a+_!wNN`{YBktZP*o z?Acf0T1nWpJk9f{?++XVIKrdB``~YeaW`^n^npNC{1Zc!I2~@^{Yz{A{Z~KKjT&G? z6H2yFZTmiUpf>UpTMoWH+zh2J6W6kBaUwfWB^+FI9GAJcc>tSb9biy0{<;iibBQun$9yO!L+F8K|uR>H?)~$83O<*mFsqQ13RAf0x)C9TCo^#tygz& z(r^I_d7k_NMo*2>0Eb6q0}kI`O^tM6Sxci2G|7FxaeIR(RAJ6Ms{Q#9J9Ct zIn~eGOS!K^i;Y3GY?9!L4njCKsvMs~g;6xbxt>zD+Hm-d#| zT_tygH+F6hBYkq*){kXU%@6 ze$l%T0+^Da_ij59Hik;XbM3!|!X)6#(3cHM{&hD!rS(6PulgA4rYU7ux*u)+^w^hC z({(c;JAnScX60xD>a>pP4KzmSoYQ3*zBJo_$^P1ZbvExnwW% zWxW#hO2M1bU7L4`xsRxF(?QGB?JJOPsEMDAh>oi90a(x|4F~je==AzUU9$B4KS1NS zCr%Yj3Q+lqk}!S?9Uy-jhWj-#(CTS*qT|NA0DF5WVd6+{One%^6-VzrG1jTOgMQ=y zt&GD;wI5Ny_mzVKhvV8Th^H=}hf1N(S#|nqL~MJ@L_4(Ok(4)lCCm&s`Tly20sB`H zr#hfSO2}ZEad?S3vsDBc6x{{0NF(GSV~u?15*We#Z1;hdz8o>JEiP-a8b zehXT`x}zgTUXi_g9ugJ@1-5QclWtSqpAVv7m*A$S`-xr(syFFr0H|M>r4bbF(W)|x z4v+8;smtpRAVm9q)<|})UO`?#R*IG7ve5mdMd?pzYP6ZI;n#6=t%_U|7fW|fa90=R~pGHhy^?=-Mv+m*2kB!w2%JWS*9&~dijf?MNKSa^F)+LjP!m!Y%j z5Hr2(T}U&F_H~;cDlUmLKZfPPEJ@ zNaG{G&{d{{8Zozc= zE3^309BWB(Zf%@2)N7ih5w?%NsJ1fd0OSLcx%#GbHREaasG;i9{`QuwlEODC!5uA= zm%7N4w=!HIMUXi3=>E|-xK_liZTXd!nQlbO7f|BP-+Q`QKu(1~UwB8+$PDJ$_Q{y>e$iMi_}8 zg#>yT`P4^a9f<}MPd@0bz0MZ6PF&8W^l*>X|8%Tw-40Xybrj)BQ<(XE^wo@VnpQfu zx;pw_9SUUAcnmsVZsL^cXVrm5RLaF`Aejota&6{((ay-Gex(ya&BMTg@+2c7H2iWI z|9U7~{65`s6n?*;UBpnof{6(IwXRCR7%|g`pIUm05cE@tVKakHAr~ELs`$-m%qR;( z%gLCVEgjn}Ln&29XZr^a<_G;9KPjPYtZ12#9r`R5Q`4uR|LnO)0#L&21sG{AIdX@- z+0~HqPq+1JKBV7@(P#$PG)1|YrQ#_QW^6z0YvR`B<7I(#5|h_Dj?3;z;GPu(I`0H8h|AZlUtG*3(Bh zb0P(Jf>Wtqk?=t$87=b$rH7`WK6h65l*+o=VzKItuH-sL){d!)#nx)UnLNhJn%Hze z7LU>l&X63iqeEJ^ii+)DmsvVKqp0rnV*pSBoqSavTfN5qps^SkE#L(ocWPHd2i8$h ze}_+BMeM6w$nX2y1qHNl{PoPz<5iY-#TNgTN2=5gzo;@4Ex6Qk5y5}E^Hvj2i<%VW z!pk&%TD7D99-5o7J@Bd6mN@P&{nZ02sR2 z5n$XruoS&o0Cl~KB@8U)r%FP3!Lg5@6|r)k3QC-ML{bDlQAw}X#Uify0h8*CA%ao@ zeSG`t_&5=rE7Hag95hxi^1esSaU0rhNSFkkeHT!))0R5zBU~a6D z

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 apL9P&IlhYvJ`CLi|1{N3sy;Yw9r!=Yn*B)t literal 96548 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%0Agq?nM70c79Pop;SmnaiNUZx;?Q)i?bLc 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 diff --git a/documentation/flow-field-path.png b/documentation/flow-field-path.png index 9ba97001163105b6d4ec82c5e6c3600dc039a27e..2b743686bc7f4639496c7c76612612b7244722ff 100644 GIT binary patch literal 54837 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 literal 64628 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%0A0c7I6 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≧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 D4uBnd literal 63376 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 diff --git a/documentation/goal-based-pathfinder.png b/documentation/goal-based-pathfinder.png index d46ee009b562b02b6e353d7dcf818810a586046e..c636a01299f14ba75e45e7d4482e88babef6a5d6 100644 GIT binary patch literal 74393 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 z

u1HK%I@`3Sw+qXf4|EK&;4VO%TgnIAw;qdvU*E{PvkaUE|$qku?@g}BUT$;%R- zB!r?A_e@fM?$2Zdz*SM1CV@cPR8!GYP5x{0-y0!QJKq`1slM+QsJ2fLY4SJx2yJH;(kVC1+dj?I%vG5s+rwREt0oPs^w>ln zD+@&xbJHJ4XuZ3=T2Fs4%6UJ>&(L}0v%o-~CJVE{3{o&z4ORt*W1c&c|5o);qeimA z^0eLABd8`89bziVFlHIw8&VXF`tFB5w>I>$twx1-9^}R2D19|bd?+0X@{x0sCVT1P zPV@G0xqnqHbl%;K5@#H9BgLojdQE?g3=i<(=u3{rocKKY&=WH7(QcZUM%kf&xcXiE z)_bJ|{}OwB43$MASqh;R3g$>fENIh_wxcP#7L7m=Z?S^^F&&ZOV*TtW^vhVZKn{O- z`g{2-@K8QAWFIp^(tCTgSsdE4?a!GAf{?JLZQGaG6h<~H?>^;zx=ygiDLJ0kf~LiV z4t);afIMpNvt;o4eJE}G^Afh7o|S=Q#>VS`PDH4PCA*UYQ81lsZ|Q`|;e2iD;CqaP zGUNI?TrUWtTeeSJt(A-h1^&|Wi%o?HxQ$MDBxe;j9CFH^ZFxRKyqagLz73;#~@5<{=GR?Nxk!YTvF$4)sgu zHGSh%HEB~pMa_+qD4ePKAx3K!kAK$Jka9@1*G6XW+RlscC)E!aIv5C$bYzK)B`7t7 zQQCJpX25Rjt;qu6L={yu=IM@FCd6@xCyiE-Q+$mXjdLy0=xC6bl(cQ!O)NQD)B9re zc-=G!BbWt{I~-hLk>saV{r{-MVpWeYFcx15qJ*CWJVbF@(TuH#Z00IVj$PPx75Zv^ zpC2nnC{_RJo)%3JGR~Ds5>eO$)|>lN0k6Z*u}#N{m42c>($FPFj~rQc>rGMq?xm6% zrtPz0f=u-xRT_jJ`z%l!=~Ps0%6`jp=N$30k#4thgx(+e7(cK22cj(!VO8G^b8d zXF~1Z2(kRul=5+KhZCk>2qW+!?b~!-WSc5NzgqVZU#)fhKymQ9tIXLvBWrME?7;bC z8n3@&nKhc(&d`pK(MVm4ldwcgHwLX=P$)3H_XTP|q$RqovP=`1Od)yn9Q|cS1lbdj zJ6ww(C`I8j42oiFG-{(p8>e%l5BJ>rhO4ZC{oKR?9QKNx2i&BD5m;H#>-(O6W{3}) z2Vt0z^l~B3v zAEQOGVniCIMP(3%L^!jnon@e4fa0^0susG?)fb=OuMzCbr=7xZ-^G|*{C@!a*%d#B zJ0n1uH~Jfy$Ie8#UfUyrRaYRH#z8q6zX`JFeP!(q)TQgd^x%qfE*IHg`4d$$apyPuz%*?ChYu< z-`v!*+s7)SfDGOsmeL1BEHeOx-0(hU@u$KkfCpJ0P?eFdygX?38M#tyhf-U~P> zb_5Wh-pjVEaZM6b-^D_gqTXUj0NJfK2ZJvVaEbj$P^kyp5FDZ zCkC?%|6t&8<^xj#E2gJ9Azz!dmSoKTLZ^nAR$+l0vBn)^wTo$F?9!dUH;?<g z()7rcPR9EAm_<|*ZJNRT}F zp=G<;Bu$zZp)AgPFthzU**pv20NCW1MMVuH2k9 zij)E74>LO6-%6RR;}+uuWo@^YZWLejR|~QuBmu7&w!;)C-1u^_x1MMeaT3gb{WRfs zPOPjXAaB}SOTI`!7Ew~7oDqDN8`=^4H=A;enQ))L@jGMg{rRGYE3)hLyTkM)CWlA;;W#j1PntNcO0h^O2@AZmZUtKz#Zm+jr?;ODM?!w za$uZ+#EtJy0!Svqx!F9as+C)qmrMuW3~wF{FbxNYAQr_ibI=fa!VM$fhWX~N27O~r zs2doGBo=@VC2!XQj2Ndh&Ut_I=%=5ryoJw65YH4VlLL{px#yKA%q^|U6D1fx`H$J*N03wpglRK zu(!B&pTG<)b_wY9&r6&<*T=yggt>h5b=&1uG3ULB;YVbzT3XH3SPwa>O`-gj4v>q$i)p6GIj900S{+Ri#C*s?fE41*E` z6mCvT;S6W}{5HFL$qR@BGR=rrQ`&4d7sEb7;mR$CbShp^;z{ZY6)Q1PYhf0TkmXBX zpdu~gLN)0UsQ(s&MGFgXWLMWb_=D9!_DCTSY#c7 z>qD24*H8b#8+LQn^{e{+rT38+OVytbg^@^zLMa03l8_&I`Ox|?uIf7<1CrP$b+QPo zHduGiccNOVza9rZeH*m056y@qpxWK@LDVwMk|NVms80uj#gkOrSDt(;aX!f~l-8aX z)u(5FqEt~Hi;o5<^M`CTr5kUjk48gtkUJRZCFZONE($LN5w&a*|6w|HlS~zbN?*a< zre^3#2A_OGWnVWr1^N0tCZ$SsjcbPvW$9ueIuo;*=4Bz*sjRnG5pjtsr%I-Oh2hs0 z^$YgsI{h#v!7YS1-2r2gy_p0eHLL053)F!X%1`d_stwmWmrZ_2V0I}Z3bTcqFz(7w z>lm=tZ`}R;I+*SeB9$thePBWAweReHti=#1wxu2~Xdj2L1(=^SwIM`E$fXnW&7jom zHh7*#Y_+FLA=~Zxjc}IH)!H$srpG&+2r!3f4xAku_+$F(cuN++kUgk;0N8B&W4%DH z06as(Gzm_hbH;Eu4t12?G_=j$ubbpE^LImh32kDH)x|5jmmV1(KTi+vjYs%YQsMo( z=j!D#_PH50@(~(lsjn9G{x~pV<1!*?|H(A$t1GnE`svFDeU*>)@SZZ5h&8`Q z4T-(9dLH0nI!_eoL{HV%e)ARKNh;&j^9>4hD!=d25PbCN@2|D!?)xo_Nin6~eQ)`R zb$VUayw@)gf7nCLAODd{Q^ry`SZk7nkBUfw&&{u7V(+_oqPNFZhmOn#4PESvA z-fP)fQcz8ZV;z_HqOeO%o|L;CrefYay{}#Lx6or%ICH4ti96k4FMAZEfn#@o9ZxHy zKhTP3%DV?9@S0xAPb-5oPdIv_d<}RGE%Yf_k z4mi_dU&%|^x`;Ur;Wn6Ql!M1O}?pIJlGDKt3hI68y7xgtZPn6s)M6rFv% znWd5;dK*Jw2w=xYj$Gu$^+B?-hZ4atcxtO*1*jE&kTP;8%J!jW-{o zZ~P-%|SK}ng0SK72 zAdpV43HNDiwoPSky4&jxM6IpYGdle^8mAjEisTxsRey?X*t0rk7HYdMZ&0nLz{cir z(L!nQ*>t66rBf1ho6;Iuz`}FG*Sm{%w=QYR)SPOiHlblePP6y$v>2X-;}o#bi)2h( zqH*$ZR}T$Vv5evvOv`Hb#^8 zw;MfVk4m z1x!h47O_*#zhM`4GA?UHugOUsp4~eZr5F3)@##`wOE)XJ`-o*r?8IKU4X&YT%1_7# z-6yUh#dmE;LlmHQ@9iYs`3~(P@AGXpRKVA<%v{QcpW=T%8uNtib7}nbsUnafhUzoj7?u)u?RYBA&6N&5TQAyl1 zCeghK3&8u!+aciSel09y)^WT%P2bIm;!g+d9W}=!WTp@i39=W-H)@(;Ypb?A;?Clik{B}TzHP!4#ujDazK$rONrnbQc zf}>VMXpIsU7n(OsL8$XI_LXhHlUyF7gEp1;Y^OYmtiNhuMGLEdf?g~&jqL4#+5_z@ zgCOa>M@cXcB;i?nhe4dw!ni7sl#X}iph}~X4!}!i%bm|1%%>ajWrAo6S&mo#9d7k7 z^45-8?yVUAAQNR7D*6~)x1@Ur82Vj>39xAXigP|+4kjNmGq=-Ip?RhjGA>@!L*N8s z2*4tmcJ{|05M*FOH7=c=>(c( znxVWbLL7|S9Z-I~KtS1J?C&^Yftm`}fI?MZGs>ozl-yb;38epZn6e1;t(tCRW_?IOd(a-A`(S zT$ZLb7a?KxBX*dCI39g3R`n4k-7BPpC$kYGy&>(r`Wb|7ZTcVV8HlXvzWhaxvHJy? zwRp`~h*1n6S`(JsIu{e8nk+(r1@K9DxI^BOjY-=w1;2&-cr~RM2GOT@6f7}|B{h(BC zyJ9a5idhB&nMa=2hdmc&{j~WQUV2_YsWw93CH{>+W`quxMX!Xp1(1@UIo+LmBLW2K zeh&KcL<$&*6R--KT!JLT`1$Y1bWsxP8s(~g@A!acP}uhxe%F;wrF)%eT!Ib!vDc4$ zxpZaLSuhL#lW**gW{c6y(4>3Dd;<{z**T3e^!)@+TX+Oz@y+Pf!`64L>&~nC7}ubZ zy8@f5HKWcfB?fmLdjo@+>2o9gtFI#6s;X~HRm(aa1O}2H^?^7|61;?$xta+472}{r z^EofodG=9vW-wXuUfbPm-Trrwy85d|0Rc5Ec!A#fO84&e=8uOYOMk?p3s)=$)c<+z zhL*gVck86!R*cXnDc{l|oBuZT+kM0n2Fdj5+x6e!XhIOVvw zOY0k-qlwZL~e_dq@-V5)DIBkl}$w`(HGQoXK{)$^IP|{J=uO zKFo8R0{{^>j2vYDoNYY7$bkJa%Mw3=Zv;4Blr*3I&>9DDDH-mZ)z%ZAfS0)4+6VM2 zsW65B3_O}w8+<)y)!8zvpJ+cO2My!%Z!II$HDmr`KfiYc*it-_zJD29?Z>Zx?kx?} zr`8tNUADwsS+43%;hS@e&Pt> zs^_6e_pFDNo*@Z4LrgS*otbZmlDjYp_Wj0o!Zq zO{GdTi4)iYGs@s8s1nKn8UnBm&v4zSg)ps{Qkj?%&UK~mdmuF-$vpE`)!)Z}Z#347 z>j`LZWlGcUFTn@Pb6`Xv!ap5~kjm9rB3}C|xa$`%45bG|#UN^3zCpB!Y1}pKL+?e; zn@;Y;Tg1bC#6lvaKM-08r+)E6g2~`*)c_Hn_8`|CP z7etNtxLROz7Vs^p!^0Rvp-f+*R+C3FbC`t?It2(mbV{A^hlip>gg8yp+}1KzGXl(( zx~42^GNlfCXmBhBdP&u65eiU>lUVUF6IrURd+ik z+%HF74tEoOV8^t60Dv90X~I$x9!lsb=h9RdXqwy)tS-0_#bWkItuwbIk!3xn;0B*o zIO>?UMfN+P(dI8xc$LO*f68~br%I8b#oE8AO z|Eo8$45UVF_nw6K**?M$fPz)+OIY%^MEipqwksY9g8>gw)mpK2wYE!@!(d~_AZhj~ zL%7jd4a<~`Gi3ur|IB{2iM}1U>H4_~kDG~f2t?n=F_5$XhG&oZmJ_TC!IUsuryTUD zY>6Ax)1(f4`l_Qr|C-M#FYY6?)Agy|U6+iz;6DNPn}8g=6lSsk-8XQ+m$L@ve1 z)y%Lr^pB(CG-VQjig>%)DwhIR(K;k+_+9W-_zD_&v865DRP=35+-ffsZ;^`KZVZOX z%=z`svpg?Du%~3Yk)dTvt$E83|E+hBip^%3xWY0+S!Xgm66AFPh!QuKd?Bp43?DL? z2PORi5_{7`2@|6>skpm+`o2WVWa7om$~y%P%NY&&X#Bvhg_NQR6pTpS*KC>_YP-AH z*T%xS_!tyMDTPhMQz;f7*ar}OI_$lJuR`BIf+k=k&#G#dB7LrnUiN@+_~*Otx|0_E zkVjL2+Y0;q=H(z98yR(jszozxXg8(fvN|k%;q2o7#!Hm?5ikzG_LPmJ>x?PJtzHgs;3R{UsBOb1KH_qfcwx40z-bp z51)#zNTg3_HniANK|Q~ir*|Kp<6^03b+^~605eLvwY?)%J;#er8gxS_Ax)D7#IelB z(ySlj?RRCXU*g{5y!tMo>Vo}cKYF-z-hKcxR=L2GlXK$J65Ut2>Y`E;65ZM=za=R0 zGc(1gkqGBhaptJRg0rlIqT;^{RcJ>W1Z24F1`H*cYv%5WJg+ zF_gi^BfYGpWYiU_&1TG#?&o+(+BUBdi_QHQr926R8Ob(~mz@h%;<7b=Ji-j8n;HAT z`)1I$0#Y~INh+ukL02HMVlUiECbPv)DF0sl(VY6m649fvbUR|+tB9-KP$6F3wd0(2!(J-D(oLZVT>5>;sCg$!gli~8Q%?XOfK+`C8i~dYKo|{+uZ9cb! zIH^hk#4k(*rF4TPLx*Sfs##sb6j2T|wr8A#0rXf6VJOZq6#HgR291gPB9_Hw%vCr% zuT@GU$7Kt>78XQF<`q7*A8`|=6T>ePi@n6=vO#I22mE1VKmFdzYUJoxd*qE1Qi$mE zUtSPgM$CzVo(}#LV;Q}#%hK6T&N-mC%N4IwW8N2NI`vZj#YOu4j@7n21~;V&;2D_y zj?gN&M;S(6YE)`DY#F!oMKWjtR;t=2<~DEg0h!WE|1T`!bDMoC0I~WiM`b0xP9^f= zgTpW4f(_%vH-KV4x=)0EHj68MXv=&vY@hUz=0WwBNM7>M_rf=xepoa`zYm2Wid|!G zuqctFPB|y^L5);Sp~5&!@To~5mPI4jVLEU+gHt0OiGVeq8}|y^9}`+N9%+Y1g&qtq z=?yBhhcz}sU?I~*#(q(|JKd6q_iLyGkFYywYOC76xnp-KqeN|j-dAh!_% zGz<>`PZ$%z!Av84iL8M>vZv9Pf+9tPfE6>GqDhgWxp9&(d{DQDvy zr*F9Mv-Hn1j$0TZ9Q_20xN4;8KWGm66Um$SBb`Kij8mwjpADRFvb|F_K6{L#EaGlM z$A*Gj1vgCuLjxAki?T>tyS%Ykn@fonJ{H*@Fw_=s5;$ai*2@C0$;w(t9kocUQtghYERTihNfoVi?ZIO6r-^n=MH^3y+P zzdBR+Gdpq9wz0S43%VU)mV*4>@q=N(GeT{FYqEm81tQUEXS7{l)Vb@DyJ)GV<( z)Alcq2btisCYEWYYw5Fp@px3Mc^j!fPz|DSD2ep8{EP?B-;4HrQqhvJ{m`M3_?@PmOnSd#GXoP)*V+}gt^$|Yl6-EAon*6$F z@NJVovlKIlbx`(KJU;JPgA7^L7yU<){y7oMzF`$beydHT!SjCi+-n?&2@_q|Io4Z4 zW5S*x5G5g%O6nzb)A7|w)x4GGaEcOxz2A3?6Ud0bA30LuGBxIQhnUe0qcJ7@2iPJ0 zkCSKqT^1(h0js&ZWnf2u(zAb_F2epFmxED#3TGOdaL)uBYk(6iv_gw$SEJZVfMB7K zVeUXK^nmSkw!pxN0eSy=gvQlYarqeV*GGRNGE1r3_W^DPcoM=QjOCj+wFj^^jDvFU zR9z}5ySY3ZXehOL-zcW@c`5b*74dktpT+fHX+Av+kkdl3NU}m>&!Nh1#Kq&@k?;It z%KN~)o4o&d;|2ylN~R4!jdKvk32xQ9^b*mUY*iYlzl&bzFL>VJ z4uoQYJW@TZ;o%SkFk1=3;K$xn4{_1&f`E!!l!}3`>x@Z4E?D^Z|MF%0S4t)Q5Y*ZS zkxD>~$OWEL0p6EB3-HY{@Wc$=Bs}f_S8_GL`jrRBve(8o#*cE~vAFg&0lt8tshqCB zPJlt;%33eCY5-TjR>DH*0PBvDH~E)(03Gr{sgyc?187wlct}Lk=jN3AIt|^j9FThU z@9g7`=1|(ee{-{{?WZeVp~x2U_Z!xIbJ&HyzO9%HMEo1xquys0ebfnq){69dh44Iu z*PoyYJkazV$XyW>Wh$>U@5{~kDV0@fc0r9(lapVE1+u zh=%4ak!G*A$q%STEYsiu2MTrj?@P^X^8ugGeu=0bBTQArrKxbNWUN0I;%+AE z31`Z4>xRWCs|krQrw4C_Qp?RQ`o8$HVfb>Kw48B(`wlN>G4< zABkb344!|2eKRL^ZHjP%57?#}A)|e2Y=V1?t5oR9wViRnD$*D~rO>UCZk~;-@hv-yiPactaI@J^m1|re#W{W+(_42CjM-qoZ4HQt<;8oMOTcnpTmD!IlQ8pCY#w!tg9S(C;Zy5dgKc*u>~RBv3}D zMaML;`rEOQI(y-z-mEint5|*JDqtj9eW!qJMdW+n?RAzi`5Zaq52Ex;p#LR(oAffFzAFkgJV-iR!P0r;4Eu z3>$2+@VPHIX<=pmg4QC0x`QnJJ+NyHpJrsYLz~_%^&XvpxE^0Ds?uK@V?@36Y#h}S+)M@Qrl(!9UPf{T|h3I<)5t)ipFFPFa4g>br$n)<`#TeM} zd8g=C7h37rw@%_H;=>1O>v`9kC+fN)&JkV(S9{I2@RXASsyNQqvFB&C!e1#4gGg+8 z1E73f{k*;U!oAR=1zW(Qm-_{cx}HiQ|9{k-WmJ`Y+vX)C6p$8_64;cWNJ)ouN|%Tr zNP~0=NT`5xqm-l|AW{O7BHbVjf+C%g(sN$i&pY!@tTmrz=9#tb59;zp_U78x^*@jE zIDW@`7gL{j|004BdAD~Zn!{9P0W5;O+`_Q|bO|CA+t}m1dTWX%lrH6%K`-|ab;FSO z>c!G>ez<~P#Rs$Bc1e+NAcg5M>gbBuMO_a+t1Fs7+3?Kpo2D#?<&kXmo*pBv1zAs| zzV||bW*5&#h@~Mgj4$8+SmjiFor%u=jrZdVS+uDUliB|QqH)Ko)2N;l)3tzD@{5EJ z#b~LgU)CirY{hQ{M&)FM2tb1_^*;a_h)*N?Bcn6iFjJ48t{+wB+hD3NQs6izO=b0P zHmX7vWtw^avW(d-j)~DJtu}sa;Gtr1m=&uR_3T4Yv75?^H!Vgg39^Udik5r9tN*3t zn)UAh-O<}^-Mv2amzr#t6XPDU4!gjjeQ(NsTMASP0&G83f|7UreU!-4(!-+{*>>L@ zin)ly{*t-HFkcg?hC{@IBVqQo?}4ISVj|fXB3$p~TTLp+mb_}D-5(&5rHT>~Ul#Qv z8+rWh1-SxIpPD^>qWp|#2G#1+>BRJD{732FSKeiV=c)z{7outqp0oyG6=>zu`tU36 zddW-t3hEg6;^u+aI{smARHSDW%1q}{0jB33f!&fxew^~Z;2SnKGw@BCmGbnj1Y70) zck~V489(e0fwb%&1VjD4&rd#wYO!4LBlW`>c^@0lE~6Q)ZE%%1lwD$7do-_|!HeSR zK5a10I`^rfe?}~$WtX~#lCDQ=k0ux(t9x? z)sIQ6=H#_o@SgD9rbHZ>8sOv_G)!WBsvLT}?pEKa*rG>Ch$^=Iy8C{gw(JXdJXHvK zGWTfX^1Gji59A-#%3h(J=+jEXMR{~DQ)=JcxoQ7&q3!)RTSw#4L>EQHKcN;(|D<;jV0uc47HO5_&%$YVlUTxK0d4Gx-B zHFlRt%~+FQRJk1G4Y_Nf=mLDb!MG*W%;*D=XHkf^`YXu+-8s8N}Il#goFn zn;&JyGXRk7@tIoQI7j^7a)N@tDG~~44G#?HP58p%{*!DW;M&()yrBR7NR*Ls&>&?Ia_kC`LPWp+5wIk zZo4IB98Q z&;^SOkBWdSjHB>;Ntc~j<4DEpO0_?~t6&8cGGC4`>J9O7$t7PzL$`z zs63^)!jD2~7ul~a(4||*?Wv}H!Jew`-ZvD9cx&#&y?y^{AZ0HLcKE3-o{cPeDfN)U zuc$T1m`GEfolP56Q8d!};T)mh!CWeQM1XhHGP1@DetDS6Y&K%?N`NyUiIA9ihXZx{ z>XWA?vZdU36&9Te)0e(->HH@Q2qml8?F5K#|6IQrPv=yLD)q;twQ)0EQ8|ZzIQ0z$ z)tL|vqi#<<`6wLGmFL^bSSZI<{3i5yh!cT(;rH~A^teyP|AK&I!H1*j>@VwX-Q(!= z%%fDVqPjh#mkxJl1V4RC2{1}3`1PM4ATQowur4j0oslQyFGjHC7vnJu7=91$ z8zA~IftMuy?pg;Kf z|7Y}vv4@4M3DL5Egf`}RdY_7fu`h;OE#8p-j0P``@1fjcs$RGcIs2zLE^RR;M5QD{*3nFzy%f!L4gb&tW zPL{yhQAS{*YHHyiIq-qa-T7x{f8YucjL!cZbrhWA$|7ESO6SzkF_`Joz%No$anhVF z5io!xP7Zfh68_lxeY7k!MeMJ6<;PB~sp6eWiu)F;s=mZF{G{$ph zF-oCj0l`8FQNOZRR^8%#M_@lKMSK6x!$I=$o7mpC8&1@KGEG&Gd3z4Cs;5CV+t=XK zK3;d%v@PKpl8RF{ff06WWhT;vThylNuZ7eO$t z41hkA$^_yCsTSy)Qn37gSPk3l?FLg=%u}p;V>KD1A-v6QSbOJbGRpjirZM06_=Wf; zjJ=&3I>-{X?CYhQ&ioWB3djkr8k}VVU_%jtn`*(deG@(aLPNQG5)qs!edixYN#r6# zLBMR9H9ZrJW`WcE10UMhC?C^v0;VS{g$5C~|1gZg1Tl6QvnBAKf;d@L?K zuz&<-PLB3z-;BO1^afU_(6KKj;-3tzLLM6S9lg7&JTG(6_C>8&x~R4 zM!fnQz`JOw*#p{X7C1r#HO1vz;iB7X$KL>TAQ1t02+xQ>3S|JHw<4|!(u)|ZSpEiY zwIO_@91=*`2m;H^!isULrkWmhW2yV12c~ri8P_4_QN+;C3lh|~^!O|sTe5&0K{N5& z@UIEGvyQ=KA9qykT2#H9FB~)pIf;R9B=?hlKtKmxlz1mF9Jiwf9>fMwah zISa2h9?sW%TJuK+VUvv4>0G1%56cm!-{XxRwHlU4EXrVH;+WXX zY*I=fIH_OhV|cuDB{&9ts$$^ve+XosPY9*;aIhH5$RW5w-sOcfDW9^!jtrM%4Nh=an z!OD0xXS0CNSi)P{fhT&+akd5#fxz!b;XYuPXKr!T2kD|KX3D5i;0EL&0^?m3=V+d9 z&aP|mU*khxCdeetX$@^rm^~F5Z_)-r5`2l@bHcHHJpqoI0nrxk2iZT3Lulz9wmPyO zauP^<5kfU8Q-3~9_q-pue7nZJ8nnw-UTIH0!UxYWwOs^g9O}V~w7OUwCrxx8XhuuY zA_c$tKDfha650OzQ{ag$BLPb*K*AHSzd+`rkpZ$Lj++OHY}hW(9Sh)s_qgx?Fd0=p z^~WdY})PAtO!VOex;+^@D6Ylg7AfJ>8oIidYI)o`) z7XB9?qaN%UKNdXiXk0#hX_Uf!UE%A(V*`~hoePE76)pzc%Y-+tDvsMVnCDV;wQNlT zWux=MgB1Z=Qr`!^6rL;S>?{E7F9oF1?Jb&;;nn+3uuS1b*?lCWci8dcUWwFdZ*bsD zKyMdKis%d4TWb4|shjf#Zl-A!1=(A=1aFPYn20X1APD^Pm#1%SCO`V@ekl9-@_G(S zonp@vCandhJNgD(8Kow83@XDYo@0(b8&DL5{Oc=%YSGaBtLXbeVlE%~!pqejpg&%%s$QXdkwD zhRDl#pn_n2fPmV|_9!HOfz7(h{(vZWP)jO>-aChyZ##+I##PAbZ(8AOb8nt*a6CWPn zl5*VjN!R96GkC_NkRWIoe3pNs{j!$8crfmOKwseLBlMZU%4p(JYvvDMLUwqH`4}HY zgq!s!rs{pfTWNTUhkjkj;r<8o1mfe{Yeu#_C$m5WPg1zUu7^^Hz_r7@ha>*7taQ1J zk4LD~sh0a)pN*|2tDqHjqkylkg3Q=X$d;}`Gccz9)Erw!Nt4T?-ajSQ(z*DXUEb)K zv=>fgV(0>eR->u;_4uiJ+~Fi=x|PZ7;)gM>Tr-}}wn$+vQ2Gg@*(Ka_d%j-aZeIzG zs7uHSrAEg5W9?o?>C@F`vYU;~qG!k33t{;5KkpfZT^=hN_}usOWlZYK5`{5Wc83|>i6u^64MzZFXz9-aFK7-!^LTC@6vej z>TjECyx(DF>P}b2kjvfx+bk+N`8I!$sVZAPRy!fwwK(QxX)uB;^NHX!q|<0K z#l1T}P~Pze5XPBWL_wEY!d#0YbwU_!>+O@T88n5Tr)Q?Je(br4-h|_48<$k{XrwHlJSDsE=Q_@G5^t)e zp)2m+&<9LYIHs)qAM3|Lqn^KEBKEv2{_IHhx?`TAVIpE=1A9NLpe&$uJ$gCT)eC z@=&BnFOJWlG=z&mfw>j}rk_0`T#K!FOIOv#``KC{`xT)rWjTjvO1&IKX)I{6)Fi=h zdh=MHsPbuHS?#Bl3@~ZTB1aX4^?t~ymyMMW?qpt$xr9lNH;mhrSr&jRO_L@mQ|gdn zUruvZfm2uO(f5%;?IVm>aw(TUB>`{QvTm81J7HmGg_mzX3ng}7f@}h>@~=qj>Q67@19v9OCi=1 zd(1WD{RnxEOEhe8H^U|tADut<8oUV%iiT+{#e5XF0L3+BWO)7V)F!d*B#{tkY1Cm^ODWu2u2V#6IHE zHb#Fd94yPD(`JwTf^VYVW0L1j3%dWl zYbHwY@HWQ8y9N^ng&)~ZEjC9n{3S|Ky8aU4^}rH`mDo;hb@>=F?(;UJrTsS5n&VDG zg7<_**ON^oTqDO+hbg73WvNjcrudnn5ufh~wfzdeZXXaVQ|Kt1@i;oawg4-Dv?L|_ ziX4R;ve~j7Z#)UvAJ=%y^omP|En#_WrgkrOl;BX<)uzbzF4K=O(=fE#*FEnfDf_A~ zn;m$47R7FUsblf9+@D#g|WGIBu zjsK$s#)47a0$B`>rZMl4P|TC?k}DS$g!cz@hRf&5{F*aN-SLUq+Y5qw0 z!r8USd42p6i%w`+PK5|2jFmCtk`)zfd3G0_-TU3hu~OW;r);H=S9EQ_(*w(Jh?`MS zCdt}c`Pu^6M>&eVVdh+1o6NPhjp7xx-Gyy^d^Z<3h|t>llzzw8kp^;Y>?zdZUdj|! z_;e}j%}+z=w6+h<$K4YT?h#tHx|W=-6<#z`zj>H-6!dQ>UUXtsOnu3X?_*nAoDwPz zTu;@JrYw|R*TukQBFpkU`%Vm_GDo9pY_n@DV2u83_vWF>6omApU*nOSw+dzcTjW;W z?ZAkVd%Ny0y)y5RW}afgE%}rUuuGhqHs2slbiiGS+R@)kp+9O4<(JWy&m?s=$)k8CIRS2mnyJ`4ht18pOXlNmxXUhy{YMw;qIqT;y4Il{36QImnzS4FHeN zSs-cKs0xvT7Xh^R6INxuF;muPc)R+M=h6}!pB3R5uS{dAMIrnHB%Xuq4g`6MC=;&O zcT$#+4L)poOvWMTGF~voktjn*o`)3UWN!(HUvQ%DTQL$4*+x!wOzSfT$VrV3MivKJ8z z&O2U+?}#Fqr9nWM#>iY>t8cPoQs7r{AyML#_$QN+80ZB~mF=qOQGyyIzykAayB{gs zX|#gT$YMm5mL2OfNraSyBl#_QVZ7I${DwPy0J}`;)eW%mh%MBm$loBW;m&Kj)9*_; zN`O{Mk1UPv{-{5myDhNDk052w!y>S&R+Yd>dJmEhH`2ml`y-c{NCbqiB@l7s`bFR` zF2RaGkqF_jBDm4sfM(c_-!Yehq))~&9DF-5eDF^P2( z*vgytFvjyyeq;O!1iGOe?jH++aNu{@a`T10EywiE-WVk=c{bb_oMdMB@(V*qu|R41 z!AR7_^L?x6{W= z(z1E&e%LgL=2w?$GBc>*)AvXp=ob^z#j&dp#%{-mKo*X@;f`T8pqg1iu)YlrkytO+ z^2R?wT6^9#a*9z>`pY6uhN;j4c!Qg#Q`zzN_5FpgRKjqC5viyQfu9JHAJdS8BdXIK zKaQ~+pOeG6hIps6x+0?eLIgT8{ke_&IbURzCzyIdaBVEH_qEU;_6hfFkS-g&?lp-o!Kv>@@ z@-7RKC5;|Em}Co=8x0wVHIko(EsnJN5GN-@d*n>MbqaBMh3BaCaykgbP8Gn`)YY5p zTl3WD=n(^BaSFoWFpFeI^L0iS@A%2GAq2jR^DZ@dceo!7B7H@-Z3M4&@K!ctKDksi zLm8xM*o^=DDn?X3N$5N>0a|0<1+k;gk0ZMXPZME}ohh|Vj#GE8Z7hkv#nRd6|z8q*u{ zTV^z-z{}vesCk!ARqL;}A*%4|{NzvfbH$?=6c0;mZ@F2z6u!QqXa$m``U69xx{0O% zz95%MvQF4qI)06X32Prujih9P~_)nG_ks0b+xZI zw(K}yLq)7%I$?Hzy*T^n)0&wX;9XC~p}y#&+Bx#~ATCwkcR8N){>>b|@i;M+q^ffXCv!`YCd4 z3JyLGLC^H)qaj1t7vup*R8jJC=5j%mrP`@0_*EA0jI+cq4cRa+kgd&BuEL$-=Qz=c zyVSZ^n;|h?hTdL)mz~JvHoDhc*OCHmy|8h;M;>BCs3re|8!rc^go081tKyM4=)9Vj z#?`b~@GXlwXX4AF%U(FWK8px7XH9&L7`nE5F}2p-Q7aj3XIMQyiwHhYw|`2ndr?Az z+q96zbMakGg*}Kgim1nrt>9kVEB0B3tHVVy^4^?eIbYoD9SEn9k_2*kNWMV7#+=8d zWz@W%do933#x+L#bCwcw%w52bo1A)BaJ8Gh6Tr$YRGd3R;b8jNav!fHSupbb{Oce# z!yoHehzu~3aPhb&BUB_f`1ah@>hQGaf)hlVm>9sYx0pyiW8&BdSmI>qK5A&;>Wb$y zI-aFHOEkasW@s%T$OSw37;&@pxH@J&F66Wpvcza*Kq?5tNv1~=^e)iz; zU@*L`Khr?&{A=<(i$qqF#YT>SpnuePK#N7jPWJaKgi}V#A{Ajed#A=JZ5Q)t!yjPe8hQT;Wrs~v>B zLEOm80svzR1Z4~w<-8u7!r|A$K^Gv@VhUs@Sg}cZVbt1*GfELq=4*nBt4F0!2=d1` zrymE&r7m~vvB38PB0GINfSRADzVQHUM5de)Ck`K;fcI1J=W@t#^&SlO&gOq8>L6h$ z=r*?XWQ>ZCtvxeJ!&rZ$`BrL0>}4Pt{k~xdeexqz5sK=X*0h8Wz{1|t1aM`K_7^|G zpx}&tXoNk-c0?l|C!a-aAX#t_KJX~olF8z6p~pxO)UthbGf(*4BL9M|Q{FXX#;WTp z?VlHHx>g1zo!%ivA)z;}N5}}NB%3G|Yg#We+=xU?C_%vuM(e9~>>muTg|z%us)TOR zP{D^3gWLB7IS<_HcO3lA)eUq7*+gnfgX(#U~3Ce7>by5vfkh;7&~&?6C6keCWvK9Z;u^A9#D zmnm+jAev4|=@ZZfSD{RQxa`ec+BIW)X~MSj1UmZy@s-MnCZpHop6s9KEHuioS~Q`Mld;5JvBHgI@hT+59Xzo~-#oHu#uTKpOA0q;O#(@nL z9mOLX_YEcr*0S<%bo{w6owVDdr0sUDc3hD!ym@?fZWfJFd=Y zf#1Wg;DK?vZlM4R_3qCucP@6qnI=7QYYjpHMO`tBC2f-O)ddLrgGj>R^?^cWpw!rO3{68Qd2zT z>JLZamJf^SANluy4QzbYC(-4@Mv-nc@N)TRFPM#dFbd@T9BX|1^NO#WTAyB@AGiBQ zg*cV~6A^;mFQLy@xllD>EE=W~g1t+jTZ^a;H$>Rv+xS$}Go9LoaKzpF7>+d^Yw6FJkVjv))T-F>VuPMW=SiaMX}ZH;Jd4Dw zC(nkq*>Q0wb?;c@=D(cD(urhe#xNLfbSfBINw>mY5pHLcYRmU)SFgL!;Ujt^Nh~Ni}ar8k;?9mf~#@u>q$vIC7P-xn?nAyg*z zbJ)|o?j$)gk?Y!h`$o1QdvA!IL|5t1(NOElrcB|R5d1My}`wWU{HCjY;?Z`G_x|8Y(B7!qPcjLYcAf@u?>$4qk~Bob3Mvo5cT?c z-m}k?G`8a8clCw%KaP4Q1e0LBdgklu74Gg$1;*C{y+~y0vct~i?#H?T5`;b)2BCjV zONwm!FdpmXibcXek2qE&-A6;$Ht`VIW}*TO&vuc}BZoXaszYJ_`ornOF6_54pW1QZ z+_LjJyCMLO9W}G-8tGtGdK0Urz##`;Qy^}fU|m_W)p_Tn(k;%QU3@srCxeFFq3(|b z1Jkp%RHxca!#oKxiJK$#C+?e{nS+}~6ShOPBaU=IW*O7%IWqG#@2Oh;;kR>>`w7AgtMAnBt9;w+Muu8f) zDQ+zte386&fr|(A4s#VXJ8Ai`EHRz4qcX}Vx3;_bjAt@4v>PxbXu-l#V|X|0|sZM3(+?Yb#t4ublYJ*$Ct>{>|4a zYvWWyFd;no{|=?I)Cx!e%OO%Ni?nQ3J1<3lKY&>;cL!Ol0eDgrp@&GrA@g>&sP|zO zVmFuGg%xWKXd?nAFfdyp`|Qjx^6iRyLi{vZLK&$Vi29b z2^nQVvb4fwodKI+Rt@!F1K_Gj#%3nNx(V)_`=?aTDrWpIBcKx2xJ7UuD4ZPbDk7aK zZ(VulDQX}&F@Qiz;eVn| z_5!>AlQ&?M(Fm^W72WBRM3|{og9J>^kmyFEPg?La!mEs%N9w#`w6#DAU9hdOThr|j za_wdIVsW-^$mPVgRwB(+MkMb()}MO%+%XP056FNB0|6O?>7wGgdAF#JmV^bVhW&EZ zYv9zaHHk?$og|uZ>ShK;kqa?7bc=JzA;}b!M0hr@o>LNGeVHsqh8rH}75{xk14%8! zrPO^E?yp38m6Q5$CRl`TN$(&o5|9))q<7$I%LO$@z!t6^O9&Ko-<^fG|3*EMXd!Jz z>>m@K0LMA!YM)|ny9xSBZ}KCeJ_4o>{50U)_p)n6O3fx@TEE`(KbN||5rg!4+Z|GF zaI@%H7nVDc$9gp)+KR7PgKqS>gaxt{^(l=XIht1<1>Gt5h1NIs|E55d(v7%fSX-(@ z2ye-~s&CzhoeYP+dKa#46J@bX!3$t@l6`yOHJ*Vb4rk>8pQMpLd}oEqM(U4+5;1LW zZ<^dgLQCD=*!#>SgH%F?@dHe=aNWfmKV13y_U`os$44`zcUmYI;sULo*L!g*W!c*i z`4Wa|)HZti$+sd%9wcS->Ny%VvshB&xdG%eVgNztG}FnM7b_5#wEmMgEp=zat%QJ8 zw(xGXvb+Jk>E;z-1im}D_=>f;r^ zOt%QXP7F0Y8L^zGYeZb8&(`>7M(~$6#>CmR8-5&D(b2vmr7^e3Z-qdQ4_^Xn3KZ@x zA*nc`K31;xsJ`^lg|Eg9j(|JKl4~Qh-+pYQnBMdJ3H%<<>&EfYecuj@A|y_G17qUc zx&VcCwq}k=mRStHTd10W6`!EEwStnLO!sBsH&OizC!So`|CJ~UE$%FGGL&b+E#v!X zz!7`n3RrWJu~A_DSZ%<%ZqqlfyLn_Pq{#My!KA@WA0TXwLgSZhEN{ouAoHvz806F~ z^IcV$6p%kY5MjFN16Gs;(Rv;{XG`oS8JLA@;0mEh`iw{+Rl*fKrf>N7A^rAeGTh9M zqt(AraF(OUyND8N3w0wXom#0tV{Z!djlyS7#~WSl2`Q{hSYl5jby2Q1eK+ z@(;HO=^hU&ZtL@QEGFD4m1RHM(rM=BrtK2)WBPSMYew?et=W1;ie!=|E_mKTXZL$k z=Zdm7LQkK;f<1YsK;y<>W5EWJ*&zU6lryk0e{YEndvXbRB8v6Eoexdzh z-=KqB@uA{(Jm04v%lfu+R~wOA1FlvX>2}g!G!<$WjZ!v=zm=a~db%KXmQ+e}&VUBF zKctJI>{ZeO!!X^}?(`QBbLq+-F(3Zmiu4|`hQM$FnHQ|zLkC=0UL*mM{_N;7<6kjN z<+g`Al5qH14)?r0ohAtj#Jid%6$e(B^|@;=nT zYN$gNU=TqtN$*E@0>U!eo@-P4N)aIgKV3{qNdV4?tk>I{ypqAR zT0D3(ltvC~S31wc=<&Pvf%M0`)q>JIjkU6HeV;N@9M=ZSaiQr|2I4j)%r zt5KxuofpIWs&ql^r83r=l{!qxL4qRdIr1 z>gf)@RPQM_9{U!u{W?7gH+{fWndXfvXd-8cK{LW2Gj6m^>HV33{XT16R$0WuM|zTN zHY`F!CH+^J$(~&KzAM|<+>Iw0XFLIjb|+kRJ;`y(M#O_K1~X_z<2BMeAo)=8q+fzaXwH;pUsAZ>{cixtF|}j553Qz z0cS^Ji_|K9LykAmQN*5RzymC%9TXT5t!Xf&RG+-@-F`bw8dHAoi1U;9#X&HG(pFPr z`YLVR0>$s$M5Eh6vQ_f$8R_R7W5wAbQ$%t9Pn8)vyXfgAbFpX2bLlhlVq`2{q-vv{_ z=8iAeJ+hE2--v3=o%ehWGw96xq0fmaZuuh?k71SvR0A)sp{($%8u5c|Y)f5kp&sYF zDxopMMdV*7Kq`{Jz1=AA<&tc($&=IRvm@UnIDFxdjh2wd70}&fbNxLxPe!yx=cR(e z`hw%6B29YYUZ#F_hiCCVcvYT9aM_zbO{XsCz;UMzw}_RKx07xWnwd)AfY%pU9Lk+%tOc zB!~5#-M2sQ_iTggQ*;)u>&?nVx`isG45eM! zZ-|e1MJ?^2MPb@6F1Xpki=CZm;O8iM>sL#Xs^CVn+m{cSq|YfIVy%abPBM1P`cx(j zb6?Y9#m|1WszPz`NfCs~H;p3p^3u$SidFo#SKy%7+glwPV)E590?D2}T_w}nneA6N zk)@6aVz)IOOlnE#wdBsgtN6RVi|&lEV+bwZIN&itapGUOZd&;^vh3 z=}ssvEkL8h6j^ILIaFy@tlxSK74(?PF9fSaJ1nU&pIVKHGT%D0?lk^+1zT`fpgfph z1nw8Yd-KC4gVE^j2H!`&ikuaeg6iih;Q-~nhwjJkr}OO1&^VkX=6Qc5Cs1mIJ` zit2F<58)tRRd7Q=sO=V&Mk&ov?lKSDmUY&?fDT6BLH`^u~b|_Ia-L1rR&0{JK@i!tYkXRTB zs`#}15EE8Ej;9;Q0_#y29|Yx&-Sco@&sWCAbX6Byo{W$r$5cvpK_2UsY?WLlSJ9Og ztxzr9XvyIk&)@g6{*bR3Y49HYMZo{64JzrQHtO$9mEPD3%hB7{=ex>;^BAk=(dc|H zx9)OTWPeNN*YpjY3{5Fg^R3)a!nN>a$fP%n%kr^5))6(!hJ^MuPb-yEmRw~d<@e|t zzpODmmyuCXFAyACa{)ujh52_Do_due?xfu8pOu z_(2d(^48UXeQ_npW~SDzk?+s7emF0qm)ubF5Lgn&s#)# zU3&@}xNVtA-?Y%=xXTzo&~Pogdq=uY^I}={?9(31d)#YN5sExn1CQCz6};zNS@CSn z-4^fucVUz_|JQ^M>!gMXul?`DHnMv9+0?aOx$&I(uO~lY5h$_AeK4Q}6lA>p;nG9( zo1@NyX&N^z;8!{I9TXU{>K-i*pKl4U8 z1N!Okamw5BfYVJlT6L$nt&Q`>t-=JWh-7m9&h}G2j>wYr2kHa!3GA{cR!_i{cZ;LA z0i87i5Usc2Ra-8>+C>4Z7kVMTAz`A3#9j`8fwxsJfOQUcPyirwnlo&yb)VQ&?=PAiLCYIQoFu29amv>JPe~4j?zL46C?VqI1?K(9Nn59`f%- z`4_W}P%iSj_ok8+QoVu*GWWARkc3~6SN)N7k+`sU(>Mmq?a*+^2+#)RHx_#Xa zL-(RF%Vwc~MHxZ7ya5oRdN4w4*g=eNN2(@5iItDLwC*-yl8_3Vo*D(MGgwSi|t*YtU3RxeT|IuGCo2@*~4h~QXW+5Z7n1xDaU2a#C9&Q|V2L5afK z{dQNGZ_>UHO3w*01P4MHe3!Z4qG3c5hD%^0xexDwqR+!;f0|iCzyZOw2JHZr&{Cj? z_&wI;5bO2vKMF-uA1k<;a;hF;s;l*f!<)q~0y=;|aacYKf0_uYt{MjWH$E*#c>3@v zYm?>SXR_~f;Td%DtRJSDrPrAfEYZe zYgd7sjR5~7jNDscuYG0hA-*$5c|TlwNRP^~?Zy%)7K%uH@%x57I2YeX_y|3T+znwN z^(V+m6MHUd0{pZL^y|u|gRuOKfO>%xzBCedP9r^sW-{!l4}V3>=8}|<3RlHJINeZ< zI?_bNSxJd)fhQmv(Zdqx0{D-VVo_BKyFHPtpiP*(>6``_&*CMIzWmx z?(^B##Q_W>90}g|GW%a_b*A4N(yz8YdO84w5laSf3I6>b;OB*}pGf~aSB%z8X#E^xfqGPtE6?lK_HoDISsO1c5JMcEou z#SUhwyQU?d)v!a4*OpX~aU{}j4M8IhL(Gnk`xRbR<)8RbvzB}`X7 zsPTaIHy5X|eT%Q6?tN(?9K)nOlnE5Mwo|DR^(89L?t8@5kaI12H1h}6bHuD*dV#LN zW#99mr7pmv=|fi6H8kvL%c{Bf&NYkM#dG_Ki*T=aG7xY@G*O|cTv_N`%SbP;ZHS*{ zu!r7j)GM}9p%Nl~haOIeX73MrMxDF&i{&n~d9)o!sp=AkqfJNnyj{tn8FegjsL4Ok z{Y%{viWz_c^T$}j7FsxD_S07P6M*XHVIaI0qXD;1uM)|6(IT;dQ) zQo4mt-AHIIR%2d=VOYc|zz{SWbw;H6!|FvBUAAsvU-)7xgX5XRaDWjZp4E!3qv}UC zWBac&3E3PEFO4wHLnFhuS%Ssx@a`m*J)ULDqj|RmxCskslv$r& zHF8Lh-{yL8?2FPmBc#*P!Uch%{h`8pz1wYdB&f%D_x`0&G+y^)BvmRVGI*Yz zPq}WQRQ;(dUH@%|hqR0M?3<&WZ!)Tk$qgrEMON3R(@vwDB37A(uEgGexQXe&^CQxi zOpT4-SXIzFA=Cr8hJ10<%tWXv#4VO6Y?`%36q^@ zqIl8|Ux_D1y8)jWx?jfxJ>N)?MRJcx-t*gw#4qIAy!j*mRE6ebqZ9{D2e|})H|6z$ z^J_*xk0sy>7%R5l@D9H$7GnOgIdJgl3w7xiqRrZ|gF**yw6|B)v>g!=6s}DK|F0m# z(0HW+WP`56l9r1|-PJfKR9pI2Z)I5MKJ9Es*|NXoZmFrgA*RdK*psKkB!ieH{K&j< zFk*oU{h^K5T{1ud*8*Fpw)8be_Gq?cwnKZQ<`?Xks*J*dgQAj+Y!m-LHi6-EH~bpI z$WVcW>)GFH88Hr5Y_VZp_cI%%v*TSp{o-k45f~ zkZ6v?7L=}kX#)H%5f`Q!;HxBlcqd%5;!?A@)*z^LD^xBb?fvaH=Grgxh|P-V>1G`e zD67lYf;A~Erq)>{-AA8b-I4R&UAPCVfN$;!1(S}Jq=vI|T;;c>uUgDjd-!3OwwrSk zg=1PQN2ojgru$w2o-ah)QNoDMCD= z{il$Vi0ZE&*_-B*uEXALAU_`Wdx$cBRM_p(?BKd)y{qVk2#p+H0dv^Lx4~UXG3Ov= z(6viBk?$N3lRrMhh2BBwKCFKNc!n-#+&x0;;j5|{4seKC!2iTpu6@>z*Le@wN*EZI zfH(On6ao{WJ8}78UbDee|0x^ZaTi?6K8!KPqzGPXWL;HFt%k?H~CGZ0;l(sfnspp<9zPG}CAe-HlZ5$owr4{%@ z7WoWX%EqRUt$eu|AO4p03Q_KAIoqFi&q7_;g;t9tL%_ul5p5~uL3_E%;Je*`gig$X4ie#SgP$FT7+!@Q^4al7GOO%K4){v{%dwzXf3FI44f}x_$gk5B z28h|U>dYv;$0#B6`t_2XOPbnKm%z zk2{`f)&ib}AinFX*`Y-cCv1OED5_f;PlgYFfOk)HWdCI!8_5^#cU_mBOnt8h z`Wcn3TC)_^D_##Ir~$qNN2hX!vk)`{PTp zFAY)69Ns@Ys9OWlBU~(38M|z*ud#SwH=9v3RD6zciY4ARtJJ11tmVT9V z?&X(mEwc!r_?q~(vu$|K>ffijj9HCNm6H`)KZ3b&mI&tMLo*a!mb>)V3;DI??}+U= zDTdo5EAnc?s&JAOd}@?n0Lmot(`<);U(Qb54(gFXXV}Wzbs|zOd1AB?aW4`a%-~RO zkGSxTl)Y5n$(xG=hySJ?f$(8^j!)E2;6KWhzqj(po|U)u%Fmr=Gte-iFa7e+ia$Nk zP+a^0jm8u2h~7!R{BqtOqV{jmipsM1KZP!&kTL;ehFLQ)F6_yfcGstb!oVdf&+y~F<}_MoVJohJRI-YaXVXU9 zC^tcvmoV*jrMayPbHuGeAE+D*4z7c)nw2uDTX%l?d~*@ba+PY}ZJ4go6QVeBWUpL^ z_c3&!-e2rzIR3MUhgCt%58Kj#>C?T>jX%U7eLUcQ`BoymAQ(u`z0gHqdgOtbELYAB z&ZN#rf)#NVoV_*K{BPk21av@+Oecs#|BMF09fP!h&Mbpta!$}9`!J09=N5Kq7`RwN zKl*y4{OB<^Ios0znJ_}dnq1tPDb1pEBJfHP9cQ{!LK>Q;TzzHAtS_4*UAJzLnbOUy!X@G`L zqGwi`h9SZkaWuftUeJB;)szr&8+|Rv%#-#2<%u-d!dRU$46}`EuNQhOQst)%DHBT& zOYTF%;TBTV3Rr}H&kFG8{i4UFjCI9aUWhEYXT)%o*m1$8^J+((+^cmVMDTZa)O zYU6QuwS!3S3r1cf`N7=KU-Pr|gpri`8veqTlQ}Yr(_B=ztPvho5)b1dSf0nQj*{^f z5lUmgM6^S_E#Lc#jbs70d$_TJVAeLQhPT;KwFC~@%=o^^_YtoblDoiTMkCi!QaUyS z_9)WJp@>+`+1imR6r>U`C+!aeEReNPX?my*g1|i9h9=fG3R}<_ngf~d^rq=qH=I$$ zU64Lf>rY3wIR?eo;SF{1z{JAM*qYCo624sP8u&9UtL8~#xbDZ zzbZo#5qj)`)f^S0^l(PA^DxrVZyiYmJ^`n>Mf<3Bse|b|%2h53II(fPD?X=1czB@_ zZiJq7TE7|h(%ekl>0DVNWh%B!nk6C)cvxgyf(}yDx=|X^RntRBv#y0_r0`87-ew%W zW+VdoK#Fq950V>ZkpvMaDIMuvx8lS=wR-9af)T#WD{dwQoWD3W2VUHAPo*{+@BG>@ zD zJ$rn$De>T^mRJN-iDwnb_t|-kz7~eJ6La;Wm>nxew%q3V`xYF0^T97rTadpxyZ`s@ zezkfZL5~wLU-E6RlM)5q2dIhd4=()>=^_UtZDNyUF=@p8uk!O76PZ8hz;i~Z4Pq-q={KR46{`CQ@R`WkGR_baDo`wStXM+}D<$KF#zYhUSxlEG#(w6gUd&Mb zAlFt<2nS4om`>sl;yVr5&m5s;x&vbZk_jJlK2E;coR%qgG)vP`Tky@rSgrRalQ=&O zI9#-8R*|#?38XD(Bl7RF&be>iWp>X#3=7p0DMm3gdkl?YZynVruzfP6_rqI-tXM+8 z@E-aDpNNJi$4#VdE$*dLaQ!a4{#3=Ww-+nQ{Qlf(6mE?$k=mG5FzH4@fk}vjf^>IDs&sctmvnbY zOH04k?OM+}_Or(xKo?nhera`O7MK0d5VYkji+% z6mq4ezNhSuQPJq^=?Jk>8<#%?EA8I$x2Aj$n1#aP^=x}+AegdehigkDm~hw;y>z%Z zq~1-m7#gVNvSyO~ONbEo!7fBi`X|N5_*?ga(t`(xv;3DW?q?yb6q}?V8gU<`GIEHa zEFO|XZ)>Mv@vF*<y36Hpvx#s!e&PXJ@b8bvm?$HYpATA*99)>2iwYc7an#@M6Nnpj*Iua(wEMsClI|h;`tQ7A8`Jtp7WlH>3QP5C4JQD> zQN(+&Q@r1N(Mk3KRP#PeIe}`V(zIdR>)^Y~0SVH2pVd+lS&uTN4(FZ|n%bXk zi|*wRnbVUcrNn$x#%oJl2^_iW+FeqY6*5YFD&H)g-43{=HJNQ28XRXs&m6!JlvIGb z@5e0>ejN{um6?h6nAwFb`Kr*5y&<^j5@>A(-K9$ehCaCs1 ztqz&B!oqz`nV)d-g`yk;96sZ<@=w1->|)mMo#(3kXELR-%p8m2;x9NgUKX@b>v4CA zEMd^|c-SD@zALchWhL|m4IuUtI-ldM}i9Rf;{CC@N(1` zo=wa``tuevD}cIYzbJlm*Eaf%jOIM+&vHzkeVwjC<5UksAcLKrIUER|0XrfR_c0z% za|V^w00MHxRBxijvv>^jXeV1ERY+jzCcv4Mh|oW?Tq^1IE_yKqm} zvpA#7><1f(reHGQx;H7GeH{E+s5 zhOfUG?vCP{*9N#itggU=ewU1okWRJqF*IOHUl>=>DZH~Z!zj{{l#__e z;mav(wBe*r(F88+$K8jp-%|oVk5bN*mS0XphrY-{Rtc#kpmDNS|FfTBQE*2YO!~zM z$rNdaaC@6SZ%(M~@N1Lz&Fzoo9vRg~KRJGyI1vbxX~dc;#J8n8&T5~}1GL1EWZrJ9 z=Eq+tD3Ex>cki1un7=_I`lf#GKPG#Q7d&V-q!lFi3$Km_CS5~f zT#39kZ+hlHh>Cmvr7xr|*@1CLTE*s+tT2Rp8*oE>KM^Lv5-y4+91=6#l)C&f` z4fzm$yOgrR%LrBzc4@LhrNRE|2B!mz=$1VtY|~2atSZkD#JEG>9f#H*s-*hRw!*kt zRlV165SY3$e{2e3p+{53Xle=s#6#-Hi#hOwVccN zm~1{nxv|1J=Ak?o@N>rU8MH2%9Uc}m!=38BGl9MI6{uD<->A94N!Qj=@fiy-pI+Wc&|Q-utPLR#%g=>e+w;tq5= zQ#)Fv(HVe}AC_?J`kl$cga))OKWTl^(0216!MzVZ5XT*nl^Tj8gI8M@7(;vxz&=H= zR7vP4Z{{QKgSeGamWSvhgZb7LYbxAf&z_F22GzNo)>iJZm5?AR5W6gzq4Jic^sAH( zE5@*|ohj*vJ>^j$WalM?itpb)xt~h5nC`-v{G5rv4YQL+Mx4IrwqZ=C+~Le_ zDgLo4isJGuC+^v9y|SppokGcAr|DetFI?IAxd1up=v|VVP(v+b(mBBnZkL9; zHXuTahl_Fgnv9(t`xncE)(x3KW%a8i52l$r14^mW17>EJ+|$I_vZd)!7%^OAyY77# z4m9?yUbCR7Vn^9Om3K(6wA4c)M9?n3fn2KoQkVaBV~^?iuX)7ew$T5;qRvV=n1BP!8oeru5&S2@GR9KrJEXhjRuKgF zYqG$3Ug?j7`G>C(a{GdjGVW)i$KMARj)Z9pv;VVRw;D73|Haapa;WLTJqaH4O{Ka> zAN6WC_)U{SapRpql4DtqYB8yhDy4F`Wd0whu@f0rE~1W`uNcfK^(Vmao&$BHhl0WL zn<==7cwGW*eH2g|M^BEyyw86A0vgf1eq!G41E_-4B|OFjELX8=Nlv`~PVu!QLhdJ0 zRIAsUDcd7CeXw*d$fln{1P*b>`KAz*Q26P<3>)Z8@HB87dSX&2Zf1sRutFQ&DCs3br&EmAF|KUki_#FqVmO_sHGrm1o zL)n;$Yz}zcgkrZr3Blh@DEM082p~+b{qow^1<`@NbWNx*!BbBr#orqom`6YgB9eQ~ zp&g8ha+z~Lgt>73O=tp~i?S!+$o#juBVBdxCKWxKz#A$i?=aYrqlO9%E0mZ)ms6U!!yR^L-2;lgJKCZ5-*8(i!mJT`oK_cI<^6}Wfh=y zqXM38Yw;SRh9L0u39yo91A#%vuB?aJ3S5)rp!mrQ2;m*=fRRE$SrAeYz`&&d#&PW# zz$tW=bOM9nW;$4CZ(IlY51IlkU|^3TB51|Xbv}(-WcllfbM#PH(;wfr%FVN*g_3Cr zPm|zrCzCtH(jF;r>m(&S^_T!8Bs)~Fv9$=w z(jjNN^Lh^$JrZQZ%zs0Q3p9f4Bkg=e`vduifiS@Km5RUVKB@z+Ta~%+4uSb4J_Cn(UT1 z(JLrIQ;rC@k_)i(QSS(ZL{N?54Ac4!?tmQnp!%bh|h!nLb`wGblph5@f z;+avRr20GcW#JYsQRQCms6 zd~E!1&iN5_%QhhY2|eB@DCN8<$?=i=Mn$CRZz{S;Pbnvz>9FTaBXvv<^@9Pvb ze4+f`HuWzhegiJdUouM5vXiRu2LJYl$Y!DP4A5Mm+}#pamID-%<^df%l<>I{_w)VK z%qjc&y%8K)Mz*OWB9x|KdnL#iI4BG}GiO%dpe2tjc-*wypxxMT{Pv= z!N92=a0(z60WY-OrIW8dpgwp|JFEz>8NK{DV*u+rz~;T()@+u6;!5<7ptQkdfc1ed z{~(X=OJ7(RSy!NUyuZmyftoxgy=@<+^yBxH#TX*0dzwxqVS~Sh0z6=S?r8i%y^;x! z{z7Q~3&t>qkOuXYRBXlR+Dqr;_aZ>yB*AFJUIJ*Zp9khUa&fV$=vAlXkNB9}OF`Ln zgpQF)3$H!}h1h}jEEj#lv(o)UqR9sg1rZcRojfzIhZt2AV(s~k{I5BD?B)(t9qA2P3@SZ*LWR1P&!v&tHqV7V;Jxi$>K|Sfr zALT9`8l%)vCT%?u9BA0ug4x|}o1?y$63Ai~_?Aj?$W^I6YI!zj9!o?8qcDY{93rZ< zlNg&s(Ju-XizafN1fj|e77P4+`e90n7QDt9OBY0Na~j6{a)w`q!C#wZF{Zp@?j zUq9$f0*R-5lb_(D5E;fUBw~ev#s1$kffcv|^zh6`QJ^S?Ccox7K6Sm@QgaVmsA}Ii z^iKBkylP)cRiL{(`KmT1d=s>q- z{%ZpGhps^J*9O2|-_ieoh(NsMd?Wjf+-W%+TR^AGo<;@+6^gGttZRZS0Gt}hBqf-( z5GUD2qc$+}OMkeJ03i;u+qoo-KC+yBa8%*N1n)t~S2dISbw;roOg#(VvGe z!|SZK5ReKb#+zlmi32&ySYb3@b1GuqH~y$heU;TqIfA)w6%$enlny#X_5oyhh;tm& zu*$rcsvku}gZG`0W?Ia5VT6qC<9FjPj-gDG_oww;q;tQ2saPF@A`)a@N^^uopM>+n z&h@Ro_Pkae1gn3Auh8m$vY6u!xvuWfC&JK#NMmP!A}p`MRo@d1&(s3GxW6^)nVA(^ zW2%Y+RMe4(x)Tp0bJh_pj2OY z9Ey$YI8CG`q$Iw%E#2xs?H4A%1aQ7U-)>+?)PLIQ78R5+5+-SJx(Rt2u=ln5MO5PP% zgyGEk#zG;(`cb>V}S+SSl z{4PrC3w<0frj@eVnrrdH&8a>}I5H+@J_y!#pH86@`}~eX8q4MD24QxnqV-qOJ3O<3 zwwv$5-&%wb=JL>x>rr}E%HD?dGn$-rqIXyiScj9h!np`l7GV`SZ7M6yX#)8oWL83S z<$|aBzh%0_2kiZUGlGh$pR&x}IDo`O3Oho7Lzz94_Q2#h50OHN0@s5HJf&ns2VEhx zD@ZEg5QzztY~{eCE8GQ2*?t3&YxC;H4{F41!A6f0IUDA>*ZhY;vLiadOo`M4^@{G7 zr;{V%H^5N5oyKzt6alNE4&AFs0CvE> zka-6~;_eMY|M`t{J;}&8#zkDGmp${!IWI8aL#2LCW5%(tKsrXEe{o57*Gs%pRuUD0Pj}%1pai zNhPEhK!AcH+Oi?!?E+0Ij_%cRPNztt4Q&1pl0-FAW1r)Y&o~R={`#NjuxX|{;o@>) z8x21~v-qQZ_8vR5l^o)P|0M70ksAl6@>F~)$fX-oR@vLk*ELf{)^&nlF1CE^(@%m*5&l4k~`f%ZtQXXa_rsxyE ztl3Ix2z&^Ow#9nkE(Kt-XeaYSwu7=eBCHFFB&OqOv$H4K{u*@?>=rvT@Q`5~r$Ooq z8#q1ShT7A1d>*Il<{KZmeFK1@wf_56T`QCiiYUbl4(!nl?4=GzYlLR9qd`qvg zzd|{i2Vw0%-cN>rk7Hm<_GAEpBT}b0w1LpfWUDaHLk>ouW=`q^m@g+-#OFnMfj#Mk zN7ZB)h_y3@0>?u~^O!U>iw5$?<}vjpZ)!8wq(iw2tH!c(*sJoZ z>92#>im1QF!a;*5G^lQPJHLQXjHBSlA4$On45%Z(*32_?1znRy#U3)nQ1Amk)+kh| z0Fa8{&HdM~0QTd5>pssHy+wdw0T?%EvU{kL8O5D|I1OPS84YP*uqm(g*%%LD2@3&x4 z@*c!~*M}G&WS9={X9T4`3+FAM zyGR4Gze~NeFE~1KgD&g;14se;W&wENQ#7=UK63BDe0|t7NpM}L!o0ydVAbbT(gR8i z3kR-%lA#|I7<~H|68Tq8`73<9X@dV1K5}8;e%%cf1h9)Ag5%S=3&b?6CDEhNBf9Pn zjnhQNYW(9l^DCi!1VxrP`nF+Dp|*YMXs9b24|9q`2;R$QbwWOV56Uy$_X~$|(eTIJ zA0k_}fClq-A2gbN082Cw*Nht zeF7|kBNZeNmjWsd`KvgAAbcXyDS-GfV?9OxD$}-<0*h$!1V1Iw?lIT{P(twsz8WS% zb&Ub2a6_4}x)p_J&7|cAiyieZ3N04UwDB*Wk|w$yEPt{~yGRAV>+Q_1z4)6eES--tYe>>qy-uHW|0AgQZMHZ2zne5lqQ1ZFH0j3a4r^poQj$u zo%0NeQ_G){0SBG~uy1Sxr}ZyE#*4*SAiFsS42eHsDp{xQD{y}sV*~-{t-x3}*hTw{ zUx+^t7=9SA?D?vBiy>C0=jwNWM_~JvQ*i*n5jdqRC;~C?v`=V##te&U1w%z#(%)_{ zd*q~L-O+gb4j00bioUVmdu!A@JF?MN81ol?Ozo_;s9klM1NRd`3% z{8*aZtUrNTnlMv)gY&bBLbN%3tb%m(h-h@m_S(JrAv&x{1n(0mjkmi{po03Ie}GAV7pV zy1~qA4=Y1CAEwm^=+B;V{%GI~H^RAT*i~tT=*6WV4#<(KQM1V=1b>KgVK+%b_P!=X zhYxmWA?o5_r0^i)QaVL_&qrRxHJ{U|vL%#>5Pd0rPfQ6%7S{LUQS5_|ob33g`9e)UJQqGcCrd%r5=cc{7a^K7} zhBVhAjeym?ZutG53yRryvwNENE5DYBe^mN(y)s)qhg_x2N2HlMe+f09E+3?0+HT4I5k$AfMGnBFmP6ynVk>x)#TePjTi#pof@F&Q!;GlcvVUqCs?__-ao0qVi zt+FG)?fPWWvgi&jt{7c8;PbFZ$G;{HB?4TKmMGRPH(&OYMy>K3Jd`;zS#~Ah$UQJD zr3<_DY(%Yk>k<C~Fz;>T9>k+Uw7HEHY9TWVC zJf5qH_zBA&50f8(*hZ>^tW%loBH-3KfLk`wFFahEhf1GD$usT^6qYZ${wlRladB^m zr7}Uqac_sa;DmH(XGd`FeedIshWPtq@%R|oO@D3$u6AeN^anE%hclj%VT_IX;YML# zY!fne2KnH6ArS;-Q`yPTNL(Z$P$LZx;JmHy!!arNMzSTJ@F&sb2j{EtEXi=LIQg@k zNfyt+7G4d?w^8p}^^mMWq({mVF&2QmVK0J{4qH0P=lJ>q5+>T6f$B7mD5^9$4&z+; zpF1ex_4HvUIdcAz-cZ2R_}DkqS1KQGo*BQUpp?d8mlz6YiCaV4sg8zfJIu$OC*AOA zE+2l!ZGor9+0J!faN&s%b4-l0PfHLwh1l2z=ZhE~_}BqHncc~+VIw4M$YJAiRCt~brV0cs#XVdFk`?-0?xPrE z_{+}t5t)g+NZ4;kS7F-3BP^IgrP}e;4$Cj9qwklBes{7GA#_${z=Kh)tSDsPcqYQz zk8y3cyH~ZgnQp7yTDcP2wHmoEl0XNW_UXFKl8&bS(hR$yTTDC-$|lx6H+8_vsvMxF z;!xg_H;<~cDV^(@sCv(Qk+$VRDZ&!`>wQC2)sGqt*1aK=$0-&uhN?bd-#i#^`>8cz zNO9-b<0$WakuSCNtz=e=TDp}Ld%l>ouT@Y;g1mWsBVARxh|ohX)1j@>EsOvZ>3|NH zog$0WWk{{_<|lNXnODAnJ@jG2E|GiaA69};Cp}=YpT|K!law13_UQREDfb{Oi%g*i z+*G(2v(J6WBQRdEx4VFYMF5T#3T?$Gl8pD%MQHGIM<90v4BVSC8kU90ihY3}Z{*v3 zSjXFZGHt1Z?EtnfpDLO4SQc16(A@ii9845XL$l|a(fE6UaYx8ALErHpwW=Tk$x5p{ zZm)UAUgNvz9MScYj-5lPb28+Qe~}Igmslur82r3XD*}Ab%SroZVjQk%gR;kjNK!aH z^xp`&^k7KVk@O51%tVU!`kdj4zH0{ziUrMOVG;PqWw%xW=5##Svvv^^1r^$Z=Q5tYo#~(0&<%h5f?cS9 z!+5}1#UL)`Sh-EsVX&ypV0iiwneZI&Y{E5tn97y<9{^6Oq=CJ`LJXrayY18Q^N9Vk zqupw|tC@GU%})z$(~k#BHfDd6Vh`3Gy%#JS^M2e=rmdFDZ6}601Pi*t57#=bIE3kp zkg>D&Fe$EC%sOZfv9C&ljJ2ZK05od*3C@UKtqO**^h3WDrDhLGM)PybtYJJ!97#c;bvJVAf| zvY5PKX<6M2t>nQdQQxR}Ki6U~;1iPcUUa|SG#ArKe&w)pKj&V|p2}HLusl|S;C?`G zV%aA>=`9o_36`OcKftPhbV4edY%f}PND!8ayg3P$ZbT^0NgHo(1wD*s7`T7`S}hzu z3vKf-yepY9f6}nHx%6rP_n_;A>uai`(lC}u^w_r*FS_MNw)gHTw; zpB1<&(BNt1D|`@#?dOm%UKo?%nsYkiYW29!P5HKFQtsTK!<_LdvnfzI#?#+a2=Jtm zvMAEFE;%9)`>ZX{6hiYGDz#kIcq-E-Na1sA* z-kHp%?v%R;Mj7jAy*9M(h&JQ+p_a1h4ncTIe-Lp+;#XOly2RGkzRxR5N%SZ0d zT2Xca2pf(KQEEYWLOW~d#FvoReAul5>n?{x&G^tVF^ohY$yN`;0q`>2sDMJ|`uKpV z+w7Rl{02RjmXPWmWgtaQ2ZlNyP3*nhlGIM2&}=Ll^~Q`v6ZW9fK|##G)mFGT-XruU zEH@OJBDlOgtBDEnn@L8ljx+0Y*wtUIoJG7p8@Jd}hyR3SQK8VzInWL9f(5t!Be{fH zqewv;Ui9n)u8g8a&0>QuDX+PiCoDPKj3uqh>Uvx*cV9!Gr6ha^h5v`e<|lkT({9&u zv-OKdRaMx4u1;T5qwPVb!0h!9{`5+E+)VVVPukN`+?QJT(2=1PGhT2swkvu#o|Q;^ zn#fBgWcpOZuZyR|XQjlby=^I#k`7&fRB{y^;mM7_`f|Tgq+Yh1VB90K+vMNGYo>YD zy-!EA@-;hKZxU>hE%sIRx^_8MB_{H5URK&{(kLh45o7flNjI>yzCsL6v_KSJIQM^) z@YjBYY*ohL6hb74M{~c*rWJxhB(a%D5F~&}82!2I9y*P%pN=_N;yUH*D}9gMp=KQ- znU2JcQ?*YRVUjBJz2-Qkv$Tq5E(X|v_?6CI^PGcM+1~$F^7s=QZ`-?Dy*G81x?9pX zqlIT-Q(xvJSmv9E;H!0p3Zp{{kAsn`4-U`B`>LlgC1KLmY^H(5asH(^qK>(nF_U68 z31#*u`u($Ei1pE)5kE}}zVJr&wVt^&d)?O`Xyv@NMFdyR?4!{7_csUG*_gFQL%c&c zRQg-WOq?(4m3{kjUHc!DIWw7+%=wwjM}*+$bJyw2o@ZTBZoI418=5m2-GhBb4(B#b zL@3{66oPH=P2?CdHogdy2N1H9_x?_reeHim8SSkGuQ!!*+ZhWn<3TEdD;Cm+gANfEGbu2~Q@Jig>#ki-n}eBCw4c zh(CTljH$>`fh;XL6~^$-B>H zAap4f>%Fn%31B1Zx}4NK8D`cO_tDV=e6CRKo61v;CK|8KqdEwCSyU}A;J#P;F znm4Tv48ekaqRdS8_!qE-RD%r3FrYgs=j+#3!8=MXfRDlor~}#cE`ngx=Qizrd>L9w=ftSn|D?Piiu0Rp^92;2@_Kq6)u zVjFCGq3l2-TsjQ^f1>Wp)t1N7sdgG41LHqbKxzhbbmK2B*Wi?L29^*3L#-BIEuY6_ z{lvn%4AzS10YruZ$#7Ef+f;OGD97P&U=8NgjzHuU;4`;IC3&m#MH&$Y!}Gl28JD&H zDo!%kDE68UB$?UGR#nP#(-G%7Dh#BHENT>JVZW!=t^+Oz`j&w&EiRAZSPbp`P_Z!a zy92Rbi2Y=<9-}4Vw$-Ys5xW2U?Gvb`t7gd=P6VSeA4;b+4|Qfv z*;RKM4OQ&|dR6ZGy}b+t!|N2-_&hD!ohz3JBenu`@0{dq3=|bGb74y3pfpwZQEq{Z z5)6pATh>U$T8(^nNCHROq7&dK$^CUx`s{S2!{rYiQoGHJh&>yNxhLyT7>P^mDc{%R zM}n7b4CT^R^}h_OXAUO~tmL2B+R1Ofv13c-uuwolIeuQ-=d}Y|N9dxcKD~h1`oy;g z9GIqDr~ z2BX35R*9Cr08ALY`&BW!P#1zr3j%6_YxDI{us+xgftXEw;pihijfzzeS||fvsCiJR zV0OF#LIY)B@*DtZuapR;wP$=lX)FZ!tup{SDXud&KA&meJDVS&;{G*-TR5`e9iwHS z!wR$YT1YfvZJ5OrNJ53q6rvib+F?cd^+ojaJ0m&45VEVvVOea}eWwN~0vX9k=1MAo zvXz%Z4H(vZfXZc~Jm|J|e6lmTJ89Op`yE%YQiV!ZXWn{zFXffTl=3UoY2V@|3=t29 zSye@?)1cVB83PM{m!-=Eiy8ePA-h$B_s?fq;ygw{fB_fB;obHax=Fqsas{QbR1*yz zbx3Iv&l^&dgHq(G{#$HIT-a|R!iO7~h8CTn?^AJ1S--J5Z}dAT211;;N@*S~Kk=z(vNRBp?p(cc0&7ngaJ2xW{ZLyz+SSvcPq zD~kHMzmn?C#t*q_uA+vIO}3?VnOq4|@&ZxYfPI2gE?rp2RFvSc6Yd{yO?vfocvkK? z2?~!+Zx=*e{k5gAs@d3V>K1x-L8oOV#E@FFVyh`p- z*u;{Z_Hy_RY`^WkksZ^*-R|h`#a>-oBLnEqAm>i%cB5AMeq2?C-r5d|Gno6mEE z8_)_e=6N*hDbCcH$TjWGyO;6mt>hc;FF)Jq{45H(zjwIOurI08wZZhT(!{LwPNU#j z2zkHMSblFvqlpROr4Dbz~3=m_jU4@GU1frKZC*aZ&LGeE9j;s%OQ7Vu&|k4yl?Cyzp0qaClo z4eF`+kV)Gv0|I?4TMENgOWY7#WJ|Ut4s8O;x&>=Ho^0+2m6#!=fE~$9XE+&InJB2= zE&8sY^as?z+ZtwGHD--plXnE&@~9 z0mSAsdamjOf8v!6two-g% zGG9q(w419b?eJ|0yTV1YJ%0Y>wDdi?s%byvntVS(vpaCX8?iEn!2asgsdAE9M*k*e^ z4(J$7xQw8%5W2G45eGnwC`y6`6#oi8E?0ouGpeB*a0Oz~U@8$FmB!nRK8iH1?tsL5 z+=k1|Lk+?M?-_pa%EU67y-V4r-Mw(j1~#S2m>rK@5#IEu*GM+G1Q8BoXI0BMJ0pLt zM)9F6$rpWyYmz`Ejq*9o^KMmThsQm8yx3rrn?aRY?;tJI+wQx*+ZEG9@l~WUOLF(T zo|QhUM+b_k9*1ovZm`H`7@#JyB3Fk{MfWy~T)9puO_*^o$IVA7Wwfzq*v#gWPm3nJ zOatR9ODsoBbu-ZXhi#GTs~R7~-3@sKHTfs_pGA;Uu&xnw)UW~Mj~{r~u8WyVL{~lm zj4iChkI>o+Svf@yVlj0az*~C6x(0ltP-r1Ss+NW9(@aoUv>^(5=GrSn%7@U+9ce2e zKG-~{YI>5yWm843yFCu2g-h%MPhGTIDn(Hd=!vvEBwgZ@lTfP#FTOr{<`E#owU(r` z5+IP~Mc=e29-81X@j-rp-lu4fCo6smOVmPfBp}<&2c!1S zfoiOsXv!y1PSiM9khYiVqH|3mK*+#t^1Qw?Ns4ma6PX+w95vliVl*M=sT(qG*Z2JB z7MHoc=)yf_c_6#ZuINW*+6JJE zOOrd;8c3>BtO4xSGe1TVrfPnao6H_q_#M=?rzM;P<+r$)weGaB@yv2zUC%P}ZSxY1 z9Gmt%Fdv0V%^&-hkn&VjM%>{SY?->gjU!hU+kUPDc%-X8z^`BE&Z3Rlo234o$1)yu zu6=}Ky$3E1`}Mp;-h7JgkRJ=_q@1cwKu-Xu|52&HZ4Xsdp*l>W+0CJT{cbrS)BWx zG$~fsz4&u&f!&VUEQuM}gNE9fEH91grpyfQb4M>q=9)d~`rG9zyM8|Wna`=$B3tCG zog!da>`m}HDu#h*c@J7l65o@Nih}vSldz?K z2lns@_;dcAyTL^wQ?2dwpCbLM@fVV;iU(8eUR+*}|4;d; zj+6Uv(gYv~vKb?x2T?fdFN&?d9HK^3LzUaI_oV61AE(SQ#3btLNU`t+OWh0r@* z(yTQ1IpJ&1NPVxBZyOz6EW&TvNgF0VrB6&^&gZ|=;z(IatXikgZojZ7{SK4YYOBI~zX)J&LP>N7}xZtV9n- zk{M*+R-y7y8SKG4O}X>*CjH!TPTktV_3Cc$${>v<>=Ec>xsZK=l*TaydTIFcRkCEks)Ea+xdu()o5d#OL75y!d5697 zqTeES7m8B%O5cX=q(2fgTU~LB_+X+)=#oQI+5(rz_(jKtYR)IESFXyniDxrRhi}mn ze9ZzxEKxoTk}EK1V!M>DKR>liT1KaOfgw{vo&3h6svIp-J zlB8(vHp#A-uKf7Cd{sVMUcHmmPn|r4>-TBKpC@;Alp|Mr{YZC8Tqvy6<-VVx;$IyL zgMXZ|e=Y(Bd)XnU7E-TSgw8>XTuLdKXh&_;w&9vAFynBa>fwyzCLC#ZZ4h-jOVzOI zJ08QdyhR#Oly=&0;@M0Wr-i1f@UCd(4Vf|~*SOE@!(3EL#wn4;XHk`#TgX_knu0Qs z+M>Q#mu{U5rFQ$#OJHNGX>&!y@dej;i&WSR80cn{!?yrjTcdpdcUPV8$VT=i2j)R(MnR2hKOnX zm3CC#NVX?I!@*>xx*I(H<7y;ciYDdL1{!?eY-eOSnAx3UY-r%GE4M@#e^aqWj|E+@4 z|3a?$zbA*W<4!T_nkPoYx-jZnCo0udn2Bl3u$50V#oZs+P~`qBd2tknE>zXs30Gff z;f}kHgi=t!NH8Hxv^h?PWuA4Xm3wHfRyGn=&@K00V%uHnf4XFM8xPT0+VerxrAFp! zbX;x2_jfn09>4+uwLn#kOjYt`8Ybbl(zT)K4I$-*jhY`oMk$JHkzng!J$ z*3g`*UZBNxun93FYu*5=hWSR1W^gkLZ?%TjK(B5RO-LT^(~C~kzBs0bU0IN-^<9lF zm~hcKn5jx@wdOY%E*{)5X%?k)SOfX23Y>WB$rg{QH=Y3{s*~1p(2-WVEL+;>f$iiH za0-8q_7-EtkCT4!4 zH{fFEfPa4=81OX50rbhc@a$IP_7DqLiRSxX%s2yU&NS$eHwI9WSU8t?KLHV+Q??M8 z$TjL+?2a>Mmk`dn$KsFPPtb1NSV>dl}l7Vi1u^?>&*5|fZ~;Z)!YOQZMq?V0ix;w5=j8%ipjv9 zcm-$xv%r2tLM^USVQIu>oYE)c3dTT&F-#l`K`CrN-iaYTZw_tH42-_8)Z#lm8d_ED#VMHu3;9(*rcl=-v14i)X2Z3@m!T zKu3D;c%d#2GC3spgg)cy-5&d9V!--BDqx_rXFNj`>DZsJ71+i)K*f;CFE4X+A$Oog zw%4xB?@pJubFC;Z7R?vV8hkvEEgnp?;|cfv5oSHvYPt&5Wfp)L>f^%dEtgT7KP&9e z@)FcB|D5tpwDrUoBm*bOpRSztb8eMGU^*fKPOmF5hn*h$MK7EAVggGJ5l<21Dg&rp znHzqz)&OWM9JTZHuGK(=^}mgL8Sgy_WL9Ib2u?6HR^E~}AA^@fyFmDAmm`_WMq^

Ky0k%40Hhb%cbVE#3`i8arsFMS)!&I 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 literal 96258 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 diff --git a/documentation/jump-point-search-pathfinder.png b/documentation/jump-point-search-pathfinder.png index ab1f2fd693c2a6a94f39843ffdfdba592a9c602e..5b5be09c304012894b93bc2178022590a71ac17e 100644 GIT binary patch literal 10022 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 literal 21190 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 runtime; build; native; contentfiles; analyzers; buildtransitive + + diff --git a/src/NosCore.PathFinder.Api/Program.cs b/src/NosCore.PathFinder.Api/Program.cs index d66e5cd..4ac6864 100644 --- a/src/NosCore.PathFinder.Api/Program.cs +++ b/src/NosCore.PathFinder.Api/Program.cs @@ -5,19 +5,35 @@ // ----------------------------------- using System.Diagnostics; +using System.Globalization; using System.Net.WebSockets; using System.Text; using System.Text.Json; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Localization; using NosCore.PathFinder.Api; using NosCore.PathFinder.Api.Database; +using NosCore.PathFinder.Api.Resource; using NosCore.PathFinder.Brushfire; using NosCore.PathFinder.Heuristic; using NosCore.PathFinder.Interfaces; +using NosCore.Shared.I18N; +using Serilog; using YamlDotNet.Serialization; using YamlDotNet.Serialization.NamingConventions; +using Logger = NosCore.Shared.I18N.Logger; + +var pathfinderConfig = LoadPathfinderConfig(); +Logger.PrintHeader("PATHFINDER API - NosCoreIO"); var builder = WebApplication.CreateBuilder(args); +builder.Host.UseSerilog(); + +builder.Services.AddLocalization(); +builder.Services.AddI18NLogs(); +builder.Services.AddTransient(typeof(ILogLanguageLocalizer), + x => new LogLanguageLocalizer( + x.GetRequiredService>())); builder.Services.ConfigureHttpJsonOptions(options => { @@ -26,23 +42,33 @@ builder.Services.AddSingleton(); builder.Services.AddSingleton(); -var connectionString = LoadConnectionString(builder.Configuration); +var connectionString = LoadConnectionString(builder.Configuration, pathfinderConfig); if (!string.IsNullOrEmpty(connectionString)) { builder.Services.AddDbContext(options => options.UseNpgsql(connectionString)); builder.Services.AddSingleton(sp => new MapStore(sp, sp.GetRequiredService>())); - Console.WriteLine("Database configured - will load maps from PostgreSQL"); } else { builder.Services.AddSingleton(); - Console.WriteLine("No database configured - using sample maps only"); } var app = builder.Build(); +var logLanguage = app.Services.GetRequiredService>(); +Log.Information(logLanguage[LogLanguageKey.LANGUAGE_LOADED], CultureInfo.CurrentCulture.Name); + +if (!string.IsNullOrEmpty(connectionString)) +{ + Log.Information(logLanguage[LogLanguageKey.DATABASE_CONFIGURED]); +} +else +{ + Log.Information(logLanguage[LogLanguageKey.NO_DATABASE_CONFIGURED]); +} + var mapStore = app.Services.GetRequiredService(); await mapStore.LoadFromDatabaseAsync(); @@ -201,28 +227,40 @@ app.Run(); -static string? LoadConnectionString(IConfiguration configuration) +static PathfinderConfig? LoadPathfinderConfig() { - var baseDir = AppContext.BaseDirectory; - var currentDir = Directory.GetCurrentDirectory(); + var yamlPaths = GetConfigPaths(); - var yamlPaths = new[] + foreach (var yamlPath in yamlPaths) { - Path.Combine(baseDir, "..", "..", "configuration", "pathfinder.yml"), - Path.Combine(baseDir, "configuration", "pathfinder.yml"), - Path.Combine(currentDir, "configuration", "pathfinder.yml"), - Path.Combine(currentDir, "..", "..", "configuration", "pathfinder.yml"), - @"C:\dev\NosCore.PathFinder\configuration\pathfinder.yml" - }; + var fullPath = Path.GetFullPath(yamlPath); + if (File.Exists(fullPath)) + { + try + { + var yaml = File.ReadAllText(fullPath); + var deserializer = new DeserializerBuilder() + .WithNamingConvention(PascalCaseNamingConvention.Instance) + .IgnoreUnmatchedProperties() + .Build(); + return deserializer.Deserialize(yaml); + } + catch + { + } + } + } + + return null; +} - Console.WriteLine($"Base directory: {baseDir}"); - Console.WriteLine($"Current directory: {currentDir}"); - Console.WriteLine("Searching for pathfinder.yml..."); +static string? LoadConnectionString(IConfiguration configuration, PathfinderConfig? pathfinderConfig) +{ + var yamlPaths = GetConfigPaths(); foreach (var yamlPath in yamlPaths) { var fullPath = Path.GetFullPath(yamlPath); - Console.WriteLine($" Checking: {fullPath}"); if (File.Exists(fullPath)) { try @@ -237,13 +275,11 @@ { var db = config.Database; var connStr = $"Host={db.Host};Port={db.Port};Database={db.Database};Username={db.Username};Password={db.Password}"; - Console.WriteLine($"Loaded database config from: {fullPath}"); return connStr; } } - catch (Exception ex) + catch { - Console.WriteLine($"Failed to parse {fullPath}: {ex.Message}"); } } } @@ -251,14 +287,27 @@ var jsonConnStr = configuration.GetConnectionString("NosCore"); if (!string.IsNullOrEmpty(jsonConnStr)) { - Console.WriteLine("Using connection string from appsettings.json"); return jsonConnStr; } - Console.WriteLine("No database configuration found"); return null; } +static string[] GetConfigPaths() +{ + var baseDir = AppContext.BaseDirectory; + var currentDir = Directory.GetCurrentDirectory(); + + return new[] + { + Path.Combine(baseDir, "..", "..", "configuration", "pathfinder.yml"), + Path.Combine(baseDir, "configuration", "pathfinder.yml"), + Path.Combine(currentDir, "configuration", "pathfinder.yml"), + Path.Combine(currentDir, "..", "..", "configuration", "pathfinder.yml"), + @"C:\dev\NosCore.PathFinder\configuration\pathfinder.yml" + }; +} + record WsRequest(int MapId, short X, short Y, short MaxDistance = 22, double StopDistance = 0, string? Heuristic = null); class HeuristicProvider diff --git a/src/NosCore.PathFinder.Api/Resource/LocalizedResources.cs b/src/NosCore.PathFinder.Api/Resource/LocalizedResources.cs new file mode 100644 index 0000000..8c9b867 --- /dev/null +++ b/src/NosCore.PathFinder.Api/Resource/LocalizedResources.cs @@ -0,0 +1,11 @@ +// __ _ __ __ ___ __ ___ ___ +// | \| |/__\ /' _/ / _//__\| _ \ __| +// | | ' | \/ |`._`.| \_| \/ | v / _| +// |_|\__|\__/ |___/ \__/\__/|_|_\___| +// ----------------------------------- + +namespace NosCore.PathFinder.Api.Resource; + +public class LocalizedResources +{ +} diff --git a/src/NosCore.PathFinder.Api/Resource/LocalizedResources.fr.resx b/src/NosCore.PathFinder.Api/Resource/LocalizedResources.fr.resx new file mode 100644 index 0000000..7b1f2e6 --- /dev/null +++ b/src/NosCore.PathFinder.Api/Resource/LocalizedResources.fr.resx @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Base de donnees configuree - chargement des cartes depuis PostgreSQL + + + Aucune base de donnees configuree - utilisation des cartes exemples uniquement + + + Repertoire de base: {0} + + + Repertoire courant: {0} + + + Recherche de pathfinder.yml... + + + Verification: {0} + + + Configuration de base de donnees chargee depuis: {0} + + + Echec de l'analyse de {0}: {1} + + + Utilisation de la chaine de connexion depuis appsettings.json + + + Aucune configuration de base de donnees trouvee + + + Charge {0} cartes, {1} monstres, {2} PNJ depuis la base de donnees + + + Echec du chargement de la carte {0} + + + Echec de connexion a la base de donnees - utilisation des cartes exemples uniquement + + + API PathFinder demarree sur {0} + + + Langue definie sur: {0} + + diff --git a/src/NosCore.PathFinder.Api/Resource/LocalizedResources.resx b/src/NosCore.PathFinder.Api/Resource/LocalizedResources.resx new file mode 100644 index 0000000..7f4767f --- /dev/null +++ b/src/NosCore.PathFinder.Api/Resource/LocalizedResources.resx @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Database configured - will load maps from PostgreSQL + + + No database configured - using sample maps only + + + Base directory: {0} + + + Current directory: {0} + + + Searching for pathfinder.yml... + + + Checking: {0} + + + Loaded database config from: {0} + + + Failed to parse {0}: {1} + + + Using connection string from appsettings.json + + + No database configuration found + + + Loaded {0} maps, {1} monsters, {2} NPCs from database + + + Failed to load map {0} + + + Failed to connect to database - using sample maps only + + + PathFinder API started on {0} + + + Language set to: {0} + + diff --git a/src/NosCore.PathFinder/NosCore.PathFinder.csproj b/src/NosCore.PathFinder/NosCore.PathFinder.csproj index 0619ca7..7604033 100644 --- a/src/NosCore.PathFinder/NosCore.PathFinder.csproj +++ b/src/NosCore.PathFinder/NosCore.PathFinder.csproj @@ -32,6 +32,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/test/NosCore.PathFinder.Tests/BrushFireTests.cs b/test/NosCore.PathFinder.Tests/BrushFireTests.cs index 4534c38..3571823 100644 --- a/test/NosCore.PathFinder.Tests/BrushFireTests.cs +++ b/test/NosCore.PathFinder.Tests/BrushFireTests.cs @@ -1,14 +1,18 @@ -// __ _ __ __ ___ __ ___ ___ +// __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| // ----------------------------------- using System.Collections.Generic; -using System.Drawing; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.PathFinder.Brushfire; using NosCore.PathFinder.Heuristic; +using SixLabors.Fonts; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Drawing.Processing; +using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Processing; namespace NosCore.PathFinder.Tests { @@ -23,36 +27,51 @@ public void Test_BrushFire() { (short X, short Y) characterPosition = (6, 10); var brushFire = _map.LoadBrushFire(characterPosition, new OctileDistanceHeuristic()); - var bitmap = new Bitmap(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); - var listPixel = new List(); - TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, bitmap, (0, 0), characterPosition); - using var graphics = Graphics.FromImage(bitmap); + using var image = new Image(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); + var listPixel = new List(); + TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, image, (0, 0), characterPosition); + var font = TestHelper.GetFont(); - - for (short y = 0; y < _map.Height; y++) + image.Mutate(ctx => { - for (short x = 0; x < _map.Width; x++) + for (short y = 0; y < _map.Height; y++) { - var rectangle = new Rectangle(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); - if ((x, y) != characterPosition) + for (short x = 0; x < _map.Width; x++) { - if (brushFire[x, y] != null) - { - graphics.FillRectangle(new Pen(Color.White).Brush, rectangle); - var color = Color.FromArgb((int)((brushFire[x, y] * 12 > 255 ? 255 : (brushFire[x, y] ?? 0) * 12)), 0, 0, 255); - graphics.DrawString(brushFire[x, y]?.ToString("N0"), new Font("Arial", 16), Brushes.Black, rectangle, TestHelper.StringFormat); - graphics.FillRectangle(new Pen(color).Brush, rectangle); - listPixel.Add(color); - } - else + var rect = new RectangleF(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); + if ((x, y) != characterPosition) { - graphics.DrawString("∞", new Font("Arial", 16), Brushes.White, rectangle, TestHelper.StringFormat); + if (brushFire[x, y] != null) + { + ctx.Fill(Color.White, rect); + var alpha = (byte)((brushFire[x, y] * 12 > 255 ? 255 : (brushFire[x, y] ?? 0) * 12)); + var color = new Rgba32(0, 0, 255, alpha); + var textOptions = new RichTextOptions(font) + { + Origin = new PointF(x * TestHelper.Scale + TestHelper.Scale / 2f, y * TestHelper.Scale + TestHelper.Scale / 2f), + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center + }; + ctx.DrawText(textOptions, brushFire[x, y]?.ToString("N0") ?? "", Color.Black); + ctx.Fill(color, rect); + listPixel.Add(color); + } + else + { + var textOptions = new RichTextOptions(font) + { + Origin = new PointF(x * TestHelper.Scale + TestHelper.Scale / 2f, y * TestHelper.Scale + TestHelper.Scale / 2f), + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center + }; + ctx.DrawText(textOptions, "∞", Color.White); + } } } } - } + }); - TestHelper.VerifyFile("brushfire.png", bitmap, listPixel, "Brushfire"); + TestHelper.VerifyFile("brushfire.png", image, listPixel, "Brushfire"); } } } diff --git a/test/NosCore.PathFinder.Tests/FlowFieldTests.cs b/test/NosCore.PathFinder.Tests/FlowFieldTests.cs index b97d5de..e4f286d 100644 --- a/test/NosCore.PathFinder.Tests/FlowFieldTests.cs +++ b/test/NosCore.PathFinder.Tests/FlowFieldTests.cs @@ -6,11 +6,15 @@ using System; using System.Collections.Generic; -using System.Drawing; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.PathFinder.Brushfire; using NosCore.PathFinder.Heuristic; +using SixLabors.Fonts; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Drawing.Processing; +using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Processing; namespace NosCore.PathFinder.Tests { @@ -26,36 +30,48 @@ public void Test_FlowField() var brushFire = _map.LoadBrushFire(characterPosition, new OctileDistanceHeuristic()); var flowField = brushFire.GetFlowField(_map); - var bitmap = new Bitmap(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); - var listPixel = new List(); - TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, bitmap, (0, 0), characterPosition); - using var graphics = Graphics.FromImage(bitmap); + using var image = new Image(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); + var listPixel = new List(); + TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, image, (0, 0), characterPosition); - for (short y = 0; y < _map.Height; y++) + image.Mutate(ctx => { - for (short x = 0; x < _map.Width; x++) + for (short y = 0; y < _map.Height; y++) { - var rectangle = new Rectangle(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); - if ((x, y) != characterPosition) + for (short x = 0; x < _map.Width; x++) { - if (brushFire[x, y] != null) + var rect = new RectangleF(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); + if ((x, y) != characterPosition) { - graphics.FillRectangle(new Pen(Color.White).Brush, rectangle); - var color = Color.FromArgb((int)((brushFire[x, y] * 12 > 255 ? 255 : (brushFire[x, y] ?? 0) * 12)), 0, 0, 255); - graphics.FillRectangle(new Pen(color).Brush, rectangle); - listPixel.Add(color); - - var vector = flowField[x, y]; - if (vector != null) + if (brushFire[x, y] != null) { - TestHelper.DrawArrow(graphics, x, y, vector.Value.X, vector.Value.Y, TestHelper.Scale, Color.White); + ctx.Fill(Color.White, rect); + var alpha = (byte)((brushFire[x, y] * 12 > 255 ? 255 : (brushFire[x, y] ?? 0) * 12)); + var color = new Rgba32(0, 0, 255, alpha); + ctx.Fill(color, rect); + listPixel.Add(color); } } } } + }); + + for (short y = 0; y < _map.Height; y++) + { + for (short x = 0; x < _map.Width; x++) + { + if ((x, y) != characterPosition && brushFire[x, y] != null) + { + var vector = flowField[x, y]; + if (vector != null) + { + TestHelper.DrawArrow(image, x, y, vector.Value.X, vector.Value.Y, TestHelper.Scale, Color.White.ToPixel()); + } + } + } } - TestHelper.VerifyFile("flow-field.png", bitmap, listPixel, "Flow Field (Vector Field Pathfinding)"); + TestHelper.VerifyFile("flow-field.png", image, listPixel, "Flow Field (Vector Field Pathfinding)"); } [TestMethod] @@ -69,50 +85,72 @@ public void Test_FlowField_MonsterPath() var path = TraceFlowFieldPath(flowField, monsterPosition, characterPosition); - var bitmap = new Bitmap(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); - var listPixel = new List(); - TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, bitmap, monsterPosition, characterPosition); - using var graphics = Graphics.FromImage(bitmap); + using var image = new Image(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); + var listPixel = new List(); + TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, image, monsterPosition, characterPosition); + var font = TestHelper.GetFont(); - for (short y = 0; y < _map.Height; y++) + image.Mutate(ctx => { - for (short x = 0; x < _map.Width; x++) + for (short y = 0; y < _map.Height; y++) { - var rectangle = new Rectangle(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); - if ((x, y) != characterPosition && (x, y) != monsterPosition) + for (short x = 0; x < _map.Width; x++) { - if (brushFire[x, y] != null) + var rect = new RectangleF(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); + if ((x, y) != characterPosition && (x, y) != monsterPosition) { - graphics.FillRectangle(new Pen(Color.White).Brush, rectangle); - var color = Color.FromArgb((int)((brushFire[x, y] * 12 > 255 ? 255 : (brushFire[x, y] ?? 0) * 12)), 0, 0, 255); - graphics.FillRectangle(new Pen(color).Brush, rectangle); - listPixel.Add(color); - - var vector = flowField[x, y]; - if (vector != null) + if (brushFire[x, y] != null) { - TestHelper.DrawArrow(graphics, x, y, vector.Value.X, vector.Value.Y, TestHelper.Scale, Color.White); + ctx.Fill(Color.White, rect); + var alpha = (byte)((brushFire[x, y] * 12 > 255 ? 255 : (brushFire[x, y] ?? 0) * 12)); + var color = new Rgba32(0, 0, 255, alpha); + ctx.Fill(color, rect); + listPixel.Add(color); } } } } + }); + + for (short y = 0; y < _map.Height; y++) + { + for (short x = 0; x < _map.Width; x++) + { + if ((x, y) != characterPosition && (x, y) != monsterPosition && brushFire[x, y] != null) + { + var vector = flowField[x, y]; + if (vector != null) + { + TestHelper.DrawArrow(image, x, y, vector.Value.X, vector.Value.Y, TestHelper.Scale, Color.White.ToPixel()); + } + } + } } var pathArray = path.ToArray(); - for (var i = 0; i < pathArray.Length; i++) + image.Mutate(ctx => { - var (x, y) = pathArray[i]; - if ((x, y) != monsterPosition && (x, y) != characterPosition) + for (var i = 0; i < pathArray.Length; i++) { - var rectangle = new Rectangle(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); - var color = Color.LightPink; - graphics.FillRectangle(new Pen(color).Brush, rectangle); - graphics.DrawString(i.ToString(), new Font("Arial", 16), Brushes.Black, rectangle, TestHelper.StringFormat); - listPixel.Add(color); + var (x, y) = pathArray[i]; + if ((x, y) != monsterPosition && (x, y) != characterPosition) + { + var rect = new RectangleF(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); + var color = Color.LightPink; + ctx.Fill(color, rect); + var textOptions = new RichTextOptions(font) + { + Origin = new PointF(x * TestHelper.Scale + TestHelper.Scale / 2f, y * TestHelper.Scale + TestHelper.Scale / 2f), + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center + }; + ctx.DrawText(textOptions, i.ToString(), Color.Black); + listPixel.Add(color.ToPixel()); + } } - } + }); - TestHelper.VerifyFile("flow-field-path.png", bitmap, listPixel, "Flow Field Path (Monster following vectors to Player)"); + TestHelper.VerifyFile("flow-field-path.png", image, listPixel, "Flow Field Path (Monster following vectors to Player)"); } private static List<(short X, short Y)> TraceFlowFieldPath(FlowField flowField, (short X, short Y) start, (short X, short Y) target, int maxSteps = 100) diff --git a/test/NosCore.PathFinder.Tests/GoalBasedPathfinderTests.cs b/test/NosCore.PathFinder.Tests/GoalBasedPathfinderTests.cs index 8da429a..0f47b9a 100644 --- a/test/NosCore.PathFinder.Tests/GoalBasedPathfinderTests.cs +++ b/test/NosCore.PathFinder.Tests/GoalBasedPathfinderTests.cs @@ -1,4 +1,4 @@ -// __ _ __ __ ___ __ ___ ___ +// __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| @@ -6,13 +6,17 @@ using System; using System.Collections.Generic; -using System.Drawing; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.PathFinder.Brushfire; using NosCore.PathFinder.Heuristic; using NosCore.PathFinder.Interfaces; using NosCore.PathFinder.Pathfinder; +using SixLabors.Fonts; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Drawing.Processing; +using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Processing; namespace NosCore.PathFinder.Tests { @@ -35,53 +39,75 @@ public GoalBasedPathfinderTests() [TestMethod] public void Test_GoalBasedPathfinder() { - var bitmap = new Bitmap(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); + using var image = new Image(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); (short X, short Y) target = (15, 16); - var listPixel = new List(); - TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, bitmap, target, _characterPosition); - using var graphics = Graphics.FromImage(bitmap); + var listPixel = new List(); + TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, image, target, _characterPosition); + var font = TestHelper.GetFont(); - - for (short y = 0; y < _map.Height; y++) + image.Mutate(ctx => { - for (short x = 0; x < _map.Width; x++) + for (short y = 0; y < _map.Height; y++) { - var rectangle = new Rectangle(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); - if ((x, y) != target && (x, y) != _characterPosition) + for (short x = 0; x < _map.Width; x++) { - if (_brushFire[x, y] != null) - { - graphics.FillRectangle(new Pen(Color.White).Brush, rectangle); - var color = Color.FromArgb((int)((_brushFire[x, y] * 12 > 255 ? 255 : (_brushFire[x, y] ?? 0) * 12)), 0, 0, 255); - graphics.DrawString(_brushFire[x, y]?.ToString("N0"), new Font("Arial", 16), Brushes.Black, rectangle, TestHelper.StringFormat); - graphics.FillRectangle(new Pen(color).Brush, rectangle); - listPixel.Add(color); - } - else + var rect = new RectangleF(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); + if ((x, y) != target && (x, y) != _characterPosition) { - graphics.DrawString("∞", new Font("Arial", 16), Brushes.White, rectangle, TestHelper.StringFormat); + if (_brushFire[x, y] != null) + { + ctx.Fill(Color.White, rect); + var alpha = (byte)((_brushFire[x, y] * 12 > 255 ? 255 : (_brushFire[x, y] ?? 0) * 12)); + var color = new Rgba32(0, 0, 255, alpha); + var textOptions = new RichTextOptions(font) + { + Origin = new PointF(x * TestHelper.Scale + TestHelper.Scale / 2f, y * TestHelper.Scale + TestHelper.Scale / 2f), + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center + }; + ctx.DrawText(textOptions, _brushFire[x, y]?.ToString("N0") ?? "", Color.Black); + ctx.Fill(color, rect); + listPixel.Add(color); + } + else + { + var textOptions = new RichTextOptions(font) + { + Origin = new PointF(x * TestHelper.Scale + TestHelper.Scale / 2f, y * TestHelper.Scale + TestHelper.Scale / 2f), + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center + }; + ctx.DrawText(textOptions, "∞", Color.White); + } } } } - } + }); var path = _goalPathfinder.FindPath(target, _characterPosition).ToList(); - foreach (var (x, y) in path) + image.Mutate(ctx => { - if ((x, y) != target && (x, y) != _characterPosition) + foreach (var (x, y) in path) { - var rectangle = new Rectangle(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, - TestHelper.Scale); - var color = Color.LightPink; - graphics.FillRectangle(new Pen(color).Brush, rectangle); - graphics.DrawString(Array.IndexOf(path.ToArray(), (x, y)).ToString(), new Font("Arial", 16), - Brushes.Black, rectangle, TestHelper.StringFormat); - listPixel.Add(color); + if ((x, y) != target && (x, y) != _characterPosition) + { + var rect = new RectangleF(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); + var color = Color.LightPink; + ctx.Fill(color, rect); + var textOptions = new RichTextOptions(font) + { + Origin = new PointF(x * TestHelper.Scale + TestHelper.Scale / 2f, y * TestHelper.Scale + TestHelper.Scale / 2f), + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center + }; + ctx.DrawText(textOptions, Array.IndexOf(path.ToArray(), (x, y)).ToString(), Color.Black); + listPixel.Add(color.ToPixel()); + } } - } + }); - TestHelper.VerifyFile("goal-based-pathfinder.png", bitmap, listPixel, "Goal Based Pathfinder"); + TestHelper.VerifyFile("goal-based-pathfinder.png", image, listPixel, "Goal Based Pathfinder"); } diff --git a/test/NosCore.PathFinder.Tests/JumpPointSearchPathfinderTests.cs b/test/NosCore.PathFinder.Tests/JumpPointSearchPathfinderTests.cs index 41c6fcb..e6b28cd 100644 --- a/test/NosCore.PathFinder.Tests/JumpPointSearchPathfinderTests.cs +++ b/test/NosCore.PathFinder.Tests/JumpPointSearchPathfinderTests.cs @@ -1,4 +1,4 @@ -// __ _ __ __ ___ __ ___ ___ +// __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| @@ -6,11 +6,15 @@ using System; using System.Collections.Generic; -using System.Drawing; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using NosCore.PathFinder.Heuristic; using NosCore.PathFinder.Pathfinder; +using SixLabors.Fonts; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Drawing.Processing; +using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Processing; namespace NosCore.PathFinder.Tests { @@ -31,33 +35,42 @@ public JumpPointSearchPathfinderTests() [TestMethod] public void Test_JumpPointSearchPathfinder() { - var bitmap = new Bitmap(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); + using var image = new Image(_map.Width * TestHelper.Scale, _map.Height * TestHelper.Scale); (short X, short Y) target = (15, 16); - var listPixel = new List(); - TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, bitmap, target, _characterPosition); - using var graphics = Graphics.FromImage(bitmap); + var listPixel = new List(); + TestHelper.DrawMap(_map, TestHelper.Scale, listPixel, image, target, _characterPosition); + var font = TestHelper.GetFont(); var jumps = _jumpPointSearchPathfinder.GetJumpList(target, _characterPosition).ToList(); var path = _jumpPointSearchPathfinder.FindPath(target, _characterPosition).ToList(); - foreach (var (x, y) in path) + + image.Mutate(ctx => { - if ((x, y) != target && (x, y) != _characterPosition) + foreach (var (x, y) in path) { - var rectangle = new Rectangle(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, - TestHelper.Scale); - var color = Color.LightPink; - if (jumps.Contains((x, y))) + if ((x, y) != target && (x, y) != _characterPosition) { - color = Color.DeepPink; - } + var rect = new RectangleF(x * TestHelper.Scale, y * TestHelper.Scale, TestHelper.Scale, TestHelper.Scale); + var color = Color.LightPink; + if (jumps.Contains((x, y))) + { + color = Color.DeepPink; + } - graphics.FillRectangle(new Pen(color).Brush, rectangle); - graphics.DrawString(Array.IndexOf(path.ToArray(), (x, y)).ToString(), new Font("Arial", 16), - Brushes.Black, rectangle, TestHelper.StringFormat); - listPixel.Add(color); + ctx.Fill(color, rect); + var textOptions = new RichTextOptions(font) + { + Origin = new PointF(x * TestHelper.Scale + TestHelper.Scale / 2f, y * TestHelper.Scale + TestHelper.Scale / 2f), + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center + }; + ctx.DrawText(textOptions, Array.IndexOf(path.ToArray(), (x, y)).ToString(), Color.Black); + listPixel.Add(color.ToPixel()); + } } - } - TestHelper.VerifyFile("jump-point-search-pathfinder.png", bitmap, listPixel, "Jump Point Search Pathfinder (break at walls)"); + }); + + TestHelper.VerifyFile("jump-point-search-pathfinder.png", image, listPixel, "Jump Point Search Pathfinder (break at walls)"); } } } diff --git a/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj b/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj index 9a053ce..f4343cb 100644 --- a/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj +++ b/test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj @@ -13,7 +13,9 @@ - + + + diff --git a/test/NosCore.PathFinder.Tests/TestHelper.cs b/test/NosCore.PathFinder.Tests/TestHelper.cs index d2b9348..5c32a24 100644 --- a/test/NosCore.PathFinder.Tests/TestHelper.cs +++ b/test/NosCore.PathFinder.Tests/TestHelper.cs @@ -1,4 +1,4 @@ -// __ _ __ __ ___ __ ___ ___ +// __ _ __ __ ___ __ ___ ___ // | \| |/__\ /' _/ / _//__\| _ \ __| // | | ' | \/ |`._`.| \_| \/ | v / _| // |_|\__|\__/ |___/ \__/\__/|_|_\___| @@ -6,30 +6,32 @@ using System; using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Drawing2D; -using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using ApprovalTests; using ApprovalTests.Writers; +using SixLabors.Fonts; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Drawing.Processing; +using SixLabors.ImageSharp.PixelFormats; +using SixLabors.ImageSharp.Processing; namespace NosCore.PathFinder.Tests { public static class TestHelper { - public static void VerifyFile(string linearPathfinderPng, Bitmap bitmap, List listPixel, string desc) + public static void VerifyFile(string linearPathfinderPng, Image image, List listPixel, string desc) { var filepath = Path.GetFullPath($"../../../../../documentation/{linearPathfinderPng}"); - bitmap.Save(filepath, ImageFormat.Png); + image.SaveAsPng(filepath); var builder = new StringBuilder(); builder.AppendLine("# NosCore.Pathfinder's Documentation"); builder.AppendLine($"## {desc}"); builder.AppendLine($"- Filename: {linearPathfinderPng}"); - var pixels = string.Join("", listPixel.SelectMany(s => s.Name)); + var pixels = string.Join("", listPixel.SelectMany(s => $"{s.R:X2}{s.G:X2}{s.B:X2}{s.A:X2}")); var checksum = string.Join("", SHA256.Create() @@ -39,13 +41,18 @@ public static void VerifyFile(string linearPathfinderPng, Bitmap bitmap, List listPixel, Bitmap bitmap, (short X, short Y) monster, (short X, short Y) character) + public static void DrawMap(TestMap map, int scale, List listPixel, Image image, (short X, short Y) monster, (short X, short Y) character) { - using var graphics = Graphics.FromImage(bitmap); - for (short y = 0; y < map.Height; y++) + var font = GetFont(); + image.Mutate(ctx => { - for (short x = 0; x < map.Width; x++) + for (short y = 0; y < map.Height; y++) { - var rectangle = new Rectangle(x * scale, y * scale, scale, scale); - var color = Color.Blue; - string? text = null; - if (!map.IsWalkable(x, y)) - { - color = Color.Black; - } - - if (character == (x, y)) - { - text = "P"; - color = Color.Green; - } - - if (monster != default && monster == (x, y)) + for (short x = 0; x < map.Width; x++) { - text = "M"; - color = Color.DarkRed; + var rect = new RectangleF(x * scale, y * scale, scale, scale); + var color = Color.Blue; + string? text = null; + if (!map.IsWalkable(x, y)) + { + color = Color.Black; + } + + if (character == (x, y)) + { + text = "P"; + color = Color.Green; + } + + if (monster != default && monster == (x, y)) + { + text = "M"; + color = Color.DarkRed; + } + ctx.Fill(color, rect); + if (text != null) + { + var textOptions = new RichTextOptions(font) + { + Origin = new PointF(x * scale + scale / 2f, y * scale + scale / 2f), + HorizontalAlignment = HorizontalAlignment.Center, + VerticalAlignment = VerticalAlignment.Center + }; + ctx.DrawText(textOptions, text, Color.Black); + } + + listPixel.Add(color.ToPixel()); } - graphics.FillRectangle(new Pen(color).Brush, rectangle); - graphics.DrawString(text, new Font("Arial", 16), Brushes.Black, rectangle, StringFormat); - - listPixel.Add(color); } - } + }); } - public static void DrawArrow(Graphics graphics, int cellX, int cellY, float dirX, float dirY, int scale, Color color) + public static void DrawArrow(Image image, int cellX, int cellY, float dirX, float dirY, int scale, Rgba32 color) { var centerX = cellX * scale + scale / 2f; var centerY = cellY * scale + scale / 2f; var arrowLength = scale * 0.35f; var headLength = scale * 0.15f; - var headWidth = scale * 0.12f; var endX = centerX + dirX * arrowLength; var endY = centerY + dirY * arrowLength; - using var pen = new Pen(color, 2f); - graphics.DrawLine(pen, centerX, centerY, endX, endY); + image.Mutate(ctx => + { + ctx.DrawLine(color, 2f, new PointF(centerX, centerY), new PointF(endX, endY)); - var angle = (float)Math.Atan2(dirY, dirX); - var head1X = endX - headLength * (float)Math.Cos(angle - 0.5f) ; - var head1Y = endY - headLength * (float)Math.Sin(angle - 0.5f); - var head2X = endX - headLength * (float)Math.Cos(angle + 0.5f); - var head2Y = endY - headLength * (float)Math.Sin(angle + 0.5f); + var angle = (float)Math.Atan2(dirY, dirX); + var head1X = endX - headLength * (float)Math.Cos(angle - 0.5f); + var head1Y = endY - headLength * (float)Math.Sin(angle - 0.5f); + var head2X = endX - headLength * (float)Math.Cos(angle + 0.5f); + var head2Y = endY - headLength * (float)Math.Sin(angle + 0.5f); - using var brush = new SolidBrush(color); - var headPoints = new PointF[] { new(endX, endY), new(head1X, head1Y), new(head2X, head2Y) }; - graphics.FillPolygon(brush, headPoints); + var headPoints = new PointF[] { new(endX, endY), new(head1X, head1Y), new(head2X, head2Y) }; + ctx.FillPolygon(color, headPoints); + }); } } } From 2ecd1d02a923b16777f45c0c80641f9e6fdc94fe Mon Sep 17 00:00:00 2001 From: erwan-joly Date: Thu, 15 Jan 2026 18:26:32 +1300 Subject: [PATCH 09/10] Upgrade --- test/NosCore.PathFinder.Tests/TestHelper.cs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/test/NosCore.PathFinder.Tests/TestHelper.cs b/test/NosCore.PathFinder.Tests/TestHelper.cs index 5c32a24..42735b6 100644 --- a/test/NosCore.PathFinder.Tests/TestHelper.cs +++ b/test/NosCore.PathFinder.Tests/TestHelper.cs @@ -44,12 +44,23 @@ public static void VerifyFile(string linearPathfinderPng, Image image, L public static int Scale = 50; private static Font? _font; - public static Font GetFont() + private static bool _fontLoaded; + public static Font? GetFont() { - if (_font == null) + if (!_fontLoaded) { - var fontCollection = new FontCollection(); - _font = SystemFonts.CreateFont("Arial", 16); + _fontLoaded = true; + var fontNames = new[] { "Arial", "DejaVu Sans", "Liberation Sans", "Noto Sans", "FreeSans" }; + foreach (var fontName in fontNames) + { + if (SystemFonts.TryGet(fontName, out var family)) + { + _font = family.CreateFont(16); + break; + } + } + + _font ??= SystemFonts.Collection.Families.FirstOrDefault()?.CreateFont(16); } return _font; } @@ -106,7 +117,7 @@ public static void DrawMap(TestMap map, int scale, List listPixel, Image color = Color.DarkRed; } ctx.Fill(color, rect); - if (text != null) + if (text != null && font != null) { var textOptions = new RichTextOptions(font) { From b8f9a923ee172d0a4bbadcd9c2d87f8ac8b0ecf1 Mon Sep 17 00:00:00 2001 From: erwan-joly Date: Thu, 15 Jan 2026 18:32:27 +1300 Subject: [PATCH 10/10] Upgrade --- test/NosCore.PathFinder.Tests/TestHelper.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/NosCore.PathFinder.Tests/TestHelper.cs b/test/NosCore.PathFinder.Tests/TestHelper.cs index 42735b6..6d8c103 100644 --- a/test/NosCore.PathFinder.Tests/TestHelper.cs +++ b/test/NosCore.PathFinder.Tests/TestHelper.cs @@ -60,7 +60,10 @@ public static void VerifyFile(string linearPathfinderPng, Image image, L } } - _font ??= SystemFonts.Collection.Families.FirstOrDefault()?.CreateFont(16); + if (_font == null && SystemFonts.Collection.Families.Any()) + { + _font = SystemFonts.Collection.Families.First().CreateFont(16); + } } return _font; }